Name: series-workflowvjv4w Phase: Succeeded StartedAt: 2026-08-03 00:17:46 +0000 UTC FinishedAt: 2026-08-03 04:20:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjv4w[0] Phase: Succeeded StartedAt: 2026-08-03 00:17:46 +0000 UTC FinishedAt: 2026-08-03 00:36:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjv4w[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 00:17:46 +0000 UTC FinishedAt: 2026-08-03 00:36:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_IPIP", "NET_IPGRE_DEMUX", "NET_IPGRE", "NET_IPVTI", "IPV6" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_IPIP", "NET_IPGRE_DEMUX", "NET_IPGRE", "NET_IPVTI", "IPV6" ], "series_id": "1202899e-897f-4248-9b1f-bd6ec320e9aa" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_tunnel_newlink", "ip_tunnel_changelink", "raw_sendmsg", "rawv6_sendmsg" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9JUElQJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRV9ERU1VWCYjMzQ7LAogICAgJiMzNDtORVRfSVBHUkUmIzM0OywKICAgICYjMzQ7TkVUX0lQVlRJJiMzNDssCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF90dW5uZWxfbmV3bGluayYjMzQ7LAogICAgJiMzNDtpcF90dW5uZWxfY2hhbmdlbGluayYjMzQ7LAogICAgJiMzNDtyYXdfc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtyYXd2Nl9zZW5kbXNnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgaGVhZHJvb20gc2l6ZSB2YWxpZGF0aW9uIHRvIHByZXZlbnQgaW50ZWdlciBvdmVyZmxvd3Mgd2hlbiBjcmVhdGluZyBvciBtb2RpZnlpbmcgSVAgdHVubmVscyAoR1JFLCBJUElQLCBWVEkpIGFuZCB3aGVuIHNlbmRpbmcgcGFja2V0cyB2aWEgcmF3IElQdjQvSVB2NiBzb2NrZXRzLiBJdCBtb2RpZmllcyBjb3JlIHR1bm5lbCBuZXRsaW5rIGNhbGxiYWNrcyBhbmQgcmF3IHNvY2tldCBzZW5kbXNnIHBhdGhzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjMzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjEzNzNhYWUwMzUwOTZjMzIyNDA4OTBkOWQ2MTRjMDI2N2RjMzFiNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMDA6MzM6MjggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oIGIvaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oXG5pbmRleCBkNzA4YjY2ZTU1Y2RhLi4wMTAyZmUzODdiMGFkIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9pcF90dW5uZWxzLmhcbkBAIC00MjUsMTAgJiM0Mzs0MjUsMTEgQEAgaW50IGlwX3R1bm5lbF9yY3Yoc3RydWN0IGlwX3R1bm5lbCAqdHVubmVsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHQgIGNvbnN0IHN0cnVjdCB0bmxfcHRrX2luZm8gKnRwaSwgc3RydWN0IG1ldGFkYXRhX2RzdCAqdHVuX2RzdCxcbiBcdFx0ICBib29sIGxvZ19lY25fZXJyb3IpO1xuIGludCBpcF90dW5uZWxfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuLVx0XHRcdCBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCwgX191MzIgZndtYXJrKTtcbiYjNDM7XHRcdFx0IHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLCBfX3UzMiBmd21hcmssXG4mIzQzO1x0XHRcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuIGludCBpcF90dW5uZWxfbmV3bGluayhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdCAgICAgIHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLFxuLVx0XHQgICAgICBfX3UzMiBmd21hcmspO1xuJiM0MztcdFx0ICAgICAgX191MzIgZndtYXJrLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuIHZvaWQgaXBfdHVubmVsX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBuZXRfaWQpO1xuIFxuIGJvb2wgaXBfdHVubmVsX25ldGxpbmtfZW5jYXBfcGFybXMoc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX2dyZS5jIGIvbmV0L2lwdjQvaXBfZ3JlLmNcbmluZGV4IDBiYTFlOTRlOTAxMmMuLjY5MDc2ODhkMDViYzEgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9pcF9ncmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvaXBfZ3JlLmNcbkBAIC0xNDI0LDcgJiM0MzsxNDI0LDcgQEAgc3RhdGljIGludCBpcGdyZV9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFx0cmV0dXJuIGlwX3R1bm5lbF9uZXdsaW5rKHBhcmFtcy1cdTAwM2VsaW5rX25ldCA/IDogZGV2X25ldChkZXYpLCBkZXYsIHRiLCBcdTAwMjZwLFxuLVx0XHRcdFx0IGZ3bWFyayk7XG4mIzQzO1x0XHRcdFx0IGZ3bWFyaywgZXh0YWNrKTtcbiB9XG4gXG4gc3RhdGljIGludCBlcnNwYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuQEAgLTE0NDUsNyAmIzQzOzE0NDUsNyBAQCBzdGF0aWMgaW50IGVyc3Bhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFx0cmV0dXJuIGlwX3R1bm5lbF9uZXdsaW5rKHBhcmFtcy1cdTAwM2VsaW5rX25ldCA/IDogZGV2X25ldChkZXYpLCBkZXYsIHRiLCBcdTAwMjZwLFxuLVx0XHRcdFx0IGZ3bWFyayk7XG4mIzQzO1x0XHRcdFx0IGZ3bWFyaywgZXh0YWNrKTtcbiB9XG4gXG4gc3RhdGljIGludCBpcGdyZV9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5AQCAtMTQ2OCw3ICYjNDM7MTQ2OCw3IEBAIHN0YXRpYyBpbnQgaXBncmVfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuIFx0aWYgKGVyciBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIGVycjtcbiBcbi1cdGVyciA9IGlwX3R1bm5lbF9jaGFuZ2VsaW5rKGRldiwgdGIsIFx1MDAyNnAsIGZ3bWFyayk7XG4mIzQzO1x0ZXJyID0gaXBfdHVubmVsX2NoYW5nZWxpbmsoZGV2LCB0YiwgXHUwMDI2cCwgZndtYXJrLCBleHRhY2spO1xuIFx0aWYgKGVyciBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIGVycjtcbiBcbkBAIC0xNTAwLDcgJiM0MzsxNTAwLDcgQEAgc3RhdGljIGludCBlcnNwYW5fY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuIFx0aWYgKGVyciBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIGVycjtcbiBcbi1cdGVyciA9IGlwX3R1bm5lbF9jaGFuZ2VsaW5rKGRldiwgdGIsIFx1MDAyNnAsIGZ3bWFyayk7XG4mIzQzO1x0ZXJyID0gaXBfdHVubmVsX2NoYW5nZWxpbmsoZGV2LCB0YiwgXHUwMDI2cCwgZndtYXJrLCBleHRhY2spO1xuIFx0aWYgKGVyciBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIGVycjtcbiBcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF90dW5uZWwuYyBiL25ldC9pcHY0L2lwX3R1bm5lbC5jXG5pbmRleCA5ZDExNGJkNTc1ZjkyLi41ZTRmNTZjMGUzZTVkIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaXBfdHVubmVsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2lwX3R1bm5lbC5jXG5AQCAtOSw2ICYjNDM7OSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC90eXBlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbGltaXRzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91YWNjZXNzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9za2J1ZmYuaFx1MDAzZVxuQEAgLTI3NywxNiAmIzQzOzI3OCwzMSBAQCBzdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKl9faXBfdHVubmVsX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuIH1cbiBcbi1zdGF0aWMgaW50IGlwX3R1bm5lbF9iaW5kX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuJiM0MztzdGF0aWMgYm9vbCBpcF90dW5uZWxfaGVhZHJvb21fdG9vX2xhcmdlKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4mIzQzO1x0XHRcdFx0XHQgdW5zaWduZWQgaW50IG5lZWRlZF9oZWFkcm9vbSlcbiYjNDM7e1xuJiM0MztcdHVuc2lnbmVkIGludCBobGVuO1xuJiM0MztcbiYjNDM7XHRobGVuID0gKChkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuICYjNDM7IG5lZWRlZF9oZWFkcm9vbSkgXHUwMDI2XG4mIzQzO1x0XHR+KEhIX0RBVEFfTU9EIC0gMSkpICYjNDM7IEhIX0RBVEFfTU9EO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gaGxlbiBcdTAwM2U9IFUxNl9NQVggLSAoc2l6ZW9mKHN0cnVjdCBpcGhkcikgJiM0MzsgTUFYX0lQT1BUTEVOKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBpcF90dW5uZWxfY2FsY19kZXZfY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4mIzQzO1x0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcGFybXMsXG4mIzQzO1x0XHRcdFx0ICAgICBfX3UzMiBmd21hcmssXG4mIzQzO1x0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgKm5lZWRlZF9oZWFkcm9vbSxcbiYjNDM7XHRcdFx0XHQgICAgIGludCAqbXR1LFxuJiM0MztcdFx0XHRcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICp0ZGV2ID0gTlVMTDtcbiBcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XG4tXHRjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaDtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaCA9IFx1MDAyNnBhcm1zLVx1MDAzZWlwaDtcbiBcdGludCBobGVuID0gTExfTUFYX0hFQURFUjtcbi1cdGludCBtdHUgPSBFVEhfREFUQV9MRU47XG4gXHRpbnQgdF9obGVuID0gdHVubmVsLVx1MDAzZWhsZW4gJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcGhkcik7XG4gXG4tXHRpcGggPSBcdTAwMjZ0dW5uZWwtXHUwMDNlcGFybXMuaXBoO1xuJiM0MztcdCptdHUgPSBFVEhfREFUQV9MRU47XG4gXG4gXHQvKiBHdWVzcyBvdXRwdXQgZGV2aWNlIHRvIGNob29zZSByZWFzb25hYmxlIG10dSBhbmQgbmVlZGVkX2hlYWRyb29tICovXG4gXHRpZiAoaXBoLVx1MDAzZWRhZGRyKSB7XG5AQCAtMjk0LDM2ICYjNDM7MzEwLDU4IEBAIHN0YXRpYyBpbnQgaXBfdHVubmVsX2JpbmRfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdHN0cnVjdCBydGFibGUgKnJ0O1xuIFxuIFx0XHRpcF90dW5uZWxfaW5pdF9mbG93KFx1MDAyNmZsNCwgaXBoLVx1MDAzZXByb3RvY29sLCBpcGgtXHUwMDNlZGFkZHIsXG4tXHRcdFx0XHQgICAgaXBoLVx1MDAzZXNhZGRyLCB0dW5uZWwtXHUwMDNlcGFybXMub19rZXksXG4mIzQzO1x0XHRcdFx0ICAgIGlwaC1cdTAwM2VzYWRkciwgcGFybXMtXHUwMDNlb19rZXksXG4gXHRcdFx0XHQgICAgaXBoLVx1MDAzZXRvcyBcdTAwMjYgSU5FVF9EU0NQX01BU0ssIHR1bm5lbC1cdTAwM2VuZXQsXG4tXHRcdFx0XHQgICAgdHVubmVsLVx1MDAzZXBhcm1zLmxpbmssIHR1bm5lbC1cdTAwM2Vmd21hcmssIDAsIDApO1xuJiM0MztcdFx0XHRcdCAgICBwYXJtcy1cdTAwM2VsaW5rLCBmd21hcmssIDAsIDApO1xuIFx0XHRydCA9IGlwX3JvdXRlX291dHB1dF9rZXkodHVubmVsLVx1MDAzZW5ldCwgXHUwMDI2Zmw0KTtcbiBcbiBcdFx0aWYgKCFJU19FUlIocnQpKSB7XG4gXHRcdFx0dGRldiA9IHJ0LVx1MDAzZWRzdC5kZXY7XG4gXHRcdFx0aXBfcnRfcHV0KHJ0KTtcbiBcdFx0fVxuLVx0XHRpZiAoZGV2LVx1MDAzZXR5cGUgIT0gQVJQSFJEX0VUSEVSKVxuLVx0XHRcdGRldi1cdTAwM2VmbGFncyB8PSBJRkZfUE9JTlRPUE9JTlQ7XG4tXG4tXHRcdGRzdF9jYWNoZV9yZXNldChcdTAwMjZ0dW5uZWwtXHUwMDNlZHN0X2NhY2hlKTtcbiBcdH1cbiBcbi1cdGlmICghdGRldiBcdTAwMjZcdTAwMjYgdHVubmVsLVx1MDAzZXBhcm1zLmxpbmspXG4tXHRcdHRkZXYgPSBfX2Rldl9nZXRfYnlfaW5kZXgodHVubmVsLVx1MDAzZW5ldCwgdHVubmVsLVx1MDAzZXBhcm1zLmxpbmspO1xuJiM0MztcdGlmICghdGRldiBcdTAwMjZcdTAwMjYgcGFybXMtXHUwMDNlbGluaylcbiYjNDM7XHRcdHRkZXYgPSBfX2Rldl9nZXRfYnlfaW5kZXgodHVubmVsLVx1MDAzZW5ldCwgcGFybXMtXHUwMDNlbGluayk7XG4gXG4gXHRpZiAodGRldikge1xuIFx0XHRobGVuID0gdGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4gJiM0MzsgdGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb207XG4tXHRcdG10dSA9IG1pbih0ZGV2LVx1MDAzZW10dSwgSVBfTUFYX01UVSk7XG4mIzQzO1x0XHQqbXR1ID0gbWluKHRkZXYtXHUwMDNlbXR1LCBJUF9NQVhfTVRVKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdCpuZWVkZWRfaGVhZHJvb20gPSB0X2hsZW4gJiM0MzsgaGxlbjtcbiYjNDM7XHRpZiAoaXBfdHVubmVsX2hlYWRyb29tX3Rvb19sYXJnZShkZXYsICpuZWVkZWRfaGVhZHJvb20pKSB7XG4mIzQzO1x0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwmIzM0O3R1bm5lbCBoZWFkcm9vbSBleGNlZWRzIHNrYiBoZWFkZXIgb2Zmc2V0IGxpbWl0XCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRTJCSUc7XG4gXHR9XG4gXG4tXHRkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tID0gdF9obGVuICYjNDM7IGhsZW47XG4tXHRtdHUgLT0gdF9obGVuICYjNDM7IChkZXYtXHUwMDNldHlwZSA9PSBBUlBIUkRfRVRIRVIgPyBkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuIDogMCk7XG4mIzQzO1x0Km10dSAtPSB0X2hsZW4gJiM0MzsgKGRldi1cdTAwM2V0eXBlID09IEFSUEhSRF9FVEhFUiA/IGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4gOiAwKTtcbiYjNDM7XHRpZiAoKm10dSBcdTAwM2MgSVBWNF9NSU5fTVRVKVxuJiM0MztcdFx0Km10dSA9IElQVjRfTUlOX01UVTtcbiBcbi1cdGlmIChtdHUgXHUwMDNjIElQVjRfTUlOX01UVSlcbi1cdFx0bXR1ID0gSVBWNF9NSU5fTVRVO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IGlwX3R1bm5lbF9iaW5kX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgKm10dSxcbiYjNDM7XHRcdFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGlwX3R1bm5lbCAqdHVubmVsID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgbmVlZGVkX2hlYWRyb29tO1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdGVyciA9IGlwX3R1bm5lbF9jYWxjX2Rldl9jb25maWcoZGV2LCBcdTAwMjZ0dW5uZWwtXHUwMDNlcGFybXMsIHR1bm5lbC1cdTAwM2Vmd21hcmssXG4mIzQzO1x0XHRcdFx0XHRcdTAwMjZuZWVkZWRfaGVhZHJvb20sIG10dSwgZXh0YWNrKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XG4mIzQzO1x0aWYgKHR1bm5lbC1cdTAwM2VwYXJtcy5pcGguZGFkZHIpIHtcbiYjNDM7XHRcdGlmIChkZXYtXHUwMDNldHlwZSAhPSBBUlBIUkRfRVRIRVIpXG4mIzQzO1x0XHRcdGRldi1cdTAwM2VmbGFncyB8PSBJRkZfUE9JTlRPUE9JTlQ7XG4mIzQzO1x0XHRkc3RfY2FjaGVfcmVzZXQoXHUwMDI2dHVubmVsLVx1MDAzZWRzdF9jYWNoZSk7XG4mIzQzO1x0fVxuJiM0MztcdGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20gPSBuZWVkZWRfaGVhZHJvb207XG4gXG4tXHRyZXR1cm4gbXR1O1xuJiM0MztcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgc3RydWN0IGlwX3R1bm5lbCAqaXBfdHVubmVsX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsXG5AQCAtMzQwLDcgJiM0MzszNzgsOSBAQCBzdGF0aWMgc3RydWN0IGlwX3R1bm5lbCAqaXBfdHVubmVsX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRpZiAoSVNfRVJSKGRldikpXG4gXHRcdHJldHVybiBFUlJfQ0FTVChkZXYpO1xuIFxuLVx0bXR1ID0gaXBfdHVubmVsX2JpbmRfZGV2KGRldik7XG4mIzQzO1x0ZXJyID0gaXBfdHVubmVsX2JpbmRfZGV2KGRldiwgXHUwMDI2bXR1LCBOVUxMKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0Z290byBlcnJfZGV2X3NldF9tdHU7XG4gXHRlcnIgPSBkZXZfc2V0X210dShkZXYsIG10dSk7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGVycl9kZXZfc2V0X210dTtcbkBAIC04NTksMTMgJiM0Mzs4OTksMjAgQEAgdm9pZCBpcF90dW5uZWxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChpcF90dW5uZWxfeG1pdCk7XG4gXG4tc3RhdGljIHZvaWQgaXBfdHVubmVsX3VwZGF0ZShzdHJ1Y3QgaXBfdHVubmVsX25ldCAqaXRuLFxuLVx0XHRcdCAgICAgc3RydWN0IGlwX3R1bm5lbCAqdCxcbi1cdFx0XHQgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tXHRcdFx0ICAgICBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCxcbi1cdFx0XHQgICAgIGJvb2wgc2V0X210dSxcbi1cdFx0XHQgICAgIF9fdTMyIGZ3bWFyaylcbiYjNDM7c3RhdGljIGludCBpcF90dW5uZWxfdXBkYXRlKHN0cnVjdCBpcF90dW5uZWxfbmV0ICppdG4sXG4mIzQzO1x0XHRcdCAgICBzdHJ1Y3QgaXBfdHVubmVsICp0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuJiM0MztcdFx0XHQgICAgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAsIGJvb2wgc2V0X210dSxcbiYjNDM7XHRcdFx0ICAgIF9fdTMyIGZ3bWFyaywgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgbmVlZGVkX2hlYWRyb29tO1xuJiM0MztcdGludCBtdHU7XG4mIzQzO1x0aW50IGVycjtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gaXBfdHVubmVsX2NhbGNfZGV2X2NvbmZpZyhkZXYsIHAsIGZ3bWFyaywgXHUwMDI2bmVlZGVkX2hlYWRyb29tLFxuJiM0MztcdFx0XHRcdFx0XHUwMDI2bXR1LCBleHRhY2spO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiBcdGlwX3R1bm5lbF9kZWwoaXRuLCB0KTtcbiBcdHQtXHUwMDNlcGFybXMuaXBoLnNhZGRyID0gcC1cdTAwM2VpcGguc2FkZHI7XG4gXHR0LVx1MDAzZXBhcm1zLmlwaC5kYWRkciA9IHAtXHUwMDNlaXBoLmRhZGRyO1xuQEAgLTg4MCwxOCAmIzQzOzkyNywxNSBAQCBzdGF0aWMgdm9pZCBpcF90dW5uZWxfdXBkYXRlKHN0cnVjdCBpcF90dW5uZWxfbmV0ICppdG4sXG4gXHR0LVx1MDAzZXBhcm1zLmlwaC50dGwgPSBwLVx1MDAzZWlwaC50dGw7XG4gXHR0LVx1MDAzZXBhcm1zLmlwaC50b3MgPSBwLVx1MDAzZWlwaC50b3M7XG4gXHR0LVx1MDAzZXBhcm1zLmlwaC5mcmFnX29mZiA9IHAtXHUwMDNlaXBoLmZyYWdfb2ZmO1xuLVxuLVx0aWYgKHQtXHUwMDNlcGFybXMubGluayAhPSBwLVx1MDAzZWxpbmsgfHwgdC1cdTAwM2Vmd21hcmsgIT0gZndtYXJrKSB7XG4tXHRcdGludCBtdHU7XG4tXG4tXHRcdFdSSVRFX09OQ0UodC1cdTAwM2VwYXJtcy5saW5rLCBwLVx1MDAzZWxpbmspO1xuLVx0XHR0LVx1MDAzZWZ3bWFyayA9IGZ3bWFyaztcbi1cdFx0bXR1ID0gaXBfdHVubmVsX2JpbmRfZGV2KGRldik7XG4tXHRcdGlmIChzZXRfbXR1KVxuLVx0XHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZW10dSwgbXR1KTtcbi1cdH1cbiYjNDM7XHRXUklURV9PTkNFKHQtXHUwMDNlcGFybXMubGluaywgcC1cdTAwM2VsaW5rKTtcbiYjNDM7XHR0LVx1MDAzZWZ3bWFyayA9IGZ3bWFyaztcbiYjNDM7XHRkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tID0gbmVlZGVkX2hlYWRyb29tO1xuJiM0MztcdGlmIChzZXRfbXR1KVxuJiM0MztcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlbXR1LCBtdHUpO1xuIFx0ZHN0X2NhY2hlX3Jlc2V0KFx1MDAyNnQtXHUwMDNlZHN0X2NhY2hlKTtcbiBcdG5ldGRldl9zdGF0ZV9jaGFuZ2UoZGV2KTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4gfVxuIFxuIGludCBpcF90dW5uZWxfY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLFxuQEAgLTk2Miw4ICYjNDM7MTAwNiw3IEBAIGludCBpcF90dW5uZWxfY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLFxuIFx0XHR9XG4gXG4gXHRcdGlmICh0KSB7XG4tXHRcdFx0ZXJyID0gMDtcbi1cdFx0XHRpcF90dW5uZWxfdXBkYXRlKGl0biwgdCwgZGV2LCBwLCB0cnVlLCAwKTtcbiYjNDM7XHRcdFx0ZXJyID0gaXBfdHVubmVsX3VwZGF0ZShpdG4sIHQsIGRldiwgcCwgdHJ1ZSwgMCwgTlVMTCk7XG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0ZXJyID0gLUVOT0VOVDtcbiBcdFx0fVxuQEAgLTExMjgsNiAmIzQzOzExNzEsNyBAQCBpbnQgaXBfdHVubmVsX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldCwgdW5zaWduZWQgaW50IGlwX3RubF9uZXRfaWQsXG4gXHRzdHJ1Y3QgaXBfdHVubmVsX25ldCAqaXRuID0gbmV0X2dlbmVyaWMobmV0LCBpcF90bmxfbmV0X2lkKTtcbiBcdHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuIHBhcm1zO1xuIFx0dW5zaWduZWQgaW50IGk7XG4mIzQzO1x0aW50IG10dTtcbiBcbiBcdGl0bi1cdTAwM2VydG5sX2xpbmtfb3BzID0gb3BzO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgSVBfVE5MX0hBU0hfU0laRTsgaSYjNDM7JiM0MzspXG5AQCAtMTE1Myw5ICYjNDM7MTE5NywxMSBAQCBpbnQgaXBfdHVubmVsX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldCwgdW5zaWduZWQgaW50IGlwX3RubF9uZXRfaWQsXG4gXHQgKi9cbiBcdGlmICghSVNfRVJSKGl0bi1cdTAwM2VmYl90dW5uZWxfZGV2KSkge1xuIFx0XHRpdG4tXHUwMDNlZmJfdHVubmVsX2Rldi1cdTAwM2VuZXRuc19pbW11dGFibGUgPSB0cnVlO1xuLVx0XHRpdG4tXHUwMDNlZmJfdHVubmVsX2Rldi1cdTAwM2VtdHUgPSBpcF90dW5uZWxfYmluZF9kZXYoaXRuLVx1MDAzZWZiX3R1bm5lbF9kZXYpO1xuLVx0XHRpcF90dW5uZWxfYWRkKGl0biwgbmV0ZGV2X3ByaXYoaXRuLVx1MDAzZWZiX3R1bm5lbF9kZXYpKTtcbi1cdFx0aXRuLVx1MDAzZXR5cGUgPSBpdG4tXHUwMDNlZmJfdHVubmVsX2Rldi1cdTAwM2V0eXBlO1xuJiM0MztcdFx0aWYgKCFpcF90dW5uZWxfYmluZF9kZXYoaXRuLVx1MDAzZWZiX3R1bm5lbF9kZXYsIFx1MDAyNm10dSwgTlVMTCkpIHtcbiYjNDM7XHRcdFx0aXRuLVx1MDAzZWZiX3R1bm5lbF9kZXYtXHUwMDNlbXR1ID0gbXR1O1xuJiM0MztcdFx0XHRpcF90dW5uZWxfYWRkKGl0biwgbmV0ZGV2X3ByaXYoaXRuLVx1MDAzZWZiX3R1bm5lbF9kZXYpKTtcbiYjNDM7XHRcdFx0aXRuLVx1MDAzZXR5cGUgPSBpdG4tXHUwMDNlZmJfdHVubmVsX2Rldi1cdTAwM2V0eXBlO1xuJiM0MztcdFx0fVxuIFx0fVxuIFx0cnRubF91bmxvY2soKTtcbiBcbkBAIC0xMTk0LDcgJiM0MzsxMjQwLDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwoaXBfdHVubmVsX2RlbGV0ZV9uZXQpO1xuIFxuIGludCBpcF90dW5uZWxfbmV3bGluayhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdCAgICAgIHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLFxuLVx0XHQgICAgICBfX3UzMiBmd21hcmspXG4mIzQzO1x0XHQgICAgICBfX3UzMiBmd21hcmssIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiB7XG4gXHRzdHJ1Y3QgaXBfdHVubmVsICpudDtcbiBcdHN0cnVjdCBpcF90dW5uZWxfbmV0ICppdG47XG5AQCAtMTIyMiw3ICYjNDM7MTI2OCw5IEBAIGludCBpcF90dW5uZWxfbmV3bGluayhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRpZiAoZGV2LVx1MDAzZXR5cGUgPT0gQVJQSFJEX0VUSEVSIFx1MDAyNlx1MDAyNiAhdGJbSUZMQV9BRERSRVNTXSlcbiBcdFx0ZXRoX2h3X2FkZHJfcmFuZG9tKGRldik7XG4gXG4tXHRtdHUgPSBpcF90dW5uZWxfYmluZF9kZXYoZGV2KTtcbiYjNDM7XHRlcnIgPSBpcF90dW5uZWxfYmluZF9kZXYoZGV2LCBcdTAwMjZtdHUsIGV4dGFjayk7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdGdvdG8gZXJyX2Rldl9zZXRfbXR1O1xuIFx0aWYgKHRiW0lGTEFfTVRVXSkge1xuIFx0XHR1bnNpZ25lZCBpbnQgbWF4ID0gSVBfTUFYX01UVSAtIChudC1cdTAwM2VobGVuICYjNDM7IHNpemVvZihzdHJ1Y3QgaXBoZHIpKTtcbiBcbkBAIC0xMjQ3LDcgJiM0MzsxMjk1LDggQEAgaW50IGlwX3R1bm5lbF9uZXdsaW5rKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBFWFBPUlRfU1lNQk9MX0dQTChpcF90dW5uZWxfbmV3bGluayk7XG4gXG4gaW50IGlwX3R1bm5lbF9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG4tXHRcdFx0IHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLCBfX3UzMiBmd21hcmspXG4mIzQzO1x0XHRcdCBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCwgX191MzIgZndtYXJrLFxuJiM0MztcdFx0XHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbiBcdHN0cnVjdCBpcF90dW5uZWwgKnQ7XG4gXHRzdHJ1Y3QgaXBfdHVubmVsICp0dW5uZWwgPSBuZXRkZXZfcHJpdihkZXYpO1xuQEAgLTEyNzksOCAmIzQzOzEzMjgsNyBAQCBpbnQgaXBfdHVubmVsX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbiBcdFx0fVxuIFx0fVxuIFxuLVx0aXBfdHVubmVsX3VwZGF0ZShpdG4sIHQsIGRldiwgcCwgIXRiW0lGTEFfTVRVXSwgZndtYXJrKTtcbi1cdHJldHVybiAwO1xuJiM0MztcdHJldHVybiBpcF90dW5uZWxfdXBkYXRlKGl0biwgdCwgZGV2LCBwLCAhdGJbSUZMQV9NVFVdLCBmd21hcmssIGV4dGFjayk7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKGlwX3R1bm5lbF9jaGFuZ2VsaW5rKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF92dGkuYyBiL25ldC9pcHY0L2lwX3Z0aS5jXG5pbmRleCAzYjgwOTI5OTk0YTAwLi4xOGI2MzgyYjQ2ZTZkIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaXBfdnRpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2lwX3Z0aS5jXG5AQCAtNTg1LDcgJiM0Mzs1ODUsNyBAQCBzdGF0aWMgaW50IHZ0aV9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXG4gXHR2dGlfbmV0bGlua19wYXJtcyhkYXRhLCBcdTAwMjZwYXJtcywgXHUwMDI2ZndtYXJrKTtcbiBcdHJldHVybiBpcF90dW5uZWxfbmV3bGluayhwYXJhbXMtXHUwMDNlbGlua19uZXQgPyA6IGRldl9uZXQoZGV2KSwgZGV2LCB0Yixcbi1cdFx0XHRcdCBcdTAwMjZwYXJtcywgZndtYXJrKTtcbiYjNDM7XHRcdFx0XHQgXHUwMDI2cGFybXMsIGZ3bWFyaywgZXh0YWNrKTtcbiB9XG4gXG4gc3RhdGljIGludCB2dGlfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuQEAgLTYwMCw3ICYjNDM7NjAwLDcgQEAgc3RhdGljIGludCB2dGlfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuIFx0XHRyZXR1cm4gLUVQRVJNO1xuIFxuIFx0dnRpX25ldGxpbmtfcGFybXMoZGF0YSwgXHUwMDI2cCwgXHUwMDI2ZndtYXJrKTtcbi1cdHJldHVybiBpcF90dW5uZWxfY2hhbmdlbGluayhkZXYsIHRiLCBcdTAwMjZwLCBmd21hcmspO1xuJiM0MztcdHJldHVybiBpcF90dW5uZWxfY2hhbmdlbGluayhkZXYsIHRiLCBcdTAwMjZwLCBmd21hcmssIGV4dGFjayk7XG4gfVxuIFxuIHN0YXRpYyBzaXplX3QgdnRpX2dldF9zaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBpcC5jIGIvbmV0L2lwdjQvaXBpcC5jXG5pbmRleCBiNjQzMTk0ZjU3ZDI5Li4xNjg0YTgxYTkzNTJmIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaXBpcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9pcGlwLmNcbkBAIC00ODEsNyAmIzQzOzQ4MSw3IEBAIHN0YXRpYyBpbnQgaXBpcF9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXG4gXHRpcGlwX25ldGxpbmtfcGFybXMoZGF0YSwgXHUwMDI2cCwgXHUwMDI2dC1cdTAwM2Vjb2xsZWN0X21kLCBcdTAwMjZmd21hcmspO1xuIFx0cmV0dXJuIGlwX3R1bm5lbF9uZXdsaW5rKHBhcmFtcy1cdTAwM2VsaW5rX25ldCA/IDogZGV2X25ldChkZXYpLCBkZXYsIHRiLCBcdTAwMjZwLFxuLVx0XHRcdFx0IGZ3bWFyayk7XG4mIzQzO1x0XHRcdFx0IGZ3bWFyaywgZXh0YWNrKTtcbiB9XG4gXG4gc3RhdGljIGludCBpcGlwX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbkBAIC01MTIsNyAmIzQzOzUxMiw3IEBAIHN0YXRpYyBpbnQgaXBpcF9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG4gXHQgICAgKCEoZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfUE9JTlRPUE9JTlQpIFx1MDAyNlx1MDAyNiBwLmlwaC5kYWRkcikpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLVx0cmV0dXJuIGlwX3R1bm5lbF9jaGFuZ2VsaW5rKGRldiwgdGIsIFx1MDAyNnAsIGZ3bWFyayk7XG4mIzQzO1x0cmV0dXJuIGlwX3R1bm5lbF9jaGFuZ2VsaW5rKGRldiwgdGIsIFx1MDAyNnAsIGZ3bWFyaywgZXh0YWNrKTtcbiB9XG4gXG4gc3RhdGljIHNpemVfdCBpcGlwX2dldF9zaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvcmF3LmMgYi9uZXQvaXB2NC9yYXcuY1xuaW5kZXggN2Y3NGQ4Yjk1YTM3My4uOGU2ZThjNjg0OGIxNyAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3Jhdy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9yYXcuY1xuQEAgLTQzLDYgJiM0Mzs0Myw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJybm8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpbWl0cy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXhwb3J0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zcGlubG9jay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc29ja2lvcy5oXHUwMDNlXG5AQCAtMzU2LDYgJiM0MzszNTcsOCBAQCBzdGF0aWMgaW50IHJhd19zZW5kX2hkcmluYyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBmbG93aTQgKmZsNCxcbiBcdFx0Z290byBvdXQ7XG4gXG4gXHRobGVuID0gTExfUkVTRVJWRURfU1BBQ0UocnQtXHUwMDNlZHN0LmRldik7XG4mIzQzO1x0aWYgKGhsZW4gXHUwMDNlPSBVMTZfTUFYIC0gKHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IE1BWF9JUE9QVExFTikpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdHRsZW4gPSBydC1cdTAwM2Vkc3QuZGV2LVx1MDAzZW5lZWRlZF90YWlscm9vbTtcbiBcdHNrYiA9IHNvY2tfYWxsb2Nfc2VuZF9za2Ioc2ssXG4gXHRcdFx0XHQgIGxlbmd0aCAmIzQzOyBobGVuICYjNDM7IHRsZW4gJiM0MzsgMTUsXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvcmF3LmMgYi9uZXQvaXB2Ni9yYXcuY1xuaW5kZXggYjg4ZDM2NGU3OGFhZS4uZmEyMjNlYzAyMzk2NCAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3Jhdy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9yYXcuY1xuQEAgLTE1LDYgJiM0MzsxNSw3IEBAXG4gICovXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJybm8uaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9saW1pdHMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3R5cGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zb2NrZXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuQEAgLTYxMyw2ICYjNDM7NjE0LDkgQEAgc3RhdGljIGludCByYXd2Nl9zZW5kX2hkcmluYyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbmd0aCxcbiBcdGlmIChmbGFnc1x1MDAyNk1TR19QUk9CRSlcbiBcdFx0Z290byBvdXQ7XG4gXG4mIzQzO1x0aWYgKGhsZW4gXHUwMDNlPSBVMTZfTUFYKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuIFx0c2tiID0gc29ja19hbGxvY19zZW5kX3NrYihzayxcbiBcdFx0XHRcdCAgbGVuZ3RoICYjNDM7IGhsZW4gJiM0MzsgdGxlbiAmIzQzOyAxNSxcbiBcdFx0XHRcdCAgZmxhZ3MgXHUwMDI2IE1TR19ET05UV0FJVCwgXHUwMDI2ZXJyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDozMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0lQSVAmIzM0OywKICAgICYjMzQ7TkVUX0lQR1JFX0RFTVVYJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7LAogICAgJiMzNDtORVRfSVBWVEkmIzM0OywKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3R1bm5lbF9uZXdsaW5rJiMzNDssCiAgICAmIzM0O2lwX3R1bm5lbF9jaGFuZ2VsaW5rJiMzNDssCiAgICAmIzM0O3Jhd19zZW5kbXNnJiMzNDssCiAgICAmIzM0O3Jhd3Y2X3NlbmRtc2cmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBoZWFkcm9vbSBzaXplIHZhbGlkYXRpb24gdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93cyB3aGVuIGNyZWF0aW5nIG9yIG1vZGlmeWluZyBJUCB0dW5uZWxzIChHUkUsIElQSVAsIFZUSSkgYW5kIHdoZW4gc2VuZGluZyBwYWNrZXRzIHZpYSByYXcgSVB2NC9JUHY2IHNvY2tldHMuIEl0IG1vZGlmaWVzIGNvcmUgdHVubmVsIG5ldGxpbmsgY2FsbGJhY2tzIGFuZCByYXcgc29ja2V0IHNlbmRtc2cgcGF0aHMsIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiMTM3M2FhZTAzNTA5NmMzMjI0MDg5MGQ5ZDYxNGMwMjY3ZGMzMWI1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAwMDozMzoyOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaCBiL2luY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaAppbmRleCBkNzA4YjY2ZTU1Y2RhLi4wMTAyZmUzODdiMGFkIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9pcF90dW5uZWxzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oCkBAIC00MjUsMTAgJiM0Mzs0MjUsMTEgQEAgaW50IGlwX3R1bm5lbF9yY3Yoc3RydWN0IGlwX3R1bm5lbCAqdHVubmVsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkgIGNvbnN0IHN0cnVjdCB0bmxfcHRrX2luZm8gKnRwaSwgc3RydWN0IG1ldGFkYXRhX2RzdCAqdHVuX2RzdCwKIAkJICBib29sIGxvZ19lY25fZXJyb3IpOwogaW50IGlwX3R1bm5lbF9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sCi0JCQkgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAsIF9fdTMyIGZ3bWFyayk7CiYjNDM7CQkJIHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLCBfX3UzMiBmd21hcmssCiYjNDM7CQkJIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7CiBpbnQgaXBfdHVubmVsX25ld2xpbmsoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkgICAgICBzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCwKLQkJICAgICAgX191MzIgZndtYXJrKTsKJiM0MzsJCSAgICAgIF9fdTMyIGZ3bWFyaywgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTsKIHZvaWQgaXBfdHVubmVsX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBuZXRfaWQpOwogCiBib29sIGlwX3R1bm5lbF9uZXRsaW5rX2VuY2FwX3Bhcm1zKHN0cnVjdCBubGF0dHIgKmRhdGFbXSwKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX2dyZS5jIGIvbmV0L2lwdjQvaXBfZ3JlLmMKaW5kZXggMGJhMWU5NGU5MDEyYy4uNjkwNzY4OGQwNWJjMSAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaXBfZ3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvaXBfZ3JlLmMKQEAgLTE0MjQsNyAmIzQzOzE0MjQsNyBAQCBzdGF0aWMgaW50IGlwZ3JlX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAlpZiAoZXJyICZsdDsgMCkKIAkJcmV0dXJuIGVycjsKIAlyZXR1cm4gaXBfdHVubmVsX25ld2xpbmsocGFyYW1zLSZndDtsaW5rX25ldCA/IDogZGV2X25ldChkZXYpLCBkZXYsIHRiLCAmYW1wO3AsCi0JCQkJIGZ3bWFyayk7CiYjNDM7CQkJCSBmd21hcmssIGV4dGFjayk7CiB9CiAKIHN0YXRpYyBpbnQgZXJzcGFuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKQEAgLTE0NDUsNyAmIzQzOzE0NDUsNyBAQCBzdGF0aWMgaW50IGVyc3Bhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKIAlyZXR1cm4gaXBfdHVubmVsX25ld2xpbmsocGFyYW1zLSZndDtsaW5rX25ldCA/IDogZGV2X25ldChkZXYpLCBkZXYsIHRiLCAmYW1wO3AsCi0JCQkJIGZ3bWFyayk7CiYjNDM7CQkJCSBmd21hcmssIGV4dGFjayk7CiB9CiAKIHN0YXRpYyBpbnQgaXBncmVfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLApAQCAtMTQ2OCw3ICYjNDM7MTQ2OCw3IEBAIHN0YXRpYyBpbnQgaXBncmVfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLAogCWlmIChlcnIgJmx0OyAwKQogCQlyZXR1cm4gZXJyOwogCi0JZXJyID0gaXBfdHVubmVsX2NoYW5nZWxpbmsoZGV2LCB0YiwgJmFtcDtwLCBmd21hcmspOwomIzQzOwllcnIgPSBpcF90dW5uZWxfY2hhbmdlbGluayhkZXYsIHRiLCAmYW1wO3AsIGZ3bWFyaywgZXh0YWNrKTsKIAlpZiAoZXJyICZsdDsgMCkKIAkJcmV0dXJuIGVycjsKIApAQCAtMTUwMCw3ICYjNDM7MTUwMCw3IEBAIHN0YXRpYyBpbnQgZXJzcGFuX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSwKIAlpZiAoZXJyICZsdDsgMCkKIAkJcmV0dXJuIGVycjsKIAotCWVyciA9IGlwX3R1bm5lbF9jaGFuZ2VsaW5rKGRldiwgdGIsICZhbXA7cCwgZndtYXJrKTsKJiM0MzsJZXJyID0gaXBfdHVubmVsX2NoYW5nZWxpbmsoZGV2LCB0YiwgJmFtcDtwLCBmd21hcmssIGV4dGFjayk7CiAJaWYgKGVyciAmbHQ7IDApCiAJCXJldHVybiBlcnI7CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX3R1bm5lbC5jIGIvbmV0L2lwdjQvaXBfdHVubmVsLmMKaW5kZXggOWQxMTRiZDU3NWY5Mi4uNWU0ZjU2YzBlM2U1ZCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaXBfdHVubmVsLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvaXBfdHVubmVsLmMKQEAgLTksNiAmIzQzOzksNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3R5cGVzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgva2VybmVsLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2xpbWl0cy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NsYWIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC91YWNjZXNzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc2tidWZmLmgmZ3Q7CkBAIC0yNzcsMTYgJiM0MzsyNzgsMzEgQEAgc3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlICpfX2lwX3R1bm5lbF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LAogCXJldHVybiBFUlJfUFRSKGVycik7CiB9CiAKLXN0YXRpYyBpbnQgaXBfdHVubmVsX2JpbmRfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiYjNDM7c3RhdGljIGJvb2wgaXBfdHVubmVsX2hlYWRyb29tX3Rvb19sYXJnZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAomIzQzOwkJCQkJIHVuc2lnbmVkIGludCBuZWVkZWRfaGVhZHJvb20pCiYjNDM7ewomIzQzOwl1bnNpZ25lZCBpbnQgaGxlbjsKJiM0MzsKJiM0MzsJaGxlbiA9ICgoZGV2LSZndDtoYXJkX2hlYWRlcl9sZW4gJiM0MzsgbmVlZGVkX2hlYWRyb29tKSAmYW1wOwomIzQzOwkJfihISF9EQVRBX01PRCAtIDEpKSAmIzQzOyBISF9EQVRBX01PRDsKJiM0MzsKJiM0MzsJcmV0dXJuIGhsZW4gJmd0Oz0gVTE2X01BWCAtIChzaXplb2Yoc3RydWN0IGlwaGRyKSAmIzQzOyBNQVhfSVBPUFRMRU4pOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IGlwX3R1bm5lbF9jYWxjX2Rldl9jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKJiM0MzsJCQkJICAgICBjb25zdCBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcGFybXMsCiYjNDM7CQkJCSAgICAgX191MzIgZndtYXJrLAomIzQzOwkJCQkgICAgIHVuc2lnbmVkIGludCAqbmVlZGVkX2hlYWRyb29tLAomIzQzOwkJCQkgICAgIGludCAqbXR1LAomIzQzOwkJCQkgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykKIHsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqdGRldiA9IE5VTEw7CiAJc3RydWN0IGlwX3R1bm5lbCAqdHVubmVsID0gbmV0ZGV2X3ByaXYoZGV2KTsKLQljb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaDsKJiM0MzsJY29uc3Qgc3RydWN0IGlwaGRyICppcGggPSAmYW1wO3Bhcm1zLSZndDtpcGg7CiAJaW50IGhsZW4gPSBMTF9NQVhfSEVBREVSOwotCWludCBtdHUgPSBFVEhfREFUQV9MRU47CiAJaW50IHRfaGxlbiA9IHR1bm5lbC0mZ3Q7aGxlbiAmIzQzOyBzaXplb2Yoc3RydWN0IGlwaGRyKTsKIAotCWlwaCA9ICZhbXA7dHVubmVsLSZndDtwYXJtcy5pcGg7CiYjNDM7CSptdHUgPSBFVEhfREFUQV9MRU47CiAKIAkvKiBHdWVzcyBvdXRwdXQgZGV2aWNlIHRvIGNob29zZSByZWFzb25hYmxlIG10dSBhbmQgbmVlZGVkX2hlYWRyb29tICovCiAJaWYgKGlwaC0mZ3Q7ZGFkZHIpIHsKQEAgLTI5NCwzNiAmIzQzOzMxMCw1OCBAQCBzdGF0aWMgaW50IGlwX3R1bm5lbF9iaW5kX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCQlzdHJ1Y3QgcnRhYmxlICpydDsKIAogCQlpcF90dW5uZWxfaW5pdF9mbG93KCZhbXA7Zmw0LCBpcGgtJmd0O3Byb3RvY29sLCBpcGgtJmd0O2RhZGRyLAotCQkJCSAgICBpcGgtJmd0O3NhZGRyLCB0dW5uZWwtJmd0O3Bhcm1zLm9fa2V5LAomIzQzOwkJCQkgICAgaXBoLSZndDtzYWRkciwgcGFybXMtJmd0O29fa2V5LAogCQkJCSAgICBpcGgtJmd0O3RvcyAmYW1wOyBJTkVUX0RTQ1BfTUFTSywgdHVubmVsLSZndDtuZXQsCi0JCQkJICAgIHR1bm5lbC0mZ3Q7cGFybXMubGluaywgdHVubmVsLSZndDtmd21hcmssIDAsIDApOwomIzQzOwkJCQkgICAgcGFybXMtJmd0O2xpbmssIGZ3bWFyaywgMCwgMCk7CiAJCXJ0ID0gaXBfcm91dGVfb3V0cHV0X2tleSh0dW5uZWwtJmd0O25ldCwgJmFtcDtmbDQpOwogCiAJCWlmICghSVNfRVJSKHJ0KSkgewogCQkJdGRldiA9IHJ0LSZndDtkc3QuZGV2OwogCQkJaXBfcnRfcHV0KHJ0KTsKIAkJfQotCQlpZiAoZGV2LSZndDt0eXBlICE9IEFSUEhSRF9FVEhFUikKLQkJCWRldi0mZ3Q7ZmxhZ3MgfD0gSUZGX1BPSU5UT1BPSU5UOwotCi0JCWRzdF9jYWNoZV9yZXNldCgmYW1wO3R1bm5lbC0mZ3Q7ZHN0X2NhY2hlKTsKIAl9CiAKLQlpZiAoIXRkZXYgJmFtcDsmYW1wOyB0dW5uZWwtJmd0O3Bhcm1zLmxpbmspCi0JCXRkZXYgPSBfX2Rldl9nZXRfYnlfaW5kZXgodHVubmVsLSZndDtuZXQsIHR1bm5lbC0mZ3Q7cGFybXMubGluayk7CiYjNDM7CWlmICghdGRldiAmYW1wOyZhbXA7IHBhcm1zLSZndDtsaW5rKQomIzQzOwkJdGRldiA9IF9fZGV2X2dldF9ieV9pbmRleCh0dW5uZWwtJmd0O25ldCwgcGFybXMtJmd0O2xpbmspOwogCiAJaWYgKHRkZXYpIHsKIAkJaGxlbiA9IHRkZXYtJmd0O2hhcmRfaGVhZGVyX2xlbiAmIzQzOyB0ZGV2LSZndDtuZWVkZWRfaGVhZHJvb207Ci0JCW10dSA9IG1pbih0ZGV2LSZndDttdHUsIElQX01BWF9NVFUpOwomIzQzOwkJKm10dSA9IG1pbih0ZGV2LSZndDttdHUsIElQX01BWF9NVFUpOwomIzQzOwl9CiYjNDM7CiYjNDM7CSpuZWVkZWRfaGVhZHJvb20gPSB0X2hsZW4gJiM0MzsgaGxlbjsKJiM0MzsJaWYgKGlwX3R1bm5lbF9oZWFkcm9vbV90b29fbGFyZ2UoZGV2LCAqbmVlZGVkX2hlYWRyb29tKSkgewomIzQzOwkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLCAmIzM0O3R1bm5lbCBoZWFkcm9vbSBleGNlZWRzIHNrYiBoZWFkZXIgb2Zmc2V0IGxpbWl0JiMzNDspOwomIzQzOwkJcmV0dXJuIC1FMkJJRzsKIAl9CiAKLQlkZXYtJmd0O25lZWRlZF9oZWFkcm9vbSA9IHRfaGxlbiAmIzQzOyBobGVuOwotCW10dSAtPSB0X2hsZW4gJiM0MzsgKGRldi0mZ3Q7dHlwZSA9PSBBUlBIUkRfRVRIRVIgPyBkZXYtJmd0O2hhcmRfaGVhZGVyX2xlbiA6IDApOwomIzQzOwkqbXR1IC09IHRfaGxlbiAmIzQzOyAoZGV2LSZndDt0eXBlID09IEFSUEhSRF9FVEhFUiA/IGRldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuIDogMCk7CiYjNDM7CWlmICgqbXR1ICZsdDsgSVBWNF9NSU5fTVRVKQomIzQzOwkJKm10dSA9IElQVjRfTUlOX01UVTsKIAotCWlmIChtdHUgJmx0OyBJUFY0X01JTl9NVFUpCi0JCW10dSA9IElQVjRfTUlOX01UVTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgaXBfdHVubmVsX2JpbmRfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCAqbXR1LAomIzQzOwkJCSAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7CiYjNDM7CXVuc2lnbmVkIGludCBuZWVkZWRfaGVhZHJvb207CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CWVyciA9IGlwX3R1bm5lbF9jYWxjX2Rldl9jb25maWcoZGV2LCAmYW1wO3R1bm5lbC0mZ3Q7cGFybXMsIHR1bm5lbC0mZ3Q7ZndtYXJrLAomIzQzOwkJCQkJJmFtcDtuZWVkZWRfaGVhZHJvb20sIG10dSwgZXh0YWNrKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiYjNDM7CiYjNDM7CWlmICh0dW5uZWwtJmd0O3Bhcm1zLmlwaC5kYWRkcikgewomIzQzOwkJaWYgKGRldi0mZ3Q7dHlwZSAhPSBBUlBIUkRfRVRIRVIpCiYjNDM7CQkJZGV2LSZndDtmbGFncyB8PSBJRkZfUE9JTlRPUE9JTlQ7CiYjNDM7CQlkc3RfY2FjaGVfcmVzZXQoJmFtcDt0dW5uZWwtJmd0O2RzdF9jYWNoZSk7CiYjNDM7CX0KJiM0MzsJZGV2LSZndDtuZWVkZWRfaGVhZHJvb20gPSBuZWVkZWRfaGVhZHJvb207CiAKLQlyZXR1cm4gbXR1OwomIzQzOwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHN0cnVjdCBpcF90dW5uZWwgKmlwX3R1bm5lbF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LApAQCAtMzQwLDcgJiM0MzszNzgsOSBAQCBzdGF0aWMgc3RydWN0IGlwX3R1bm5lbCAqaXBfdHVubmVsX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsCiAJaWYgKElTX0VSUihkZXYpKQogCQlyZXR1cm4gRVJSX0NBU1QoZGV2KTsKIAotCW10dSA9IGlwX3R1bm5lbF9iaW5kX2RldihkZXYpOwomIzQzOwllcnIgPSBpcF90dW5uZWxfYmluZF9kZXYoZGV2LCAmYW1wO210dSwgTlVMTCk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlnb3RvIGVycl9kZXZfc2V0X210dTsKIAllcnIgPSBkZXZfc2V0X210dShkZXYsIG10dSk7CiAJaWYgKGVycikKIAkJZ290byBlcnJfZGV2X3NldF9tdHU7CkBAIC04NTksMTMgJiM0Mzs4OTksMjAgQEAgdm9pZCBpcF90dW5uZWxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogfQogRVhQT1JUX1NZTUJPTF9HUEwoaXBfdHVubmVsX3htaXQpOwogCi1zdGF0aWMgdm9pZCBpcF90dW5uZWxfdXBkYXRlKHN0cnVjdCBpcF90dW5uZWxfbmV0ICppdG4sCi0JCQkgICAgIHN0cnVjdCBpcF90dW5uZWwgKnQsCi0JCQkgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCi0JCQkgICAgIHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLAotCQkJICAgICBib29sIHNldF9tdHUsCi0JCQkgICAgIF9fdTMyIGZ3bWFyaykKJiM0MztzdGF0aWMgaW50IGlwX3R1bm5lbF91cGRhdGUoc3RydWN0IGlwX3R1bm5lbF9uZXQgKml0biwKJiM0MzsJCQkgICAgc3RydWN0IGlwX3R1bm5lbCAqdCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKJiM0MzsJCQkgICAgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAsIGJvb2wgc2V0X210dSwKJiM0MzsJCQkgICAgX191MzIgZndtYXJrLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCiB7CiYjNDM7CXVuc2lnbmVkIGludCBuZWVkZWRfaGVhZHJvb207CiYjNDM7CWludCBtdHU7CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CWVyciA9IGlwX3R1bm5lbF9jYWxjX2Rldl9jb25maWcoZGV2LCBwLCBmd21hcmssICZhbXA7bmVlZGVkX2hlYWRyb29tLAomIzQzOwkJCQkJJmFtcDttdHUsIGV4dGFjayk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZXJyOwomIzQzOwogCWlwX3R1bm5lbF9kZWwoaXRuLCB0KTsKIAl0LSZndDtwYXJtcy5pcGguc2FkZHIgPSBwLSZndDtpcGguc2FkZHI7CiAJdC0mZ3Q7cGFybXMuaXBoLmRhZGRyID0gcC0mZ3Q7aXBoLmRhZGRyOwpAQCAtODgwLDE4ICYjNDM7OTI3LDE1IEBAIHN0YXRpYyB2b2lkIGlwX3R1bm5lbF91cGRhdGUoc3RydWN0IGlwX3R1bm5lbF9uZXQgKml0biwKIAl0LSZndDtwYXJtcy5pcGgudHRsID0gcC0mZ3Q7aXBoLnR0bDsKIAl0LSZndDtwYXJtcy5pcGgudG9zID0gcC0mZ3Q7aXBoLnRvczsKIAl0LSZndDtwYXJtcy5pcGguZnJhZ19vZmYgPSBwLSZndDtpcGguZnJhZ19vZmY7Ci0KLQlpZiAodC0mZ3Q7cGFybXMubGluayAhPSBwLSZndDtsaW5rIHx8IHQtJmd0O2Z3bWFyayAhPSBmd21hcmspIHsKLQkJaW50IG10dTsKLQotCQlXUklURV9PTkNFKHQtJmd0O3Bhcm1zLmxpbmssIHAtJmd0O2xpbmspOwotCQl0LSZndDtmd21hcmsgPSBmd21hcms7Ci0JCW10dSA9IGlwX3R1bm5lbF9iaW5kX2RldihkZXYpOwotCQlpZiAoc2V0X210dSkKLQkJCVdSSVRFX09OQ0UoZGV2LSZndDttdHUsIG10dSk7Ci0JfQomIzQzOwlXUklURV9PTkNFKHQtJmd0O3Bhcm1zLmxpbmssIHAtJmd0O2xpbmspOwomIzQzOwl0LSZndDtmd21hcmsgPSBmd21hcms7CiYjNDM7CWRldi0mZ3Q7bmVlZGVkX2hlYWRyb29tID0gbmVlZGVkX2hlYWRyb29tOwomIzQzOwlpZiAoc2V0X210dSkKJiM0MzsJCVdSSVRFX09OQ0UoZGV2LSZndDttdHUsIG10dSk7CiAJZHN0X2NhY2hlX3Jlc2V0KCZhbXA7dC0mZ3Q7ZHN0X2NhY2hlKTsKIAluZXRkZXZfc3RhdGVfY2hhbmdlKGRldik7CiYjNDM7CiYjNDM7CXJldHVybiAwOwogfQogCiBpbnQgaXBfdHVubmVsX2N0bChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCwKQEAgLTk2Miw4ICYjNDM7MTAwNiw3IEBAIGludCBpcF90dW5uZWxfY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLAogCQl9CiAKIAkJaWYgKHQpIHsKLQkJCWVyciA9IDA7Ci0JCQlpcF90dW5uZWxfdXBkYXRlKGl0biwgdCwgZGV2LCBwLCB0cnVlLCAwKTsKJiM0MzsJCQllcnIgPSBpcF90dW5uZWxfdXBkYXRlKGl0biwgdCwgZGV2LCBwLCB0cnVlLCAwLCBOVUxMKTsKIAkJfSBlbHNlIHsKIAkJCWVyciA9IC1FTk9FTlQ7CiAJCX0KQEAgLTExMjgsNiAmIzQzOzExNzEsNyBAQCBpbnQgaXBfdHVubmVsX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldCwgdW5zaWduZWQgaW50IGlwX3RubF9uZXRfaWQsCiAJc3RydWN0IGlwX3R1bm5lbF9uZXQgKml0biA9IG5ldF9nZW5lcmljKG5ldCwgaXBfdG5sX25ldF9pZCk7CiAJc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gcGFybXM7CiAJdW5zaWduZWQgaW50IGk7CiYjNDM7CWludCBtdHU7CiAKIAlpdG4tJmd0O3J0bmxfbGlua19vcHMgPSBvcHM7CiAJZm9yIChpID0gMDsgaSAmbHQ7IElQX1ROTF9IQVNIX1NJWkU7IGkmIzQzOyYjNDM7KQpAQCAtMTE1Myw5ICYjNDM7MTE5NywxMSBAQCBpbnQgaXBfdHVubmVsX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldCwgdW5zaWduZWQgaW50IGlwX3RubF9uZXRfaWQsCiAJICovCiAJaWYgKCFJU19FUlIoaXRuLSZndDtmYl90dW5uZWxfZGV2KSkgewogCQlpdG4tJmd0O2ZiX3R1bm5lbF9kZXYtJmd0O25ldG5zX2ltbXV0YWJsZSA9IHRydWU7Ci0JCWl0bi0mZ3Q7ZmJfdHVubmVsX2Rldi0mZ3Q7bXR1ID0gaXBfdHVubmVsX2JpbmRfZGV2KGl0bi0mZ3Q7ZmJfdHVubmVsX2Rldik7Ci0JCWlwX3R1bm5lbF9hZGQoaXRuLCBuZXRkZXZfcHJpdihpdG4tJmd0O2ZiX3R1bm5lbF9kZXYpKTsKLQkJaXRuLSZndDt0eXBlID0gaXRuLSZndDtmYl90dW5uZWxfZGV2LSZndDt0eXBlOwomIzQzOwkJaWYgKCFpcF90dW5uZWxfYmluZF9kZXYoaXRuLSZndDtmYl90dW5uZWxfZGV2LCAmYW1wO210dSwgTlVMTCkpIHsKJiM0MzsJCQlpdG4tJmd0O2ZiX3R1bm5lbF9kZXYtJmd0O210dSA9IG10dTsKJiM0MzsJCQlpcF90dW5uZWxfYWRkKGl0biwgbmV0ZGV2X3ByaXYoaXRuLSZndDtmYl90dW5uZWxfZGV2KSk7CiYjNDM7CQkJaXRuLSZndDt0eXBlID0gaXRuLSZndDtmYl90dW5uZWxfZGV2LSZndDt0eXBlOwomIzQzOwkJfQogCX0KIAlydG5sX3VubG9jaygpOwogCkBAIC0xMTk0LDcgJiM0MzsxMjQwLDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwoaXBfdHVubmVsX2RlbGV0ZV9uZXQpOwogCiBpbnQgaXBfdHVubmVsX25ld2xpbmsoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkgICAgICBzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCwKLQkJICAgICAgX191MzIgZndtYXJrKQomIzQzOwkJICAgICAgX191MzIgZndtYXJrLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCiB7CiAJc3RydWN0IGlwX3R1bm5lbCAqbnQ7CiAJc3RydWN0IGlwX3R1bm5lbF9uZXQgKml0bjsKQEAgLTEyMjIsNyAmIzQzOzEyNjgsOSBAQCBpbnQgaXBfdHVubmVsX25ld2xpbmsoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCWlmIChkZXYtJmd0O3R5cGUgPT0gQVJQSFJEX0VUSEVSICZhbXA7JmFtcDsgIXRiW0lGTEFfQUREUkVTU10pCiAJCWV0aF9od19hZGRyX3JhbmRvbShkZXYpOwogCi0JbXR1ID0gaXBfdHVubmVsX2JpbmRfZGV2KGRldik7CiYjNDM7CWVyciA9IGlwX3R1bm5lbF9iaW5kX2RldihkZXYsICZhbXA7bXR1LCBleHRhY2spOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJZ290byBlcnJfZGV2X3NldF9tdHU7CiAJaWYgKHRiW0lGTEFfTVRVXSkgewogCQl1bnNpZ25lZCBpbnQgbWF4ID0gSVBfTUFYX01UVSAtIChudC0mZ3Q7aGxlbiAmIzQzOyBzaXplb2Yoc3RydWN0IGlwaGRyKSk7CiAKQEAgLTEyNDcsNyAmIzQzOzEyOTUsOCBAQCBpbnQgaXBfdHVubmVsX25ld2xpbmsoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogRVhQT1JUX1NZTUJPTF9HUEwoaXBfdHVubmVsX25ld2xpbmspOwogCiBpbnQgaXBfdHVubmVsX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSwKLQkJCSBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCwgX191MzIgZndtYXJrKQomIzQzOwkJCSBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCwgX191MzIgZndtYXJrLAomIzQzOwkJCSBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCiB7CiAJc3RydWN0IGlwX3R1bm5lbCAqdDsKIAlzdHJ1Y3QgaXBfdHVubmVsICp0dW5uZWwgPSBuZXRkZXZfcHJpdihkZXYpOwpAQCAtMTI3OSw4ICYjNDM7MTMyOCw3IEBAIGludCBpcF90dW5uZWxfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLAogCQl9CiAJfQogCi0JaXBfdHVubmVsX3VwZGF0ZShpdG4sIHQsIGRldiwgcCwgIXRiW0lGTEFfTVRVXSwgZndtYXJrKTsKLQlyZXR1cm4gMDsKJiM0MzsJcmV0dXJuIGlwX3R1bm5lbF91cGRhdGUoaXRuLCB0LCBkZXYsIHAsICF0YltJRkxBX01UVV0sIGZ3bWFyaywgZXh0YWNrKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGlwX3R1bm5lbF9jaGFuZ2VsaW5rKTsKIApkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfdnRpLmMgYi9uZXQvaXB2NC9pcF92dGkuYwppbmRleCAzYjgwOTI5OTk0YTAwLi4xOGI2MzgyYjQ2ZTZkIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pcF92dGkuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9pcF92dGkuYwpAQCAtNTg1LDcgJiM0Mzs1ODUsNyBAQCBzdGF0aWMgaW50IHZ0aV9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAKIAl2dGlfbmV0bGlua19wYXJtcyhkYXRhLCAmYW1wO3Bhcm1zLCAmYW1wO2Z3bWFyayk7CiAJcmV0dXJuIGlwX3R1bm5lbF9uZXdsaW5rKHBhcmFtcy0mZ3Q7bGlua19uZXQgPyA6IGRldl9uZXQoZGV2KSwgZGV2LCB0YiwKLQkJCQkgJmFtcDtwYXJtcywgZndtYXJrKTsKJiM0MzsJCQkJICZhbXA7cGFybXMsIGZ3bWFyaywgZXh0YWNrKTsKIH0KIAogc3RhdGljIGludCB2dGlfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLApAQCAtNjAwLDcgJiM0Mzs2MDAsNyBAQCBzdGF0aWMgaW50IHZ0aV9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sCiAJCXJldHVybiAtRVBFUk07CiAKIAl2dGlfbmV0bGlua19wYXJtcyhkYXRhLCAmYW1wO3AsICZhbXA7ZndtYXJrKTsKLQlyZXR1cm4gaXBfdHVubmVsX2NoYW5nZWxpbmsoZGV2LCB0YiwgJmFtcDtwLCBmd21hcmspOwomIzQzOwlyZXR1cm4gaXBfdHVubmVsX2NoYW5nZWxpbmsoZGV2LCB0YiwgJmFtcDtwLCBmd21hcmssIGV4dGFjayk7CiB9CiAKIHN0YXRpYyBzaXplX3QgdnRpX2dldF9zaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcGlwLmMgYi9uZXQvaXB2NC9pcGlwLmMKaW5kZXggYjY0MzE5NGY1N2QyOS4uMTY4NGE4MWE5MzUyZiAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaXBpcC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2lwaXAuYwpAQCAtNDgxLDcgJiM0Mzs0ODEsNyBAQCBzdGF0aWMgaW50IGlwaXBfbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCiAJaXBpcF9uZXRsaW5rX3Bhcm1zKGRhdGEsICZhbXA7cCwgJmFtcDt0LSZndDtjb2xsZWN0X21kLCAmYW1wO2Z3bWFyayk7CiAJcmV0dXJuIGlwX3R1bm5lbF9uZXdsaW5rKHBhcmFtcy0mZ3Q7bGlua19uZXQgPyA6IGRldl9uZXQoZGV2KSwgZGV2LCB0YiwgJmFtcDtwLAotCQkJCSBmd21hcmspOwomIzQzOwkJCQkgZndtYXJrLCBleHRhY2spOwogfQogCiBzdGF0aWMgaW50IGlwaXBfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLApAQCAtNTEyLDcgJiM0Mzs1MTIsNyBAQCBzdGF0aWMgaW50IGlwaXBfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLAogCSAgICAoIShkZXYtJmd0O2ZsYWdzICZhbXA7IElGRl9QT0lOVE9QT0lOVCkgJmFtcDsmYW1wOyBwLmlwaC5kYWRkcikpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JcmV0dXJuIGlwX3R1bm5lbF9jaGFuZ2VsaW5rKGRldiwgdGIsICZhbXA7cCwgZndtYXJrKTsKJiM0MzsJcmV0dXJuIGlwX3R1bm5lbF9jaGFuZ2VsaW5rKGRldiwgdGIsICZhbXA7cCwgZndtYXJrLCBleHRhY2spOwogfQogCiBzdGF0aWMgc2l6ZV90IGlwaXBfZ2V0X3NpemUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3Jhdy5jIGIvbmV0L2lwdjQvcmF3LmMKaW5kZXggN2Y3NGQ4Yjk1YTM3My4uOGU2ZThjNjg0OGIxNyAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvcmF3LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvcmF3LmMKQEAgLTQzLDYgJiM0Mzs0Myw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvc2xhYi5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2Vycm5vLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgva2VybmVsLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2xpbWl0cy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2V4cG9ydC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NwaW5sb2NrLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc29ja2lvcy5oJmd0OwpAQCAtMzU2LDYgJiM0MzszNTcsOCBAQCBzdGF0aWMgaW50IHJhd19zZW5kX2hkcmluYyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBmbG93aTQgKmZsNCwKIAkJZ290byBvdXQ7CiAKIAlobGVuID0gTExfUkVTRVJWRURfU1BBQ0UocnQtJmd0O2RzdC5kZXYpOwomIzQzOwlpZiAoaGxlbiAmZ3Q7PSBVMTZfTUFYIC0gKHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IE1BWF9JUE9QVExFTikpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKIAl0bGVuID0gcnQtJmd0O2RzdC5kZXYtJmd0O25lZWRlZF90YWlscm9vbTsKIAlza2IgPSBzb2NrX2FsbG9jX3NlbmRfc2tiKHNrLAogCQkJCSAgbGVuZ3RoICYjNDM7IGhsZW4gJiM0MzsgdGxlbiAmIzQzOyAxNSwKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3Jhdy5jIGIvbmV0L2lwdjYvcmF3LmMKaW5kZXggYjg4ZDM2NGU3OGFhZS4uZmEyMjNlYzAyMzk2NCAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvcmF3LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvcmF3LmMKQEAgLTE1LDYgJiM0MzsxNSw3IEBACiAgKi8KIAogI2luY2x1ZGUgJmx0O2xpbnV4L2Vycm5vLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2xpbWl0cy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3R5cGVzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc29ja2V0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc2xhYi5oJmd0OwpAQCAtNjEzLDYgJiM0Mzs2MTQsOSBAQCBzdGF0aWMgaW50IHJhd3Y2X3NlbmRfaGRyaW5jKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBpbnQgbGVuZ3RoLAogCWlmIChmbGFncyZhbXA7TVNHX1BST0JFKQogCQlnb3RvIG91dDsKIAomIzQzOwlpZiAoaGxlbiAmZ3Q7PSBVMTZfTUFYKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJc2tiID0gc29ja19hbGxvY19zZW5kX3NrYihzaywKIAkJCQkgIGxlbmd0aCAmIzQzOyBobGVuICYjNDM7IHRsZW4gJiM0MzsgMTUsCiAJCQkJICBmbGFncyAmYW1wOyBNU0dfRE9OVFdBSVQsICZhbXA7ZXJyKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDA6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzYxNwoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDQzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogSVAgVHVubmVsICZhbXA7IFJhdyBTb2NrZXQgSGVhZGVyIEhhbmRsaW5nKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgc29tZSBwcmV0dHkgZnVuZGFtZW50YWwgbmV0d29ya2luZyBjb21wb25lbnRzOiBJUHY0IGFuZCBJUHY2IHR1bm5lbCBjcmVhdGlvbiBhbmQgcmF3IHNvY2tldCBzZW5kaW5nLiBJIHNlZSB0aGV5JiMzOTt2ZSBhZGRlZCBzb21lIGNydWNpYWwgY2hlY2tzIHJlbGF0ZWQgdG8gaGVhZGVyIGxlbmd0aCBjYWxjdWxhdGlvbnMgdG8gcHJldmVudCBwb3RlbnRpYWwgb3ZlcmZsb3dzLCBzcGVjaWZpY2FsbHkgaW4gYGlwX3R1bm5lbF9jYWxjX2Rldl9jb25maWdgLCBgcmF3X3NlbmRfaGRyaW5jYCwgYW5kIGByYXd2Nl9zZW5kX2hkcmluY2AuIFRoZSBjaGVja3MgaW4gdGhlIGlwIHR1bm5lbCBjb2RlIG5vdyBoYW5kbGUgdGhlIGV4dGVuZGVkIGFjayBhcyB3ZWxsLCBhbmQgcmV0dXJuIGVycm9ycyBpZiB0aGUgaGVhZHJvb20gaXMgdG9vIGxhcmdlLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBhcmVhIGZvciBmdXp6aW5nLCBwb3RlbnRpYWwgZm9yIGJ1ZmZlciBvdmVyZmxvd3Mgb3IgaW50ZWdlci1yZWxhdGVkIHZ1bG5lcmFiaWxpdGllcyB0aGVyZS4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhcyB3ZWxsLCBzbyB0aGF0IGFsc28gbWFrZXMgdGhpcyBoaWdoIG9uIHRoZSBsaXN0LgoKTXkgaW5pdGlhbCBmb2N1cyB3aWxsIGJlIGhvbmluZyBpbiBvbiB0aGVzZSB2dWxuZXJhYmxlIGVudHJ5IHBvaW50cy4gSSYjMzk7dmUgZ290IHRvIGlkZW50aWZ5IHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgZ29pbmcgdG8gYmUgbW9zdCBlZmZlY3RpdmUgZm9yIGZ1enppbmcuIExvb2tzIGxpa2Ugd2UmIzM5O3JlIGludGVyZXN0ZWQgaW4gdGhlIGZvbGxvd2luZzogYGlwX3R1bm5lbF9jYWxjX2Rldl9jb25maWdgLCBgaXBfdHVubmVsX2JpbmRfZGV2YCwgYGlwX3R1bm5lbF91cGRhdGVgLCBgaXBfdHVubmVsX25ld2xpbmtgLCBgaXBfdHVubmVsX2NoYW5nZWxpbmtgLCBgcmF3X3NlbmRfaGRyaW5jYCwgYW5kIGByYXd2Nl9zZW5kX2hkcmluY2AuCgpCZWNhdXNlIGBpcF90dW5uZWxfbmV3bGlua2AgYW5kIGBpcF90dW5uZWxfY2hhbmdlbGlua2AgYXJlIGV4cG9ydGVkLCBub24tc3RhdGljLCBhbmQgcGFydCBvZiB0aGUgdHVubmVsIGNyZWF0aW9uL21vZGlmaWNhdGlvbiBwcm9jZXNzLCB0aGV5IGxvb2sgbGlrZSBwcmltZSB0YXJnZXRzLiBPbiB0aGUgcmF3IHNvY2tldCBzaWRlLCBgcmF3X3NlbmRfaGRyaW5jYCBhbmQgYHJhd3Y2X3NlbmRfaGRyaW5jYCBhcmUgc3RhdGljLCBzbyBJIG5lZWQgdG8gZmluZCB0aGVpciBlbnRyeSBwb2ludHMsIHdoaWNoIG1lYW5zIEkmIzM5O2xsIGJlIGxvb2tpbmcgYXQgYHJhd19zZW5kbXNnYCBhbmQgYHJhd3Y2X3NlbmRtc2dgIHJlc3BlY3RpdmVseS4KCk5vdywgSSYjMzk7bGwgZGl2ZSBpbnRvIHRoZSBzb3VyY2UgY29kZSB0byBnZXQgdGhlIHNwZWNpZmljIGNhbGxzLiBJJiMzOTtsbCBjaGVjayBgbmV0L2lwdjQvcmF3LmNgIGZvciBgcmF3X3NlbmRtc2dgIGFuZCB0aGVuIGBuZXQvaXB2Ni9yYXcuY2AgZm9yIGByYXd2Nl9zZW5kbXNnYCB0byBnZXQgdGhlIGNvbnRleHQgYXJvdW5kIHRob3NlIGZ1bmN0aW9uIGNhbGxzLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHF1aWNrIGdyZXAgdG8gbWFrZSBzdXJlIEkmIzM5O20gb24gdGhlIHJpZ2h0IHRyYWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14oc3RhdGljICk/aW50IHJhd19zZW5kbXNnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jYW4vcmF3LmM9ODk4PXN0YXRpYyB1bnNpZ25lZCBpbnQgcmF3X2NoZWNrX3R4ZnJhbWUoc3RydWN0IHJhd19zb2NrICpybywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvY2FuL3Jhdy5jLTkxNy1cbm5ldC9jYW4vcmF3LmM6OTE4OnN0YXRpYyBpbnQgcmF3X3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3Qgc2l6ZSlcbm5ldC9jYW4vcmF3LmMtOTE5LXtcbi0tXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYz0yMzY9c3RhdGljIGludCByYXdfZGlzY29ubmVjdChzdHJ1Y3Qgc29jayAqc2ssIGludCBmbGFncylcbi0tXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYy0yNDAtXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYzoyNDE6c3RhdGljIGludCByYXdfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUpXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYy0yNDIte1xuLS1cbm5ldC9pcHY0L3Jhdy5jPTQ2MT1zdGF0aWMgaW50IHJhd19nZXRmcmFnKHZvaWQgKmZyb20sIGNoYXIgKnRvLCBpbnQgb2Zmc2V0LCBpbnQgbGVuLCBpbnQgb2RkLFxuLS1cbm5ldC9pcHY0L3Jhdy5jLTQ5MS1cbm5ldC9pcHY0L3Jhdy5jOjQ5MjpzdGF0aWMgaW50IHJhd19zZW5kbXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxubmV0L2lwdjQvcmF3LmMtNDkzLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODcxCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBkaXN0aWxsZWQ6CgoqKkRpZ2dpbmcgaW50byBSYXcgU29ja2V0IFNlbmQgRnVuY3Rpb25hbGl0eSoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHJhd19zZW5kbXNnYCBpbiBgbmV0L2lwdjQvcmF3LmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7V2FpdCwgaXMgdGhpcyBmdW5jdGlvbiBzdGF0aWM/JiMzNDsgSSBuZWVkIHRvIHZlcmlmeSB0aGF0LiBZZXAsIGl0IGlzLiBJbnRlcmVzdGluZy4gTm93LCB0aGUgbmV4dCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0ICp0aGlzKiBzdGF0aWMgYHJhd19zZW5kbXNnYCBmdW5jdGlvbiBpcyBhc3NpZ25lZCB0byBgcHJvdG8uc2VuZG1zZ2AuIFRoYXQmIzM5O3MgaG93IGl0JiMzOTtzIGJlaW5nIGFjY2Vzc2VkIGV4dGVybmFsbHkuIEkga25vdyB3aGF0JiMzOTtzIGdvaW5nIG9uIG5vdywgYnV0IEkgbmVlZCB0byBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IGJ5IGNoZWNraW5nIGBuZXQvaXB2NC9yYXcuY2AgZm9yIGJvdGggYHJhd19zZW5kbXNnYCBhbmQgYWxzbyB0aGUgcmVsYXRlZCBmdW5jdGlvbiBgcmF3X3NlbmRfaGRyaW5jYC4gSXQgc2VlbXMgbGlrZSBhIGNsYXNzaWMgY2FzZSBvZiBmdW5jdGlvbiBwb2ludGVyIG1hZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Jhd19zZW5kX2hkcmluYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9yYXcuYz0zMTk9aW50IHJhd19yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY0L3Jhdy5jLTMzMy1cbm5ldC9pcHY0L3Jhdy5jOjMzNDpzdGF0aWMgaW50IHJhd19zZW5kX2hkcmluYyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBmbG93aTQgKmZsNCxcbm5ldC9pcHY0L3Jhdy5jLTMzNS1cdFx0XHQgICBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW5ndGgsXG4tLVxubmV0L2lwdjQvcmF3LmM9NDkyPXN0YXRpYyBpbnQgcmF3X3NlbmRtc2coc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXG4tLVxubmV0L2lwdjQvcmF3LmMtNjU0LVx0aWYgKGhkcmluY2wpXG5uZXQvaXB2NC9yYXcuYzo2NTU6XHRcdGVyciA9IHJhd19zZW5kX2hkcmluYyhzaywgXHUwMDI2Zmw0LCBtc2csIGxlbixcbm5ldC9pcHY0L3Jhdy5jLTY1Ni1cdFx0XHRcdCAgICAgIFx1MDAyNnJ0LCBtc2ctXHUwMDNlbXNnX2ZsYWdzLCBcdTAwMjZpcGMuc29ja2MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0MDIKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBgcmF3djZfc2VuZG1zZ2AgRnVuY3Rpb24qKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gaXQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGByYXd2Nl9zZW5kbXNnYC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQsIEkgd2FudCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGlzIGhhbmRsZWQsIHRoZSBrZXkgZnVuY3Rpb24gZm9yIHNlbmRpbmcgcmF3IElQdjYgZGF0YWdyYW1zLiBJdCYjMzk7cyB0aGUgY29yZSBvZiB0aGlzIG9wZXJhdGlvbi4gTGV0JiMzOTtzIHNlZSBob3cgdGhpbmdzIGFyZSBmbG93aW5nIHRocm91Z2ggdGhhdCBzcGVjaWZpYyBwaWVjZSBvZiB0aGUgY29kZS4gSSBuZWVkIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgYmVoYXZpb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDA6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmF3djZfc2VuZG1zZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0X2NhY2hlbGluZXMvaW5ldF9zb2NrLnJzdD0xMj1zdHJ1Y3QgaXB2Nl9waW5mbyogICAgICAgcGluZXQ2XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0X2NhY2hlbGluZXMvaW5ldF9zb2NrLnJzdDoxMzpzdHJ1Y3QgaXB2Nl9mbF9zb2NrbGlzdCogaXB2Nl9mbF9saXN0ICAgICAgICAgIHJlYWRfbW9zdGx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3BfdjZfY29ubmVjdCxfX2lwNl9kYXRhZ3JhbV9jb25uZWN0LHVkcHY2X3NlbmRtc2cscmF3di4uLlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL2luZXRfc29jay5yc3QtMTQtYmUxNiAgICAgICAgICAgICAgICAgICAgIGluZXRfc3BvcnQgICAgICAgICAgICByZWFkX21vc3RseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX190Y3BfdHJhbnNtaXRfc2tiXG4tLVxubmV0L2lwdjYvcmF3LmM9NzE1PXN0YXRpYyBpbnQgcmF3Nl9nZXRmcmFnKHZvaWQgKmZyb20sIGNoYXIgKnRvLCBpbnQgb2Zmc2V0LCBpbnQgbGVuLCBpbnQgb2RkLFxuLS1cbm5ldC9pcHY2L3Jhdy5jLTc0NS1cbm5ldC9pcHY2L3Jhdy5jOjc0NjpzdGF0aWMgaW50IHJhd3Y2X3NlbmRtc2coc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXG5uZXQvaXB2Ni9yYXcuYy03NDcte1xuLS1cbm5ldC9pcHY2L3Jhdy5jPTEyMDA9c3RydWN0IHByb3RvIHJhd3Y2X3Byb3QgPSB7XG4tLVxubmV0L2lwdjYvcmF3LmMtMTIxMC1cdC5nZXRzb2Nrb3B0XHQgICA9IHJhd3Y2X2dldHNvY2tvcHQsXG5uZXQvaXB2Ni9yYXcuYzoxMjExOlx0LnNlbmRtc2dcdCAgID0gcmF3djZfc2VuZG1zZyxcbm5ldC9pcHY2L3Jhdy5jLTEyMTItXHQucmVjdm1zZ1x0ICAgPSByYXd2Nl9yZWN2bXNnLFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90eHRpbWVzdGFtcC5jPTQ4Nj1zdGF0aWMgdm9pZCBkb190ZXN0KGludCBmYW1pbHksIHVuc2lnbmVkIGludCByZXBvcnRfb3B0KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90eHRpbWVzdGFtcC5jLTUwOS1cdFx0fVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3R4dGltZXN0YW1wLmM6NTEwOlx0XHQvKiBzcGVjaWFsIGNhc2UsIG9ubHkgcmF3djZfc2VuZG1zZzpcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90eHRpbWVzdGFtcC5jLTUxMS1cdFx0ICogcGFzcyBwcm90byBpbiBzaW42X3BvcnQgaWYgbm90IGNvbm5lY3RlZFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDY2CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXR3b3JrIFN0YWNrIC0gQSBEZWVwIERpdmUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGByYXdfc2VuZG1zZ2AgYW5kIGByYXd2Nl9zZW5kbXNnYC4gSW50ZXJlc3RpbmcsIHRoZXkmIzM5O3JlIHN0YXRpYyBmdW5jdGlvbnMuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtPa2F5LCB0aGF0JiMzOTtzIG5vdCB1bnVzdWFsIGZvciBpbnRlcm5hbCBoZWxwZXJzLCBidXQgbGV0JiMzOTtzIHNlZSB3aGVyZSB0aGV5JiMzOTtyZSB1c2VkLiYjMzQ7IEkgcXVpY2tseSByZWFsaXplZCBgcmF3X3NlbmRtc2dgIGlzIHN0YXRpYyB3aXRoaW4gYG5ldC9pcHY0L3Jhdy5jYC4gVGhlIG5leHQgcXVlc3Rpb24gaXMsIGFyZSB0aGV5IGNhbGxlZCBieSBhbnl0aGluZyBvdXRzaWRlIG9mIHRoYXQgc3RhdGljIHNjb3BlPyBUaGVuIEkgcmVtZW1iZXIgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IGFzc2lnbmVkIHRvIGBwcm90by5zZW5kbXNnYC4gVGhhdCYjMzk7cyB0aGUgY2x1ZSEgVGhpcyBtZWFucyB0aGV5JiMzOTtyZSBwYXJ0IG9mIHRoZSBwcm90b2NvbCBvcGVyYXRpb25zLgoKTm93IEkgbmVlZCB0byBmaW5kIHRoZSBicmlkZ2UgYmV0d2VlbiBzdGF0aWMgc2NvcGUgYW5kIG91dHNpZGUgYWNjZXNzLiBBaCEgVGhpbmtpbmcgYWJvdXQgaXQuLi4gYGlwX3R1bm5lbF9uZXdsaW5rYCBhbmQgYGlwX3R1bm5lbF9jaGFuZ2VsaW5rYCEgVGhvc2UgYXJlIGV4cG9ydGVkLCBzbyB0aGV5IGhhdmUgdG8gYmUgdGhlIGNvbm5lY3Rpb24uIExldCBtZSBzaGlmdCBteSBmb2N1cyB0byBgaXBfdHVubmVsX25ld2xpbmtgLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBzdGFydCBkaWdnaW5nIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zIGZpdCBpbnRvIHRoZSB0dW5uZWwgc2V0dXAgcHJvY2Vzcy4gVGhpcyBsb29rcyBwcm9taXNpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3R1bm5lbF9uZXdsaW5rJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaD00Mjc9aW50IGlwX3R1bm5lbF9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG4tLVxuaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oLTQyOS1cdFx0XHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcbmluY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaDo0MzA6aW50IGlwX3R1bm5lbF9uZXdsaW5rKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmluY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaC00MzEtXHRcdCAgICAgIHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTE0MDk9c3RhdGljIGludCBpcGdyZV9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTQyNS1cdFx0cmV0dXJuIGVycjtcbm5ldC9pcHY0L2lwX2dyZS5jOjE0MjY6XHRyZXR1cm4gaXBfdHVubmVsX25ld2xpbmsocGFyYW1zLVx1MDAzZWxpbmtfbmV0ID8gOiBkZXZfbmV0KGRldiksIGRldiwgdGIsIFx1MDAyNnAsXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDI3LVx0XHRcdFx0IGZ3bWFyaywgZXh0YWNrKTtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xNDMwPXN0YXRpYyBpbnQgZXJzcGFuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDQ2LVx0XHRyZXR1cm4gZXJyO1xubmV0L2lwdjQvaXBfZ3JlLmM6MTQ0NzpcdHJldHVybiBpcF90dW5uZWxfbmV3bGluayhwYXJhbXMtXHUwMDNlbGlua19uZXQgPyA6IGRldl9uZXQoZGV2KSwgZGV2LCB0YiwgXHUwMDI2cCxcbm5ldC9pcHY0L2lwX2dyZS5jLTE0NDgtXHRcdFx0XHQgZndtYXJrLCBleHRhY2spO1xuLS1cbm5ldC9pcHY0L2lwX3R1bm5lbC5jPTEyMzk9RVhQT1JUX1NZTUJPTF9HUEwoaXBfdHVubmVsX2RlbGV0ZV9uZXQpO1xubmV0L2lwdjQvaXBfdHVubmVsLmMtMTI0MC1cbm5ldC9pcHY0L2lwX3R1bm5lbC5jOjEyNDE6aW50IGlwX3R1bm5lbF9uZXdsaW5rKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9pcHY0L2lwX3R1bm5lbC5jLTEyNDItXHRcdCAgICAgIHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLFxuLS1cbm5ldC9pcHY0L2lwX3R1bm5lbC5jLTEyOTQtfVxubmV0L2lwdjQvaXBfdHVubmVsLmM6MTI5NTpFWFBPUlRfU1lNQk9MX0dQTChpcF90dW5uZWxfbmV3bGluayk7XG5uZXQvaXB2NC9pcF90dW5uZWwuYy0xMjk2LVxuLS1cbm5ldC9pcHY0L2lwX3Z0aS5jPTU3Nz1zdGF0aWMgaW50IHZ0aV9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2lwdjQvaXBfdnRpLmMtNTg2LVx0dnRpX25ldGxpbmtfcGFybXMoZGF0YSwgXHUwMDI2cGFybXMsIFx1MDAyNmZ3bWFyayk7XG5uZXQvaXB2NC9pcF92dGkuYzo1ODc6XHRyZXR1cm4gaXBfdHVubmVsX25ld2xpbmsocGFyYW1zLVx1MDAzZWxpbmtfbmV0ID8gOiBkZXZfbmV0KGRldiksIGRldiwgdGIsXG5uZXQvaXB2NC9pcF92dGkuYy01ODgtXHRcdFx0XHQgXHUwMDI2cGFybXMsIGZ3bWFyaywgZXh0YWNrKTtcbi0tXG5uZXQvaXB2NC9pcGlwLmM9NDY0PXN0YXRpYyBpbnQgaXBpcF9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2lwdjQvaXBpcC5jLTQ4Mi1cdGlwaXBfbmV0bGlua19wYXJtcyhkYXRhLCBcdTAwMjZwLCBcdTAwMjZ0LVx1MDAzZWNvbGxlY3RfbWQsIFx1MDAyNmZ3bWFyayk7XG5uZXQvaXB2NC9pcGlwLmM6NDgzOlx0cmV0dXJuIGlwX3R1bm5lbF9uZXdsaW5rKHBhcmFtcy1cdTAwM2VsaW5rX25ldCA/IDogZGV2X25ldChkZXYpLCBkZXYsIHRiLCBcdTAwMjZwLFxubmV0L2lwdjQvaXBpcC5jLTQ4NC1cdFx0XHRcdCBmd21hcmssIGV4dGFjayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMzA3CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMjk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLZXJuZWwgU3ltYm9scyBmb3IgRm9jdXMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gcG90ZW50aWFsIGZvY3VzIHN5bWJvbHMgaGVyZS4gYGlwX3R1bm5lbF9uZXdsaW5rYCBhbmQgYGlwX3R1bm5lbF9jaGFuZ2VsaW5rYCBsb29rIHByb21pc2luZyDigJMgdGhleSYjMzk7cmUgZXhwb3J0ZWQgYW5kIGxldmVyYWdlZCBieSBzZXZlcmFsIG90aGVyIGZ1bmN0aW9ucyBsaWtlIGBpcGdyZV9uZXdsaW5rYCwgYGVyc3Bhbl9uZXdsaW5rYCwgYHZ0aV9uZXdsaW5rYCwgYW5kIGBpcGlwX25ld2xpbmtgLCB3aGljaCBhcmUgYWxsIGBydG5sX2xpbmtfb3BzYCBjYWxsYmFja3MuIFRoYXQgbWFrZXMgdGhlbSBzb2xpZCBjYW5kaWRhdGVzLgoKTm93LCBJIHdhcyBpbml0aWFsbHkgY29uc2lkZXJpbmcgYHJhd19zZW5kX2hkcmluY2AsIGJ1dCBpdCYjMzk7cyBzdGF0aWMsIGFuZCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSBjbGVhcjogcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5cG9pbnRzLiAgVGhpbmtpbmcgYWJvdXQgaXQsIHRob3VnaCwgYHJhd19zZW5kbXNnYCBpcyAqYWxzbyogc3RhdGljLCB3aGljaCBzZWVtcyBwcm9ibGVtYXRpYywgYnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gQWgsIHJpZ2h0LCBgcmF3X3NlbmRtc2dgIGlzIGFjdHVhbGx5IGFzc2lnbmVkIHRvIGBwcm90by5zZW5kbXNnYC4gVGhhdCBtZWFucyBpdCAqaXNuJiMzOTt0KiBpbmxpbmVkLgoKVGhlIGd1aWRpbmcgcHJpbmNpcGxlIGlzIHRvIGF2b2lkIGlubGluZWQgZnVuY3Rpb25zIGJlY2F1c2UgdGhleSBkb24mIzM5O3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLCBhbmQgdGhhdCBtYWtlcyB0aGVtIGxlc3MgaWRlYWwuICBgcmF3X3NlbmRtc2dgIGFuZCBgcmF3djZfc2VuZG1zZ2AgYXJlIG5vdCBpbmxpbmVkIGJlY2F1c2UgdGhleSBhcmUgYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMsIHNvIHRoZXkmIzM5O3JlIHBlcmZlY3RseSBmaW5lLgoKQWxyaWdodCwgYmVmb3JlIEkgZ2V0IHRvbyBmYXIsIGxldCYjMzk7cyBqdXN0IHF1aWNrbHkgY2hlY2sgaWYgYGlwX3R1bm5lbF9uZXdsaW5rYCAoc2luY2UgdGhhdCB3YXMgbXkgaW5pdGlhbCBzdHJvbmcgY2FuZGlkYXRlKSBoYXMgYW55IHNwZWNpZmljIENPTkZJRyBvcHRpb25zIHRoYXQgbWlnaHQgbWFrZSBpdCBsZXNzIHVuaXZlcnNhbGx5IHVzZWZ1bC4gSXQgcmVzaWRlcyBpbiBgbmV0L2lwdjQvaXBfdHVubmVsLmNgLCBzbyBJJiMzOTtsbCBjaGVjayBgbmV0L2lwdjQvTWFrZWZpbGVgIGZvciBgaXBfdHVubmVsLm9gIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3R1bm5lbFxcLm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcbi0tXG5uZXQvaXB2NC9NYWtlZmlsZS0xOC1cbm5ldC9pcHY0L01ha2VmaWxlOjE5Om9iai0kKENPTkZJR19ORVRfSVBfVFVOTkVMKSAmIzQzOz0gaXBfdHVubmVsLm9cbm5ldC9pcHY0L01ha2VmaWxlLTIwLW9iai0kKENPTkZJR19TWVNDVEwpICYjNDM7PSBzeXNjdGxfbmV0X2lwdjQub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjA3OQoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIGFuZCB0aGUgUmF3IFNvY2tldCBGcm9udGllcioqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBUaGUga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgSVAgdHVubmVscywgc3BlY2lmaWNhbGx5IGBDT05GSUdfTkVUX0lQX1RVTk5FTGAsIGhhdmUgZGVmaW5pdGVseSBiZWVuIG9uIG15IG1pbmQgbGF0ZWx5LiBJdCYjMzk7cyBhIGtleSBwaWVjZSBpbiBob3cgd2UgaGFuZGxlIGVuY2Fwc3VsYXRlZCB0cmFmZmljIGFuZCB2aXJ0dWFsIG5ldHdvcmtzIHdpdGhpbiB0aGUga2VybmVsIHNwYWNlLiBBbHdheXMgaW1wb3J0YW50IHRvIHJldmlzaXQgdGhlIGltcGxpY2F0aW9ucyBvZiBpdHMgc2VsZWN0aW9uLgoKVGhlbiwgbXkgdHJhaW4gb2YgdGhvdWdodCBkcmlmdGVkIHRvd2FyZHMgYHJhdy5jYC4gVGhhdCBmaWxlIGFsd2F5cyBwb3BzIHVwIHdoZW4gSSYjMzk7bSBkZWFsaW5nIHdpdGggbG93LWxldmVsIG5ldHdvcmsgZnVuY3Rpb25hbGl0eS4gUmF3IHNvY2tldHMgb2ZmZXIgdGhhdCBkaXJlY3QgYWNjZXNzIHRvIHRoZSBuZXR3b3JrIGxheWVyLCBieXBhc3NpbmcgbXVjaCBvZiB0aGUgdHlwaWNhbCBwcm90b2NvbCBzdGFjay4gSSYjMzk7bSB3b25kZXJpbmcgaWYgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyBpbnRlcmFjdGlvbiBJJiMzOTttIGNvbnNpZGVyaW5nLCBwZXJoYXBzIGEgcGVyZm9ybWFuY2UgYm90dGxlbmVjaywgb3IgbWF5YmUgYSBwb3RlbnRpYWwgZmVhdHVyZSBJJiMzOTttIGV2YWx1YXRpbmcgZm9yIGludGVncmF0aW9uIHdpdGggdGhlIHR1bm5lbCBmdW5jdGlvbmFsaXR5LiBHb3R0YSBjaGVjayBpZiB0aG9zZSB0d28gcGllY2VzIGFyZSBwbGF5aW5nIG5pY2VseSB0b2dldGhlciwgb3IgaWYgdGhlcmUgaXMgc29tZSBpc3N1ZSB3aXRoIHRoZSByYXcgc29ja2V0cyBhY2Nlc3MgYW5kIHRoZSBpcCB0dW5uZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Jhd1xcLm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9jeGwvY29yZS9tYm94LmM9NDA1PXN0YXRpYyBpbnQgY3hsX3RvX21lbV9jbWRfcmF3KHN0cnVjdCBjeGxfbWVtX2NvbW1hbmQgKm1lbV9jbWQsXG4tLVxuZHJpdmVycy9jeGwvY29yZS9tYm94LmMtNDE5LVxuZHJpdmVycy9jeGwvY29yZS9tYm94LmM6NDIwOlx0aWYgKCFjeGxfbWVtX3Jhd19jb21tYW5kX2FsbG93ZWQoc2VuZF9jbWQtXHUwMDNlcmF3Lm9wY29kZSkpXG5kcml2ZXJzL2N4bC9jb3JlL21ib3guYy00MjEtXHRcdHJldHVybiAtRVBFUk07XG4tLVxuZHJpdmVycy9jeGwvY29yZS9tYm94LmMtNDMwLVx0XHR9LFxuZHJpdmVycy9jeGwvY29yZS9tYm94LmM6NDMxOlx0XHQub3Bjb2RlID0gc2VuZF9jbWQtXHUwMDNlcmF3Lm9wY29kZVxuZHJpdmVycy9jeGwvY29yZS9tYm94LmMtNDMyLVx0fTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9OTM9ZHJtLSQoQ09ORklHX0RSTV9QQU5JQykgJiM0Mzs9IGRybV9wYW5pYy5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6OTQ6ZHJtLSQoQ09ORklHX0RSTV9EUkFXKSAmIzQzOz0gZHJtX2RyYXcub1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTk1LWRybS0kKENPTkZJR19EUk1fUEFOSUNfU0NSRUVOX1FSX0NPREUpICYjNDM7PSBkcm1fcGFuaWNfcXIub1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9xeGwvTWFrZWZpbGUtNS1cbmRyaXZlcnMvZ3B1L2RybS9xeGwvTWFrZWZpbGU6NjpxeGwteSA6PSBxeGxfZHJ2Lm8gcXhsX2ttcy5vIHF4bF9kaXNwbGF5Lm8gcXhsX3R0bS5vIHF4bF9vYmplY3QubyBxeGxfZ2VtLm8gcXhsX2NtZC5vIHF4bF9pbWFnZS5vIHF4bF9kcmF3Lm8gcXhsX2RlYnVnZnMubyBxeGxfaXJxLm8gcXhsX2R1bWIubyBxeGxfaW9jdGwubyBxeGxfcmVsZWFzZS5vLi4uXG5kcml2ZXJzL2dwdS9kcm0vcXhsL01ha2VmaWxlLTctXG4tLVxuZHJpdmVycy9oaWQvTWFrZWZpbGU9MTQ9b2JqLSQoQ09ORklHX0hJRF9HRU5FUklDKVx0JiM0Mzs9IGhpZC1nZW5lcmljLm9cbmRyaXZlcnMvaGlkL01ha2VmaWxlLTE1LVxuZHJpdmVycy9oaWQvTWFrZWZpbGU6MTY6aGlkLSQoQ09ORklHX0hJRFJBVylcdFx0JiM0Mzs9IGhpZHJhdy5vXG5kcml2ZXJzL2hpZC9NYWtlZmlsZS0xNy1cbi0tXG5kcml2ZXJzL2lucHV0L3NlcmlvL01ha2VmaWxlPTIzPW9iai0kKENPTkZJR19TRVJJT19MSUJQUzIpXHQmIzQzOz0gbGlicHMyLm9cbmRyaXZlcnMvaW5wdXQvc2VyaW8vTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX1NFUklPX1JBVylcdFx0JiM0Mzs9IHNlcmlvX3Jhdy5vXG5kcml2ZXJzL2lucHV0L3NlcmlvL01ha2VmaWxlLTI1LW9iai0kKENPTkZJR19TRVJJT19BTVNfREVMVEEpXHQmIzQzOz0gYW1zX2RlbHRhX3NlcmlvLm9cbi0tXG5kcml2ZXJzL21lZGlhL3JjL01ha2VmaWxlPTM9b2JqLXkgJiM0Mzs9IGtleW1hcHMvXG5kcml2ZXJzL21lZGlhL3JjL01ha2VmaWxlLTQtXG5kcml2ZXJzL21lZGlhL3JjL01ha2VmaWxlOjU6cmMtY29yZS15IDo9IHJjLW1haW4ubyByYy1pci1yYXcub1xuZHJpdmVycy9tZWRpYS9yYy9NYWtlZmlsZS02LXJjLWNvcmUtJChDT05GSUdfTElSQykgJiM0Mzs9IGxpcmNfZGV2Lm9cbi0tXG5kcml2ZXJzL21lZGlhL3JjL01ha2VmaWxlPTM2PW9iai0kKENPTkZJR19JUl9JTU9OKSAmIzQzOz0gaW1vbi5vXG5kcml2ZXJzL21lZGlhL3JjL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19JUl9JTU9OX1JBVykgJiM0Mzs9IGltb25fcmF3Lm9cbmRyaXZlcnMvbWVkaWEvcmMvTWFrZWZpbGUtMzgtb2JqLSQoQ09ORklHX0lSX0lURV9DSVIpICYjNDM7PSBpdGUtY2lyLm9cbi0tXG5kcml2ZXJzL21lZGlhL3JjL2ltZy1pci9NYWtlZmlsZT0yPWltZy1pci15XHRcdFx0Oj0gaW1nLWlyLWNvcmUub1xuZHJpdmVycy9tZWRpYS9yYy9pbWctaXIvTWFrZWZpbGU6MzppbWctaXItJChDT05GSUdfSVJfSU1HX1JBVylcdCYjNDM7PSBpbWctaXItcmF3Lm9cbmRyaXZlcnMvbWVkaWEvcmMvaW1nLWlyL01ha2VmaWxlLTQtaW1nLWlyLSQoQ09ORklHX0lSX0lNR19IVylcdCYjNDM7PSBpbWctaXItaHcub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2luaXRfb3BzLmg9MjI5PXN0YXRpYyB2b2lkIGJueDJ4X2luaXRfYmxvY2soc3RydWN0IGJueDJ4ICpicCwgdTMyIGJsb2NrLCB1MzIgc3RhZ2UpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaW5pdF9vcHMuaC0yNTAtXHRcdC8qIEdldCBnZW5lcmljIGRhdGEgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2luaXRfb3BzLmg6MjUxOlx0XHRvcF90eXBlID0gb3AtXHUwMDNlcmF3Lm9wO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaW5pdF9vcHMuaDoyNTI6XHRcdGFkZHIgPSBvcC1cdTAwM2VyYXcub2Zmc2V0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaW5pdF9vcHMuaC0yNTMtXHRcdC8qIEdldCBkYXRhIHRoYXQmIzM5O3MgdXNlZCBmb3IgT1BfU1csIE9QX1dCLCBPUF9GVywgT1BfWlAgYW5kXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfaW5pdF9vcHMuYz01NDg9aW50IHFlZF9pbml0X3J1bihzdHJ1Y3QgcWVkX2h3Zm4gKnBfaHdmbixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9pbml0X29wcy5jLTU2NS1cdFx0dW5pb24gaW5pdF9vcCAqY21kID0gXHUwMDI2aW5pdF9vcHNbY21kX251bV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9pbml0X29wcy5jOjU2NjpcdFx0dTMyIGRhdGEgPSBsZTMyX3RvX2NwdShjbWQtXHUwMDNlcmF3Lm9wX2RhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfaW5pdF9vcHMuYy01NjctXG4tLVxuZHJpdmVycy9uZXQvd2FuL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX0hETEMpXHRcdCYjNDM7PSBoZGxjLm9cbmRyaXZlcnMvbmV0L3dhbi9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfSERMQ19SQVcpXHRcdCYjNDM7PSBoZGxjX3Jhdy5vXG5kcml2ZXJzL25ldC93YW4vTWFrZWZpbGUtMTEtb2JqLSQoQ09ORklHX0hETENfUkFXX0VUSClcdCYjNDM7PSBoZGxjX3Jhd19ldGgub1xuLS1cbmRyaXZlcnMvc3RhZ2luZy9ncmV5YnVzL01ha2VmaWxlPTE0PWdiLXBvd2VyLXN1cHBseS15XHQ6PSBwb3dlcl9zdXBwbHkub1xuZHJpdmVycy9zdGFnaW5nL2dyZXlidXMvTWFrZWZpbGU6MTU6Z2ItcmF3LXlcdFx0Oj0gcmF3Lm9cbmRyaXZlcnMvc3RhZ2luZy9ncmV5YnVzL01ha2VmaWxlLTE2LWdiLXZpYnJhdG9yLXlcdFx0Oj0gdmlicmF0b3Iub1xuLS1cbmRyaXZlcnMvc3RhZ2luZy9ncmV5YnVzL01ha2VmaWxlPTI1PW9iai0kKENPTkZJR19HUkVZQlVTX1BPV0VSKVx0JiM0Mzs9IGdiLXBvd2VyLXN1cHBseS5vXG5kcml2ZXJzL3N0YWdpbmcvZ3JleWJ1cy9NYWtlZmlsZToyNjpvYmotJChDT05GSUdfR1JFWUJVU19SQVcpXHQmIzQzOz0gZ2ItcmF3Lm9cbmRyaXZlcnMvc3RhZ2luZy9ncmV5YnVzL01ha2VmaWxlLTI3LW9iai0kKENPTkZJR19HUkVZQlVTX1ZJQlJBVE9SKVx0JiM0Mzs9IGdiLXZpYnJhdG9yLm9cbi0tXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvaWFfY3NzX2lzcF9jb25maWdzLmM9MjIyPWludCBpYV9jc3NfY29uZmlndXJlX3Jhdyhjb25zdCBzdHJ1Y3QgaWFfY3NzX2JpbmFyeSAqYmluYXJ5LFxuLS1cbmRyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL3BjaS9pYV9jc3NfaXNwX2NvbmZpZ3MuYy0yMzYtXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvaWFfY3NzX2lzcF9jb25maWdzLmM6MjM3Olx0b2Zmc2V0ID0gYmluYXJ5LVx1MDAzZWluZm8tXHUwMDNlbWVtX29mZnNldHMub2Zmc2V0cy5jb25maWctXHUwMDNlZG1lbS5yYXcub2Zmc2V0O1xuZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3AvcGNpL2lhX2Nzc19pc3BfY29uZmlncy5jLTIzOC1cbi0tXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvcnVudGltZS9kZWJ1Zy9zcmMvaWFfY3NzX2RlYnVnLmM9NDQ3PXZvaWQgaWFfY3NzX2RlYnVnX2ZyYW1lX3ByaW50KGNvbnN0IHN0cnVjdCBpYV9jc3NfZnJhbWUgKmZyYW1lLFxuLS1cbmRyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL3BjaS9ydW50aW1lL2RlYnVnL3NyYy9pYV9jc3NfZGVidWcuYy00OTUtXHRcdGlhX2Nzc19kZWJ1Z19kdHJhY2UoMiwgXCYjMzQ7ICBSQVcgUEFDS0VEID0gJXBcXG5cJiMzNDssXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvcnVudGltZS9kZWJ1Zy9zcmMvaWFfY3NzX2RlYnVnLmM6NDk2Olx0XHRcdFx0ICAgIGRhdGEgJiM0MzsgZnJhbWUtXHUwMDNlcGxhbmVzLnJhdy5vZmZzZXQpO1xuZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3AvcGNpL3J1bnRpbWUvZGVidWcvc3JjL2lhX2Nzc19kZWJ1Zy5jLTQ5Ny1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3AvcGNpL3J1bnRpbWUvZGVidWcvc3JjL2lhX2Nzc19kZWJ1Zy5jLTQ5OS1cdFx0aWFfY3NzX2RlYnVnX2R0cmFjZSgyLCBcJiMzNDsgIFJBVyA9ICVwXFxuXCYjMzQ7LFxuZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3AvcGNpL3J1bnRpbWUvZGVidWcvc3JjL2lhX2Nzc19kZWJ1Zy5jOjUwMDpcdFx0XHRcdCAgICBkYXRhICYjNDM7IGZyYW1lLVx1MDAzZXBsYW5lcy5yYXcub2Zmc2V0KTtcbmRyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL3BjaS9ydW50aW1lL2RlYnVnL3NyYy9pYV9jc3NfZGVidWcuYy01MDEtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL3BjaS9zaF9jc3NfcGFyYW1zLmM9OTI0PXNoX2Nzc19zZXRfYmxhY2tfZnJhbWUoc3RydWN0IGlhX2Nzc19zdHJlYW0gKnN0cmVhbSxcbi0tXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvc2hfY3NzX3BhcmFtcy5jLTk0MS1cdHB0ciA9IHJhd19ibGFja19mcmFtZS1cdTAwM2VkYXRhXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvc2hfY3NzX3BhcmFtcy5jOjk0MjpcdCYjNDM7IHJhd19ibGFja19mcmFtZS1cdTAwM2VwbGFuZXMucmF3Lm9mZnNldDtcbmRyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL3BjaS9zaF9jc3NfcGFyYW1zLmMtOTQzLVxuLS1cbmRyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL3BjaS9zaF9jc3Nfc3AuYz00MjA9c2hfY3NzX2NvcHlfZnJhbWVfdG9fc3BmcmFtZShzdHJ1Y3QgaWFfY3NzX2ZyYW1lX3NwICpzcF9mcmFtZV9vdXQsXG4tLVxuZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3AvcGNpL3NoX2Nzc19zcC5jLTQzNy1cdGNhc2UgSUFfQ1NTX0ZSQU1FX0ZPUk1BVF9SQVc6XG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvc2hfY3NzX3NwLmM6NDM4Olx0XHRzcF9mcmFtZV9vdXQtXHUwMDNlcGxhbmVzLnJhdy5vZmZzZXQgPSBmcmFtZV9pbi1cdTAwM2VwbGFuZXMucmF3Lm9mZnNldDtcbmRyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL3BjaS9zaF9jc3Nfc3AuYy00MzktXHRcdGJyZWFrO1xuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9jeGxfbWVtLmg9MTY2PXN0cnVjdCBjeGxfbWVtX3F1ZXJ5X2NvbW1hbmRzIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvY3hsX21lbS5oLTE4Ni0gKiBAcmF3OiBTcGVjaWFsIGZpZWxkcyBmb3IgcmF3IGNvbW1hbmRzXG5pbmNsdWRlL3VhcGkvbGludXgvY3hsX21lbS5oOjE4NzogKiBAcmF3Lm9wY29kZTogT3Bjb2RlIHBhc3NlZCB0byBoYXJkd2FyZSB3aGVuIHVzaW5nIHRoZSBSQVcgY29tbWFuZC5cbmluY2x1ZGUvdWFwaS9saW51eC9jeGxfbWVtLmgtMTg4LSAqIEByYXcucnN2ZDogTXVzdCBiZSB6ZXJvLlxuLS1cbm5ldC9hdG0vTWFrZWZpbGUtNS1cbm5ldC9hdG0vTWFrZWZpbGU6NjphdG0teVx0XHQ6PSBwdmMubyBpb2N0bC5vIGNvbW1vbi5vIGF0bV9taXNjLm8gcmF3Lm8gcmVzb3VyY2VzLm8gYXRtX3N5c2ZzLm9cbm5ldC9hdG0vTWFrZWZpbGUtNy1cbi0tXG5uZXQvY2FuL01ha2VmaWxlPTg9Y2FuLSQoQ09ORklHX1BST0NfRlMpXHQmIzQzOz0gcHJvYy5vXG5uZXQvY2FuL01ha2VmaWxlLTktXG5uZXQvY2FuL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19DQU5fUkFXKVx0JiM0Mzs9IGNhbi1yYXcub1xubmV0L2Nhbi9NYWtlZmlsZToxMTpjYW4tcmF3LXlcdFx0Oj0gcmF3Lm9cbm5ldC9jYW4vTWFrZWZpbGUtMTItXG4tLVxubmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcbi0tXG5uZXQvaXB2NC9NYWtlZmlsZS0xMi1cdCAgICAgdGNwX3JlY292ZXJ5Lm8gdGNwX3VscC5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZToxMzpcdCAgICAgdGNwX29mZmxvYWQubyB0Y3BfcGxiLm8gZGF0YWdyYW0ubyByYXcubyB1ZHAubyBcXFxubmV0L2lwdjQvTWFrZWZpbGUtMTQtXHQgICAgIHVkcF9vZmZsb2FkLm8gYXJwLm8gaWNtcC5vIGRldmluZXQubyBhZl9pbmV0Lm8gaWdtcC5vIFxcXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlPTMzPW9iai0kKENPTkZJR19JUF9ORl9OQVQpICYjNDM7PSBpcHRhYmxlX25hdC5vXG5uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX0lQX05GX1JBVykgJiM0Mzs9IGlwdGFibGVfcmF3Lm9cbm5ldC9pcHY0L25ldGZpbHRlci9NYWtlZmlsZS0zNS1vYmotJChDT05GSUdfSVBfTkZfU0VDVVJJVFkpICYjNDM7PSBpcHRhYmxlX3NlY3VyaXR5Lm9cbi0tXG5uZXQvaXB2Ni9NYWtlZmlsZT04PWlwdjYteSA6PVx0YWZfaW5ldDYubyBhbnljYXN0Lm8gaXA2X291dHB1dC5vIGlwNl9pbnB1dC5vIGFkZHJjb25mLm8gXFxcbi0tXG5uZXQvaXB2Ni9NYWtlZmlsZS0xMC1cdFx0cm91dGUubyBpcDZfZmliLm8gaXB2Nl9zb2NrZ2x1ZS5vIG5kaXNjLm8gdWRwLm8gXFxcbm5ldC9pcHY2L01ha2VmaWxlOjExOlx0XHRyYXcubyBpY21wLm8gbWNhc3QubyByZWFzc2VtYmx5Lm8gdGNwX2lwdjYubyBwaW5nLm8gXFxcbm5ldC9pcHY2L01ha2VmaWxlLTEyLVx0XHRleHRoZHJzLm8gZGF0YWdyYW0ubyBpcDZfZmxvd2xhYmVsLm8gaW5ldDZfY29ubmVjdGlvbl9zb2NrLm8gXFxcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfSVA2X05GX01BTkdMRSkgJiM0Mzs9IGlwNnRhYmxlX21hbmdsZS5vXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0lQNl9ORl9SQVcpICYjNDM7PSBpcDZ0YWJsZV9yYXcub1xubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlLTExLW9iai0kKENPTkZJR19JUDZfTkZfU0VDVVJJVFkpICYjNDM7PSBpcDZ0YWJsZV9zZWN1cml0eS5vXG4tLVxudG9vbHMvcGVyZi91dGlsL0J1aWxkPTc1PXBlcmYtdXRpbC15ICYjNDM7PSBzYW1wbGUub1xudG9vbHMvcGVyZi91dGlsL0J1aWxkOjc2OnBlcmYtdXRpbC15ICYjNDM7PSBzYW1wbGUtcmF3Lm9cbnRvb2xzL3BlcmYvdXRpbC9CdWlsZDo3NzpwZXJmLXV0aWwteSAmIzQzOz0gczM5MC1zYW1wbGUtcmF3Lm9cbnRvb2xzL3BlcmYvdXRpbC9CdWlsZDo3ODpwZXJmLXV0aWwteSAmIzQzOz0gYW1kLXNhbXBsZS1yYXcub1xudG9vbHMvcGVyZi91dGlsL0J1aWxkLTc5LVxuLS1cbnRvb2xzL3BlcmYvdXRpbC9pbnRlbC1wdC5jPTIwMjQ9c3RhdGljIGludCBpbnRlbF9wdF9zeW50aF9wc2Jfc2FtcGxlKHN0cnVjdCBpbnRlbF9wdF9xdWV1ZSAqcHRxKVxuLS1cbnRvb2xzL3BlcmYvdXRpbC9pbnRlbC1wdC5jLTIwNDItXHRyYXcucmVzZXJ2ZWQgPSAwO1xudG9vbHMvcGVyZi91dGlsL2ludGVsLXB0LmM6MjA0MzpcdHJhdy5vZmZzZXQgPSBwdHEtXHUwMDNlc3RhdGUtXHUwMDNlcHNiX29mZnNldDtcbnRvb2xzL3BlcmYvdXRpbC9pbnRlbC1wdC5jLTIwNDQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1Njc3CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgS2VybmVsJiMzOTtzIElQIFR1bm5lbGluZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyBJUCB0dW5uZWxpbmcgaXMgc2V0IHVwIGluIHRoZSBrZXJuZWwuIEl0IGxvb2tzIGxpa2UgYG5ldC9pcHY0L3Jhdy5vYCBhbmQgYG5ldC9pcHY2L3Jhdy5vYCBhcmUgY29tcGlsZWQgaW4gYnkgZGVmYXVsdDsgdGhleSYjMzk7cmUgcGFydCBvZiB0aGUgc3RhbmRhcmQgYG9iai15YCBhbmQgYGlwdjYteWAgY29uZmlndXJhdGlvbnMuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LCBidXQgbm90IHRoZSBjb3JlIG9mIHdoYXQgSSYjMzk7bSBhZnRlci4gTXkgbWFpbiBmb2N1cyBpcyBgQ09ORklHX05FVF9JUF9UVU5ORUxgLCBvYnZpb3VzbHkuCgpIbW0sIHdhaXQgYSBzZWNvbmQuLi4gdGhpcyBgaXBfdHVubmVsX25ld2xpbmtgIGZ1bmN0aW9uLi4uIHRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIEl0JiMzOTtzIGNhbGxlZCBieSBtb3JlIHRoYW4ganVzdCB0aGUgYmFzZSB0dW5uZWxpbmcgZnVuY3Rpb25hbGl0eS4gSXQmIzM5O3MgYWxzbyB1dGlsaXplZCBieSBzcGVjaWZpYyB0dW5uZWwgdHlwZXMsIGxpa2UgYGlwZ3JlX25ld2xpbmtgLCBgZXJzcGFuX25ld2xpbmtgLCBgdnRpX25ld2xpbmtgLCBhbmQgYGlwaXBfbmV3bGlua2AuIFRoYXQgZXhwYW5kcyB0aGUgc2NvcGUgb2Ygd2hhdCBJIG5lZWQgdG8gY29uc2lkZXIuIEkgc2hvdWxkIHZlcmlmeSB0aGUgYnVpbGQgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBpbmRpdmlkdWFsIHR1bm5lbCB0eXBlcy4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIGBuZXQvaXB2NC9NYWtlZmlsZWAgc3BlY2lmaWNhbGx5IHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBpcF9ncmUub2AsIGBpcF92dGkub2AsIGFuZCBgaXBpcC5vYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDA6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfZ3JlXFwubyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT0yOT1vYmotJChDT05GSUdfTkVUX0lQR1JFX0RFTVVYKSAmIzQzOz0gZ3JlLm9cbm5ldC9pcHY0L01ha2VmaWxlOjMwOm9iai0kKENPTkZJR19ORVRfSVBHUkUpICYjNDM7PSBpcF9ncmUub1xubmV0L2lwdjQvTWFrZWZpbGUtMzEtdWRwX3R1bm5lbC15IDo9IHVkcF90dW5uZWxfY29yZS5vIHVkcF90dW5uZWxfbmljLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDA6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYxODkKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIGluc3RydWN0aW9ucywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIEtlcm5lbCBNb2R1bGVzIGZvciBQb3RlbnRpYWwgSW50ZXJhY3Rpb25zKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gdGFraW5nIGEgbG9vayBhdCBgaXBpcC5vYCBhbmQgYGlwX3Z0aS5vYC4gTXkgaW5pdGlhbCBoeXBvdGhlc2lzLCBnaXZlbiB0aGVpciBuYW1lcywgaXMgdGhhdCB0aGVzZSBsaWtlbHkgZGVhbCB3aXRoIElQLWluLUlQIHR1bm5lbGluZyBhbmQgVmlydHVhbCBUdW5uZWwgSW50ZXJmYWNlcywgcmVzcGVjdGl2ZWx5LiBNeSBtYWluIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgbW9kdWxlcyBpbnRlcmFjdCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBvciBpbnRlcmVzdGluZyBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3Mgd2hlbiBib3RoIGFyZSBsb2FkZWQgYW5kIGNvbmZpZ3VyZWQuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbiBjYWxscyB0aGV5IHNoYXJlLCBpZiBhbnkuIFBlcmhhcHMgdGhlcmUmIzM5O3Mgc29tZSBzaGFyZWQgY29uZmlndXJhdGlvbiBzcGFjZSBvciBsb2NraW5nIG1lY2hhbmlzbS4gVGhlIGdvYWwgaXMgdG8gaWRlbnRpZnkgcG9pbnRzIG9mIGludGVyZXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcGlwXFwubyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9NYWtlZmlsZT0xMz1tbHhzd19zcGVjdHJ1bS1vYmpzXHRcdDo9IHNwZWN0cnVtLm8gc3BlY3RydW1fYnVmZmVycy5vIFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvTWFrZWZpbGUtMjItXHRcdFx0XHQgICBzcGVjdHJ1bV9mbG93ZXIubyBzcGVjdHJ1bV9jbnQubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvTWFrZWZpbGU6MjM6XHRcdFx0XHQgICBzcGVjdHJ1bV9maWQubyBzcGVjdHJ1bV9pcGlwLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L01ha2VmaWxlLTI0LVx0XHRcdFx0ICAgc3BlY3RydW1fYWNsX2ZsZXhfYWN0aW9ucy5vIFxcXG4tLVxubmV0L2lwdjQvTWFrZWZpbGU9MjQ9b2JqLSQoQ09ORklHX0lQX01ST1VURV9DT01NT04pICYjNDM7PSBpcG1yX2Jhc2Uub1xubmV0L2lwdjQvTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX05FVF9JUElQKSAmIzQzOz0gaXBpcC5vXG5uZXQvaXB2NC9NYWtlZmlsZS0yNi1ncmUteSA6PSBncmVfZGVtdXgub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjYxMQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3Z0aVxcLm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9MzI9b2JqLSQoQ09ORklHX05FVF9VRFBfVFVOTkVMKSAmIzQzOz0gdWRwX3R1bm5lbC5vXG5uZXQvaXB2NC9NYWtlZmlsZTozMzpvYmotJChDT05GSUdfTkVUX0lQVlRJKSAmIzQzOz0gaXBfdnRpLm9cbm5ldC9pcHY0L01ha2VmaWxlLTM0LW9iai0kKENPTkZJR19TWU5fQ09PS0lFUykgJiM0Mzs9IHN5bmNvb2tpZXMub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjcyNwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDI3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLZXJuZWwgQ29uZmlndXJhdGlvbiBhbmQgU3ltYm9sIEFuYWx5c2lzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBrZXJuZWwgY29uZmlndXJhdGlvbnMg4oCTIGBDT05GSUdfTkVUX0lQR1JFYCwgYENPTkZJR19ORVRfSVBJUGAsIGFuZCBgQ09ORklHX05FVF9JUFZUSWAg4oCTIHRoZXkgc2VlbSBsaWtlIGdvb2QgY2hvaWNlcyB0byBlbmFibGUuIEFuZCBJJiMzOTttIHByZXR0eSBzdXJlIGBDT05GSUdfTkVUX0lQX1RVTk5FTGAgaXMgc2VsZWN0ZWQgYXV0b21hdGljYWxseSB3aXRoIHRob3NlLCBidXQgbGV0JiMzOTtzIGluY2x1ZGUgaXQgYW55d2F5LCBqdXN0IHRvIGJlIGV4cGxpY2l0LiBOb3csIGFib3V0IElQdjYgdHVubmVscy4uLiB0aGUgcGF0Y2ggaXMgb25seSB0b3VjaGluZyBgbmV0L2lwdjQvaXBfdHVubmVsLmNgLCBgbmV0L2lwdjQvaXBfZ3JlLmNgLCBgbmV0L2lwdjQvaXBfdnRpLmNgLCBhbmQgYG5ldC9pcHY0L2lwaXAuY2AsIHNvIGluaXRpYWxseSBJIHdhcyB0aGlua2luZyBJUHY2IGlzbiYjMzk7dCBhIGZhY3Rvci4gQnV0IGhvbGQgb24sIHRoZSBwYXRjaCBhbHNvIG1vZGlmaWVzIGBuZXQvaXB2Ni9yYXcuY2AuIFRoYXQgbWVhbnMgYENPTkZJR19JUFY2YCAqaGFzKiB0byBiZSBlbmFibGVkLgoKUmlnaHQsIGJhY2sgdG8gdGhlIGNvZGUuIEkgbmVlZCB0byByZXZpc2l0IGByYXdfc2VuZG1zZ2AgYW5kIGByYXd2Nl9zZW5kbXNnYC4gQ291bGQgdGhvc2UgYmUgdXNlZnVsIGFzIEZvY3VzU3ltYm9scz8gWWVhaCwgZXZlbiB0aG91Z2ggdGhleSYjMzk7cmUgZGVjbGFyZWQgYHN0YXRpY2AsIHRoZXkmIzM5O3JlIGFzc2lnbmVkIHRvIGBwcm90by5zZW5kbXNnYCwgc28gdGhleSYjMzk7cmUgdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzIGZvciByYXcgc29ja2V0IHNlbmRpbmcuIEJ1dCB0aGF0IGBzdGF0aWNgIGRlY2xhcmF0aW9uIGlzIGNvbmNlcm5pbmcuIEl0IG1lYW5zIHRoZXkgbWlnaHQgbm90IGJlIGV4cG9ydGVkIGFuZCB0aHVzIGludmlzaWJsZS4gSG1tLCBJIG5lZWQgYSBub24tc3RhdGljIGZ1bmN0aW9uIGluIGBuZXQvaXB2NC9yYXcuY2AgdGhhdCBJICpjYW4qIHVzZS4gT2theSwgdGltZSB0byBkaXZlIGludG8gYG5ldC9pcHY0L3Jhdy5jYCBhbmQgaHVudCBmb3Igc29tZXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKGludHx2b2lkKSByYXdfJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva2VybmVsL3BjaS5jLTEzLSAqL1xuYXJjaC9hcm02NC9rZXJuZWwvcGNpLmM6MTQ6aW50IHJhd19wY2lfcmVhZCh1bnNpZ25lZCBpbnQgZG9tYWluLCB1bnNpZ25lZCBpbnQgYnVzLFxuYXJjaC9hcm02NC9rZXJuZWwvcGNpLmMtMTUtXHRcdCAgdW5zaWduZWQgaW50IGRldmZuLCBpbnQgcmVnLCBpbnQgbGVuLCB1MzIgKnZhbClcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9wY2kuYy0yMy1cbmFyY2gvYXJtNjQva2VybmVsL3BjaS5jOjI0OmludCByYXdfcGNpX3dyaXRlKHVuc2lnbmVkIGludCBkb21haW4sIHVuc2lnbmVkIGludCBidXMsXG5hcmNoL2FybTY0L2tlcm5lbC9wY2kuYy0yNS1cdFx0dW5zaWduZWQgaW50IGRldmZuLCBpbnQgcmVnLCBpbnQgbGVuLCB1MzIgdmFsKVxuLS1cbmFyY2gvbG9vbmdhcmNoL3BjaS9wY2kuYy0yMy1cbmFyY2gvbG9vbmdhcmNoL3BjaS9wY2kuYzoyNDppbnQgcmF3X3BjaV9yZWFkKHVuc2lnbmVkIGludCBkb21haW4sIHVuc2lnbmVkIGludCBidXMsIHVuc2lnbmVkIGludCBkZXZmbixcbmFyY2gvbG9vbmdhcmNoL3BjaS9wY2kuYy0yNS1cdFx0XHRcdFx0XHRpbnQgcmVnLCBpbnQgbGVuLCB1MzIgKnZhbClcbi0tXG5hcmNoL2xvb25nYXJjaC9wY2kvcGNpLmMtMzMtXG5hcmNoL2xvb25nYXJjaC9wY2kvcGNpLmM6MzQ6aW50IHJhd19wY2lfd3JpdGUodW5zaWduZWQgaW50IGRvbWFpbiwgdW5zaWduZWQgaW50IGJ1cywgdW5zaWduZWQgaW50IGRldmZuLFxuYXJjaC9sb29uZ2FyY2gvcGNpL3BjaS5jLTM1LVx0XHRcdFx0XHRcdGludCByZWcsIGludCBsZW4sIHUzMiB2YWwpXG4tLVxuYXJjaC9taXBzL2tlcm5lbC90cmFwcy5jPTEyMT1zdGF0aWMgdm9pZCBzaG93X3Jhd19iYWNrdHJhY2UodW5zaWduZWQgbG9uZyByZWcyOSwgY29uc3QgY2hhciAqbG9nbHZsLFxuLS1cbmFyY2gvbWlwcy9rZXJuZWwvdHJhcHMuYy0xNDItI2lmZGVmIENPTkZJR19LQUxMU1lNU1xuYXJjaC9taXBzL2tlcm5lbC90cmFwcy5jOjE0MzppbnQgcmF3X3Nob3dfdHJhY2U7XG5hcmNoL21pcHMva2VybmVsL3RyYXBzLmMtMTQ0LXN0YXRpYyBpbnQgX19pbml0IHNldF9yYXdfc2hvd190cmFjZShjaGFyICpzdHIpXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3RleHQtcGF0Y2hpbmcuaD03NT1pbnQgcGF0Y2hfaW5zdHJ1Y3Rpb24odTMyICphZGRyLCBwcGNfaW5zdF90IGluc3RyKTtcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS90ZXh0LXBhdGNoaW5nLmg6NzY6aW50IHJhd19wYXRjaF9pbnN0cnVjdGlvbih1MzIgKmFkZHIsIHBwY19pbnN0X3QgaW5zdHIpO1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3RleHQtcGF0Y2hpbmcuaC03Ny1pbnQgcGF0Y2hfaW5zdHJ1Y3Rpb25zKHUzMiAqYWRkciwgdTMyICpjb2RlLCBzaXplX3QgbGVuLCBib29sIHJlcGVhdF9pbnN0cik7XG4tLVxuYXJjaC9wb3dlcnBjL2xpYi9jb2RlLXBhdGNoaW5nLmM9MjM9c3RhdGljIGludCBfX3BhdGNoX21lbSh2b2lkICpleGVjX2FkZHIsIHVuc2lnbmVkIGxvbmcgdmFsLCB2b2lkICpwYXRjaF9hZGRyLCBib29sIGlzX2R3b3JkKVxuLS1cbmFyY2gvcG93ZXJwYy9saWIvY29kZS1wYXRjaGluZy5jLTQzLVxuYXJjaC9wb3dlcnBjL2xpYi9jb2RlLXBhdGNoaW5nLmM6NDQ6aW50IHJhd19wYXRjaF9pbnN0cnVjdGlvbih1MzIgKmFkZHIsIHBwY19pbnN0X3QgaW5zdHIpXG5hcmNoL3Bvd2VycGMvbGliL2NvZGUtcGF0Y2hpbmcuYy00NS17XG4tLVxuYXJjaC9yaXNjdi9rZXJuZWwvYWNwaS5jPTIyNz12b2lkIF9faW9tZW0gKmFjcGlfb3NfaW9yZW1hcChhY3BpX3BoeXNpY2FsX2FkZHJlc3MgcGh5cywgYWNwaV9zaXplIHNpemUpXG4tLVxuYXJjaC9yaXNjdi9rZXJuZWwvYWNwaS5jLTMxOC0gKi9cbmFyY2gvcmlzY3Yva2VybmVsL2FjcGkuYzozMTk6aW50IHJhd19wY2lfcmVhZCh1bnNpZ25lZCBpbnQgZG9tYWluLCB1bnNpZ25lZCBpbnQgYnVzLFxuYXJjaC9yaXNjdi9rZXJuZWwvYWNwaS5jLTMyMC1cdFx0IHVuc2lnbmVkIGludCBkZXZmbiwgaW50IHJlZywgaW50IGxlbiwgdTMyICp2YWwpXG4tLVxuYXJjaC9yaXNjdi9rZXJuZWwvYWNwaS5jLTMyOC1cbmFyY2gvcmlzY3Yva2VybmVsL2FjcGkuYzozMjk6aW50IHJhd19wY2lfd3JpdGUodW5zaWduZWQgaW50IGRvbWFpbiwgdW5zaWduZWQgaW50IGJ1cyxcbmFyY2gvcmlzY3Yva2VybmVsL2FjcGkuYy0zMzAtXHRcdCAgdW5zaWduZWQgaW50IGRldmZuLCBpbnQgcmVnLCBpbnQgbGVuLCB1MzIgdmFsKVxuLS1cbmFyY2gveDg2L3BjaS9jb21tb24uYz0zOD1jb25zdCBzdHJ1Y3QgcGNpX3Jhd19vcHMgKl9fcmVhZF9tb3N0bHkgcmF3X3BjaV9leHRfb3BzO1xuYXJjaC94ODYvcGNpL2NvbW1vbi5jLTM5LVxuYXJjaC94ODYvcGNpL2NvbW1vbi5jOjQwOmludCByYXdfcGNpX3JlYWQodW5zaWduZWQgaW50IGRvbWFpbiwgdW5zaWduZWQgaW50IGJ1cywgdW5zaWduZWQgaW50IGRldmZuLFxuYXJjaC94ODYvcGNpL2NvbW1vbi5jLTQxLVx0XHRcdFx0XHRcdGludCByZWcsIGludCBsZW4sIHUzMiAqdmFsKVxuLS1cbmFyY2gveDg2L3BjaS9jb21tb24uYy00OS1cbmFyY2gveDg2L3BjaS9jb21tb24uYzo1MDppbnQgcmF3X3BjaV93cml0ZSh1bnNpZ25lZCBpbnQgZG9tYWluLCB1bnNpZ25lZCBpbnQgYnVzLCB1bnNpZ25lZCBpbnQgZGV2Zm4sXG5hcmNoL3g4Ni9wY2kvY29tbW9uLmMtNTEtXHRcdFx0XHRcdFx0aW50IHJlZywgaW50IGxlbiwgdTMyIHZhbClcbi0tXG5pbmNsdWRlL2xpbnV4L2lycS1lbnRyeS1jb21tb24uaD0zMzY9dHlwZWRlZiBzdHJ1Y3QgaXJxZW50cnlfc3RhdGUge1xuLS1cbmluY2x1ZGUvbGludXgvaXJxLWVudHJ5LWNvbW1vbi5oLTM0OC0gKi9cbmluY2x1ZGUvbGludXgvaXJxLWVudHJ5LWNvbW1vbi5oOjM0OTp2b2lkIHJhd19pcnFlbnRyeV9leGl0X2NvbmRfcmVzY2hlZCh2b2lkKTtcbmluY2x1ZGUvbGludXgvaXJxLWVudHJ5LWNvbW1vbi5oLTM1MC1cbi0tXG5pbmNsdWRlL2xpbnV4L3BjaS5oPTg3Mj1zdHJ1Y3QgcGNpX29wcyB7XG4tLVxuaW5jbHVkZS9saW51eC9wY2kuaC04ODMtICovXG5pbmNsdWRlL2xpbnV4L3BjaS5oOjg4NDppbnQgcmF3X3BjaV9yZWFkKHVuc2lnbmVkIGludCBkb21haW4sIHVuc2lnbmVkIGludCBidXMsIHVuc2lnbmVkIGludCBkZXZmbixcbmluY2x1ZGUvbGludXgvcGNpLmgtODg1LVx0XHQgaW50IHJlZywgaW50IGxlbiwgdTMyICp2YWwpO1xuaW5jbHVkZS9saW51eC9wY2kuaDo4ODY6aW50IHJhd19wY2lfd3JpdGUodW5zaWduZWQgaW50IGRvbWFpbiwgdW5zaWduZWQgaW50IGJ1cywgdW5zaWduZWQgaW50IGRldmZuLFxuaW5jbHVkZS9saW51eC9wY2kuaC04ODctXHRcdCAgaW50IHJlZywgaW50IGxlbiwgdTMyIHZhbCk7XG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC93YWtlX3EuaD02Nz1zdGF0aWMgaW5saW5lXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3dha2VfcS5oOjY4OnZvaWQgcmF3X3NwaW5fdW5sb2NrX3dha2UocmF3X3NwaW5sb2NrX3QgKmxvY2ssIHN0cnVjdCB3YWtlX3FfaGVhZCAqd2FrZV9xKVxuaW5jbHVkZS9saW51eC9zY2hlZC93YWtlX3EuaC02OS1cdF9fcmVsZWFzZXMobG9jaylcbi0tXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3dha2VfcS5oPTc5PXN0YXRpYyBpbmxpbmVcbmluY2x1ZGUvbGludXgvc2NoZWQvd2FrZV9xLmg6ODA6dm9pZCByYXdfc3Bpbl91bmxvY2tfaXJxX3dha2UocmF3X3NwaW5sb2NrX3QgKmxvY2ssIHN0cnVjdCB3YWtlX3FfaGVhZCAqd2FrZV9xKVxuaW5jbHVkZS9saW51eC9zY2hlZC93YWtlX3EuaC04MS1cdF9fcmVsZWFzZXMobG9jaylcbi0tXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3dha2VfcS5oPTkxPXN0YXRpYyBpbmxpbmVcbmluY2x1ZGUvbGludXgvc2NoZWQvd2FrZV9xLmg6OTI6dm9pZCByYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZV93YWtlKHJhd19zcGlubG9ja190ICpsb2NrLCB1bnNpZ25lZCBsb25nIGZsYWdzLFxuaW5jbHVkZS9saW51eC9zY2hlZC93YWtlX3EuaC05My1cdFx0XHRcdCAgICAgc3RydWN0IHdha2VfcV9oZWFkICp3YWtlX3EpXG4tLVxuaW5jbHVkZS9uZXQvcmF3Lmg9MjU9Ym9vbCByYXdfdjRfbWF0Y2goc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIHNob3J0IG51bSxcbi0tXG5pbmNsdWRlL25ldC9yYXcuaC0yNy1cbmluY2x1ZGUvbmV0L3Jhdy5oOjI4OmludCByYXdfYWJvcnQoc3RydWN0IHNvY2sgKnNrLCBpbnQgZXJyKTtcbmluY2x1ZGUvbmV0L3Jhdy5oOjI5OnZvaWQgcmF3X2ljbXBfZXJyb3Ioc3RydWN0IHNrX2J1ZmYgKiwgaW50LCB1MzIpO1xuaW5jbHVkZS9uZXQvcmF3Lmg6MzA6aW50IHJhd19sb2NhbF9kZWxpdmVyKHN0cnVjdCBza19idWZmICosIGludCk7XG5pbmNsdWRlL25ldC9yYXcuaC0zMS1cbmluY2x1ZGUvbmV0L3Jhdy5oOjMyOmludCByYXdfcmN2KHN0cnVjdCBzb2NrICosIHN0cnVjdCBza19idWZmICopO1xuaW5jbHVkZS9uZXQvcmF3LmgtMzMtXG4tLVxuaW5jbHVkZS9uZXQvcmF3Lmg9NDg9c3RhdGljIGlubGluZSB2b2lkIHJhd19oYXNoaW5mb19pbml0KHN0cnVjdCByYXdfaGFzaGluZm8gKmhhc2hpbmZvKVxuLS1cbmluY2x1ZGUvbmV0L3Jhdy5oLTU3LSNpZmRlZiBDT05GSUdfUFJPQ19GU1xuaW5jbHVkZS9uZXQvcmF3Lmg6NTg6aW50IHJhd19wcm9jX2luaXQodm9pZCk7XG5pbmNsdWRlL25ldC9yYXcuaDo1OTp2b2lkIHJhd19wcm9jX2V4aXQodm9pZCk7XG5pbmNsdWRlL25ldC9yYXcuaC02MC1cbi0tXG5pbmNsdWRlL25ldC9yYXcuaD03MT12b2lkICpyYXdfc2VxX25leHQoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYsIGxvZmZfdCAqcG9zKTtcbmluY2x1ZGUvbmV0L3Jhdy5oOjcyOnZvaWQgcmF3X3NlcV9zdG9wKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KTtcbmluY2x1ZGUvbmV0L3Jhdy5oLTczLSNlbmRpZlxuaW5jbHVkZS9uZXQvcmF3LmgtNzQtXG5pbmNsdWRlL25ldC9yYXcuaDo3NTppbnQgcmF3X2hhc2hfc2soc3RydWN0IHNvY2sgKnNrKTtcbmluY2x1ZGUvbmV0L3Jhdy5oOjc2OnZvaWQgcmF3X3VuaGFzaF9zayhzdHJ1Y3Qgc29jayAqc2spO1xuaW5jbHVkZS9uZXQvcmF3Lmg6Nzc6dm9pZCByYXdfaW5pdCh2b2lkKTtcbmluY2x1ZGUvbmV0L3Jhdy5oLTc4LVxuLS1cbmluY2x1ZGUvbmV0L3Jhd3Y2Lmg9OT1ib29sIHJhd192Nl9tYXRjaChzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgc2hvcnQgbnVtLFxuLS1cbmluY2x1ZGUvbmV0L3Jhd3Y2LmgtMTItXG5pbmNsdWRlL25ldC9yYXd2Ni5oOjEzOmludCByYXdfYWJvcnQoc3RydWN0IHNvY2sgKnNrLCBpbnQgZXJyKTtcbmluY2x1ZGUvbmV0L3Jhd3Y2LmgtMTQtXG4tLVxua2VybmVsL2VudHJ5L2NvbW1vbi5jPTEzND1zdGF0aWMgaW5saW5lIGJvb2wgYXJjaF9pcnFlbnRyeV9leGl0X25lZWRfcmVzY2hlZCh2b2lkKSB7IHJldHVybiB0cnVlOyB9XG4tLVxua2VybmVsL2VudHJ5L2NvbW1vbi5jLTEzNi1cbmtlcm5lbC9lbnRyeS9jb21tb24uYzoxMzc6dm9pZCByYXdfaXJxZW50cnlfZXhpdF9jb25kX3Jlc2NoZWQodm9pZClcbmtlcm5lbC9lbnRyeS9jb21tb24uYy0xMzgte1xuLS1cbmtlcm5lbC9ub3RpZmllci5jPTM4NT1FWFBPUlRfU1lNQk9MX0dQTChibG9ja2luZ19ub3RpZmllcl9jYWxsX2NoYWluKTtcbi0tXG5rZXJuZWwvbm90aWZpZXIuYy00MDEtICovXG5rZXJuZWwvbm90aWZpZXIuYzo0MDI6aW50IHJhd19ub3RpZmllcl9jaGFpbl9yZWdpc3RlcihzdHJ1Y3QgcmF3X25vdGlmaWVyX2hlYWQgKm5oLFxua2VybmVsL25vdGlmaWVyLmMtNDAzLVx0XHRzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm4pXG4tLVxua2VybmVsL25vdGlmaWVyLmM9NDA3PUVYUE9SVF9TWU1CT0xfR1BMKHJhd19ub3RpZmllcl9jaGFpbl9yZWdpc3Rlcik7XG4tLVxua2VybmVsL25vdGlmaWVyLmMtNDE4LSAqL1xua2VybmVsL25vdGlmaWVyLmM6NDE5OmludCByYXdfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihzdHJ1Y3QgcmF3X25vdGlmaWVyX2hlYWQgKm5oLFxua2VybmVsL25vdGlmaWVyLmMtNDIwLVx0XHRzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm4pXG4tLVxua2VybmVsL25vdGlmaWVyLmM9NDI0PUVYUE9SVF9TWU1CT0xfR1BMKHJhd19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKTtcbmtlcm5lbC9ub3RpZmllci5jLTQyNS1cbmtlcm5lbC9ub3RpZmllci5jOjQyNjppbnQgcmF3X25vdGlmaWVyX2NhbGxfY2hhaW5fcm9idXN0KHN0cnVjdCByYXdfbm90aWZpZXJfaGVhZCAqbmgsXG5rZXJuZWwvbm90aWZpZXIuYy00MjctXHRcdHVuc2lnbmVkIGxvbmcgdmFsX3VwLCB1bnNpZ25lZCBsb25nIHZhbF9kb3duLCB2b2lkICp2KVxuLS1cbmtlcm5lbC9ub3RpZmllci5jPTQzMT1FWFBPUlRfU1lNQk9MX0dQTChyYXdfbm90aWZpZXJfY2FsbF9jaGFpbl9yb2J1c3QpO1xuLS1cbmtlcm5lbC9ub3RpZmllci5jLTQ0OS0gKi9cbmtlcm5lbC9ub3RpZmllci5jOjQ1MDppbnQgcmF3X25vdGlmaWVyX2NhbGxfY2hhaW4oc3RydWN0IHJhd19ub3RpZmllcl9oZWFkICpuaCxcbmtlcm5lbC9ub3RpZmllci5jLTQ1MS1cdFx0dW5zaWduZWQgbG9uZyB2YWwsIHZvaWQgKnYpXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYz01NTE9aW50IHRhc2tfbGxjKGNvbnN0IHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbi0tXG5rZXJuZWwvc2NoZWQvY29yZS5jLTY1OC1cbmtlcm5lbC9zY2hlZC9jb3JlLmM6NjU5OnZvaWQgcmF3X3NwaW5fcnFfbG9ja19uZXN0ZWQoc3RydWN0IHJxICpycSwgaW50IHN1YmNsYXNzKVxua2VybmVsL3NjaGVkL2NvcmUuYy02NjAtXHRfX2NvbnRleHRfdW5zYWZlKClcbi0tXG5uZXQvaXB2NC9yYXcuYz05MD1FWFBPUlRfU1lNQk9MX0dQTChyYXdfdjRfaGFzaGluZm8pO1xubmV0L2lwdjQvcmF3LmMtOTEtXG5uZXQvaXB2NC9yYXcuYzo5MjppbnQgcmF3X2hhc2hfc2soc3RydWN0IHNvY2sgKnNrKVxubmV0L2lwdjQvcmF3LmMtOTMte1xuLS1cbm5ldC9pcHY0L3Jhdy5jLTEwNy1cbm5ldC9pcHY0L3Jhdy5jOjEwODp2b2lkIHJhd191bmhhc2hfc2soc3RydWN0IHNvY2sgKnNrKVxubmV0L2lwdjQvcmF3LmMtMTA5LXtcbi0tXG5uZXQvaXB2NC9yYXcuYz0xNzA9c3RhdGljIGludCByYXdfdjRfaW5wdXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY0L3Jhdy5jLTIwNi1cbm5ldC9pcHY0L3Jhdy5jOjIwNzppbnQgcmF3X2xvY2FsX2RlbGl2ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHByb3RvY29sKVxubmV0L2lwdjQvcmF3LmMtMjA4LXtcbi0tXG5uZXQvaXB2NC9yYXcuYz0yMTU9c3RhdGljIHZvaWQgcmF3X2VycihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsIHUzMiBpbmZvKVxuLS1cbm5ldC9pcHY0L3Jhdy5jLTI3OC1cbm5ldC9pcHY0L3Jhdy5jOjI3OTp2b2lkIHJhd19pY21wX2Vycm9yKHN0cnVjdCBza19idWZmICpza2IsIGludCBwcm90b2NvbCwgdTMyIGluZm8pXG5uZXQvaXB2NC9yYXcuYy0yODAte1xuLS1cbm5ldC9pcHY0L3Jhdy5jPTMwMz1zdGF0aWMgaW50IHJhd19yY3Zfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC9yYXcuYy0zMTgtXG5uZXQvaXB2NC9yYXcuYzozMTk6aW50IHJhd19yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L2lwdjQvcmF3LmMtMzIwLXtcbi0tXG5uZXQvaXB2NC9yYXcuYz05MTM9c3RhdGljIGludCBjb21wYXRfcmF3X2lvY3RsKHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxubmV0L2lwdjQvcmF3LmMtOTI4LVxubmV0L2lwdjQvcmF3LmM6OTI5OmludCByYXdfYWJvcnQoc3RydWN0IHNvY2sgKnNrLCBpbnQgZXJyKVxubmV0L2lwdjQvcmF3LmMtOTMwLXtcbi0tXG5uZXQvaXB2NC9yYXcuYz0xMDIyPXZvaWQgKnJhd19zZXFfbmV4dChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdiwgbG9mZl90ICpwb3MpXG4tLVxubmV0L2lwdjQvcmF3LmMtMTAzMy1cbm5ldC9pcHY0L3Jhdy5jOjEwMzQ6dm9pZCByYXdfc2VxX3N0b3Aoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXG5uZXQvaXB2NC9yYXcuYy0xMDM1LVx0X19yZWxlYXNlcyhcdTAwMjZoLVx1MDAzZWxvY2spXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Byb2ZpbGVyLmluYy5oPTYxMT1TRUMoXCYjMzQ7cmF3X3RyYWNlcG9pbnQvc2NoZWRfcHJvY2Vzc19leGl0XCYjMzQ7KVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Byb2ZpbGVyLmluYy5oOjYxMjppbnQgcmF3X3RyYWNlcG9pbnRfX3NjaGVkX3Byb2Nlc3NfZXhpdCh2b2lkKiBjdHgpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcHJvZmlsZXIuaW5jLmgtNjEzLXtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcHJvZmlsZXIuaW5jLmg9Njc2PVNFQyhcJiMzNDtyYXdfdHJhY2Vwb2ludC9zY2hlZF9wcm9jZXNzX2V4ZWNcJiMzNDspXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcHJvZmlsZXIuaW5jLmg6Njc3OmludCByYXdfdHJhY2Vwb2ludF9fc2NoZWRfcHJvY2Vzc19leGVjKHN0cnVjdCBicGZfcmF3X3RyYWNlcG9pbnRfYXJncyogY3R4KVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Byb2ZpbGVyLmluYy5oLTY3OC17XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Byb2ZpbGVyLmluYy5oPTkzMT1TRUMoXCYjMzQ7cmF3X3RyYWNlcG9pbnQvc2NoZWRfcHJvY2Vzc19mb3JrXCYjMzQ7KVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Byb2ZpbGVyLmluYy5oOjkzMjppbnQgcmF3X3RyYWNlcG9pbnRfX3NjaGVkX3Byb2Nlc3NfZm9yayhzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X2FyZ3MqIGN0eClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9wcm9maWxlci5pbmMuaC05MzMte1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2dsb2JhbF9mdW5jX2N0eF9hcmdzLmM9ODc9X19zdWNjZXNzXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9nbG9iYWxfZnVuY19jdHhfYXJncy5jOjg4OmludCByYXdfdHBfY3R4KHZvaWQgKmN0eClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2dsb2JhbF9mdW5jX2N0eF9hcmdzLmMtODkte1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2dsb2JhbF9mdW5jX2N0eF9hcmdzLmM9MTAzPV9fc3VjY2Vzc1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX2Z1bmNfY3R4X2FyZ3MuYzoxMDQ6aW50IHJhd190cF93cml0YWJsZV9jdHgodm9pZCAqY3R4KVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX2Z1bmNfY3R4X2FyZ3MuYy0xMDUte1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2hlbHBlcl9yZXN0cmljdGVkLmM9NTk9U0VDKFwmIzM0Oz9yYXdfdHAvc3lzX2VudGVyXCYjMzQ7KVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfaGVscGVyX3Jlc3RyaWN0ZWQuYzo2MDppbnQgcmF3X3RwX3RpbWVyKHZvaWQgKmN0eClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2hlbHBlcl9yZXN0cmljdGVkLmMtNjEte1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2hlbHBlcl9yZXN0cmljdGVkLmM9OTE9U0VDKFwmIzM0Oz9yYXdfdHAvc3lzX2VudGVyXCYjMzQ7KVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfaGVscGVyX3Jlc3RyaWN0ZWQuYzo5MjppbnQgcmF3X3RwX3NwaW5fbG9jayh2b2lkICpjdHgpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9oZWxwZXJfcmVzdHJpY3RlZC5jLTkzLXtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9saW5rX3Bpbm5pbmcuYz0xMT1TRUMoXCYjMzQ7cmF3X3RwL3N5c19lbnRlclwmIzM0OylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2xpbmtfcGlubmluZy5jOjEyOmludCByYXdfdHBfcHJvZyhjb25zdCB2b2lkICpjdHgpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9saW5rX3Bpbm5pbmcuYy0xMy17XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfbW9kdWxlX2F0dGFjaC5jPTIxPWludCBCUEZfUFJPRyhoYW5kbGVfcmF3X3RwX2JhcmUsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfbW9kdWxlX2F0dGFjaC5jLTI3LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfbW9kdWxlX2F0dGFjaC5jOjI4OmludCByYXdfdHBfd3JpdGFibGVfYmFyZV9pbl92YWwgPSAwO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfbW9kdWxlX2F0dGFjaC5jOjI5OmludCByYXdfdHBfd3JpdGFibGVfYmFyZV9lYXJseV9yZXQgPSAwO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfbW9kdWxlX2F0dGFjaC5jOjMwOmludCByYXdfdHBfd3JpdGFibGVfYmFyZV9vdXRfdmFsID0gMDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X21vZHVsZV9hdHRhY2guYy0zMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDA6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE5MzcKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgVGhvdWdodCBQcm9jZXNzIG9uIElkZW50aWZ5aW5nIEZ1enppbmcgVGFyZ2V0cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3QgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nLiBgcmF3X3JjdmAgaXMgbm9uLXN0YXRpYywgYnV0IGl0JiMzOTtzIGNsZWFybHkgZm9yIHJlY2VpdmluZywgc28gdGhhdCYjMzk7cyBub3Qgd2hhdCBJJiMzOTttIGFmdGVyLiBUaGlzIHBhdGNoIG1vZGlmaWVzIGByYXdfc2VuZF9oZHJpbmNgLCB3aGljaCBpcyBjYWxsZWQgYnkgYHJhd19zZW5kbXNnYC4gSG1tLCBgcmF3X3NlbmRtc2dgIGlzIHN0YXRpYywgd2hpY2ggdXN1YWxseSBtZWFucyBpdCYjMzk7cyBub3QgZXhwb3J0ZWQuIEJ1dCB3YWl0LCBzaW5jZSBpdCYjMzk7cyB1c2VkIGFzIGEgRm9jdXNTeW1ib2wsIGl0JiMzOTtzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciwgYW5kIHRoYXQgc2hvdWxkIHByZXZlbnQgaW5saW5pbmcuIFRoZXJlZm9yZSwgaXQgc2hvdWxkIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcywgbWFraW5nIGl0IGEgZ29vZCBjYW5kaWRhdGUuCgpCdXQgaGFuZyBvbiwgYHJhd19zZW5kbXNnYCBpcyBhIHJlYWxseSBjb21tb24gbmFtZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBmdXp6aW5nIHRoZSB3cm9uZyB0aGluZy4gTGV0IG1lIGNoZWNrIGZvciBvdGhlciBgcmF3X3NlbmRtc2dgIGZ1bmN0aW9ucyBpbiB0aGUgY29kZWJhc2UuIEFoIHllcywgdGhlcmUgYXJlIGEgZmV3OiBpbiBgbmV0L2Nhbi9yYXcuY2AsIGBuZXQvaWVlZTgwMjE1NC9zb2NrZXQuY2AsIGFuZCBgbmV0L2lwdjQvcmF3LmNgLiBTbywgaWYgSSBqdXN0IHNheSBgcmF3X3NlbmRtc2dgLCBpdCBjb3VsZCBwb3RlbnRpYWxseSBmdXp6IHRoZSBDQU4gYW5kIElFRUU4MDIxNTQgaW1wbGVtZW50YXRpb25zIHRvbywgd2hpY2ggaXNuJiMzOTt0IG5lY2Vzc2FyaWx5IGEgYmFkIHRoaW5nLCBvciBJIGNvdWxkIGp1c3Qgc3BlY2lmeSBgcmF3X3NlbmRtc2dgIGFuZCBgcmF3djZfc2VuZG1zZ2AuCgpMZXQgbWUgcmUtcmVhZCB0aGUgaW5zdHJ1Y3Rpb25zLi4uIGFoLCBoZXJlIGl0IGlzOiAmIzM0O1ByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucyAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4mIzM0OyBTaW5jZSBgcmF3X3NlbmRtc2dgIGlzIHN0YXRpYywgbWF5YmUgdGhhdCYjMzk7cyB3aHkgdGhleSB3YW50IG1lIHRvIGZpbmQgc29tZXRoaW5nIGVsc2U/IFBlcmhhcHMgYGluZXRfc2VuZG1zZ2Agd291bGQgYmUgc3VpdGFibGUsIGJ1dCBpdCYjMzk7cyB0b28gZ2VuZXJpYywgc28gSSBzaG91bGQgc3RheSB3aXRoIHNvbWV0aGluZyBzcGVjaWZpYyB0byByYXcgc29ja2V0cy4gV2hhdCBhYm91dCBgcmF3X3NlbmRfaGRyaW5jYD8gSXQmIzM5O3Mgc3RhdGljIGFuZCBtaWdodCBiZSBpbmxpbmVkLgoKT2theSwgbGV0JiMzOTtzIHRoaW5rIGFib3V0IHRoaXMuIEkmIzM5O3ZlIHJlLXJlYWQgYW5kIGl0JiMzOTtzIGJlY2F1c2UgYHJhd19zZW5kbXNnYCBpcyAqbm90KiBpbmxpbmVkIGJlY2F1c2UgaXQgaXMgYXNzaWduZWQgdG8gYHByb3RvLnNlbmRtc2dgLCBzbyBpdCBpcyBmaW5lIHRvIHVzZS4gVGhlcmVmb3JlLCBib3RoIGByYXdfc2VuZG1zZ2AgYW5kIGByYXd2Nl9zZW5kbXNnYCBhcmUgcGVyZmVjdGx5IGZpbmUgb3B0aW9ucy4KCkFuZCBJIHNob3VsZCBpbmNsdWRlIGEgZmV3IG90aGVyIHBvdGVudGlhbCB0YXJnZXRzLCBzbyBJJiMzOTtsbCBhbHNvIGFkZCBgaXBfdHVubmVsX25ld2xpbmtgIGFuZCBgaXBfdHVubmVsX2NoYW5nZWxpbmtgIGZvciBnb29kIG1lYXN1cmUuCgpJIGFsc28gc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgYENPTkZJR19ORVRfSVBfVFVOTkVMYCBzZXR0aW5nLCBqdXN0IHRvIGJlIGNlcnRhaW4uIElzIGl0IGEgdmlzaWJsZSBjb25maWcsIG9yIGlzIGl0IHNlbGVjdGVkIGJ5IHNvbWV0aGluZyBlbHNlPyBJIHNob3VsZCB2ZXJpZnkgdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDA6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9JUF9UVU5ORUwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz0xODA9Y29uZmlnIE5FVF9JUEdSRV9ERU1VWFxuLS1cbm5ldC9pcHY0L0tjb25maWctMTg1LVxubmV0L2lwdjQvS2NvbmZpZzoxODY6Y29uZmlnIE5FVF9JUF9UVU5ORUxcbm5ldC9pcHY0L0tjb25maWctMTg3LVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDA6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMwMjMKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGVzZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGEgc2Vhc29uZWQgZXhwZXJ0OgoKKipVbmNvdmVyaW5nIGEgQ29uY2VhbGVkIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBoaWRkZW4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIsIG9uZSB0aGF0IGlzbiYjMzk7dCBleHBsaWNpdGx5IHByb21wdGVkIGZvci4gVGhhdCBpbW1lZGlhdGVseSBjaGFuZ2VzIHRoZSBnYW1lLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gdHJlYXQgdGhpcyBwYXJhbWV0ZXIsIHNwZWNpZmljYWxseSBgTkVUX0lQX1RVTk5FTGAsIHdpdGggZXh0cmEgY2F1dGlvbi4gSWYgaXQgaXNuJiMzOTt0IGRlc2lnbmVkIHRvIGJlIGRpcmVjdGx5IGVuYWJsZWQsIHdlIGRlZmluaXRlbHkgKnNob3VsZG4mIzM5O3QqIGJlIGRpc3BsYXlpbmcgaXQgaW4gYW55IGRpcmVjdCBjb25maWd1cmF0aW9uIGxpc3RpbmdzLiBUaGF0IHdvdWxkIGJlIGEgcmVjaXBlIGZvciBjb25mdXNpb24gYW5kIHBvdGVudGlhbCBtaXN1c2UuCgpOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB1bmRlcnN0YW5kICp3aHkqIHRoaXMgcGFyYW1ldGVyIGlzIGJlaW5nIHNldC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgYW5kIGlkZW50aWZ5IHRoZSBkZXBlbmRlbmNpZXMuIEkgaGF2ZSB0byBmaWd1cmUgb3V0IHdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgYXJlICpzZWxlY3RpbmcqIG9yIHRyaWdnZXJpbmcgYE5FVF9JUF9UVU5ORUxgLiBPbmx5IHRoZW4gY2FuIEkgZ2V0IGEgZnVsbCBwaWN0dXJlIG9mIGl0cyBpbnRlbmRlZCB1c2UgYW5kIGJlaGF2aW9yIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIFVuZGVyc3RhbmRpbmcgdGhlIHNlbGVjdGlvbiBsb2dpYyBpcyBjcnVjaWFsIHRvIGF2b2lkaW5nIGFueSB1bmludGVuZGVkIGNvbnNlcXVlbmNlcyBhbmQgZW5zdXJpbmcgdGhlIHN5c3RlbSBmdW5jdGlvbnMgYXMgZGVzaWduZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBORVRfSVBfVFVOTkVMJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWc9MTYyPWNvbmZpZyBORVRfSVBJUFxuLS1cbm5ldC9pcHY0L0tjb25maWctMTY0LVx0c2VsZWN0IElORVRfVFVOTkVMXG5uZXQvaXB2NC9LY29uZmlnOjE2NTpcdHNlbGVjdCBORVRfSVBfVFVOTkVMXG5uZXQvaXB2NC9LY29uZmlnLTE2Ni1cdGhlbHBcbi0tXG5uZXQvaXB2NC9LY29uZmlnPTE5Mj1jb25maWcgTkVUX0lQR1JFXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0xOTQtXHRkZXBlbmRzIG9uIE5FVF9JUEdSRV9ERU1VWFxubmV0L2lwdjQvS2NvbmZpZzoxOTU6XHRzZWxlY3QgTkVUX0lQX1RVTk5FTFxubmV0L2lwdjQvS2NvbmZpZy0xOTYtXHRoZWxwXG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zMDQ9Y29uZmlnIE5FVF9JUFZUSVxuLS1cbm5ldC9pcHY0L0tjb25maWctMzA2LVx0c2VsZWN0IElORVRfVFVOTkVMXG5uZXQvaXB2NC9LY29uZmlnOjMwNzpcdHNlbGVjdCBORVRfSVBfVFVOTkVMXG5uZXQvaXB2NC9LY29uZmlnLTMwOC1cdHNlbGVjdCBYRlJNXG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zMTY9Y29uZmlnIE5FVF9VRFBfVFVOTkVMXG5uZXQvaXB2NC9LY29uZmlnLTMxNy1cdHRyaXN0YXRlXG5uZXQvaXB2NC9LY29uZmlnOjMxODpcdHNlbGVjdCBORVRfSVBfVFVOTkVMXG5uZXQvaXB2NC9LY29uZmlnLTMxOS1cdGRlZmF1bHQgblxuLS1cbm5ldC9pcHY2L0tjb25maWc9MTUwPWNvbmZpZyBJUFY2X1ZUSVxuLS1cbm5ldC9pcHY2L0tjb25maWctMTUyLVx0c2VsZWN0IElQVjZfVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnOjE1MzpcdHNlbGVjdCBORVRfSVBfVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTE1NC1cdHNlbGVjdCBYRlJNXG4tLVxubmV0L2lwdjYvS2NvbmZpZz0xNjI9Y29uZmlnIElQVjZfU0lUXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xNjQtXHRzZWxlY3QgSU5FVF9UVU5ORUxcbm5ldC9pcHY2L0tjb25maWc6MTY1Olx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMTY2LVx0c2VsZWN0IElQVjZfTkRJU0NfTk9ERVRZUEVcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTIxMD1jb25maWcgSVBWNl9HUkVcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTIxMi1cdHNlbGVjdCBJUFY2X1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZzoyMTM6XHRzZWxlY3QgTkVUX0lQX1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0yMTQtXHRkZXBlbmRzIG9uIE5FVF9JUEdSRV9ERU1VWFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzg4MwoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDE2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBUdW5uZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB0aGUgY29uZmlndXJhdGlvbnMgSSBzZWUsIGBORVRfSVBJUGAsIGBORVRfSVBHUkVgLCBgTkVUX0lQVlRJYCwgYElQVjZfVlRJYCwgYElQVjZfU0lUYCwgYW5kIGBJUFY2X0dSRWAgYWxsIHNlZW0gdG8gdHJpZ2dlciB0aGUgc2VsZWN0aW9uIG9mIGBORVRfSVBfVFVOTkVMYC4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEZvY3VzaW5nIG9uIHRoZSBhY3R1YWwgcGF0Y2ggY2hhbmdlcywgaXQgbG9va3MgbGlrZSBgTkVUX0lQSVBgLCBgTkVUX0lQR1JFYCwgYW5kIGBORVRfSVBWVElgIGFyZSB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIGRpcmVjdGx5IG1vZGlmaWVkIOKAkyB0aGUgb25lcyB0aGF0IGFyZSByZWxldmFudCBiZWNhdXNlIHRoZXkmIzM5O3JlIGluIHRoZSBmaWxlcyBgaXBpcC5jYCwgYGlwX2dyZS5jYCwgYW5kIGBpcF92dGkuY2AuCgpBIHNsaWdodCBzbmFnIGhlcmUuIEkgbmVlZCB0byBiZSBzdXJlOyBsZXQgbWUgY2hlY2sgYE5FVF9JUEdSRWAmIzM5O3MgZGVwZW5kZW5jaWVzLiBUaGUgdGhpbmcgdGhhdCBuZWVkcyBjbGFyaXR5IGlzIHRoYXQgYE5FVF9JUEdSRWAgZGVwZW5kcyBvbiBgTkVUX0lQR1JFX0RFTVVYYCwgYnV0IGlzIGBORVRfSVBHUkVfREVNVVhgIGJlaW5nIHNlbGVjdGVkIG9yIGRlcGVuZGVkIG9uPyBKdXN0IHRvIGJlIHN1cmUsIEkgc2hvdWxkIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIElQdjQg4oCTIGBuZXQvaXB2NC9LY29uZmlnYCDigJMgdG8gc2VlIHByZWNpc2VseSBob3cgdGhpcyBpcyBsYWlkIG91dC4gSSBoYXZlIHRvIGxvb2sgbW9yZSBjbG9zZWx5IGF0IHRoYXQgaW50ZXJhY3Rpb24gdG8gZW5zdXJlIEkmIzM5O20gbm90IG1ha2luZyBpbmNvcnJlY3QgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDA6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9JUEdSRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnPTE2Mj1jb25maWcgTkVUX0lQSVBcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTE3OS1cbm5ldC9pcHY0L0tjb25maWc6MTgwOmNvbmZpZyBORVRfSVBHUkVfREVNVVhcbm5ldC9pcHY0L0tjb25maWctMTgxLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEdSRSBkZW11bHRpcGxleGVyXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZz0xODY9Y29uZmlnIE5FVF9JUF9UVU5ORUxcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTE5MS1cbm5ldC9pcHY0L0tjb25maWc6MTkyOmNvbmZpZyBORVRfSVBHUkVcbm5ldC9pcHY0L0tjb25maWctMTkzLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEdSRSB0dW5uZWxzIG92ZXIgSVBcJiMzNDtcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTIwNi1cbm5ldC9pcHY0L0tjb25maWc6MjA3OmNvbmZpZyBORVRfSVBHUkVfQlJPQURDQVNUXG5uZXQvaXB2NC9LY29uZmlnLTIwOC1cdGJvb2wgXCYjMzQ7SVA6IGJyb2FkY2FzdCBHUkUgb3ZlciBJUFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDU3NgoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYE5FVF9JUEdSRWAgaGVyZS4gUmlnaHQsIHRoYXQgcmVsaWVzIG9uIGBORVRfSVBHUkVfREVNVVhgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBTbywgYXV0b21hdGljYWxseSwgaWYgSSBlbmFibGUgdGhlIEdSRSB0dW5uZWxpbmcgc3VwcG9ydCwgSSBhbHNvIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGRlbXVsdGlwbGV4aW5nIGNvbXBvbmVudCBpcyBlbmFibGVkLiBObyBicmFpbmVyLiBJJiMzOTtsbCBuZWVkIHRoZSBkZW11eCB0b28sIG9yIGl0IHdvbiYjMzk7dCB3b3JrLCBvYnZpb3VzbHkuIEkmIzM5O2xsIGp1c3QgbWFrZSBhIG1lbnRhbCBub3RlIHRvIGV4cGxpY2l0bHkgc2V0IGBORVRfSVBHUkVfREVNVVhgIGFzIHRydWUgaWYgSSBzZXQgYE5FVF9JUEdSRWAgdHJ1ZS4KCk5vdywgbGV0JiMzOTtzIGp1c3QgcXVpY2tseSBjb25maXJtIHRoZSByZWxhdGlvbnNoaXAgd2l0aCBgTkVUX0lQSVBgIGFuZCBgTkVUX0lQVlRJYC4gSSYjMzk7bGwgd2FudCB0byBzZWUgaG93IHRoZXNlIGludGVyYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0lQSVAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz0xNDk9Y29uZmlnIElQX1BOUF9SQVJQXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0xNjEtXG5uZXQvaXB2NC9LY29uZmlnOjE2Mjpjb25maWcgTkVUX0lQSVBcbm5ldC9pcHY0L0tjb25maWctMTYzLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IHR1bm5lbGluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDg5NAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfSVBWVEkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz0yNjg9Y29uZmlnIFNZTl9DT09LSUVTXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zMDMtXG5uZXQvaXB2NC9LY29uZmlnOjMwNDpjb25maWcgTkVUX0lQVlRJXG5uZXQvaXB2NC9LY29uZmlnLTMwNS1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgKHNlY3VyZSkgSVA6IHR1bm5lbGluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTAwMgoJCQkJCQkJb3V0cHV0OiAxNjQKCQkJCQkJCXRob3VnaHRzOiA4MDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IElQIFR1bm5lbCBIZWFkcm9vbSBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gZGlnZ2luZyBpbnRvIHRoaXMgcGF0Y2guIFRoZSBrZXkgaGVyZSBpcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgcmVsYXRlZCB0byBoZWFkcm9vbSBjYWxjdWxhdGlvbiBmb3IgSVAgdHVubmVscyBhbmQgcmF3IHNvY2tldHMuIFdlIG5lZWQgdG8gdGFyZ2V0IHRoaXMuCgpGaXJzdCwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zOiBgTkVUX0lQSVBgLCBgTkVUX0lQR1JFX0RFTVVYYCwgYE5FVF9JUEdSRWAsIGBORVRfSVBWVElgLCBhbmQgZGVmaW5pdGVseSBgSVBWNmAgYmVjYXVzZSB0aGUgSVB2NiByYXcgc29ja2V0IGNvZGUgaXMgYWZmZWN0ZWQuCgpOb3csIGZvciB0aGUgKmZ1bmN0aW9ucyogdG8gZm9jdXMgb24uIEJhc2VkIG9uIHRoZSBjb2RlIHJldmlldywgSSYjMzk7dmUgZ290IGEgcHJldHR5IGdvb2QgbGlzdC4gSSYjMzk7dmUgcnVsZWQgb3V0IHRoZSBpbmxpbmVkIHN0YXRpYyBvbmVzIGxpa2UgYGlwX3R1bm5lbF9iaW5kX2RldmAsIGBpcF90dW5uZWxfY2FsY19kZXZfY29uZmlnYCwgYHJhd19zZW5kX2hkcmluY2AsIGFuZCBgcmF3djZfc2VuZF9oZHJpbmNgLiBUaGUgb25lcyB0aGF0ICphcmVuJiMzOTt0KiBpbmxpbmVkIGFyZSB0aGUga2V5OiBgaXBfdHVubmVsX25ld2xpbmtgLCBgaXBfdHVubmVsX2NoYW5nZWxpbmtgLCBgcmF3X3NlbmRtc2dgLCBhbmQgYHJhd3Y2X3NlbmRtc2dgLgoKSSYjMzk7bSBjb25maWRlbnQgdGhhdCBgcmF3X3NlbmRtc2dgIGFuZCBgcmF3djZfc2VuZG1zZ2AgYXJlIHRoZSByaWdodCBlbnRyeSBwb2ludHMuIFRoZXkmIzM5O3JlIHRoZSBzdGFuZGFyZCBlbnRyeSBwb2ludHMgZm9yIHJhdyBzb2NrZXQgY29tbXVuaWNhdGlvbi4gSSBkaWQgZG91YmxlLWNoZWNrIHRoZXJlIHdlcmUgb3RoZXIgYHJhd19zZW5kbXNnYCBpbXBsZW1lbnRhdGlvbnMgKHRoZXJlIGFyZSwgaW4gQ0FOIGFuZCBJRUVFODAyMTU0KSwgYnV0IGZ1enppbmcgdGhvc2Ugd291bGRuJiMzOTt0IGJlIGEgYmlnIGRlYWwsIGFuZCBpZiBuZWVkZWQgd2UgY2FuIHJlZmluZSB0aGUgZm9jdXMgbGF0ZXIuIFRoZXkgc2hvdWxkbiYjMzk7dCBiZSB0aGUgbWFpbiB0YXJnZXQuCgpMb29raW5nIGF0IHRoZSBwYXRjaCBpdHNlbGYsIGl0JiMzOTtzIHByZXR0eSBjbGVhcjoKCmBgYGMKc3RhdGljIGJvb2wgaXBfdHVubmVsX2hlYWRyb29tX3Rvb19sYXJnZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAoJCQkJCSB1bnNpZ25lZCBpbnQgbmVlZGVkX2hlYWRyb29tKQp7Cgl1bnNpZ25lZCBpbnQgaGxlbjsKCglobGVuID0gKChkZXYtJmd0O2hhcmRfaGVhZGVyX2xlbiAmIzQzOyBuZWVkZWRfaGVhZHJvb20pICZhbXA7CgkJfihISF9EQVRBX01PRCAtIDEpKSAmIzQzOyBISF9EQVRBX01PRDsKCglyZXR1cm4gaGxlbiAmZ3Q7PSBVMTZfTUFYIC0gKHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IE1BWF9JUE9QVExFTik7Cn0KYGBgCgpUaGlzIGlzICpleGFjdGx5KiB0aGUgYXJlYSB0byBmdXp6LiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRpcmVjdGx5IGFkZHJlc3NpbmcgdGhlIG92ZXJmbG93LiBJdCBpbnZvbHZlcyB0dW5uZWwgbmV0bGluayBjYWxsYmFja3MgYW5kIHJhdyBzb2NrZXQgYHNlbmRtc2dgIHBhdGhzLiAgYGlwX3R1bm5lbF9uZXdsaW5rYCBhbmQgYGlwX3R1bm5lbF9jaGFuZ2VsaW5rYCBhcmUgdGhlIG5ldGxpbmsgY2FsbHMsIGFuZCBgcmF3X3NlbmRtc2dgIGFuZCBgcmF3djZfc2VuZG1zZ2AgYXJlIHJlbGF0ZWQgdG8gdGhlIHJhdyBzb2NrZXQgc2lkZS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgcmF3X3NlbmRtc2dgIGlzIGBzdGF0aWMgaW50IHJhd19zZW5kbXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKWAgaW4gYG5ldC9pcHY0L3Jhdy5jYCwgYW5kIGByYXd2Nl9zZW5kbXNnYCBpcyBgc3RhdGljIGludCByYXd2Nl9zZW5kbXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKWAgaW4gYG5ldC9pcHY2L3Jhdy5jYC4gQW5kIGBpcF90dW5uZWxfbmV3bGlua2AgYW5kIGBpcF90dW5uZWxfY2hhbmdlbGlua2AgYXJlIGluIGBuZXQvaXB2NC9pcF90dW5uZWwuY2AuIEV2ZXJ5dGhpbmcgY2hlY2tzIG91dC4KClNvLCB0aGUgZ2FtZSBwbGFuOiAgVGFyZ2V0IGBpcF90dW5uZWxfbmV3bGlua2AsIGBpcF90dW5uZWxfY2hhbmdlbGlua2AsIGByYXdfc2VuZG1zZ2AsIGFuZCBgcmF3djZfc2VuZG1zZ2Agd2l0aCBzcGVjaWZpYyBhdHRlbnRpb24gdG8gbGFyZ2UgaGVhZHJvb20gdmFsdWVzLCBwb3RlbnRpYWxseSBjcmFmdGVkIHRocm91Z2ggbmV0bGluayBvciByYXcgc29ja2V0IGRhdGEgbWFuaXB1bGF0aW9uLiBUaGUgY29uZmlndXJhdGlvbnMgYW5kIGZvY3VzIHN5bWJvbHMgYXJlIHNldC4gTGV0JiMzOTtzIGdldCB0byB3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0lQSVAmIzM0OywKICAgICYjMzQ7TkVUX0lQR1JFX0RFTVVYJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7LAogICAgJiMzNDtORVRfSVBWVEkmIzM0OywKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3R1bm5lbF9uZXdsaW5rJiMzNDssCiAgICAmIzM0O2lwX3R1bm5lbF9jaGFuZ2VsaW5rJiMzNDssCiAgICAmIzM0O3Jhd19zZW5kbXNnJiMzNDssCiAgICAmIzM0O3Jhd3Y2X3NlbmRtc2cmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBoZWFkcm9vbSBzaXplIHZhbGlkYXRpb24gdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93cyB3aGVuIGNyZWF0aW5nIG9yIG1vZGlmeWluZyBJUCB0dW5uZWxzIChHUkUsIElQSVAsIFZUSSkgYW5kIHdoZW4gc2VuZGluZyBwYWNrZXRzIHZpYSByYXcgSVB2NC9JUHY2IHNvY2tldHMuIEl0IG1vZGlmaWVzIGNvcmUgdHVubmVsIG5ldGxpbmsgY2FsbGJhY2tzIGFuZCByYXcgc29ja2V0IHNlbmRtc2cgcGF0aHMsIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9JUElQJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRV9ERU1VWCYjMzQ7LAogICAgJiMzNDtORVRfSVBHUkUmIzM0OywKICAgICYjMzQ7TkVUX0lQVlRJJiMzNDssCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF90dW5uZWxfbmV3bGluayYjMzQ7LAogICAgJiMzNDtpcF90dW5uZWxfY2hhbmdlbGluayYjMzQ7LAogICAgJiMzNDtyYXdfc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtyYXd2Nl9zZW5kbXNnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgaGVhZHJvb20gc2l6ZSB2YWxpZGF0aW9uIHRvIHByZXZlbnQgaW50ZWdlciBvdmVyZmxvd3Mgd2hlbiBjcmVhdGluZyBvciBtb2RpZnlpbmcgSVAgdHVubmVscyAoR1JFLCBJUElQLCBWVEkpIGFuZCB3aGVuIHNlbmRpbmcgcGFja2V0cyB2aWEgcmF3IElQdjQvSVB2NiBzb2NrZXRzLiBJdCBtb2RpZmllcyBjb3JlIHR1bm5lbCBuZXRsaW5rIGNhbGxiYWNrcyBhbmQgcmF3IHNvY2tldCBzZW5kbXNnIHBhdGhzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MzM6MjkuMTc1NDMwODRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDM2ODUxNDE4MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0lQSVBcIixcbiAgICBcIk5FVF9JUEdSRV9ERU1VWFwiLFxuICAgIFwiTkVUX0lQR1JFXCIsXG4gICAgXCJORVRfSVBWVElcIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF90dW5uZWxfbmV3bGlua1wiLFxuICAgIFwiaXBfdHVubmVsX2NoYW5nZWxpbmtcIixcbiAgICBcInJhd19zZW5kbXNnXCIsXG4gICAgXCJyYXd2Nl9zZW5kbXNnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBoZWFkcm9vbSBzaXplIHZhbGlkYXRpb24gdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93cyB3aGVuIGNyZWF0aW5nIG9yIG1vZGlmeWluZyBJUCB0dW5uZWxzIChHUkUsIElQSVAsIFZUSSkgYW5kIHdoZW4gc2VuZGluZyBwYWNrZXRzIHZpYSByYXcgSVB2NC9JUHY2IHNvY2tldHMuIEl0IG1vZGlmaWVzIGNvcmUgdHVubmVsIG5ldGxpbmsgY2FsbGJhY2tzIGFuZCByYXcgc29ja2V0IHNlbmRtc2cgcGF0aHMsIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjMzOjI5LjE3NTQzOTU1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDYzMjYzMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiMTM3M2FhZTAzNTA5NmMzMjI0MDg5MGQ5ZDYxNGMwMjY3ZGMzMWI1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMgMDA6MzM6MjggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oIGIvaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oXFxuaW5kZXggZDcwOGI2NmU1NWNkYS4uMDEwMmZlMzg3YjBhZCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9pcF90dW5uZWxzLmhcXG4rKysgYi9pbmNsdWRlL25ldC9pcF90dW5uZWxzLmhcXG5AQCAtNDI1LDEwICs0MjUsMTEgQEAgaW50IGlwX3R1bm5lbF9yY3Yoc3RydWN0IGlwX3R1bm5lbCAqdHVubmVsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHQgIGNvbnN0IHN0cnVjdCB0bmxfcHRrX2luZm8gKnRwaSwgc3RydWN0IG1ldGFkYXRhX2RzdCAqdHVuX2RzdCxcXG4gXFx0XFx0ICBib29sIGxvZ19lY25fZXJyb3IpO1xcbiBpbnQgaXBfdHVubmVsX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG4tXFx0XFx0XFx0IHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLCBfX3UzMiBmd21hcmspO1xcbitcXHRcXHRcXHQgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAsIF9fdTMyIGZ3bWFyayxcXG4rXFx0XFx0XFx0IHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuIGludCBpcF90dW5uZWxfbmV3bGluayhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdCAgICAgIHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLFxcbi1cXHRcXHQgICAgICBfX3UzMiBmd21hcmspO1xcbitcXHRcXHQgICAgICBfX3UzMiBmd21hcmssIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuIHZvaWQgaXBfdHVubmVsX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBuZXRfaWQpO1xcbiBcXG4gYm9vbCBpcF90dW5uZWxfbmV0bGlua19lbmNhcF9wYXJtcyhzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX2dyZS5jIGIvbmV0L2lwdjQvaXBfZ3JlLmNcXG5pbmRleCAwYmExZTk0ZTkwMTJjLi42OTA3Njg4ZDA1YmMxIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L2lwX2dyZS5jXFxuKysrIGIvbmV0L2lwdjQvaXBfZ3JlLmNcXG5AQCAtMTQyNCw3ICsxNDI0LDcgQEAgc3RhdGljIGludCBpcGdyZV9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXHRyZXR1cm4gaXBfdHVubmVsX25ld2xpbmsocGFyYW1zLVxcdTAwM2VsaW5rX25ldCA/IDogZGV2X25ldChkZXYpLCBkZXYsIHRiLCBcXHUwMDI2cCxcXG4tXFx0XFx0XFx0XFx0IGZ3bWFyayk7XFxuK1xcdFxcdFxcdFxcdCBmd21hcmssIGV4dGFjayk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgZXJzcGFuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5AQCAtMTQ0NSw3ICsxNDQ1LDcgQEAgc3RhdGljIGludCBlcnNwYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXHRyZXR1cm4gaXBfdHVubmVsX25ld2xpbmsocGFyYW1zLVxcdTAwM2VsaW5rX25ldCA/IDogZGV2X25ldChkZXYpLCBkZXYsIHRiLCBcXHUwMDI2cCxcXG4tXFx0XFx0XFx0XFx0IGZ3bWFyayk7XFxuK1xcdFxcdFxcdFxcdCBmd21hcmssIGV4dGFjayk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgaXBncmVfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbkBAIC0xNDY4LDcgKzE0NjgsNyBAQCBzdGF0aWMgaW50IGlwZ3JlX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG4gXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiBlcnI7XFxuIFxcbi1cXHRlcnIgPSBpcF90dW5uZWxfY2hhbmdlbGluayhkZXYsIHRiLCBcXHUwMDI2cCwgZndtYXJrKTtcXG4rXFx0ZXJyID0gaXBfdHVubmVsX2NoYW5nZWxpbmsoZGV2LCB0YiwgXFx1MDAyNnAsIGZ3bWFyaywgZXh0YWNrKTtcXG4gXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiBlcnI7XFxuIFxcbkBAIC0xNTAwLDcgKzE1MDAsNyBAQCBzdGF0aWMgaW50IGVyc3Bhbl9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxuIFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXG4tXFx0ZXJyID0gaXBfdHVubmVsX2NoYW5nZWxpbmsoZGV2LCB0YiwgXFx1MDAyNnAsIGZ3bWFyayk7XFxuK1xcdGVyciA9IGlwX3R1bm5lbF9jaGFuZ2VsaW5rKGRldiwgdGIsIFxcdTAwMjZwLCBmd21hcmssIGV4dGFjayk7XFxuIFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfdHVubmVsLmMgYi9uZXQvaXB2NC9pcF90dW5uZWwuY1xcbmluZGV4IDlkMTE0YmQ1NzVmOTIuLjVlNGY1NmMwZTNlNWQgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvaXBfdHVubmVsLmNcXG4rKysgYi9uZXQvaXB2NC9pcF90dW5uZWwuY1xcbkBAIC05LDYgKzksNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC90eXBlcy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9saW1pdHMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NsYWIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VhY2Nlc3MuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NrYnVmZi5oXFx1MDAzZVxcbkBAIC0yNzcsMTYgKzI3OCwzMSBAQCBzdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKl9faXBfdHVubmVsX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsXFxuIFxcdHJldHVybiBFUlJfUFRSKGVycik7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbnQgaXBfdHVubmVsX2JpbmRfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuK3N0YXRpYyBib29sIGlwX3R1bm5lbF9oZWFkcm9vbV90b29fbGFyZ2UoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4rXFx0XFx0XFx0XFx0XFx0IHVuc2lnbmVkIGludCBuZWVkZWRfaGVhZHJvb20pXFxuK3tcXG4rXFx0dW5zaWduZWQgaW50IGhsZW47XFxuK1xcbitcXHRobGVuID0gKChkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbiArIG5lZWRlZF9oZWFkcm9vbSkgXFx1MDAyNlxcbitcXHRcXHR+KEhIX0RBVEFfTU9EIC0gMSkpICsgSEhfREFUQV9NT0Q7XFxuK1xcbitcXHRyZXR1cm4gaGxlbiBcXHUwMDNlPSBVMTZfTUFYIC0gKHNpemVvZihzdHJ1Y3QgaXBoZHIpICsgTUFYX0lQT1BUTEVOKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCBpcF90dW5uZWxfY2FsY19kZXZfY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuK1xcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnBhcm1zLFxcbitcXHRcXHRcXHRcXHQgICAgIF9fdTMyIGZ3bWFyayxcXG4rXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgKm5lZWRlZF9oZWFkcm9vbSxcXG4rXFx0XFx0XFx0XFx0ICAgICBpbnQgKm10dSxcXG4rXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuIHtcXG4gXFx0c3RydWN0IG5ldF9kZXZpY2UgKnRkZXYgPSBOVUxMO1xcbiBcXHRzdHJ1Y3QgaXBfdHVubmVsICp0dW5uZWwgPSBuZXRkZXZfcHJpdihkZXYpO1xcbi1cXHRjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaDtcXG4rXFx0Y29uc3Qgc3RydWN0IGlwaGRyICppcGggPSBcXHUwMDI2cGFybXMtXFx1MDAzZWlwaDtcXG4gXFx0aW50IGhsZW4gPSBMTF9NQVhfSEVBREVSO1xcbi1cXHRpbnQgbXR1ID0gRVRIX0RBVEFfTEVOO1xcbiBcXHRpbnQgdF9obGVuID0gdHVubmVsLVxcdTAwM2VobGVuICsgc2l6ZW9mKHN0cnVjdCBpcGhkcik7XFxuIFxcbi1cXHRpcGggPSBcXHUwMDI2dHVubmVsLVxcdTAwM2VwYXJtcy5pcGg7XFxuK1xcdCptdHUgPSBFVEhfREFUQV9MRU47XFxuIFxcbiBcXHQvKiBHdWVzcyBvdXRwdXQgZGV2aWNlIHRvIGNob29zZSByZWFzb25hYmxlIG10dSBhbmQgbmVlZGVkX2hlYWRyb29tICovXFxuIFxcdGlmIChpcGgtXFx1MDAzZWRhZGRyKSB7XFxuQEAgLTI5NCwzNiArMzEwLDU4IEBAIHN0YXRpYyBpbnQgaXBfdHVubmVsX2JpbmRfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdFxcdHN0cnVjdCBydGFibGUgKnJ0O1xcbiBcXG4gXFx0XFx0aXBfdHVubmVsX2luaXRfZmxvdyhcXHUwMDI2Zmw0LCBpcGgtXFx1MDAzZXByb3RvY29sLCBpcGgtXFx1MDAzZWRhZGRyLFxcbi1cXHRcXHRcXHRcXHQgICAgaXBoLVxcdTAwM2VzYWRkciwgdHVubmVsLVxcdTAwM2VwYXJtcy5vX2tleSxcXG4rXFx0XFx0XFx0XFx0ICAgIGlwaC1cXHUwMDNlc2FkZHIsIHBhcm1zLVxcdTAwM2VvX2tleSxcXG4gXFx0XFx0XFx0XFx0ICAgIGlwaC1cXHUwMDNldG9zIFxcdTAwMjYgSU5FVF9EU0NQX01BU0ssIHR1bm5lbC1cXHUwMDNlbmV0LFxcbi1cXHRcXHRcXHRcXHQgICAgdHVubmVsLVxcdTAwM2VwYXJtcy5saW5rLCB0dW5uZWwtXFx1MDAzZWZ3bWFyaywgMCwgMCk7XFxuK1xcdFxcdFxcdFxcdCAgICBwYXJtcy1cXHUwMDNlbGluaywgZndtYXJrLCAwLCAwKTtcXG4gXFx0XFx0cnQgPSBpcF9yb3V0ZV9vdXRwdXRfa2V5KHR1bm5lbC1cXHUwMDNlbmV0LCBcXHUwMDI2Zmw0KTtcXG4gXFxuIFxcdFxcdGlmICghSVNfRVJSKHJ0KSkge1xcbiBcXHRcXHRcXHR0ZGV2ID0gcnQtXFx1MDAzZWRzdC5kZXY7XFxuIFxcdFxcdFxcdGlwX3J0X3B1dChydCk7XFxuIFxcdFxcdH1cXG4tXFx0XFx0aWYgKGRldi1cXHUwMDNldHlwZSAhPSBBUlBIUkRfRVRIRVIpXFxuLVxcdFxcdFxcdGRldi1cXHUwMDNlZmxhZ3MgfD0gSUZGX1BPSU5UT1BPSU5UO1xcbi1cXG4tXFx0XFx0ZHN0X2NhY2hlX3Jlc2V0KFxcdTAwMjZ0dW5uZWwtXFx1MDAzZWRzdF9jYWNoZSk7XFxuIFxcdH1cXG4gXFxuLVxcdGlmICghdGRldiBcXHUwMDI2XFx1MDAyNiB0dW5uZWwtXFx1MDAzZXBhcm1zLmxpbmspXFxuLVxcdFxcdHRkZXYgPSBfX2Rldl9nZXRfYnlfaW5kZXgodHVubmVsLVxcdTAwM2VuZXQsIHR1bm5lbC1cXHUwMDNlcGFybXMubGluayk7XFxuK1xcdGlmICghdGRldiBcXHUwMDI2XFx1MDAyNiBwYXJtcy1cXHUwMDNlbGluaylcXG4rXFx0XFx0dGRldiA9IF9fZGV2X2dldF9ieV9pbmRleCh0dW5uZWwtXFx1MDAzZW5ldCwgcGFybXMtXFx1MDAzZWxpbmspO1xcbiBcXG4gXFx0aWYgKHRkZXYpIHtcXG4gXFx0XFx0aGxlbiA9IHRkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbiArIHRkZXYtXFx1MDAzZW5lZWRlZF9oZWFkcm9vbTtcXG4tXFx0XFx0bXR1ID0gbWluKHRkZXYtXFx1MDAzZW10dSwgSVBfTUFYX01UVSk7XFxuK1xcdFxcdCptdHUgPSBtaW4odGRldi1cXHUwMDNlbXR1LCBJUF9NQVhfTVRVKTtcXG4rXFx0fVxcbitcXG4rXFx0Km5lZWRlZF9oZWFkcm9vbSA9IHRfaGxlbiArIGhsZW47XFxuK1xcdGlmIChpcF90dW5uZWxfaGVhZHJvb21fdG9vX2xhcmdlKGRldiwgKm5lZWRlZF9oZWFkcm9vbSkpIHtcXG4rXFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcXFwidHVubmVsIGhlYWRyb29tIGV4Y2VlZHMgc2tiIGhlYWRlciBvZmZzZXQgbGltaXRcXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FMkJJRztcXG4gXFx0fVxcbiBcXG4tXFx0ZGV2LVxcdTAwM2VuZWVkZWRfaGVhZHJvb20gPSB0X2hsZW4gKyBobGVuO1xcbi1cXHRtdHUgLT0gdF9obGVuICsgKGRldi1cXHUwMDNldHlwZSA9PSBBUlBIUkRfRVRIRVIgPyBkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbiA6IDApO1xcbitcXHQqbXR1IC09IHRfaGxlbiArIChkZXYtXFx1MDAzZXR5cGUgPT0gQVJQSFJEX0VUSEVSID8gZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW4gOiAwKTtcXG4rXFx0aWYgKCptdHUgXFx1MDAzYyBJUFY0X01JTl9NVFUpXFxuK1xcdFxcdCptdHUgPSBJUFY0X01JTl9NVFU7XFxuIFxcbi1cXHRpZiAobXR1IFxcdTAwM2MgSVBWNF9NSU5fTVRVKVxcbi1cXHRcXHRtdHUgPSBJUFY0X01JTl9NVFU7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IGlwX3R1bm5lbF9iaW5kX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgKm10dSxcXG4rXFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbit7XFxuK1xcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XFxuK1xcdHVuc2lnbmVkIGludCBuZWVkZWRfaGVhZHJvb207XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRlcnIgPSBpcF90dW5uZWxfY2FsY19kZXZfY29uZmlnKGRldiwgXFx1MDAyNnR1bm5lbC1cXHUwMDNlcGFybXMsIHR1bm5lbC1cXHUwMDNlZndtYXJrLFxcbitcXHRcXHRcXHRcXHRcXHRcXHUwMDI2bmVlZGVkX2hlYWRyb29tLCBtdHUsIGV4dGFjayk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbitcXHRpZiAodHVubmVsLVxcdTAwM2VwYXJtcy5pcGguZGFkZHIpIHtcXG4rXFx0XFx0aWYgKGRldi1cXHUwMDNldHlwZSAhPSBBUlBIUkRfRVRIRVIpXFxuK1xcdFxcdFxcdGRldi1cXHUwMDNlZmxhZ3MgfD0gSUZGX1BPSU5UT1BPSU5UO1xcbitcXHRcXHRkc3RfY2FjaGVfcmVzZXQoXFx1MDAyNnR1bm5lbC1cXHUwMDNlZHN0X2NhY2hlKTtcXG4rXFx0fVxcbitcXHRkZXYtXFx1MDAzZW5lZWRlZF9oZWFkcm9vbSA9IG5lZWRlZF9oZWFkcm9vbTtcXG4gXFxuLVxcdHJldHVybiBtdHU7XFxuK1xcdHJldHVybiAwO1xcbiB9XFxuIFxcbiBzdGF0aWMgc3RydWN0IGlwX3R1bm5lbCAqaXBfdHVubmVsX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsXFxuQEAgLTM0MCw3ICszNzgsOSBAQCBzdGF0aWMgc3RydWN0IGlwX3R1bm5lbCAqaXBfdHVubmVsX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsXFxuIFxcdGlmIChJU19FUlIoZGV2KSlcXG4gXFx0XFx0cmV0dXJuIEVSUl9DQVNUKGRldik7XFxuIFxcbi1cXHRtdHUgPSBpcF90dW5uZWxfYmluZF9kZXYoZGV2KTtcXG4rXFx0ZXJyID0gaXBfdHVubmVsX2JpbmRfZGV2KGRldiwgXFx1MDAyNm10dSwgTlVMTCk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdGdvdG8gZXJyX2Rldl9zZXRfbXR1O1xcbiBcXHRlcnIgPSBkZXZfc2V0X210dShkZXYsIG10dSk7XFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gZXJyX2Rldl9zZXRfbXR1O1xcbkBAIC04NTksMTMgKzg5OSwyMCBAQCB2b2lkIGlwX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwoaXBfdHVubmVsX3htaXQpO1xcbiBcXG4tc3RhdGljIHZvaWQgaXBfdHVubmVsX3VwZGF0ZShzdHJ1Y3QgaXBfdHVubmVsX25ldCAqaXRuLFxcbi1cXHRcXHRcXHQgICAgIHN0cnVjdCBpcF90dW5uZWwgKnQsXFxuLVxcdFxcdFxcdCAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tXFx0XFx0XFx0ICAgICBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCxcXG4tXFx0XFx0XFx0ICAgICBib29sIHNldF9tdHUsXFxuLVxcdFxcdFxcdCAgICAgX191MzIgZndtYXJrKVxcbitzdGF0aWMgaW50IGlwX3R1bm5lbF91cGRhdGUoc3RydWN0IGlwX3R1bm5lbF9uZXQgKml0bixcXG4rXFx0XFx0XFx0ICAgIHN0cnVjdCBpcF90dW5uZWwgKnQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuK1xcdFxcdFxcdCAgICBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCwgYm9vbCBzZXRfbXR1LFxcbitcXHRcXHRcXHQgICAgX191MzIgZndtYXJrLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuIHtcXG4rXFx0dW5zaWduZWQgaW50IG5lZWRlZF9oZWFkcm9vbTtcXG4rXFx0aW50IG10dTtcXG4rXFx0aW50IGVycjtcXG4rXFxuK1xcdGVyciA9IGlwX3R1bm5lbF9jYWxjX2Rldl9jb25maWcoZGV2LCBwLCBmd21hcmssIFxcdTAwMjZuZWVkZWRfaGVhZHJvb20sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdTAwMjZtdHUsIGV4dGFjayk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbiBcXHRpcF90dW5uZWxfZGVsKGl0biwgdCk7XFxuIFxcdHQtXFx1MDAzZXBhcm1zLmlwaC5zYWRkciA9IHAtXFx1MDAzZWlwaC5zYWRkcjtcXG4gXFx0dC1cXHUwMDNlcGFybXMuaXBoLmRhZGRyID0gcC1cXHUwMDNlaXBoLmRhZGRyO1xcbkBAIC04ODAsMTggKzkyNywxNSBAQCBzdGF0aWMgdm9pZCBpcF90dW5uZWxfdXBkYXRlKHN0cnVjdCBpcF90dW5uZWxfbmV0ICppdG4sXFxuIFxcdHQtXFx1MDAzZXBhcm1zLmlwaC50dGwgPSBwLVxcdTAwM2VpcGgudHRsO1xcbiBcXHR0LVxcdTAwM2VwYXJtcy5pcGgudG9zID0gcC1cXHUwMDNlaXBoLnRvcztcXG4gXFx0dC1cXHUwMDNlcGFybXMuaXBoLmZyYWdfb2ZmID0gcC1cXHUwMDNlaXBoLmZyYWdfb2ZmO1xcbi1cXG4tXFx0aWYgKHQtXFx1MDAzZXBhcm1zLmxpbmsgIT0gcC1cXHUwMDNlbGluayB8fCB0LVxcdTAwM2Vmd21hcmsgIT0gZndtYXJrKSB7XFxuLVxcdFxcdGludCBtdHU7XFxuLVxcbi1cXHRcXHRXUklURV9PTkNFKHQtXFx1MDAzZXBhcm1zLmxpbmssIHAtXFx1MDAzZWxpbmspO1xcbi1cXHRcXHR0LVxcdTAwM2Vmd21hcmsgPSBmd21hcms7XFxuLVxcdFxcdG10dSA9IGlwX3R1bm5lbF9iaW5kX2RldihkZXYpO1xcbi1cXHRcXHRpZiAoc2V0X210dSlcXG4tXFx0XFx0XFx0V1JJVEVfT05DRShkZXYtXFx1MDAzZW10dSwgbXR1KTtcXG4tXFx0fVxcbitcXHRXUklURV9PTkNFKHQtXFx1MDAzZXBhcm1zLmxpbmssIHAtXFx1MDAzZWxpbmspO1xcbitcXHR0LVxcdTAwM2Vmd21hcmsgPSBmd21hcms7XFxuK1xcdGRldi1cXHUwMDNlbmVlZGVkX2hlYWRyb29tID0gbmVlZGVkX2hlYWRyb29tO1xcbitcXHRpZiAoc2V0X210dSlcXG4rXFx0XFx0V1JJVEVfT05DRShkZXYtXFx1MDAzZW10dSwgbXR1KTtcXG4gXFx0ZHN0X2NhY2hlX3Jlc2V0KFxcdTAwMjZ0LVxcdTAwM2Vkc3RfY2FjaGUpO1xcbiBcXHRuZXRkZXZfc3RhdGVfY2hhbmdlKGRldik7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4gaW50IGlwX3R1bm5lbF9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAsXFxuQEAgLTk2Miw4ICsxMDA2LDcgQEAgaW50IGlwX3R1bm5lbF9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAsXFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGlmICh0KSB7XFxuLVxcdFxcdFxcdGVyciA9IDA7XFxuLVxcdFxcdFxcdGlwX3R1bm5lbF91cGRhdGUoaXRuLCB0LCBkZXYsIHAsIHRydWUsIDApO1xcbitcXHRcXHRcXHRlcnIgPSBpcF90dW5uZWxfdXBkYXRlKGl0biwgdCwgZGV2LCBwLCB0cnVlLCAwLCBOVUxMKTtcXG4gXFx0XFx0fSBlbHNlIHtcXG4gXFx0XFx0XFx0ZXJyID0gLUVOT0VOVDtcXG4gXFx0XFx0fVxcbkBAIC0xMTI4LDYgKzExNzEsNyBAQCBpbnQgaXBfdHVubmVsX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldCwgdW5zaWduZWQgaW50IGlwX3RubF9uZXRfaWQsXFxuIFxcdHN0cnVjdCBpcF90dW5uZWxfbmV0ICppdG4gPSBuZXRfZ2VuZXJpYyhuZXQsIGlwX3RubF9uZXRfaWQpO1xcbiBcXHRzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiBwYXJtcztcXG4gXFx0dW5zaWduZWQgaW50IGk7XFxuK1xcdGludCBtdHU7XFxuIFxcbiBcXHRpdG4tXFx1MDAzZXJ0bmxfbGlua19vcHMgPSBvcHM7XFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBJUF9UTkxfSEFTSF9TSVpFOyBpKyspXFxuQEAgLTExNTMsOSArMTE5NywxMSBAQCBpbnQgaXBfdHVubmVsX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldCwgdW5zaWduZWQgaW50IGlwX3RubF9uZXRfaWQsXFxuIFxcdCAqL1xcbiBcXHRpZiAoIUlTX0VSUihpdG4tXFx1MDAzZWZiX3R1bm5lbF9kZXYpKSB7XFxuIFxcdFxcdGl0bi1cXHUwMDNlZmJfdHVubmVsX2Rldi1cXHUwMDNlbmV0bnNfaW1tdXRhYmxlID0gdHJ1ZTtcXG4tXFx0XFx0aXRuLVxcdTAwM2VmYl90dW5uZWxfZGV2LVxcdTAwM2VtdHUgPSBpcF90dW5uZWxfYmluZF9kZXYoaXRuLVxcdTAwM2VmYl90dW5uZWxfZGV2KTtcXG4tXFx0XFx0aXBfdHVubmVsX2FkZChpdG4sIG5ldGRldl9wcml2KGl0bi1cXHUwMDNlZmJfdHVubmVsX2RldikpO1xcbi1cXHRcXHRpdG4tXFx1MDAzZXR5cGUgPSBpdG4tXFx1MDAzZWZiX3R1bm5lbF9kZXYtXFx1MDAzZXR5cGU7XFxuK1xcdFxcdGlmICghaXBfdHVubmVsX2JpbmRfZGV2KGl0bi1cXHUwMDNlZmJfdHVubmVsX2RldiwgXFx1MDAyNm10dSwgTlVMTCkpIHtcXG4rXFx0XFx0XFx0aXRuLVxcdTAwM2VmYl90dW5uZWxfZGV2LVxcdTAwM2VtdHUgPSBtdHU7XFxuK1xcdFxcdFxcdGlwX3R1bm5lbF9hZGQoaXRuLCBuZXRkZXZfcHJpdihpdG4tXFx1MDAzZWZiX3R1bm5lbF9kZXYpKTtcXG4rXFx0XFx0XFx0aXRuLVxcdTAwM2V0eXBlID0gaXRuLVxcdTAwM2VmYl90dW5uZWxfZGV2LVxcdTAwM2V0eXBlO1xcbitcXHRcXHR9XFxuIFxcdH1cXG4gXFx0cnRubF91bmxvY2soKTtcXG4gXFxuQEAgLTExOTQsNyArMTI0MCw3IEBAIEVYUE9SVF9TWU1CT0xfR1BMKGlwX3R1bm5lbF9kZWxldGVfbmV0KTtcXG4gXFxuIGludCBpcF90dW5uZWxfbmV3bGluayhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdCAgICAgIHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLFxcbi1cXHRcXHQgICAgICBfX3UzMiBmd21hcmspXFxuK1xcdFxcdCAgICAgIF9fdTMyIGZ3bWFyaywgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbiB7XFxuIFxcdHN0cnVjdCBpcF90dW5uZWwgKm50O1xcbiBcXHRzdHJ1Y3QgaXBfdHVubmVsX25ldCAqaXRuO1xcbkBAIC0xMjIyLDcgKzEyNjgsOSBAQCBpbnQgaXBfdHVubmVsX25ld2xpbmsoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRpZiAoZGV2LVxcdTAwM2V0eXBlID09IEFSUEhSRF9FVEhFUiBcXHUwMDI2XFx1MDAyNiAhdGJbSUZMQV9BRERSRVNTXSlcXG4gXFx0XFx0ZXRoX2h3X2FkZHJfcmFuZG9tKGRldik7XFxuIFxcbi1cXHRtdHUgPSBpcF90dW5uZWxfYmluZF9kZXYoZGV2KTtcXG4rXFx0ZXJyID0gaXBfdHVubmVsX2JpbmRfZGV2KGRldiwgXFx1MDAyNm10dSwgZXh0YWNrKTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0Z290byBlcnJfZGV2X3NldF9tdHU7XFxuIFxcdGlmICh0YltJRkxBX01UVV0pIHtcXG4gXFx0XFx0dW5zaWduZWQgaW50IG1heCA9IElQX01BWF9NVFUgLSAobnQtXFx1MDAzZWhsZW4gKyBzaXplb2Yoc3RydWN0IGlwaGRyKSk7XFxuIFxcbkBAIC0xMjQ3LDcgKzEyOTUsOCBAQCBpbnQgaXBfdHVubmVsX25ld2xpbmsoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBFWFBPUlRfU1lNQk9MX0dQTChpcF90dW5uZWxfbmV3bGluayk7XFxuIFxcbiBpbnQgaXBfdHVubmVsX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG4tXFx0XFx0XFx0IHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLCBfX3UzMiBmd21hcmspXFxuK1xcdFxcdFxcdCBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCwgX191MzIgZndtYXJrLFxcbitcXHRcXHRcXHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbiB7XFxuIFxcdHN0cnVjdCBpcF90dW5uZWwgKnQ7XFxuIFxcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XFxuQEAgLTEyNzksOCArMTMyOCw3IEBAIGludCBpcF90dW5uZWxfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuLVxcdGlwX3R1bm5lbF91cGRhdGUoaXRuLCB0LCBkZXYsIHAsICF0YltJRkxBX01UVV0sIGZ3bWFyayk7XFxuLVxcdHJldHVybiAwO1xcbitcXHRyZXR1cm4gaXBfdHVubmVsX3VwZGF0ZShpdG4sIHQsIGRldiwgcCwgIXRiW0lGTEFfTVRVXSwgZndtYXJrLCBleHRhY2spO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKGlwX3R1bm5lbF9jaGFuZ2VsaW5rKTtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX3Z0aS5jIGIvbmV0L2lwdjQvaXBfdnRpLmNcXG5pbmRleCAzYjgwOTI5OTk0YTAwLi4xOGI2MzgyYjQ2ZTZkIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L2lwX3Z0aS5jXFxuKysrIGIvbmV0L2lwdjQvaXBfdnRpLmNcXG5AQCAtNTg1LDcgKzU4NSw3IEBAIHN0YXRpYyBpbnQgdnRpX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFxuIFxcdHZ0aV9uZXRsaW5rX3Bhcm1zKGRhdGEsIFxcdTAwMjZwYXJtcywgXFx1MDAyNmZ3bWFyayk7XFxuIFxcdHJldHVybiBpcF90dW5uZWxfbmV3bGluayhwYXJhbXMtXFx1MDAzZWxpbmtfbmV0ID8gOiBkZXZfbmV0KGRldiksIGRldiwgdGIsXFxuLVxcdFxcdFxcdFxcdCBcXHUwMDI2cGFybXMsIGZ3bWFyayk7XFxuK1xcdFxcdFxcdFxcdCBcXHUwMDI2cGFybXMsIGZ3bWFyaywgZXh0YWNrKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCB2dGlfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbkBAIC02MDAsNyArNjAwLDcgQEAgc3RhdGljIGludCB2dGlfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbiBcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbiBcXG4gXFx0dnRpX25ldGxpbmtfcGFybXMoZGF0YSwgXFx1MDAyNnAsIFxcdTAwMjZmd21hcmspO1xcbi1cXHRyZXR1cm4gaXBfdHVubmVsX2NoYW5nZWxpbmsoZGV2LCB0YiwgXFx1MDAyNnAsIGZ3bWFyayk7XFxuK1xcdHJldHVybiBpcF90dW5uZWxfY2hhbmdlbGluayhkZXYsIHRiLCBcXHUwMDI2cCwgZndtYXJrLCBleHRhY2spO1xcbiB9XFxuIFxcbiBzdGF0aWMgc2l6ZV90IHZ0aV9nZXRfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcGlwLmMgYi9uZXQvaXB2NC9pcGlwLmNcXG5pbmRleCBiNjQzMTk0ZjU3ZDI5Li4xNjg0YTgxYTkzNTJmIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L2lwaXAuY1xcbisrKyBiL25ldC9pcHY0L2lwaXAuY1xcbkBAIC00ODEsNyArNDgxLDcgQEAgc3RhdGljIGludCBpcGlwX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFxuIFxcdGlwaXBfbmV0bGlua19wYXJtcyhkYXRhLCBcXHUwMDI2cCwgXFx1MDAyNnQtXFx1MDAzZWNvbGxlY3RfbWQsIFxcdTAwMjZmd21hcmspO1xcbiBcXHRyZXR1cm4gaXBfdHVubmVsX25ld2xpbmsocGFyYW1zLVxcdTAwM2VsaW5rX25ldCA/IDogZGV2X25ldChkZXYpLCBkZXYsIHRiLCBcXHUwMDI2cCxcXG4tXFx0XFx0XFx0XFx0IGZ3bWFyayk7XFxuK1xcdFxcdFxcdFxcdCBmd21hcmssIGV4dGFjayk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgaXBpcF9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxuQEAgLTUxMiw3ICs1MTIsNyBAQCBzdGF0aWMgaW50IGlwaXBfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbiBcXHQgICAgKCEoZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9QT0lOVE9QT0lOVCkgXFx1MDAyNlxcdTAwMjYgcC5pcGguZGFkZHIpKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuLVxcdHJldHVybiBpcF90dW5uZWxfY2hhbmdlbGluayhkZXYsIHRiLCBcXHUwMDI2cCwgZndtYXJrKTtcXG4rXFx0cmV0dXJuIGlwX3R1bm5lbF9jaGFuZ2VsaW5rKGRldiwgdGIsIFxcdTAwMjZwLCBmd21hcmssIGV4dGFjayk7XFxuIH1cXG4gXFxuIHN0YXRpYyBzaXplX3QgaXBpcF9nZXRfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9yYXcuYyBiL25ldC9pcHY0L3Jhdy5jXFxuaW5kZXggN2Y3NGQ4Yjk1YTM3My4uOGU2ZThjNjg0OGIxNyAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC9yYXcuY1xcbisrKyBiL25ldC9pcHY0L3Jhdy5jXFxuQEAgLTQzLDYgKzQzLDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NsYWIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Vycm5vLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2xpbWl0cy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZXhwb3J0LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zcGlubG9jay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc29ja2lvcy5oXFx1MDAzZVxcbkBAIC0zNTYsNiArMzU3LDggQEAgc3RhdGljIGludCByYXdfc2VuZF9oZHJpbmMoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgZmxvd2k0ICpmbDQsXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXG4gXFx0aGxlbiA9IExMX1JFU0VSVkVEX1NQQUNFKHJ0LVxcdTAwM2Vkc3QuZGV2KTtcXG4rXFx0aWYgKGhsZW4gXFx1MDAzZT0gVTE2X01BWCAtIChzaXplb2Yoc3RydWN0IGlwaGRyKSArIE1BWF9JUE9QVExFTikpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR0bGVuID0gcnQtXFx1MDAzZWRzdC5kZXYtXFx1MDAzZW5lZWRlZF90YWlscm9vbTtcXG4gXFx0c2tiID0gc29ja19hbGxvY19zZW5kX3NrYihzayxcXG4gXFx0XFx0XFx0XFx0ICBsZW5ndGggKyBobGVuICsgdGxlbiArIDE1LFxcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yYXcuYyBiL25ldC9pcHY2L3Jhdy5jXFxuaW5kZXggYjg4ZDM2NGU3OGFhZS4uZmEyMjNlYzAyMzk2NCAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni9yYXcuY1xcbisrKyBiL25ldC9pcHY2L3Jhdy5jXFxuQEAgLTE1LDYgKzE1LDcgQEBcXG4gICovXFxuIFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZXJybm8uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2xpbWl0cy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvdHlwZXMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NvY2tldC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc2xhYi5oXFx1MDAzZVxcbkBAIC02MTMsNiArNjE0LDkgQEAgc3RhdGljIGludCByYXd2Nl9zZW5kX2hkcmluYyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbmd0aCxcXG4gXFx0aWYgKGZsYWdzXFx1MDAyNk1TR19QUk9CRSlcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcbitcXHRpZiAoaGxlbiBcXHUwMDNlPSBVMTZfTUFYKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuIFxcdHNrYiA9IHNvY2tfYWxsb2Nfc2VuZF9za2Ioc2ssXFxuIFxcdFxcdFxcdFxcdCAgbGVuZ3RoICsgaGxlbiArIHRsZW4gKyAxNSxcXG4gXFx0XFx0XFx0XFx0ICBmbGFncyBcXHUwMDI2IE1TR19ET05UV0FJVCwgXFx1MDAyNmVycik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjMzOjI5LjQ4MjM3ODA0NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE0MzM3ODE4NjI2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfSVBJUFwiLFxuICAgIFwiTkVUX0lQR1JFX0RFTVVYXCIsXG4gICAgXCJORVRfSVBHUkVcIixcbiAgICBcIk5FVF9JUFZUSVwiLFxuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3R1bm5lbF9uZXdsaW5rXCIsXG4gICAgXCJpcF90dW5uZWxfY2hhbmdlbGlua1wiLFxuICAgIFwicmF3X3NlbmRtc2dcIixcbiAgICBcInJhd3Y2X3NlbmRtc2dcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGhlYWRyb29tIHNpemUgdmFsaWRhdGlvbiB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3dzIHdoZW4gY3JlYXRpbmcgb3IgbW9kaWZ5aW5nIElQIHR1bm5lbHMgKEdSRSwgSVBJUCwgVlRJKSBhbmQgd2hlbiBzZW5kaW5nIHBhY2tldHMgdmlhIHJhdyBJUHY0L0lQdjYgc29ja2V0cy4gSXQgbW9kaWZpZXMgY29yZSB0dW5uZWwgbmV0bGluayBjYWxsYmFja3MgYW5kIHJhdyBzb2NrZXQgc2VuZG1zZyBwYXRocywgd2hpY2ggYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjEzNzNhYWUwMzUwOTZjMzIyNDA4OTBkOWQ2MTRjMDI2N2RjMzFiNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMDA6MzM6MjggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pcF90dW5uZWxzLmggYi9pbmNsdWRlL25ldC9pcF90dW5uZWxzLmhcbmluZGV4IGQ3MDhiNjZlNTVjZGEuLjAxMDJmZTM4N2IwYWQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9pcF90dW5uZWxzLmhcbisrKyBiL2luY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaFxuQEAgLTQyNSwxMCArNDI1LDExIEBAIGludCBpcF90dW5uZWxfcmN2KHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0ICBjb25zdCBzdHJ1Y3QgdG5sX3B0a19pbmZvICp0cGksIHN0cnVjdCBtZXRhZGF0YV9kc3QgKnR1bl9kc3QsXG4gXHRcdCAgYm9vbCBsb2dfZWNuX2Vycm9yKTtcbiBpbnQgaXBfdHVubmVsX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbi1cdFx0XHQgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAsIF9fdTMyIGZ3bWFyayk7XG4rXHRcdFx0IHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLCBfX3UzMiBmd21hcmssXG4rXHRcdFx0IHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XG4gaW50IGlwX3R1bm5lbF9uZXdsaW5rKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0ICAgICAgc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAsXG4tXHRcdCAgICAgIF9fdTMyIGZ3bWFyayk7XG4rXHRcdCAgICAgIF9fdTMyIGZ3bWFyaywgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcbiB2b2lkIGlwX3R1bm5lbF9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgbmV0X2lkKTtcbiBcbiBib29sIGlwX3R1bm5lbF9uZXRsaW5rX2VuY2FwX3Bhcm1zKHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF9ncmUuYyBiL25ldC9pcHY0L2lwX2dyZS5jXG5pbmRleCAwYmExZTk0ZTkwMTJjLi42OTA3Njg4ZDA1YmMxIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaXBfZ3JlLmNcbisrKyBiL25ldC9pcHY0L2lwX2dyZS5jXG5AQCAtMTQyNCw3ICsxNDI0LDcgQEAgc3RhdGljIGludCBpcGdyZV9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFx0cmV0dXJuIGlwX3R1bm5lbF9uZXdsaW5rKHBhcmFtcy1cdTAwM2VsaW5rX25ldCA/IDogZGV2X25ldChkZXYpLCBkZXYsIHRiLCBcdTAwMjZwLFxuLVx0XHRcdFx0IGZ3bWFyayk7XG4rXHRcdFx0XHQgZndtYXJrLCBleHRhY2spO1xuIH1cbiBcbiBzdGF0aWMgaW50IGVyc3Bhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5AQCAtMTQ0NSw3ICsxNDQ1LDcgQEAgc3RhdGljIGludCBlcnNwYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcdHJldHVybiBpcF90dW5uZWxfbmV3bGluayhwYXJhbXMtXHUwMDNlbGlua19uZXQgPyA6IGRldl9uZXQoZGV2KSwgZGV2LCB0YiwgXHUwMDI2cCxcbi1cdFx0XHRcdCBmd21hcmspO1xuK1x0XHRcdFx0IGZ3bWFyaywgZXh0YWNrKTtcbiB9XG4gXG4gc3RhdGljIGludCBpcGdyZV9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5AQCAtMTQ2OCw3ICsxNDY4LDcgQEAgc3RhdGljIGludCBpcGdyZV9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuLVx0ZXJyID0gaXBfdHVubmVsX2NoYW5nZWxpbmsoZGV2LCB0YiwgXHUwMDI2cCwgZndtYXJrKTtcbitcdGVyciA9IGlwX3R1bm5lbF9jaGFuZ2VsaW5rKGRldiwgdGIsIFx1MDAyNnAsIGZ3bWFyaywgZXh0YWNrKTtcbiBcdGlmIChlcnIgXHUwMDNjIDApXG4gXHRcdHJldHVybiBlcnI7XG4gXG5AQCAtMTUwMCw3ICsxNTAwLDcgQEAgc3RhdGljIGludCBlcnNwYW5fY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuIFx0aWYgKGVyciBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIGVycjtcbiBcbi1cdGVyciA9IGlwX3R1bm5lbF9jaGFuZ2VsaW5rKGRldiwgdGIsIFx1MDAyNnAsIGZ3bWFyayk7XG4rXHRlcnIgPSBpcF90dW5uZWxfY2hhbmdlbGluayhkZXYsIHRiLCBcdTAwMjZwLCBmd21hcmssIGV4dGFjayk7XG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX3R1bm5lbC5jIGIvbmV0L2lwdjQvaXBfdHVubmVsLmNcbmluZGV4IDlkMTE0YmQ1NzVmOTIuLjVlNGY1NmMwZTNlNWQgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9pcF90dW5uZWwuY1xuKysrIGIvbmV0L2lwdjQvaXBfdHVubmVsLmNcbkBAIC05LDYgKzksNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbGltaXRzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91YWNjZXNzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9za2J1ZmYuaFx1MDAzZVxuQEAgLTI3NywxNiArMjc4LDMxIEBAIHN0YXRpYyBzdHJ1Y3QgbmV0X2RldmljZSAqX19pcF90dW5uZWxfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCxcbiBcdHJldHVybiBFUlJfUFRSKGVycik7XG4gfVxuIFxuLXN0YXRpYyBpbnQgaXBfdHVubmVsX2JpbmRfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4rc3RhdGljIGJvb2wgaXBfdHVubmVsX2hlYWRyb29tX3Rvb19sYXJnZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuK1x0XHRcdFx0XHQgdW5zaWduZWQgaW50IG5lZWRlZF9oZWFkcm9vbSlcbit7XG4rXHR1bnNpZ25lZCBpbnQgaGxlbjtcbitcbitcdGhsZW4gPSAoKGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4gKyBuZWVkZWRfaGVhZHJvb20pIFx1MDAyNlxuK1x0XHR+KEhIX0RBVEFfTU9EIC0gMSkpICsgSEhfREFUQV9NT0Q7XG4rXG4rXHRyZXR1cm4gaGxlbiBcdTAwM2U9IFUxNl9NQVggLSAoc2l6ZW9mKHN0cnVjdCBpcGhkcikgKyBNQVhfSVBPUFRMRU4pO1xuK31cbitcbitzdGF0aWMgaW50IGlwX3R1bm5lbF9jYWxjX2Rldl9jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbitcdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnBhcm1zLFxuK1x0XHRcdFx0ICAgICBfX3UzMiBmd21hcmssXG4rXHRcdFx0XHQgICAgIHVuc2lnbmVkIGludCAqbmVlZGVkX2hlYWRyb29tLFxuK1x0XHRcdFx0ICAgICBpbnQgKm10dSxcbitcdFx0XHRcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICp0ZGV2ID0gTlVMTDtcbiBcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XG4tXHRjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaDtcbitcdGNvbnN0IHN0cnVjdCBpcGhkciAqaXBoID0gXHUwMDI2cGFybXMtXHUwMDNlaXBoO1xuIFx0aW50IGhsZW4gPSBMTF9NQVhfSEVBREVSO1xuLVx0aW50IG10dSA9IEVUSF9EQVRBX0xFTjtcbiBcdGludCB0X2hsZW4gPSB0dW5uZWwtXHUwMDNlaGxlbiArIHNpemVvZihzdHJ1Y3QgaXBoZHIpO1xuIFxuLVx0aXBoID0gXHUwMDI2dHVubmVsLVx1MDAzZXBhcm1zLmlwaDtcbitcdCptdHUgPSBFVEhfREFUQV9MRU47XG4gXG4gXHQvKiBHdWVzcyBvdXRwdXQgZGV2aWNlIHRvIGNob29zZSByZWFzb25hYmxlIG10dSBhbmQgbmVlZGVkX2hlYWRyb29tICovXG4gXHRpZiAoaXBoLVx1MDAzZWRhZGRyKSB7XG5AQCAtMjk0LDM2ICszMTAsNTggQEAgc3RhdGljIGludCBpcF90dW5uZWxfYmluZF9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0c3RydWN0IHJ0YWJsZSAqcnQ7XG4gXG4gXHRcdGlwX3R1bm5lbF9pbml0X2Zsb3coXHUwMDI2Zmw0LCBpcGgtXHUwMDNlcHJvdG9jb2wsIGlwaC1cdTAwM2VkYWRkcixcbi1cdFx0XHRcdCAgICBpcGgtXHUwMDNlc2FkZHIsIHR1bm5lbC1cdTAwM2VwYXJtcy5vX2tleSxcbitcdFx0XHRcdCAgICBpcGgtXHUwMDNlc2FkZHIsIHBhcm1zLVx1MDAzZW9fa2V5LFxuIFx0XHRcdFx0ICAgIGlwaC1cdTAwM2V0b3MgXHUwMDI2IElORVRfRFNDUF9NQVNLLCB0dW5uZWwtXHUwMDNlbmV0LFxuLVx0XHRcdFx0ICAgIHR1bm5lbC1cdTAwM2VwYXJtcy5saW5rLCB0dW5uZWwtXHUwMDNlZndtYXJrLCAwLCAwKTtcbitcdFx0XHRcdCAgICBwYXJtcy1cdTAwM2VsaW5rLCBmd21hcmssIDAsIDApO1xuIFx0XHRydCA9IGlwX3JvdXRlX291dHB1dF9rZXkodHVubmVsLVx1MDAzZW5ldCwgXHUwMDI2Zmw0KTtcbiBcbiBcdFx0aWYgKCFJU19FUlIocnQpKSB7XG4gXHRcdFx0dGRldiA9IHJ0LVx1MDAzZWRzdC5kZXY7XG4gXHRcdFx0aXBfcnRfcHV0KHJ0KTtcbiBcdFx0fVxuLVx0XHRpZiAoZGV2LVx1MDAzZXR5cGUgIT0gQVJQSFJEX0VUSEVSKVxuLVx0XHRcdGRldi1cdTAwM2VmbGFncyB8PSBJRkZfUE9JTlRPUE9JTlQ7XG4tXG4tXHRcdGRzdF9jYWNoZV9yZXNldChcdTAwMjZ0dW5uZWwtXHUwMDNlZHN0X2NhY2hlKTtcbiBcdH1cbiBcbi1cdGlmICghdGRldiBcdTAwMjZcdTAwMjYgdHVubmVsLVx1MDAzZXBhcm1zLmxpbmspXG4tXHRcdHRkZXYgPSBfX2Rldl9nZXRfYnlfaW5kZXgodHVubmVsLVx1MDAzZW5ldCwgdHVubmVsLVx1MDAzZXBhcm1zLmxpbmspO1xuK1x0aWYgKCF0ZGV2IFx1MDAyNlx1MDAyNiBwYXJtcy1cdTAwM2VsaW5rKVxuK1x0XHR0ZGV2ID0gX19kZXZfZ2V0X2J5X2luZGV4KHR1bm5lbC1cdTAwM2VuZXQsIHBhcm1zLVx1MDAzZWxpbmspO1xuIFxuIFx0aWYgKHRkZXYpIHtcbiBcdFx0aGxlbiA9IHRkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuICsgdGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb207XG4tXHRcdG10dSA9IG1pbih0ZGV2LVx1MDAzZW10dSwgSVBfTUFYX01UVSk7XG4rXHRcdCptdHUgPSBtaW4odGRldi1cdTAwM2VtdHUsIElQX01BWF9NVFUpO1xuK1x0fVxuK1xuK1x0Km5lZWRlZF9oZWFkcm9vbSA9IHRfaGxlbiArIGhsZW47XG4rXHRpZiAoaXBfdHVubmVsX2hlYWRyb29tX3Rvb19sYXJnZShkZXYsICpuZWVkZWRfaGVhZHJvb20pKSB7XG4rXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCJ0dW5uZWwgaGVhZHJvb20gZXhjZWVkcyBza2IgaGVhZGVyIG9mZnNldCBsaW1pdFwiKTtcbitcdFx0cmV0dXJuIC1FMkJJRztcbiBcdH1cbiBcbi1cdGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20gPSB0X2hsZW4gKyBobGVuO1xuLVx0bXR1IC09IHRfaGxlbiArIChkZXYtXHUwMDNldHlwZSA9PSBBUlBIUkRfRVRIRVIgPyBkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuIDogMCk7XG4rXHQqbXR1IC09IHRfaGxlbiArIChkZXYtXHUwMDNldHlwZSA9PSBBUlBIUkRfRVRIRVIgPyBkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuIDogMCk7XG4rXHRpZiAoKm10dSBcdTAwM2MgSVBWNF9NSU5fTVRVKVxuK1x0XHQqbXR1ID0gSVBWNF9NSU5fTVRVO1xuIFxuLVx0aWYgKG10dSBcdTAwM2MgSVBWNF9NSU5fTVRVKVxuLVx0XHRtdHUgPSBJUFY0X01JTl9NVFU7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCBpcF90dW5uZWxfYmluZF9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50ICptdHUsXG4rXHRcdFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuK3tcbitcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XG4rXHR1bnNpZ25lZCBpbnQgbmVlZGVkX2hlYWRyb29tO1xuK1x0aW50IGVycjtcbitcbitcdGVyciA9IGlwX3R1bm5lbF9jYWxjX2Rldl9jb25maWcoZGV2LCBcdTAwMjZ0dW5uZWwtXHUwMDNlcGFybXMsIHR1bm5lbC1cdTAwM2Vmd21hcmssXG4rXHRcdFx0XHRcdFx1MDAyNm5lZWRlZF9oZWFkcm9vbSwgbXR1LCBleHRhY2spO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbitcbitcdGlmICh0dW5uZWwtXHUwMDNlcGFybXMuaXBoLmRhZGRyKSB7XG4rXHRcdGlmIChkZXYtXHUwMDNldHlwZSAhPSBBUlBIUkRfRVRIRVIpXG4rXHRcdFx0ZGV2LVx1MDAzZWZsYWdzIHw9IElGRl9QT0lOVE9QT0lOVDtcbitcdFx0ZHN0X2NhY2hlX3Jlc2V0KFx1MDAyNnR1bm5lbC1cdTAwM2Vkc3RfY2FjaGUpO1xuK1x0fVxuK1x0ZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbSA9IG5lZWRlZF9oZWFkcm9vbTtcbiBcbi1cdHJldHVybiBtdHU7XG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIHN0cnVjdCBpcF90dW5uZWwgKmlwX3R1bm5lbF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LFxuQEAgLTM0MCw3ICszNzgsOSBAQCBzdGF0aWMgc3RydWN0IGlwX3R1bm5lbCAqaXBfdHVubmVsX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRpZiAoSVNfRVJSKGRldikpXG4gXHRcdHJldHVybiBFUlJfQ0FTVChkZXYpO1xuIFxuLVx0bXR1ID0gaXBfdHVubmVsX2JpbmRfZGV2KGRldik7XG4rXHRlcnIgPSBpcF90dW5uZWxfYmluZF9kZXYoZGV2LCBcdTAwMjZtdHUsIE5VTEwpO1xuK1x0aWYgKGVycilcbitcdFx0Z290byBlcnJfZGV2X3NldF9tdHU7XG4gXHRlcnIgPSBkZXZfc2V0X210dShkZXYsIG10dSk7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGVycl9kZXZfc2V0X210dTtcbkBAIC04NTksMTMgKzg5OSwyMCBAQCB2b2lkIGlwX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKGlwX3R1bm5lbF94bWl0KTtcbiBcbi1zdGF0aWMgdm9pZCBpcF90dW5uZWxfdXBkYXRlKHN0cnVjdCBpcF90dW5uZWxfbmV0ICppdG4sXG4tXHRcdFx0ICAgICBzdHJ1Y3QgaXBfdHVubmVsICp0LFxuLVx0XHRcdCAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi1cdFx0XHQgICAgIHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLFxuLVx0XHRcdCAgICAgYm9vbCBzZXRfbXR1LFxuLVx0XHRcdCAgICAgX191MzIgZndtYXJrKVxuK3N0YXRpYyBpbnQgaXBfdHVubmVsX3VwZGF0ZShzdHJ1Y3QgaXBfdHVubmVsX25ldCAqaXRuLFxuK1x0XHRcdCAgICBzdHJ1Y3QgaXBfdHVubmVsICp0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuK1x0XHRcdCAgICBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCwgYm9vbCBzZXRfbXR1LFxuK1x0XHRcdCAgICBfX3UzMiBmd21hcmssIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiB7XG4rXHR1bnNpZ25lZCBpbnQgbmVlZGVkX2hlYWRyb29tO1xuK1x0aW50IG10dTtcbitcdGludCBlcnI7XG4rXG4rXHRlcnIgPSBpcF90dW5uZWxfY2FsY19kZXZfY29uZmlnKGRldiwgcCwgZndtYXJrLCBcdTAwMjZuZWVkZWRfaGVhZHJvb20sXG4rXHRcdFx0XHRcdFx1MDAyNm10dSwgZXh0YWNrKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4rXG4gXHRpcF90dW5uZWxfZGVsKGl0biwgdCk7XG4gXHR0LVx1MDAzZXBhcm1zLmlwaC5zYWRkciA9IHAtXHUwMDNlaXBoLnNhZGRyO1xuIFx0dC1cdTAwM2VwYXJtcy5pcGguZGFkZHIgPSBwLVx1MDAzZWlwaC5kYWRkcjtcbkBAIC04ODAsMTggKzkyNywxNSBAQCBzdGF0aWMgdm9pZCBpcF90dW5uZWxfdXBkYXRlKHN0cnVjdCBpcF90dW5uZWxfbmV0ICppdG4sXG4gXHR0LVx1MDAzZXBhcm1zLmlwaC50dGwgPSBwLVx1MDAzZWlwaC50dGw7XG4gXHR0LVx1MDAzZXBhcm1zLmlwaC50b3MgPSBwLVx1MDAzZWlwaC50b3M7XG4gXHR0LVx1MDAzZXBhcm1zLmlwaC5mcmFnX29mZiA9IHAtXHUwMDNlaXBoLmZyYWdfb2ZmO1xuLVxuLVx0aWYgKHQtXHUwMDNlcGFybXMubGluayAhPSBwLVx1MDAzZWxpbmsgfHwgdC1cdTAwM2Vmd21hcmsgIT0gZndtYXJrKSB7XG4tXHRcdGludCBtdHU7XG4tXG4tXHRcdFdSSVRFX09OQ0UodC1cdTAwM2VwYXJtcy5saW5rLCBwLVx1MDAzZWxpbmspO1xuLVx0XHR0LVx1MDAzZWZ3bWFyayA9IGZ3bWFyaztcbi1cdFx0bXR1ID0gaXBfdHVubmVsX2JpbmRfZGV2KGRldik7XG4tXHRcdGlmIChzZXRfbXR1KVxuLVx0XHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZW10dSwgbXR1KTtcbi1cdH1cbitcdFdSSVRFX09OQ0UodC1cdTAwM2VwYXJtcy5saW5rLCBwLVx1MDAzZWxpbmspO1xuK1x0dC1cdTAwM2Vmd21hcmsgPSBmd21hcms7XG4rXHRkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tID0gbmVlZGVkX2hlYWRyb29tO1xuK1x0aWYgKHNldF9tdHUpXG4rXHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZW10dSwgbXR1KTtcbiBcdGRzdF9jYWNoZV9yZXNldChcdTAwMjZ0LVx1MDAzZWRzdF9jYWNoZSk7XG4gXHRuZXRkZXZfc3RhdGVfY2hhbmdlKGRldik7XG4rXG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gaW50IGlwX3R1bm5lbF9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAsXG5AQCAtOTYyLDggKzEwMDYsNyBAQCBpbnQgaXBfdHVubmVsX2N0bChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCxcbiBcdFx0fVxuIFxuIFx0XHRpZiAodCkge1xuLVx0XHRcdGVyciA9IDA7XG4tXHRcdFx0aXBfdHVubmVsX3VwZGF0ZShpdG4sIHQsIGRldiwgcCwgdHJ1ZSwgMCk7XG4rXHRcdFx0ZXJyID0gaXBfdHVubmVsX3VwZGF0ZShpdG4sIHQsIGRldiwgcCwgdHJ1ZSwgMCwgTlVMTCk7XG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0ZXJyID0gLUVOT0VOVDtcbiBcdFx0fVxuQEAgLTExMjgsNiArMTE3MSw3IEBAIGludCBpcF90dW5uZWxfaW5pdF9uZXQoc3RydWN0IG5ldCAqbmV0LCB1bnNpZ25lZCBpbnQgaXBfdG5sX25ldF9pZCxcbiBcdHN0cnVjdCBpcF90dW5uZWxfbmV0ICppdG4gPSBuZXRfZ2VuZXJpYyhuZXQsIGlwX3RubF9uZXRfaWQpO1xuIFx0c3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gcGFybXM7XG4gXHR1bnNpZ25lZCBpbnQgaTtcbitcdGludCBtdHU7XG4gXG4gXHRpdG4tXHUwMDNlcnRubF9saW5rX29wcyA9IG9wcztcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIElQX1ROTF9IQVNIX1NJWkU7IGkrKylcbkBAIC0xMTUzLDkgKzExOTcsMTEgQEAgaW50IGlwX3R1bm5lbF9pbml0X25ldChzdHJ1Y3QgbmV0ICpuZXQsIHVuc2lnbmVkIGludCBpcF90bmxfbmV0X2lkLFxuIFx0ICovXG4gXHRpZiAoIUlTX0VSUihpdG4tXHUwMDNlZmJfdHVubmVsX2RldikpIHtcbiBcdFx0aXRuLVx1MDAzZWZiX3R1bm5lbF9kZXYtXHUwMDNlbmV0bnNfaW1tdXRhYmxlID0gdHJ1ZTtcbi1cdFx0aXRuLVx1MDAzZWZiX3R1bm5lbF9kZXYtXHUwMDNlbXR1ID0gaXBfdHVubmVsX2JpbmRfZGV2KGl0bi1cdTAwM2VmYl90dW5uZWxfZGV2KTtcbi1cdFx0aXBfdHVubmVsX2FkZChpdG4sIG5ldGRldl9wcml2KGl0bi1cdTAwM2VmYl90dW5uZWxfZGV2KSk7XG4tXHRcdGl0bi1cdTAwM2V0eXBlID0gaXRuLVx1MDAzZWZiX3R1bm5lbF9kZXYtXHUwMDNldHlwZTtcbitcdFx0aWYgKCFpcF90dW5uZWxfYmluZF9kZXYoaXRuLVx1MDAzZWZiX3R1bm5lbF9kZXYsIFx1MDAyNm10dSwgTlVMTCkpIHtcbitcdFx0XHRpdG4tXHUwMDNlZmJfdHVubmVsX2Rldi1cdTAwM2VtdHUgPSBtdHU7XG4rXHRcdFx0aXBfdHVubmVsX2FkZChpdG4sIG5ldGRldl9wcml2KGl0bi1cdTAwM2VmYl90dW5uZWxfZGV2KSk7XG4rXHRcdFx0aXRuLVx1MDAzZXR5cGUgPSBpdG4tXHUwMDNlZmJfdHVubmVsX2Rldi1cdTAwM2V0eXBlO1xuK1x0XHR9XG4gXHR9XG4gXHRydG5sX3VubG9jaygpO1xuIFxuQEAgLTExOTQsNyArMTI0MCw3IEBAIEVYUE9SVF9TWU1CT0xfR1BMKGlwX3R1bm5lbF9kZWxldGVfbmV0KTtcbiBcbiBpbnQgaXBfdHVubmVsX25ld2xpbmsoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHQgICAgICBzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCxcbi1cdFx0ICAgICAgX191MzIgZndtYXJrKVxuK1x0XHQgICAgICBfX3UzMiBmd21hcmssIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiB7XG4gXHRzdHJ1Y3QgaXBfdHVubmVsICpudDtcbiBcdHN0cnVjdCBpcF90dW5uZWxfbmV0ICppdG47XG5AQCAtMTIyMiw3ICsxMjY4LDkgQEAgaW50IGlwX3R1bm5lbF9uZXdsaW5rKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGlmIChkZXYtXHUwMDNldHlwZSA9PSBBUlBIUkRfRVRIRVIgXHUwMDI2XHUwMDI2ICF0YltJRkxBX0FERFJFU1NdKVxuIFx0XHRldGhfaHdfYWRkcl9yYW5kb20oZGV2KTtcbiBcbi1cdG10dSA9IGlwX3R1bm5lbF9iaW5kX2RldihkZXYpO1xuK1x0ZXJyID0gaXBfdHVubmVsX2JpbmRfZGV2KGRldiwgXHUwMDI2bXR1LCBleHRhY2spO1xuK1x0aWYgKGVycilcbitcdFx0Z290byBlcnJfZGV2X3NldF9tdHU7XG4gXHRpZiAodGJbSUZMQV9NVFVdKSB7XG4gXHRcdHVuc2lnbmVkIGludCBtYXggPSBJUF9NQVhfTVRVIC0gKG50LVx1MDAzZWhsZW4gKyBzaXplb2Yoc3RydWN0IGlwaGRyKSk7XG4gXG5AQCAtMTI0Nyw3ICsxMjk1LDggQEAgaW50IGlwX3R1bm5lbF9uZXdsaW5rKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBFWFBPUlRfU1lNQk9MX0dQTChpcF90dW5uZWxfbmV3bGluayk7XG4gXG4gaW50IGlwX3R1bm5lbF9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG4tXHRcdFx0IHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLCBfX3UzMiBmd21hcmspXG4rXHRcdFx0IHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLCBfX3UzMiBmd21hcmssXG4rXHRcdFx0IHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiB7XG4gXHRzdHJ1Y3QgaXBfdHVubmVsICp0O1xuIFx0c3RydWN0IGlwX3R1bm5lbCAqdHVubmVsID0gbmV0ZGV2X3ByaXYoZGV2KTtcbkBAIC0xMjc5LDggKzEzMjgsNyBAQCBpbnQgaXBfdHVubmVsX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbiBcdFx0fVxuIFx0fVxuIFxuLVx0aXBfdHVubmVsX3VwZGF0ZShpdG4sIHQsIGRldiwgcCwgIXRiW0lGTEFfTVRVXSwgZndtYXJrKTtcbi1cdHJldHVybiAwO1xuK1x0cmV0dXJuIGlwX3R1bm5lbF91cGRhdGUoaXRuLCB0LCBkZXYsIHAsICF0YltJRkxBX01UVV0sIGZ3bWFyaywgZXh0YWNrKTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoaXBfdHVubmVsX2NoYW5nZWxpbmspO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX3Z0aS5jIGIvbmV0L2lwdjQvaXBfdnRpLmNcbmluZGV4IDNiODA5Mjk5OTRhMDAuLjE4YjYzODJiNDZlNmQgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9pcF92dGkuY1xuKysrIGIvbmV0L2lwdjQvaXBfdnRpLmNcbkBAIC01ODUsNyArNTg1LDcgQEAgc3RhdGljIGludCB2dGlfbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFxuIFx0dnRpX25ldGxpbmtfcGFybXMoZGF0YSwgXHUwMDI2cGFybXMsIFx1MDAyNmZ3bWFyayk7XG4gXHRyZXR1cm4gaXBfdHVubmVsX25ld2xpbmsocGFyYW1zLVx1MDAzZWxpbmtfbmV0ID8gOiBkZXZfbmV0KGRldiksIGRldiwgdGIsXG4tXHRcdFx0XHQgXHUwMDI2cGFybXMsIGZ3bWFyayk7XG4rXHRcdFx0XHQgXHUwMDI2cGFybXMsIGZ3bWFyaywgZXh0YWNrKTtcbiB9XG4gXG4gc3RhdGljIGludCB2dGlfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuQEAgLTYwMCw3ICs2MDAsNyBAQCBzdGF0aWMgaW50IHZ0aV9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG4gXHRcdHJldHVybiAtRVBFUk07XG4gXG4gXHR2dGlfbmV0bGlua19wYXJtcyhkYXRhLCBcdTAwMjZwLCBcdTAwMjZmd21hcmspO1xuLVx0cmV0dXJuIGlwX3R1bm5lbF9jaGFuZ2VsaW5rKGRldiwgdGIsIFx1MDAyNnAsIGZ3bWFyayk7XG4rXHRyZXR1cm4gaXBfdHVubmVsX2NoYW5nZWxpbmsoZGV2LCB0YiwgXHUwMDI2cCwgZndtYXJrLCBleHRhY2spO1xuIH1cbiBcbiBzdGF0aWMgc2l6ZV90IHZ0aV9nZXRfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwaXAuYyBiL25ldC9pcHY0L2lwaXAuY1xuaW5kZXggYjY0MzE5NGY1N2QyOS4uMTY4NGE4MWE5MzUyZiAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2lwaXAuY1xuKysrIGIvbmV0L2lwdjQvaXBpcC5jXG5AQCAtNDgxLDcgKzQ4MSw3IEBAIHN0YXRpYyBpbnQgaXBpcF9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXG4gXHRpcGlwX25ldGxpbmtfcGFybXMoZGF0YSwgXHUwMDI2cCwgXHUwMDI2dC1cdTAwM2Vjb2xsZWN0X21kLCBcdTAwMjZmd21hcmspO1xuIFx0cmV0dXJuIGlwX3R1bm5lbF9uZXdsaW5rKHBhcmFtcy1cdTAwM2VsaW5rX25ldCA/IDogZGV2X25ldChkZXYpLCBkZXYsIHRiLCBcdTAwMjZwLFxuLVx0XHRcdFx0IGZ3bWFyayk7XG4rXHRcdFx0XHQgZndtYXJrLCBleHRhY2spO1xuIH1cbiBcbiBzdGF0aWMgaW50IGlwaXBfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuQEAgLTUxMiw3ICs1MTIsNyBAQCBzdGF0aWMgaW50IGlwaXBfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuIFx0ICAgICghKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1BPSU5UT1BPSU5UKSBcdTAwMjZcdTAwMjYgcC5pcGguZGFkZHIpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbi1cdHJldHVybiBpcF90dW5uZWxfY2hhbmdlbGluayhkZXYsIHRiLCBcdTAwMjZwLCBmd21hcmspO1xuK1x0cmV0dXJuIGlwX3R1bm5lbF9jaGFuZ2VsaW5rKGRldiwgdGIsIFx1MDAyNnAsIGZ3bWFyaywgZXh0YWNrKTtcbiB9XG4gXG4gc3RhdGljIHNpemVfdCBpcGlwX2dldF9zaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvcmF3LmMgYi9uZXQvaXB2NC9yYXcuY1xuaW5kZXggN2Y3NGQ4Yjk1YTM3My4uOGU2ZThjNjg0OGIxNyAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3Jhdy5jXG4rKysgYi9uZXQvaXB2NC9yYXcuY1xuQEAgLTQzLDYgKzQzLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnJuby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9saW1pdHMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2V4cG9ydC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NvY2tpb3MuaFx1MDAzZVxuQEAgLTM1Niw2ICszNTcsOCBAQCBzdGF0aWMgaW50IHJhd19zZW5kX2hkcmluYyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBmbG93aTQgKmZsNCxcbiBcdFx0Z290byBvdXQ7XG4gXG4gXHRobGVuID0gTExfUkVTRVJWRURfU1BBQ0UocnQtXHUwMDNlZHN0LmRldik7XG4rXHRpZiAoaGxlbiBcdTAwM2U9IFUxNl9NQVggLSAoc2l6ZW9mKHN0cnVjdCBpcGhkcikgKyBNQVhfSVBPUFRMRU4pKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdHRsZW4gPSBydC1cdTAwM2Vkc3QuZGV2LVx1MDAzZW5lZWRlZF90YWlscm9vbTtcbiBcdHNrYiA9IHNvY2tfYWxsb2Nfc2VuZF9za2Ioc2ssXG4gXHRcdFx0XHQgIGxlbmd0aCArIGhsZW4gKyB0bGVuICsgMTUsXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvcmF3LmMgYi9uZXQvaXB2Ni9yYXcuY1xuaW5kZXggYjg4ZDM2NGU3OGFhZS4uZmEyMjNlYzAyMzk2NCAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3Jhdy5jXG4rKysgYi9uZXQvaXB2Ni9yYXcuY1xuQEAgLTE1LDYgKzE1LDcgQEBcbiAgKi9cbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnJuby5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbGltaXRzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC90eXBlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc29ja2V0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbkBAIC02MTMsNiArNjE0LDkgQEAgc3RhdGljIGludCByYXd2Nl9zZW5kX2hkcmluYyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbmd0aCxcbiBcdGlmIChmbGFnc1x1MDAyNk1TR19QUk9CRSlcbiBcdFx0Z290byBvdXQ7XG4gXG4rXHRpZiAoaGxlbiBcdTAwM2U9IFUxNl9NQVgpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuIFx0c2tiID0gc29ja19hbGxvY19zZW5kX3NrYihzayxcbiBcdFx0XHRcdCAgbGVuZ3RoICsgaGxlbiArIHRsZW4gKyAxNSxcbiBcdFx0XHRcdCAgZmxhZ3MgXHUwMDI2IE1TR19ET05UV0FJVCwgXHUwMDI2ZXJyKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjMzOjI5LjQ4MjM3OTQ4NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNzA3Nzc4MzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uOiBJUCBUdW5uZWwgXHUwMDI2IFJhdyBTb2NrZXQgSGVhZGVyIEhhbmRsaW5nKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBzb21lIHByZXR0eSBmdW5kYW1lbnRhbCBuZXR3b3JraW5nIGNvbXBvbmVudHM6IElQdjQgYW5kIElQdjYgdHVubmVsIGNyZWF0aW9uIGFuZCByYXcgc29ja2V0IHNlbmRpbmcuIEkgc2VlIHRoZXkndmUgYWRkZWQgc29tZSBjcnVjaWFsIGNoZWNrcyByZWxhdGVkIHRvIGhlYWRlciBsZW5ndGggY2FsY3VsYXRpb25zIHRvIHByZXZlbnQgcG90ZW50aWFsIG92ZXJmbG93cywgc3BlY2lmaWNhbGx5IGluIGBpcF90dW5uZWxfY2FsY19kZXZfY29uZmlnYCwgYHJhd19zZW5kX2hkcmluY2AsIGFuZCBgcmF3djZfc2VuZF9oZHJpbmNgLiBUaGUgY2hlY2tzIGluIHRoZSBpcCB0dW5uZWwgY29kZSBub3cgaGFuZGxlIHRoZSBleHRlbmRlZCBhY2sgYXMgd2VsbCwgYW5kIHJldHVybiBlcnJvcnMgaWYgdGhlIGhlYWRyb29tIGlzIHRvbyBsYXJnZS4gVGhhdCdzIGEgY2xhc3NpYyBhcmVhIGZvciBmdXp6aW5nLCBwb3RlbnRpYWwgZm9yIGJ1ZmZlciBvdmVyZmxvd3Mgb3IgaW50ZWdlci1yZWxhdGVkIHZ1bG5lcmFiaWxpdGllcyB0aGVyZS4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhcyB3ZWxsLCBzbyB0aGF0IGFsc28gbWFrZXMgdGhpcyBoaWdoIG9uIHRoZSBsaXN0LlxuXG5NeSBpbml0aWFsIGZvY3VzIHdpbGwgYmUgaG9uaW5nIGluIG9uIHRoZXNlIHZ1bG5lcmFibGUgZW50cnkgcG9pbnRzLiBJJ3ZlIGdvdCB0byBpZGVudGlmeSB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIGdvaW5nIHRvIGJlIG1vc3QgZWZmZWN0aXZlIGZvciBmdXp6aW5nLiBMb29rcyBsaWtlIHdlJ3JlIGludGVyZXN0ZWQgaW4gdGhlIGZvbGxvd2luZzogYGlwX3R1bm5lbF9jYWxjX2Rldl9jb25maWdgLCBgaXBfdHVubmVsX2JpbmRfZGV2YCwgYGlwX3R1bm5lbF91cGRhdGVgLCBgaXBfdHVubmVsX25ld2xpbmtgLCBgaXBfdHVubmVsX2NoYW5nZWxpbmtgLCBgcmF3X3NlbmRfaGRyaW5jYCwgYW5kIGByYXd2Nl9zZW5kX2hkcmluY2AuXG5cbkJlY2F1c2UgYGlwX3R1bm5lbF9uZXdsaW5rYCBhbmQgYGlwX3R1bm5lbF9jaGFuZ2VsaW5rYCBhcmUgZXhwb3J0ZWQsIG5vbi1zdGF0aWMsIGFuZCBwYXJ0IG9mIHRoZSB0dW5uZWwgY3JlYXRpb24vbW9kaWZpY2F0aW9uIHByb2Nlc3MsIHRoZXkgbG9vayBsaWtlIHByaW1lIHRhcmdldHMuIE9uIHRoZSByYXcgc29ja2V0IHNpZGUsIGByYXdfc2VuZF9oZHJpbmNgIGFuZCBgcmF3djZfc2VuZF9oZHJpbmNgIGFyZSBzdGF0aWMsIHNvIEkgbmVlZCB0byBmaW5kIHRoZWlyIGVudHJ5IHBvaW50cywgd2hpY2ggbWVhbnMgSSdsbCBiZSBsb29raW5nIGF0IGByYXdfc2VuZG1zZ2AgYW5kIGByYXd2Nl9zZW5kbXNnYCByZXNwZWN0aXZlbHkuXG5cbk5vdywgSSdsbCBkaXZlIGludG8gdGhlIHNvdXJjZSBjb2RlIHRvIGdldCB0aGUgc3BlY2lmaWMgY2FsbHMuIEknbGwgY2hlY2sgYG5ldC9pcHY0L3Jhdy5jYCBmb3IgYHJhd19zZW5kbXNnYCBhbmQgdGhlbiBgbmV0L2lwdjYvcmF3LmNgIGZvciBgcmF3djZfc2VuZG1zZ2AgdG8gZ2V0IHRoZSBjb250ZXh0IGFyb3VuZCB0aG9zZSBmdW5jdGlvbiBjYWxscy4gTGV0J3Mgc3RhcnQgd2l0aCBhIHF1aWNrIGdyZXAgdG8gbWFrZSBzdXJlIEknbSBvbiB0aGUgcmlnaHQgdHJhY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2MTcsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDozMzo0MS4xOTAxNjA3NDFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA4NTg5NjAxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKHN0YXRpYyApP2ludCByYXdfc2VuZG1zZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY2FuL3Jhdy5jPTg5OD1zdGF0aWMgdW5zaWduZWQgaW50IHJhd19jaGVja190eGZyYW1lKHN0cnVjdCByYXdfc29jayAqcm8sIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvY2FuL3Jhdy5jLTkxNy1cXG5uZXQvY2FuL3Jhdy5jOjkxODpzdGF0aWMgaW50IHJhd19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUpXFxubmV0L2Nhbi9yYXcuYy05MTkte1xcbi0tXFxubmV0L2llZWU4MDIxNTQvc29ja2V0LmM9MjM2PXN0YXRpYyBpbnQgcmF3X2Rpc2Nvbm5lY3Qoc3RydWN0IHNvY2sgKnNrLCBpbnQgZmxhZ3MpXFxuLS1cXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYy0yNDAtXFxubmV0L2llZWU4MDIxNTQvc29ja2V0LmM6MjQxOnN0YXRpYyBpbnQgcmF3X3NlbmRtc2coc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKVxcbm5ldC9pZWVlODAyMTU0L3NvY2tldC5jLTI0Mi17XFxuLS1cXG5uZXQvaXB2NC9yYXcuYz00NjE9c3RhdGljIGludCByYXdfZ2V0ZnJhZyh2b2lkICpmcm9tLCBjaGFyICp0bywgaW50IG9mZnNldCwgaW50IGxlbiwgaW50IG9kZCxcXG4tLVxcbm5ldC9pcHY0L3Jhdy5jLTQ5MS1cXG5uZXQvaXB2NC9yYXcuYzo0OTI6c3RhdGljIGludCByYXdfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcXG5uZXQvaXB2NC9yYXcuYy00OTMte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDozMzo0NC4yNzYwNjA5MTVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzMyNTkxOTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBkaXN0aWxsZWQ6XG5cbioqRGlnZ2luZyBpbnRvIFJhdyBTb2NrZXQgU2VuZCBGdW5jdGlvbmFsaXR5KipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgYHJhd19zZW5kbXNnYCBpbiBgbmV0L2lwdjQvcmF3LmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiV2FpdCwgaXMgdGhpcyBmdW5jdGlvbiBzdGF0aWM/XCIgSSBuZWVkIHRvIHZlcmlmeSB0aGF0LiBZZXAsIGl0IGlzLiBJbnRlcmVzdGluZy4gTm93LCB0aGUgbmV4dCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0ICp0aGlzKiBzdGF0aWMgYHJhd19zZW5kbXNnYCBmdW5jdGlvbiBpcyBhc3NpZ25lZCB0byBgcHJvdG8uc2VuZG1zZ2AuIFRoYXQncyBob3cgaXQncyBiZWluZyBhY2Nlc3NlZCBleHRlcm5hbGx5LiBJIGtub3cgd2hhdCdzIGdvaW5nIG9uIG5vdywgYnV0IEkgbmVlZCB0byBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IGJ5IGNoZWNraW5nIGBuZXQvaXB2NC9yYXcuY2AgZm9yIGJvdGggYHJhd19zZW5kbXNnYCBhbmQgYWxzbyB0aGUgcmVsYXRlZCBmdW5jdGlvbiBgcmF3X3NlbmRfaGRyaW5jYC4gSXQgc2VlbXMgbGlrZSBhIGNsYXNzaWMgY2FzZSBvZiBmdW5jdGlvbiBwb2ludGVyIG1hZ2ljLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODcxLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MzM6NDkuMDA4NjU0OTc0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjQzNDA1MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmF3X3NlbmRfaGRyaW5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3Jhdy5jPTMxOT1pbnQgcmF3X3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC9yYXcuYy0zMzMtXFxubmV0L2lwdjQvcmF3LmM6MzM0OnN0YXRpYyBpbnQgcmF3X3NlbmRfaGRyaW5jKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGZsb3dpNCAqZmw0LFxcbm5ldC9pcHY0L3Jhdy5jLTMzNS1cXHRcXHRcXHQgICBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW5ndGgsXFxuLS1cXG5uZXQvaXB2NC9yYXcuYz00OTI9c3RhdGljIGludCByYXdfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcXG4tLVxcbm5ldC9pcHY0L3Jhdy5jLTY1NC1cXHRpZiAoaGRyaW5jbClcXG5uZXQvaXB2NC9yYXcuYzo2NTU6XFx0XFx0ZXJyID0gcmF3X3NlbmRfaGRyaW5jKHNrLCBcXHUwMDI2Zmw0LCBtc2csIGxlbixcXG5uZXQvaXB2NC9yYXcuYy02NTYtXFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnJ0LCBtc2ctXFx1MDAzZW1zZ19mbGFncywgXFx1MDAyNmlwYy5zb2NrYyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjMzOjUwLjY3MzAwMzI2OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNzU2MDQ3MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIHRoZSBgcmF3djZfc2VuZG1zZ2AgRnVuY3Rpb24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byBpdC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYHJhd3Y2X3NlbmRtc2dgLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBpcyBoYW5kbGVkLCB0aGUga2V5IGZ1bmN0aW9uIGZvciBzZW5kaW5nIHJhdyBJUHY2IGRhdGFncmFtcy4gSXQncyB0aGUgY29yZSBvZiB0aGlzIG9wZXJhdGlvbi4gTGV0J3Mgc2VlIGhvdyB0aGluZ3MgYXJlIGZsb3dpbmcgdGhyb3VnaCB0aGF0IHNwZWNpZmljIHBpZWNlIG9mIHRoZSBjb2RlLiBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6OTQwMiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjMzOjUzLjk0ODYxMDMzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NjU4MDM3MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmF3djZfc2VuZG1zZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0X2NhY2hlbGluZXMvaW5ldF9zb2NrLnJzdD0xMj1zdHJ1Y3QgaXB2Nl9waW5mbyogICAgICAgcGluZXQ2XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL2luZXRfc29jay5yc3Q6MTM6c3RydWN0IGlwdjZfZmxfc29ja2xpc3QqIGlwdjZfZmxfbGlzdCAgICAgICAgICByZWFkX21vc3RseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNwX3Y2X2Nvbm5lY3QsX19pcDZfZGF0YWdyYW1fY29ubmVjdCx1ZHB2Nl9zZW5kbXNnLHJhd3YuLi5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0X2NhY2hlbGluZXMvaW5ldF9zb2NrLnJzdC0xNC1iZTE2ICAgICAgICAgICAgICAgICAgICAgaW5ldF9zcG9ydCAgICAgICAgICAgIHJlYWRfbW9zdGx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3RjcF90cmFuc21pdF9za2JcXG4tLVxcbm5ldC9pcHY2L3Jhdy5jPTcxNT1zdGF0aWMgaW50IHJhdzZfZ2V0ZnJhZyh2b2lkICpmcm9tLCBjaGFyICp0bywgaW50IG9mZnNldCwgaW50IGxlbiwgaW50IG9kZCxcXG4tLVxcbm5ldC9pcHY2L3Jhdy5jLTc0NS1cXG5uZXQvaXB2Ni9yYXcuYzo3NDY6c3RhdGljIGludCByYXd2Nl9zZW5kbXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcbm5ldC9pcHY2L3Jhdy5jLTc0Ny17XFxuLS1cXG5uZXQvaXB2Ni9yYXcuYz0xMjAwPXN0cnVjdCBwcm90byByYXd2Nl9wcm90ID0ge1xcbi0tXFxubmV0L2lwdjYvcmF3LmMtMTIxMC1cXHQuZ2V0c29ja29wdFxcdCAgID0gcmF3djZfZ2V0c29ja29wdCxcXG5uZXQvaXB2Ni9yYXcuYzoxMjExOlxcdC5zZW5kbXNnXFx0ICAgPSByYXd2Nl9zZW5kbXNnLFxcbm5ldC9pcHY2L3Jhdy5jLTEyMTItXFx0LnJlY3Ztc2dcXHQgICA9IHJhd3Y2X3JlY3Ztc2csXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdHh0aW1lc3RhbXAuYz00ODY9c3RhdGljIHZvaWQgZG9fdGVzdChpbnQgZmFtaWx5LCB1bnNpZ25lZCBpbnQgcmVwb3J0X29wdClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90eHRpbWVzdGFtcC5jLTUwOS1cXHRcXHR9XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3R4dGltZXN0YW1wLmM6NTEwOlxcdFxcdC8qIHNwZWNpYWwgY2FzZSwgb25seSByYXd2Nl9zZW5kbXNnOlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90eHRpbWVzdGFtcC5jLTUxMS1cXHRcXHQgKiBwYXNzIHByb3RvIGluIHNpbjZfcG9ydCBpZiBub3QgY29ubmVjdGVkXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjMzOjU1LjQxNDQxODYxOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNjUzMjU1MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXR3b3JrIFN0YWNrIC0gQSBEZWVwIERpdmUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgcmF3X3NlbmRtc2dgIGFuZCBgcmF3djZfc2VuZG1zZ2AuIEludGVyZXN0aW5nLCB0aGV5J3JlIHN0YXRpYyBmdW5jdGlvbnMuIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJPa2F5LCB0aGF0J3Mgbm90IHVudXN1YWwgZm9yIGludGVybmFsIGhlbHBlcnMsIGJ1dCBsZXQncyBzZWUgd2hlcmUgdGhleSdyZSB1c2VkLlwiIEkgcXVpY2tseSByZWFsaXplZCBgcmF3X3NlbmRtc2dgIGlzIHN0YXRpYyB3aXRoaW4gYG5ldC9pcHY0L3Jhdy5jYC4gVGhlIG5leHQgcXVlc3Rpb24gaXMsIGFyZSB0aGV5IGNhbGxlZCBieSBhbnl0aGluZyBvdXRzaWRlIG9mIHRoYXQgc3RhdGljIHNjb3BlPyBUaGVuIEkgcmVtZW1iZXIgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IGFzc2lnbmVkIHRvIGBwcm90by5zZW5kbXNnYC4gVGhhdCdzIHRoZSBjbHVlISBUaGlzIG1lYW5zIHRoZXkncmUgcGFydCBvZiB0aGUgcHJvdG9jb2wgb3BlcmF0aW9ucy5cblxuTm93IEkgbmVlZCB0byBmaW5kIHRoZSBicmlkZ2UgYmV0d2VlbiBzdGF0aWMgc2NvcGUgYW5kIG91dHNpZGUgYWNjZXNzLiBBaCEgVGhpbmtpbmcgYWJvdXQgaXQuLi4gYGlwX3R1bm5lbF9uZXdsaW5rYCBhbmQgYGlwX3R1bm5lbF9jaGFuZ2VsaW5rYCEgVGhvc2UgYXJlIGV4cG9ydGVkLCBzbyB0aGV5IGhhdmUgdG8gYmUgdGhlIGNvbm5lY3Rpb24uIExldCBtZSBzaGlmdCBteSBmb2N1cyB0byBgaXBfdHVubmVsX25ld2xpbmtgLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0IGRpZ2dpbmcgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHN0YXRpYyBmdW5jdGlvbnMgZml0IGludG8gdGhlIHR1bm5lbCBzZXR1cCBwcm9jZXNzLiBUaGlzIGxvb2tzIHByb21pc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwNjYsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDozMzo1OS42Nzk3NDcwODVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTMyODA1MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfdHVubmVsX25ld2xpbmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oPTQyNz1pbnQgaXBfdHVubmVsX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG4tLVxcbmluY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaC00MjktXFx0XFx0XFx0IHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oOjQzMDppbnQgaXBfdHVubmVsX25ld2xpbmsoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmluY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaC00MzEtXFx0XFx0ICAgICAgc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAsXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xNDA5PXN0YXRpYyBpbnQgaXBncmVfbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTQyNS1cXHRcXHRyZXR1cm4gZXJyO1xcbm5ldC9pcHY0L2lwX2dyZS5jOjE0MjY6XFx0cmV0dXJuIGlwX3R1bm5lbF9uZXdsaW5rKHBhcmFtcy1cXHUwMDNlbGlua19uZXQgPyA6IGRldl9uZXQoZGV2KSwgZGV2LCB0YiwgXFx1MDAyNnAsXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTQyNy1cXHRcXHRcXHRcXHQgZndtYXJrLCBleHRhY2spO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9MTQzMD1zdGF0aWMgaW50IGVyc3Bhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDQ2LVxcdFxcdHJldHVybiBlcnI7XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTQ0NzpcXHRyZXR1cm4gaXBfdHVubmVsX25ld2xpbmsocGFyYW1zLVxcdTAwM2VsaW5rX25ldCA/IDogZGV2X25ldChkZXYpLCBkZXYsIHRiLCBcXHUwMDI2cCxcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDQ4LVxcdFxcdFxcdFxcdCBmd21hcmssIGV4dGFjayk7XFxuLS1cXG5uZXQvaXB2NC9pcF90dW5uZWwuYz0xMjM5PUVYUE9SVF9TWU1CT0xfR1BMKGlwX3R1bm5lbF9kZWxldGVfbmV0KTtcXG5uZXQvaXB2NC9pcF90dW5uZWwuYy0xMjQwLVxcbm5ldC9pcHY0L2lwX3R1bm5lbC5jOjEyNDE6aW50IGlwX3R1bm5lbF9uZXdsaW5rKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvaXB2NC9pcF90dW5uZWwuYy0xMjQyLVxcdFxcdCAgICAgIHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLFxcbi0tXFxubmV0L2lwdjQvaXBfdHVubmVsLmMtMTI5NC19XFxubmV0L2lwdjQvaXBfdHVubmVsLmM6MTI5NTpFWFBPUlRfU1lNQk9MX0dQTChpcF90dW5uZWxfbmV3bGluayk7XFxubmV0L2lwdjQvaXBfdHVubmVsLmMtMTI5Ni1cXG4tLVxcbm5ldC9pcHY0L2lwX3Z0aS5jPTU3Nz1zdGF0aWMgaW50IHZ0aV9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvaXB2NC9pcF92dGkuYy01ODYtXFx0dnRpX25ldGxpbmtfcGFybXMoZGF0YSwgXFx1MDAyNnBhcm1zLCBcXHUwMDI2ZndtYXJrKTtcXG5uZXQvaXB2NC9pcF92dGkuYzo1ODc6XFx0cmV0dXJuIGlwX3R1bm5lbF9uZXdsaW5rKHBhcmFtcy1cXHUwMDNlbGlua19uZXQgPyA6IGRldl9uZXQoZGV2KSwgZGV2LCB0YixcXG5uZXQvaXB2NC9pcF92dGkuYy01ODgtXFx0XFx0XFx0XFx0IFxcdTAwMjZwYXJtcywgZndtYXJrLCBleHRhY2spO1xcbi0tXFxubmV0L2lwdjQvaXBpcC5jPTQ2ND1zdGF0aWMgaW50IGlwaXBfbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2lwdjQvaXBpcC5jLTQ4Mi1cXHRpcGlwX25ldGxpbmtfcGFybXMoZGF0YSwgXFx1MDAyNnAsIFxcdTAwMjZ0LVxcdTAwM2Vjb2xsZWN0X21kLCBcXHUwMDI2ZndtYXJrKTtcXG5uZXQvaXB2NC9pcGlwLmM6NDgzOlxcdHJldHVybiBpcF90dW5uZWxfbmV3bGluayhwYXJhbXMtXFx1MDAzZWxpbmtfbmV0ID8gOiBkZXZfbmV0KGRldiksIGRldiwgdGIsIFxcdTAwMjZwLFxcbm5ldC9pcHY0L2lwaXAuYy00ODQtXFx0XFx0XFx0XFx0IGZ3bWFyaywgZXh0YWNrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MzQ6MDEuMTczMDM2MDgyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4MjQ1MTM5MzU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLZXJuZWwgU3ltYm9scyBmb3IgRm9jdXMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHBvdGVudGlhbCBmb2N1cyBzeW1ib2xzIGhlcmUuIGBpcF90dW5uZWxfbmV3bGlua2AgYW5kIGBpcF90dW5uZWxfY2hhbmdlbGlua2AgbG9vayBwcm9taXNpbmcg4oCTIHRoZXkncmUgZXhwb3J0ZWQgYW5kIGxldmVyYWdlZCBieSBzZXZlcmFsIG90aGVyIGZ1bmN0aW9ucyBsaWtlIGBpcGdyZV9uZXdsaW5rYCwgYGVyc3Bhbl9uZXdsaW5rYCwgYHZ0aV9uZXdsaW5rYCwgYW5kIGBpcGlwX25ld2xpbmtgLCB3aGljaCBhcmUgYWxsIGBydG5sX2xpbmtfb3BzYCBjYWxsYmFja3MuIFRoYXQgbWFrZXMgdGhlbSBzb2xpZCBjYW5kaWRhdGVzLlxuXG5Ob3csIEkgd2FzIGluaXRpYWxseSBjb25zaWRlcmluZyBgcmF3X3NlbmRfaGRyaW5jYCwgYnV0IGl0J3Mgc3RhdGljLCBhbmQgdGhlIGluc3RydWN0aW9ucyBhcmUgY2xlYXI6IHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeXBvaW50cy4gIFRoaW5raW5nIGFib3V0IGl0LCB0aG91Z2gsIGByYXdfc2VuZG1zZ2AgaXMgKmFsc28qIHN0YXRpYywgd2hpY2ggc2VlbXMgcHJvYmxlbWF0aWMsIGJ1dCBob2xkIG9uIGEgc2Vjb25kLi4uIEFoLCByaWdodCwgYHJhd19zZW5kbXNnYCBpcyBhY3R1YWxseSBhc3NpZ25lZCB0byBgcHJvdG8uc2VuZG1zZ2AuIFRoYXQgbWVhbnMgaXQgKmlzbid0KiBpbmxpbmVkLlxuXG5UaGUgZ3VpZGluZyBwcmluY2lwbGUgaXMgdG8gYXZvaWQgaW5saW5lZCBmdW5jdGlvbnMgYmVjYXVzZSB0aGV5IGRvbid0IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcywgYW5kIHRoYXQgbWFrZXMgdGhlbSBsZXNzIGlkZWFsLiAgYHJhd19zZW5kbXNnYCBhbmQgYHJhd3Y2X3NlbmRtc2dgIGFyZSBub3QgaW5saW5lZCBiZWNhdXNlIHRoZXkgYXJlIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzLCBzbyB0aGV5J3JlIHBlcmZlY3RseSBmaW5lLlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBnZXQgdG9vIGZhciwgbGV0J3MganVzdCBxdWlja2x5IGNoZWNrIGlmIGBpcF90dW5uZWxfbmV3bGlua2AgKHNpbmNlIHRoYXQgd2FzIG15IGluaXRpYWwgc3Ryb25nIGNhbmRpZGF0ZSkgaGFzIGFueSBzcGVjaWZpYyBDT05GSUcgb3B0aW9ucyB0aGF0IG1pZ2h0IG1ha2UgaXQgbGVzcyB1bml2ZXJzYWxseSB1c2VmdWwuIEl0IHJlc2lkZXMgaW4gYG5ldC9pcHY0L2lwX3R1bm5lbC5jYCwgc28gSSdsbCBjaGVjayBgbmV0L2lwdjQvTWFrZWZpbGVgIGZvciBgaXBfdHVubmVsLm9gIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMzA3LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjM0OjE5LjQxODE3NzY3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDk1NDcxNTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3R1bm5lbFxcXFwub1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxcXFxuLS1cXG5uZXQvaXB2NC9NYWtlZmlsZS0xOC1cXG5uZXQvaXB2NC9NYWtlZmlsZToxOTpvYmotJChDT05GSUdfTkVUX0lQX1RVTk5FTCkgKz0gaXBfdHVubmVsLm9cXG5uZXQvaXB2NC9NYWtlZmlsZS0yMC1vYmotJChDT05GSUdfU1lTQ1RMKSArPSBzeXNjdGxfbmV0X2lwdjQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDozNDoyMS41MTM2NTUxMDlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU4NDc5NjYzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gYW5kIHRoZSBSYXcgU29ja2V0IEZyb250aWVyKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLiBUaGUga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgSVAgdHVubmVscywgc3BlY2lmaWNhbGx5IGBDT05GSUdfTkVUX0lQX1RVTk5FTGAsIGhhdmUgZGVmaW5pdGVseSBiZWVuIG9uIG15IG1pbmQgbGF0ZWx5LiBJdCdzIGEga2V5IHBpZWNlIGluIGhvdyB3ZSBoYW5kbGUgZW5jYXBzdWxhdGVkIHRyYWZmaWMgYW5kIHZpcnR1YWwgbmV0d29ya3Mgd2l0aGluIHRoZSBrZXJuZWwgc3BhY2UuIEFsd2F5cyBpbXBvcnRhbnQgdG8gcmV2aXNpdCB0aGUgaW1wbGljYXRpb25zIG9mIGl0cyBzZWxlY3Rpb24uXG5cblRoZW4sIG15IHRyYWluIG9mIHRob3VnaHQgZHJpZnRlZCB0b3dhcmRzIGByYXcuY2AuIFRoYXQgZmlsZSBhbHdheXMgcG9wcyB1cCB3aGVuIEknbSBkZWFsaW5nIHdpdGggbG93LWxldmVsIG5ldHdvcmsgZnVuY3Rpb25hbGl0eS4gUmF3IHNvY2tldHMgb2ZmZXIgdGhhdCBkaXJlY3QgYWNjZXNzIHRvIHRoZSBuZXR3b3JrIGxheWVyLCBieXBhc3NpbmcgbXVjaCBvZiB0aGUgdHlwaWNhbCBwcm90b2NvbCBzdGFjay4gSSdtIHdvbmRlcmluZyBpZiB0aGVyZSdzIGEgc3BlY2lmaWMgaW50ZXJhY3Rpb24gSSdtIGNvbnNpZGVyaW5nLCBwZXJoYXBzIGEgcGVyZm9ybWFuY2UgYm90dGxlbmVjaywgb3IgbWF5YmUgYSBwb3RlbnRpYWwgZmVhdHVyZSBJJ20gZXZhbHVhdGluZyBmb3IgaW50ZWdyYXRpb24gd2l0aCB0aGUgdHVubmVsIGZ1bmN0aW9uYWxpdHkuIEdvdHRhIGNoZWNrIGlmIHRob3NlIHR3byBwaWVjZXMgYXJlIHBsYXlpbmcgbmljZWx5IHRvZ2V0aGVyLCBvciBpZiB0aGVyZSBpcyBzb21lIGlzc3VlIHdpdGggdGhlIHJhdyBzb2NrZXRzIGFjY2VzcyBhbmQgdGhlIGlwIHR1bm5lbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIwNzksIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDozNDoyNy4wOTg0NTUyNTVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNzU3ODQyNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmF3XFxcXC5vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvY3hsL2NvcmUvbWJveC5jPTQwNT1zdGF0aWMgaW50IGN4bF90b19tZW1fY21kX3JhdyhzdHJ1Y3QgY3hsX21lbV9jb21tYW5kICptZW1fY21kLFxcbi0tXFxuZHJpdmVycy9jeGwvY29yZS9tYm94LmMtNDE5LVxcbmRyaXZlcnMvY3hsL2NvcmUvbWJveC5jOjQyMDpcXHRpZiAoIWN4bF9tZW1fcmF3X2NvbW1hbmRfYWxsb3dlZChzZW5kX2NtZC1cXHUwMDNlcmF3Lm9wY29kZSkpXFxuZHJpdmVycy9jeGwvY29yZS9tYm94LmMtNDIxLVxcdFxcdHJldHVybiAtRVBFUk07XFxuLS1cXG5kcml2ZXJzL2N4bC9jb3JlL21ib3guYy00MzAtXFx0XFx0fSxcXG5kcml2ZXJzL2N4bC9jb3JlL21ib3guYzo0MzE6XFx0XFx0Lm9wY29kZSA9IHNlbmRfY21kLVxcdTAwM2VyYXcub3Bjb2RlXFxuZHJpdmVycy9jeGwvY29yZS9tYm94LmMtNDMyLVxcdH07XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9OTM9ZHJtLSQoQ09ORklHX0RSTV9QQU5JQykgKz0gZHJtX3BhbmljLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6OTQ6ZHJtLSQoQ09ORklHX0RSTV9EUkFXKSArPSBkcm1fZHJhdy5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTk1LWRybS0kKENPTkZJR19EUk1fUEFOSUNfU0NSRUVOX1FSX0NPREUpICs9IGRybV9wYW5pY19xci5vXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vcXhsL01ha2VmaWxlLTUtXFxuZHJpdmVycy9ncHUvZHJtL3F4bC9NYWtlZmlsZTo2OnF4bC15IDo9IHF4bF9kcnYubyBxeGxfa21zLm8gcXhsX2Rpc3BsYXkubyBxeGxfdHRtLm8gcXhsX29iamVjdC5vIHF4bF9nZW0ubyBxeGxfY21kLm8gcXhsX2ltYWdlLm8gcXhsX2RyYXcubyBxeGxfZGVidWdmcy5vIHF4bF9pcnEubyBxeGxfZHVtYi5vIHF4bF9pb2N0bC5vIHF4bF9yZWxlYXNlLm8uLi5cXG5kcml2ZXJzL2dwdS9kcm0vcXhsL01ha2VmaWxlLTctXFxuLS1cXG5kcml2ZXJzL2hpZC9NYWtlZmlsZT0xND1vYmotJChDT05GSUdfSElEX0dFTkVSSUMpXFx0Kz0gaGlkLWdlbmVyaWMub1xcbmRyaXZlcnMvaGlkL01ha2VmaWxlLTE1LVxcbmRyaXZlcnMvaGlkL01ha2VmaWxlOjE2OmhpZC0kKENPTkZJR19ISURSQVcpXFx0XFx0Kz0gaGlkcmF3Lm9cXG5kcml2ZXJzL2hpZC9NYWtlZmlsZS0xNy1cXG4tLVxcbmRyaXZlcnMvaW5wdXQvc2VyaW8vTWFrZWZpbGU9MjM9b2JqLSQoQ09ORklHX1NFUklPX0xJQlBTMilcXHQrPSBsaWJwczIub1xcbmRyaXZlcnMvaW5wdXQvc2VyaW8vTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX1NFUklPX1JBVylcXHRcXHQrPSBzZXJpb19yYXcub1xcbmRyaXZlcnMvaW5wdXQvc2VyaW8vTWFrZWZpbGUtMjUtb2JqLSQoQ09ORklHX1NFUklPX0FNU19ERUxUQSlcXHQrPSBhbXNfZGVsdGFfc2VyaW8ub1xcbi0tXFxuZHJpdmVycy9tZWRpYS9yYy9NYWtlZmlsZT0zPW9iai15ICs9IGtleW1hcHMvXFxuZHJpdmVycy9tZWRpYS9yYy9NYWtlZmlsZS00LVxcbmRyaXZlcnMvbWVkaWEvcmMvTWFrZWZpbGU6NTpyYy1jb3JlLXkgOj0gcmMtbWFpbi5vIHJjLWlyLXJhdy5vXFxuZHJpdmVycy9tZWRpYS9yYy9NYWtlZmlsZS02LXJjLWNvcmUtJChDT05GSUdfTElSQykgKz0gbGlyY19kZXYub1xcbi0tXFxuZHJpdmVycy9tZWRpYS9yYy9NYWtlZmlsZT0zNj1vYmotJChDT05GSUdfSVJfSU1PTikgKz0gaW1vbi5vXFxuZHJpdmVycy9tZWRpYS9yYy9NYWtlZmlsZTozNzpvYmotJChDT05GSUdfSVJfSU1PTl9SQVcpICs9IGltb25fcmF3Lm9cXG5kcml2ZXJzL21lZGlhL3JjL01ha2VmaWxlLTM4LW9iai0kKENPTkZJR19JUl9JVEVfQ0lSKSArPSBpdGUtY2lyLm9cXG4tLVxcbmRyaXZlcnMvbWVkaWEvcmMvaW1nLWlyL01ha2VmaWxlPTI9aW1nLWlyLXlcXHRcXHRcXHQ6PSBpbWctaXItY29yZS5vXFxuZHJpdmVycy9tZWRpYS9yYy9pbWctaXIvTWFrZWZpbGU6MzppbWctaXItJChDT05GSUdfSVJfSU1HX1JBVylcXHQrPSBpbWctaXItcmF3Lm9cXG5kcml2ZXJzL21lZGlhL3JjL2ltZy1pci9NYWtlZmlsZS00LWltZy1pci0kKENPTkZJR19JUl9JTUdfSFcpXFx0Kz0gaW1nLWlyLWh3Lm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2luaXRfb3BzLmg9MjI5PXN0YXRpYyB2b2lkIGJueDJ4X2luaXRfYmxvY2soc3RydWN0IGJueDJ4ICpicCwgdTMyIGJsb2NrLCB1MzIgc3RhZ2UpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9pbml0X29wcy5oLTI1MC1cXHRcXHQvKiBHZXQgZ2VuZXJpYyBkYXRhICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaW5pdF9vcHMuaDoyNTE6XFx0XFx0b3BfdHlwZSA9IG9wLVxcdTAwM2VyYXcub3A7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaW5pdF9vcHMuaDoyNTI6XFx0XFx0YWRkciA9IG9wLVxcdTAwM2VyYXcub2Zmc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2luaXRfb3BzLmgtMjUzLVxcdFxcdC8qIEdldCBkYXRhIHRoYXQncyB1c2VkIGZvciBPUF9TVywgT1BfV0IsIE9QX0ZXLCBPUF9aUCBhbmRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX2luaXRfb3BzLmM9NTQ4PWludCBxZWRfaW5pdF9ydW4oc3RydWN0IHFlZF9od2ZuICpwX2h3Zm4sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9pbml0X29wcy5jLTU2NS1cXHRcXHR1bmlvbiBpbml0X29wICpjbWQgPSBcXHUwMDI2aW5pdF9vcHNbY21kX251bV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfaW5pdF9vcHMuYzo1NjY6XFx0XFx0dTMyIGRhdGEgPSBsZTMyX3RvX2NwdShjbWQtXFx1MDAzZXJhdy5vcF9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9pbml0X29wcy5jLTU2Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dhbi9NYWtlZmlsZT05PW9iai0kKENPTkZJR19IRExDKVxcdFxcdCs9IGhkbGMub1xcbmRyaXZlcnMvbmV0L3dhbi9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfSERMQ19SQVcpXFx0XFx0Kz0gaGRsY19yYXcub1xcbmRyaXZlcnMvbmV0L3dhbi9NYWtlZmlsZS0xMS1vYmotJChDT05GSUdfSERMQ19SQVdfRVRIKVxcdCs9IGhkbGNfcmF3X2V0aC5vXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvZ3JleWJ1cy9NYWtlZmlsZT0xND1nYi1wb3dlci1zdXBwbHkteVxcdDo9IHBvd2VyX3N1cHBseS5vXFxuZHJpdmVycy9zdGFnaW5nL2dyZXlidXMvTWFrZWZpbGU6MTU6Z2ItcmF3LXlcXHRcXHQ6PSByYXcub1xcbmRyaXZlcnMvc3RhZ2luZy9ncmV5YnVzL01ha2VmaWxlLTE2LWdiLXZpYnJhdG9yLXlcXHRcXHQ6PSB2aWJyYXRvci5vXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvZ3JleWJ1cy9NYWtlZmlsZT0yNT1vYmotJChDT05GSUdfR1JFWUJVU19QT1dFUilcXHQrPSBnYi1wb3dlci1zdXBwbHkub1xcbmRyaXZlcnMvc3RhZ2luZy9ncmV5YnVzL01ha2VmaWxlOjI2Om9iai0kKENPTkZJR19HUkVZQlVTX1JBVylcXHQrPSBnYi1yYXcub1xcbmRyaXZlcnMvc3RhZ2luZy9ncmV5YnVzL01ha2VmaWxlLTI3LW9iai0kKENPTkZJR19HUkVZQlVTX1ZJQlJBVE9SKVxcdCs9IGdiLXZpYnJhdG9yLm9cXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL3BjaS9pYV9jc3NfaXNwX2NvbmZpZ3MuYz0yMjI9aW50IGlhX2Nzc19jb25maWd1cmVfcmF3KGNvbnN0IHN0cnVjdCBpYV9jc3NfYmluYXJ5ICpiaW5hcnksXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvaWFfY3NzX2lzcF9jb25maWdzLmMtMjM2LVxcbmRyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL3BjaS9pYV9jc3NfaXNwX2NvbmZpZ3MuYzoyMzc6XFx0b2Zmc2V0ID0gYmluYXJ5LVxcdTAwM2VpbmZvLVxcdTAwM2VtZW1fb2Zmc2V0cy5vZmZzZXRzLmNvbmZpZy1cXHUwMDNlZG1lbS5yYXcub2Zmc2V0O1xcbmRyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL3BjaS9pYV9jc3NfaXNwX2NvbmZpZ3MuYy0yMzgtXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvcnVudGltZS9kZWJ1Zy9zcmMvaWFfY3NzX2RlYnVnLmM9NDQ3PXZvaWQgaWFfY3NzX2RlYnVnX2ZyYW1lX3ByaW50KGNvbnN0IHN0cnVjdCBpYV9jc3NfZnJhbWUgKmZyYW1lLFxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3AvcGNpL3J1bnRpbWUvZGVidWcvc3JjL2lhX2Nzc19kZWJ1Zy5jLTQ5NS1cXHRcXHRpYV9jc3NfZGVidWdfZHRyYWNlKDIsIFxcXCIgIFJBVyBQQUNLRUQgPSAlcFxcXFxuXFxcIixcXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvcnVudGltZS9kZWJ1Zy9zcmMvaWFfY3NzX2RlYnVnLmM6NDk2OlxcdFxcdFxcdFxcdCAgICBkYXRhICsgZnJhbWUtXFx1MDAzZXBsYW5lcy5yYXcub2Zmc2V0KTtcXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvcnVudGltZS9kZWJ1Zy9zcmMvaWFfY3NzX2RlYnVnLmMtNDk3LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3AvcGNpL3J1bnRpbWUvZGVidWcvc3JjL2lhX2Nzc19kZWJ1Zy5jLTQ5OS1cXHRcXHRpYV9jc3NfZGVidWdfZHRyYWNlKDIsIFxcXCIgIFJBVyA9ICVwXFxcXG5cXFwiLFxcbmRyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL3BjaS9ydW50aW1lL2RlYnVnL3NyYy9pYV9jc3NfZGVidWcuYzo1MDA6XFx0XFx0XFx0XFx0ICAgIGRhdGEgKyBmcmFtZS1cXHUwMDNlcGxhbmVzLnJhdy5vZmZzZXQpO1xcbmRyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL3BjaS9ydW50aW1lL2RlYnVnL3NyYy9pYV9jc3NfZGVidWcuYy01MDEtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvc2hfY3NzX3BhcmFtcy5jPTkyND1zaF9jc3Nfc2V0X2JsYWNrX2ZyYW1lKHN0cnVjdCBpYV9jc3Nfc3RyZWFtICpzdHJlYW0sXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvc2hfY3NzX3BhcmFtcy5jLTk0MS1cXHRwdHIgPSByYXdfYmxhY2tfZnJhbWUtXFx1MDAzZWRhdGFcXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvc2hfY3NzX3BhcmFtcy5jOjk0MjpcXHQrIHJhd19ibGFja19mcmFtZS1cXHUwMDNlcGxhbmVzLnJhdy5vZmZzZXQ7XFxuZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3AvcGNpL3NoX2Nzc19wYXJhbXMuYy05NDMtXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvc2hfY3NzX3NwLmM9NDIwPXNoX2Nzc19jb3B5X2ZyYW1lX3RvX3NwZnJhbWUoc3RydWN0IGlhX2Nzc19mcmFtZV9zcCAqc3BfZnJhbWVfb3V0LFxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3AvcGNpL3NoX2Nzc19zcC5jLTQzNy1cXHRjYXNlIElBX0NTU19GUkFNRV9GT1JNQVRfUkFXOlxcbmRyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL3BjaS9zaF9jc3Nfc3AuYzo0Mzg6XFx0XFx0c3BfZnJhbWVfb3V0LVxcdTAwM2VwbGFuZXMucmF3Lm9mZnNldCA9IGZyYW1lX2luLVxcdTAwM2VwbGFuZXMucmF3Lm9mZnNldDtcXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvc2hfY3NzX3NwLmMtNDM5LVxcdFxcdGJyZWFrO1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L2N4bF9tZW0uaD0xNjY9c3RydWN0IGN4bF9tZW1fcXVlcnlfY29tbWFuZHMge1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L2N4bF9tZW0uaC0xODYtICogQHJhdzogU3BlY2lhbCBmaWVsZHMgZm9yIHJhdyBjb21tYW5kc1xcbmluY2x1ZGUvdWFwaS9saW51eC9jeGxfbWVtLmg6MTg3OiAqIEByYXcub3Bjb2RlOiBPcGNvZGUgcGFzc2VkIHRvIGhhcmR3YXJlIHdoZW4gdXNpbmcgdGhlIFJBVyBjb21tYW5kLlxcbmluY2x1ZGUvdWFwaS9saW51eC9jeGxfbWVtLmgtMTg4LSAqIEByYXcucnN2ZDogTXVzdCBiZSB6ZXJvLlxcbi0tXFxubmV0L2F0bS9NYWtlZmlsZS01LVxcbm5ldC9hdG0vTWFrZWZpbGU6NjphdG0teVxcdFxcdDo9IHB2Yy5vIGlvY3RsLm8gY29tbW9uLm8gYXRtX21pc2MubyByYXcubyByZXNvdXJjZXMubyBhdG1fc3lzZnMub1xcbm5ldC9hdG0vTWFrZWZpbGUtNy1cXG4tLVxcbm5ldC9jYW4vTWFrZWZpbGU9OD1jYW4tJChDT05GSUdfUFJPQ19GUylcXHQrPSBwcm9jLm9cXG5uZXQvY2FuL01ha2VmaWxlLTktXFxubmV0L2Nhbi9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfQ0FOX1JBVylcXHQrPSBjYW4tcmF3Lm9cXG5uZXQvY2FuL01ha2VmaWxlOjExOmNhbi1yYXcteVxcdFxcdDo9IHJhdy5vXFxubmV0L2Nhbi9NYWtlZmlsZS0xMi1cXG4tLVxcbm5ldC9pcHY0L01ha2VmaWxlPTY9b2JqLXkgICAgIDo9IHJvdXRlLm8gaW5ldHBlZXIubyBwcm90b2NvbC5vIFxcXFxcXG4tLVxcbm5ldC9pcHY0L01ha2VmaWxlLTEyLVxcdCAgICAgdGNwX3JlY292ZXJ5Lm8gdGNwX3VscC5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZToxMzpcXHQgICAgIHRjcF9vZmZsb2FkLm8gdGNwX3BsYi5vIGRhdGFncmFtLm8gcmF3Lm8gdWRwLm8gXFxcXFxcbm5ldC9pcHY0L01ha2VmaWxlLTE0LVxcdCAgICAgdWRwX29mZmxvYWQubyBhcnAubyBpY21wLm8gZGV2aW5ldC5vIGFmX2luZXQubyBpZ21wLm8gXFxcXFxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlPTMzPW9iai0kKENPTkZJR19JUF9ORl9OQVQpICs9IGlwdGFibGVfbmF0Lm9cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX0lQX05GX1JBVykgKz0gaXB0YWJsZV9yYXcub1xcbm5ldC9pcHY0L25ldGZpbHRlci9NYWtlZmlsZS0zNS1vYmotJChDT05GSUdfSVBfTkZfU0VDVVJJVFkpICs9IGlwdGFibGVfc2VjdXJpdHkub1xcbi0tXFxubmV0L2lwdjYvTWFrZWZpbGU9OD1pcHY2LXkgOj1cXHRhZl9pbmV0Ni5vIGFueWNhc3QubyBpcDZfb3V0cHV0Lm8gaXA2X2lucHV0Lm8gYWRkcmNvbmYubyBcXFxcXFxuLS1cXG5uZXQvaXB2Ni9NYWtlZmlsZS0xMC1cXHRcXHRyb3V0ZS5vIGlwNl9maWIubyBpcHY2X3NvY2tnbHVlLm8gbmRpc2MubyB1ZHAubyBcXFxcXFxubmV0L2lwdjYvTWFrZWZpbGU6MTE6XFx0XFx0cmF3Lm8gaWNtcC5vIG1jYXN0Lm8gcmVhc3NlbWJseS5vIHRjcF9pcHY2Lm8gcGluZy5vIFxcXFxcXG5uZXQvaXB2Ni9NYWtlZmlsZS0xMi1cXHRcXHRleHRoZHJzLm8gZGF0YWdyYW0ubyBpcDZfZmxvd2xhYmVsLm8gaW5ldDZfY29ubmVjdGlvbl9zb2NrLm8gXFxcXFxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX0lQNl9ORl9NQU5HTEUpICs9IGlwNnRhYmxlX21hbmdsZS5vXFxubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19JUDZfTkZfUkFXKSArPSBpcDZ0YWJsZV9yYXcub1xcbm5ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZS0xMS1vYmotJChDT05GSUdfSVA2X05GX1NFQ1VSSVRZKSArPSBpcDZ0YWJsZV9zZWN1cml0eS5vXFxuLS1cXG50b29scy9wZXJmL3V0aWwvQnVpbGQ9NzU9cGVyZi11dGlsLXkgKz0gc2FtcGxlLm9cXG50b29scy9wZXJmL3V0aWwvQnVpbGQ6NzY6cGVyZi11dGlsLXkgKz0gc2FtcGxlLXJhdy5vXFxudG9vbHMvcGVyZi91dGlsL0J1aWxkOjc3OnBlcmYtdXRpbC15ICs9IHMzOTAtc2FtcGxlLXJhdy5vXFxudG9vbHMvcGVyZi91dGlsL0J1aWxkOjc4OnBlcmYtdXRpbC15ICs9IGFtZC1zYW1wbGUtcmF3Lm9cXG50b29scy9wZXJmL3V0aWwvQnVpbGQtNzktXFxuLS1cXG50b29scy9wZXJmL3V0aWwvaW50ZWwtcHQuYz0yMDI0PXN0YXRpYyBpbnQgaW50ZWxfcHRfc3ludGhfcHNiX3NhbXBsZShzdHJ1Y3QgaW50ZWxfcHRfcXVldWUgKnB0cSlcXG4tLVxcbnRvb2xzL3BlcmYvdXRpbC9pbnRlbC1wdC5jLTIwNDItXFx0cmF3LnJlc2VydmVkID0gMDtcXG50b29scy9wZXJmL3V0aWwvaW50ZWwtcHQuYzoyMDQzOlxcdHJhdy5vZmZzZXQgPSBwdHEtXFx1MDAzZXN0YXRlLVxcdTAwM2Vwc2Jfb2Zmc2V0O1xcbnRvb2xzL3BlcmYvdXRpbC9pbnRlbC1wdC5jLTIwNDQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjM0OjI5LjE3NDI0NTUyNFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzAwODU1MDM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgS2VybmVsJ3MgSVAgVHVubmVsaW5nIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyBJUCB0dW5uZWxpbmcgaXMgc2V0IHVwIGluIHRoZSBrZXJuZWwuIEl0IGxvb2tzIGxpa2UgYG5ldC9pcHY0L3Jhdy5vYCBhbmQgYG5ldC9pcHY2L3Jhdy5vYCBhcmUgY29tcGlsZWQgaW4gYnkgZGVmYXVsdDsgdGhleSdyZSBwYXJ0IG9mIHRoZSBzdGFuZGFyZCBgb2JqLXlgIGFuZCBgaXB2Ni15YCBjb25maWd1cmF0aW9ucy4gVGhhdCdzIGdvb2QgdG8ga25vdywgYnV0IG5vdCB0aGUgY29yZSBvZiB3aGF0IEknbSBhZnRlci4gTXkgbWFpbiBmb2N1cyBpcyBgQ09ORklHX05FVF9JUF9UVU5ORUxgLCBvYnZpb3VzbHkuXG5cbkhtbSwgd2FpdCBhIHNlY29uZC4uLiB0aGlzIGBpcF90dW5uZWxfbmV3bGlua2AgZnVuY3Rpb24uLi4gdGhhdCdzIGludGVyZXN0aW5nLiBJdCdzIGNhbGxlZCBieSBtb3JlIHRoYW4ganVzdCB0aGUgYmFzZSB0dW5uZWxpbmcgZnVuY3Rpb25hbGl0eS4gSXQncyBhbHNvIHV0aWxpemVkIGJ5IHNwZWNpZmljIHR1bm5lbCB0eXBlcywgbGlrZSBgaXBncmVfbmV3bGlua2AsIGBlcnNwYW5fbmV3bGlua2AsIGB2dGlfbmV3bGlua2AsIGFuZCBgaXBpcF9uZXdsaW5rYC4gVGhhdCBleHBhbmRzIHRoZSBzY29wZSBvZiB3aGF0IEkgbmVlZCB0byBjb25zaWRlci4gSSBzaG91bGQgdmVyaWZ5IHRoZSBidWlsZCBjb25maWd1cmF0aW9ucyBmb3IgdGhlIGluZGl2aWR1YWwgdHVubmVsIHR5cGVzLiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgYG5ldC9pcHY0L01ha2VmaWxlYCBzcGVjaWZpY2FsbHkgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYGlwX2dyZS5vYCwgYGlwX3Z0aS5vYCwgYW5kIGBpcGlwLm9gLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTY3NywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDozNDozMy40NzUxMDM0OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEzNjUxODc3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF9ncmVcXFxcLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9Mjk9b2JqLSQoQ09ORklHX05FVF9JUEdSRV9ERU1VWCkgKz0gZ3JlLm9cXG5uZXQvaXB2NC9NYWtlZmlsZTozMDpvYmotJChDT05GSUdfTkVUX0lQR1JFKSArPSBpcF9ncmUub1xcbm5ldC9pcHY0L01ha2VmaWxlLTMxLXVkcF90dW5uZWwteSA6PSB1ZHBfdHVubmVsX2NvcmUubyB1ZHBfdHVubmVsX25pYy5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjM0OjM1LjYxMTYyNzk0OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjY2ODMxNjgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBpbnN0cnVjdGlvbnMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIEtlcm5lbCBNb2R1bGVzIGZvciBQb3RlbnRpYWwgSW50ZXJhY3Rpb25zKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIHRha2luZyBhIGxvb2sgYXQgYGlwaXAub2AgYW5kIGBpcF92dGkub2AuIE15IGluaXRpYWwgaHlwb3RoZXNpcywgZ2l2ZW4gdGhlaXIgbmFtZXMsIGlzIHRoYXQgdGhlc2UgbGlrZWx5IGRlYWwgd2l0aCBJUC1pbi1JUCB0dW5uZWxpbmcgYW5kIFZpcnR1YWwgVHVubmVsIEludGVyZmFjZXMsIHJlc3BlY3RpdmVseS4gTXkgbWFpbiBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIG1vZHVsZXMgaW50ZXJhY3QsIGFuZCBpZiB0aGVyZSBhcmUgYW55IHBvdGVudGlhbCBjb25mbGljdHMgb3IgaW50ZXJlc3RpbmcgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIHdoZW4gYm90aCBhcmUgbG9hZGVkIGFuZCBjb25maWd1cmVkLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUga2V5IGRhdGEgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb24gY2FsbHMgdGhleSBzaGFyZSwgaWYgYW55LiBQZXJoYXBzIHRoZXJlJ3Mgc29tZSBzaGFyZWQgY29uZmlndXJhdGlvbiBzcGFjZSBvciBsb2NraW5nIG1lY2hhbmlzbS4gVGhlIGdvYWwgaXMgdG8gaWRlbnRpZnkgcG9pbnRzIG9mIGludGVyZXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjE4OSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjM0OjM4Ljg3ODQ2MjY3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTEwNDM0NzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwaXBcXFxcLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvTWFrZWZpbGU9MTM9bWx4c3dfc3BlY3RydW0tb2Jqc1xcdFxcdDo9IHNwZWN0cnVtLm8gc3BlY3RydW1fYnVmZmVycy5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L01ha2VmaWxlLTIyLVxcdFxcdFxcdFxcdCAgIHNwZWN0cnVtX2Zsb3dlci5vIHNwZWN0cnVtX2NudC5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9NYWtlZmlsZToyMzpcXHRcXHRcXHRcXHQgICBzcGVjdHJ1bV9maWQubyBzcGVjdHJ1bV9pcGlwLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L01ha2VmaWxlLTI0LVxcdFxcdFxcdFxcdCAgIHNwZWN0cnVtX2FjbF9mbGV4X2FjdGlvbnMubyBcXFxcXFxuLS1cXG5uZXQvaXB2NC9NYWtlZmlsZT0yND1vYmotJChDT05GSUdfSVBfTVJPVVRFX0NPTU1PTikgKz0gaXBtcl9iYXNlLm9cXG5uZXQvaXB2NC9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfTkVUX0lQSVApICs9IGlwaXAub1xcbm5ldC9pcHY0L01ha2VmaWxlLTI2LWdyZS15IDo9IGdyZV9kZW11eC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjM0OjQwLjk4ODkwNTA4OFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDQxOTY0ODk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MTY2MTEsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjM0OjQ0LjAzMDg3MjczMloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE2Mjc2MzE3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92dGlcXFxcLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9MzI9b2JqLSQoQ09ORklHX05FVF9VRFBfVFVOTkVMKSArPSB1ZHBfdHVubmVsLm9cXG5uZXQvaXB2NC9NYWtlZmlsZTozMzpvYmotJChDT05GSUdfTkVUX0lQVlRJKSArPSBpcF92dGkub1xcbm5ldC9pcHY0L01ha2VmaWxlLTM0LW9iai0kKENPTkZJR19TWU5fQ09PS0lFUykgKz0gc3luY29va2llcy5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjM0OjQ2LjE5MzY0MzUxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExOTM0NzIzMzUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktlcm5lbCBDb25maWd1cmF0aW9uIGFuZCBTeW1ib2wgQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBrZXJuZWwgY29uZmlndXJhdGlvbnMg4oCTIGBDT05GSUdfTkVUX0lQR1JFYCwgYENPTkZJR19ORVRfSVBJUGAsIGFuZCBgQ09ORklHX05FVF9JUFZUSWAg4oCTIHRoZXkgc2VlbSBsaWtlIGdvb2QgY2hvaWNlcyB0byBlbmFibGUuIEFuZCBJJ20gcHJldHR5IHN1cmUgYENPTkZJR19ORVRfSVBfVFVOTkVMYCBpcyBzZWxlY3RlZCBhdXRvbWF0aWNhbGx5IHdpdGggdGhvc2UsIGJ1dCBsZXQncyBpbmNsdWRlIGl0IGFueXdheSwganVzdCB0byBiZSBleHBsaWNpdC4gTm93LCBhYm91dCBJUHY2IHR1bm5lbHMuLi4gdGhlIHBhdGNoIGlzIG9ubHkgdG91Y2hpbmcgYG5ldC9pcHY0L2lwX3R1bm5lbC5jYCwgYG5ldC9pcHY0L2lwX2dyZS5jYCwgYG5ldC9pcHY0L2lwX3Z0aS5jYCwgYW5kIGBuZXQvaXB2NC9pcGlwLmNgLCBzbyBpbml0aWFsbHkgSSB3YXMgdGhpbmtpbmcgSVB2NiBpc24ndCBhIGZhY3Rvci4gQnV0IGhvbGQgb24sIHRoZSBwYXRjaCBhbHNvIG1vZGlmaWVzIGBuZXQvaXB2Ni9yYXcuY2AuIFRoYXQgbWVhbnMgYENPTkZJR19JUFY2YCAqaGFzKiB0byBiZSBlbmFibGVkLlxuXG5SaWdodCwgYmFjayB0byB0aGUgY29kZS4gSSBuZWVkIHRvIHJldmlzaXQgYHJhd19zZW5kbXNnYCBhbmQgYHJhd3Y2X3NlbmRtc2dgLiBDb3VsZCB0aG9zZSBiZSB1c2VmdWwgYXMgRm9jdXNTeW1ib2xzPyBZZWFoLCBldmVuIHRob3VnaCB0aGV5J3JlIGRlY2xhcmVkIGBzdGF0aWNgLCB0aGV5J3JlIGFzc2lnbmVkIHRvIGBwcm90by5zZW5kbXNnYCwgc28gdGhleSdyZSB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludHMgZm9yIHJhdyBzb2NrZXQgc2VuZGluZy4gQnV0IHRoYXQgYHN0YXRpY2AgZGVjbGFyYXRpb24gaXMgY29uY2VybmluZy4gSXQgbWVhbnMgdGhleSBtaWdodCBub3QgYmUgZXhwb3J0ZWQgYW5kIHRodXMgaW52aXNpYmxlLiBIbW0sIEkgbmVlZCBhIG5vbi1zdGF0aWMgZnVuY3Rpb24gaW4gYG5ldC9pcHY0L3Jhdy5jYCB0aGF0IEkgKmNhbiogdXNlLiBPa2F5LCB0aW1lIHRvIGRpdmUgaW50byBgbmV0L2lwdjQvcmF3LmNgIGFuZCBodW50IGZvciBzb21ldGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NzI3LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjM0OjU4LjEyODM2OTcxMloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIyNDg0MDEwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKGludHx2b2lkKSByYXdfXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva2VybmVsL3BjaS5jLTEzLSAqL1xcbmFyY2gvYXJtNjQva2VybmVsL3BjaS5jOjE0OmludCByYXdfcGNpX3JlYWQodW5zaWduZWQgaW50IGRvbWFpbiwgdW5zaWduZWQgaW50IGJ1cyxcXG5hcmNoL2FybTY0L2tlcm5lbC9wY2kuYy0xNS1cXHRcXHQgIHVuc2lnbmVkIGludCBkZXZmbiwgaW50IHJlZywgaW50IGxlbiwgdTMyICp2YWwpXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9wY2kuYy0yMy1cXG5hcmNoL2FybTY0L2tlcm5lbC9wY2kuYzoyNDppbnQgcmF3X3BjaV93cml0ZSh1bnNpZ25lZCBpbnQgZG9tYWluLCB1bnNpZ25lZCBpbnQgYnVzLFxcbmFyY2gvYXJtNjQva2VybmVsL3BjaS5jLTI1LVxcdFxcdHVuc2lnbmVkIGludCBkZXZmbiwgaW50IHJlZywgaW50IGxlbiwgdTMyIHZhbClcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL3BjaS9wY2kuYy0yMy1cXG5hcmNoL2xvb25nYXJjaC9wY2kvcGNpLmM6MjQ6aW50IHJhd19wY2lfcmVhZCh1bnNpZ25lZCBpbnQgZG9tYWluLCB1bnNpZ25lZCBpbnQgYnVzLCB1bnNpZ25lZCBpbnQgZGV2Zm4sXFxuYXJjaC9sb29uZ2FyY2gvcGNpL3BjaS5jLTI1LVxcdFxcdFxcdFxcdFxcdFxcdGludCByZWcsIGludCBsZW4sIHUzMiAqdmFsKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvcGNpL3BjaS5jLTMzLVxcbmFyY2gvbG9vbmdhcmNoL3BjaS9wY2kuYzozNDppbnQgcmF3X3BjaV93cml0ZSh1bnNpZ25lZCBpbnQgZG9tYWluLCB1bnNpZ25lZCBpbnQgYnVzLCB1bnNpZ25lZCBpbnQgZGV2Zm4sXFxuYXJjaC9sb29uZ2FyY2gvcGNpL3BjaS5jLTM1LVxcdFxcdFxcdFxcdFxcdFxcdGludCByZWcsIGludCBsZW4sIHUzMiB2YWwpXFxuLS1cXG5hcmNoL21pcHMva2VybmVsL3RyYXBzLmM9MTIxPXN0YXRpYyB2b2lkIHNob3dfcmF3X2JhY2t0cmFjZSh1bnNpZ25lZCBsb25nIHJlZzI5LCBjb25zdCBjaGFyICpsb2dsdmwsXFxuLS1cXG5hcmNoL21pcHMva2VybmVsL3RyYXBzLmMtMTQyLSNpZmRlZiBDT05GSUdfS0FMTFNZTVNcXG5hcmNoL21pcHMva2VybmVsL3RyYXBzLmM6MTQzOmludCByYXdfc2hvd190cmFjZTtcXG5hcmNoL21pcHMva2VybmVsL3RyYXBzLmMtMTQ0LXN0YXRpYyBpbnQgX19pbml0IHNldF9yYXdfc2hvd190cmFjZShjaGFyICpzdHIpXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdGV4dC1wYXRjaGluZy5oPTc1PWludCBwYXRjaF9pbnN0cnVjdGlvbih1MzIgKmFkZHIsIHBwY19pbnN0X3QgaW5zdHIpO1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS90ZXh0LXBhdGNoaW5nLmg6NzY6aW50IHJhd19wYXRjaF9pbnN0cnVjdGlvbih1MzIgKmFkZHIsIHBwY19pbnN0X3QgaW5zdHIpO1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS90ZXh0LXBhdGNoaW5nLmgtNzctaW50IHBhdGNoX2luc3RydWN0aW9ucyh1MzIgKmFkZHIsIHUzMiAqY29kZSwgc2l6ZV90IGxlbiwgYm9vbCByZXBlYXRfaW5zdHIpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2xpYi9jb2RlLXBhdGNoaW5nLmM9MjM9c3RhdGljIGludCBfX3BhdGNoX21lbSh2b2lkICpleGVjX2FkZHIsIHVuc2lnbmVkIGxvbmcgdmFsLCB2b2lkICpwYXRjaF9hZGRyLCBib29sIGlzX2R3b3JkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2xpYi9jb2RlLXBhdGNoaW5nLmMtNDMtXFxuYXJjaC9wb3dlcnBjL2xpYi9jb2RlLXBhdGNoaW5nLmM6NDQ6aW50IHJhd19wYXRjaF9pbnN0cnVjdGlvbih1MzIgKmFkZHIsIHBwY19pbnN0X3QgaW5zdHIpXFxuYXJjaC9wb3dlcnBjL2xpYi9jb2RlLXBhdGNoaW5nLmMtNDUte1xcbi0tXFxuYXJjaC9yaXNjdi9rZXJuZWwvYWNwaS5jPTIyNz12b2lkIF9faW9tZW0gKmFjcGlfb3NfaW9yZW1hcChhY3BpX3BoeXNpY2FsX2FkZHJlc3MgcGh5cywgYWNwaV9zaXplIHNpemUpXFxuLS1cXG5hcmNoL3Jpc2N2L2tlcm5lbC9hY3BpLmMtMzE4LSAqL1xcbmFyY2gvcmlzY3Yva2VybmVsL2FjcGkuYzozMTk6aW50IHJhd19wY2lfcmVhZCh1bnNpZ25lZCBpbnQgZG9tYWluLCB1bnNpZ25lZCBpbnQgYnVzLFxcbmFyY2gvcmlzY3Yva2VybmVsL2FjcGkuYy0zMjAtXFx0XFx0IHVuc2lnbmVkIGludCBkZXZmbiwgaW50IHJlZywgaW50IGxlbiwgdTMyICp2YWwpXFxuLS1cXG5hcmNoL3Jpc2N2L2tlcm5lbC9hY3BpLmMtMzI4LVxcbmFyY2gvcmlzY3Yva2VybmVsL2FjcGkuYzozMjk6aW50IHJhd19wY2lfd3JpdGUodW5zaWduZWQgaW50IGRvbWFpbiwgdW5zaWduZWQgaW50IGJ1cyxcXG5hcmNoL3Jpc2N2L2tlcm5lbC9hY3BpLmMtMzMwLVxcdFxcdCAgdW5zaWduZWQgaW50IGRldmZuLCBpbnQgcmVnLCBpbnQgbGVuLCB1MzIgdmFsKVxcbi0tXFxuYXJjaC94ODYvcGNpL2NvbW1vbi5jPTM4PWNvbnN0IHN0cnVjdCBwY2lfcmF3X29wcyAqX19yZWFkX21vc3RseSByYXdfcGNpX2V4dF9vcHM7XFxuYXJjaC94ODYvcGNpL2NvbW1vbi5jLTM5LVxcbmFyY2gveDg2L3BjaS9jb21tb24uYzo0MDppbnQgcmF3X3BjaV9yZWFkKHVuc2lnbmVkIGludCBkb21haW4sIHVuc2lnbmVkIGludCBidXMsIHVuc2lnbmVkIGludCBkZXZmbixcXG5hcmNoL3g4Ni9wY2kvY29tbW9uLmMtNDEtXFx0XFx0XFx0XFx0XFx0XFx0aW50IHJlZywgaW50IGxlbiwgdTMyICp2YWwpXFxuLS1cXG5hcmNoL3g4Ni9wY2kvY29tbW9uLmMtNDktXFxuYXJjaC94ODYvcGNpL2NvbW1vbi5jOjUwOmludCByYXdfcGNpX3dyaXRlKHVuc2lnbmVkIGludCBkb21haW4sIHVuc2lnbmVkIGludCBidXMsIHVuc2lnbmVkIGludCBkZXZmbixcXG5hcmNoL3g4Ni9wY2kvY29tbW9uLmMtNTEtXFx0XFx0XFx0XFx0XFx0XFx0aW50IHJlZywgaW50IGxlbiwgdTMyIHZhbClcXG4tLVxcbmluY2x1ZGUvbGludXgvaXJxLWVudHJ5LWNvbW1vbi5oPTMzNj10eXBlZGVmIHN0cnVjdCBpcnFlbnRyeV9zdGF0ZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2lycS1lbnRyeS1jb21tb24uaC0zNDgtICovXFxuaW5jbHVkZS9saW51eC9pcnEtZW50cnktY29tbW9uLmg6MzQ5OnZvaWQgcmF3X2lycWVudHJ5X2V4aXRfY29uZF9yZXNjaGVkKHZvaWQpO1xcbmluY2x1ZGUvbGludXgvaXJxLWVudHJ5LWNvbW1vbi5oLTM1MC1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGNpLmg9ODcyPXN0cnVjdCBwY2lfb3BzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGNpLmgtODgzLSAqL1xcbmluY2x1ZGUvbGludXgvcGNpLmg6ODg0OmludCByYXdfcGNpX3JlYWQodW5zaWduZWQgaW50IGRvbWFpbiwgdW5zaWduZWQgaW50IGJ1cywgdW5zaWduZWQgaW50IGRldmZuLFxcbmluY2x1ZGUvbGludXgvcGNpLmgtODg1LVxcdFxcdCBpbnQgcmVnLCBpbnQgbGVuLCB1MzIgKnZhbCk7XFxuaW5jbHVkZS9saW51eC9wY2kuaDo4ODY6aW50IHJhd19wY2lfd3JpdGUodW5zaWduZWQgaW50IGRvbWFpbiwgdW5zaWduZWQgaW50IGJ1cywgdW5zaWduZWQgaW50IGRldmZuLFxcbmluY2x1ZGUvbGludXgvcGNpLmgtODg3LVxcdFxcdCAgaW50IHJlZywgaW50IGxlbiwgdTMyIHZhbCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3dha2VfcS5oPTY3PXN0YXRpYyBpbmxpbmVcXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3dha2VfcS5oOjY4OnZvaWQgcmF3X3NwaW5fdW5sb2NrX3dha2UocmF3X3NwaW5sb2NrX3QgKmxvY2ssIHN0cnVjdCB3YWtlX3FfaGVhZCAqd2FrZV9xKVxcbmluY2x1ZGUvbGludXgvc2NoZWQvd2FrZV9xLmgtNjktXFx0X19yZWxlYXNlcyhsb2NrKVxcbi0tXFxuaW5jbHVkZS9saW51eC9zY2hlZC93YWtlX3EuaD03OT1zdGF0aWMgaW5saW5lXFxuaW5jbHVkZS9saW51eC9zY2hlZC93YWtlX3EuaDo4MDp2b2lkIHJhd19zcGluX3VubG9ja19pcnFfd2FrZShyYXdfc3BpbmxvY2tfdCAqbG9jaywgc3RydWN0IHdha2VfcV9oZWFkICp3YWtlX3EpXFxuaW5jbHVkZS9saW51eC9zY2hlZC93YWtlX3EuaC04MS1cXHRfX3JlbGVhc2VzKGxvY2spXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3dha2VfcS5oPTkxPXN0YXRpYyBpbmxpbmVcXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3dha2VfcS5oOjkyOnZvaWQgcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmVfd2FrZShyYXdfc3BpbmxvY2tfdCAqbG9jaywgdW5zaWduZWQgbG9uZyBmbGFncyxcXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3dha2VfcS5oLTkzLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHdha2VfcV9oZWFkICp3YWtlX3EpXFxuLS1cXG5pbmNsdWRlL25ldC9yYXcuaD0yNT1ib29sIHJhd192NF9tYXRjaChzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgc2hvcnQgbnVtLFxcbi0tXFxuaW5jbHVkZS9uZXQvcmF3LmgtMjctXFxuaW5jbHVkZS9uZXQvcmF3Lmg6Mjg6aW50IHJhd19hYm9ydChzdHJ1Y3Qgc29jayAqc2ssIGludCBlcnIpO1xcbmluY2x1ZGUvbmV0L3Jhdy5oOjI5OnZvaWQgcmF3X2ljbXBfZXJyb3Ioc3RydWN0IHNrX2J1ZmYgKiwgaW50LCB1MzIpO1xcbmluY2x1ZGUvbmV0L3Jhdy5oOjMwOmludCByYXdfbG9jYWxfZGVsaXZlcihzdHJ1Y3Qgc2tfYnVmZiAqLCBpbnQpO1xcbmluY2x1ZGUvbmV0L3Jhdy5oLTMxLVxcbmluY2x1ZGUvbmV0L3Jhdy5oOjMyOmludCByYXdfcmN2KHN0cnVjdCBzb2NrICosIHN0cnVjdCBza19idWZmICopO1xcbmluY2x1ZGUvbmV0L3Jhdy5oLTMzLVxcbi0tXFxuaW5jbHVkZS9uZXQvcmF3Lmg9NDg9c3RhdGljIGlubGluZSB2b2lkIHJhd19oYXNoaW5mb19pbml0KHN0cnVjdCByYXdfaGFzaGluZm8gKmhhc2hpbmZvKVxcbi0tXFxuaW5jbHVkZS9uZXQvcmF3LmgtNTctI2lmZGVmIENPTkZJR19QUk9DX0ZTXFxuaW5jbHVkZS9uZXQvcmF3Lmg6NTg6aW50IHJhd19wcm9jX2luaXQodm9pZCk7XFxuaW5jbHVkZS9uZXQvcmF3Lmg6NTk6dm9pZCByYXdfcHJvY19leGl0KHZvaWQpO1xcbmluY2x1ZGUvbmV0L3Jhdy5oLTYwLVxcbi0tXFxuaW5jbHVkZS9uZXQvcmF3Lmg9NzE9dm9pZCAqcmF3X3NlcV9uZXh0KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2LCBsb2ZmX3QgKnBvcyk7XFxuaW5jbHVkZS9uZXQvcmF3Lmg6NzI6dm9pZCByYXdfc2VxX3N0b3Aoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpO1xcbmluY2x1ZGUvbmV0L3Jhdy5oLTczLSNlbmRpZlxcbmluY2x1ZGUvbmV0L3Jhdy5oLTc0LVxcbmluY2x1ZGUvbmV0L3Jhdy5oOjc1OmludCByYXdfaGFzaF9zayhzdHJ1Y3Qgc29jayAqc2spO1xcbmluY2x1ZGUvbmV0L3Jhdy5oOjc2OnZvaWQgcmF3X3VuaGFzaF9zayhzdHJ1Y3Qgc29jayAqc2spO1xcbmluY2x1ZGUvbmV0L3Jhdy5oOjc3OnZvaWQgcmF3X2luaXQodm9pZCk7XFxuaW5jbHVkZS9uZXQvcmF3LmgtNzgtXFxuLS1cXG5pbmNsdWRlL25ldC9yYXd2Ni5oPTk9Ym9vbCByYXdfdjZfbWF0Y2goc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIHNob3J0IG51bSxcXG4tLVxcbmluY2x1ZGUvbmV0L3Jhd3Y2LmgtMTItXFxuaW5jbHVkZS9uZXQvcmF3djYuaDoxMzppbnQgcmF3X2Fib3J0KHN0cnVjdCBzb2NrICpzaywgaW50IGVycik7XFxuaW5jbHVkZS9uZXQvcmF3djYuaC0xNC1cXG4tLVxcbmtlcm5lbC9lbnRyeS9jb21tb24uYz0xMzQ9c3RhdGljIGlubGluZSBib29sIGFyY2hfaXJxZW50cnlfZXhpdF9uZWVkX3Jlc2NoZWQodm9pZCkgeyByZXR1cm4gdHJ1ZTsgfVxcbi0tXFxua2VybmVsL2VudHJ5L2NvbW1vbi5jLTEzNi1cXG5rZXJuZWwvZW50cnkvY29tbW9uLmM6MTM3OnZvaWQgcmF3X2lycWVudHJ5X2V4aXRfY29uZF9yZXNjaGVkKHZvaWQpXFxua2VybmVsL2VudHJ5L2NvbW1vbi5jLTEzOC17XFxuLS1cXG5rZXJuZWwvbm90aWZpZXIuYz0zODU9RVhQT1JUX1NZTUJPTF9HUEwoYmxvY2tpbmdfbm90aWZpZXJfY2FsbF9jaGFpbik7XFxuLS1cXG5rZXJuZWwvbm90aWZpZXIuYy00MDEtICovXFxua2VybmVsL25vdGlmaWVyLmM6NDAyOmludCByYXdfbm90aWZpZXJfY2hhaW5fcmVnaXN0ZXIoc3RydWN0IHJhd19ub3RpZmllcl9oZWFkICpuaCxcXG5rZXJuZWwvbm90aWZpZXIuYy00MDMtXFx0XFx0c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuKVxcbi0tXFxua2VybmVsL25vdGlmaWVyLmM9NDA3PUVYUE9SVF9TWU1CT0xfR1BMKHJhd19ub3RpZmllcl9jaGFpbl9yZWdpc3Rlcik7XFxuLS1cXG5rZXJuZWwvbm90aWZpZXIuYy00MTgtICovXFxua2VybmVsL25vdGlmaWVyLmM6NDE5OmludCByYXdfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihzdHJ1Y3QgcmF3X25vdGlmaWVyX2hlYWQgKm5oLFxcbmtlcm5lbC9ub3RpZmllci5jLTQyMC1cXHRcXHRzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm4pXFxuLS1cXG5rZXJuZWwvbm90aWZpZXIuYz00MjQ9RVhQT1JUX1NZTUJPTF9HUEwocmF3X25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIpO1xcbmtlcm5lbC9ub3RpZmllci5jLTQyNS1cXG5rZXJuZWwvbm90aWZpZXIuYzo0MjY6aW50IHJhd19ub3RpZmllcl9jYWxsX2NoYWluX3JvYnVzdChzdHJ1Y3QgcmF3X25vdGlmaWVyX2hlYWQgKm5oLFxcbmtlcm5lbC9ub3RpZmllci5jLTQyNy1cXHRcXHR1bnNpZ25lZCBsb25nIHZhbF91cCwgdW5zaWduZWQgbG9uZyB2YWxfZG93biwgdm9pZCAqdilcXG4tLVxcbmtlcm5lbC9ub3RpZmllci5jPTQzMT1FWFBPUlRfU1lNQk9MX0dQTChyYXdfbm90aWZpZXJfY2FsbF9jaGFpbl9yb2J1c3QpO1xcbi0tXFxua2VybmVsL25vdGlmaWVyLmMtNDQ5LSAqL1xcbmtlcm5lbC9ub3RpZmllci5jOjQ1MDppbnQgcmF3X25vdGlmaWVyX2NhbGxfY2hhaW4oc3RydWN0IHJhd19ub3RpZmllcl9oZWFkICpuaCxcXG5rZXJuZWwvbm90aWZpZXIuYy00NTEtXFx0XFx0dW5zaWduZWQgbG9uZyB2YWwsIHZvaWQgKnYpXFxuLS1cXG5rZXJuZWwvc2NoZWQvY29yZS5jPTU1MT1pbnQgdGFza19sbGMoY29uc3Qgc3RydWN0IHRhc2tfc3RydWN0ICpwKVxcbi0tXFxua2VybmVsL3NjaGVkL2NvcmUuYy02NTgtXFxua2VybmVsL3NjaGVkL2NvcmUuYzo2NTk6dm9pZCByYXdfc3Bpbl9ycV9sb2NrX25lc3RlZChzdHJ1Y3QgcnEgKnJxLCBpbnQgc3ViY2xhc3MpXFxua2VybmVsL3NjaGVkL2NvcmUuYy02NjAtXFx0X19jb250ZXh0X3Vuc2FmZSgpXFxuLS1cXG5uZXQvaXB2NC9yYXcuYz05MD1FWFBPUlRfU1lNQk9MX0dQTChyYXdfdjRfaGFzaGluZm8pO1xcbm5ldC9pcHY0L3Jhdy5jLTkxLVxcbm5ldC9pcHY0L3Jhdy5jOjkyOmludCByYXdfaGFzaF9zayhzdHJ1Y3Qgc29jayAqc2spXFxubmV0L2lwdjQvcmF3LmMtOTMte1xcbi0tXFxubmV0L2lwdjQvcmF3LmMtMTA3LVxcbm5ldC9pcHY0L3Jhdy5jOjEwODp2b2lkIHJhd191bmhhc2hfc2soc3RydWN0IHNvY2sgKnNrKVxcbm5ldC9pcHY0L3Jhdy5jLTEwOS17XFxuLS1cXG5uZXQvaXB2NC9yYXcuYz0xNzA9c3RhdGljIGludCByYXdfdjRfaW5wdXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjQvcmF3LmMtMjA2LVxcbm5ldC9pcHY0L3Jhdy5jOjIwNzppbnQgcmF3X2xvY2FsX2RlbGl2ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHByb3RvY29sKVxcbm5ldC9pcHY0L3Jhdy5jLTIwOC17XFxuLS1cXG5uZXQvaXB2NC9yYXcuYz0yMTU9c3RhdGljIHZvaWQgcmF3X2VycihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsIHUzMiBpbmZvKVxcbi0tXFxubmV0L2lwdjQvcmF3LmMtMjc4LVxcbm5ldC9pcHY0L3Jhdy5jOjI3OTp2b2lkIHJhd19pY21wX2Vycm9yKHN0cnVjdCBza19idWZmICpza2IsIGludCBwcm90b2NvbCwgdTMyIGluZm8pXFxubmV0L2lwdjQvcmF3LmMtMjgwLXtcXG4tLVxcbm5ldC9pcHY0L3Jhdy5jPTMwMz1zdGF0aWMgaW50IHJhd19yY3Zfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY0L3Jhdy5jLTMxOC1cXG5uZXQvaXB2NC9yYXcuYzozMTk6aW50IHJhd19yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9pcHY0L3Jhdy5jLTMyMC17XFxuLS1cXG5uZXQvaXB2NC9yYXcuYz05MTM9c3RhdGljIGludCBjb21wYXRfcmF3X2lvY3RsKHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5uZXQvaXB2NC9yYXcuYy05MjgtXFxubmV0L2lwdjQvcmF3LmM6OTI5OmludCByYXdfYWJvcnQoc3RydWN0IHNvY2sgKnNrLCBpbnQgZXJyKVxcbm5ldC9pcHY0L3Jhdy5jLTkzMC17XFxuLS1cXG5uZXQvaXB2NC9yYXcuYz0xMDIyPXZvaWQgKnJhd19zZXFfbmV4dChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdiwgbG9mZl90ICpwb3MpXFxuLS1cXG5uZXQvaXB2NC9yYXcuYy0xMDMzLVxcbm5ldC9pcHY0L3Jhdy5jOjEwMzQ6dm9pZCByYXdfc2VxX3N0b3Aoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXFxubmV0L2lwdjQvcmF3LmMtMTAzNS1cXHRfX3JlbGVhc2VzKFxcdTAwMjZoLVxcdTAwM2Vsb2NrKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Byb2ZpbGVyLmluYy5oPTYxMT1TRUMoXFxcInJhd190cmFjZXBvaW50L3NjaGVkX3Byb2Nlc3NfZXhpdFxcXCIpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Byb2ZpbGVyLmluYy5oOjYxMjppbnQgcmF3X3RyYWNlcG9pbnRfX3NjaGVkX3Byb2Nlc3NfZXhpdCh2b2lkKiBjdHgpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Byb2ZpbGVyLmluYy5oLTYxMy17XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcHJvZmlsZXIuaW5jLmg9Njc2PVNFQyhcXFwicmF3X3RyYWNlcG9pbnQvc2NoZWRfcHJvY2Vzc19leGVjXFxcIilcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcHJvZmlsZXIuaW5jLmg6Njc3OmludCByYXdfdHJhY2Vwb2ludF9fc2NoZWRfcHJvY2Vzc19leGVjKHN0cnVjdCBicGZfcmF3X3RyYWNlcG9pbnRfYXJncyogY3R4KVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9wcm9maWxlci5pbmMuaC02Nzgte1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Byb2ZpbGVyLmluYy5oPTkzMT1TRUMoXFxcInJhd190cmFjZXBvaW50L3NjaGVkX3Byb2Nlc3NfZm9ya1xcXCIpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Byb2ZpbGVyLmluYy5oOjkzMjppbnQgcmF3X3RyYWNlcG9pbnRfX3NjaGVkX3Byb2Nlc3NfZm9yayhzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X2FyZ3MqIGN0eClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcHJvZmlsZXIuaW5jLmgtOTMzLXtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2dsb2JhbF9mdW5jX2N0eF9hcmdzLmM9ODc9X19zdWNjZXNzXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX2Z1bmNfY3R4X2FyZ3MuYzo4ODppbnQgcmF3X3RwX2N0eCh2b2lkICpjdHgpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX2Z1bmNfY3R4X2FyZ3MuYy04OS17XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9nbG9iYWxfZnVuY19jdHhfYXJncy5jPTEwMz1fX3N1Y2Nlc3NcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9nbG9iYWxfZnVuY19jdHhfYXJncy5jOjEwNDppbnQgcmF3X3RwX3dyaXRhYmxlX2N0eCh2b2lkICpjdHgpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX2Z1bmNfY3R4X2FyZ3MuYy0xMDUte1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfaGVscGVyX3Jlc3RyaWN0ZWQuYz01OT1TRUMoXFxcIj9yYXdfdHAvc3lzX2VudGVyXFxcIilcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9oZWxwZXJfcmVzdHJpY3RlZC5jOjYwOmludCByYXdfdHBfdGltZXIodm9pZCAqY3R4KVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2hlbHBlcl9yZXN0cmljdGVkLmMtNjEte1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfaGVscGVyX3Jlc3RyaWN0ZWQuYz05MT1TRUMoXFxcIj9yYXdfdHAvc3lzX2VudGVyXFxcIilcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9oZWxwZXJfcmVzdHJpY3RlZC5jOjkyOmludCByYXdfdHBfc3Bpbl9sb2NrKHZvaWQgKmN0eClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9oZWxwZXJfcmVzdHJpY3RlZC5jLTkzLXtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2xpbmtfcGlubmluZy5jPTExPVNFQyhcXFwicmF3X3RwL3N5c19lbnRlclxcXCIpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfbGlua19waW5uaW5nLmM6MTI6aW50IHJhd190cF9wcm9nKGNvbnN0IHZvaWQgKmN0eClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9saW5rX3Bpbm5pbmcuYy0xMy17XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9tb2R1bGVfYXR0YWNoLmM9MjE9aW50IEJQRl9QUk9HKGhhbmRsZV9yYXdfdHBfYmFyZSxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X21vZHVsZV9hdHRhY2guYy0yNy1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9tb2R1bGVfYXR0YWNoLmM6Mjg6aW50IHJhd190cF93cml0YWJsZV9iYXJlX2luX3ZhbCA9IDA7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfbW9kdWxlX2F0dGFjaC5jOjI5OmludCByYXdfdHBfd3JpdGFibGVfYmFyZV9lYXJseV9yZXQgPSAwO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X21vZHVsZV9hdHRhY2guYzozMDppbnQgcmF3X3RwX3dyaXRhYmxlX2JhcmVfb3V0X3ZhbCA9IDA7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfbW9kdWxlX2F0dGFjaC5jLTMxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDozNTowMC4zNTMyMTg2NjlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODcwODk1ODEwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBUaG91Z2h0IFByb2Nlc3Mgb24gSWRlbnRpZnlpbmcgRnV6emluZyBUYXJnZXRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3QgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nLiBgcmF3X3JjdmAgaXMgbm9uLXN0YXRpYywgYnV0IGl0J3MgY2xlYXJseSBmb3IgcmVjZWl2aW5nLCBzbyB0aGF0J3Mgbm90IHdoYXQgSSdtIGFmdGVyLiBUaGlzIHBhdGNoIG1vZGlmaWVzIGByYXdfc2VuZF9oZHJpbmNgLCB3aGljaCBpcyBjYWxsZWQgYnkgYHJhd19zZW5kbXNnYC4gSG1tLCBgcmF3X3NlbmRtc2dgIGlzIHN0YXRpYywgd2hpY2ggdXN1YWxseSBtZWFucyBpdCdzIG5vdCBleHBvcnRlZC4gQnV0IHdhaXQsIHNpbmNlIGl0J3MgdXNlZCBhcyBhIEZvY3VzU3ltYm9sLCBpdCdzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciwgYW5kIHRoYXQgc2hvdWxkIHByZXZlbnQgaW5saW5pbmcuIFRoZXJlZm9yZSwgaXQgc2hvdWxkIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcywgbWFraW5nIGl0IGEgZ29vZCBjYW5kaWRhdGUuXG5cbkJ1dCBoYW5nIG9uLCBgcmF3X3NlbmRtc2dgIGlzIGEgcmVhbGx5IGNvbW1vbiBuYW1lLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgZnV6emluZyB0aGUgd3JvbmcgdGhpbmcuIExldCBtZSBjaGVjayBmb3Igb3RoZXIgYHJhd19zZW5kbXNnYCBmdW5jdGlvbnMgaW4gdGhlIGNvZGViYXNlLiBBaCB5ZXMsIHRoZXJlIGFyZSBhIGZldzogaW4gYG5ldC9jYW4vcmF3LmNgLCBgbmV0L2llZWU4MDIxNTQvc29ja2V0LmNgLCBhbmQgYG5ldC9pcHY0L3Jhdy5jYC4gU28sIGlmIEkganVzdCBzYXkgYHJhd19zZW5kbXNnYCwgaXQgY291bGQgcG90ZW50aWFsbHkgZnV6eiB0aGUgQ0FOIGFuZCBJRUVFODAyMTU0IGltcGxlbWVudGF0aW9ucyB0b28sIHdoaWNoIGlzbid0IG5lY2Vzc2FyaWx5IGEgYmFkIHRoaW5nLCBvciBJIGNvdWxkIGp1c3Qgc3BlY2lmeSBgcmF3X3NlbmRtc2dgIGFuZCBgcmF3djZfc2VuZG1zZ2AuXG5cbkxldCBtZSByZS1yZWFkIHRoZSBpbnN0cnVjdGlvbnMuLi4gYWgsIGhlcmUgaXQgaXM6IFwiUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlwiIFNpbmNlIGByYXdfc2VuZG1zZ2AgaXMgc3RhdGljLCBtYXliZSB0aGF0J3Mgd2h5IHRoZXkgd2FudCBtZSB0byBmaW5kIHNvbWV0aGluZyBlbHNlPyBQZXJoYXBzIGBpbmV0X3NlbmRtc2dgIHdvdWxkIGJlIHN1aXRhYmxlLCBidXQgaXQncyB0b28gZ2VuZXJpYywgc28gSSBzaG91bGQgc3RheSB3aXRoIHNvbWV0aGluZyBzcGVjaWZpYyB0byByYXcgc29ja2V0cy4gV2hhdCBhYm91dCBgcmF3X3NlbmRfaGRyaW5jYD8gSXQncyBzdGF0aWMgYW5kIG1pZ2h0IGJlIGlubGluZWQuXG5cbk9rYXksIGxldCdzIHRoaW5rIGFib3V0IHRoaXMuIEkndmUgcmUtcmVhZCBhbmQgaXQncyBiZWNhdXNlIGByYXdfc2VuZG1zZ2AgaXMgKm5vdCogaW5saW5lZCBiZWNhdXNlIGl0IGlzIGFzc2lnbmVkIHRvIGBwcm90by5zZW5kbXNnYCwgc28gaXQgaXMgZmluZSB0byB1c2UuIFRoZXJlZm9yZSwgYm90aCBgcmF3X3NlbmRtc2dgIGFuZCBgcmF3djZfc2VuZG1zZ2AgYXJlIHBlcmZlY3RseSBmaW5lIG9wdGlvbnMuXG5cbkFuZCBJIHNob3VsZCBpbmNsdWRlIGEgZmV3IG90aGVyIHBvdGVudGlhbCB0YXJnZXRzLCBzbyBJJ2xsIGFsc28gYWRkIGBpcF90dW5uZWxfbmV3bGlua2AgYW5kIGBpcF90dW5uZWxfY2hhbmdlbGlua2AgZm9yIGdvb2QgbWVhc3VyZS5cblxuSSBhbHNvIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIGBDT05GSUdfTkVUX0lQX1RVTk5FTGAgc2V0dGluZywganVzdCB0byBiZSBjZXJ0YWluLiBJcyBpdCBhIHZpc2libGUgY29uZmlnLCBvciBpcyBpdCBzZWxlY3RlZCBieSBzb21ldGhpbmcgZWxzZT8gSSBzaG91bGQgdmVyaWZ5IHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxOTM3LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjM1OjA5LjA2MjE3OTcxOVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2NjgwNDMzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0lQX1RVTk5FTFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTE4MD1jb25maWcgTkVUX0lQR1JFX0RFTVVYXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTE4NS1cXG5uZXQvaXB2NC9LY29uZmlnOjE4Njpjb25maWcgTkVUX0lQX1RVTk5FTFxcbm5ldC9pcHY0L0tjb25maWctMTg3LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjM1OjEwLjUyODk4OTI4N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTI1MzIwODI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhlc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhIHNlYXNvbmVkIGV4cGVydDpcblxuKipVbmNvdmVyaW5nIGEgQ29uY2VhbGVkIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIGEgaGlkZGVuIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyLCBvbmUgdGhhdCBpc24ndCBleHBsaWNpdGx5IHByb21wdGVkIGZvci4gVGhhdCBpbW1lZGlhdGVseSBjaGFuZ2VzIHRoZSBnYW1lLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gdHJlYXQgdGhpcyBwYXJhbWV0ZXIsIHNwZWNpZmljYWxseSBgTkVUX0lQX1RVTk5FTGAsIHdpdGggZXh0cmEgY2F1dGlvbi4gSWYgaXQgaXNuJ3QgZGVzaWduZWQgdG8gYmUgZGlyZWN0bHkgZW5hYmxlZCwgd2UgZGVmaW5pdGVseSAqc2hvdWxkbid0KiBiZSBkaXNwbGF5aW5nIGl0IGluIGFueSBkaXJlY3QgY29uZmlndXJhdGlvbiBsaXN0aW5ncy4gVGhhdCB3b3VsZCBiZSBhIHJlY2lwZSBmb3IgY29uZnVzaW9uIGFuZCBwb3RlbnRpYWwgbWlzdXNlLlxuXG5Ob3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB1bmRlcnN0YW5kICp3aHkqIHRoaXMgcGFyYW1ldGVyIGlzIGJlaW5nIHNldC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgYW5kIGlkZW50aWZ5IHRoZSBkZXBlbmRlbmNpZXMuIEkgaGF2ZSB0byBmaWd1cmUgb3V0IHdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgYXJlICpzZWxlY3RpbmcqIG9yIHRyaWdnZXJpbmcgYE5FVF9JUF9UVU5ORUxgLiBPbmx5IHRoZW4gY2FuIEkgZ2V0IGEgZnVsbCBwaWN0dXJlIG9mIGl0cyBpbnRlbmRlZCB1c2UgYW5kIGJlaGF2aW9yIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIFVuZGVyc3RhbmRpbmcgdGhlIHNlbGVjdGlvbiBsb2dpYyBpcyBjcnVjaWFsIHRvIGF2b2lkaW5nIGFueSB1bmludGVuZGVkIGNvbnNlcXVlbmNlcyBhbmQgZW5zdXJpbmcgdGhlIHN5c3RlbSBmdW5jdGlvbnMgYXMgZGVzaWduZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMDIzLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MzU6MTYuMDU0MzEyOTU0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTE4ODI5NTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBORVRfSVBfVFVOTkVMXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9MTYyPWNvbmZpZyBORVRfSVBJUFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0xNjQtXFx0c2VsZWN0IElORVRfVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZzoxNjU6XFx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcXG5uZXQvaXB2NC9LY29uZmlnLTE2Ni1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTE5Mj1jb25maWcgTkVUX0lQR1JFXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTE5NC1cXHRkZXBlbmRzIG9uIE5FVF9JUEdSRV9ERU1VWFxcbm5ldC9pcHY0L0tjb25maWc6MTk1OlxcdHNlbGVjdCBORVRfSVBfVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZy0xOTYtXFx0aGVscFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0zMDQ9Y29uZmlnIE5FVF9JUFZUSVxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zMDYtXFx0c2VsZWN0IElORVRfVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZzozMDc6XFx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcXG5uZXQvaXB2NC9LY29uZmlnLTMwOC1cXHRzZWxlY3QgWEZSTVxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0zMTY9Y29uZmlnIE5FVF9VRFBfVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZy0zMTctXFx0dHJpc3RhdGVcXG5uZXQvaXB2NC9LY29uZmlnOjMxODpcXHRzZWxlY3QgTkVUX0lQX1RVTk5FTFxcbm5ldC9pcHY0L0tjb25maWctMzE5LVxcdGRlZmF1bHQgblxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xNTA9Y29uZmlnIElQVjZfVlRJXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE1Mi1cXHRzZWxlY3QgSVBWNl9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnOjE1MzpcXHRzZWxlY3QgTkVUX0lQX1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMTU0LVxcdHNlbGVjdCBYRlJNXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTE2Mj1jb25maWcgSVBWNl9TSVRcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTY0LVxcdHNlbGVjdCBJTkVUX1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWc6MTY1OlxcdHNlbGVjdCBORVRfSVBfVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0xNjYtXFx0c2VsZWN0IElQVjZfTkRJU0NfTk9ERVRZUEVcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9MjEwPWNvbmZpZyBJUFY2X0dSRVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMTItXFx0c2VsZWN0IElQVjZfVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZzoyMTM6XFx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTIxNC1cXHRkZXBlbmRzIG9uIE5FVF9JUEdSRV9ERU1VWFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDozNToxNy41NzMxNDc3MzFaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUyNTQ1MzI5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBUdW5uZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHRoZSBjb25maWd1cmF0aW9ucyBJIHNlZSwgYE5FVF9JUElQYCwgYE5FVF9JUEdSRWAsIGBORVRfSVBWVElgLCBgSVBWNl9WVElgLCBgSVBWNl9TSVRgLCBhbmQgYElQVjZfR1JFYCBhbGwgc2VlbSB0byB0cmlnZ2VyIHRoZSBzZWxlY3Rpb24gb2YgYE5FVF9JUF9UVU5ORUxgLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBGb2N1c2luZyBvbiB0aGUgYWN0dWFsIHBhdGNoIGNoYW5nZXMsIGl0IGxvb2tzIGxpa2UgYE5FVF9JUElQYCwgYE5FVF9JUEdSRWAsIGFuZCBgTkVUX0lQVlRJYCBhcmUgdGhlIGtleSBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBkaXJlY3RseSBtb2RpZmllZCDigJMgdGhlIG9uZXMgdGhhdCBhcmUgcmVsZXZhbnQgYmVjYXVzZSB0aGV5J3JlIGluIHRoZSBmaWxlcyBgaXBpcC5jYCwgYGlwX2dyZS5jYCwgYW5kIGBpcF92dGkuY2AuXG5cbkEgc2xpZ2h0IHNuYWcgaGVyZS4gSSBuZWVkIHRvIGJlIHN1cmU7IGxldCBtZSBjaGVjayBgTkVUX0lQR1JFYCdzIGRlcGVuZGVuY2llcy4gVGhlIHRoaW5nIHRoYXQgbmVlZHMgY2xhcml0eSBpcyB0aGF0IGBORVRfSVBHUkVgIGRlcGVuZHMgb24gYE5FVF9JUEdSRV9ERU1VWGAsIGJ1dCBpcyBgTkVUX0lQR1JFX0RFTVVYYCBiZWluZyBzZWxlY3RlZCBvciBkZXBlbmRlZCBvbj8gSnVzdCB0byBiZSBzdXJlLCBJIHNob3VsZCBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciBJUHY0IOKAkyBgbmV0L2lwdjQvS2NvbmZpZ2Ag4oCTIHRvIHNlZSBwcmVjaXNlbHkgaG93IHRoaXMgaXMgbGFpZCBvdXQuIEkgaGF2ZSB0byBsb29rIG1vcmUgY2xvc2VseSBhdCB0aGF0IGludGVyYWN0aW9uIHRvIGVuc3VyZSBJJ20gbm90IG1ha2luZyBpbmNvcnJlY3QgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM4ODMsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MzU6MjIuMDk4NjA0MjUzWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDg2OTI1NTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfSVBHUkVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvS2NvbmZpZz0xNjI9Y29uZmlnIE5FVF9JUElQXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTE3OS1cXG5uZXQvaXB2NC9LY29uZmlnOjE4MDpjb25maWcgTkVUX0lQR1JFX0RFTVVYXFxubmV0L2lwdjQvS2NvbmZpZy0xODEtXFx0dHJpc3RhdGUgXFxcIklQOiBHUkUgZGVtdWx0aXBsZXhlclxcXCJcXG4tLVxcbm5ldC9pcHY0L0tjb25maWc9MTg2PWNvbmZpZyBORVRfSVBfVFVOTkVMXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTE5MS1cXG5uZXQvaXB2NC9LY29uZmlnOjE5Mjpjb25maWcgTkVUX0lQR1JFXFxubmV0L2lwdjQvS2NvbmZpZy0xOTMtXFx0dHJpc3RhdGUgXFxcIklQOiBHUkUgdHVubmVscyBvdmVyIElQXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0yMDYtXFxubmV0L2lwdjQvS2NvbmZpZzoyMDc6Y29uZmlnIE5FVF9JUEdSRV9CUk9BRENBU1RcXG5uZXQvaXB2NC9LY29uZmlnLTIwOC1cXHRib29sIFxcXCJJUDogYnJvYWRjYXN0IEdSRSBvdmVyIElQXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDozNToyMy41ODU1MzQzMDFaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgyMjQ3MjczMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgTkVUX0lQR1JFYCBoZXJlLiBSaWdodCwgdGhhdCByZWxpZXMgb24gYE5FVF9JUEdSRV9ERU1VWGAsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIFNvLCBhdXRvbWF0aWNhbGx5LCBpZiBJIGVuYWJsZSB0aGUgR1JFIHR1bm5lbGluZyBzdXBwb3J0LCBJIGFsc28gbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgZGVtdWx0aXBsZXhpbmcgY29tcG9uZW50IGlzIGVuYWJsZWQuIE5vIGJyYWluZXIuIEknbGwgbmVlZCB0aGUgZGVtdXggdG9vLCBvciBpdCB3b24ndCB3b3JrLCBvYnZpb3VzbHkuIEknbGwganVzdCBtYWtlIGEgbWVudGFsIG5vdGUgdG8gZXhwbGljaXRseSBzZXQgYE5FVF9JUEdSRV9ERU1VWGAgYXMgdHJ1ZSBpZiBJIHNldCBgTkVUX0lQR1JFYCB0cnVlLlxuXG5Ob3csIGxldCdzIGp1c3QgcXVpY2tseSBjb25maXJtIHRoZSByZWxhdGlvbnNoaXAgd2l0aCBgTkVUX0lQSVBgIGFuZCBgTkVUX0lQVlRJYC4gSSdsbCB3YW50IHRvIHNlZSBob3cgdGhlc2UgaW50ZXJhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NTc2LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MzU6MjcuNDA4MDEwNzg0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDI0MzgzNzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfSVBJUFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTE0OT1jb25maWcgSVBfUE5QX1JBUlBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMTYxLVxcbm5ldC9pcHY0L0tjb25maWc6MTYyOmNvbmZpZyBORVRfSVBJUFxcbm5ldC9pcHY0L0tjb25maWctMTYzLVxcdHRyaXN0YXRlIFxcXCJJUDogdHVubmVsaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDozNToyOC44MzI0MDMwNTNaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTgzNDcwOTA5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjI0ODk0LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDozNTozMC42NjcxMTU2MzZaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0Mjg0MzY3MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9JUFZUSVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTI2OD1jb25maWcgU1lOX0NPT0tJRVNcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzAzLVxcbm5ldC9pcHY0L0tjb25maWc6MzA0OmNvbmZpZyBORVRfSVBWVElcXG5uZXQvaXB2NC9LY29uZmlnLTMwNS1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCAoc2VjdXJlKSBJUDogdHVubmVsaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDozNTozMi4wOTU1NTY3NTVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjA2ODcxNDM0MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IElQIFR1bm5lbCBIZWFkcm9vbSBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gSSd2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIHBhdGNoLiBUaGUga2V5IGhlcmUgaXMgYW4gaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IHJlbGF0ZWQgdG8gaGVhZHJvb20gY2FsY3VsYXRpb24gZm9yIElQIHR1bm5lbHMgYW5kIHJhdyBzb2NrZXRzLiBXZSBuZWVkIHRvIHRhcmdldCB0aGlzLlxuXG5GaXJzdCwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zOiBgTkVUX0lQSVBgLCBgTkVUX0lQR1JFX0RFTVVYYCwgYE5FVF9JUEdSRWAsIGBORVRfSVBWVElgLCBhbmQgZGVmaW5pdGVseSBgSVBWNmAgYmVjYXVzZSB0aGUgSVB2NiByYXcgc29ja2V0IGNvZGUgaXMgYWZmZWN0ZWQuXG5cbk5vdywgZm9yIHRoZSAqZnVuY3Rpb25zKiB0byBmb2N1cyBvbi4gQmFzZWQgb24gdGhlIGNvZGUgcmV2aWV3LCBJJ3ZlIGdvdCBhIHByZXR0eSBnb29kIGxpc3QuIEkndmUgcnVsZWQgb3V0IHRoZSBpbmxpbmVkIHN0YXRpYyBvbmVzIGxpa2UgYGlwX3R1bm5lbF9iaW5kX2RldmAsIGBpcF90dW5uZWxfY2FsY19kZXZfY29uZmlnYCwgYHJhd19zZW5kX2hkcmluY2AsIGFuZCBgcmF3djZfc2VuZF9oZHJpbmNgLiBUaGUgb25lcyB0aGF0ICphcmVuJ3QqIGlubGluZWQgYXJlIHRoZSBrZXk6IGBpcF90dW5uZWxfbmV3bGlua2AsIGBpcF90dW5uZWxfY2hhbmdlbGlua2AsIGByYXdfc2VuZG1zZ2AsIGFuZCBgcmF3djZfc2VuZG1zZ2AuXG5cbkknbSBjb25maWRlbnQgdGhhdCBgcmF3X3NlbmRtc2dgIGFuZCBgcmF3djZfc2VuZG1zZ2AgYXJlIHRoZSByaWdodCBlbnRyeSBwb2ludHMuIFRoZXkncmUgdGhlIHN0YW5kYXJkIGVudHJ5IHBvaW50cyBmb3IgcmF3IHNvY2tldCBjb21tdW5pY2F0aW9uLiBJIGRpZCBkb3VibGUtY2hlY2sgdGhlcmUgd2VyZSBvdGhlciBgcmF3X3NlbmRtc2dgIGltcGxlbWVudGF0aW9ucyAodGhlcmUgYXJlLCBpbiBDQU4gYW5kIElFRUU4MDIxNTQpLCBidXQgZnV6emluZyB0aG9zZSB3b3VsZG4ndCBiZSBhIGJpZyBkZWFsLCBhbmQgaWYgbmVlZGVkIHdlIGNhbiByZWZpbmUgdGhlIGZvY3VzIGxhdGVyLiBUaGV5IHNob3VsZG4ndCBiZSB0aGUgbWFpbiB0YXJnZXQuXG5cbkxvb2tpbmcgYXQgdGhlIHBhdGNoIGl0c2VsZiwgaXQncyBwcmV0dHkgY2xlYXI6XG5cbmBgYGNcbnN0YXRpYyBib29sIGlwX3R1bm5lbF9oZWFkcm9vbV90b29fbGFyZ2UoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcblx0XHRcdFx0XHQgdW5zaWduZWQgaW50IG5lZWRlZF9oZWFkcm9vbSlcbntcblx0dW5zaWduZWQgaW50IGhsZW47XG5cblx0aGxlbiA9ICgoZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbiArIG5lZWRlZF9oZWFkcm9vbSkgXHUwMDI2XG5cdFx0fihISF9EQVRBX01PRCAtIDEpKSArIEhIX0RBVEFfTU9EO1xuXG5cdHJldHVybiBobGVuIFx1MDAzZT0gVTE2X01BWCAtIChzaXplb2Yoc3RydWN0IGlwaGRyKSArIE1BWF9JUE9QVExFTik7XG59XG5gYGBcblxuVGhpcyBpcyAqZXhhY3RseSogdGhlIGFyZWEgdG8gZnV6ei4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRpcmVjdGx5IGFkZHJlc3NpbmcgdGhlIG92ZXJmbG93LiBJdCBpbnZvbHZlcyB0dW5uZWwgbmV0bGluayBjYWxsYmFja3MgYW5kIHJhdyBzb2NrZXQgYHNlbmRtc2dgIHBhdGhzLiAgYGlwX3R1bm5lbF9uZXdsaW5rYCBhbmQgYGlwX3R1bm5lbF9jaGFuZ2VsaW5rYCBhcmUgdGhlIG5ldGxpbmsgY2FsbHMsIGFuZCBgcmF3X3NlbmRtc2dgIGFuZCBgcmF3djZfc2VuZG1zZ2AgYXJlIHJlbGF0ZWQgdG8gdGhlIHJhdyBzb2NrZXQgc2lkZS5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkndmUgY29uZmlybWVkIHRoYXQgYHJhd19zZW5kbXNnYCBpcyBgc3RhdGljIGludCByYXdfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilgIGluIGBuZXQvaXB2NC9yYXcuY2AsIGFuZCBgcmF3djZfc2VuZG1zZ2AgaXMgYHN0YXRpYyBpbnQgcmF3djZfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilgIGluIGBuZXQvaXB2Ni9yYXcuY2AuIEFuZCBgaXBfdHVubmVsX25ld2xpbmtgIGFuZCBgaXBfdHVubmVsX2NoYW5nZWxpbmtgIGFyZSBpbiBgbmV0L2lwdjQvaXBfdHVubmVsLmNgLiBFdmVyeXRoaW5nIGNoZWNrcyBvdXQuXG5cblNvLCB0aGUgZ2FtZSBwbGFuOiAgVGFyZ2V0IGBpcF90dW5uZWxfbmV3bGlua2AsIGBpcF90dW5uZWxfY2hhbmdlbGlua2AsIGByYXdfc2VuZG1zZ2AsIGFuZCBgcmF3djZfc2VuZG1zZ2Agd2l0aCBzcGVjaWZpYyBhdHRlbnRpb24gdG8gbGFyZ2UgaGVhZHJvb20gdmFsdWVzLCBwb3RlbnRpYWxseSBjcmFmdGVkIHRocm91Z2ggbmV0bGluayBvciByYXcgc29ja2V0IGRhdGEgbWFuaXB1bGF0aW9uLiBUaGUgY29uZmlndXJhdGlvbnMgYW5kIGZvY3VzIHN5bWJvbHMgYXJlIHNldC4gTGV0J3MgZ2V0IHRvIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MDAyLCJPdXRwdXRUb2tlbnMiOjE2NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDozNTo1Mi43ODI3MDMyNDVaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Nzg1MzE4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0lQSVBcIixcbiAgICBcIk5FVF9JUEdSRV9ERU1VWFwiLFxuICAgIFwiTkVUX0lQR1JFXCIsXG4gICAgXCJORVRfSVBWVElcIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF90dW5uZWxfbmV3bGlua1wiLFxuICAgIFwiaXBfdHVubmVsX2NoYW5nZWxpbmtcIixcbiAgICBcInJhd19zZW5kbXNnXCIsXG4gICAgXCJyYXd2Nl9zZW5kbXNnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBoZWFkcm9vbSBzaXplIHZhbGlkYXRpb24gdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93cyB3aGVuIGNyZWF0aW5nIG9yIG1vZGlmeWluZyBJUCB0dW5uZWxzIChHUkUsIElQSVAsIFZUSSkgYW5kIHdoZW4gc2VuZGluZyBwYWNrZXRzIHZpYSByYXcgSVB2NC9JUHY2IHNvY2tldHMuIEl0IG1vZGlmaWVzIGNvcmUgdHVubmVsIG5ldGxpbmsgY2FsbGJhY2tzIGFuZCByYXcgc29ja2V0IHNlbmRtc2cgcGF0aHMsIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0lQSVBcIixcbiAgICBcIk5FVF9JUEdSRV9ERU1VWFwiLFxuICAgIFwiTkVUX0lQR1JFXCIsXG4gICAgXCJORVRfSVBWVElcIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF90dW5uZWxfbmV3bGlua1wiLFxuICAgIFwiaXBfdHVubmVsX2NoYW5nZWxpbmtcIixcbiAgICBcInJhd19zZW5kbXNnXCIsXG4gICAgXCJyYXd2Nl9zZW5kbXNnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBoZWFkcm9vbSBzaXplIHZhbGlkYXRpb24gdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93cyB3aGVuIGNyZWF0aW5nIG9yIG1vZGlmeWluZyBJUCB0dW5uZWxzIChHUkUsIElQSVAsIFZUSSkgYW5kIHdoZW4gc2VuZGluZyBwYWNrZXRzIHZpYSByYXcgSVB2NC9JUHY2IHNvY2tldHMuIEl0IG1vZGlmaWVzIGNvcmUgdHVubmVsIG5ldGxpbmsgY2FsbGJhY2tzIGFuZCByYXcgc29ja2V0IHNlbmRtc2cgcGF0aHMsIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvjv4w[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 00:17:46 +0000 UTC FinishedAt: 2026-08-03 00:35:54 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_IPIP", "NET_IPGRE_DEMUX", "NET_IPGRE", "NET_IPVTI", "IPV6" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_IPIP", "NET_IPGRE_DEMUX", "NET_IPGRE", "NET_IPVTI", "IPV6" ], "series_id": "1202899e-897f-4248-9b1f-bd6ec320e9aa" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_tunnel_newlink", "ip_tunnel_changelink", "raw_sendmsg", "rawv6_sendmsg" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9JUElQJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRV9ERU1VWCYjMzQ7LAogICAgJiMzNDtORVRfSVBHUkUmIzM0OywKICAgICYjMzQ7TkVUX0lQVlRJJiMzNDssCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF90dW5uZWxfbmV3bGluayYjMzQ7LAogICAgJiMzNDtpcF90dW5uZWxfY2hhbmdlbGluayYjMzQ7LAogICAgJiMzNDtyYXdfc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtyYXd2Nl9zZW5kbXNnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgaGVhZHJvb20gc2l6ZSB2YWxpZGF0aW9uIHRvIHByZXZlbnQgaW50ZWdlciBvdmVyZmxvd3Mgd2hlbiBjcmVhdGluZyBvciBtb2RpZnlpbmcgSVAgdHVubmVscyAoR1JFLCBJUElQLCBWVEkpIGFuZCB3aGVuIHNlbmRpbmcgcGFja2V0cyB2aWEgcmF3IElQdjQvSVB2NiBzb2NrZXRzLiBJdCBtb2RpZmllcyBjb3JlIHR1bm5lbCBuZXRsaW5rIGNhbGxiYWNrcyBhbmQgcmF3IHNvY2tldCBzZW5kbXNnIHBhdGhzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjMzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjEzNzNhYWUwMzUwOTZjMzIyNDA4OTBkOWQ2MTRjMDI2N2RjMzFiNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMDA6MzM6MjggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oIGIvaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oXG5pbmRleCBkNzA4YjY2ZTU1Y2RhLi4wMTAyZmUzODdiMGFkIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9pcF90dW5uZWxzLmhcbkBAIC00MjUsMTAgJiM0Mzs0MjUsMTEgQEAgaW50IGlwX3R1bm5lbF9yY3Yoc3RydWN0IGlwX3R1bm5lbCAqdHVubmVsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHQgIGNvbnN0IHN0cnVjdCB0bmxfcHRrX2luZm8gKnRwaSwgc3RydWN0IG1ldGFkYXRhX2RzdCAqdHVuX2RzdCxcbiBcdFx0ICBib29sIGxvZ19lY25fZXJyb3IpO1xuIGludCBpcF90dW5uZWxfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuLVx0XHRcdCBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCwgX191MzIgZndtYXJrKTtcbiYjNDM7XHRcdFx0IHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLCBfX3UzMiBmd21hcmssXG4mIzQzO1x0XHRcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuIGludCBpcF90dW5uZWxfbmV3bGluayhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdCAgICAgIHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLFxuLVx0XHQgICAgICBfX3UzMiBmd21hcmspO1xuJiM0MztcdFx0ICAgICAgX191MzIgZndtYXJrLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuIHZvaWQgaXBfdHVubmVsX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBuZXRfaWQpO1xuIFxuIGJvb2wgaXBfdHVubmVsX25ldGxpbmtfZW5jYXBfcGFybXMoc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX2dyZS5jIGIvbmV0L2lwdjQvaXBfZ3JlLmNcbmluZGV4IDBiYTFlOTRlOTAxMmMuLjY5MDc2ODhkMDViYzEgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9pcF9ncmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvaXBfZ3JlLmNcbkBAIC0xNDI0LDcgJiM0MzsxNDI0LDcgQEAgc3RhdGljIGludCBpcGdyZV9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFx0cmV0dXJuIGlwX3R1bm5lbF9uZXdsaW5rKHBhcmFtcy1cdTAwM2VsaW5rX25ldCA/IDogZGV2X25ldChkZXYpLCBkZXYsIHRiLCBcdTAwMjZwLFxuLVx0XHRcdFx0IGZ3bWFyayk7XG4mIzQzO1x0XHRcdFx0IGZ3bWFyaywgZXh0YWNrKTtcbiB9XG4gXG4gc3RhdGljIGludCBlcnNwYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuQEAgLTE0NDUsNyAmIzQzOzE0NDUsNyBAQCBzdGF0aWMgaW50IGVyc3Bhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFx0cmV0dXJuIGlwX3R1bm5lbF9uZXdsaW5rKHBhcmFtcy1cdTAwM2VsaW5rX25ldCA/IDogZGV2X25ldChkZXYpLCBkZXYsIHRiLCBcdTAwMjZwLFxuLVx0XHRcdFx0IGZ3bWFyayk7XG4mIzQzO1x0XHRcdFx0IGZ3bWFyaywgZXh0YWNrKTtcbiB9XG4gXG4gc3RhdGljIGludCBpcGdyZV9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5AQCAtMTQ2OCw3ICYjNDM7MTQ2OCw3IEBAIHN0YXRpYyBpbnQgaXBncmVfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuIFx0aWYgKGVyciBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIGVycjtcbiBcbi1cdGVyciA9IGlwX3R1bm5lbF9jaGFuZ2VsaW5rKGRldiwgdGIsIFx1MDAyNnAsIGZ3bWFyayk7XG4mIzQzO1x0ZXJyID0gaXBfdHVubmVsX2NoYW5nZWxpbmsoZGV2LCB0YiwgXHUwMDI2cCwgZndtYXJrLCBleHRhY2spO1xuIFx0aWYgKGVyciBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIGVycjtcbiBcbkBAIC0xNTAwLDcgJiM0MzsxNTAwLDcgQEAgc3RhdGljIGludCBlcnNwYW5fY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuIFx0aWYgKGVyciBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIGVycjtcbiBcbi1cdGVyciA9IGlwX3R1bm5lbF9jaGFuZ2VsaW5rKGRldiwgdGIsIFx1MDAyNnAsIGZ3bWFyayk7XG4mIzQzO1x0ZXJyID0gaXBfdHVubmVsX2NoYW5nZWxpbmsoZGV2LCB0YiwgXHUwMDI2cCwgZndtYXJrLCBleHRhY2spO1xuIFx0aWYgKGVyciBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIGVycjtcbiBcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF90dW5uZWwuYyBiL25ldC9pcHY0L2lwX3R1bm5lbC5jXG5pbmRleCA5ZDExNGJkNTc1ZjkyLi41ZTRmNTZjMGUzZTVkIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaXBfdHVubmVsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2lwX3R1bm5lbC5jXG5AQCAtOSw2ICYjNDM7OSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC90eXBlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbGltaXRzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91YWNjZXNzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9za2J1ZmYuaFx1MDAzZVxuQEAgLTI3NywxNiAmIzQzOzI3OCwzMSBAQCBzdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKl9faXBfdHVubmVsX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuIH1cbiBcbi1zdGF0aWMgaW50IGlwX3R1bm5lbF9iaW5kX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuJiM0MztzdGF0aWMgYm9vbCBpcF90dW5uZWxfaGVhZHJvb21fdG9vX2xhcmdlKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4mIzQzO1x0XHRcdFx0XHQgdW5zaWduZWQgaW50IG5lZWRlZF9oZWFkcm9vbSlcbiYjNDM7e1xuJiM0MztcdHVuc2lnbmVkIGludCBobGVuO1xuJiM0MztcbiYjNDM7XHRobGVuID0gKChkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuICYjNDM7IG5lZWRlZF9oZWFkcm9vbSkgXHUwMDI2XG4mIzQzO1x0XHR+KEhIX0RBVEFfTU9EIC0gMSkpICYjNDM7IEhIX0RBVEFfTU9EO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gaGxlbiBcdTAwM2U9IFUxNl9NQVggLSAoc2l6ZW9mKHN0cnVjdCBpcGhkcikgJiM0MzsgTUFYX0lQT1BUTEVOKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBpcF90dW5uZWxfY2FsY19kZXZfY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4mIzQzO1x0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcGFybXMsXG4mIzQzO1x0XHRcdFx0ICAgICBfX3UzMiBmd21hcmssXG4mIzQzO1x0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgKm5lZWRlZF9oZWFkcm9vbSxcbiYjNDM7XHRcdFx0XHQgICAgIGludCAqbXR1LFxuJiM0MztcdFx0XHRcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICp0ZGV2ID0gTlVMTDtcbiBcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XG4tXHRjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaDtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaCA9IFx1MDAyNnBhcm1zLVx1MDAzZWlwaDtcbiBcdGludCBobGVuID0gTExfTUFYX0hFQURFUjtcbi1cdGludCBtdHUgPSBFVEhfREFUQV9MRU47XG4gXHRpbnQgdF9obGVuID0gdHVubmVsLVx1MDAzZWhsZW4gJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcGhkcik7XG4gXG4tXHRpcGggPSBcdTAwMjZ0dW5uZWwtXHUwMDNlcGFybXMuaXBoO1xuJiM0MztcdCptdHUgPSBFVEhfREFUQV9MRU47XG4gXG4gXHQvKiBHdWVzcyBvdXRwdXQgZGV2aWNlIHRvIGNob29zZSByZWFzb25hYmxlIG10dSBhbmQgbmVlZGVkX2hlYWRyb29tICovXG4gXHRpZiAoaXBoLVx1MDAzZWRhZGRyKSB7XG5AQCAtMjk0LDM2ICYjNDM7MzEwLDU4IEBAIHN0YXRpYyBpbnQgaXBfdHVubmVsX2JpbmRfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdHN0cnVjdCBydGFibGUgKnJ0O1xuIFxuIFx0XHRpcF90dW5uZWxfaW5pdF9mbG93KFx1MDAyNmZsNCwgaXBoLVx1MDAzZXByb3RvY29sLCBpcGgtXHUwMDNlZGFkZHIsXG4tXHRcdFx0XHQgICAgaXBoLVx1MDAzZXNhZGRyLCB0dW5uZWwtXHUwMDNlcGFybXMub19rZXksXG4mIzQzO1x0XHRcdFx0ICAgIGlwaC1cdTAwM2VzYWRkciwgcGFybXMtXHUwMDNlb19rZXksXG4gXHRcdFx0XHQgICAgaXBoLVx1MDAzZXRvcyBcdTAwMjYgSU5FVF9EU0NQX01BU0ssIHR1bm5lbC1cdTAwM2VuZXQsXG4tXHRcdFx0XHQgICAgdHVubmVsLVx1MDAzZXBhcm1zLmxpbmssIHR1bm5lbC1cdTAwM2Vmd21hcmssIDAsIDApO1xuJiM0MztcdFx0XHRcdCAgICBwYXJtcy1cdTAwM2VsaW5rLCBmd21hcmssIDAsIDApO1xuIFx0XHRydCA9IGlwX3JvdXRlX291dHB1dF9rZXkodHVubmVsLVx1MDAzZW5ldCwgXHUwMDI2Zmw0KTtcbiBcbiBcdFx0aWYgKCFJU19FUlIocnQpKSB7XG4gXHRcdFx0dGRldiA9IHJ0LVx1MDAzZWRzdC5kZXY7XG4gXHRcdFx0aXBfcnRfcHV0KHJ0KTtcbiBcdFx0fVxuLVx0XHRpZiAoZGV2LVx1MDAzZXR5cGUgIT0gQVJQSFJEX0VUSEVSKVxuLVx0XHRcdGRldi1cdTAwM2VmbGFncyB8PSBJRkZfUE9JTlRPUE9JTlQ7XG4tXG4tXHRcdGRzdF9jYWNoZV9yZXNldChcdTAwMjZ0dW5uZWwtXHUwMDNlZHN0X2NhY2hlKTtcbiBcdH1cbiBcbi1cdGlmICghdGRldiBcdTAwMjZcdTAwMjYgdHVubmVsLVx1MDAzZXBhcm1zLmxpbmspXG4tXHRcdHRkZXYgPSBfX2Rldl9nZXRfYnlfaW5kZXgodHVubmVsLVx1MDAzZW5ldCwgdHVubmVsLVx1MDAzZXBhcm1zLmxpbmspO1xuJiM0MztcdGlmICghdGRldiBcdTAwMjZcdTAwMjYgcGFybXMtXHUwMDNlbGluaylcbiYjNDM7XHRcdHRkZXYgPSBfX2Rldl9nZXRfYnlfaW5kZXgodHVubmVsLVx1MDAzZW5ldCwgcGFybXMtXHUwMDNlbGluayk7XG4gXG4gXHRpZiAodGRldikge1xuIFx0XHRobGVuID0gdGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4gJiM0MzsgdGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb207XG4tXHRcdG10dSA9IG1pbih0ZGV2LVx1MDAzZW10dSwgSVBfTUFYX01UVSk7XG4mIzQzO1x0XHQqbXR1ID0gbWluKHRkZXYtXHUwMDNlbXR1LCBJUF9NQVhfTVRVKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdCpuZWVkZWRfaGVhZHJvb20gPSB0X2hsZW4gJiM0MzsgaGxlbjtcbiYjNDM7XHRpZiAoaXBfdHVubmVsX2hlYWRyb29tX3Rvb19sYXJnZShkZXYsICpuZWVkZWRfaGVhZHJvb20pKSB7XG4mIzQzO1x0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwmIzM0O3R1bm5lbCBoZWFkcm9vbSBleGNlZWRzIHNrYiBoZWFkZXIgb2Zmc2V0IGxpbWl0XCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRTJCSUc7XG4gXHR9XG4gXG4tXHRkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tID0gdF9obGVuICYjNDM7IGhsZW47XG4tXHRtdHUgLT0gdF9obGVuICYjNDM7IChkZXYtXHUwMDNldHlwZSA9PSBBUlBIUkRfRVRIRVIgPyBkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuIDogMCk7XG4mIzQzO1x0Km10dSAtPSB0X2hsZW4gJiM0MzsgKGRldi1cdTAwM2V0eXBlID09IEFSUEhSRF9FVEhFUiA/IGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4gOiAwKTtcbiYjNDM7XHRpZiAoKm10dSBcdTAwM2MgSVBWNF9NSU5fTVRVKVxuJiM0MztcdFx0Km10dSA9IElQVjRfTUlOX01UVTtcbiBcbi1cdGlmIChtdHUgXHUwMDNjIElQVjRfTUlOX01UVSlcbi1cdFx0bXR1ID0gSVBWNF9NSU5fTVRVO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IGlwX3R1bm5lbF9iaW5kX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgKm10dSxcbiYjNDM7XHRcdFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGlwX3R1bm5lbCAqdHVubmVsID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgbmVlZGVkX2hlYWRyb29tO1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdGVyciA9IGlwX3R1bm5lbF9jYWxjX2Rldl9jb25maWcoZGV2LCBcdTAwMjZ0dW5uZWwtXHUwMDNlcGFybXMsIHR1bm5lbC1cdTAwM2Vmd21hcmssXG4mIzQzO1x0XHRcdFx0XHRcdTAwMjZuZWVkZWRfaGVhZHJvb20sIG10dSwgZXh0YWNrKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XG4mIzQzO1x0aWYgKHR1bm5lbC1cdTAwM2VwYXJtcy5pcGguZGFkZHIpIHtcbiYjNDM7XHRcdGlmIChkZXYtXHUwMDNldHlwZSAhPSBBUlBIUkRfRVRIRVIpXG4mIzQzO1x0XHRcdGRldi1cdTAwM2VmbGFncyB8PSBJRkZfUE9JTlRPUE9JTlQ7XG4mIzQzO1x0XHRkc3RfY2FjaGVfcmVzZXQoXHUwMDI2dHVubmVsLVx1MDAzZWRzdF9jYWNoZSk7XG4mIzQzO1x0fVxuJiM0MztcdGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20gPSBuZWVkZWRfaGVhZHJvb207XG4gXG4tXHRyZXR1cm4gbXR1O1xuJiM0MztcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgc3RydWN0IGlwX3R1bm5lbCAqaXBfdHVubmVsX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsXG5AQCAtMzQwLDcgJiM0MzszNzgsOSBAQCBzdGF0aWMgc3RydWN0IGlwX3R1bm5lbCAqaXBfdHVubmVsX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRpZiAoSVNfRVJSKGRldikpXG4gXHRcdHJldHVybiBFUlJfQ0FTVChkZXYpO1xuIFxuLVx0bXR1ID0gaXBfdHVubmVsX2JpbmRfZGV2KGRldik7XG4mIzQzO1x0ZXJyID0gaXBfdHVubmVsX2JpbmRfZGV2KGRldiwgXHUwMDI2bXR1LCBOVUxMKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0Z290byBlcnJfZGV2X3NldF9tdHU7XG4gXHRlcnIgPSBkZXZfc2V0X210dShkZXYsIG10dSk7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGVycl9kZXZfc2V0X210dTtcbkBAIC04NTksMTMgJiM0Mzs4OTksMjAgQEAgdm9pZCBpcF90dW5uZWxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChpcF90dW5uZWxfeG1pdCk7XG4gXG4tc3RhdGljIHZvaWQgaXBfdHVubmVsX3VwZGF0ZShzdHJ1Y3QgaXBfdHVubmVsX25ldCAqaXRuLFxuLVx0XHRcdCAgICAgc3RydWN0IGlwX3R1bm5lbCAqdCxcbi1cdFx0XHQgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tXHRcdFx0ICAgICBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCxcbi1cdFx0XHQgICAgIGJvb2wgc2V0X210dSxcbi1cdFx0XHQgICAgIF9fdTMyIGZ3bWFyaylcbiYjNDM7c3RhdGljIGludCBpcF90dW5uZWxfdXBkYXRlKHN0cnVjdCBpcF90dW5uZWxfbmV0ICppdG4sXG4mIzQzO1x0XHRcdCAgICBzdHJ1Y3QgaXBfdHVubmVsICp0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuJiM0MztcdFx0XHQgICAgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAsIGJvb2wgc2V0X210dSxcbiYjNDM7XHRcdFx0ICAgIF9fdTMyIGZ3bWFyaywgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgbmVlZGVkX2hlYWRyb29tO1xuJiM0MztcdGludCBtdHU7XG4mIzQzO1x0aW50IGVycjtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gaXBfdHVubmVsX2NhbGNfZGV2X2NvbmZpZyhkZXYsIHAsIGZ3bWFyaywgXHUwMDI2bmVlZGVkX2hlYWRyb29tLFxuJiM0MztcdFx0XHRcdFx0XHUwMDI2bXR1LCBleHRhY2spO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiBcdGlwX3R1bm5lbF9kZWwoaXRuLCB0KTtcbiBcdHQtXHUwMDNlcGFybXMuaXBoLnNhZGRyID0gcC1cdTAwM2VpcGguc2FkZHI7XG4gXHR0LVx1MDAzZXBhcm1zLmlwaC5kYWRkciA9IHAtXHUwMDNlaXBoLmRhZGRyO1xuQEAgLTg4MCwxOCAmIzQzOzkyNywxNSBAQCBzdGF0aWMgdm9pZCBpcF90dW5uZWxfdXBkYXRlKHN0cnVjdCBpcF90dW5uZWxfbmV0ICppdG4sXG4gXHR0LVx1MDAzZXBhcm1zLmlwaC50dGwgPSBwLVx1MDAzZWlwaC50dGw7XG4gXHR0LVx1MDAzZXBhcm1zLmlwaC50b3MgPSBwLVx1MDAzZWlwaC50b3M7XG4gXHR0LVx1MDAzZXBhcm1zLmlwaC5mcmFnX29mZiA9IHAtXHUwMDNlaXBoLmZyYWdfb2ZmO1xuLVxuLVx0aWYgKHQtXHUwMDNlcGFybXMubGluayAhPSBwLVx1MDAzZWxpbmsgfHwgdC1cdTAwM2Vmd21hcmsgIT0gZndtYXJrKSB7XG4tXHRcdGludCBtdHU7XG4tXG4tXHRcdFdSSVRFX09OQ0UodC1cdTAwM2VwYXJtcy5saW5rLCBwLVx1MDAzZWxpbmspO1xuLVx0XHR0LVx1MDAzZWZ3bWFyayA9IGZ3bWFyaztcbi1cdFx0bXR1ID0gaXBfdHVubmVsX2JpbmRfZGV2KGRldik7XG4tXHRcdGlmIChzZXRfbXR1KVxuLVx0XHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZW10dSwgbXR1KTtcbi1cdH1cbiYjNDM7XHRXUklURV9PTkNFKHQtXHUwMDNlcGFybXMubGluaywgcC1cdTAwM2VsaW5rKTtcbiYjNDM7XHR0LVx1MDAzZWZ3bWFyayA9IGZ3bWFyaztcbiYjNDM7XHRkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tID0gbmVlZGVkX2hlYWRyb29tO1xuJiM0MztcdGlmIChzZXRfbXR1KVxuJiM0MztcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlbXR1LCBtdHUpO1xuIFx0ZHN0X2NhY2hlX3Jlc2V0KFx1MDAyNnQtXHUwMDNlZHN0X2NhY2hlKTtcbiBcdG5ldGRldl9zdGF0ZV9jaGFuZ2UoZGV2KTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4gfVxuIFxuIGludCBpcF90dW5uZWxfY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLFxuQEAgLTk2Miw4ICYjNDM7MTAwNiw3IEBAIGludCBpcF90dW5uZWxfY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLFxuIFx0XHR9XG4gXG4gXHRcdGlmICh0KSB7XG4tXHRcdFx0ZXJyID0gMDtcbi1cdFx0XHRpcF90dW5uZWxfdXBkYXRlKGl0biwgdCwgZGV2LCBwLCB0cnVlLCAwKTtcbiYjNDM7XHRcdFx0ZXJyID0gaXBfdHVubmVsX3VwZGF0ZShpdG4sIHQsIGRldiwgcCwgdHJ1ZSwgMCwgTlVMTCk7XG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0ZXJyID0gLUVOT0VOVDtcbiBcdFx0fVxuQEAgLTExMjgsNiAmIzQzOzExNzEsNyBAQCBpbnQgaXBfdHVubmVsX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldCwgdW5zaWduZWQgaW50IGlwX3RubF9uZXRfaWQsXG4gXHRzdHJ1Y3QgaXBfdHVubmVsX25ldCAqaXRuID0gbmV0X2dlbmVyaWMobmV0LCBpcF90bmxfbmV0X2lkKTtcbiBcdHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuIHBhcm1zO1xuIFx0dW5zaWduZWQgaW50IGk7XG4mIzQzO1x0aW50IG10dTtcbiBcbiBcdGl0bi1cdTAwM2VydG5sX2xpbmtfb3BzID0gb3BzO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgSVBfVE5MX0hBU0hfU0laRTsgaSYjNDM7JiM0MzspXG5AQCAtMTE1Myw5ICYjNDM7MTE5NywxMSBAQCBpbnQgaXBfdHVubmVsX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldCwgdW5zaWduZWQgaW50IGlwX3RubF9uZXRfaWQsXG4gXHQgKi9cbiBcdGlmICghSVNfRVJSKGl0bi1cdTAwM2VmYl90dW5uZWxfZGV2KSkge1xuIFx0XHRpdG4tXHUwMDNlZmJfdHVubmVsX2Rldi1cdTAwM2VuZXRuc19pbW11dGFibGUgPSB0cnVlO1xuLVx0XHRpdG4tXHUwMDNlZmJfdHVubmVsX2Rldi1cdTAwM2VtdHUgPSBpcF90dW5uZWxfYmluZF9kZXYoaXRuLVx1MDAzZWZiX3R1bm5lbF9kZXYpO1xuLVx0XHRpcF90dW5uZWxfYWRkKGl0biwgbmV0ZGV2X3ByaXYoaXRuLVx1MDAzZWZiX3R1bm5lbF9kZXYpKTtcbi1cdFx0aXRuLVx1MDAzZXR5cGUgPSBpdG4tXHUwMDNlZmJfdHVubmVsX2Rldi1cdTAwM2V0eXBlO1xuJiM0MztcdFx0aWYgKCFpcF90dW5uZWxfYmluZF9kZXYoaXRuLVx1MDAzZWZiX3R1bm5lbF9kZXYsIFx1MDAyNm10dSwgTlVMTCkpIHtcbiYjNDM7XHRcdFx0aXRuLVx1MDAzZWZiX3R1bm5lbF9kZXYtXHUwMDNlbXR1ID0gbXR1O1xuJiM0MztcdFx0XHRpcF90dW5uZWxfYWRkKGl0biwgbmV0ZGV2X3ByaXYoaXRuLVx1MDAzZWZiX3R1bm5lbF9kZXYpKTtcbiYjNDM7XHRcdFx0aXRuLVx1MDAzZXR5cGUgPSBpdG4tXHUwMDNlZmJfdHVubmVsX2Rldi1cdTAwM2V0eXBlO1xuJiM0MztcdFx0fVxuIFx0fVxuIFx0cnRubF91bmxvY2soKTtcbiBcbkBAIC0xMTk0LDcgJiM0MzsxMjQwLDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwoaXBfdHVubmVsX2RlbGV0ZV9uZXQpO1xuIFxuIGludCBpcF90dW5uZWxfbmV3bGluayhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdCAgICAgIHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLFxuLVx0XHQgICAgICBfX3UzMiBmd21hcmspXG4mIzQzO1x0XHQgICAgICBfX3UzMiBmd21hcmssIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiB7XG4gXHRzdHJ1Y3QgaXBfdHVubmVsICpudDtcbiBcdHN0cnVjdCBpcF90dW5uZWxfbmV0ICppdG47XG5AQCAtMTIyMiw3ICYjNDM7MTI2OCw5IEBAIGludCBpcF90dW5uZWxfbmV3bGluayhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRpZiAoZGV2LVx1MDAzZXR5cGUgPT0gQVJQSFJEX0VUSEVSIFx1MDAyNlx1MDAyNiAhdGJbSUZMQV9BRERSRVNTXSlcbiBcdFx0ZXRoX2h3X2FkZHJfcmFuZG9tKGRldik7XG4gXG4tXHRtdHUgPSBpcF90dW5uZWxfYmluZF9kZXYoZGV2KTtcbiYjNDM7XHRlcnIgPSBpcF90dW5uZWxfYmluZF9kZXYoZGV2LCBcdTAwMjZtdHUsIGV4dGFjayk7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdGdvdG8gZXJyX2Rldl9zZXRfbXR1O1xuIFx0aWYgKHRiW0lGTEFfTVRVXSkge1xuIFx0XHR1bnNpZ25lZCBpbnQgbWF4ID0gSVBfTUFYX01UVSAtIChudC1cdTAwM2VobGVuICYjNDM7IHNpemVvZihzdHJ1Y3QgaXBoZHIpKTtcbiBcbkBAIC0xMjQ3LDcgJiM0MzsxMjk1LDggQEAgaW50IGlwX3R1bm5lbF9uZXdsaW5rKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBFWFBPUlRfU1lNQk9MX0dQTChpcF90dW5uZWxfbmV3bGluayk7XG4gXG4gaW50IGlwX3R1bm5lbF9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG4tXHRcdFx0IHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLCBfX3UzMiBmd21hcmspXG4mIzQzO1x0XHRcdCBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCwgX191MzIgZndtYXJrLFxuJiM0MztcdFx0XHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbiBcdHN0cnVjdCBpcF90dW5uZWwgKnQ7XG4gXHRzdHJ1Y3QgaXBfdHVubmVsICp0dW5uZWwgPSBuZXRkZXZfcHJpdihkZXYpO1xuQEAgLTEyNzksOCAmIzQzOzEzMjgsNyBAQCBpbnQgaXBfdHVubmVsX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbiBcdFx0fVxuIFx0fVxuIFxuLVx0aXBfdHVubmVsX3VwZGF0ZShpdG4sIHQsIGRldiwgcCwgIXRiW0lGTEFfTVRVXSwgZndtYXJrKTtcbi1cdHJldHVybiAwO1xuJiM0MztcdHJldHVybiBpcF90dW5uZWxfdXBkYXRlKGl0biwgdCwgZGV2LCBwLCAhdGJbSUZMQV9NVFVdLCBmd21hcmssIGV4dGFjayk7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKGlwX3R1bm5lbF9jaGFuZ2VsaW5rKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF92dGkuYyBiL25ldC9pcHY0L2lwX3Z0aS5jXG5pbmRleCAzYjgwOTI5OTk0YTAwLi4xOGI2MzgyYjQ2ZTZkIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaXBfdnRpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2lwX3Z0aS5jXG5AQCAtNTg1LDcgJiM0Mzs1ODUsNyBAQCBzdGF0aWMgaW50IHZ0aV9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXG4gXHR2dGlfbmV0bGlua19wYXJtcyhkYXRhLCBcdTAwMjZwYXJtcywgXHUwMDI2ZndtYXJrKTtcbiBcdHJldHVybiBpcF90dW5uZWxfbmV3bGluayhwYXJhbXMtXHUwMDNlbGlua19uZXQgPyA6IGRldl9uZXQoZGV2KSwgZGV2LCB0Yixcbi1cdFx0XHRcdCBcdTAwMjZwYXJtcywgZndtYXJrKTtcbiYjNDM7XHRcdFx0XHQgXHUwMDI2cGFybXMsIGZ3bWFyaywgZXh0YWNrKTtcbiB9XG4gXG4gc3RhdGljIGludCB2dGlfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuQEAgLTYwMCw3ICYjNDM7NjAwLDcgQEAgc3RhdGljIGludCB2dGlfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuIFx0XHRyZXR1cm4gLUVQRVJNO1xuIFxuIFx0dnRpX25ldGxpbmtfcGFybXMoZGF0YSwgXHUwMDI2cCwgXHUwMDI2ZndtYXJrKTtcbi1cdHJldHVybiBpcF90dW5uZWxfY2hhbmdlbGluayhkZXYsIHRiLCBcdTAwMjZwLCBmd21hcmspO1xuJiM0MztcdHJldHVybiBpcF90dW5uZWxfY2hhbmdlbGluayhkZXYsIHRiLCBcdTAwMjZwLCBmd21hcmssIGV4dGFjayk7XG4gfVxuIFxuIHN0YXRpYyBzaXplX3QgdnRpX2dldF9zaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBpcC5jIGIvbmV0L2lwdjQvaXBpcC5jXG5pbmRleCBiNjQzMTk0ZjU3ZDI5Li4xNjg0YTgxYTkzNTJmIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaXBpcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9pcGlwLmNcbkBAIC00ODEsNyAmIzQzOzQ4MSw3IEBAIHN0YXRpYyBpbnQgaXBpcF9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXG4gXHRpcGlwX25ldGxpbmtfcGFybXMoZGF0YSwgXHUwMDI2cCwgXHUwMDI2dC1cdTAwM2Vjb2xsZWN0X21kLCBcdTAwMjZmd21hcmspO1xuIFx0cmV0dXJuIGlwX3R1bm5lbF9uZXdsaW5rKHBhcmFtcy1cdTAwM2VsaW5rX25ldCA/IDogZGV2X25ldChkZXYpLCBkZXYsIHRiLCBcdTAwMjZwLFxuLVx0XHRcdFx0IGZ3bWFyayk7XG4mIzQzO1x0XHRcdFx0IGZ3bWFyaywgZXh0YWNrKTtcbiB9XG4gXG4gc3RhdGljIGludCBpcGlwX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbkBAIC01MTIsNyAmIzQzOzUxMiw3IEBAIHN0YXRpYyBpbnQgaXBpcF9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG4gXHQgICAgKCEoZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfUE9JTlRPUE9JTlQpIFx1MDAyNlx1MDAyNiBwLmlwaC5kYWRkcikpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLVx0cmV0dXJuIGlwX3R1bm5lbF9jaGFuZ2VsaW5rKGRldiwgdGIsIFx1MDAyNnAsIGZ3bWFyayk7XG4mIzQzO1x0cmV0dXJuIGlwX3R1bm5lbF9jaGFuZ2VsaW5rKGRldiwgdGIsIFx1MDAyNnAsIGZ3bWFyaywgZXh0YWNrKTtcbiB9XG4gXG4gc3RhdGljIHNpemVfdCBpcGlwX2dldF9zaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvcmF3LmMgYi9uZXQvaXB2NC9yYXcuY1xuaW5kZXggN2Y3NGQ4Yjk1YTM3My4uOGU2ZThjNjg0OGIxNyAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3Jhdy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9yYXcuY1xuQEAgLTQzLDYgJiM0Mzs0Myw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJybm8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpbWl0cy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXhwb3J0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zcGlubG9jay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc29ja2lvcy5oXHUwMDNlXG5AQCAtMzU2LDYgJiM0MzszNTcsOCBAQCBzdGF0aWMgaW50IHJhd19zZW5kX2hkcmluYyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBmbG93aTQgKmZsNCxcbiBcdFx0Z290byBvdXQ7XG4gXG4gXHRobGVuID0gTExfUkVTRVJWRURfU1BBQ0UocnQtXHUwMDNlZHN0LmRldik7XG4mIzQzO1x0aWYgKGhsZW4gXHUwMDNlPSBVMTZfTUFYIC0gKHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IE1BWF9JUE9QVExFTikpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdHRsZW4gPSBydC1cdTAwM2Vkc3QuZGV2LVx1MDAzZW5lZWRlZF90YWlscm9vbTtcbiBcdHNrYiA9IHNvY2tfYWxsb2Nfc2VuZF9za2Ioc2ssXG4gXHRcdFx0XHQgIGxlbmd0aCAmIzQzOyBobGVuICYjNDM7IHRsZW4gJiM0MzsgMTUsXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvcmF3LmMgYi9uZXQvaXB2Ni9yYXcuY1xuaW5kZXggYjg4ZDM2NGU3OGFhZS4uZmEyMjNlYzAyMzk2NCAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3Jhdy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9yYXcuY1xuQEAgLTE1LDYgJiM0MzsxNSw3IEBAXG4gICovXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJybm8uaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9saW1pdHMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3R5cGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zb2NrZXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuQEAgLTYxMyw2ICYjNDM7NjE0LDkgQEAgc3RhdGljIGludCByYXd2Nl9zZW5kX2hkcmluYyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbmd0aCxcbiBcdGlmIChmbGFnc1x1MDAyNk1TR19QUk9CRSlcbiBcdFx0Z290byBvdXQ7XG4gXG4mIzQzO1x0aWYgKGhsZW4gXHUwMDNlPSBVMTZfTUFYKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuIFx0c2tiID0gc29ja19hbGxvY19zZW5kX3NrYihzayxcbiBcdFx0XHRcdCAgbGVuZ3RoICYjNDM7IGhsZW4gJiM0MzsgdGxlbiAmIzQzOyAxNSxcbiBcdFx0XHRcdCAgZmxhZ3MgXHUwMDI2IE1TR19ET05UV0FJVCwgXHUwMDI2ZXJyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDozMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0lQSVAmIzM0OywKICAgICYjMzQ7TkVUX0lQR1JFX0RFTVVYJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7LAogICAgJiMzNDtORVRfSVBWVEkmIzM0OywKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3R1bm5lbF9uZXdsaW5rJiMzNDssCiAgICAmIzM0O2lwX3R1bm5lbF9jaGFuZ2VsaW5rJiMzNDssCiAgICAmIzM0O3Jhd19zZW5kbXNnJiMzNDssCiAgICAmIzM0O3Jhd3Y2X3NlbmRtc2cmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBoZWFkcm9vbSBzaXplIHZhbGlkYXRpb24gdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93cyB3aGVuIGNyZWF0aW5nIG9yIG1vZGlmeWluZyBJUCB0dW5uZWxzIChHUkUsIElQSVAsIFZUSSkgYW5kIHdoZW4gc2VuZGluZyBwYWNrZXRzIHZpYSByYXcgSVB2NC9JUHY2IHNvY2tldHMuIEl0IG1vZGlmaWVzIGNvcmUgdHVubmVsIG5ldGxpbmsgY2FsbGJhY2tzIGFuZCByYXcgc29ja2V0IHNlbmRtc2cgcGF0aHMsIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiMTM3M2FhZTAzNTA5NmMzMjI0MDg5MGQ5ZDYxNGMwMjY3ZGMzMWI1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAwMDozMzoyOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaCBiL2luY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaAppbmRleCBkNzA4YjY2ZTU1Y2RhLi4wMTAyZmUzODdiMGFkIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9pcF90dW5uZWxzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oCkBAIC00MjUsMTAgJiM0Mzs0MjUsMTEgQEAgaW50IGlwX3R1bm5lbF9yY3Yoc3RydWN0IGlwX3R1bm5lbCAqdHVubmVsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkgIGNvbnN0IHN0cnVjdCB0bmxfcHRrX2luZm8gKnRwaSwgc3RydWN0IG1ldGFkYXRhX2RzdCAqdHVuX2RzdCwKIAkJICBib29sIGxvZ19lY25fZXJyb3IpOwogaW50IGlwX3R1bm5lbF9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sCi0JCQkgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAsIF9fdTMyIGZ3bWFyayk7CiYjNDM7CQkJIHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLCBfX3UzMiBmd21hcmssCiYjNDM7CQkJIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7CiBpbnQgaXBfdHVubmVsX25ld2xpbmsoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkgICAgICBzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCwKLQkJICAgICAgX191MzIgZndtYXJrKTsKJiM0MzsJCSAgICAgIF9fdTMyIGZ3bWFyaywgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTsKIHZvaWQgaXBfdHVubmVsX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBuZXRfaWQpOwogCiBib29sIGlwX3R1bm5lbF9uZXRsaW5rX2VuY2FwX3Bhcm1zKHN0cnVjdCBubGF0dHIgKmRhdGFbXSwKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX2dyZS5jIGIvbmV0L2lwdjQvaXBfZ3JlLmMKaW5kZXggMGJhMWU5NGU5MDEyYy4uNjkwNzY4OGQwNWJjMSAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaXBfZ3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvaXBfZ3JlLmMKQEAgLTE0MjQsNyAmIzQzOzE0MjQsNyBAQCBzdGF0aWMgaW50IGlwZ3JlX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAlpZiAoZXJyICZsdDsgMCkKIAkJcmV0dXJuIGVycjsKIAlyZXR1cm4gaXBfdHVubmVsX25ld2xpbmsocGFyYW1zLSZndDtsaW5rX25ldCA/IDogZGV2X25ldChkZXYpLCBkZXYsIHRiLCAmYW1wO3AsCi0JCQkJIGZ3bWFyayk7CiYjNDM7CQkJCSBmd21hcmssIGV4dGFjayk7CiB9CiAKIHN0YXRpYyBpbnQgZXJzcGFuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKQEAgLTE0NDUsNyAmIzQzOzE0NDUsNyBAQCBzdGF0aWMgaW50IGVyc3Bhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKIAlyZXR1cm4gaXBfdHVubmVsX25ld2xpbmsocGFyYW1zLSZndDtsaW5rX25ldCA/IDogZGV2X25ldChkZXYpLCBkZXYsIHRiLCAmYW1wO3AsCi0JCQkJIGZ3bWFyayk7CiYjNDM7CQkJCSBmd21hcmssIGV4dGFjayk7CiB9CiAKIHN0YXRpYyBpbnQgaXBncmVfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLApAQCAtMTQ2OCw3ICYjNDM7MTQ2OCw3IEBAIHN0YXRpYyBpbnQgaXBncmVfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLAogCWlmIChlcnIgJmx0OyAwKQogCQlyZXR1cm4gZXJyOwogCi0JZXJyID0gaXBfdHVubmVsX2NoYW5nZWxpbmsoZGV2LCB0YiwgJmFtcDtwLCBmd21hcmspOwomIzQzOwllcnIgPSBpcF90dW5uZWxfY2hhbmdlbGluayhkZXYsIHRiLCAmYW1wO3AsIGZ3bWFyaywgZXh0YWNrKTsKIAlpZiAoZXJyICZsdDsgMCkKIAkJcmV0dXJuIGVycjsKIApAQCAtMTUwMCw3ICYjNDM7MTUwMCw3IEBAIHN0YXRpYyBpbnQgZXJzcGFuX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSwKIAlpZiAoZXJyICZsdDsgMCkKIAkJcmV0dXJuIGVycjsKIAotCWVyciA9IGlwX3R1bm5lbF9jaGFuZ2VsaW5rKGRldiwgdGIsICZhbXA7cCwgZndtYXJrKTsKJiM0MzsJZXJyID0gaXBfdHVubmVsX2NoYW5nZWxpbmsoZGV2LCB0YiwgJmFtcDtwLCBmd21hcmssIGV4dGFjayk7CiAJaWYgKGVyciAmbHQ7IDApCiAJCXJldHVybiBlcnI7CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX3R1bm5lbC5jIGIvbmV0L2lwdjQvaXBfdHVubmVsLmMKaW5kZXggOWQxMTRiZDU3NWY5Mi4uNWU0ZjU2YzBlM2U1ZCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaXBfdHVubmVsLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvaXBfdHVubmVsLmMKQEAgLTksNiAmIzQzOzksNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3R5cGVzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgva2VybmVsLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2xpbWl0cy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NsYWIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC91YWNjZXNzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc2tidWZmLmgmZ3Q7CkBAIC0yNzcsMTYgJiM0MzsyNzgsMzEgQEAgc3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlICpfX2lwX3R1bm5lbF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LAogCXJldHVybiBFUlJfUFRSKGVycik7CiB9CiAKLXN0YXRpYyBpbnQgaXBfdHVubmVsX2JpbmRfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiYjNDM7c3RhdGljIGJvb2wgaXBfdHVubmVsX2hlYWRyb29tX3Rvb19sYXJnZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAomIzQzOwkJCQkJIHVuc2lnbmVkIGludCBuZWVkZWRfaGVhZHJvb20pCiYjNDM7ewomIzQzOwl1bnNpZ25lZCBpbnQgaGxlbjsKJiM0MzsKJiM0MzsJaGxlbiA9ICgoZGV2LSZndDtoYXJkX2hlYWRlcl9sZW4gJiM0MzsgbmVlZGVkX2hlYWRyb29tKSAmYW1wOwomIzQzOwkJfihISF9EQVRBX01PRCAtIDEpKSAmIzQzOyBISF9EQVRBX01PRDsKJiM0MzsKJiM0MzsJcmV0dXJuIGhsZW4gJmd0Oz0gVTE2X01BWCAtIChzaXplb2Yoc3RydWN0IGlwaGRyKSAmIzQzOyBNQVhfSVBPUFRMRU4pOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IGlwX3R1bm5lbF9jYWxjX2Rldl9jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKJiM0MzsJCQkJICAgICBjb25zdCBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcGFybXMsCiYjNDM7CQkJCSAgICAgX191MzIgZndtYXJrLAomIzQzOwkJCQkgICAgIHVuc2lnbmVkIGludCAqbmVlZGVkX2hlYWRyb29tLAomIzQzOwkJCQkgICAgIGludCAqbXR1LAomIzQzOwkJCQkgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykKIHsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqdGRldiA9IE5VTEw7CiAJc3RydWN0IGlwX3R1bm5lbCAqdHVubmVsID0gbmV0ZGV2X3ByaXYoZGV2KTsKLQljb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaDsKJiM0MzsJY29uc3Qgc3RydWN0IGlwaGRyICppcGggPSAmYW1wO3Bhcm1zLSZndDtpcGg7CiAJaW50IGhsZW4gPSBMTF9NQVhfSEVBREVSOwotCWludCBtdHUgPSBFVEhfREFUQV9MRU47CiAJaW50IHRfaGxlbiA9IHR1bm5lbC0mZ3Q7aGxlbiAmIzQzOyBzaXplb2Yoc3RydWN0IGlwaGRyKTsKIAotCWlwaCA9ICZhbXA7dHVubmVsLSZndDtwYXJtcy5pcGg7CiYjNDM7CSptdHUgPSBFVEhfREFUQV9MRU47CiAKIAkvKiBHdWVzcyBvdXRwdXQgZGV2aWNlIHRvIGNob29zZSByZWFzb25hYmxlIG10dSBhbmQgbmVlZGVkX2hlYWRyb29tICovCiAJaWYgKGlwaC0mZ3Q7ZGFkZHIpIHsKQEAgLTI5NCwzNiAmIzQzOzMxMCw1OCBAQCBzdGF0aWMgaW50IGlwX3R1bm5lbF9iaW5kX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCQlzdHJ1Y3QgcnRhYmxlICpydDsKIAogCQlpcF90dW5uZWxfaW5pdF9mbG93KCZhbXA7Zmw0LCBpcGgtJmd0O3Byb3RvY29sLCBpcGgtJmd0O2RhZGRyLAotCQkJCSAgICBpcGgtJmd0O3NhZGRyLCB0dW5uZWwtJmd0O3Bhcm1zLm9fa2V5LAomIzQzOwkJCQkgICAgaXBoLSZndDtzYWRkciwgcGFybXMtJmd0O29fa2V5LAogCQkJCSAgICBpcGgtJmd0O3RvcyAmYW1wOyBJTkVUX0RTQ1BfTUFTSywgdHVubmVsLSZndDtuZXQsCi0JCQkJICAgIHR1bm5lbC0mZ3Q7cGFybXMubGluaywgdHVubmVsLSZndDtmd21hcmssIDAsIDApOwomIzQzOwkJCQkgICAgcGFybXMtJmd0O2xpbmssIGZ3bWFyaywgMCwgMCk7CiAJCXJ0ID0gaXBfcm91dGVfb3V0cHV0X2tleSh0dW5uZWwtJmd0O25ldCwgJmFtcDtmbDQpOwogCiAJCWlmICghSVNfRVJSKHJ0KSkgewogCQkJdGRldiA9IHJ0LSZndDtkc3QuZGV2OwogCQkJaXBfcnRfcHV0KHJ0KTsKIAkJfQotCQlpZiAoZGV2LSZndDt0eXBlICE9IEFSUEhSRF9FVEhFUikKLQkJCWRldi0mZ3Q7ZmxhZ3MgfD0gSUZGX1BPSU5UT1BPSU5UOwotCi0JCWRzdF9jYWNoZV9yZXNldCgmYW1wO3R1bm5lbC0mZ3Q7ZHN0X2NhY2hlKTsKIAl9CiAKLQlpZiAoIXRkZXYgJmFtcDsmYW1wOyB0dW5uZWwtJmd0O3Bhcm1zLmxpbmspCi0JCXRkZXYgPSBfX2Rldl9nZXRfYnlfaW5kZXgodHVubmVsLSZndDtuZXQsIHR1bm5lbC0mZ3Q7cGFybXMubGluayk7CiYjNDM7CWlmICghdGRldiAmYW1wOyZhbXA7IHBhcm1zLSZndDtsaW5rKQomIzQzOwkJdGRldiA9IF9fZGV2X2dldF9ieV9pbmRleCh0dW5uZWwtJmd0O25ldCwgcGFybXMtJmd0O2xpbmspOwogCiAJaWYgKHRkZXYpIHsKIAkJaGxlbiA9IHRkZXYtJmd0O2hhcmRfaGVhZGVyX2xlbiAmIzQzOyB0ZGV2LSZndDtuZWVkZWRfaGVhZHJvb207Ci0JCW10dSA9IG1pbih0ZGV2LSZndDttdHUsIElQX01BWF9NVFUpOwomIzQzOwkJKm10dSA9IG1pbih0ZGV2LSZndDttdHUsIElQX01BWF9NVFUpOwomIzQzOwl9CiYjNDM7CiYjNDM7CSpuZWVkZWRfaGVhZHJvb20gPSB0X2hsZW4gJiM0MzsgaGxlbjsKJiM0MzsJaWYgKGlwX3R1bm5lbF9oZWFkcm9vbV90b29fbGFyZ2UoZGV2LCAqbmVlZGVkX2hlYWRyb29tKSkgewomIzQzOwkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLCAmIzM0O3R1bm5lbCBoZWFkcm9vbSBleGNlZWRzIHNrYiBoZWFkZXIgb2Zmc2V0IGxpbWl0JiMzNDspOwomIzQzOwkJcmV0dXJuIC1FMkJJRzsKIAl9CiAKLQlkZXYtJmd0O25lZWRlZF9oZWFkcm9vbSA9IHRfaGxlbiAmIzQzOyBobGVuOwotCW10dSAtPSB0X2hsZW4gJiM0MzsgKGRldi0mZ3Q7dHlwZSA9PSBBUlBIUkRfRVRIRVIgPyBkZXYtJmd0O2hhcmRfaGVhZGVyX2xlbiA6IDApOwomIzQzOwkqbXR1IC09IHRfaGxlbiAmIzQzOyAoZGV2LSZndDt0eXBlID09IEFSUEhSRF9FVEhFUiA/IGRldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuIDogMCk7CiYjNDM7CWlmICgqbXR1ICZsdDsgSVBWNF9NSU5fTVRVKQomIzQzOwkJKm10dSA9IElQVjRfTUlOX01UVTsKIAotCWlmIChtdHUgJmx0OyBJUFY0X01JTl9NVFUpCi0JCW10dSA9IElQVjRfTUlOX01UVTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgaXBfdHVubmVsX2JpbmRfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCAqbXR1LAomIzQzOwkJCSAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7CiYjNDM7CXVuc2lnbmVkIGludCBuZWVkZWRfaGVhZHJvb207CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CWVyciA9IGlwX3R1bm5lbF9jYWxjX2Rldl9jb25maWcoZGV2LCAmYW1wO3R1bm5lbC0mZ3Q7cGFybXMsIHR1bm5lbC0mZ3Q7ZndtYXJrLAomIzQzOwkJCQkJJmFtcDtuZWVkZWRfaGVhZHJvb20sIG10dSwgZXh0YWNrKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiYjNDM7CiYjNDM7CWlmICh0dW5uZWwtJmd0O3Bhcm1zLmlwaC5kYWRkcikgewomIzQzOwkJaWYgKGRldi0mZ3Q7dHlwZSAhPSBBUlBIUkRfRVRIRVIpCiYjNDM7CQkJZGV2LSZndDtmbGFncyB8PSBJRkZfUE9JTlRPUE9JTlQ7CiYjNDM7CQlkc3RfY2FjaGVfcmVzZXQoJmFtcDt0dW5uZWwtJmd0O2RzdF9jYWNoZSk7CiYjNDM7CX0KJiM0MzsJZGV2LSZndDtuZWVkZWRfaGVhZHJvb20gPSBuZWVkZWRfaGVhZHJvb207CiAKLQlyZXR1cm4gbXR1OwomIzQzOwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHN0cnVjdCBpcF90dW5uZWwgKmlwX3R1bm5lbF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LApAQCAtMzQwLDcgJiM0MzszNzgsOSBAQCBzdGF0aWMgc3RydWN0IGlwX3R1bm5lbCAqaXBfdHVubmVsX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsCiAJaWYgKElTX0VSUihkZXYpKQogCQlyZXR1cm4gRVJSX0NBU1QoZGV2KTsKIAotCW10dSA9IGlwX3R1bm5lbF9iaW5kX2RldihkZXYpOwomIzQzOwllcnIgPSBpcF90dW5uZWxfYmluZF9kZXYoZGV2LCAmYW1wO210dSwgTlVMTCk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlnb3RvIGVycl9kZXZfc2V0X210dTsKIAllcnIgPSBkZXZfc2V0X210dShkZXYsIG10dSk7CiAJaWYgKGVycikKIAkJZ290byBlcnJfZGV2X3NldF9tdHU7CkBAIC04NTksMTMgJiM0Mzs4OTksMjAgQEAgdm9pZCBpcF90dW5uZWxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogfQogRVhQT1JUX1NZTUJPTF9HUEwoaXBfdHVubmVsX3htaXQpOwogCi1zdGF0aWMgdm9pZCBpcF90dW5uZWxfdXBkYXRlKHN0cnVjdCBpcF90dW5uZWxfbmV0ICppdG4sCi0JCQkgICAgIHN0cnVjdCBpcF90dW5uZWwgKnQsCi0JCQkgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCi0JCQkgICAgIHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLAotCQkJICAgICBib29sIHNldF9tdHUsCi0JCQkgICAgIF9fdTMyIGZ3bWFyaykKJiM0MztzdGF0aWMgaW50IGlwX3R1bm5lbF91cGRhdGUoc3RydWN0IGlwX3R1bm5lbF9uZXQgKml0biwKJiM0MzsJCQkgICAgc3RydWN0IGlwX3R1bm5lbCAqdCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKJiM0MzsJCQkgICAgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAsIGJvb2wgc2V0X210dSwKJiM0MzsJCQkgICAgX191MzIgZndtYXJrLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCiB7CiYjNDM7CXVuc2lnbmVkIGludCBuZWVkZWRfaGVhZHJvb207CiYjNDM7CWludCBtdHU7CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CWVyciA9IGlwX3R1bm5lbF9jYWxjX2Rldl9jb25maWcoZGV2LCBwLCBmd21hcmssICZhbXA7bmVlZGVkX2hlYWRyb29tLAomIzQzOwkJCQkJJmFtcDttdHUsIGV4dGFjayk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZXJyOwomIzQzOwogCWlwX3R1bm5lbF9kZWwoaXRuLCB0KTsKIAl0LSZndDtwYXJtcy5pcGguc2FkZHIgPSBwLSZndDtpcGguc2FkZHI7CiAJdC0mZ3Q7cGFybXMuaXBoLmRhZGRyID0gcC0mZ3Q7aXBoLmRhZGRyOwpAQCAtODgwLDE4ICYjNDM7OTI3LDE1IEBAIHN0YXRpYyB2b2lkIGlwX3R1bm5lbF91cGRhdGUoc3RydWN0IGlwX3R1bm5lbF9uZXQgKml0biwKIAl0LSZndDtwYXJtcy5pcGgudHRsID0gcC0mZ3Q7aXBoLnR0bDsKIAl0LSZndDtwYXJtcy5pcGgudG9zID0gcC0mZ3Q7aXBoLnRvczsKIAl0LSZndDtwYXJtcy5pcGguZnJhZ19vZmYgPSBwLSZndDtpcGguZnJhZ19vZmY7Ci0KLQlpZiAodC0mZ3Q7cGFybXMubGluayAhPSBwLSZndDtsaW5rIHx8IHQtJmd0O2Z3bWFyayAhPSBmd21hcmspIHsKLQkJaW50IG10dTsKLQotCQlXUklURV9PTkNFKHQtJmd0O3Bhcm1zLmxpbmssIHAtJmd0O2xpbmspOwotCQl0LSZndDtmd21hcmsgPSBmd21hcms7Ci0JCW10dSA9IGlwX3R1bm5lbF9iaW5kX2RldihkZXYpOwotCQlpZiAoc2V0X210dSkKLQkJCVdSSVRFX09OQ0UoZGV2LSZndDttdHUsIG10dSk7Ci0JfQomIzQzOwlXUklURV9PTkNFKHQtJmd0O3Bhcm1zLmxpbmssIHAtJmd0O2xpbmspOwomIzQzOwl0LSZndDtmd21hcmsgPSBmd21hcms7CiYjNDM7CWRldi0mZ3Q7bmVlZGVkX2hlYWRyb29tID0gbmVlZGVkX2hlYWRyb29tOwomIzQzOwlpZiAoc2V0X210dSkKJiM0MzsJCVdSSVRFX09OQ0UoZGV2LSZndDttdHUsIG10dSk7CiAJZHN0X2NhY2hlX3Jlc2V0KCZhbXA7dC0mZ3Q7ZHN0X2NhY2hlKTsKIAluZXRkZXZfc3RhdGVfY2hhbmdlKGRldik7CiYjNDM7CiYjNDM7CXJldHVybiAwOwogfQogCiBpbnQgaXBfdHVubmVsX2N0bChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCwKQEAgLTk2Miw4ICYjNDM7MTAwNiw3IEBAIGludCBpcF90dW5uZWxfY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLAogCQl9CiAKIAkJaWYgKHQpIHsKLQkJCWVyciA9IDA7Ci0JCQlpcF90dW5uZWxfdXBkYXRlKGl0biwgdCwgZGV2LCBwLCB0cnVlLCAwKTsKJiM0MzsJCQllcnIgPSBpcF90dW5uZWxfdXBkYXRlKGl0biwgdCwgZGV2LCBwLCB0cnVlLCAwLCBOVUxMKTsKIAkJfSBlbHNlIHsKIAkJCWVyciA9IC1FTk9FTlQ7CiAJCX0KQEAgLTExMjgsNiAmIzQzOzExNzEsNyBAQCBpbnQgaXBfdHVubmVsX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldCwgdW5zaWduZWQgaW50IGlwX3RubF9uZXRfaWQsCiAJc3RydWN0IGlwX3R1bm5lbF9uZXQgKml0biA9IG5ldF9nZW5lcmljKG5ldCwgaXBfdG5sX25ldF9pZCk7CiAJc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gcGFybXM7CiAJdW5zaWduZWQgaW50IGk7CiYjNDM7CWludCBtdHU7CiAKIAlpdG4tJmd0O3J0bmxfbGlua19vcHMgPSBvcHM7CiAJZm9yIChpID0gMDsgaSAmbHQ7IElQX1ROTF9IQVNIX1NJWkU7IGkmIzQzOyYjNDM7KQpAQCAtMTE1Myw5ICYjNDM7MTE5NywxMSBAQCBpbnQgaXBfdHVubmVsX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldCwgdW5zaWduZWQgaW50IGlwX3RubF9uZXRfaWQsCiAJICovCiAJaWYgKCFJU19FUlIoaXRuLSZndDtmYl90dW5uZWxfZGV2KSkgewogCQlpdG4tJmd0O2ZiX3R1bm5lbF9kZXYtJmd0O25ldG5zX2ltbXV0YWJsZSA9IHRydWU7Ci0JCWl0bi0mZ3Q7ZmJfdHVubmVsX2Rldi0mZ3Q7bXR1ID0gaXBfdHVubmVsX2JpbmRfZGV2KGl0bi0mZ3Q7ZmJfdHVubmVsX2Rldik7Ci0JCWlwX3R1bm5lbF9hZGQoaXRuLCBuZXRkZXZfcHJpdihpdG4tJmd0O2ZiX3R1bm5lbF9kZXYpKTsKLQkJaXRuLSZndDt0eXBlID0gaXRuLSZndDtmYl90dW5uZWxfZGV2LSZndDt0eXBlOwomIzQzOwkJaWYgKCFpcF90dW5uZWxfYmluZF9kZXYoaXRuLSZndDtmYl90dW5uZWxfZGV2LCAmYW1wO210dSwgTlVMTCkpIHsKJiM0MzsJCQlpdG4tJmd0O2ZiX3R1bm5lbF9kZXYtJmd0O210dSA9IG10dTsKJiM0MzsJCQlpcF90dW5uZWxfYWRkKGl0biwgbmV0ZGV2X3ByaXYoaXRuLSZndDtmYl90dW5uZWxfZGV2KSk7CiYjNDM7CQkJaXRuLSZndDt0eXBlID0gaXRuLSZndDtmYl90dW5uZWxfZGV2LSZndDt0eXBlOwomIzQzOwkJfQogCX0KIAlydG5sX3VubG9jaygpOwogCkBAIC0xMTk0LDcgJiM0MzsxMjQwLDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwoaXBfdHVubmVsX2RlbGV0ZV9uZXQpOwogCiBpbnQgaXBfdHVubmVsX25ld2xpbmsoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkgICAgICBzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCwKLQkJICAgICAgX191MzIgZndtYXJrKQomIzQzOwkJICAgICAgX191MzIgZndtYXJrLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCiB7CiAJc3RydWN0IGlwX3R1bm5lbCAqbnQ7CiAJc3RydWN0IGlwX3R1bm5lbF9uZXQgKml0bjsKQEAgLTEyMjIsNyAmIzQzOzEyNjgsOSBAQCBpbnQgaXBfdHVubmVsX25ld2xpbmsoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCWlmIChkZXYtJmd0O3R5cGUgPT0gQVJQSFJEX0VUSEVSICZhbXA7JmFtcDsgIXRiW0lGTEFfQUREUkVTU10pCiAJCWV0aF9od19hZGRyX3JhbmRvbShkZXYpOwogCi0JbXR1ID0gaXBfdHVubmVsX2JpbmRfZGV2KGRldik7CiYjNDM7CWVyciA9IGlwX3R1bm5lbF9iaW5kX2RldihkZXYsICZhbXA7bXR1LCBleHRhY2spOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJZ290byBlcnJfZGV2X3NldF9tdHU7CiAJaWYgKHRiW0lGTEFfTVRVXSkgewogCQl1bnNpZ25lZCBpbnQgbWF4ID0gSVBfTUFYX01UVSAtIChudC0mZ3Q7aGxlbiAmIzQzOyBzaXplb2Yoc3RydWN0IGlwaGRyKSk7CiAKQEAgLTEyNDcsNyAmIzQzOzEyOTUsOCBAQCBpbnQgaXBfdHVubmVsX25ld2xpbmsoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogRVhQT1JUX1NZTUJPTF9HUEwoaXBfdHVubmVsX25ld2xpbmspOwogCiBpbnQgaXBfdHVubmVsX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSwKLQkJCSBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCwgX191MzIgZndtYXJrKQomIzQzOwkJCSBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCwgX191MzIgZndtYXJrLAomIzQzOwkJCSBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCiB7CiAJc3RydWN0IGlwX3R1bm5lbCAqdDsKIAlzdHJ1Y3QgaXBfdHVubmVsICp0dW5uZWwgPSBuZXRkZXZfcHJpdihkZXYpOwpAQCAtMTI3OSw4ICYjNDM7MTMyOCw3IEBAIGludCBpcF90dW5uZWxfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLAogCQl9CiAJfQogCi0JaXBfdHVubmVsX3VwZGF0ZShpdG4sIHQsIGRldiwgcCwgIXRiW0lGTEFfTVRVXSwgZndtYXJrKTsKLQlyZXR1cm4gMDsKJiM0MzsJcmV0dXJuIGlwX3R1bm5lbF91cGRhdGUoaXRuLCB0LCBkZXYsIHAsICF0YltJRkxBX01UVV0sIGZ3bWFyaywgZXh0YWNrKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGlwX3R1bm5lbF9jaGFuZ2VsaW5rKTsKIApkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfdnRpLmMgYi9uZXQvaXB2NC9pcF92dGkuYwppbmRleCAzYjgwOTI5OTk0YTAwLi4xOGI2MzgyYjQ2ZTZkIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pcF92dGkuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9pcF92dGkuYwpAQCAtNTg1LDcgJiM0Mzs1ODUsNyBAQCBzdGF0aWMgaW50IHZ0aV9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAKIAl2dGlfbmV0bGlua19wYXJtcyhkYXRhLCAmYW1wO3Bhcm1zLCAmYW1wO2Z3bWFyayk7CiAJcmV0dXJuIGlwX3R1bm5lbF9uZXdsaW5rKHBhcmFtcy0mZ3Q7bGlua19uZXQgPyA6IGRldl9uZXQoZGV2KSwgZGV2LCB0YiwKLQkJCQkgJmFtcDtwYXJtcywgZndtYXJrKTsKJiM0MzsJCQkJICZhbXA7cGFybXMsIGZ3bWFyaywgZXh0YWNrKTsKIH0KIAogc3RhdGljIGludCB2dGlfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLApAQCAtNjAwLDcgJiM0Mzs2MDAsNyBAQCBzdGF0aWMgaW50IHZ0aV9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sCiAJCXJldHVybiAtRVBFUk07CiAKIAl2dGlfbmV0bGlua19wYXJtcyhkYXRhLCAmYW1wO3AsICZhbXA7ZndtYXJrKTsKLQlyZXR1cm4gaXBfdHVubmVsX2NoYW5nZWxpbmsoZGV2LCB0YiwgJmFtcDtwLCBmd21hcmspOwomIzQzOwlyZXR1cm4gaXBfdHVubmVsX2NoYW5nZWxpbmsoZGV2LCB0YiwgJmFtcDtwLCBmd21hcmssIGV4dGFjayk7CiB9CiAKIHN0YXRpYyBzaXplX3QgdnRpX2dldF9zaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcGlwLmMgYi9uZXQvaXB2NC9pcGlwLmMKaW5kZXggYjY0MzE5NGY1N2QyOS4uMTY4NGE4MWE5MzUyZiAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaXBpcC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2lwaXAuYwpAQCAtNDgxLDcgJiM0Mzs0ODEsNyBAQCBzdGF0aWMgaW50IGlwaXBfbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCiAJaXBpcF9uZXRsaW5rX3Bhcm1zKGRhdGEsICZhbXA7cCwgJmFtcDt0LSZndDtjb2xsZWN0X21kLCAmYW1wO2Z3bWFyayk7CiAJcmV0dXJuIGlwX3R1bm5lbF9uZXdsaW5rKHBhcmFtcy0mZ3Q7bGlua19uZXQgPyA6IGRldl9uZXQoZGV2KSwgZGV2LCB0YiwgJmFtcDtwLAotCQkJCSBmd21hcmspOwomIzQzOwkJCQkgZndtYXJrLCBleHRhY2spOwogfQogCiBzdGF0aWMgaW50IGlwaXBfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLApAQCAtNTEyLDcgJiM0Mzs1MTIsNyBAQCBzdGF0aWMgaW50IGlwaXBfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLAogCSAgICAoIShkZXYtJmd0O2ZsYWdzICZhbXA7IElGRl9QT0lOVE9QT0lOVCkgJmFtcDsmYW1wOyBwLmlwaC5kYWRkcikpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JcmV0dXJuIGlwX3R1bm5lbF9jaGFuZ2VsaW5rKGRldiwgdGIsICZhbXA7cCwgZndtYXJrKTsKJiM0MzsJcmV0dXJuIGlwX3R1bm5lbF9jaGFuZ2VsaW5rKGRldiwgdGIsICZhbXA7cCwgZndtYXJrLCBleHRhY2spOwogfQogCiBzdGF0aWMgc2l6ZV90IGlwaXBfZ2V0X3NpemUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3Jhdy5jIGIvbmV0L2lwdjQvcmF3LmMKaW5kZXggN2Y3NGQ4Yjk1YTM3My4uOGU2ZThjNjg0OGIxNyAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvcmF3LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvcmF3LmMKQEAgLTQzLDYgJiM0Mzs0Myw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvc2xhYi5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2Vycm5vLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgva2VybmVsLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2xpbWl0cy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2V4cG9ydC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NwaW5sb2NrLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc29ja2lvcy5oJmd0OwpAQCAtMzU2LDYgJiM0MzszNTcsOCBAQCBzdGF0aWMgaW50IHJhd19zZW5kX2hkcmluYyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBmbG93aTQgKmZsNCwKIAkJZ290byBvdXQ7CiAKIAlobGVuID0gTExfUkVTRVJWRURfU1BBQ0UocnQtJmd0O2RzdC5kZXYpOwomIzQzOwlpZiAoaGxlbiAmZ3Q7PSBVMTZfTUFYIC0gKHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IE1BWF9JUE9QVExFTikpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKIAl0bGVuID0gcnQtJmd0O2RzdC5kZXYtJmd0O25lZWRlZF90YWlscm9vbTsKIAlza2IgPSBzb2NrX2FsbG9jX3NlbmRfc2tiKHNrLAogCQkJCSAgbGVuZ3RoICYjNDM7IGhsZW4gJiM0MzsgdGxlbiAmIzQzOyAxNSwKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3Jhdy5jIGIvbmV0L2lwdjYvcmF3LmMKaW5kZXggYjg4ZDM2NGU3OGFhZS4uZmEyMjNlYzAyMzk2NCAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvcmF3LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvcmF3LmMKQEAgLTE1LDYgJiM0MzsxNSw3IEBACiAgKi8KIAogI2luY2x1ZGUgJmx0O2xpbnV4L2Vycm5vLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2xpbWl0cy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3R5cGVzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc29ja2V0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc2xhYi5oJmd0OwpAQCAtNjEzLDYgJiM0Mzs2MTQsOSBAQCBzdGF0aWMgaW50IHJhd3Y2X3NlbmRfaGRyaW5jKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBpbnQgbGVuZ3RoLAogCWlmIChmbGFncyZhbXA7TVNHX1BST0JFKQogCQlnb3RvIG91dDsKIAomIzQzOwlpZiAoaGxlbiAmZ3Q7PSBVMTZfTUFYKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJc2tiID0gc29ja19hbGxvY19zZW5kX3NrYihzaywKIAkJCQkgIGxlbmd0aCAmIzQzOyBobGVuICYjNDM7IHRsZW4gJiM0MzsgMTUsCiAJCQkJICBmbGFncyAmYW1wOyBNU0dfRE9OVFdBSVQsICZhbXA7ZXJyKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDA6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzYxNwoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDQzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogSVAgVHVubmVsICZhbXA7IFJhdyBTb2NrZXQgSGVhZGVyIEhhbmRsaW5nKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgc29tZSBwcmV0dHkgZnVuZGFtZW50YWwgbmV0d29ya2luZyBjb21wb25lbnRzOiBJUHY0IGFuZCBJUHY2IHR1bm5lbCBjcmVhdGlvbiBhbmQgcmF3IHNvY2tldCBzZW5kaW5nLiBJIHNlZSB0aGV5JiMzOTt2ZSBhZGRlZCBzb21lIGNydWNpYWwgY2hlY2tzIHJlbGF0ZWQgdG8gaGVhZGVyIGxlbmd0aCBjYWxjdWxhdGlvbnMgdG8gcHJldmVudCBwb3RlbnRpYWwgb3ZlcmZsb3dzLCBzcGVjaWZpY2FsbHkgaW4gYGlwX3R1bm5lbF9jYWxjX2Rldl9jb25maWdgLCBgcmF3X3NlbmRfaGRyaW5jYCwgYW5kIGByYXd2Nl9zZW5kX2hkcmluY2AuIFRoZSBjaGVja3MgaW4gdGhlIGlwIHR1bm5lbCBjb2RlIG5vdyBoYW5kbGUgdGhlIGV4dGVuZGVkIGFjayBhcyB3ZWxsLCBhbmQgcmV0dXJuIGVycm9ycyBpZiB0aGUgaGVhZHJvb20gaXMgdG9vIGxhcmdlLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBhcmVhIGZvciBmdXp6aW5nLCBwb3RlbnRpYWwgZm9yIGJ1ZmZlciBvdmVyZmxvd3Mgb3IgaW50ZWdlci1yZWxhdGVkIHZ1bG5lcmFiaWxpdGllcyB0aGVyZS4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhcyB3ZWxsLCBzbyB0aGF0IGFsc28gbWFrZXMgdGhpcyBoaWdoIG9uIHRoZSBsaXN0LgoKTXkgaW5pdGlhbCBmb2N1cyB3aWxsIGJlIGhvbmluZyBpbiBvbiB0aGVzZSB2dWxuZXJhYmxlIGVudHJ5IHBvaW50cy4gSSYjMzk7dmUgZ290IHRvIGlkZW50aWZ5IHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgZ29pbmcgdG8gYmUgbW9zdCBlZmZlY3RpdmUgZm9yIGZ1enppbmcuIExvb2tzIGxpa2Ugd2UmIzM5O3JlIGludGVyZXN0ZWQgaW4gdGhlIGZvbGxvd2luZzogYGlwX3R1bm5lbF9jYWxjX2Rldl9jb25maWdgLCBgaXBfdHVubmVsX2JpbmRfZGV2YCwgYGlwX3R1bm5lbF91cGRhdGVgLCBgaXBfdHVubmVsX25ld2xpbmtgLCBgaXBfdHVubmVsX2NoYW5nZWxpbmtgLCBgcmF3X3NlbmRfaGRyaW5jYCwgYW5kIGByYXd2Nl9zZW5kX2hkcmluY2AuCgpCZWNhdXNlIGBpcF90dW5uZWxfbmV3bGlua2AgYW5kIGBpcF90dW5uZWxfY2hhbmdlbGlua2AgYXJlIGV4cG9ydGVkLCBub24tc3RhdGljLCBhbmQgcGFydCBvZiB0aGUgdHVubmVsIGNyZWF0aW9uL21vZGlmaWNhdGlvbiBwcm9jZXNzLCB0aGV5IGxvb2sgbGlrZSBwcmltZSB0YXJnZXRzLiBPbiB0aGUgcmF3IHNvY2tldCBzaWRlLCBgcmF3X3NlbmRfaGRyaW5jYCBhbmQgYHJhd3Y2X3NlbmRfaGRyaW5jYCBhcmUgc3RhdGljLCBzbyBJIG5lZWQgdG8gZmluZCB0aGVpciBlbnRyeSBwb2ludHMsIHdoaWNoIG1lYW5zIEkmIzM5O2xsIGJlIGxvb2tpbmcgYXQgYHJhd19zZW5kbXNnYCBhbmQgYHJhd3Y2X3NlbmRtc2dgIHJlc3BlY3RpdmVseS4KCk5vdywgSSYjMzk7bGwgZGl2ZSBpbnRvIHRoZSBzb3VyY2UgY29kZSB0byBnZXQgdGhlIHNwZWNpZmljIGNhbGxzLiBJJiMzOTtsbCBjaGVjayBgbmV0L2lwdjQvcmF3LmNgIGZvciBgcmF3X3NlbmRtc2dgIGFuZCB0aGVuIGBuZXQvaXB2Ni9yYXcuY2AgZm9yIGByYXd2Nl9zZW5kbXNnYCB0byBnZXQgdGhlIGNvbnRleHQgYXJvdW5kIHRob3NlIGZ1bmN0aW9uIGNhbGxzLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHF1aWNrIGdyZXAgdG8gbWFrZSBzdXJlIEkmIzM5O20gb24gdGhlIHJpZ2h0IHRyYWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14oc3RhdGljICk/aW50IHJhd19zZW5kbXNnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jYW4vcmF3LmM9ODk4PXN0YXRpYyB1bnNpZ25lZCBpbnQgcmF3X2NoZWNrX3R4ZnJhbWUoc3RydWN0IHJhd19zb2NrICpybywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvY2FuL3Jhdy5jLTkxNy1cbm5ldC9jYW4vcmF3LmM6OTE4OnN0YXRpYyBpbnQgcmF3X3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3Qgc2l6ZSlcbm5ldC9jYW4vcmF3LmMtOTE5LXtcbi0tXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYz0yMzY9c3RhdGljIGludCByYXdfZGlzY29ubmVjdChzdHJ1Y3Qgc29jayAqc2ssIGludCBmbGFncylcbi0tXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYy0yNDAtXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYzoyNDE6c3RhdGljIGludCByYXdfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUpXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYy0yNDIte1xuLS1cbm5ldC9pcHY0L3Jhdy5jPTQ2MT1zdGF0aWMgaW50IHJhd19nZXRmcmFnKHZvaWQgKmZyb20sIGNoYXIgKnRvLCBpbnQgb2Zmc2V0LCBpbnQgbGVuLCBpbnQgb2RkLFxuLS1cbm5ldC9pcHY0L3Jhdy5jLTQ5MS1cbm5ldC9pcHY0L3Jhdy5jOjQ5MjpzdGF0aWMgaW50IHJhd19zZW5kbXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxubmV0L2lwdjQvcmF3LmMtNDkzLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODcxCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBkaXN0aWxsZWQ6CgoqKkRpZ2dpbmcgaW50byBSYXcgU29ja2V0IFNlbmQgRnVuY3Rpb25hbGl0eSoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHJhd19zZW5kbXNnYCBpbiBgbmV0L2lwdjQvcmF3LmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7V2FpdCwgaXMgdGhpcyBmdW5jdGlvbiBzdGF0aWM/JiMzNDsgSSBuZWVkIHRvIHZlcmlmeSB0aGF0LiBZZXAsIGl0IGlzLiBJbnRlcmVzdGluZy4gTm93LCB0aGUgbmV4dCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0ICp0aGlzKiBzdGF0aWMgYHJhd19zZW5kbXNnYCBmdW5jdGlvbiBpcyBhc3NpZ25lZCB0byBgcHJvdG8uc2VuZG1zZ2AuIFRoYXQmIzM5O3MgaG93IGl0JiMzOTtzIGJlaW5nIGFjY2Vzc2VkIGV4dGVybmFsbHkuIEkga25vdyB3aGF0JiMzOTtzIGdvaW5nIG9uIG5vdywgYnV0IEkgbmVlZCB0byBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IGJ5IGNoZWNraW5nIGBuZXQvaXB2NC9yYXcuY2AgZm9yIGJvdGggYHJhd19zZW5kbXNnYCBhbmQgYWxzbyB0aGUgcmVsYXRlZCBmdW5jdGlvbiBgcmF3X3NlbmRfaGRyaW5jYC4gSXQgc2VlbXMgbGlrZSBhIGNsYXNzaWMgY2FzZSBvZiBmdW5jdGlvbiBwb2ludGVyIG1hZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Jhd19zZW5kX2hkcmluYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9yYXcuYz0zMTk9aW50IHJhd19yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY0L3Jhdy5jLTMzMy1cbm5ldC9pcHY0L3Jhdy5jOjMzNDpzdGF0aWMgaW50IHJhd19zZW5kX2hkcmluYyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBmbG93aTQgKmZsNCxcbm5ldC9pcHY0L3Jhdy5jLTMzNS1cdFx0XHQgICBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW5ndGgsXG4tLVxubmV0L2lwdjQvcmF3LmM9NDkyPXN0YXRpYyBpbnQgcmF3X3NlbmRtc2coc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXG4tLVxubmV0L2lwdjQvcmF3LmMtNjU0LVx0aWYgKGhkcmluY2wpXG5uZXQvaXB2NC9yYXcuYzo2NTU6XHRcdGVyciA9IHJhd19zZW5kX2hkcmluYyhzaywgXHUwMDI2Zmw0LCBtc2csIGxlbixcbm5ldC9pcHY0L3Jhdy5jLTY1Ni1cdFx0XHRcdCAgICAgIFx1MDAyNnJ0LCBtc2ctXHUwMDNlbXNnX2ZsYWdzLCBcdTAwMjZpcGMuc29ja2MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0MDIKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBgcmF3djZfc2VuZG1zZ2AgRnVuY3Rpb24qKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gaXQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGByYXd2Nl9zZW5kbXNnYC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQsIEkgd2FudCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGlzIGhhbmRsZWQsIHRoZSBrZXkgZnVuY3Rpb24gZm9yIHNlbmRpbmcgcmF3IElQdjYgZGF0YWdyYW1zLiBJdCYjMzk7cyB0aGUgY29yZSBvZiB0aGlzIG9wZXJhdGlvbi4gTGV0JiMzOTtzIHNlZSBob3cgdGhpbmdzIGFyZSBmbG93aW5nIHRocm91Z2ggdGhhdCBzcGVjaWZpYyBwaWVjZSBvZiB0aGUgY29kZS4gSSBuZWVkIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgYmVoYXZpb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDA6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmF3djZfc2VuZG1zZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0X2NhY2hlbGluZXMvaW5ldF9zb2NrLnJzdD0xMj1zdHJ1Y3QgaXB2Nl9waW5mbyogICAgICAgcGluZXQ2XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0X2NhY2hlbGluZXMvaW5ldF9zb2NrLnJzdDoxMzpzdHJ1Y3QgaXB2Nl9mbF9zb2NrbGlzdCogaXB2Nl9mbF9saXN0ICAgICAgICAgIHJlYWRfbW9zdGx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3BfdjZfY29ubmVjdCxfX2lwNl9kYXRhZ3JhbV9jb25uZWN0LHVkcHY2X3NlbmRtc2cscmF3di4uLlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL2luZXRfc29jay5yc3QtMTQtYmUxNiAgICAgICAgICAgICAgICAgICAgIGluZXRfc3BvcnQgICAgICAgICAgICByZWFkX21vc3RseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX190Y3BfdHJhbnNtaXRfc2tiXG4tLVxubmV0L2lwdjYvcmF3LmM9NzE1PXN0YXRpYyBpbnQgcmF3Nl9nZXRmcmFnKHZvaWQgKmZyb20sIGNoYXIgKnRvLCBpbnQgb2Zmc2V0LCBpbnQgbGVuLCBpbnQgb2RkLFxuLS1cbm5ldC9pcHY2L3Jhdy5jLTc0NS1cbm5ldC9pcHY2L3Jhdy5jOjc0NjpzdGF0aWMgaW50IHJhd3Y2X3NlbmRtc2coc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXG5uZXQvaXB2Ni9yYXcuYy03NDcte1xuLS1cbm5ldC9pcHY2L3Jhdy5jPTEyMDA9c3RydWN0IHByb3RvIHJhd3Y2X3Byb3QgPSB7XG4tLVxubmV0L2lwdjYvcmF3LmMtMTIxMC1cdC5nZXRzb2Nrb3B0XHQgICA9IHJhd3Y2X2dldHNvY2tvcHQsXG5uZXQvaXB2Ni9yYXcuYzoxMjExOlx0LnNlbmRtc2dcdCAgID0gcmF3djZfc2VuZG1zZyxcbm5ldC9pcHY2L3Jhdy5jLTEyMTItXHQucmVjdm1zZ1x0ICAgPSByYXd2Nl9yZWN2bXNnLFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90eHRpbWVzdGFtcC5jPTQ4Nj1zdGF0aWMgdm9pZCBkb190ZXN0KGludCBmYW1pbHksIHVuc2lnbmVkIGludCByZXBvcnRfb3B0KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90eHRpbWVzdGFtcC5jLTUwOS1cdFx0fVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3R4dGltZXN0YW1wLmM6NTEwOlx0XHQvKiBzcGVjaWFsIGNhc2UsIG9ubHkgcmF3djZfc2VuZG1zZzpcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90eHRpbWVzdGFtcC5jLTUxMS1cdFx0ICogcGFzcyBwcm90byBpbiBzaW42X3BvcnQgaWYgbm90IGNvbm5lY3RlZFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDY2CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXR3b3JrIFN0YWNrIC0gQSBEZWVwIERpdmUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGByYXdfc2VuZG1zZ2AgYW5kIGByYXd2Nl9zZW5kbXNnYC4gSW50ZXJlc3RpbmcsIHRoZXkmIzM5O3JlIHN0YXRpYyBmdW5jdGlvbnMuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtPa2F5LCB0aGF0JiMzOTtzIG5vdCB1bnVzdWFsIGZvciBpbnRlcm5hbCBoZWxwZXJzLCBidXQgbGV0JiMzOTtzIHNlZSB3aGVyZSB0aGV5JiMzOTtyZSB1c2VkLiYjMzQ7IEkgcXVpY2tseSByZWFsaXplZCBgcmF3X3NlbmRtc2dgIGlzIHN0YXRpYyB3aXRoaW4gYG5ldC9pcHY0L3Jhdy5jYC4gVGhlIG5leHQgcXVlc3Rpb24gaXMsIGFyZSB0aGV5IGNhbGxlZCBieSBhbnl0aGluZyBvdXRzaWRlIG9mIHRoYXQgc3RhdGljIHNjb3BlPyBUaGVuIEkgcmVtZW1iZXIgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IGFzc2lnbmVkIHRvIGBwcm90by5zZW5kbXNnYC4gVGhhdCYjMzk7cyB0aGUgY2x1ZSEgVGhpcyBtZWFucyB0aGV5JiMzOTtyZSBwYXJ0IG9mIHRoZSBwcm90b2NvbCBvcGVyYXRpb25zLgoKTm93IEkgbmVlZCB0byBmaW5kIHRoZSBicmlkZ2UgYmV0d2VlbiBzdGF0aWMgc2NvcGUgYW5kIG91dHNpZGUgYWNjZXNzLiBBaCEgVGhpbmtpbmcgYWJvdXQgaXQuLi4gYGlwX3R1bm5lbF9uZXdsaW5rYCBhbmQgYGlwX3R1bm5lbF9jaGFuZ2VsaW5rYCEgVGhvc2UgYXJlIGV4cG9ydGVkLCBzbyB0aGV5IGhhdmUgdG8gYmUgdGhlIGNvbm5lY3Rpb24uIExldCBtZSBzaGlmdCBteSBmb2N1cyB0byBgaXBfdHVubmVsX25ld2xpbmtgLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBzdGFydCBkaWdnaW5nIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zIGZpdCBpbnRvIHRoZSB0dW5uZWwgc2V0dXAgcHJvY2Vzcy4gVGhpcyBsb29rcyBwcm9taXNpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3R1bm5lbF9uZXdsaW5rJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaD00Mjc9aW50IGlwX3R1bm5lbF9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG4tLVxuaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oLTQyOS1cdFx0XHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcbmluY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaDo0MzA6aW50IGlwX3R1bm5lbF9uZXdsaW5rKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmluY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaC00MzEtXHRcdCAgICAgIHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTE0MDk9c3RhdGljIGludCBpcGdyZV9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTQyNS1cdFx0cmV0dXJuIGVycjtcbm5ldC9pcHY0L2lwX2dyZS5jOjE0MjY6XHRyZXR1cm4gaXBfdHVubmVsX25ld2xpbmsocGFyYW1zLVx1MDAzZWxpbmtfbmV0ID8gOiBkZXZfbmV0KGRldiksIGRldiwgdGIsIFx1MDAyNnAsXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDI3LVx0XHRcdFx0IGZ3bWFyaywgZXh0YWNrKTtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xNDMwPXN0YXRpYyBpbnQgZXJzcGFuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDQ2LVx0XHRyZXR1cm4gZXJyO1xubmV0L2lwdjQvaXBfZ3JlLmM6MTQ0NzpcdHJldHVybiBpcF90dW5uZWxfbmV3bGluayhwYXJhbXMtXHUwMDNlbGlua19uZXQgPyA6IGRldl9uZXQoZGV2KSwgZGV2LCB0YiwgXHUwMDI2cCxcbm5ldC9pcHY0L2lwX2dyZS5jLTE0NDgtXHRcdFx0XHQgZndtYXJrLCBleHRhY2spO1xuLS1cbm5ldC9pcHY0L2lwX3R1bm5lbC5jPTEyMzk9RVhQT1JUX1NZTUJPTF9HUEwoaXBfdHVubmVsX2RlbGV0ZV9uZXQpO1xubmV0L2lwdjQvaXBfdHVubmVsLmMtMTI0MC1cbm5ldC9pcHY0L2lwX3R1bm5lbC5jOjEyNDE6aW50IGlwX3R1bm5lbF9uZXdsaW5rKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9pcHY0L2lwX3R1bm5lbC5jLTEyNDItXHRcdCAgICAgIHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLFxuLS1cbm5ldC9pcHY0L2lwX3R1bm5lbC5jLTEyOTQtfVxubmV0L2lwdjQvaXBfdHVubmVsLmM6MTI5NTpFWFBPUlRfU1lNQk9MX0dQTChpcF90dW5uZWxfbmV3bGluayk7XG5uZXQvaXB2NC9pcF90dW5uZWwuYy0xMjk2LVxuLS1cbm5ldC9pcHY0L2lwX3Z0aS5jPTU3Nz1zdGF0aWMgaW50IHZ0aV9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2lwdjQvaXBfdnRpLmMtNTg2LVx0dnRpX25ldGxpbmtfcGFybXMoZGF0YSwgXHUwMDI2cGFybXMsIFx1MDAyNmZ3bWFyayk7XG5uZXQvaXB2NC9pcF92dGkuYzo1ODc6XHRyZXR1cm4gaXBfdHVubmVsX25ld2xpbmsocGFyYW1zLVx1MDAzZWxpbmtfbmV0ID8gOiBkZXZfbmV0KGRldiksIGRldiwgdGIsXG5uZXQvaXB2NC9pcF92dGkuYy01ODgtXHRcdFx0XHQgXHUwMDI2cGFybXMsIGZ3bWFyaywgZXh0YWNrKTtcbi0tXG5uZXQvaXB2NC9pcGlwLmM9NDY0PXN0YXRpYyBpbnQgaXBpcF9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2lwdjQvaXBpcC5jLTQ4Mi1cdGlwaXBfbmV0bGlua19wYXJtcyhkYXRhLCBcdTAwMjZwLCBcdTAwMjZ0LVx1MDAzZWNvbGxlY3RfbWQsIFx1MDAyNmZ3bWFyayk7XG5uZXQvaXB2NC9pcGlwLmM6NDgzOlx0cmV0dXJuIGlwX3R1bm5lbF9uZXdsaW5rKHBhcmFtcy1cdTAwM2VsaW5rX25ldCA/IDogZGV2X25ldChkZXYpLCBkZXYsIHRiLCBcdTAwMjZwLFxubmV0L2lwdjQvaXBpcC5jLTQ4NC1cdFx0XHRcdCBmd21hcmssIGV4dGFjayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMzA3CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMjk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLZXJuZWwgU3ltYm9scyBmb3IgRm9jdXMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gcG90ZW50aWFsIGZvY3VzIHN5bWJvbHMgaGVyZS4gYGlwX3R1bm5lbF9uZXdsaW5rYCBhbmQgYGlwX3R1bm5lbF9jaGFuZ2VsaW5rYCBsb29rIHByb21pc2luZyDigJMgdGhleSYjMzk7cmUgZXhwb3J0ZWQgYW5kIGxldmVyYWdlZCBieSBzZXZlcmFsIG90aGVyIGZ1bmN0aW9ucyBsaWtlIGBpcGdyZV9uZXdsaW5rYCwgYGVyc3Bhbl9uZXdsaW5rYCwgYHZ0aV9uZXdsaW5rYCwgYW5kIGBpcGlwX25ld2xpbmtgLCB3aGljaCBhcmUgYWxsIGBydG5sX2xpbmtfb3BzYCBjYWxsYmFja3MuIFRoYXQgbWFrZXMgdGhlbSBzb2xpZCBjYW5kaWRhdGVzLgoKTm93LCBJIHdhcyBpbml0aWFsbHkgY29uc2lkZXJpbmcgYHJhd19zZW5kX2hkcmluY2AsIGJ1dCBpdCYjMzk7cyBzdGF0aWMsIGFuZCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSBjbGVhcjogcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5cG9pbnRzLiAgVGhpbmtpbmcgYWJvdXQgaXQsIHRob3VnaCwgYHJhd19zZW5kbXNnYCBpcyAqYWxzbyogc3RhdGljLCB3aGljaCBzZWVtcyBwcm9ibGVtYXRpYywgYnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gQWgsIHJpZ2h0LCBgcmF3X3NlbmRtc2dgIGlzIGFjdHVhbGx5IGFzc2lnbmVkIHRvIGBwcm90by5zZW5kbXNnYC4gVGhhdCBtZWFucyBpdCAqaXNuJiMzOTt0KiBpbmxpbmVkLgoKVGhlIGd1aWRpbmcgcHJpbmNpcGxlIGlzIHRvIGF2b2lkIGlubGluZWQgZnVuY3Rpb25zIGJlY2F1c2UgdGhleSBkb24mIzM5O3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLCBhbmQgdGhhdCBtYWtlcyB0aGVtIGxlc3MgaWRlYWwuICBgcmF3X3NlbmRtc2dgIGFuZCBgcmF3djZfc2VuZG1zZ2AgYXJlIG5vdCBpbmxpbmVkIGJlY2F1c2UgdGhleSBhcmUgYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMsIHNvIHRoZXkmIzM5O3JlIHBlcmZlY3RseSBmaW5lLgoKQWxyaWdodCwgYmVmb3JlIEkgZ2V0IHRvbyBmYXIsIGxldCYjMzk7cyBqdXN0IHF1aWNrbHkgY2hlY2sgaWYgYGlwX3R1bm5lbF9uZXdsaW5rYCAoc2luY2UgdGhhdCB3YXMgbXkgaW5pdGlhbCBzdHJvbmcgY2FuZGlkYXRlKSBoYXMgYW55IHNwZWNpZmljIENPTkZJRyBvcHRpb25zIHRoYXQgbWlnaHQgbWFrZSBpdCBsZXNzIHVuaXZlcnNhbGx5IHVzZWZ1bC4gSXQgcmVzaWRlcyBpbiBgbmV0L2lwdjQvaXBfdHVubmVsLmNgLCBzbyBJJiMzOTtsbCBjaGVjayBgbmV0L2lwdjQvTWFrZWZpbGVgIGZvciBgaXBfdHVubmVsLm9gIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3R1bm5lbFxcLm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcbi0tXG5uZXQvaXB2NC9NYWtlZmlsZS0xOC1cbm5ldC9pcHY0L01ha2VmaWxlOjE5Om9iai0kKENPTkZJR19ORVRfSVBfVFVOTkVMKSAmIzQzOz0gaXBfdHVubmVsLm9cbm5ldC9pcHY0L01ha2VmaWxlLTIwLW9iai0kKENPTkZJR19TWVNDVEwpICYjNDM7PSBzeXNjdGxfbmV0X2lwdjQub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjA3OQoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIGFuZCB0aGUgUmF3IFNvY2tldCBGcm9udGllcioqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBUaGUga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgSVAgdHVubmVscywgc3BlY2lmaWNhbGx5IGBDT05GSUdfTkVUX0lQX1RVTk5FTGAsIGhhdmUgZGVmaW5pdGVseSBiZWVuIG9uIG15IG1pbmQgbGF0ZWx5LiBJdCYjMzk7cyBhIGtleSBwaWVjZSBpbiBob3cgd2UgaGFuZGxlIGVuY2Fwc3VsYXRlZCB0cmFmZmljIGFuZCB2aXJ0dWFsIG5ldHdvcmtzIHdpdGhpbiB0aGUga2VybmVsIHNwYWNlLiBBbHdheXMgaW1wb3J0YW50IHRvIHJldmlzaXQgdGhlIGltcGxpY2F0aW9ucyBvZiBpdHMgc2VsZWN0aW9uLgoKVGhlbiwgbXkgdHJhaW4gb2YgdGhvdWdodCBkcmlmdGVkIHRvd2FyZHMgYHJhdy5jYC4gVGhhdCBmaWxlIGFsd2F5cyBwb3BzIHVwIHdoZW4gSSYjMzk7bSBkZWFsaW5nIHdpdGggbG93LWxldmVsIG5ldHdvcmsgZnVuY3Rpb25hbGl0eS4gUmF3IHNvY2tldHMgb2ZmZXIgdGhhdCBkaXJlY3QgYWNjZXNzIHRvIHRoZSBuZXR3b3JrIGxheWVyLCBieXBhc3NpbmcgbXVjaCBvZiB0aGUgdHlwaWNhbCBwcm90b2NvbCBzdGFjay4gSSYjMzk7bSB3b25kZXJpbmcgaWYgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyBpbnRlcmFjdGlvbiBJJiMzOTttIGNvbnNpZGVyaW5nLCBwZXJoYXBzIGEgcGVyZm9ybWFuY2UgYm90dGxlbmVjaywgb3IgbWF5YmUgYSBwb3RlbnRpYWwgZmVhdHVyZSBJJiMzOTttIGV2YWx1YXRpbmcgZm9yIGludGVncmF0aW9uIHdpdGggdGhlIHR1bm5lbCBmdW5jdGlvbmFsaXR5LiBHb3R0YSBjaGVjayBpZiB0aG9zZSB0d28gcGllY2VzIGFyZSBwbGF5aW5nIG5pY2VseSB0b2dldGhlciwgb3IgaWYgdGhlcmUgaXMgc29tZSBpc3N1ZSB3aXRoIHRoZSByYXcgc29ja2V0cyBhY2Nlc3MgYW5kIHRoZSBpcCB0dW5uZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Jhd1xcLm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9jeGwvY29yZS9tYm94LmM9NDA1PXN0YXRpYyBpbnQgY3hsX3RvX21lbV9jbWRfcmF3KHN0cnVjdCBjeGxfbWVtX2NvbW1hbmQgKm1lbV9jbWQsXG4tLVxuZHJpdmVycy9jeGwvY29yZS9tYm94LmMtNDE5LVxuZHJpdmVycy9jeGwvY29yZS9tYm94LmM6NDIwOlx0aWYgKCFjeGxfbWVtX3Jhd19jb21tYW5kX2FsbG93ZWQoc2VuZF9jbWQtXHUwMDNlcmF3Lm9wY29kZSkpXG5kcml2ZXJzL2N4bC9jb3JlL21ib3guYy00MjEtXHRcdHJldHVybiAtRVBFUk07XG4tLVxuZHJpdmVycy9jeGwvY29yZS9tYm94LmMtNDMwLVx0XHR9LFxuZHJpdmVycy9jeGwvY29yZS9tYm94LmM6NDMxOlx0XHQub3Bjb2RlID0gc2VuZF9jbWQtXHUwMDNlcmF3Lm9wY29kZVxuZHJpdmVycy9jeGwvY29yZS9tYm94LmMtNDMyLVx0fTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9OTM9ZHJtLSQoQ09ORklHX0RSTV9QQU5JQykgJiM0Mzs9IGRybV9wYW5pYy5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6OTQ6ZHJtLSQoQ09ORklHX0RSTV9EUkFXKSAmIzQzOz0gZHJtX2RyYXcub1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTk1LWRybS0kKENPTkZJR19EUk1fUEFOSUNfU0NSRUVOX1FSX0NPREUpICYjNDM7PSBkcm1fcGFuaWNfcXIub1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9xeGwvTWFrZWZpbGUtNS1cbmRyaXZlcnMvZ3B1L2RybS9xeGwvTWFrZWZpbGU6NjpxeGwteSA6PSBxeGxfZHJ2Lm8gcXhsX2ttcy5vIHF4bF9kaXNwbGF5Lm8gcXhsX3R0bS5vIHF4bF9vYmplY3QubyBxeGxfZ2VtLm8gcXhsX2NtZC5vIHF4bF9pbWFnZS5vIHF4bF9kcmF3Lm8gcXhsX2RlYnVnZnMubyBxeGxfaXJxLm8gcXhsX2R1bWIubyBxeGxfaW9jdGwubyBxeGxfcmVsZWFzZS5vLi4uXG5kcml2ZXJzL2dwdS9kcm0vcXhsL01ha2VmaWxlLTctXG4tLVxuZHJpdmVycy9oaWQvTWFrZWZpbGU9MTQ9b2JqLSQoQ09ORklHX0hJRF9HRU5FUklDKVx0JiM0Mzs9IGhpZC1nZW5lcmljLm9cbmRyaXZlcnMvaGlkL01ha2VmaWxlLTE1LVxuZHJpdmVycy9oaWQvTWFrZWZpbGU6MTY6aGlkLSQoQ09ORklHX0hJRFJBVylcdFx0JiM0Mzs9IGhpZHJhdy5vXG5kcml2ZXJzL2hpZC9NYWtlZmlsZS0xNy1cbi0tXG5kcml2ZXJzL2lucHV0L3NlcmlvL01ha2VmaWxlPTIzPW9iai0kKENPTkZJR19TRVJJT19MSUJQUzIpXHQmIzQzOz0gbGlicHMyLm9cbmRyaXZlcnMvaW5wdXQvc2VyaW8vTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX1NFUklPX1JBVylcdFx0JiM0Mzs9IHNlcmlvX3Jhdy5vXG5kcml2ZXJzL2lucHV0L3NlcmlvL01ha2VmaWxlLTI1LW9iai0kKENPTkZJR19TRVJJT19BTVNfREVMVEEpXHQmIzQzOz0gYW1zX2RlbHRhX3NlcmlvLm9cbi0tXG5kcml2ZXJzL21lZGlhL3JjL01ha2VmaWxlPTM9b2JqLXkgJiM0Mzs9IGtleW1hcHMvXG5kcml2ZXJzL21lZGlhL3JjL01ha2VmaWxlLTQtXG5kcml2ZXJzL21lZGlhL3JjL01ha2VmaWxlOjU6cmMtY29yZS15IDo9IHJjLW1haW4ubyByYy1pci1yYXcub1xuZHJpdmVycy9tZWRpYS9yYy9NYWtlZmlsZS02LXJjLWNvcmUtJChDT05GSUdfTElSQykgJiM0Mzs9IGxpcmNfZGV2Lm9cbi0tXG5kcml2ZXJzL21lZGlhL3JjL01ha2VmaWxlPTM2PW9iai0kKENPTkZJR19JUl9JTU9OKSAmIzQzOz0gaW1vbi5vXG5kcml2ZXJzL21lZGlhL3JjL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19JUl9JTU9OX1JBVykgJiM0Mzs9IGltb25fcmF3Lm9cbmRyaXZlcnMvbWVkaWEvcmMvTWFrZWZpbGUtMzgtb2JqLSQoQ09ORklHX0lSX0lURV9DSVIpICYjNDM7PSBpdGUtY2lyLm9cbi0tXG5kcml2ZXJzL21lZGlhL3JjL2ltZy1pci9NYWtlZmlsZT0yPWltZy1pci15XHRcdFx0Oj0gaW1nLWlyLWNvcmUub1xuZHJpdmVycy9tZWRpYS9yYy9pbWctaXIvTWFrZWZpbGU6MzppbWctaXItJChDT05GSUdfSVJfSU1HX1JBVylcdCYjNDM7PSBpbWctaXItcmF3Lm9cbmRyaXZlcnMvbWVkaWEvcmMvaW1nLWlyL01ha2VmaWxlLTQtaW1nLWlyLSQoQ09ORklHX0lSX0lNR19IVylcdCYjNDM7PSBpbWctaXItaHcub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2luaXRfb3BzLmg9MjI5PXN0YXRpYyB2b2lkIGJueDJ4X2luaXRfYmxvY2soc3RydWN0IGJueDJ4ICpicCwgdTMyIGJsb2NrLCB1MzIgc3RhZ2UpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaW5pdF9vcHMuaC0yNTAtXHRcdC8qIEdldCBnZW5lcmljIGRhdGEgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2luaXRfb3BzLmg6MjUxOlx0XHRvcF90eXBlID0gb3AtXHUwMDNlcmF3Lm9wO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaW5pdF9vcHMuaDoyNTI6XHRcdGFkZHIgPSBvcC1cdTAwM2VyYXcub2Zmc2V0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaW5pdF9vcHMuaC0yNTMtXHRcdC8qIEdldCBkYXRhIHRoYXQmIzM5O3MgdXNlZCBmb3IgT1BfU1csIE9QX1dCLCBPUF9GVywgT1BfWlAgYW5kXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfaW5pdF9vcHMuYz01NDg9aW50IHFlZF9pbml0X3J1bihzdHJ1Y3QgcWVkX2h3Zm4gKnBfaHdmbixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9pbml0X29wcy5jLTU2NS1cdFx0dW5pb24gaW5pdF9vcCAqY21kID0gXHUwMDI2aW5pdF9vcHNbY21kX251bV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9pbml0X29wcy5jOjU2NjpcdFx0dTMyIGRhdGEgPSBsZTMyX3RvX2NwdShjbWQtXHUwMDNlcmF3Lm9wX2RhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfaW5pdF9vcHMuYy01NjctXG4tLVxuZHJpdmVycy9uZXQvd2FuL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX0hETEMpXHRcdCYjNDM7PSBoZGxjLm9cbmRyaXZlcnMvbmV0L3dhbi9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfSERMQ19SQVcpXHRcdCYjNDM7PSBoZGxjX3Jhdy5vXG5kcml2ZXJzL25ldC93YW4vTWFrZWZpbGUtMTEtb2JqLSQoQ09ORklHX0hETENfUkFXX0VUSClcdCYjNDM7PSBoZGxjX3Jhd19ldGgub1xuLS1cbmRyaXZlcnMvc3RhZ2luZy9ncmV5YnVzL01ha2VmaWxlPTE0PWdiLXBvd2VyLXN1cHBseS15XHQ6PSBwb3dlcl9zdXBwbHkub1xuZHJpdmVycy9zdGFnaW5nL2dyZXlidXMvTWFrZWZpbGU6MTU6Z2ItcmF3LXlcdFx0Oj0gcmF3Lm9cbmRyaXZlcnMvc3RhZ2luZy9ncmV5YnVzL01ha2VmaWxlLTE2LWdiLXZpYnJhdG9yLXlcdFx0Oj0gdmlicmF0b3Iub1xuLS1cbmRyaXZlcnMvc3RhZ2luZy9ncmV5YnVzL01ha2VmaWxlPTI1PW9iai0kKENPTkZJR19HUkVZQlVTX1BPV0VSKVx0JiM0Mzs9IGdiLXBvd2VyLXN1cHBseS5vXG5kcml2ZXJzL3N0YWdpbmcvZ3JleWJ1cy9NYWtlZmlsZToyNjpvYmotJChDT05GSUdfR1JFWUJVU19SQVcpXHQmIzQzOz0gZ2ItcmF3Lm9cbmRyaXZlcnMvc3RhZ2luZy9ncmV5YnVzL01ha2VmaWxlLTI3LW9iai0kKENPTkZJR19HUkVZQlVTX1ZJQlJBVE9SKVx0JiM0Mzs9IGdiLXZpYnJhdG9yLm9cbi0tXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvaWFfY3NzX2lzcF9jb25maWdzLmM9MjIyPWludCBpYV9jc3NfY29uZmlndXJlX3Jhdyhjb25zdCBzdHJ1Y3QgaWFfY3NzX2JpbmFyeSAqYmluYXJ5LFxuLS1cbmRyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL3BjaS9pYV9jc3NfaXNwX2NvbmZpZ3MuYy0yMzYtXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvaWFfY3NzX2lzcF9jb25maWdzLmM6MjM3Olx0b2Zmc2V0ID0gYmluYXJ5LVx1MDAzZWluZm8tXHUwMDNlbWVtX29mZnNldHMub2Zmc2V0cy5jb25maWctXHUwMDNlZG1lbS5yYXcub2Zmc2V0O1xuZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3AvcGNpL2lhX2Nzc19pc3BfY29uZmlncy5jLTIzOC1cbi0tXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvcnVudGltZS9kZWJ1Zy9zcmMvaWFfY3NzX2RlYnVnLmM9NDQ3PXZvaWQgaWFfY3NzX2RlYnVnX2ZyYW1lX3ByaW50KGNvbnN0IHN0cnVjdCBpYV9jc3NfZnJhbWUgKmZyYW1lLFxuLS1cbmRyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL3BjaS9ydW50aW1lL2RlYnVnL3NyYy9pYV9jc3NfZGVidWcuYy00OTUtXHRcdGlhX2Nzc19kZWJ1Z19kdHJhY2UoMiwgXCYjMzQ7ICBSQVcgUEFDS0VEID0gJXBcXG5cJiMzNDssXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvcnVudGltZS9kZWJ1Zy9zcmMvaWFfY3NzX2RlYnVnLmM6NDk2Olx0XHRcdFx0ICAgIGRhdGEgJiM0MzsgZnJhbWUtXHUwMDNlcGxhbmVzLnJhdy5vZmZzZXQpO1xuZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3AvcGNpL3J1bnRpbWUvZGVidWcvc3JjL2lhX2Nzc19kZWJ1Zy5jLTQ5Ny1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3AvcGNpL3J1bnRpbWUvZGVidWcvc3JjL2lhX2Nzc19kZWJ1Zy5jLTQ5OS1cdFx0aWFfY3NzX2RlYnVnX2R0cmFjZSgyLCBcJiMzNDsgIFJBVyA9ICVwXFxuXCYjMzQ7LFxuZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3AvcGNpL3J1bnRpbWUvZGVidWcvc3JjL2lhX2Nzc19kZWJ1Zy5jOjUwMDpcdFx0XHRcdCAgICBkYXRhICYjNDM7IGZyYW1lLVx1MDAzZXBsYW5lcy5yYXcub2Zmc2V0KTtcbmRyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL3BjaS9ydW50aW1lL2RlYnVnL3NyYy9pYV9jc3NfZGVidWcuYy01MDEtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL3BjaS9zaF9jc3NfcGFyYW1zLmM9OTI0PXNoX2Nzc19zZXRfYmxhY2tfZnJhbWUoc3RydWN0IGlhX2Nzc19zdHJlYW0gKnN0cmVhbSxcbi0tXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvc2hfY3NzX3BhcmFtcy5jLTk0MS1cdHB0ciA9IHJhd19ibGFja19mcmFtZS1cdTAwM2VkYXRhXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvc2hfY3NzX3BhcmFtcy5jOjk0MjpcdCYjNDM7IHJhd19ibGFja19mcmFtZS1cdTAwM2VwbGFuZXMucmF3Lm9mZnNldDtcbmRyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL3BjaS9zaF9jc3NfcGFyYW1zLmMtOTQzLVxuLS1cbmRyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL3BjaS9zaF9jc3Nfc3AuYz00MjA9c2hfY3NzX2NvcHlfZnJhbWVfdG9fc3BmcmFtZShzdHJ1Y3QgaWFfY3NzX2ZyYW1lX3NwICpzcF9mcmFtZV9vdXQsXG4tLVxuZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3AvcGNpL3NoX2Nzc19zcC5jLTQzNy1cdGNhc2UgSUFfQ1NTX0ZSQU1FX0ZPUk1BVF9SQVc6XG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvc2hfY3NzX3NwLmM6NDM4Olx0XHRzcF9mcmFtZV9vdXQtXHUwMDNlcGxhbmVzLnJhdy5vZmZzZXQgPSBmcmFtZV9pbi1cdTAwM2VwbGFuZXMucmF3Lm9mZnNldDtcbmRyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL3BjaS9zaF9jc3Nfc3AuYy00MzktXHRcdGJyZWFrO1xuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9jeGxfbWVtLmg9MTY2PXN0cnVjdCBjeGxfbWVtX3F1ZXJ5X2NvbW1hbmRzIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvY3hsX21lbS5oLTE4Ni0gKiBAcmF3OiBTcGVjaWFsIGZpZWxkcyBmb3IgcmF3IGNvbW1hbmRzXG5pbmNsdWRlL3VhcGkvbGludXgvY3hsX21lbS5oOjE4NzogKiBAcmF3Lm9wY29kZTogT3Bjb2RlIHBhc3NlZCB0byBoYXJkd2FyZSB3aGVuIHVzaW5nIHRoZSBSQVcgY29tbWFuZC5cbmluY2x1ZGUvdWFwaS9saW51eC9jeGxfbWVtLmgtMTg4LSAqIEByYXcucnN2ZDogTXVzdCBiZSB6ZXJvLlxuLS1cbm5ldC9hdG0vTWFrZWZpbGUtNS1cbm5ldC9hdG0vTWFrZWZpbGU6NjphdG0teVx0XHQ6PSBwdmMubyBpb2N0bC5vIGNvbW1vbi5vIGF0bV9taXNjLm8gcmF3Lm8gcmVzb3VyY2VzLm8gYXRtX3N5c2ZzLm9cbm5ldC9hdG0vTWFrZWZpbGUtNy1cbi0tXG5uZXQvY2FuL01ha2VmaWxlPTg9Y2FuLSQoQ09ORklHX1BST0NfRlMpXHQmIzQzOz0gcHJvYy5vXG5uZXQvY2FuL01ha2VmaWxlLTktXG5uZXQvY2FuL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19DQU5fUkFXKVx0JiM0Mzs9IGNhbi1yYXcub1xubmV0L2Nhbi9NYWtlZmlsZToxMTpjYW4tcmF3LXlcdFx0Oj0gcmF3Lm9cbm5ldC9jYW4vTWFrZWZpbGUtMTItXG4tLVxubmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcbi0tXG5uZXQvaXB2NC9NYWtlZmlsZS0xMi1cdCAgICAgdGNwX3JlY292ZXJ5Lm8gdGNwX3VscC5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZToxMzpcdCAgICAgdGNwX29mZmxvYWQubyB0Y3BfcGxiLm8gZGF0YWdyYW0ubyByYXcubyB1ZHAubyBcXFxubmV0L2lwdjQvTWFrZWZpbGUtMTQtXHQgICAgIHVkcF9vZmZsb2FkLm8gYXJwLm8gaWNtcC5vIGRldmluZXQubyBhZl9pbmV0Lm8gaWdtcC5vIFxcXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlPTMzPW9iai0kKENPTkZJR19JUF9ORl9OQVQpICYjNDM7PSBpcHRhYmxlX25hdC5vXG5uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX0lQX05GX1JBVykgJiM0Mzs9IGlwdGFibGVfcmF3Lm9cbm5ldC9pcHY0L25ldGZpbHRlci9NYWtlZmlsZS0zNS1vYmotJChDT05GSUdfSVBfTkZfU0VDVVJJVFkpICYjNDM7PSBpcHRhYmxlX3NlY3VyaXR5Lm9cbi0tXG5uZXQvaXB2Ni9NYWtlZmlsZT04PWlwdjYteSA6PVx0YWZfaW5ldDYubyBhbnljYXN0Lm8gaXA2X291dHB1dC5vIGlwNl9pbnB1dC5vIGFkZHJjb25mLm8gXFxcbi0tXG5uZXQvaXB2Ni9NYWtlZmlsZS0xMC1cdFx0cm91dGUubyBpcDZfZmliLm8gaXB2Nl9zb2NrZ2x1ZS5vIG5kaXNjLm8gdWRwLm8gXFxcbm5ldC9pcHY2L01ha2VmaWxlOjExOlx0XHRyYXcubyBpY21wLm8gbWNhc3QubyByZWFzc2VtYmx5Lm8gdGNwX2lwdjYubyBwaW5nLm8gXFxcbm5ldC9pcHY2L01ha2VmaWxlLTEyLVx0XHRleHRoZHJzLm8gZGF0YWdyYW0ubyBpcDZfZmxvd2xhYmVsLm8gaW5ldDZfY29ubmVjdGlvbl9zb2NrLm8gXFxcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfSVA2X05GX01BTkdMRSkgJiM0Mzs9IGlwNnRhYmxlX21hbmdsZS5vXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0lQNl9ORl9SQVcpICYjNDM7PSBpcDZ0YWJsZV9yYXcub1xubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlLTExLW9iai0kKENPTkZJR19JUDZfTkZfU0VDVVJJVFkpICYjNDM7PSBpcDZ0YWJsZV9zZWN1cml0eS5vXG4tLVxudG9vbHMvcGVyZi91dGlsL0J1aWxkPTc1PXBlcmYtdXRpbC15ICYjNDM7PSBzYW1wbGUub1xudG9vbHMvcGVyZi91dGlsL0J1aWxkOjc2OnBlcmYtdXRpbC15ICYjNDM7PSBzYW1wbGUtcmF3Lm9cbnRvb2xzL3BlcmYvdXRpbC9CdWlsZDo3NzpwZXJmLXV0aWwteSAmIzQzOz0gczM5MC1zYW1wbGUtcmF3Lm9cbnRvb2xzL3BlcmYvdXRpbC9CdWlsZDo3ODpwZXJmLXV0aWwteSAmIzQzOz0gYW1kLXNhbXBsZS1yYXcub1xudG9vbHMvcGVyZi91dGlsL0J1aWxkLTc5LVxuLS1cbnRvb2xzL3BlcmYvdXRpbC9pbnRlbC1wdC5jPTIwMjQ9c3RhdGljIGludCBpbnRlbF9wdF9zeW50aF9wc2Jfc2FtcGxlKHN0cnVjdCBpbnRlbF9wdF9xdWV1ZSAqcHRxKVxuLS1cbnRvb2xzL3BlcmYvdXRpbC9pbnRlbC1wdC5jLTIwNDItXHRyYXcucmVzZXJ2ZWQgPSAwO1xudG9vbHMvcGVyZi91dGlsL2ludGVsLXB0LmM6MjA0MzpcdHJhdy5vZmZzZXQgPSBwdHEtXHUwMDNlc3RhdGUtXHUwMDNlcHNiX29mZnNldDtcbnRvb2xzL3BlcmYvdXRpbC9pbnRlbC1wdC5jLTIwNDQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1Njc3CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgS2VybmVsJiMzOTtzIElQIFR1bm5lbGluZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyBJUCB0dW5uZWxpbmcgaXMgc2V0IHVwIGluIHRoZSBrZXJuZWwuIEl0IGxvb2tzIGxpa2UgYG5ldC9pcHY0L3Jhdy5vYCBhbmQgYG5ldC9pcHY2L3Jhdy5vYCBhcmUgY29tcGlsZWQgaW4gYnkgZGVmYXVsdDsgdGhleSYjMzk7cmUgcGFydCBvZiB0aGUgc3RhbmRhcmQgYG9iai15YCBhbmQgYGlwdjYteWAgY29uZmlndXJhdGlvbnMuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LCBidXQgbm90IHRoZSBjb3JlIG9mIHdoYXQgSSYjMzk7bSBhZnRlci4gTXkgbWFpbiBmb2N1cyBpcyBgQ09ORklHX05FVF9JUF9UVU5ORUxgLCBvYnZpb3VzbHkuCgpIbW0sIHdhaXQgYSBzZWNvbmQuLi4gdGhpcyBgaXBfdHVubmVsX25ld2xpbmtgIGZ1bmN0aW9uLi4uIHRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIEl0JiMzOTtzIGNhbGxlZCBieSBtb3JlIHRoYW4ganVzdCB0aGUgYmFzZSB0dW5uZWxpbmcgZnVuY3Rpb25hbGl0eS4gSXQmIzM5O3MgYWxzbyB1dGlsaXplZCBieSBzcGVjaWZpYyB0dW5uZWwgdHlwZXMsIGxpa2UgYGlwZ3JlX25ld2xpbmtgLCBgZXJzcGFuX25ld2xpbmtgLCBgdnRpX25ld2xpbmtgLCBhbmQgYGlwaXBfbmV3bGlua2AuIFRoYXQgZXhwYW5kcyB0aGUgc2NvcGUgb2Ygd2hhdCBJIG5lZWQgdG8gY29uc2lkZXIuIEkgc2hvdWxkIHZlcmlmeSB0aGUgYnVpbGQgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBpbmRpdmlkdWFsIHR1bm5lbCB0eXBlcy4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIGBuZXQvaXB2NC9NYWtlZmlsZWAgc3BlY2lmaWNhbGx5IHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBpcF9ncmUub2AsIGBpcF92dGkub2AsIGFuZCBgaXBpcC5vYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDA6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfZ3JlXFwubyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT0yOT1vYmotJChDT05GSUdfTkVUX0lQR1JFX0RFTVVYKSAmIzQzOz0gZ3JlLm9cbm5ldC9pcHY0L01ha2VmaWxlOjMwOm9iai0kKENPTkZJR19ORVRfSVBHUkUpICYjNDM7PSBpcF9ncmUub1xubmV0L2lwdjQvTWFrZWZpbGUtMzEtdWRwX3R1bm5lbC15IDo9IHVkcF90dW5uZWxfY29yZS5vIHVkcF90dW5uZWxfbmljLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDA6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYxODkKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIGluc3RydWN0aW9ucywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIEtlcm5lbCBNb2R1bGVzIGZvciBQb3RlbnRpYWwgSW50ZXJhY3Rpb25zKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gdGFraW5nIGEgbG9vayBhdCBgaXBpcC5vYCBhbmQgYGlwX3Z0aS5vYC4gTXkgaW5pdGlhbCBoeXBvdGhlc2lzLCBnaXZlbiB0aGVpciBuYW1lcywgaXMgdGhhdCB0aGVzZSBsaWtlbHkgZGVhbCB3aXRoIElQLWluLUlQIHR1bm5lbGluZyBhbmQgVmlydHVhbCBUdW5uZWwgSW50ZXJmYWNlcywgcmVzcGVjdGl2ZWx5LiBNeSBtYWluIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgbW9kdWxlcyBpbnRlcmFjdCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBvciBpbnRlcmVzdGluZyBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3Mgd2hlbiBib3RoIGFyZSBsb2FkZWQgYW5kIGNvbmZpZ3VyZWQuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbiBjYWxscyB0aGV5IHNoYXJlLCBpZiBhbnkuIFBlcmhhcHMgdGhlcmUmIzM5O3Mgc29tZSBzaGFyZWQgY29uZmlndXJhdGlvbiBzcGFjZSBvciBsb2NraW5nIG1lY2hhbmlzbS4gVGhlIGdvYWwgaXMgdG8gaWRlbnRpZnkgcG9pbnRzIG9mIGludGVyZXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcGlwXFwubyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9NYWtlZmlsZT0xMz1tbHhzd19zcGVjdHJ1bS1vYmpzXHRcdDo9IHNwZWN0cnVtLm8gc3BlY3RydW1fYnVmZmVycy5vIFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvTWFrZWZpbGUtMjItXHRcdFx0XHQgICBzcGVjdHJ1bV9mbG93ZXIubyBzcGVjdHJ1bV9jbnQubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvTWFrZWZpbGU6MjM6XHRcdFx0XHQgICBzcGVjdHJ1bV9maWQubyBzcGVjdHJ1bV9pcGlwLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L01ha2VmaWxlLTI0LVx0XHRcdFx0ICAgc3BlY3RydW1fYWNsX2ZsZXhfYWN0aW9ucy5vIFxcXG4tLVxubmV0L2lwdjQvTWFrZWZpbGU9MjQ9b2JqLSQoQ09ORklHX0lQX01ST1VURV9DT01NT04pICYjNDM7PSBpcG1yX2Jhc2Uub1xubmV0L2lwdjQvTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX05FVF9JUElQKSAmIzQzOz0gaXBpcC5vXG5uZXQvaXB2NC9NYWtlZmlsZS0yNi1ncmUteSA6PSBncmVfZGVtdXgub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjYxMQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3Z0aVxcLm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9MzI9b2JqLSQoQ09ORklHX05FVF9VRFBfVFVOTkVMKSAmIzQzOz0gdWRwX3R1bm5lbC5vXG5uZXQvaXB2NC9NYWtlZmlsZTozMzpvYmotJChDT05GSUdfTkVUX0lQVlRJKSAmIzQzOz0gaXBfdnRpLm9cbm5ldC9pcHY0L01ha2VmaWxlLTM0LW9iai0kKENPTkZJR19TWU5fQ09PS0lFUykgJiM0Mzs9IHN5bmNvb2tpZXMub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjcyNwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDI3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLZXJuZWwgQ29uZmlndXJhdGlvbiBhbmQgU3ltYm9sIEFuYWx5c2lzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBrZXJuZWwgY29uZmlndXJhdGlvbnMg4oCTIGBDT05GSUdfTkVUX0lQR1JFYCwgYENPTkZJR19ORVRfSVBJUGAsIGFuZCBgQ09ORklHX05FVF9JUFZUSWAg4oCTIHRoZXkgc2VlbSBsaWtlIGdvb2QgY2hvaWNlcyB0byBlbmFibGUuIEFuZCBJJiMzOTttIHByZXR0eSBzdXJlIGBDT05GSUdfTkVUX0lQX1RVTk5FTGAgaXMgc2VsZWN0ZWQgYXV0b21hdGljYWxseSB3aXRoIHRob3NlLCBidXQgbGV0JiMzOTtzIGluY2x1ZGUgaXQgYW55d2F5LCBqdXN0IHRvIGJlIGV4cGxpY2l0LiBOb3csIGFib3V0IElQdjYgdHVubmVscy4uLiB0aGUgcGF0Y2ggaXMgb25seSB0b3VjaGluZyBgbmV0L2lwdjQvaXBfdHVubmVsLmNgLCBgbmV0L2lwdjQvaXBfZ3JlLmNgLCBgbmV0L2lwdjQvaXBfdnRpLmNgLCBhbmQgYG5ldC9pcHY0L2lwaXAuY2AsIHNvIGluaXRpYWxseSBJIHdhcyB0aGlua2luZyBJUHY2IGlzbiYjMzk7dCBhIGZhY3Rvci4gQnV0IGhvbGQgb24sIHRoZSBwYXRjaCBhbHNvIG1vZGlmaWVzIGBuZXQvaXB2Ni9yYXcuY2AuIFRoYXQgbWVhbnMgYENPTkZJR19JUFY2YCAqaGFzKiB0byBiZSBlbmFibGVkLgoKUmlnaHQsIGJhY2sgdG8gdGhlIGNvZGUuIEkgbmVlZCB0byByZXZpc2l0IGByYXdfc2VuZG1zZ2AgYW5kIGByYXd2Nl9zZW5kbXNnYC4gQ291bGQgdGhvc2UgYmUgdXNlZnVsIGFzIEZvY3VzU3ltYm9scz8gWWVhaCwgZXZlbiB0aG91Z2ggdGhleSYjMzk7cmUgZGVjbGFyZWQgYHN0YXRpY2AsIHRoZXkmIzM5O3JlIGFzc2lnbmVkIHRvIGBwcm90by5zZW5kbXNnYCwgc28gdGhleSYjMzk7cmUgdGhlIHByaW1hcnkgZW50cnkgcG9pbnRzIGZvciByYXcgc29ja2V0IHNlbmRpbmcuIEJ1dCB0aGF0IGBzdGF0aWNgIGRlY2xhcmF0aW9uIGlzIGNvbmNlcm5pbmcuIEl0IG1lYW5zIHRoZXkgbWlnaHQgbm90IGJlIGV4cG9ydGVkIGFuZCB0aHVzIGludmlzaWJsZS4gSG1tLCBJIG5lZWQgYSBub24tc3RhdGljIGZ1bmN0aW9uIGluIGBuZXQvaXB2NC9yYXcuY2AgdGhhdCBJICpjYW4qIHVzZS4gT2theSwgdGltZSB0byBkaXZlIGludG8gYG5ldC9pcHY0L3Jhdy5jYCBhbmQgaHVudCBmb3Igc29tZXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKGludHx2b2lkKSByYXdfJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva2VybmVsL3BjaS5jLTEzLSAqL1xuYXJjaC9hcm02NC9rZXJuZWwvcGNpLmM6MTQ6aW50IHJhd19wY2lfcmVhZCh1bnNpZ25lZCBpbnQgZG9tYWluLCB1bnNpZ25lZCBpbnQgYnVzLFxuYXJjaC9hcm02NC9rZXJuZWwvcGNpLmMtMTUtXHRcdCAgdW5zaWduZWQgaW50IGRldmZuLCBpbnQgcmVnLCBpbnQgbGVuLCB1MzIgKnZhbClcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9wY2kuYy0yMy1cbmFyY2gvYXJtNjQva2VybmVsL3BjaS5jOjI0OmludCByYXdfcGNpX3dyaXRlKHVuc2lnbmVkIGludCBkb21haW4sIHVuc2lnbmVkIGludCBidXMsXG5hcmNoL2FybTY0L2tlcm5lbC9wY2kuYy0yNS1cdFx0dW5zaWduZWQgaW50IGRldmZuLCBpbnQgcmVnLCBpbnQgbGVuLCB1MzIgdmFsKVxuLS1cbmFyY2gvbG9vbmdhcmNoL3BjaS9wY2kuYy0yMy1cbmFyY2gvbG9vbmdhcmNoL3BjaS9wY2kuYzoyNDppbnQgcmF3X3BjaV9yZWFkKHVuc2lnbmVkIGludCBkb21haW4sIHVuc2lnbmVkIGludCBidXMsIHVuc2lnbmVkIGludCBkZXZmbixcbmFyY2gvbG9vbmdhcmNoL3BjaS9wY2kuYy0yNS1cdFx0XHRcdFx0XHRpbnQgcmVnLCBpbnQgbGVuLCB1MzIgKnZhbClcbi0tXG5hcmNoL2xvb25nYXJjaC9wY2kvcGNpLmMtMzMtXG5hcmNoL2xvb25nYXJjaC9wY2kvcGNpLmM6MzQ6aW50IHJhd19wY2lfd3JpdGUodW5zaWduZWQgaW50IGRvbWFpbiwgdW5zaWduZWQgaW50IGJ1cywgdW5zaWduZWQgaW50IGRldmZuLFxuYXJjaC9sb29uZ2FyY2gvcGNpL3BjaS5jLTM1LVx0XHRcdFx0XHRcdGludCByZWcsIGludCBsZW4sIHUzMiB2YWwpXG4tLVxuYXJjaC9taXBzL2tlcm5lbC90cmFwcy5jPTEyMT1zdGF0aWMgdm9pZCBzaG93X3Jhd19iYWNrdHJhY2UodW5zaWduZWQgbG9uZyByZWcyOSwgY29uc3QgY2hhciAqbG9nbHZsLFxuLS1cbmFyY2gvbWlwcy9rZXJuZWwvdHJhcHMuYy0xNDItI2lmZGVmIENPTkZJR19LQUxMU1lNU1xuYXJjaC9taXBzL2tlcm5lbC90cmFwcy5jOjE0MzppbnQgcmF3X3Nob3dfdHJhY2U7XG5hcmNoL21pcHMva2VybmVsL3RyYXBzLmMtMTQ0LXN0YXRpYyBpbnQgX19pbml0IHNldF9yYXdfc2hvd190cmFjZShjaGFyICpzdHIpXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3RleHQtcGF0Y2hpbmcuaD03NT1pbnQgcGF0Y2hfaW5zdHJ1Y3Rpb24odTMyICphZGRyLCBwcGNfaW5zdF90IGluc3RyKTtcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS90ZXh0LXBhdGNoaW5nLmg6NzY6aW50IHJhd19wYXRjaF9pbnN0cnVjdGlvbih1MzIgKmFkZHIsIHBwY19pbnN0X3QgaW5zdHIpO1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3RleHQtcGF0Y2hpbmcuaC03Ny1pbnQgcGF0Y2hfaW5zdHJ1Y3Rpb25zKHUzMiAqYWRkciwgdTMyICpjb2RlLCBzaXplX3QgbGVuLCBib29sIHJlcGVhdF9pbnN0cik7XG4tLVxuYXJjaC9wb3dlcnBjL2xpYi9jb2RlLXBhdGNoaW5nLmM9MjM9c3RhdGljIGludCBfX3BhdGNoX21lbSh2b2lkICpleGVjX2FkZHIsIHVuc2lnbmVkIGxvbmcgdmFsLCB2b2lkICpwYXRjaF9hZGRyLCBib29sIGlzX2R3b3JkKVxuLS1cbmFyY2gvcG93ZXJwYy9saWIvY29kZS1wYXRjaGluZy5jLTQzLVxuYXJjaC9wb3dlcnBjL2xpYi9jb2RlLXBhdGNoaW5nLmM6NDQ6aW50IHJhd19wYXRjaF9pbnN0cnVjdGlvbih1MzIgKmFkZHIsIHBwY19pbnN0X3QgaW5zdHIpXG5hcmNoL3Bvd2VycGMvbGliL2NvZGUtcGF0Y2hpbmcuYy00NS17XG4tLVxuYXJjaC9yaXNjdi9rZXJuZWwvYWNwaS5jPTIyNz12b2lkIF9faW9tZW0gKmFjcGlfb3NfaW9yZW1hcChhY3BpX3BoeXNpY2FsX2FkZHJlc3MgcGh5cywgYWNwaV9zaXplIHNpemUpXG4tLVxuYXJjaC9yaXNjdi9rZXJuZWwvYWNwaS5jLTMxOC0gKi9cbmFyY2gvcmlzY3Yva2VybmVsL2FjcGkuYzozMTk6aW50IHJhd19wY2lfcmVhZCh1bnNpZ25lZCBpbnQgZG9tYWluLCB1bnNpZ25lZCBpbnQgYnVzLFxuYXJjaC9yaXNjdi9rZXJuZWwvYWNwaS5jLTMyMC1cdFx0IHVuc2lnbmVkIGludCBkZXZmbiwgaW50IHJlZywgaW50IGxlbiwgdTMyICp2YWwpXG4tLVxuYXJjaC9yaXNjdi9rZXJuZWwvYWNwaS5jLTMyOC1cbmFyY2gvcmlzY3Yva2VybmVsL2FjcGkuYzozMjk6aW50IHJhd19wY2lfd3JpdGUodW5zaWduZWQgaW50IGRvbWFpbiwgdW5zaWduZWQgaW50IGJ1cyxcbmFyY2gvcmlzY3Yva2VybmVsL2FjcGkuYy0zMzAtXHRcdCAgdW5zaWduZWQgaW50IGRldmZuLCBpbnQgcmVnLCBpbnQgbGVuLCB1MzIgdmFsKVxuLS1cbmFyY2gveDg2L3BjaS9jb21tb24uYz0zOD1jb25zdCBzdHJ1Y3QgcGNpX3Jhd19vcHMgKl9fcmVhZF9tb3N0bHkgcmF3X3BjaV9leHRfb3BzO1xuYXJjaC94ODYvcGNpL2NvbW1vbi5jLTM5LVxuYXJjaC94ODYvcGNpL2NvbW1vbi5jOjQwOmludCByYXdfcGNpX3JlYWQodW5zaWduZWQgaW50IGRvbWFpbiwgdW5zaWduZWQgaW50IGJ1cywgdW5zaWduZWQgaW50IGRldmZuLFxuYXJjaC94ODYvcGNpL2NvbW1vbi5jLTQxLVx0XHRcdFx0XHRcdGludCByZWcsIGludCBsZW4sIHUzMiAqdmFsKVxuLS1cbmFyY2gveDg2L3BjaS9jb21tb24uYy00OS1cbmFyY2gveDg2L3BjaS9jb21tb24uYzo1MDppbnQgcmF3X3BjaV93cml0ZSh1bnNpZ25lZCBpbnQgZG9tYWluLCB1bnNpZ25lZCBpbnQgYnVzLCB1bnNpZ25lZCBpbnQgZGV2Zm4sXG5hcmNoL3g4Ni9wY2kvY29tbW9uLmMtNTEtXHRcdFx0XHRcdFx0aW50IHJlZywgaW50IGxlbiwgdTMyIHZhbClcbi0tXG5pbmNsdWRlL2xpbnV4L2lycS1lbnRyeS1jb21tb24uaD0zMzY9dHlwZWRlZiBzdHJ1Y3QgaXJxZW50cnlfc3RhdGUge1xuLS1cbmluY2x1ZGUvbGludXgvaXJxLWVudHJ5LWNvbW1vbi5oLTM0OC0gKi9cbmluY2x1ZGUvbGludXgvaXJxLWVudHJ5LWNvbW1vbi5oOjM0OTp2b2lkIHJhd19pcnFlbnRyeV9leGl0X2NvbmRfcmVzY2hlZCh2b2lkKTtcbmluY2x1ZGUvbGludXgvaXJxLWVudHJ5LWNvbW1vbi5oLTM1MC1cbi0tXG5pbmNsdWRlL2xpbnV4L3BjaS5oPTg3Mj1zdHJ1Y3QgcGNpX29wcyB7XG4tLVxuaW5jbHVkZS9saW51eC9wY2kuaC04ODMtICovXG5pbmNsdWRlL2xpbnV4L3BjaS5oOjg4NDppbnQgcmF3X3BjaV9yZWFkKHVuc2lnbmVkIGludCBkb21haW4sIHVuc2lnbmVkIGludCBidXMsIHVuc2lnbmVkIGludCBkZXZmbixcbmluY2x1ZGUvbGludXgvcGNpLmgtODg1LVx0XHQgaW50IHJlZywgaW50IGxlbiwgdTMyICp2YWwpO1xuaW5jbHVkZS9saW51eC9wY2kuaDo4ODY6aW50IHJhd19wY2lfd3JpdGUodW5zaWduZWQgaW50IGRvbWFpbiwgdW5zaWduZWQgaW50IGJ1cywgdW5zaWduZWQgaW50IGRldmZuLFxuaW5jbHVkZS9saW51eC9wY2kuaC04ODctXHRcdCAgaW50IHJlZywgaW50IGxlbiwgdTMyIHZhbCk7XG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC93YWtlX3EuaD02Nz1zdGF0aWMgaW5saW5lXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3dha2VfcS5oOjY4OnZvaWQgcmF3X3NwaW5fdW5sb2NrX3dha2UocmF3X3NwaW5sb2NrX3QgKmxvY2ssIHN0cnVjdCB3YWtlX3FfaGVhZCAqd2FrZV9xKVxuaW5jbHVkZS9saW51eC9zY2hlZC93YWtlX3EuaC02OS1cdF9fcmVsZWFzZXMobG9jaylcbi0tXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3dha2VfcS5oPTc5PXN0YXRpYyBpbmxpbmVcbmluY2x1ZGUvbGludXgvc2NoZWQvd2FrZV9xLmg6ODA6dm9pZCByYXdfc3Bpbl91bmxvY2tfaXJxX3dha2UocmF3X3NwaW5sb2NrX3QgKmxvY2ssIHN0cnVjdCB3YWtlX3FfaGVhZCAqd2FrZV9xKVxuaW5jbHVkZS9saW51eC9zY2hlZC93YWtlX3EuaC04MS1cdF9fcmVsZWFzZXMobG9jaylcbi0tXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3dha2VfcS5oPTkxPXN0YXRpYyBpbmxpbmVcbmluY2x1ZGUvbGludXgvc2NoZWQvd2FrZV9xLmg6OTI6dm9pZCByYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZV93YWtlKHJhd19zcGlubG9ja190ICpsb2NrLCB1bnNpZ25lZCBsb25nIGZsYWdzLFxuaW5jbHVkZS9saW51eC9zY2hlZC93YWtlX3EuaC05My1cdFx0XHRcdCAgICAgc3RydWN0IHdha2VfcV9oZWFkICp3YWtlX3EpXG4tLVxuaW5jbHVkZS9uZXQvcmF3Lmg9MjU9Ym9vbCByYXdfdjRfbWF0Y2goc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIHNob3J0IG51bSxcbi0tXG5pbmNsdWRlL25ldC9yYXcuaC0yNy1cbmluY2x1ZGUvbmV0L3Jhdy5oOjI4OmludCByYXdfYWJvcnQoc3RydWN0IHNvY2sgKnNrLCBpbnQgZXJyKTtcbmluY2x1ZGUvbmV0L3Jhdy5oOjI5OnZvaWQgcmF3X2ljbXBfZXJyb3Ioc3RydWN0IHNrX2J1ZmYgKiwgaW50LCB1MzIpO1xuaW5jbHVkZS9uZXQvcmF3Lmg6MzA6aW50IHJhd19sb2NhbF9kZWxpdmVyKHN0cnVjdCBza19idWZmICosIGludCk7XG5pbmNsdWRlL25ldC9yYXcuaC0zMS1cbmluY2x1ZGUvbmV0L3Jhdy5oOjMyOmludCByYXdfcmN2KHN0cnVjdCBzb2NrICosIHN0cnVjdCBza19idWZmICopO1xuaW5jbHVkZS9uZXQvcmF3LmgtMzMtXG4tLVxuaW5jbHVkZS9uZXQvcmF3Lmg9NDg9c3RhdGljIGlubGluZSB2b2lkIHJhd19oYXNoaW5mb19pbml0KHN0cnVjdCByYXdfaGFzaGluZm8gKmhhc2hpbmZvKVxuLS1cbmluY2x1ZGUvbmV0L3Jhdy5oLTU3LSNpZmRlZiBDT05GSUdfUFJPQ19GU1xuaW5jbHVkZS9uZXQvcmF3Lmg6NTg6aW50IHJhd19wcm9jX2luaXQodm9pZCk7XG5pbmNsdWRlL25ldC9yYXcuaDo1OTp2b2lkIHJhd19wcm9jX2V4aXQodm9pZCk7XG5pbmNsdWRlL25ldC9yYXcuaC02MC1cbi0tXG5pbmNsdWRlL25ldC9yYXcuaD03MT12b2lkICpyYXdfc2VxX25leHQoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYsIGxvZmZfdCAqcG9zKTtcbmluY2x1ZGUvbmV0L3Jhdy5oOjcyOnZvaWQgcmF3X3NlcV9zdG9wKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KTtcbmluY2x1ZGUvbmV0L3Jhdy5oLTczLSNlbmRpZlxuaW5jbHVkZS9uZXQvcmF3LmgtNzQtXG5pbmNsdWRlL25ldC9yYXcuaDo3NTppbnQgcmF3X2hhc2hfc2soc3RydWN0IHNvY2sgKnNrKTtcbmluY2x1ZGUvbmV0L3Jhdy5oOjc2OnZvaWQgcmF3X3VuaGFzaF9zayhzdHJ1Y3Qgc29jayAqc2spO1xuaW5jbHVkZS9uZXQvcmF3Lmg6Nzc6dm9pZCByYXdfaW5pdCh2b2lkKTtcbmluY2x1ZGUvbmV0L3Jhdy5oLTc4LVxuLS1cbmluY2x1ZGUvbmV0L3Jhd3Y2Lmg9OT1ib29sIHJhd192Nl9tYXRjaChzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgc2hvcnQgbnVtLFxuLS1cbmluY2x1ZGUvbmV0L3Jhd3Y2LmgtMTItXG5pbmNsdWRlL25ldC9yYXd2Ni5oOjEzOmludCByYXdfYWJvcnQoc3RydWN0IHNvY2sgKnNrLCBpbnQgZXJyKTtcbmluY2x1ZGUvbmV0L3Jhd3Y2LmgtMTQtXG4tLVxua2VybmVsL2VudHJ5L2NvbW1vbi5jPTEzND1zdGF0aWMgaW5saW5lIGJvb2wgYXJjaF9pcnFlbnRyeV9leGl0X25lZWRfcmVzY2hlZCh2b2lkKSB7IHJldHVybiB0cnVlOyB9XG4tLVxua2VybmVsL2VudHJ5L2NvbW1vbi5jLTEzNi1cbmtlcm5lbC9lbnRyeS9jb21tb24uYzoxMzc6dm9pZCByYXdfaXJxZW50cnlfZXhpdF9jb25kX3Jlc2NoZWQodm9pZClcbmtlcm5lbC9lbnRyeS9jb21tb24uYy0xMzgte1xuLS1cbmtlcm5lbC9ub3RpZmllci5jPTM4NT1FWFBPUlRfU1lNQk9MX0dQTChibG9ja2luZ19ub3RpZmllcl9jYWxsX2NoYWluKTtcbi0tXG5rZXJuZWwvbm90aWZpZXIuYy00MDEtICovXG5rZXJuZWwvbm90aWZpZXIuYzo0MDI6aW50IHJhd19ub3RpZmllcl9jaGFpbl9yZWdpc3RlcihzdHJ1Y3QgcmF3X25vdGlmaWVyX2hlYWQgKm5oLFxua2VybmVsL25vdGlmaWVyLmMtNDAzLVx0XHRzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm4pXG4tLVxua2VybmVsL25vdGlmaWVyLmM9NDA3PUVYUE9SVF9TWU1CT0xfR1BMKHJhd19ub3RpZmllcl9jaGFpbl9yZWdpc3Rlcik7XG4tLVxua2VybmVsL25vdGlmaWVyLmMtNDE4LSAqL1xua2VybmVsL25vdGlmaWVyLmM6NDE5OmludCByYXdfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihzdHJ1Y3QgcmF3X25vdGlmaWVyX2hlYWQgKm5oLFxua2VybmVsL25vdGlmaWVyLmMtNDIwLVx0XHRzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm4pXG4tLVxua2VybmVsL25vdGlmaWVyLmM9NDI0PUVYUE9SVF9TWU1CT0xfR1BMKHJhd19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKTtcbmtlcm5lbC9ub3RpZmllci5jLTQyNS1cbmtlcm5lbC9ub3RpZmllci5jOjQyNjppbnQgcmF3X25vdGlmaWVyX2NhbGxfY2hhaW5fcm9idXN0KHN0cnVjdCByYXdfbm90aWZpZXJfaGVhZCAqbmgsXG5rZXJuZWwvbm90aWZpZXIuYy00MjctXHRcdHVuc2lnbmVkIGxvbmcgdmFsX3VwLCB1bnNpZ25lZCBsb25nIHZhbF9kb3duLCB2b2lkICp2KVxuLS1cbmtlcm5lbC9ub3RpZmllci5jPTQzMT1FWFBPUlRfU1lNQk9MX0dQTChyYXdfbm90aWZpZXJfY2FsbF9jaGFpbl9yb2J1c3QpO1xuLS1cbmtlcm5lbC9ub3RpZmllci5jLTQ0OS0gKi9cbmtlcm5lbC9ub3RpZmllci5jOjQ1MDppbnQgcmF3X25vdGlmaWVyX2NhbGxfY2hhaW4oc3RydWN0IHJhd19ub3RpZmllcl9oZWFkICpuaCxcbmtlcm5lbC9ub3RpZmllci5jLTQ1MS1cdFx0dW5zaWduZWQgbG9uZyB2YWwsIHZvaWQgKnYpXG4tLVxua2VybmVsL3NjaGVkL2NvcmUuYz01NTE9aW50IHRhc2tfbGxjKGNvbnN0IHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbi0tXG5rZXJuZWwvc2NoZWQvY29yZS5jLTY1OC1cbmtlcm5lbC9zY2hlZC9jb3JlLmM6NjU5OnZvaWQgcmF3X3NwaW5fcnFfbG9ja19uZXN0ZWQoc3RydWN0IHJxICpycSwgaW50IHN1YmNsYXNzKVxua2VybmVsL3NjaGVkL2NvcmUuYy02NjAtXHRfX2NvbnRleHRfdW5zYWZlKClcbi0tXG5uZXQvaXB2NC9yYXcuYz05MD1FWFBPUlRfU1lNQk9MX0dQTChyYXdfdjRfaGFzaGluZm8pO1xubmV0L2lwdjQvcmF3LmMtOTEtXG5uZXQvaXB2NC9yYXcuYzo5MjppbnQgcmF3X2hhc2hfc2soc3RydWN0IHNvY2sgKnNrKVxubmV0L2lwdjQvcmF3LmMtOTMte1xuLS1cbm5ldC9pcHY0L3Jhdy5jLTEwNy1cbm5ldC9pcHY0L3Jhdy5jOjEwODp2b2lkIHJhd191bmhhc2hfc2soc3RydWN0IHNvY2sgKnNrKVxubmV0L2lwdjQvcmF3LmMtMTA5LXtcbi0tXG5uZXQvaXB2NC9yYXcuYz0xNzA9c3RhdGljIGludCByYXdfdjRfaW5wdXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY0L3Jhdy5jLTIwNi1cbm5ldC9pcHY0L3Jhdy5jOjIwNzppbnQgcmF3X2xvY2FsX2RlbGl2ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHByb3RvY29sKVxubmV0L2lwdjQvcmF3LmMtMjA4LXtcbi0tXG5uZXQvaXB2NC9yYXcuYz0yMTU9c3RhdGljIHZvaWQgcmF3X2VycihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsIHUzMiBpbmZvKVxuLS1cbm5ldC9pcHY0L3Jhdy5jLTI3OC1cbm5ldC9pcHY0L3Jhdy5jOjI3OTp2b2lkIHJhd19pY21wX2Vycm9yKHN0cnVjdCBza19idWZmICpza2IsIGludCBwcm90b2NvbCwgdTMyIGluZm8pXG5uZXQvaXB2NC9yYXcuYy0yODAte1xuLS1cbm5ldC9pcHY0L3Jhdy5jPTMwMz1zdGF0aWMgaW50IHJhd19yY3Zfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC9yYXcuYy0zMTgtXG5uZXQvaXB2NC9yYXcuYzozMTk6aW50IHJhd19yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L2lwdjQvcmF3LmMtMzIwLXtcbi0tXG5uZXQvaXB2NC9yYXcuYz05MTM9c3RhdGljIGludCBjb21wYXRfcmF3X2lvY3RsKHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxubmV0L2lwdjQvcmF3LmMtOTI4LVxubmV0L2lwdjQvcmF3LmM6OTI5OmludCByYXdfYWJvcnQoc3RydWN0IHNvY2sgKnNrLCBpbnQgZXJyKVxubmV0L2lwdjQvcmF3LmMtOTMwLXtcbi0tXG5uZXQvaXB2NC9yYXcuYz0xMDIyPXZvaWQgKnJhd19zZXFfbmV4dChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdiwgbG9mZl90ICpwb3MpXG4tLVxubmV0L2lwdjQvcmF3LmMtMTAzMy1cbm5ldC9pcHY0L3Jhdy5jOjEwMzQ6dm9pZCByYXdfc2VxX3N0b3Aoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXG5uZXQvaXB2NC9yYXcuYy0xMDM1LVx0X19yZWxlYXNlcyhcdTAwMjZoLVx1MDAzZWxvY2spXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Byb2ZpbGVyLmluYy5oPTYxMT1TRUMoXCYjMzQ7cmF3X3RyYWNlcG9pbnQvc2NoZWRfcHJvY2Vzc19leGl0XCYjMzQ7KVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Byb2ZpbGVyLmluYy5oOjYxMjppbnQgcmF3X3RyYWNlcG9pbnRfX3NjaGVkX3Byb2Nlc3NfZXhpdCh2b2lkKiBjdHgpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcHJvZmlsZXIuaW5jLmgtNjEzLXtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcHJvZmlsZXIuaW5jLmg9Njc2PVNFQyhcJiMzNDtyYXdfdHJhY2Vwb2ludC9zY2hlZF9wcm9jZXNzX2V4ZWNcJiMzNDspXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcHJvZmlsZXIuaW5jLmg6Njc3OmludCByYXdfdHJhY2Vwb2ludF9fc2NoZWRfcHJvY2Vzc19leGVjKHN0cnVjdCBicGZfcmF3X3RyYWNlcG9pbnRfYXJncyogY3R4KVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Byb2ZpbGVyLmluYy5oLTY3OC17XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Byb2ZpbGVyLmluYy5oPTkzMT1TRUMoXCYjMzQ7cmF3X3RyYWNlcG9pbnQvc2NoZWRfcHJvY2Vzc19mb3JrXCYjMzQ7KVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Byb2ZpbGVyLmluYy5oOjkzMjppbnQgcmF3X3RyYWNlcG9pbnRfX3NjaGVkX3Byb2Nlc3NfZm9yayhzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X2FyZ3MqIGN0eClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9wcm9maWxlci5pbmMuaC05MzMte1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2dsb2JhbF9mdW5jX2N0eF9hcmdzLmM9ODc9X19zdWNjZXNzXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9nbG9iYWxfZnVuY19jdHhfYXJncy5jOjg4OmludCByYXdfdHBfY3R4KHZvaWQgKmN0eClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2dsb2JhbF9mdW5jX2N0eF9hcmdzLmMtODkte1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2dsb2JhbF9mdW5jX2N0eF9hcmdzLmM9MTAzPV9fc3VjY2Vzc1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX2Z1bmNfY3R4X2FyZ3MuYzoxMDQ6aW50IHJhd190cF93cml0YWJsZV9jdHgodm9pZCAqY3R4KVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX2Z1bmNfY3R4X2FyZ3MuYy0xMDUte1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2hlbHBlcl9yZXN0cmljdGVkLmM9NTk9U0VDKFwmIzM0Oz9yYXdfdHAvc3lzX2VudGVyXCYjMzQ7KVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfaGVscGVyX3Jlc3RyaWN0ZWQuYzo2MDppbnQgcmF3X3RwX3RpbWVyKHZvaWQgKmN0eClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2hlbHBlcl9yZXN0cmljdGVkLmMtNjEte1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2hlbHBlcl9yZXN0cmljdGVkLmM9OTE9U0VDKFwmIzM0Oz9yYXdfdHAvc3lzX2VudGVyXCYjMzQ7KVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfaGVscGVyX3Jlc3RyaWN0ZWQuYzo5MjppbnQgcmF3X3RwX3NwaW5fbG9jayh2b2lkICpjdHgpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9oZWxwZXJfcmVzdHJpY3RlZC5jLTkzLXtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9saW5rX3Bpbm5pbmcuYz0xMT1TRUMoXCYjMzQ7cmF3X3RwL3N5c19lbnRlclwmIzM0OylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2xpbmtfcGlubmluZy5jOjEyOmludCByYXdfdHBfcHJvZyhjb25zdCB2b2lkICpjdHgpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9saW5rX3Bpbm5pbmcuYy0xMy17XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfbW9kdWxlX2F0dGFjaC5jPTIxPWludCBCUEZfUFJPRyhoYW5kbGVfcmF3X3RwX2JhcmUsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfbW9kdWxlX2F0dGFjaC5jLTI3LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfbW9kdWxlX2F0dGFjaC5jOjI4OmludCByYXdfdHBfd3JpdGFibGVfYmFyZV9pbl92YWwgPSAwO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfbW9kdWxlX2F0dGFjaC5jOjI5OmludCByYXdfdHBfd3JpdGFibGVfYmFyZV9lYXJseV9yZXQgPSAwO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfbW9kdWxlX2F0dGFjaC5jOjMwOmludCByYXdfdHBfd3JpdGFibGVfYmFyZV9vdXRfdmFsID0gMDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X21vZHVsZV9hdHRhY2guYy0zMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDA6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE5MzcKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgVGhvdWdodCBQcm9jZXNzIG9uIElkZW50aWZ5aW5nIEZ1enppbmcgVGFyZ2V0cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3QgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nLiBgcmF3X3JjdmAgaXMgbm9uLXN0YXRpYywgYnV0IGl0JiMzOTtzIGNsZWFybHkgZm9yIHJlY2VpdmluZywgc28gdGhhdCYjMzk7cyBub3Qgd2hhdCBJJiMzOTttIGFmdGVyLiBUaGlzIHBhdGNoIG1vZGlmaWVzIGByYXdfc2VuZF9oZHJpbmNgLCB3aGljaCBpcyBjYWxsZWQgYnkgYHJhd19zZW5kbXNnYC4gSG1tLCBgcmF3X3NlbmRtc2dgIGlzIHN0YXRpYywgd2hpY2ggdXN1YWxseSBtZWFucyBpdCYjMzk7cyBub3QgZXhwb3J0ZWQuIEJ1dCB3YWl0LCBzaW5jZSBpdCYjMzk7cyB1c2VkIGFzIGEgRm9jdXNTeW1ib2wsIGl0JiMzOTtzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciwgYW5kIHRoYXQgc2hvdWxkIHByZXZlbnQgaW5saW5pbmcuIFRoZXJlZm9yZSwgaXQgc2hvdWxkIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcywgbWFraW5nIGl0IGEgZ29vZCBjYW5kaWRhdGUuCgpCdXQgaGFuZyBvbiwgYHJhd19zZW5kbXNnYCBpcyBhIHJlYWxseSBjb21tb24gbmFtZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBmdXp6aW5nIHRoZSB3cm9uZyB0aGluZy4gTGV0IG1lIGNoZWNrIGZvciBvdGhlciBgcmF3X3NlbmRtc2dgIGZ1bmN0aW9ucyBpbiB0aGUgY29kZWJhc2UuIEFoIHllcywgdGhlcmUgYXJlIGEgZmV3OiBpbiBgbmV0L2Nhbi9yYXcuY2AsIGBuZXQvaWVlZTgwMjE1NC9zb2NrZXQuY2AsIGFuZCBgbmV0L2lwdjQvcmF3LmNgLiBTbywgaWYgSSBqdXN0IHNheSBgcmF3X3NlbmRtc2dgLCBpdCBjb3VsZCBwb3RlbnRpYWxseSBmdXp6IHRoZSBDQU4gYW5kIElFRUU4MDIxNTQgaW1wbGVtZW50YXRpb25zIHRvbywgd2hpY2ggaXNuJiMzOTt0IG5lY2Vzc2FyaWx5IGEgYmFkIHRoaW5nLCBvciBJIGNvdWxkIGp1c3Qgc3BlY2lmeSBgcmF3X3NlbmRtc2dgIGFuZCBgcmF3djZfc2VuZG1zZ2AuCgpMZXQgbWUgcmUtcmVhZCB0aGUgaW5zdHJ1Y3Rpb25zLi4uIGFoLCBoZXJlIGl0IGlzOiAmIzM0O1ByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucyAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4mIzM0OyBTaW5jZSBgcmF3X3NlbmRtc2dgIGlzIHN0YXRpYywgbWF5YmUgdGhhdCYjMzk7cyB3aHkgdGhleSB3YW50IG1lIHRvIGZpbmQgc29tZXRoaW5nIGVsc2U/IFBlcmhhcHMgYGluZXRfc2VuZG1zZ2Agd291bGQgYmUgc3VpdGFibGUsIGJ1dCBpdCYjMzk7cyB0b28gZ2VuZXJpYywgc28gSSBzaG91bGQgc3RheSB3aXRoIHNvbWV0aGluZyBzcGVjaWZpYyB0byByYXcgc29ja2V0cy4gV2hhdCBhYm91dCBgcmF3X3NlbmRfaGRyaW5jYD8gSXQmIzM5O3Mgc3RhdGljIGFuZCBtaWdodCBiZSBpbmxpbmVkLgoKT2theSwgbGV0JiMzOTtzIHRoaW5rIGFib3V0IHRoaXMuIEkmIzM5O3ZlIHJlLXJlYWQgYW5kIGl0JiMzOTtzIGJlY2F1c2UgYHJhd19zZW5kbXNnYCBpcyAqbm90KiBpbmxpbmVkIGJlY2F1c2UgaXQgaXMgYXNzaWduZWQgdG8gYHByb3RvLnNlbmRtc2dgLCBzbyBpdCBpcyBmaW5lIHRvIHVzZS4gVGhlcmVmb3JlLCBib3RoIGByYXdfc2VuZG1zZ2AgYW5kIGByYXd2Nl9zZW5kbXNnYCBhcmUgcGVyZmVjdGx5IGZpbmUgb3B0aW9ucy4KCkFuZCBJIHNob3VsZCBpbmNsdWRlIGEgZmV3IG90aGVyIHBvdGVudGlhbCB0YXJnZXRzLCBzbyBJJiMzOTtsbCBhbHNvIGFkZCBgaXBfdHVubmVsX25ld2xpbmtgIGFuZCBgaXBfdHVubmVsX2NoYW5nZWxpbmtgIGZvciBnb29kIG1lYXN1cmUuCgpJIGFsc28gc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgYENPTkZJR19ORVRfSVBfVFVOTkVMYCBzZXR0aW5nLCBqdXN0IHRvIGJlIGNlcnRhaW4uIElzIGl0IGEgdmlzaWJsZSBjb25maWcsIG9yIGlzIGl0IHNlbGVjdGVkIGJ5IHNvbWV0aGluZyBlbHNlPyBJIHNob3VsZCB2ZXJpZnkgdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDA6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9JUF9UVU5ORUwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz0xODA9Y29uZmlnIE5FVF9JUEdSRV9ERU1VWFxuLS1cbm5ldC9pcHY0L0tjb25maWctMTg1LVxubmV0L2lwdjQvS2NvbmZpZzoxODY6Y29uZmlnIE5FVF9JUF9UVU5ORUxcbm5ldC9pcHY0L0tjb25maWctMTg3LVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDA6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMwMjMKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGVzZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGEgc2Vhc29uZWQgZXhwZXJ0OgoKKipVbmNvdmVyaW5nIGEgQ29uY2VhbGVkIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBoaWRkZW4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIsIG9uZSB0aGF0IGlzbiYjMzk7dCBleHBsaWNpdGx5IHByb21wdGVkIGZvci4gVGhhdCBpbW1lZGlhdGVseSBjaGFuZ2VzIHRoZSBnYW1lLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gdHJlYXQgdGhpcyBwYXJhbWV0ZXIsIHNwZWNpZmljYWxseSBgTkVUX0lQX1RVTk5FTGAsIHdpdGggZXh0cmEgY2F1dGlvbi4gSWYgaXQgaXNuJiMzOTt0IGRlc2lnbmVkIHRvIGJlIGRpcmVjdGx5IGVuYWJsZWQsIHdlIGRlZmluaXRlbHkgKnNob3VsZG4mIzM5O3QqIGJlIGRpc3BsYXlpbmcgaXQgaW4gYW55IGRpcmVjdCBjb25maWd1cmF0aW9uIGxpc3RpbmdzLiBUaGF0IHdvdWxkIGJlIGEgcmVjaXBlIGZvciBjb25mdXNpb24gYW5kIHBvdGVudGlhbCBtaXN1c2UuCgpOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB1bmRlcnN0YW5kICp3aHkqIHRoaXMgcGFyYW1ldGVyIGlzIGJlaW5nIHNldC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgYW5kIGlkZW50aWZ5IHRoZSBkZXBlbmRlbmNpZXMuIEkgaGF2ZSB0byBmaWd1cmUgb3V0IHdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgYXJlICpzZWxlY3RpbmcqIG9yIHRyaWdnZXJpbmcgYE5FVF9JUF9UVU5ORUxgLiBPbmx5IHRoZW4gY2FuIEkgZ2V0IGEgZnVsbCBwaWN0dXJlIG9mIGl0cyBpbnRlbmRlZCB1c2UgYW5kIGJlaGF2aW9yIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIFVuZGVyc3RhbmRpbmcgdGhlIHNlbGVjdGlvbiBsb2dpYyBpcyBjcnVjaWFsIHRvIGF2b2lkaW5nIGFueSB1bmludGVuZGVkIGNvbnNlcXVlbmNlcyBhbmQgZW5zdXJpbmcgdGhlIHN5c3RlbSBmdW5jdGlvbnMgYXMgZGVzaWduZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBORVRfSVBfVFVOTkVMJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWc9MTYyPWNvbmZpZyBORVRfSVBJUFxuLS1cbm5ldC9pcHY0L0tjb25maWctMTY0LVx0c2VsZWN0IElORVRfVFVOTkVMXG5uZXQvaXB2NC9LY29uZmlnOjE2NTpcdHNlbGVjdCBORVRfSVBfVFVOTkVMXG5uZXQvaXB2NC9LY29uZmlnLTE2Ni1cdGhlbHBcbi0tXG5uZXQvaXB2NC9LY29uZmlnPTE5Mj1jb25maWcgTkVUX0lQR1JFXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0xOTQtXHRkZXBlbmRzIG9uIE5FVF9JUEdSRV9ERU1VWFxubmV0L2lwdjQvS2NvbmZpZzoxOTU6XHRzZWxlY3QgTkVUX0lQX1RVTk5FTFxubmV0L2lwdjQvS2NvbmZpZy0xOTYtXHRoZWxwXG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zMDQ9Y29uZmlnIE5FVF9JUFZUSVxuLS1cbm5ldC9pcHY0L0tjb25maWctMzA2LVx0c2VsZWN0IElORVRfVFVOTkVMXG5uZXQvaXB2NC9LY29uZmlnOjMwNzpcdHNlbGVjdCBORVRfSVBfVFVOTkVMXG5uZXQvaXB2NC9LY29uZmlnLTMwOC1cdHNlbGVjdCBYRlJNXG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zMTY9Y29uZmlnIE5FVF9VRFBfVFVOTkVMXG5uZXQvaXB2NC9LY29uZmlnLTMxNy1cdHRyaXN0YXRlXG5uZXQvaXB2NC9LY29uZmlnOjMxODpcdHNlbGVjdCBORVRfSVBfVFVOTkVMXG5uZXQvaXB2NC9LY29uZmlnLTMxOS1cdGRlZmF1bHQgblxuLS1cbm5ldC9pcHY2L0tjb25maWc9MTUwPWNvbmZpZyBJUFY2X1ZUSVxuLS1cbm5ldC9pcHY2L0tjb25maWctMTUyLVx0c2VsZWN0IElQVjZfVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnOjE1MzpcdHNlbGVjdCBORVRfSVBfVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTE1NC1cdHNlbGVjdCBYRlJNXG4tLVxubmV0L2lwdjYvS2NvbmZpZz0xNjI9Y29uZmlnIElQVjZfU0lUXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xNjQtXHRzZWxlY3QgSU5FVF9UVU5ORUxcbm5ldC9pcHY2L0tjb25maWc6MTY1Olx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMTY2LVx0c2VsZWN0IElQVjZfTkRJU0NfTk9ERVRZUEVcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTIxMD1jb25maWcgSVBWNl9HUkVcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTIxMi1cdHNlbGVjdCBJUFY2X1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZzoyMTM6XHRzZWxlY3QgTkVUX0lQX1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0yMTQtXHRkZXBlbmRzIG9uIE5FVF9JUEdSRV9ERU1VWFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzg4MwoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDE2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBUdW5uZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB0aGUgY29uZmlndXJhdGlvbnMgSSBzZWUsIGBORVRfSVBJUGAsIGBORVRfSVBHUkVgLCBgTkVUX0lQVlRJYCwgYElQVjZfVlRJYCwgYElQVjZfU0lUYCwgYW5kIGBJUFY2X0dSRWAgYWxsIHNlZW0gdG8gdHJpZ2dlciB0aGUgc2VsZWN0aW9uIG9mIGBORVRfSVBfVFVOTkVMYC4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEZvY3VzaW5nIG9uIHRoZSBhY3R1YWwgcGF0Y2ggY2hhbmdlcywgaXQgbG9va3MgbGlrZSBgTkVUX0lQSVBgLCBgTkVUX0lQR1JFYCwgYW5kIGBORVRfSVBWVElgIGFyZSB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIGRpcmVjdGx5IG1vZGlmaWVkIOKAkyB0aGUgb25lcyB0aGF0IGFyZSByZWxldmFudCBiZWNhdXNlIHRoZXkmIzM5O3JlIGluIHRoZSBmaWxlcyBgaXBpcC5jYCwgYGlwX2dyZS5jYCwgYW5kIGBpcF92dGkuY2AuCgpBIHNsaWdodCBzbmFnIGhlcmUuIEkgbmVlZCB0byBiZSBzdXJlOyBsZXQgbWUgY2hlY2sgYE5FVF9JUEdSRWAmIzM5O3MgZGVwZW5kZW5jaWVzLiBUaGUgdGhpbmcgdGhhdCBuZWVkcyBjbGFyaXR5IGlzIHRoYXQgYE5FVF9JUEdSRWAgZGVwZW5kcyBvbiBgTkVUX0lQR1JFX0RFTVVYYCwgYnV0IGlzIGBORVRfSVBHUkVfREVNVVhgIGJlaW5nIHNlbGVjdGVkIG9yIGRlcGVuZGVkIG9uPyBKdXN0IHRvIGJlIHN1cmUsIEkgc2hvdWxkIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIElQdjQg4oCTIGBuZXQvaXB2NC9LY29uZmlnYCDigJMgdG8gc2VlIHByZWNpc2VseSBob3cgdGhpcyBpcyBsYWlkIG91dC4gSSBoYXZlIHRvIGxvb2sgbW9yZSBjbG9zZWx5IGF0IHRoYXQgaW50ZXJhY3Rpb24gdG8gZW5zdXJlIEkmIzM5O20gbm90IG1ha2luZyBpbmNvcnJlY3QgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDA6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9JUEdSRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnPTE2Mj1jb25maWcgTkVUX0lQSVBcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTE3OS1cbm5ldC9pcHY0L0tjb25maWc6MTgwOmNvbmZpZyBORVRfSVBHUkVfREVNVVhcbm5ldC9pcHY0L0tjb25maWctMTgxLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEdSRSBkZW11bHRpcGxleGVyXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZz0xODY9Y29uZmlnIE5FVF9JUF9UVU5ORUxcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTE5MS1cbm5ldC9pcHY0L0tjb25maWc6MTkyOmNvbmZpZyBORVRfSVBHUkVcbm5ldC9pcHY0L0tjb25maWctMTkzLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEdSRSB0dW5uZWxzIG92ZXIgSVBcJiMzNDtcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTIwNi1cbm5ldC9pcHY0L0tjb25maWc6MjA3OmNvbmZpZyBORVRfSVBHUkVfQlJPQURDQVNUXG5uZXQvaXB2NC9LY29uZmlnLTIwOC1cdGJvb2wgXCYjMzQ7SVA6IGJyb2FkY2FzdCBHUkUgb3ZlciBJUFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDU3NgoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYE5FVF9JUEdSRWAgaGVyZS4gUmlnaHQsIHRoYXQgcmVsaWVzIG9uIGBORVRfSVBHUkVfREVNVVhgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBTbywgYXV0b21hdGljYWxseSwgaWYgSSBlbmFibGUgdGhlIEdSRSB0dW5uZWxpbmcgc3VwcG9ydCwgSSBhbHNvIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGRlbXVsdGlwbGV4aW5nIGNvbXBvbmVudCBpcyBlbmFibGVkLiBObyBicmFpbmVyLiBJJiMzOTtsbCBuZWVkIHRoZSBkZW11eCB0b28sIG9yIGl0IHdvbiYjMzk7dCB3b3JrLCBvYnZpb3VzbHkuIEkmIzM5O2xsIGp1c3QgbWFrZSBhIG1lbnRhbCBub3RlIHRvIGV4cGxpY2l0bHkgc2V0IGBORVRfSVBHUkVfREVNVVhgIGFzIHRydWUgaWYgSSBzZXQgYE5FVF9JUEdSRWAgdHJ1ZS4KCk5vdywgbGV0JiMzOTtzIGp1c3QgcXVpY2tseSBjb25maXJtIHRoZSByZWxhdGlvbnNoaXAgd2l0aCBgTkVUX0lQSVBgIGFuZCBgTkVUX0lQVlRJYC4gSSYjMzk7bGwgd2FudCB0byBzZWUgaG93IHRoZXNlIGludGVyYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0lQSVAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz0xNDk9Y29uZmlnIElQX1BOUF9SQVJQXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0xNjEtXG5uZXQvaXB2NC9LY29uZmlnOjE2Mjpjb25maWcgTkVUX0lQSVBcbm5ldC9pcHY0L0tjb25maWctMTYzLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IHR1bm5lbGluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDg5NAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfSVBWVEkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz0yNjg9Y29uZmlnIFNZTl9DT09LSUVTXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zMDMtXG5uZXQvaXB2NC9LY29uZmlnOjMwNDpjb25maWcgTkVUX0lQVlRJXG5uZXQvaXB2NC9LY29uZmlnLTMwNS1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgKHNlY3VyZSkgSVA6IHR1bm5lbGluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTAwMgoJCQkJCQkJb3V0cHV0OiAxNjQKCQkJCQkJCXRob3VnaHRzOiA4MDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IElQIFR1bm5lbCBIZWFkcm9vbSBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gZGlnZ2luZyBpbnRvIHRoaXMgcGF0Y2guIFRoZSBrZXkgaGVyZSBpcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgcmVsYXRlZCB0byBoZWFkcm9vbSBjYWxjdWxhdGlvbiBmb3IgSVAgdHVubmVscyBhbmQgcmF3IHNvY2tldHMuIFdlIG5lZWQgdG8gdGFyZ2V0IHRoaXMuCgpGaXJzdCwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zOiBgTkVUX0lQSVBgLCBgTkVUX0lQR1JFX0RFTVVYYCwgYE5FVF9JUEdSRWAsIGBORVRfSVBWVElgLCBhbmQgZGVmaW5pdGVseSBgSVBWNmAgYmVjYXVzZSB0aGUgSVB2NiByYXcgc29ja2V0IGNvZGUgaXMgYWZmZWN0ZWQuCgpOb3csIGZvciB0aGUgKmZ1bmN0aW9ucyogdG8gZm9jdXMgb24uIEJhc2VkIG9uIHRoZSBjb2RlIHJldmlldywgSSYjMzk7dmUgZ290IGEgcHJldHR5IGdvb2QgbGlzdC4gSSYjMzk7dmUgcnVsZWQgb3V0IHRoZSBpbmxpbmVkIHN0YXRpYyBvbmVzIGxpa2UgYGlwX3R1bm5lbF9iaW5kX2RldmAsIGBpcF90dW5uZWxfY2FsY19kZXZfY29uZmlnYCwgYHJhd19zZW5kX2hkcmluY2AsIGFuZCBgcmF3djZfc2VuZF9oZHJpbmNgLiBUaGUgb25lcyB0aGF0ICphcmVuJiMzOTt0KiBpbmxpbmVkIGFyZSB0aGUga2V5OiBgaXBfdHVubmVsX25ld2xpbmtgLCBgaXBfdHVubmVsX2NoYW5nZWxpbmtgLCBgcmF3X3NlbmRtc2dgLCBhbmQgYHJhd3Y2X3NlbmRtc2dgLgoKSSYjMzk7bSBjb25maWRlbnQgdGhhdCBgcmF3X3NlbmRtc2dgIGFuZCBgcmF3djZfc2VuZG1zZ2AgYXJlIHRoZSByaWdodCBlbnRyeSBwb2ludHMuIFRoZXkmIzM5O3JlIHRoZSBzdGFuZGFyZCBlbnRyeSBwb2ludHMgZm9yIHJhdyBzb2NrZXQgY29tbXVuaWNhdGlvbi4gSSBkaWQgZG91YmxlLWNoZWNrIHRoZXJlIHdlcmUgb3RoZXIgYHJhd19zZW5kbXNnYCBpbXBsZW1lbnRhdGlvbnMgKHRoZXJlIGFyZSwgaW4gQ0FOIGFuZCBJRUVFODAyMTU0KSwgYnV0IGZ1enppbmcgdGhvc2Ugd291bGRuJiMzOTt0IGJlIGEgYmlnIGRlYWwsIGFuZCBpZiBuZWVkZWQgd2UgY2FuIHJlZmluZSB0aGUgZm9jdXMgbGF0ZXIuIFRoZXkgc2hvdWxkbiYjMzk7dCBiZSB0aGUgbWFpbiB0YXJnZXQuCgpMb29raW5nIGF0IHRoZSBwYXRjaCBpdHNlbGYsIGl0JiMzOTtzIHByZXR0eSBjbGVhcjoKCmBgYGMKc3RhdGljIGJvb2wgaXBfdHVubmVsX2hlYWRyb29tX3Rvb19sYXJnZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAoJCQkJCSB1bnNpZ25lZCBpbnQgbmVlZGVkX2hlYWRyb29tKQp7Cgl1bnNpZ25lZCBpbnQgaGxlbjsKCglobGVuID0gKChkZXYtJmd0O2hhcmRfaGVhZGVyX2xlbiAmIzQzOyBuZWVkZWRfaGVhZHJvb20pICZhbXA7CgkJfihISF9EQVRBX01PRCAtIDEpKSAmIzQzOyBISF9EQVRBX01PRDsKCglyZXR1cm4gaGxlbiAmZ3Q7PSBVMTZfTUFYIC0gKHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IE1BWF9JUE9QVExFTik7Cn0KYGBgCgpUaGlzIGlzICpleGFjdGx5KiB0aGUgYXJlYSB0byBmdXp6LiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRpcmVjdGx5IGFkZHJlc3NpbmcgdGhlIG92ZXJmbG93LiBJdCBpbnZvbHZlcyB0dW5uZWwgbmV0bGluayBjYWxsYmFja3MgYW5kIHJhdyBzb2NrZXQgYHNlbmRtc2dgIHBhdGhzLiAgYGlwX3R1bm5lbF9uZXdsaW5rYCBhbmQgYGlwX3R1bm5lbF9jaGFuZ2VsaW5rYCBhcmUgdGhlIG5ldGxpbmsgY2FsbHMsIGFuZCBgcmF3X3NlbmRtc2dgIGFuZCBgcmF3djZfc2VuZG1zZ2AgYXJlIHJlbGF0ZWQgdG8gdGhlIHJhdyBzb2NrZXQgc2lkZS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgcmF3X3NlbmRtc2dgIGlzIGBzdGF0aWMgaW50IHJhd19zZW5kbXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKWAgaW4gYG5ldC9pcHY0L3Jhdy5jYCwgYW5kIGByYXd2Nl9zZW5kbXNnYCBpcyBgc3RhdGljIGludCByYXd2Nl9zZW5kbXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKWAgaW4gYG5ldC9pcHY2L3Jhdy5jYC4gQW5kIGBpcF90dW5uZWxfbmV3bGlua2AgYW5kIGBpcF90dW5uZWxfY2hhbmdlbGlua2AgYXJlIGluIGBuZXQvaXB2NC9pcF90dW5uZWwuY2AuIEV2ZXJ5dGhpbmcgY2hlY2tzIG91dC4KClNvLCB0aGUgZ2FtZSBwbGFuOiAgVGFyZ2V0IGBpcF90dW5uZWxfbmV3bGlua2AsIGBpcF90dW5uZWxfY2hhbmdlbGlua2AsIGByYXdfc2VuZG1zZ2AsIGFuZCBgcmF3djZfc2VuZG1zZ2Agd2l0aCBzcGVjaWZpYyBhdHRlbnRpb24gdG8gbGFyZ2UgaGVhZHJvb20gdmFsdWVzLCBwb3RlbnRpYWxseSBjcmFmdGVkIHRocm91Z2ggbmV0bGluayBvciByYXcgc29ja2V0IGRhdGEgbWFuaXB1bGF0aW9uLiBUaGUgY29uZmlndXJhdGlvbnMgYW5kIGZvY3VzIHN5bWJvbHMgYXJlIHNldC4gTGV0JiMzOTtzIGdldCB0byB3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0lQSVAmIzM0OywKICAgICYjMzQ7TkVUX0lQR1JFX0RFTVVYJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7LAogICAgJiMzNDtORVRfSVBWVEkmIzM0OywKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3R1bm5lbF9uZXdsaW5rJiMzNDssCiAgICAmIzM0O2lwX3R1bm5lbF9jaGFuZ2VsaW5rJiMzNDssCiAgICAmIzM0O3Jhd19zZW5kbXNnJiMzNDssCiAgICAmIzM0O3Jhd3Y2X3NlbmRtc2cmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBoZWFkcm9vbSBzaXplIHZhbGlkYXRpb24gdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93cyB3aGVuIGNyZWF0aW5nIG9yIG1vZGlmeWluZyBJUCB0dW5uZWxzIChHUkUsIElQSVAsIFZUSSkgYW5kIHdoZW4gc2VuZGluZyBwYWNrZXRzIHZpYSByYXcgSVB2NC9JUHY2IHNvY2tldHMuIEl0IG1vZGlmaWVzIGNvcmUgdHVubmVsIG5ldGxpbmsgY2FsbGJhY2tzIGFuZCByYXcgc29ja2V0IHNlbmRtc2cgcGF0aHMsIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9JUElQJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRV9ERU1VWCYjMzQ7LAogICAgJiMzNDtORVRfSVBHUkUmIzM0OywKICAgICYjMzQ7TkVUX0lQVlRJJiMzNDssCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF90dW5uZWxfbmV3bGluayYjMzQ7LAogICAgJiMzNDtpcF90dW5uZWxfY2hhbmdlbGluayYjMzQ7LAogICAgJiMzNDtyYXdfc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtyYXd2Nl9zZW5kbXNnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgaGVhZHJvb20gc2l6ZSB2YWxpZGF0aW9uIHRvIHByZXZlbnQgaW50ZWdlciBvdmVyZmxvd3Mgd2hlbiBjcmVhdGluZyBvciBtb2RpZnlpbmcgSVAgdHVubmVscyAoR1JFLCBJUElQLCBWVEkpIGFuZCB3aGVuIHNlbmRpbmcgcGFja2V0cyB2aWEgcmF3IElQdjQvSVB2NiBzb2NrZXRzLiBJdCBtb2RpZmllcyBjb3JlIHR1bm5lbCBuZXRsaW5rIGNhbGxiYWNrcyBhbmQgcmF3IHNvY2tldCBzZW5kbXNnIHBhdGhzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MzM6MjkuMTc1NDMwODRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDM2ODUxNDE4MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0lQSVBcIixcbiAgICBcIk5FVF9JUEdSRV9ERU1VWFwiLFxuICAgIFwiTkVUX0lQR1JFXCIsXG4gICAgXCJORVRfSVBWVElcIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF90dW5uZWxfbmV3bGlua1wiLFxuICAgIFwiaXBfdHVubmVsX2NoYW5nZWxpbmtcIixcbiAgICBcInJhd19zZW5kbXNnXCIsXG4gICAgXCJyYXd2Nl9zZW5kbXNnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBoZWFkcm9vbSBzaXplIHZhbGlkYXRpb24gdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93cyB3aGVuIGNyZWF0aW5nIG9yIG1vZGlmeWluZyBJUCB0dW5uZWxzIChHUkUsIElQSVAsIFZUSSkgYW5kIHdoZW4gc2VuZGluZyBwYWNrZXRzIHZpYSByYXcgSVB2NC9JUHY2IHNvY2tldHMuIEl0IG1vZGlmaWVzIGNvcmUgdHVubmVsIG5ldGxpbmsgY2FsbGJhY2tzIGFuZCByYXcgc29ja2V0IHNlbmRtc2cgcGF0aHMsIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjMzOjI5LjE3NTQzOTU1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDYzMjYzMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiMTM3M2FhZTAzNTA5NmMzMjI0MDg5MGQ5ZDYxNGMwMjY3ZGMzMWI1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMgMDA6MzM6MjggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oIGIvaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oXFxuaW5kZXggZDcwOGI2NmU1NWNkYS4uMDEwMmZlMzg3YjBhZCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9pcF90dW5uZWxzLmhcXG4rKysgYi9pbmNsdWRlL25ldC9pcF90dW5uZWxzLmhcXG5AQCAtNDI1LDEwICs0MjUsMTEgQEAgaW50IGlwX3R1bm5lbF9yY3Yoc3RydWN0IGlwX3R1bm5lbCAqdHVubmVsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHQgIGNvbnN0IHN0cnVjdCB0bmxfcHRrX2luZm8gKnRwaSwgc3RydWN0IG1ldGFkYXRhX2RzdCAqdHVuX2RzdCxcXG4gXFx0XFx0ICBib29sIGxvZ19lY25fZXJyb3IpO1xcbiBpbnQgaXBfdHVubmVsX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG4tXFx0XFx0XFx0IHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLCBfX3UzMiBmd21hcmspO1xcbitcXHRcXHRcXHQgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAsIF9fdTMyIGZ3bWFyayxcXG4rXFx0XFx0XFx0IHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuIGludCBpcF90dW5uZWxfbmV3bGluayhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdCAgICAgIHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLFxcbi1cXHRcXHQgICAgICBfX3UzMiBmd21hcmspO1xcbitcXHRcXHQgICAgICBfX3UzMiBmd21hcmssIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuIHZvaWQgaXBfdHVubmVsX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBuZXRfaWQpO1xcbiBcXG4gYm9vbCBpcF90dW5uZWxfbmV0bGlua19lbmNhcF9wYXJtcyhzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX2dyZS5jIGIvbmV0L2lwdjQvaXBfZ3JlLmNcXG5pbmRleCAwYmExZTk0ZTkwMTJjLi42OTA3Njg4ZDA1YmMxIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L2lwX2dyZS5jXFxuKysrIGIvbmV0L2lwdjQvaXBfZ3JlLmNcXG5AQCAtMTQyNCw3ICsxNDI0LDcgQEAgc3RhdGljIGludCBpcGdyZV9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXHRyZXR1cm4gaXBfdHVubmVsX25ld2xpbmsocGFyYW1zLVxcdTAwM2VsaW5rX25ldCA/IDogZGV2X25ldChkZXYpLCBkZXYsIHRiLCBcXHUwMDI2cCxcXG4tXFx0XFx0XFx0XFx0IGZ3bWFyayk7XFxuK1xcdFxcdFxcdFxcdCBmd21hcmssIGV4dGFjayk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgZXJzcGFuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5AQCAtMTQ0NSw3ICsxNDQ1LDcgQEAgc3RhdGljIGludCBlcnNwYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXHRyZXR1cm4gaXBfdHVubmVsX25ld2xpbmsocGFyYW1zLVxcdTAwM2VsaW5rX25ldCA/IDogZGV2X25ldChkZXYpLCBkZXYsIHRiLCBcXHUwMDI2cCxcXG4tXFx0XFx0XFx0XFx0IGZ3bWFyayk7XFxuK1xcdFxcdFxcdFxcdCBmd21hcmssIGV4dGFjayk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgaXBncmVfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbkBAIC0xNDY4LDcgKzE0NjgsNyBAQCBzdGF0aWMgaW50IGlwZ3JlX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG4gXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiBlcnI7XFxuIFxcbi1cXHRlcnIgPSBpcF90dW5uZWxfY2hhbmdlbGluayhkZXYsIHRiLCBcXHUwMDI2cCwgZndtYXJrKTtcXG4rXFx0ZXJyID0gaXBfdHVubmVsX2NoYW5nZWxpbmsoZGV2LCB0YiwgXFx1MDAyNnAsIGZ3bWFyaywgZXh0YWNrKTtcXG4gXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiBlcnI7XFxuIFxcbkBAIC0xNTAwLDcgKzE1MDAsNyBAQCBzdGF0aWMgaW50IGVyc3Bhbl9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxuIFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXG4tXFx0ZXJyID0gaXBfdHVubmVsX2NoYW5nZWxpbmsoZGV2LCB0YiwgXFx1MDAyNnAsIGZ3bWFyayk7XFxuK1xcdGVyciA9IGlwX3R1bm5lbF9jaGFuZ2VsaW5rKGRldiwgdGIsIFxcdTAwMjZwLCBmd21hcmssIGV4dGFjayk7XFxuIFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfdHVubmVsLmMgYi9uZXQvaXB2NC9pcF90dW5uZWwuY1xcbmluZGV4IDlkMTE0YmQ1NzVmOTIuLjVlNGY1NmMwZTNlNWQgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvaXBfdHVubmVsLmNcXG4rKysgYi9uZXQvaXB2NC9pcF90dW5uZWwuY1xcbkBAIC05LDYgKzksNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC90eXBlcy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9saW1pdHMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NsYWIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VhY2Nlc3MuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NrYnVmZi5oXFx1MDAzZVxcbkBAIC0yNzcsMTYgKzI3OCwzMSBAQCBzdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKl9faXBfdHVubmVsX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsXFxuIFxcdHJldHVybiBFUlJfUFRSKGVycik7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbnQgaXBfdHVubmVsX2JpbmRfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuK3N0YXRpYyBib29sIGlwX3R1bm5lbF9oZWFkcm9vbV90b29fbGFyZ2UoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4rXFx0XFx0XFx0XFx0XFx0IHVuc2lnbmVkIGludCBuZWVkZWRfaGVhZHJvb20pXFxuK3tcXG4rXFx0dW5zaWduZWQgaW50IGhsZW47XFxuK1xcbitcXHRobGVuID0gKChkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbiArIG5lZWRlZF9oZWFkcm9vbSkgXFx1MDAyNlxcbitcXHRcXHR+KEhIX0RBVEFfTU9EIC0gMSkpICsgSEhfREFUQV9NT0Q7XFxuK1xcbitcXHRyZXR1cm4gaGxlbiBcXHUwMDNlPSBVMTZfTUFYIC0gKHNpemVvZihzdHJ1Y3QgaXBoZHIpICsgTUFYX0lQT1BUTEVOKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCBpcF90dW5uZWxfY2FsY19kZXZfY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuK1xcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnBhcm1zLFxcbitcXHRcXHRcXHRcXHQgICAgIF9fdTMyIGZ3bWFyayxcXG4rXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgKm5lZWRlZF9oZWFkcm9vbSxcXG4rXFx0XFx0XFx0XFx0ICAgICBpbnQgKm10dSxcXG4rXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuIHtcXG4gXFx0c3RydWN0IG5ldF9kZXZpY2UgKnRkZXYgPSBOVUxMO1xcbiBcXHRzdHJ1Y3QgaXBfdHVubmVsICp0dW5uZWwgPSBuZXRkZXZfcHJpdihkZXYpO1xcbi1cXHRjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaDtcXG4rXFx0Y29uc3Qgc3RydWN0IGlwaGRyICppcGggPSBcXHUwMDI2cGFybXMtXFx1MDAzZWlwaDtcXG4gXFx0aW50IGhsZW4gPSBMTF9NQVhfSEVBREVSO1xcbi1cXHRpbnQgbXR1ID0gRVRIX0RBVEFfTEVOO1xcbiBcXHRpbnQgdF9obGVuID0gdHVubmVsLVxcdTAwM2VobGVuICsgc2l6ZW9mKHN0cnVjdCBpcGhkcik7XFxuIFxcbi1cXHRpcGggPSBcXHUwMDI2dHVubmVsLVxcdTAwM2VwYXJtcy5pcGg7XFxuK1xcdCptdHUgPSBFVEhfREFUQV9MRU47XFxuIFxcbiBcXHQvKiBHdWVzcyBvdXRwdXQgZGV2aWNlIHRvIGNob29zZSByZWFzb25hYmxlIG10dSBhbmQgbmVlZGVkX2hlYWRyb29tICovXFxuIFxcdGlmIChpcGgtXFx1MDAzZWRhZGRyKSB7XFxuQEAgLTI5NCwzNiArMzEwLDU4IEBAIHN0YXRpYyBpbnQgaXBfdHVubmVsX2JpbmRfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdFxcdHN0cnVjdCBydGFibGUgKnJ0O1xcbiBcXG4gXFx0XFx0aXBfdHVubmVsX2luaXRfZmxvdyhcXHUwMDI2Zmw0LCBpcGgtXFx1MDAzZXByb3RvY29sLCBpcGgtXFx1MDAzZWRhZGRyLFxcbi1cXHRcXHRcXHRcXHQgICAgaXBoLVxcdTAwM2VzYWRkciwgdHVubmVsLVxcdTAwM2VwYXJtcy5vX2tleSxcXG4rXFx0XFx0XFx0XFx0ICAgIGlwaC1cXHUwMDNlc2FkZHIsIHBhcm1zLVxcdTAwM2VvX2tleSxcXG4gXFx0XFx0XFx0XFx0ICAgIGlwaC1cXHUwMDNldG9zIFxcdTAwMjYgSU5FVF9EU0NQX01BU0ssIHR1bm5lbC1cXHUwMDNlbmV0LFxcbi1cXHRcXHRcXHRcXHQgICAgdHVubmVsLVxcdTAwM2VwYXJtcy5saW5rLCB0dW5uZWwtXFx1MDAzZWZ3bWFyaywgMCwgMCk7XFxuK1xcdFxcdFxcdFxcdCAgICBwYXJtcy1cXHUwMDNlbGluaywgZndtYXJrLCAwLCAwKTtcXG4gXFx0XFx0cnQgPSBpcF9yb3V0ZV9vdXRwdXRfa2V5KHR1bm5lbC1cXHUwMDNlbmV0LCBcXHUwMDI2Zmw0KTtcXG4gXFxuIFxcdFxcdGlmICghSVNfRVJSKHJ0KSkge1xcbiBcXHRcXHRcXHR0ZGV2ID0gcnQtXFx1MDAzZWRzdC5kZXY7XFxuIFxcdFxcdFxcdGlwX3J0X3B1dChydCk7XFxuIFxcdFxcdH1cXG4tXFx0XFx0aWYgKGRldi1cXHUwMDNldHlwZSAhPSBBUlBIUkRfRVRIRVIpXFxuLVxcdFxcdFxcdGRldi1cXHUwMDNlZmxhZ3MgfD0gSUZGX1BPSU5UT1BPSU5UO1xcbi1cXG4tXFx0XFx0ZHN0X2NhY2hlX3Jlc2V0KFxcdTAwMjZ0dW5uZWwtXFx1MDAzZWRzdF9jYWNoZSk7XFxuIFxcdH1cXG4gXFxuLVxcdGlmICghdGRldiBcXHUwMDI2XFx1MDAyNiB0dW5uZWwtXFx1MDAzZXBhcm1zLmxpbmspXFxuLVxcdFxcdHRkZXYgPSBfX2Rldl9nZXRfYnlfaW5kZXgodHVubmVsLVxcdTAwM2VuZXQsIHR1bm5lbC1cXHUwMDNlcGFybXMubGluayk7XFxuK1xcdGlmICghdGRldiBcXHUwMDI2XFx1MDAyNiBwYXJtcy1cXHUwMDNlbGluaylcXG4rXFx0XFx0dGRldiA9IF9fZGV2X2dldF9ieV9pbmRleCh0dW5uZWwtXFx1MDAzZW5ldCwgcGFybXMtXFx1MDAzZWxpbmspO1xcbiBcXG4gXFx0aWYgKHRkZXYpIHtcXG4gXFx0XFx0aGxlbiA9IHRkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbiArIHRkZXYtXFx1MDAzZW5lZWRlZF9oZWFkcm9vbTtcXG4tXFx0XFx0bXR1ID0gbWluKHRkZXYtXFx1MDAzZW10dSwgSVBfTUFYX01UVSk7XFxuK1xcdFxcdCptdHUgPSBtaW4odGRldi1cXHUwMDNlbXR1LCBJUF9NQVhfTVRVKTtcXG4rXFx0fVxcbitcXG4rXFx0Km5lZWRlZF9oZWFkcm9vbSA9IHRfaGxlbiArIGhsZW47XFxuK1xcdGlmIChpcF90dW5uZWxfaGVhZHJvb21fdG9vX2xhcmdlKGRldiwgKm5lZWRlZF9oZWFkcm9vbSkpIHtcXG4rXFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcXFwidHVubmVsIGhlYWRyb29tIGV4Y2VlZHMgc2tiIGhlYWRlciBvZmZzZXQgbGltaXRcXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FMkJJRztcXG4gXFx0fVxcbiBcXG4tXFx0ZGV2LVxcdTAwM2VuZWVkZWRfaGVhZHJvb20gPSB0X2hsZW4gKyBobGVuO1xcbi1cXHRtdHUgLT0gdF9obGVuICsgKGRldi1cXHUwMDNldHlwZSA9PSBBUlBIUkRfRVRIRVIgPyBkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbiA6IDApO1xcbitcXHQqbXR1IC09IHRfaGxlbiArIChkZXYtXFx1MDAzZXR5cGUgPT0gQVJQSFJEX0VUSEVSID8gZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW4gOiAwKTtcXG4rXFx0aWYgKCptdHUgXFx1MDAzYyBJUFY0X01JTl9NVFUpXFxuK1xcdFxcdCptdHUgPSBJUFY0X01JTl9NVFU7XFxuIFxcbi1cXHRpZiAobXR1IFxcdTAwM2MgSVBWNF9NSU5fTVRVKVxcbi1cXHRcXHRtdHUgPSBJUFY0X01JTl9NVFU7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaW50IGlwX3R1bm5lbF9iaW5kX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgKm10dSxcXG4rXFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbit7XFxuK1xcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XFxuK1xcdHVuc2lnbmVkIGludCBuZWVkZWRfaGVhZHJvb207XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRlcnIgPSBpcF90dW5uZWxfY2FsY19kZXZfY29uZmlnKGRldiwgXFx1MDAyNnR1bm5lbC1cXHUwMDNlcGFybXMsIHR1bm5lbC1cXHUwMDNlZndtYXJrLFxcbitcXHRcXHRcXHRcXHRcXHRcXHUwMDI2bmVlZGVkX2hlYWRyb29tLCBtdHUsIGV4dGFjayk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbitcXHRpZiAodHVubmVsLVxcdTAwM2VwYXJtcy5pcGguZGFkZHIpIHtcXG4rXFx0XFx0aWYgKGRldi1cXHUwMDNldHlwZSAhPSBBUlBIUkRfRVRIRVIpXFxuK1xcdFxcdFxcdGRldi1cXHUwMDNlZmxhZ3MgfD0gSUZGX1BPSU5UT1BPSU5UO1xcbitcXHRcXHRkc3RfY2FjaGVfcmVzZXQoXFx1MDAyNnR1bm5lbC1cXHUwMDNlZHN0X2NhY2hlKTtcXG4rXFx0fVxcbitcXHRkZXYtXFx1MDAzZW5lZWRlZF9oZWFkcm9vbSA9IG5lZWRlZF9oZWFkcm9vbTtcXG4gXFxuLVxcdHJldHVybiBtdHU7XFxuK1xcdHJldHVybiAwO1xcbiB9XFxuIFxcbiBzdGF0aWMgc3RydWN0IGlwX3R1bm5lbCAqaXBfdHVubmVsX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsXFxuQEAgLTM0MCw3ICszNzgsOSBAQCBzdGF0aWMgc3RydWN0IGlwX3R1bm5lbCAqaXBfdHVubmVsX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsXFxuIFxcdGlmIChJU19FUlIoZGV2KSlcXG4gXFx0XFx0cmV0dXJuIEVSUl9DQVNUKGRldik7XFxuIFxcbi1cXHRtdHUgPSBpcF90dW5uZWxfYmluZF9kZXYoZGV2KTtcXG4rXFx0ZXJyID0gaXBfdHVubmVsX2JpbmRfZGV2KGRldiwgXFx1MDAyNm10dSwgTlVMTCk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdGdvdG8gZXJyX2Rldl9zZXRfbXR1O1xcbiBcXHRlcnIgPSBkZXZfc2V0X210dShkZXYsIG10dSk7XFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gZXJyX2Rldl9zZXRfbXR1O1xcbkBAIC04NTksMTMgKzg5OSwyMCBAQCB2b2lkIGlwX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwoaXBfdHVubmVsX3htaXQpO1xcbiBcXG4tc3RhdGljIHZvaWQgaXBfdHVubmVsX3VwZGF0ZShzdHJ1Y3QgaXBfdHVubmVsX25ldCAqaXRuLFxcbi1cXHRcXHRcXHQgICAgIHN0cnVjdCBpcF90dW5uZWwgKnQsXFxuLVxcdFxcdFxcdCAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tXFx0XFx0XFx0ICAgICBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCxcXG4tXFx0XFx0XFx0ICAgICBib29sIHNldF9tdHUsXFxuLVxcdFxcdFxcdCAgICAgX191MzIgZndtYXJrKVxcbitzdGF0aWMgaW50IGlwX3R1bm5lbF91cGRhdGUoc3RydWN0IGlwX3R1bm5lbF9uZXQgKml0bixcXG4rXFx0XFx0XFx0ICAgIHN0cnVjdCBpcF90dW5uZWwgKnQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuK1xcdFxcdFxcdCAgICBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCwgYm9vbCBzZXRfbXR1LFxcbitcXHRcXHRcXHQgICAgX191MzIgZndtYXJrLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuIHtcXG4rXFx0dW5zaWduZWQgaW50IG5lZWRlZF9oZWFkcm9vbTtcXG4rXFx0aW50IG10dTtcXG4rXFx0aW50IGVycjtcXG4rXFxuK1xcdGVyciA9IGlwX3R1bm5lbF9jYWxjX2Rldl9jb25maWcoZGV2LCBwLCBmd21hcmssIFxcdTAwMjZuZWVkZWRfaGVhZHJvb20sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdTAwMjZtdHUsIGV4dGFjayk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbiBcXHRpcF90dW5uZWxfZGVsKGl0biwgdCk7XFxuIFxcdHQtXFx1MDAzZXBhcm1zLmlwaC5zYWRkciA9IHAtXFx1MDAzZWlwaC5zYWRkcjtcXG4gXFx0dC1cXHUwMDNlcGFybXMuaXBoLmRhZGRyID0gcC1cXHUwMDNlaXBoLmRhZGRyO1xcbkBAIC04ODAsMTggKzkyNywxNSBAQCBzdGF0aWMgdm9pZCBpcF90dW5uZWxfdXBkYXRlKHN0cnVjdCBpcF90dW5uZWxfbmV0ICppdG4sXFxuIFxcdHQtXFx1MDAzZXBhcm1zLmlwaC50dGwgPSBwLVxcdTAwM2VpcGgudHRsO1xcbiBcXHR0LVxcdTAwM2VwYXJtcy5pcGgudG9zID0gcC1cXHUwMDNlaXBoLnRvcztcXG4gXFx0dC1cXHUwMDNlcGFybXMuaXBoLmZyYWdfb2ZmID0gcC1cXHUwMDNlaXBoLmZyYWdfb2ZmO1xcbi1cXG4tXFx0aWYgKHQtXFx1MDAzZXBhcm1zLmxpbmsgIT0gcC1cXHUwMDNlbGluayB8fCB0LVxcdTAwM2Vmd21hcmsgIT0gZndtYXJrKSB7XFxuLVxcdFxcdGludCBtdHU7XFxuLVxcbi1cXHRcXHRXUklURV9PTkNFKHQtXFx1MDAzZXBhcm1zLmxpbmssIHAtXFx1MDAzZWxpbmspO1xcbi1cXHRcXHR0LVxcdTAwM2Vmd21hcmsgPSBmd21hcms7XFxuLVxcdFxcdG10dSA9IGlwX3R1bm5lbF9iaW5kX2RldihkZXYpO1xcbi1cXHRcXHRpZiAoc2V0X210dSlcXG4tXFx0XFx0XFx0V1JJVEVfT05DRShkZXYtXFx1MDAzZW10dSwgbXR1KTtcXG4tXFx0fVxcbitcXHRXUklURV9PTkNFKHQtXFx1MDAzZXBhcm1zLmxpbmssIHAtXFx1MDAzZWxpbmspO1xcbitcXHR0LVxcdTAwM2Vmd21hcmsgPSBmd21hcms7XFxuK1xcdGRldi1cXHUwMDNlbmVlZGVkX2hlYWRyb29tID0gbmVlZGVkX2hlYWRyb29tO1xcbitcXHRpZiAoc2V0X210dSlcXG4rXFx0XFx0V1JJVEVfT05DRShkZXYtXFx1MDAzZW10dSwgbXR1KTtcXG4gXFx0ZHN0X2NhY2hlX3Jlc2V0KFxcdTAwMjZ0LVxcdTAwM2Vkc3RfY2FjaGUpO1xcbiBcXHRuZXRkZXZfc3RhdGVfY2hhbmdlKGRldik7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4gaW50IGlwX3R1bm5lbF9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAsXFxuQEAgLTk2Miw4ICsxMDA2LDcgQEAgaW50IGlwX3R1bm5lbF9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAsXFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGlmICh0KSB7XFxuLVxcdFxcdFxcdGVyciA9IDA7XFxuLVxcdFxcdFxcdGlwX3R1bm5lbF91cGRhdGUoaXRuLCB0LCBkZXYsIHAsIHRydWUsIDApO1xcbitcXHRcXHRcXHRlcnIgPSBpcF90dW5uZWxfdXBkYXRlKGl0biwgdCwgZGV2LCBwLCB0cnVlLCAwLCBOVUxMKTtcXG4gXFx0XFx0fSBlbHNlIHtcXG4gXFx0XFx0XFx0ZXJyID0gLUVOT0VOVDtcXG4gXFx0XFx0fVxcbkBAIC0xMTI4LDYgKzExNzEsNyBAQCBpbnQgaXBfdHVubmVsX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldCwgdW5zaWduZWQgaW50IGlwX3RubF9uZXRfaWQsXFxuIFxcdHN0cnVjdCBpcF90dW5uZWxfbmV0ICppdG4gPSBuZXRfZ2VuZXJpYyhuZXQsIGlwX3RubF9uZXRfaWQpO1xcbiBcXHRzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiBwYXJtcztcXG4gXFx0dW5zaWduZWQgaW50IGk7XFxuK1xcdGludCBtdHU7XFxuIFxcbiBcXHRpdG4tXFx1MDAzZXJ0bmxfbGlua19vcHMgPSBvcHM7XFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBJUF9UTkxfSEFTSF9TSVpFOyBpKyspXFxuQEAgLTExNTMsOSArMTE5NywxMSBAQCBpbnQgaXBfdHVubmVsX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldCwgdW5zaWduZWQgaW50IGlwX3RubF9uZXRfaWQsXFxuIFxcdCAqL1xcbiBcXHRpZiAoIUlTX0VSUihpdG4tXFx1MDAzZWZiX3R1bm5lbF9kZXYpKSB7XFxuIFxcdFxcdGl0bi1cXHUwMDNlZmJfdHVubmVsX2Rldi1cXHUwMDNlbmV0bnNfaW1tdXRhYmxlID0gdHJ1ZTtcXG4tXFx0XFx0aXRuLVxcdTAwM2VmYl90dW5uZWxfZGV2LVxcdTAwM2VtdHUgPSBpcF90dW5uZWxfYmluZF9kZXYoaXRuLVxcdTAwM2VmYl90dW5uZWxfZGV2KTtcXG4tXFx0XFx0aXBfdHVubmVsX2FkZChpdG4sIG5ldGRldl9wcml2KGl0bi1cXHUwMDNlZmJfdHVubmVsX2RldikpO1xcbi1cXHRcXHRpdG4tXFx1MDAzZXR5cGUgPSBpdG4tXFx1MDAzZWZiX3R1bm5lbF9kZXYtXFx1MDAzZXR5cGU7XFxuK1xcdFxcdGlmICghaXBfdHVubmVsX2JpbmRfZGV2KGl0bi1cXHUwMDNlZmJfdHVubmVsX2RldiwgXFx1MDAyNm10dSwgTlVMTCkpIHtcXG4rXFx0XFx0XFx0aXRuLVxcdTAwM2VmYl90dW5uZWxfZGV2LVxcdTAwM2VtdHUgPSBtdHU7XFxuK1xcdFxcdFxcdGlwX3R1bm5lbF9hZGQoaXRuLCBuZXRkZXZfcHJpdihpdG4tXFx1MDAzZWZiX3R1bm5lbF9kZXYpKTtcXG4rXFx0XFx0XFx0aXRuLVxcdTAwM2V0eXBlID0gaXRuLVxcdTAwM2VmYl90dW5uZWxfZGV2LVxcdTAwM2V0eXBlO1xcbitcXHRcXHR9XFxuIFxcdH1cXG4gXFx0cnRubF91bmxvY2soKTtcXG4gXFxuQEAgLTExOTQsNyArMTI0MCw3IEBAIEVYUE9SVF9TWU1CT0xfR1BMKGlwX3R1bm5lbF9kZWxldGVfbmV0KTtcXG4gXFxuIGludCBpcF90dW5uZWxfbmV3bGluayhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdCAgICAgIHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLFxcbi1cXHRcXHQgICAgICBfX3UzMiBmd21hcmspXFxuK1xcdFxcdCAgICAgIF9fdTMyIGZ3bWFyaywgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbiB7XFxuIFxcdHN0cnVjdCBpcF90dW5uZWwgKm50O1xcbiBcXHRzdHJ1Y3QgaXBfdHVubmVsX25ldCAqaXRuO1xcbkBAIC0xMjIyLDcgKzEyNjgsOSBAQCBpbnQgaXBfdHVubmVsX25ld2xpbmsoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRpZiAoZGV2LVxcdTAwM2V0eXBlID09IEFSUEhSRF9FVEhFUiBcXHUwMDI2XFx1MDAyNiAhdGJbSUZMQV9BRERSRVNTXSlcXG4gXFx0XFx0ZXRoX2h3X2FkZHJfcmFuZG9tKGRldik7XFxuIFxcbi1cXHRtdHUgPSBpcF90dW5uZWxfYmluZF9kZXYoZGV2KTtcXG4rXFx0ZXJyID0gaXBfdHVubmVsX2JpbmRfZGV2KGRldiwgXFx1MDAyNm10dSwgZXh0YWNrKTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0Z290byBlcnJfZGV2X3NldF9tdHU7XFxuIFxcdGlmICh0YltJRkxBX01UVV0pIHtcXG4gXFx0XFx0dW5zaWduZWQgaW50IG1heCA9IElQX01BWF9NVFUgLSAobnQtXFx1MDAzZWhsZW4gKyBzaXplb2Yoc3RydWN0IGlwaGRyKSk7XFxuIFxcbkBAIC0xMjQ3LDcgKzEyOTUsOCBAQCBpbnQgaXBfdHVubmVsX25ld2xpbmsoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBFWFBPUlRfU1lNQk9MX0dQTChpcF90dW5uZWxfbmV3bGluayk7XFxuIFxcbiBpbnQgaXBfdHVubmVsX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG4tXFx0XFx0XFx0IHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLCBfX3UzMiBmd21hcmspXFxuK1xcdFxcdFxcdCBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCwgX191MzIgZndtYXJrLFxcbitcXHRcXHRcXHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbiB7XFxuIFxcdHN0cnVjdCBpcF90dW5uZWwgKnQ7XFxuIFxcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XFxuQEAgLTEyNzksOCArMTMyOCw3IEBAIGludCBpcF90dW5uZWxfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuLVxcdGlwX3R1bm5lbF91cGRhdGUoaXRuLCB0LCBkZXYsIHAsICF0YltJRkxBX01UVV0sIGZ3bWFyayk7XFxuLVxcdHJldHVybiAwO1xcbitcXHRyZXR1cm4gaXBfdHVubmVsX3VwZGF0ZShpdG4sIHQsIGRldiwgcCwgIXRiW0lGTEFfTVRVXSwgZndtYXJrLCBleHRhY2spO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKGlwX3R1bm5lbF9jaGFuZ2VsaW5rKTtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX3Z0aS5jIGIvbmV0L2lwdjQvaXBfdnRpLmNcXG5pbmRleCAzYjgwOTI5OTk0YTAwLi4xOGI2MzgyYjQ2ZTZkIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L2lwX3Z0aS5jXFxuKysrIGIvbmV0L2lwdjQvaXBfdnRpLmNcXG5AQCAtNTg1LDcgKzU4NSw3IEBAIHN0YXRpYyBpbnQgdnRpX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFxuIFxcdHZ0aV9uZXRsaW5rX3Bhcm1zKGRhdGEsIFxcdTAwMjZwYXJtcywgXFx1MDAyNmZ3bWFyayk7XFxuIFxcdHJldHVybiBpcF90dW5uZWxfbmV3bGluayhwYXJhbXMtXFx1MDAzZWxpbmtfbmV0ID8gOiBkZXZfbmV0KGRldiksIGRldiwgdGIsXFxuLVxcdFxcdFxcdFxcdCBcXHUwMDI2cGFybXMsIGZ3bWFyayk7XFxuK1xcdFxcdFxcdFxcdCBcXHUwMDI2cGFybXMsIGZ3bWFyaywgZXh0YWNrKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCB2dGlfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbkBAIC02MDAsNyArNjAwLDcgQEAgc3RhdGljIGludCB2dGlfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbiBcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbiBcXG4gXFx0dnRpX25ldGxpbmtfcGFybXMoZGF0YSwgXFx1MDAyNnAsIFxcdTAwMjZmd21hcmspO1xcbi1cXHRyZXR1cm4gaXBfdHVubmVsX2NoYW5nZWxpbmsoZGV2LCB0YiwgXFx1MDAyNnAsIGZ3bWFyayk7XFxuK1xcdHJldHVybiBpcF90dW5uZWxfY2hhbmdlbGluayhkZXYsIHRiLCBcXHUwMDI2cCwgZndtYXJrLCBleHRhY2spO1xcbiB9XFxuIFxcbiBzdGF0aWMgc2l6ZV90IHZ0aV9nZXRfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcGlwLmMgYi9uZXQvaXB2NC9pcGlwLmNcXG5pbmRleCBiNjQzMTk0ZjU3ZDI5Li4xNjg0YTgxYTkzNTJmIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L2lwaXAuY1xcbisrKyBiL25ldC9pcHY0L2lwaXAuY1xcbkBAIC00ODEsNyArNDgxLDcgQEAgc3RhdGljIGludCBpcGlwX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFxuIFxcdGlwaXBfbmV0bGlua19wYXJtcyhkYXRhLCBcXHUwMDI2cCwgXFx1MDAyNnQtXFx1MDAzZWNvbGxlY3RfbWQsIFxcdTAwMjZmd21hcmspO1xcbiBcXHRyZXR1cm4gaXBfdHVubmVsX25ld2xpbmsocGFyYW1zLVxcdTAwM2VsaW5rX25ldCA/IDogZGV2X25ldChkZXYpLCBkZXYsIHRiLCBcXHUwMDI2cCxcXG4tXFx0XFx0XFx0XFx0IGZ3bWFyayk7XFxuK1xcdFxcdFxcdFxcdCBmd21hcmssIGV4dGFjayk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgaXBpcF9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxuQEAgLTUxMiw3ICs1MTIsNyBAQCBzdGF0aWMgaW50IGlwaXBfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbiBcXHQgICAgKCEoZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9QT0lOVE9QT0lOVCkgXFx1MDAyNlxcdTAwMjYgcC5pcGguZGFkZHIpKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuLVxcdHJldHVybiBpcF90dW5uZWxfY2hhbmdlbGluayhkZXYsIHRiLCBcXHUwMDI2cCwgZndtYXJrKTtcXG4rXFx0cmV0dXJuIGlwX3R1bm5lbF9jaGFuZ2VsaW5rKGRldiwgdGIsIFxcdTAwMjZwLCBmd21hcmssIGV4dGFjayk7XFxuIH1cXG4gXFxuIHN0YXRpYyBzaXplX3QgaXBpcF9nZXRfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9yYXcuYyBiL25ldC9pcHY0L3Jhdy5jXFxuaW5kZXggN2Y3NGQ4Yjk1YTM3My4uOGU2ZThjNjg0OGIxNyAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC9yYXcuY1xcbisrKyBiL25ldC9pcHY0L3Jhdy5jXFxuQEAgLTQzLDYgKzQzLDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NsYWIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Vycm5vLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2xpbWl0cy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZXhwb3J0LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zcGlubG9jay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc29ja2lvcy5oXFx1MDAzZVxcbkBAIC0zNTYsNiArMzU3LDggQEAgc3RhdGljIGludCByYXdfc2VuZF9oZHJpbmMoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgZmxvd2k0ICpmbDQsXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXG4gXFx0aGxlbiA9IExMX1JFU0VSVkVEX1NQQUNFKHJ0LVxcdTAwM2Vkc3QuZGV2KTtcXG4rXFx0aWYgKGhsZW4gXFx1MDAzZT0gVTE2X01BWCAtIChzaXplb2Yoc3RydWN0IGlwaGRyKSArIE1BWF9JUE9QVExFTikpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR0bGVuID0gcnQtXFx1MDAzZWRzdC5kZXYtXFx1MDAzZW5lZWRlZF90YWlscm9vbTtcXG4gXFx0c2tiID0gc29ja19hbGxvY19zZW5kX3NrYihzayxcXG4gXFx0XFx0XFx0XFx0ICBsZW5ndGggKyBobGVuICsgdGxlbiArIDE1LFxcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yYXcuYyBiL25ldC9pcHY2L3Jhdy5jXFxuaW5kZXggYjg4ZDM2NGU3OGFhZS4uZmEyMjNlYzAyMzk2NCAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni9yYXcuY1xcbisrKyBiL25ldC9pcHY2L3Jhdy5jXFxuQEAgLTE1LDYgKzE1LDcgQEBcXG4gICovXFxuIFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZXJybm8uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2xpbWl0cy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvdHlwZXMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NvY2tldC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc2xhYi5oXFx1MDAzZVxcbkBAIC02MTMsNiArNjE0LDkgQEAgc3RhdGljIGludCByYXd2Nl9zZW5kX2hkcmluYyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbmd0aCxcXG4gXFx0aWYgKGZsYWdzXFx1MDAyNk1TR19QUk9CRSlcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcbitcXHRpZiAoaGxlbiBcXHUwMDNlPSBVMTZfTUFYKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuIFxcdHNrYiA9IHNvY2tfYWxsb2Nfc2VuZF9za2Ioc2ssXFxuIFxcdFxcdFxcdFxcdCAgbGVuZ3RoICsgaGxlbiArIHRsZW4gKyAxNSxcXG4gXFx0XFx0XFx0XFx0ICBmbGFncyBcXHUwMDI2IE1TR19ET05UV0FJVCwgXFx1MDAyNmVycik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjMzOjI5LjQ4MjM3ODA0NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE0MzM3ODE4NjI2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfSVBJUFwiLFxuICAgIFwiTkVUX0lQR1JFX0RFTVVYXCIsXG4gICAgXCJORVRfSVBHUkVcIixcbiAgICBcIk5FVF9JUFZUSVwiLFxuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3R1bm5lbF9uZXdsaW5rXCIsXG4gICAgXCJpcF90dW5uZWxfY2hhbmdlbGlua1wiLFxuICAgIFwicmF3X3NlbmRtc2dcIixcbiAgICBcInJhd3Y2X3NlbmRtc2dcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGhlYWRyb29tIHNpemUgdmFsaWRhdGlvbiB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3dzIHdoZW4gY3JlYXRpbmcgb3IgbW9kaWZ5aW5nIElQIHR1bm5lbHMgKEdSRSwgSVBJUCwgVlRJKSBhbmQgd2hlbiBzZW5kaW5nIHBhY2tldHMgdmlhIHJhdyBJUHY0L0lQdjYgc29ja2V0cy4gSXQgbW9kaWZpZXMgY29yZSB0dW5uZWwgbmV0bGluayBjYWxsYmFja3MgYW5kIHJhdyBzb2NrZXQgc2VuZG1zZyBwYXRocywgd2hpY2ggYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjEzNzNhYWUwMzUwOTZjMzIyNDA4OTBkOWQ2MTRjMDI2N2RjMzFiNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMDA6MzM6MjggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pcF90dW5uZWxzLmggYi9pbmNsdWRlL25ldC9pcF90dW5uZWxzLmhcbmluZGV4IGQ3MDhiNjZlNTVjZGEuLjAxMDJmZTM4N2IwYWQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9pcF90dW5uZWxzLmhcbisrKyBiL2luY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaFxuQEAgLTQyNSwxMCArNDI1LDExIEBAIGludCBpcF90dW5uZWxfcmN2KHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0ICBjb25zdCBzdHJ1Y3QgdG5sX3B0a19pbmZvICp0cGksIHN0cnVjdCBtZXRhZGF0YV9kc3QgKnR1bl9kc3QsXG4gXHRcdCAgYm9vbCBsb2dfZWNuX2Vycm9yKTtcbiBpbnQgaXBfdHVubmVsX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbi1cdFx0XHQgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAsIF9fdTMyIGZ3bWFyayk7XG4rXHRcdFx0IHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLCBfX3UzMiBmd21hcmssXG4rXHRcdFx0IHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XG4gaW50IGlwX3R1bm5lbF9uZXdsaW5rKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0ICAgICAgc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAsXG4tXHRcdCAgICAgIF9fdTMyIGZ3bWFyayk7XG4rXHRcdCAgICAgIF9fdTMyIGZ3bWFyaywgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcbiB2b2lkIGlwX3R1bm5lbF9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgbmV0X2lkKTtcbiBcbiBib29sIGlwX3R1bm5lbF9uZXRsaW5rX2VuY2FwX3Bhcm1zKHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF9ncmUuYyBiL25ldC9pcHY0L2lwX2dyZS5jXG5pbmRleCAwYmExZTk0ZTkwMTJjLi42OTA3Njg4ZDA1YmMxIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaXBfZ3JlLmNcbisrKyBiL25ldC9pcHY0L2lwX2dyZS5jXG5AQCAtMTQyNCw3ICsxNDI0LDcgQEAgc3RhdGljIGludCBpcGdyZV9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFx0cmV0dXJuIGlwX3R1bm5lbF9uZXdsaW5rKHBhcmFtcy1cdTAwM2VsaW5rX25ldCA/IDogZGV2X25ldChkZXYpLCBkZXYsIHRiLCBcdTAwMjZwLFxuLVx0XHRcdFx0IGZ3bWFyayk7XG4rXHRcdFx0XHQgZndtYXJrLCBleHRhY2spO1xuIH1cbiBcbiBzdGF0aWMgaW50IGVyc3Bhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5AQCAtMTQ0NSw3ICsxNDQ1LDcgQEAgc3RhdGljIGludCBlcnNwYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcdHJldHVybiBpcF90dW5uZWxfbmV3bGluayhwYXJhbXMtXHUwMDNlbGlua19uZXQgPyA6IGRldl9uZXQoZGV2KSwgZGV2LCB0YiwgXHUwMDI2cCxcbi1cdFx0XHRcdCBmd21hcmspO1xuK1x0XHRcdFx0IGZ3bWFyaywgZXh0YWNrKTtcbiB9XG4gXG4gc3RhdGljIGludCBpcGdyZV9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5AQCAtMTQ2OCw3ICsxNDY4LDcgQEAgc3RhdGljIGludCBpcGdyZV9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuLVx0ZXJyID0gaXBfdHVubmVsX2NoYW5nZWxpbmsoZGV2LCB0YiwgXHUwMDI2cCwgZndtYXJrKTtcbitcdGVyciA9IGlwX3R1bm5lbF9jaGFuZ2VsaW5rKGRldiwgdGIsIFx1MDAyNnAsIGZ3bWFyaywgZXh0YWNrKTtcbiBcdGlmIChlcnIgXHUwMDNjIDApXG4gXHRcdHJldHVybiBlcnI7XG4gXG5AQCAtMTUwMCw3ICsxNTAwLDcgQEAgc3RhdGljIGludCBlcnNwYW5fY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuIFx0aWYgKGVyciBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIGVycjtcbiBcbi1cdGVyciA9IGlwX3R1bm5lbF9jaGFuZ2VsaW5rKGRldiwgdGIsIFx1MDAyNnAsIGZ3bWFyayk7XG4rXHRlcnIgPSBpcF90dW5uZWxfY2hhbmdlbGluayhkZXYsIHRiLCBcdTAwMjZwLCBmd21hcmssIGV4dGFjayk7XG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX3R1bm5lbC5jIGIvbmV0L2lwdjQvaXBfdHVubmVsLmNcbmluZGV4IDlkMTE0YmQ1NzVmOTIuLjVlNGY1NmMwZTNlNWQgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9pcF90dW5uZWwuY1xuKysrIGIvbmV0L2lwdjQvaXBfdHVubmVsLmNcbkBAIC05LDYgKzksNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbGltaXRzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91YWNjZXNzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9za2J1ZmYuaFx1MDAzZVxuQEAgLTI3NywxNiArMjc4LDMxIEBAIHN0YXRpYyBzdHJ1Y3QgbmV0X2RldmljZSAqX19pcF90dW5uZWxfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCxcbiBcdHJldHVybiBFUlJfUFRSKGVycik7XG4gfVxuIFxuLXN0YXRpYyBpbnQgaXBfdHVubmVsX2JpbmRfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4rc3RhdGljIGJvb2wgaXBfdHVubmVsX2hlYWRyb29tX3Rvb19sYXJnZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuK1x0XHRcdFx0XHQgdW5zaWduZWQgaW50IG5lZWRlZF9oZWFkcm9vbSlcbit7XG4rXHR1bnNpZ25lZCBpbnQgaGxlbjtcbitcbitcdGhsZW4gPSAoKGRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4gKyBuZWVkZWRfaGVhZHJvb20pIFx1MDAyNlxuK1x0XHR+KEhIX0RBVEFfTU9EIC0gMSkpICsgSEhfREFUQV9NT0Q7XG4rXG4rXHRyZXR1cm4gaGxlbiBcdTAwM2U9IFUxNl9NQVggLSAoc2l6ZW9mKHN0cnVjdCBpcGhkcikgKyBNQVhfSVBPUFRMRU4pO1xuK31cbitcbitzdGF0aWMgaW50IGlwX3R1bm5lbF9jYWxjX2Rldl9jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbitcdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnBhcm1zLFxuK1x0XHRcdFx0ICAgICBfX3UzMiBmd21hcmssXG4rXHRcdFx0XHQgICAgIHVuc2lnbmVkIGludCAqbmVlZGVkX2hlYWRyb29tLFxuK1x0XHRcdFx0ICAgICBpbnQgKm10dSxcbitcdFx0XHRcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICp0ZGV2ID0gTlVMTDtcbiBcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XG4tXHRjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaDtcbitcdGNvbnN0IHN0cnVjdCBpcGhkciAqaXBoID0gXHUwMDI2cGFybXMtXHUwMDNlaXBoO1xuIFx0aW50IGhsZW4gPSBMTF9NQVhfSEVBREVSO1xuLVx0aW50IG10dSA9IEVUSF9EQVRBX0xFTjtcbiBcdGludCB0X2hsZW4gPSB0dW5uZWwtXHUwMDNlaGxlbiArIHNpemVvZihzdHJ1Y3QgaXBoZHIpO1xuIFxuLVx0aXBoID0gXHUwMDI2dHVubmVsLVx1MDAzZXBhcm1zLmlwaDtcbitcdCptdHUgPSBFVEhfREFUQV9MRU47XG4gXG4gXHQvKiBHdWVzcyBvdXRwdXQgZGV2aWNlIHRvIGNob29zZSByZWFzb25hYmxlIG10dSBhbmQgbmVlZGVkX2hlYWRyb29tICovXG4gXHRpZiAoaXBoLVx1MDAzZWRhZGRyKSB7XG5AQCAtMjk0LDM2ICszMTAsNTggQEAgc3RhdGljIGludCBpcF90dW5uZWxfYmluZF9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0c3RydWN0IHJ0YWJsZSAqcnQ7XG4gXG4gXHRcdGlwX3R1bm5lbF9pbml0X2Zsb3coXHUwMDI2Zmw0LCBpcGgtXHUwMDNlcHJvdG9jb2wsIGlwaC1cdTAwM2VkYWRkcixcbi1cdFx0XHRcdCAgICBpcGgtXHUwMDNlc2FkZHIsIHR1bm5lbC1cdTAwM2VwYXJtcy5vX2tleSxcbitcdFx0XHRcdCAgICBpcGgtXHUwMDNlc2FkZHIsIHBhcm1zLVx1MDAzZW9fa2V5LFxuIFx0XHRcdFx0ICAgIGlwaC1cdTAwM2V0b3MgXHUwMDI2IElORVRfRFNDUF9NQVNLLCB0dW5uZWwtXHUwMDNlbmV0LFxuLVx0XHRcdFx0ICAgIHR1bm5lbC1cdTAwM2VwYXJtcy5saW5rLCB0dW5uZWwtXHUwMDNlZndtYXJrLCAwLCAwKTtcbitcdFx0XHRcdCAgICBwYXJtcy1cdTAwM2VsaW5rLCBmd21hcmssIDAsIDApO1xuIFx0XHRydCA9IGlwX3JvdXRlX291dHB1dF9rZXkodHVubmVsLVx1MDAzZW5ldCwgXHUwMDI2Zmw0KTtcbiBcbiBcdFx0aWYgKCFJU19FUlIocnQpKSB7XG4gXHRcdFx0dGRldiA9IHJ0LVx1MDAzZWRzdC5kZXY7XG4gXHRcdFx0aXBfcnRfcHV0KHJ0KTtcbiBcdFx0fVxuLVx0XHRpZiAoZGV2LVx1MDAzZXR5cGUgIT0gQVJQSFJEX0VUSEVSKVxuLVx0XHRcdGRldi1cdTAwM2VmbGFncyB8PSBJRkZfUE9JTlRPUE9JTlQ7XG4tXG4tXHRcdGRzdF9jYWNoZV9yZXNldChcdTAwMjZ0dW5uZWwtXHUwMDNlZHN0X2NhY2hlKTtcbiBcdH1cbiBcbi1cdGlmICghdGRldiBcdTAwMjZcdTAwMjYgdHVubmVsLVx1MDAzZXBhcm1zLmxpbmspXG4tXHRcdHRkZXYgPSBfX2Rldl9nZXRfYnlfaW5kZXgodHVubmVsLVx1MDAzZW5ldCwgdHVubmVsLVx1MDAzZXBhcm1zLmxpbmspO1xuK1x0aWYgKCF0ZGV2IFx1MDAyNlx1MDAyNiBwYXJtcy1cdTAwM2VsaW5rKVxuK1x0XHR0ZGV2ID0gX19kZXZfZ2V0X2J5X2luZGV4KHR1bm5lbC1cdTAwM2VuZXQsIHBhcm1zLVx1MDAzZWxpbmspO1xuIFxuIFx0aWYgKHRkZXYpIHtcbiBcdFx0aGxlbiA9IHRkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuICsgdGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb207XG4tXHRcdG10dSA9IG1pbih0ZGV2LVx1MDAzZW10dSwgSVBfTUFYX01UVSk7XG4rXHRcdCptdHUgPSBtaW4odGRldi1cdTAwM2VtdHUsIElQX01BWF9NVFUpO1xuK1x0fVxuK1xuK1x0Km5lZWRlZF9oZWFkcm9vbSA9IHRfaGxlbiArIGhsZW47XG4rXHRpZiAoaXBfdHVubmVsX2hlYWRyb29tX3Rvb19sYXJnZShkZXYsICpuZWVkZWRfaGVhZHJvb20pKSB7XG4rXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCJ0dW5uZWwgaGVhZHJvb20gZXhjZWVkcyBza2IgaGVhZGVyIG9mZnNldCBsaW1pdFwiKTtcbitcdFx0cmV0dXJuIC1FMkJJRztcbiBcdH1cbiBcbi1cdGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20gPSB0X2hsZW4gKyBobGVuO1xuLVx0bXR1IC09IHRfaGxlbiArIChkZXYtXHUwMDNldHlwZSA9PSBBUlBIUkRfRVRIRVIgPyBkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuIDogMCk7XG4rXHQqbXR1IC09IHRfaGxlbiArIChkZXYtXHUwMDNldHlwZSA9PSBBUlBIUkRfRVRIRVIgPyBkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuIDogMCk7XG4rXHRpZiAoKm10dSBcdTAwM2MgSVBWNF9NSU5fTVRVKVxuK1x0XHQqbXR1ID0gSVBWNF9NSU5fTVRVO1xuIFxuLVx0aWYgKG10dSBcdTAwM2MgSVBWNF9NSU5fTVRVKVxuLVx0XHRtdHUgPSBJUFY0X01JTl9NVFU7XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCBpcF90dW5uZWxfYmluZF9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50ICptdHUsXG4rXHRcdFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuK3tcbitcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XG4rXHR1bnNpZ25lZCBpbnQgbmVlZGVkX2hlYWRyb29tO1xuK1x0aW50IGVycjtcbitcbitcdGVyciA9IGlwX3R1bm5lbF9jYWxjX2Rldl9jb25maWcoZGV2LCBcdTAwMjZ0dW5uZWwtXHUwMDNlcGFybXMsIHR1bm5lbC1cdTAwM2Vmd21hcmssXG4rXHRcdFx0XHRcdFx1MDAyNm5lZWRlZF9oZWFkcm9vbSwgbXR1LCBleHRhY2spO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbitcbitcdGlmICh0dW5uZWwtXHUwMDNlcGFybXMuaXBoLmRhZGRyKSB7XG4rXHRcdGlmIChkZXYtXHUwMDNldHlwZSAhPSBBUlBIUkRfRVRIRVIpXG4rXHRcdFx0ZGV2LVx1MDAzZWZsYWdzIHw9IElGRl9QT0lOVE9QT0lOVDtcbitcdFx0ZHN0X2NhY2hlX3Jlc2V0KFx1MDAyNnR1bm5lbC1cdTAwM2Vkc3RfY2FjaGUpO1xuK1x0fVxuK1x0ZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbSA9IG5lZWRlZF9oZWFkcm9vbTtcbiBcbi1cdHJldHVybiBtdHU7XG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIHN0cnVjdCBpcF90dW5uZWwgKmlwX3R1bm5lbF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LFxuQEAgLTM0MCw3ICszNzgsOSBAQCBzdGF0aWMgc3RydWN0IGlwX3R1bm5lbCAqaXBfdHVubmVsX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRpZiAoSVNfRVJSKGRldikpXG4gXHRcdHJldHVybiBFUlJfQ0FTVChkZXYpO1xuIFxuLVx0bXR1ID0gaXBfdHVubmVsX2JpbmRfZGV2KGRldik7XG4rXHRlcnIgPSBpcF90dW5uZWxfYmluZF9kZXYoZGV2LCBcdTAwMjZtdHUsIE5VTEwpO1xuK1x0aWYgKGVycilcbitcdFx0Z290byBlcnJfZGV2X3NldF9tdHU7XG4gXHRlcnIgPSBkZXZfc2V0X210dShkZXYsIG10dSk7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGVycl9kZXZfc2V0X210dTtcbkBAIC04NTksMTMgKzg5OSwyMCBAQCB2b2lkIGlwX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKGlwX3R1bm5lbF94bWl0KTtcbiBcbi1zdGF0aWMgdm9pZCBpcF90dW5uZWxfdXBkYXRlKHN0cnVjdCBpcF90dW5uZWxfbmV0ICppdG4sXG4tXHRcdFx0ICAgICBzdHJ1Y3QgaXBfdHVubmVsICp0LFxuLVx0XHRcdCAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi1cdFx0XHQgICAgIHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLFxuLVx0XHRcdCAgICAgYm9vbCBzZXRfbXR1LFxuLVx0XHRcdCAgICAgX191MzIgZndtYXJrKVxuK3N0YXRpYyBpbnQgaXBfdHVubmVsX3VwZGF0ZShzdHJ1Y3QgaXBfdHVubmVsX25ldCAqaXRuLFxuK1x0XHRcdCAgICBzdHJ1Y3QgaXBfdHVubmVsICp0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuK1x0XHRcdCAgICBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCwgYm9vbCBzZXRfbXR1LFxuK1x0XHRcdCAgICBfX3UzMiBmd21hcmssIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiB7XG4rXHR1bnNpZ25lZCBpbnQgbmVlZGVkX2hlYWRyb29tO1xuK1x0aW50IG10dTtcbitcdGludCBlcnI7XG4rXG4rXHRlcnIgPSBpcF90dW5uZWxfY2FsY19kZXZfY29uZmlnKGRldiwgcCwgZndtYXJrLCBcdTAwMjZuZWVkZWRfaGVhZHJvb20sXG4rXHRcdFx0XHRcdFx1MDAyNm10dSwgZXh0YWNrKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4rXG4gXHRpcF90dW5uZWxfZGVsKGl0biwgdCk7XG4gXHR0LVx1MDAzZXBhcm1zLmlwaC5zYWRkciA9IHAtXHUwMDNlaXBoLnNhZGRyO1xuIFx0dC1cdTAwM2VwYXJtcy5pcGguZGFkZHIgPSBwLVx1MDAzZWlwaC5kYWRkcjtcbkBAIC04ODAsMTggKzkyNywxNSBAQCBzdGF0aWMgdm9pZCBpcF90dW5uZWxfdXBkYXRlKHN0cnVjdCBpcF90dW5uZWxfbmV0ICppdG4sXG4gXHR0LVx1MDAzZXBhcm1zLmlwaC50dGwgPSBwLVx1MDAzZWlwaC50dGw7XG4gXHR0LVx1MDAzZXBhcm1zLmlwaC50b3MgPSBwLVx1MDAzZWlwaC50b3M7XG4gXHR0LVx1MDAzZXBhcm1zLmlwaC5mcmFnX29mZiA9IHAtXHUwMDNlaXBoLmZyYWdfb2ZmO1xuLVxuLVx0aWYgKHQtXHUwMDNlcGFybXMubGluayAhPSBwLVx1MDAzZWxpbmsgfHwgdC1cdTAwM2Vmd21hcmsgIT0gZndtYXJrKSB7XG4tXHRcdGludCBtdHU7XG4tXG4tXHRcdFdSSVRFX09OQ0UodC1cdTAwM2VwYXJtcy5saW5rLCBwLVx1MDAzZWxpbmspO1xuLVx0XHR0LVx1MDAzZWZ3bWFyayA9IGZ3bWFyaztcbi1cdFx0bXR1ID0gaXBfdHVubmVsX2JpbmRfZGV2KGRldik7XG4tXHRcdGlmIChzZXRfbXR1KVxuLVx0XHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZW10dSwgbXR1KTtcbi1cdH1cbitcdFdSSVRFX09OQ0UodC1cdTAwM2VwYXJtcy5saW5rLCBwLVx1MDAzZWxpbmspO1xuK1x0dC1cdTAwM2Vmd21hcmsgPSBmd21hcms7XG4rXHRkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tID0gbmVlZGVkX2hlYWRyb29tO1xuK1x0aWYgKHNldF9tdHUpXG4rXHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZW10dSwgbXR1KTtcbiBcdGRzdF9jYWNoZV9yZXNldChcdTAwMjZ0LVx1MDAzZWRzdF9jYWNoZSk7XG4gXHRuZXRkZXZfc3RhdGVfY2hhbmdlKGRldik7XG4rXG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gaW50IGlwX3R1bm5lbF9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAsXG5AQCAtOTYyLDggKzEwMDYsNyBAQCBpbnQgaXBfdHVubmVsX2N0bChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCxcbiBcdFx0fVxuIFxuIFx0XHRpZiAodCkge1xuLVx0XHRcdGVyciA9IDA7XG4tXHRcdFx0aXBfdHVubmVsX3VwZGF0ZShpdG4sIHQsIGRldiwgcCwgdHJ1ZSwgMCk7XG4rXHRcdFx0ZXJyID0gaXBfdHVubmVsX3VwZGF0ZShpdG4sIHQsIGRldiwgcCwgdHJ1ZSwgMCwgTlVMTCk7XG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0ZXJyID0gLUVOT0VOVDtcbiBcdFx0fVxuQEAgLTExMjgsNiArMTE3MSw3IEBAIGludCBpcF90dW5uZWxfaW5pdF9uZXQoc3RydWN0IG5ldCAqbmV0LCB1bnNpZ25lZCBpbnQgaXBfdG5sX25ldF9pZCxcbiBcdHN0cnVjdCBpcF90dW5uZWxfbmV0ICppdG4gPSBuZXRfZ2VuZXJpYyhuZXQsIGlwX3RubF9uZXRfaWQpO1xuIFx0c3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gcGFybXM7XG4gXHR1bnNpZ25lZCBpbnQgaTtcbitcdGludCBtdHU7XG4gXG4gXHRpdG4tXHUwMDNlcnRubF9saW5rX29wcyA9IG9wcztcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIElQX1ROTF9IQVNIX1NJWkU7IGkrKylcbkBAIC0xMTUzLDkgKzExOTcsMTEgQEAgaW50IGlwX3R1bm5lbF9pbml0X25ldChzdHJ1Y3QgbmV0ICpuZXQsIHVuc2lnbmVkIGludCBpcF90bmxfbmV0X2lkLFxuIFx0ICovXG4gXHRpZiAoIUlTX0VSUihpdG4tXHUwMDNlZmJfdHVubmVsX2RldikpIHtcbiBcdFx0aXRuLVx1MDAzZWZiX3R1bm5lbF9kZXYtXHUwMDNlbmV0bnNfaW1tdXRhYmxlID0gdHJ1ZTtcbi1cdFx0aXRuLVx1MDAzZWZiX3R1bm5lbF9kZXYtXHUwMDNlbXR1ID0gaXBfdHVubmVsX2JpbmRfZGV2KGl0bi1cdTAwM2VmYl90dW5uZWxfZGV2KTtcbi1cdFx0aXBfdHVubmVsX2FkZChpdG4sIG5ldGRldl9wcml2KGl0bi1cdTAwM2VmYl90dW5uZWxfZGV2KSk7XG4tXHRcdGl0bi1cdTAwM2V0eXBlID0gaXRuLVx1MDAzZWZiX3R1bm5lbF9kZXYtXHUwMDNldHlwZTtcbitcdFx0aWYgKCFpcF90dW5uZWxfYmluZF9kZXYoaXRuLVx1MDAzZWZiX3R1bm5lbF9kZXYsIFx1MDAyNm10dSwgTlVMTCkpIHtcbitcdFx0XHRpdG4tXHUwMDNlZmJfdHVubmVsX2Rldi1cdTAwM2VtdHUgPSBtdHU7XG4rXHRcdFx0aXBfdHVubmVsX2FkZChpdG4sIG5ldGRldl9wcml2KGl0bi1cdTAwM2VmYl90dW5uZWxfZGV2KSk7XG4rXHRcdFx0aXRuLVx1MDAzZXR5cGUgPSBpdG4tXHUwMDNlZmJfdHVubmVsX2Rldi1cdTAwM2V0eXBlO1xuK1x0XHR9XG4gXHR9XG4gXHRydG5sX3VubG9jaygpO1xuIFxuQEAgLTExOTQsNyArMTI0MCw3IEBAIEVYUE9SVF9TWU1CT0xfR1BMKGlwX3R1bm5lbF9kZWxldGVfbmV0KTtcbiBcbiBpbnQgaXBfdHVubmVsX25ld2xpbmsoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHQgICAgICBzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCxcbi1cdFx0ICAgICAgX191MzIgZndtYXJrKVxuK1x0XHQgICAgICBfX3UzMiBmd21hcmssIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiB7XG4gXHRzdHJ1Y3QgaXBfdHVubmVsICpudDtcbiBcdHN0cnVjdCBpcF90dW5uZWxfbmV0ICppdG47XG5AQCAtMTIyMiw3ICsxMjY4LDkgQEAgaW50IGlwX3R1bm5lbF9uZXdsaW5rKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGlmIChkZXYtXHUwMDNldHlwZSA9PSBBUlBIUkRfRVRIRVIgXHUwMDI2XHUwMDI2ICF0YltJRkxBX0FERFJFU1NdKVxuIFx0XHRldGhfaHdfYWRkcl9yYW5kb20oZGV2KTtcbiBcbi1cdG10dSA9IGlwX3R1bm5lbF9iaW5kX2RldihkZXYpO1xuK1x0ZXJyID0gaXBfdHVubmVsX2JpbmRfZGV2KGRldiwgXHUwMDI2bXR1LCBleHRhY2spO1xuK1x0aWYgKGVycilcbitcdFx0Z290byBlcnJfZGV2X3NldF9tdHU7XG4gXHRpZiAodGJbSUZMQV9NVFVdKSB7XG4gXHRcdHVuc2lnbmVkIGludCBtYXggPSBJUF9NQVhfTVRVIC0gKG50LVx1MDAzZWhsZW4gKyBzaXplb2Yoc3RydWN0IGlwaGRyKSk7XG4gXG5AQCAtMTI0Nyw3ICsxMjk1LDggQEAgaW50IGlwX3R1bm5lbF9uZXdsaW5rKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBFWFBPUlRfU1lNQk9MX0dQTChpcF90dW5uZWxfbmV3bGluayk7XG4gXG4gaW50IGlwX3R1bm5lbF9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG4tXHRcdFx0IHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLCBfX3UzMiBmd21hcmspXG4rXHRcdFx0IHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLCBfX3UzMiBmd21hcmssXG4rXHRcdFx0IHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiB7XG4gXHRzdHJ1Y3QgaXBfdHVubmVsICp0O1xuIFx0c3RydWN0IGlwX3R1bm5lbCAqdHVubmVsID0gbmV0ZGV2X3ByaXYoZGV2KTtcbkBAIC0xMjc5LDggKzEzMjgsNyBAQCBpbnQgaXBfdHVubmVsX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbiBcdFx0fVxuIFx0fVxuIFxuLVx0aXBfdHVubmVsX3VwZGF0ZShpdG4sIHQsIGRldiwgcCwgIXRiW0lGTEFfTVRVXSwgZndtYXJrKTtcbi1cdHJldHVybiAwO1xuK1x0cmV0dXJuIGlwX3R1bm5lbF91cGRhdGUoaXRuLCB0LCBkZXYsIHAsICF0YltJRkxBX01UVV0sIGZ3bWFyaywgZXh0YWNrKTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoaXBfdHVubmVsX2NoYW5nZWxpbmspO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX3Z0aS5jIGIvbmV0L2lwdjQvaXBfdnRpLmNcbmluZGV4IDNiODA5Mjk5OTRhMDAuLjE4YjYzODJiNDZlNmQgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9pcF92dGkuY1xuKysrIGIvbmV0L2lwdjQvaXBfdnRpLmNcbkBAIC01ODUsNyArNTg1LDcgQEAgc3RhdGljIGludCB2dGlfbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFxuIFx0dnRpX25ldGxpbmtfcGFybXMoZGF0YSwgXHUwMDI2cGFybXMsIFx1MDAyNmZ3bWFyayk7XG4gXHRyZXR1cm4gaXBfdHVubmVsX25ld2xpbmsocGFyYW1zLVx1MDAzZWxpbmtfbmV0ID8gOiBkZXZfbmV0KGRldiksIGRldiwgdGIsXG4tXHRcdFx0XHQgXHUwMDI2cGFybXMsIGZ3bWFyayk7XG4rXHRcdFx0XHQgXHUwMDI2cGFybXMsIGZ3bWFyaywgZXh0YWNrKTtcbiB9XG4gXG4gc3RhdGljIGludCB2dGlfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuQEAgLTYwMCw3ICs2MDAsNyBAQCBzdGF0aWMgaW50IHZ0aV9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG4gXHRcdHJldHVybiAtRVBFUk07XG4gXG4gXHR2dGlfbmV0bGlua19wYXJtcyhkYXRhLCBcdTAwMjZwLCBcdTAwMjZmd21hcmspO1xuLVx0cmV0dXJuIGlwX3R1bm5lbF9jaGFuZ2VsaW5rKGRldiwgdGIsIFx1MDAyNnAsIGZ3bWFyayk7XG4rXHRyZXR1cm4gaXBfdHVubmVsX2NoYW5nZWxpbmsoZGV2LCB0YiwgXHUwMDI2cCwgZndtYXJrLCBleHRhY2spO1xuIH1cbiBcbiBzdGF0aWMgc2l6ZV90IHZ0aV9nZXRfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwaXAuYyBiL25ldC9pcHY0L2lwaXAuY1xuaW5kZXggYjY0MzE5NGY1N2QyOS4uMTY4NGE4MWE5MzUyZiAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2lwaXAuY1xuKysrIGIvbmV0L2lwdjQvaXBpcC5jXG5AQCAtNDgxLDcgKzQ4MSw3IEBAIHN0YXRpYyBpbnQgaXBpcF9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXG4gXHRpcGlwX25ldGxpbmtfcGFybXMoZGF0YSwgXHUwMDI2cCwgXHUwMDI2dC1cdTAwM2Vjb2xsZWN0X21kLCBcdTAwMjZmd21hcmspO1xuIFx0cmV0dXJuIGlwX3R1bm5lbF9uZXdsaW5rKHBhcmFtcy1cdTAwM2VsaW5rX25ldCA/IDogZGV2X25ldChkZXYpLCBkZXYsIHRiLCBcdTAwMjZwLFxuLVx0XHRcdFx0IGZ3bWFyayk7XG4rXHRcdFx0XHQgZndtYXJrLCBleHRhY2spO1xuIH1cbiBcbiBzdGF0aWMgaW50IGlwaXBfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuQEAgLTUxMiw3ICs1MTIsNyBAQCBzdGF0aWMgaW50IGlwaXBfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuIFx0ICAgICghKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1BPSU5UT1BPSU5UKSBcdTAwMjZcdTAwMjYgcC5pcGguZGFkZHIpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbi1cdHJldHVybiBpcF90dW5uZWxfY2hhbmdlbGluayhkZXYsIHRiLCBcdTAwMjZwLCBmd21hcmspO1xuK1x0cmV0dXJuIGlwX3R1bm5lbF9jaGFuZ2VsaW5rKGRldiwgdGIsIFx1MDAyNnAsIGZ3bWFyaywgZXh0YWNrKTtcbiB9XG4gXG4gc3RhdGljIHNpemVfdCBpcGlwX2dldF9zaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvcmF3LmMgYi9uZXQvaXB2NC9yYXcuY1xuaW5kZXggN2Y3NGQ4Yjk1YTM3My4uOGU2ZThjNjg0OGIxNyAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3Jhdy5jXG4rKysgYi9uZXQvaXB2NC9yYXcuY1xuQEAgLTQzLDYgKzQzLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnJuby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9saW1pdHMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2V4cG9ydC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NvY2tpb3MuaFx1MDAzZVxuQEAgLTM1Niw2ICszNTcsOCBAQCBzdGF0aWMgaW50IHJhd19zZW5kX2hkcmluYyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBmbG93aTQgKmZsNCxcbiBcdFx0Z290byBvdXQ7XG4gXG4gXHRobGVuID0gTExfUkVTRVJWRURfU1BBQ0UocnQtXHUwMDNlZHN0LmRldik7XG4rXHRpZiAoaGxlbiBcdTAwM2U9IFUxNl9NQVggLSAoc2l6ZW9mKHN0cnVjdCBpcGhkcikgKyBNQVhfSVBPUFRMRU4pKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdHRsZW4gPSBydC1cdTAwM2Vkc3QuZGV2LVx1MDAzZW5lZWRlZF90YWlscm9vbTtcbiBcdHNrYiA9IHNvY2tfYWxsb2Nfc2VuZF9za2Ioc2ssXG4gXHRcdFx0XHQgIGxlbmd0aCArIGhsZW4gKyB0bGVuICsgMTUsXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvcmF3LmMgYi9uZXQvaXB2Ni9yYXcuY1xuaW5kZXggYjg4ZDM2NGU3OGFhZS4uZmEyMjNlYzAyMzk2NCAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3Jhdy5jXG4rKysgYi9uZXQvaXB2Ni9yYXcuY1xuQEAgLTE1LDYgKzE1LDcgQEBcbiAgKi9cbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnJuby5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbGltaXRzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC90eXBlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc29ja2V0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbkBAIC02MTMsNiArNjE0LDkgQEAgc3RhdGljIGludCByYXd2Nl9zZW5kX2hkcmluYyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbmd0aCxcbiBcdGlmIChmbGFnc1x1MDAyNk1TR19QUk9CRSlcbiBcdFx0Z290byBvdXQ7XG4gXG4rXHRpZiAoaGxlbiBcdTAwM2U9IFUxNl9NQVgpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuIFx0c2tiID0gc29ja19hbGxvY19zZW5kX3NrYihzayxcbiBcdFx0XHRcdCAgbGVuZ3RoICsgaGxlbiArIHRsZW4gKyAxNSxcbiBcdFx0XHRcdCAgZmxhZ3MgXHUwMDI2IE1TR19ET05UV0FJVCwgXHUwMDI2ZXJyKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjMzOjI5LjQ4MjM3OTQ4NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNzA3Nzc4MzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uOiBJUCBUdW5uZWwgXHUwMDI2IFJhdyBTb2NrZXQgSGVhZGVyIEhhbmRsaW5nKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBzb21lIHByZXR0eSBmdW5kYW1lbnRhbCBuZXR3b3JraW5nIGNvbXBvbmVudHM6IElQdjQgYW5kIElQdjYgdHVubmVsIGNyZWF0aW9uIGFuZCByYXcgc29ja2V0IHNlbmRpbmcuIEkgc2VlIHRoZXkndmUgYWRkZWQgc29tZSBjcnVjaWFsIGNoZWNrcyByZWxhdGVkIHRvIGhlYWRlciBsZW5ndGggY2FsY3VsYXRpb25zIHRvIHByZXZlbnQgcG90ZW50aWFsIG92ZXJmbG93cywgc3BlY2lmaWNhbGx5IGluIGBpcF90dW5uZWxfY2FsY19kZXZfY29uZmlnYCwgYHJhd19zZW5kX2hkcmluY2AsIGFuZCBgcmF3djZfc2VuZF9oZHJpbmNgLiBUaGUgY2hlY2tzIGluIHRoZSBpcCB0dW5uZWwgY29kZSBub3cgaGFuZGxlIHRoZSBleHRlbmRlZCBhY2sgYXMgd2VsbCwgYW5kIHJldHVybiBlcnJvcnMgaWYgdGhlIGhlYWRyb29tIGlzIHRvbyBsYXJnZS4gVGhhdCdzIGEgY2xhc3NpYyBhcmVhIGZvciBmdXp6aW5nLCBwb3RlbnRpYWwgZm9yIGJ1ZmZlciBvdmVyZmxvd3Mgb3IgaW50ZWdlci1yZWxhdGVkIHZ1bG5lcmFiaWxpdGllcyB0aGVyZS4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhcyB3ZWxsLCBzbyB0aGF0IGFsc28gbWFrZXMgdGhpcyBoaWdoIG9uIHRoZSBsaXN0LlxuXG5NeSBpbml0aWFsIGZvY3VzIHdpbGwgYmUgaG9uaW5nIGluIG9uIHRoZXNlIHZ1bG5lcmFibGUgZW50cnkgcG9pbnRzLiBJJ3ZlIGdvdCB0byBpZGVudGlmeSB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIGdvaW5nIHRvIGJlIG1vc3QgZWZmZWN0aXZlIGZvciBmdXp6aW5nLiBMb29rcyBsaWtlIHdlJ3JlIGludGVyZXN0ZWQgaW4gdGhlIGZvbGxvd2luZzogYGlwX3R1bm5lbF9jYWxjX2Rldl9jb25maWdgLCBgaXBfdHVubmVsX2JpbmRfZGV2YCwgYGlwX3R1bm5lbF91cGRhdGVgLCBgaXBfdHVubmVsX25ld2xpbmtgLCBgaXBfdHVubmVsX2NoYW5nZWxpbmtgLCBgcmF3X3NlbmRfaGRyaW5jYCwgYW5kIGByYXd2Nl9zZW5kX2hkcmluY2AuXG5cbkJlY2F1c2UgYGlwX3R1bm5lbF9uZXdsaW5rYCBhbmQgYGlwX3R1bm5lbF9jaGFuZ2VsaW5rYCBhcmUgZXhwb3J0ZWQsIG5vbi1zdGF0aWMsIGFuZCBwYXJ0IG9mIHRoZSB0dW5uZWwgY3JlYXRpb24vbW9kaWZpY2F0aW9uIHByb2Nlc3MsIHRoZXkgbG9vayBsaWtlIHByaW1lIHRhcmdldHMuIE9uIHRoZSByYXcgc29ja2V0IHNpZGUsIGByYXdfc2VuZF9oZHJpbmNgIGFuZCBgcmF3djZfc2VuZF9oZHJpbmNgIGFyZSBzdGF0aWMsIHNvIEkgbmVlZCB0byBmaW5kIHRoZWlyIGVudHJ5IHBvaW50cywgd2hpY2ggbWVhbnMgSSdsbCBiZSBsb29raW5nIGF0IGByYXdfc2VuZG1zZ2AgYW5kIGByYXd2Nl9zZW5kbXNnYCByZXNwZWN0aXZlbHkuXG5cbk5vdywgSSdsbCBkaXZlIGludG8gdGhlIHNvdXJjZSBjb2RlIHRvIGdldCB0aGUgc3BlY2lmaWMgY2FsbHMuIEknbGwgY2hlY2sgYG5ldC9pcHY0L3Jhdy5jYCBmb3IgYHJhd19zZW5kbXNnYCBhbmQgdGhlbiBgbmV0L2lwdjYvcmF3LmNgIGZvciBgcmF3djZfc2VuZG1zZ2AgdG8gZ2V0IHRoZSBjb250ZXh0IGFyb3VuZCB0aG9zZSBmdW5jdGlvbiBjYWxscy4gTGV0J3Mgc3RhcnQgd2l0aCBhIHF1aWNrIGdyZXAgdG8gbWFrZSBzdXJlIEknbSBvbiB0aGUgcmlnaHQgdHJhY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2MTcsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDozMzo0MS4xOTAxNjA3NDFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA4NTg5NjAxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKHN0YXRpYyApP2ludCByYXdfc2VuZG1zZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY2FuL3Jhdy5jPTg5OD1zdGF0aWMgdW5zaWduZWQgaW50IHJhd19jaGVja190eGZyYW1lKHN0cnVjdCByYXdfc29jayAqcm8sIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvY2FuL3Jhdy5jLTkxNy1cXG5uZXQvY2FuL3Jhdy5jOjkxODpzdGF0aWMgaW50IHJhd19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUpXFxubmV0L2Nhbi9yYXcuYy05MTkte1xcbi0tXFxubmV0L2llZWU4MDIxNTQvc29ja2V0LmM9MjM2PXN0YXRpYyBpbnQgcmF3X2Rpc2Nvbm5lY3Qoc3RydWN0IHNvY2sgKnNrLCBpbnQgZmxhZ3MpXFxuLS1cXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYy0yNDAtXFxubmV0L2llZWU4MDIxNTQvc29ja2V0LmM6MjQxOnN0YXRpYyBpbnQgcmF3X3NlbmRtc2coc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKVxcbm5ldC9pZWVlODAyMTU0L3NvY2tldC5jLTI0Mi17XFxuLS1cXG5uZXQvaXB2NC9yYXcuYz00NjE9c3RhdGljIGludCByYXdfZ2V0ZnJhZyh2b2lkICpmcm9tLCBjaGFyICp0bywgaW50IG9mZnNldCwgaW50IGxlbiwgaW50IG9kZCxcXG4tLVxcbm5ldC9pcHY0L3Jhdy5jLTQ5MS1cXG5uZXQvaXB2NC9yYXcuYzo0OTI6c3RhdGljIGludCByYXdfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcXG5uZXQvaXB2NC9yYXcuYy00OTMte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDozMzo0NC4yNzYwNjA5MTVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzMyNTkxOTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBkaXN0aWxsZWQ6XG5cbioqRGlnZ2luZyBpbnRvIFJhdyBTb2NrZXQgU2VuZCBGdW5jdGlvbmFsaXR5KipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgYHJhd19zZW5kbXNnYCBpbiBgbmV0L2lwdjQvcmF3LmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiV2FpdCwgaXMgdGhpcyBmdW5jdGlvbiBzdGF0aWM/XCIgSSBuZWVkIHRvIHZlcmlmeSB0aGF0LiBZZXAsIGl0IGlzLiBJbnRlcmVzdGluZy4gTm93LCB0aGUgbmV4dCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0ICp0aGlzKiBzdGF0aWMgYHJhd19zZW5kbXNnYCBmdW5jdGlvbiBpcyBhc3NpZ25lZCB0byBgcHJvdG8uc2VuZG1zZ2AuIFRoYXQncyBob3cgaXQncyBiZWluZyBhY2Nlc3NlZCBleHRlcm5hbGx5LiBJIGtub3cgd2hhdCdzIGdvaW5nIG9uIG5vdywgYnV0IEkgbmVlZCB0byBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IGJ5IGNoZWNraW5nIGBuZXQvaXB2NC9yYXcuY2AgZm9yIGJvdGggYHJhd19zZW5kbXNnYCBhbmQgYWxzbyB0aGUgcmVsYXRlZCBmdW5jdGlvbiBgcmF3X3NlbmRfaGRyaW5jYC4gSXQgc2VlbXMgbGlrZSBhIGNsYXNzaWMgY2FzZSBvZiBmdW5jdGlvbiBwb2ludGVyIG1hZ2ljLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODcxLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MzM6NDkuMDA4NjU0OTc0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjQzNDA1MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmF3X3NlbmRfaGRyaW5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3Jhdy5jPTMxOT1pbnQgcmF3X3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC9yYXcuYy0zMzMtXFxubmV0L2lwdjQvcmF3LmM6MzM0OnN0YXRpYyBpbnQgcmF3X3NlbmRfaGRyaW5jKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGZsb3dpNCAqZmw0LFxcbm5ldC9pcHY0L3Jhdy5jLTMzNS1cXHRcXHRcXHQgICBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW5ndGgsXFxuLS1cXG5uZXQvaXB2NC9yYXcuYz00OTI9c3RhdGljIGludCByYXdfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcXG4tLVxcbm5ldC9pcHY0L3Jhdy5jLTY1NC1cXHRpZiAoaGRyaW5jbClcXG5uZXQvaXB2NC9yYXcuYzo2NTU6XFx0XFx0ZXJyID0gcmF3X3NlbmRfaGRyaW5jKHNrLCBcXHUwMDI2Zmw0LCBtc2csIGxlbixcXG5uZXQvaXB2NC9yYXcuYy02NTYtXFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnJ0LCBtc2ctXFx1MDAzZW1zZ19mbGFncywgXFx1MDAyNmlwYy5zb2NrYyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjMzOjUwLjY3MzAwMzI2OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNzU2MDQ3MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIHRoZSBgcmF3djZfc2VuZG1zZ2AgRnVuY3Rpb24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byBpdC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYHJhd3Y2X3NlbmRtc2dgLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBpcyBoYW5kbGVkLCB0aGUga2V5IGZ1bmN0aW9uIGZvciBzZW5kaW5nIHJhdyBJUHY2IGRhdGFncmFtcy4gSXQncyB0aGUgY29yZSBvZiB0aGlzIG9wZXJhdGlvbi4gTGV0J3Mgc2VlIGhvdyB0aGluZ3MgYXJlIGZsb3dpbmcgdGhyb3VnaCB0aGF0IHNwZWNpZmljIHBpZWNlIG9mIHRoZSBjb2RlLiBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6OTQwMiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjMzOjUzLjk0ODYxMDMzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NjU4MDM3MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmF3djZfc2VuZG1zZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0X2NhY2hlbGluZXMvaW5ldF9zb2NrLnJzdD0xMj1zdHJ1Y3QgaXB2Nl9waW5mbyogICAgICAgcGluZXQ2XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL2luZXRfc29jay5yc3Q6MTM6c3RydWN0IGlwdjZfZmxfc29ja2xpc3QqIGlwdjZfZmxfbGlzdCAgICAgICAgICByZWFkX21vc3RseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNwX3Y2X2Nvbm5lY3QsX19pcDZfZGF0YWdyYW1fY29ubmVjdCx1ZHB2Nl9zZW5kbXNnLHJhd3YuLi5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0X2NhY2hlbGluZXMvaW5ldF9zb2NrLnJzdC0xNC1iZTE2ICAgICAgICAgICAgICAgICAgICAgaW5ldF9zcG9ydCAgICAgICAgICAgIHJlYWRfbW9zdGx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3RjcF90cmFuc21pdF9za2JcXG4tLVxcbm5ldC9pcHY2L3Jhdy5jPTcxNT1zdGF0aWMgaW50IHJhdzZfZ2V0ZnJhZyh2b2lkICpmcm9tLCBjaGFyICp0bywgaW50IG9mZnNldCwgaW50IGxlbiwgaW50IG9kZCxcXG4tLVxcbm5ldC9pcHY2L3Jhdy5jLTc0NS1cXG5uZXQvaXB2Ni9yYXcuYzo3NDY6c3RhdGljIGludCByYXd2Nl9zZW5kbXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcbm5ldC9pcHY2L3Jhdy5jLTc0Ny17XFxuLS1cXG5uZXQvaXB2Ni9yYXcuYz0xMjAwPXN0cnVjdCBwcm90byByYXd2Nl9wcm90ID0ge1xcbi0tXFxubmV0L2lwdjYvcmF3LmMtMTIxMC1cXHQuZ2V0c29ja29wdFxcdCAgID0gcmF3djZfZ2V0c29ja29wdCxcXG5uZXQvaXB2Ni9yYXcuYzoxMjExOlxcdC5zZW5kbXNnXFx0ICAgPSByYXd2Nl9zZW5kbXNnLFxcbm5ldC9pcHY2L3Jhdy5jLTEyMTItXFx0LnJlY3Ztc2dcXHQgICA9IHJhd3Y2X3JlY3Ztc2csXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdHh0aW1lc3RhbXAuYz00ODY9c3RhdGljIHZvaWQgZG9fdGVzdChpbnQgZmFtaWx5LCB1bnNpZ25lZCBpbnQgcmVwb3J0X29wdClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90eHRpbWVzdGFtcC5jLTUwOS1cXHRcXHR9XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3R4dGltZXN0YW1wLmM6NTEwOlxcdFxcdC8qIHNwZWNpYWwgY2FzZSwgb25seSByYXd2Nl9zZW5kbXNnOlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90eHRpbWVzdGFtcC5jLTUxMS1cXHRcXHQgKiBwYXNzIHByb3RvIGluIHNpbjZfcG9ydCBpZiBub3QgY29ubmVjdGVkXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjMzOjU1LjQxNDQxODYxOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNjUzMjU1MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXR3b3JrIFN0YWNrIC0gQSBEZWVwIERpdmUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgcmF3X3NlbmRtc2dgIGFuZCBgcmF3djZfc2VuZG1zZ2AuIEludGVyZXN0aW5nLCB0aGV5J3JlIHN0YXRpYyBmdW5jdGlvbnMuIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJPa2F5LCB0aGF0J3Mgbm90IHVudXN1YWwgZm9yIGludGVybmFsIGhlbHBlcnMsIGJ1dCBsZXQncyBzZWUgd2hlcmUgdGhleSdyZSB1c2VkLlwiIEkgcXVpY2tseSByZWFsaXplZCBgcmF3X3NlbmRtc2dgIGlzIHN0YXRpYyB3aXRoaW4gYG5ldC9pcHY0L3Jhdy5jYC4gVGhlIG5leHQgcXVlc3Rpb24gaXMsIGFyZSB0aGV5IGNhbGxlZCBieSBhbnl0aGluZyBvdXRzaWRlIG9mIHRoYXQgc3RhdGljIHNjb3BlPyBUaGVuIEkgcmVtZW1iZXIgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IGFzc2lnbmVkIHRvIGBwcm90by5zZW5kbXNnYC4gVGhhdCdzIHRoZSBjbHVlISBUaGlzIG1lYW5zIHRoZXkncmUgcGFydCBvZiB0aGUgcHJvdG9jb2wgb3BlcmF0aW9ucy5cblxuTm93IEkgbmVlZCB0byBmaW5kIHRoZSBicmlkZ2UgYmV0d2VlbiBzdGF0aWMgc2NvcGUgYW5kIG91dHNpZGUgYWNjZXNzLiBBaCEgVGhpbmtpbmcgYWJvdXQgaXQuLi4gYGlwX3R1bm5lbF9uZXdsaW5rYCBhbmQgYGlwX3R1bm5lbF9jaGFuZ2VsaW5rYCEgVGhvc2UgYXJlIGV4cG9ydGVkLCBzbyB0aGV5IGhhdmUgdG8gYmUgdGhlIGNvbm5lY3Rpb24uIExldCBtZSBzaGlmdCBteSBmb2N1cyB0byBgaXBfdHVubmVsX25ld2xpbmtgLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0IGRpZ2dpbmcgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHN0YXRpYyBmdW5jdGlvbnMgZml0IGludG8gdGhlIHR1bm5lbCBzZXR1cCBwcm9jZXNzLiBUaGlzIGxvb2tzIHByb21pc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwNjYsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDozMzo1OS42Nzk3NDcwODVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTMyODA1MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfdHVubmVsX25ld2xpbmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oPTQyNz1pbnQgaXBfdHVubmVsX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG4tLVxcbmluY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaC00MjktXFx0XFx0XFx0IHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oOjQzMDppbnQgaXBfdHVubmVsX25ld2xpbmsoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmluY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaC00MzEtXFx0XFx0ICAgICAgc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAsXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xNDA5PXN0YXRpYyBpbnQgaXBncmVfbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTQyNS1cXHRcXHRyZXR1cm4gZXJyO1xcbm5ldC9pcHY0L2lwX2dyZS5jOjE0MjY6XFx0cmV0dXJuIGlwX3R1bm5lbF9uZXdsaW5rKHBhcmFtcy1cXHUwMDNlbGlua19uZXQgPyA6IGRldl9uZXQoZGV2KSwgZGV2LCB0YiwgXFx1MDAyNnAsXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTQyNy1cXHRcXHRcXHRcXHQgZndtYXJrLCBleHRhY2spO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9MTQzMD1zdGF0aWMgaW50IGVyc3Bhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDQ2LVxcdFxcdHJldHVybiBlcnI7XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTQ0NzpcXHRyZXR1cm4gaXBfdHVubmVsX25ld2xpbmsocGFyYW1zLVxcdTAwM2VsaW5rX25ldCA/IDogZGV2X25ldChkZXYpLCBkZXYsIHRiLCBcXHUwMDI2cCxcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDQ4LVxcdFxcdFxcdFxcdCBmd21hcmssIGV4dGFjayk7XFxuLS1cXG5uZXQvaXB2NC9pcF90dW5uZWwuYz0xMjM5PUVYUE9SVF9TWU1CT0xfR1BMKGlwX3R1bm5lbF9kZWxldGVfbmV0KTtcXG5uZXQvaXB2NC9pcF90dW5uZWwuYy0xMjQwLVxcbm5ldC9pcHY0L2lwX3R1bm5lbC5jOjEyNDE6aW50IGlwX3R1bm5lbF9uZXdsaW5rKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvaXB2NC9pcF90dW5uZWwuYy0xMjQyLVxcdFxcdCAgICAgIHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwLFxcbi0tXFxubmV0L2lwdjQvaXBfdHVubmVsLmMtMTI5NC19XFxubmV0L2lwdjQvaXBfdHVubmVsLmM6MTI5NTpFWFBPUlRfU1lNQk9MX0dQTChpcF90dW5uZWxfbmV3bGluayk7XFxubmV0L2lwdjQvaXBfdHVubmVsLmMtMTI5Ni1cXG4tLVxcbm5ldC9pcHY0L2lwX3Z0aS5jPTU3Nz1zdGF0aWMgaW50IHZ0aV9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvaXB2NC9pcF92dGkuYy01ODYtXFx0dnRpX25ldGxpbmtfcGFybXMoZGF0YSwgXFx1MDAyNnBhcm1zLCBcXHUwMDI2ZndtYXJrKTtcXG5uZXQvaXB2NC9pcF92dGkuYzo1ODc6XFx0cmV0dXJuIGlwX3R1bm5lbF9uZXdsaW5rKHBhcmFtcy1cXHUwMDNlbGlua19uZXQgPyA6IGRldl9uZXQoZGV2KSwgZGV2LCB0YixcXG5uZXQvaXB2NC9pcF92dGkuYy01ODgtXFx0XFx0XFx0XFx0IFxcdTAwMjZwYXJtcywgZndtYXJrLCBleHRhY2spO1xcbi0tXFxubmV0L2lwdjQvaXBpcC5jPTQ2ND1zdGF0aWMgaW50IGlwaXBfbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2lwdjQvaXBpcC5jLTQ4Mi1cXHRpcGlwX25ldGxpbmtfcGFybXMoZGF0YSwgXFx1MDAyNnAsIFxcdTAwMjZ0LVxcdTAwM2Vjb2xsZWN0X21kLCBcXHUwMDI2ZndtYXJrKTtcXG5uZXQvaXB2NC9pcGlwLmM6NDgzOlxcdHJldHVybiBpcF90dW5uZWxfbmV3bGluayhwYXJhbXMtXFx1MDAzZWxpbmtfbmV0ID8gOiBkZXZfbmV0KGRldiksIGRldiwgdGIsIFxcdTAwMjZwLFxcbm5ldC9pcHY0L2lwaXAuYy00ODQtXFx0XFx0XFx0XFx0IGZ3bWFyaywgZXh0YWNrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MzQ6MDEuMTczMDM2MDgyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4MjQ1MTM5MzU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLZXJuZWwgU3ltYm9scyBmb3IgRm9jdXMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHBvdGVudGlhbCBmb2N1cyBzeW1ib2xzIGhlcmUuIGBpcF90dW5uZWxfbmV3bGlua2AgYW5kIGBpcF90dW5uZWxfY2hhbmdlbGlua2AgbG9vayBwcm9taXNpbmcg4oCTIHRoZXkncmUgZXhwb3J0ZWQgYW5kIGxldmVyYWdlZCBieSBzZXZlcmFsIG90aGVyIGZ1bmN0aW9ucyBsaWtlIGBpcGdyZV9uZXdsaW5rYCwgYGVyc3Bhbl9uZXdsaW5rYCwgYHZ0aV9uZXdsaW5rYCwgYW5kIGBpcGlwX25ld2xpbmtgLCB3aGljaCBhcmUgYWxsIGBydG5sX2xpbmtfb3BzYCBjYWxsYmFja3MuIFRoYXQgbWFrZXMgdGhlbSBzb2xpZCBjYW5kaWRhdGVzLlxuXG5Ob3csIEkgd2FzIGluaXRpYWxseSBjb25zaWRlcmluZyBgcmF3X3NlbmRfaGRyaW5jYCwgYnV0IGl0J3Mgc3RhdGljLCBhbmQgdGhlIGluc3RydWN0aW9ucyBhcmUgY2xlYXI6IHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeXBvaW50cy4gIFRoaW5raW5nIGFib3V0IGl0LCB0aG91Z2gsIGByYXdfc2VuZG1zZ2AgaXMgKmFsc28qIHN0YXRpYywgd2hpY2ggc2VlbXMgcHJvYmxlbWF0aWMsIGJ1dCBob2xkIG9uIGEgc2Vjb25kLi4uIEFoLCByaWdodCwgYHJhd19zZW5kbXNnYCBpcyBhY3R1YWxseSBhc3NpZ25lZCB0byBgcHJvdG8uc2VuZG1zZ2AuIFRoYXQgbWVhbnMgaXQgKmlzbid0KiBpbmxpbmVkLlxuXG5UaGUgZ3VpZGluZyBwcmluY2lwbGUgaXMgdG8gYXZvaWQgaW5saW5lZCBmdW5jdGlvbnMgYmVjYXVzZSB0aGV5IGRvbid0IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcywgYW5kIHRoYXQgbWFrZXMgdGhlbSBsZXNzIGlkZWFsLiAgYHJhd19zZW5kbXNnYCBhbmQgYHJhd3Y2X3NlbmRtc2dgIGFyZSBub3QgaW5saW5lZCBiZWNhdXNlIHRoZXkgYXJlIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzLCBzbyB0aGV5J3JlIHBlcmZlY3RseSBmaW5lLlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBnZXQgdG9vIGZhciwgbGV0J3MganVzdCBxdWlja2x5IGNoZWNrIGlmIGBpcF90dW5uZWxfbmV3bGlua2AgKHNpbmNlIHRoYXQgd2FzIG15IGluaXRpYWwgc3Ryb25nIGNhbmRpZGF0ZSkgaGFzIGFueSBzcGVjaWZpYyBDT05GSUcgb3B0aW9ucyB0aGF0IG1pZ2h0IG1ha2UgaXQgbGVzcyB1bml2ZXJzYWxseSB1c2VmdWwuIEl0IHJlc2lkZXMgaW4gYG5ldC9pcHY0L2lwX3R1bm5lbC5jYCwgc28gSSdsbCBjaGVjayBgbmV0L2lwdjQvTWFrZWZpbGVgIGZvciBgaXBfdHVubmVsLm9gIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMzA3LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjM0OjE5LjQxODE3NzY3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDk1NDcxNTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3R1bm5lbFxcXFwub1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxcXFxuLS1cXG5uZXQvaXB2NC9NYWtlZmlsZS0xOC1cXG5uZXQvaXB2NC9NYWtlZmlsZToxOTpvYmotJChDT05GSUdfTkVUX0lQX1RVTk5FTCkgKz0gaXBfdHVubmVsLm9cXG5uZXQvaXB2NC9NYWtlZmlsZS0yMC1vYmotJChDT05GSUdfU1lTQ1RMKSArPSBzeXNjdGxfbmV0X2lwdjQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDozNDoyMS41MTM2NTUxMDlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU4NDc5NjYzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gYW5kIHRoZSBSYXcgU29ja2V0IEZyb250aWVyKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLiBUaGUga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgSVAgdHVubmVscywgc3BlY2lmaWNhbGx5IGBDT05GSUdfTkVUX0lQX1RVTk5FTGAsIGhhdmUgZGVmaW5pdGVseSBiZWVuIG9uIG15IG1pbmQgbGF0ZWx5LiBJdCdzIGEga2V5IHBpZWNlIGluIGhvdyB3ZSBoYW5kbGUgZW5jYXBzdWxhdGVkIHRyYWZmaWMgYW5kIHZpcnR1YWwgbmV0d29ya3Mgd2l0aGluIHRoZSBrZXJuZWwgc3BhY2UuIEFsd2F5cyBpbXBvcnRhbnQgdG8gcmV2aXNpdCB0aGUgaW1wbGljYXRpb25zIG9mIGl0cyBzZWxlY3Rpb24uXG5cblRoZW4sIG15IHRyYWluIG9mIHRob3VnaHQgZHJpZnRlZCB0b3dhcmRzIGByYXcuY2AuIFRoYXQgZmlsZSBhbHdheXMgcG9wcyB1cCB3aGVuIEknbSBkZWFsaW5nIHdpdGggbG93LWxldmVsIG5ldHdvcmsgZnVuY3Rpb25hbGl0eS4gUmF3IHNvY2tldHMgb2ZmZXIgdGhhdCBkaXJlY3QgYWNjZXNzIHRvIHRoZSBuZXR3b3JrIGxheWVyLCBieXBhc3NpbmcgbXVjaCBvZiB0aGUgdHlwaWNhbCBwcm90b2NvbCBzdGFjay4gSSdtIHdvbmRlcmluZyBpZiB0aGVyZSdzIGEgc3BlY2lmaWMgaW50ZXJhY3Rpb24gSSdtIGNvbnNpZGVyaW5nLCBwZXJoYXBzIGEgcGVyZm9ybWFuY2UgYm90dGxlbmVjaywgb3IgbWF5YmUgYSBwb3RlbnRpYWwgZmVhdHVyZSBJJ20gZXZhbHVhdGluZyBmb3IgaW50ZWdyYXRpb24gd2l0aCB0aGUgdHVubmVsIGZ1bmN0aW9uYWxpdHkuIEdvdHRhIGNoZWNrIGlmIHRob3NlIHR3byBwaWVjZXMgYXJlIHBsYXlpbmcgbmljZWx5IHRvZ2V0aGVyLCBvciBpZiB0aGVyZSBpcyBzb21lIGlzc3VlIHdpdGggdGhlIHJhdyBzb2NrZXRzIGFjY2VzcyBhbmQgdGhlIGlwIHR1bm5lbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIwNzksIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDozNDoyNy4wOTg0NTUyNTVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNzU3ODQyNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmF3XFxcXC5vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvY3hsL2NvcmUvbWJveC5jPTQwNT1zdGF0aWMgaW50IGN4bF90b19tZW1fY21kX3JhdyhzdHJ1Y3QgY3hsX21lbV9jb21tYW5kICptZW1fY21kLFxcbi0tXFxuZHJpdmVycy9jeGwvY29yZS9tYm94LmMtNDE5LVxcbmRyaXZlcnMvY3hsL2NvcmUvbWJveC5jOjQyMDpcXHRpZiAoIWN4bF9tZW1fcmF3X2NvbW1hbmRfYWxsb3dlZChzZW5kX2NtZC1cXHUwMDNlcmF3Lm9wY29kZSkpXFxuZHJpdmVycy9jeGwvY29yZS9tYm94LmMtNDIxLVxcdFxcdHJldHVybiAtRVBFUk07XFxuLS1cXG5kcml2ZXJzL2N4bC9jb3JlL21ib3guYy00MzAtXFx0XFx0fSxcXG5kcml2ZXJzL2N4bC9jb3JlL21ib3guYzo0MzE6XFx0XFx0Lm9wY29kZSA9IHNlbmRfY21kLVxcdTAwM2VyYXcub3Bjb2RlXFxuZHJpdmVycy9jeGwvY29yZS9tYm94LmMtNDMyLVxcdH07XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9OTM9ZHJtLSQoQ09ORklHX0RSTV9QQU5JQykgKz0gZHJtX3BhbmljLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6OTQ6ZHJtLSQoQ09ORklHX0RSTV9EUkFXKSArPSBkcm1fZHJhdy5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTk1LWRybS0kKENPTkZJR19EUk1fUEFOSUNfU0NSRUVOX1FSX0NPREUpICs9IGRybV9wYW5pY19xci5vXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vcXhsL01ha2VmaWxlLTUtXFxuZHJpdmVycy9ncHUvZHJtL3F4bC9NYWtlZmlsZTo2OnF4bC15IDo9IHF4bF9kcnYubyBxeGxfa21zLm8gcXhsX2Rpc3BsYXkubyBxeGxfdHRtLm8gcXhsX29iamVjdC5vIHF4bF9nZW0ubyBxeGxfY21kLm8gcXhsX2ltYWdlLm8gcXhsX2RyYXcubyBxeGxfZGVidWdmcy5vIHF4bF9pcnEubyBxeGxfZHVtYi5vIHF4bF9pb2N0bC5vIHF4bF9yZWxlYXNlLm8uLi5cXG5kcml2ZXJzL2dwdS9kcm0vcXhsL01ha2VmaWxlLTctXFxuLS1cXG5kcml2ZXJzL2hpZC9NYWtlZmlsZT0xND1vYmotJChDT05GSUdfSElEX0dFTkVSSUMpXFx0Kz0gaGlkLWdlbmVyaWMub1xcbmRyaXZlcnMvaGlkL01ha2VmaWxlLTE1LVxcbmRyaXZlcnMvaGlkL01ha2VmaWxlOjE2OmhpZC0kKENPTkZJR19ISURSQVcpXFx0XFx0Kz0gaGlkcmF3Lm9cXG5kcml2ZXJzL2hpZC9NYWtlZmlsZS0xNy1cXG4tLVxcbmRyaXZlcnMvaW5wdXQvc2VyaW8vTWFrZWZpbGU9MjM9b2JqLSQoQ09ORklHX1NFUklPX0xJQlBTMilcXHQrPSBsaWJwczIub1xcbmRyaXZlcnMvaW5wdXQvc2VyaW8vTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX1NFUklPX1JBVylcXHRcXHQrPSBzZXJpb19yYXcub1xcbmRyaXZlcnMvaW5wdXQvc2VyaW8vTWFrZWZpbGUtMjUtb2JqLSQoQ09ORklHX1NFUklPX0FNU19ERUxUQSlcXHQrPSBhbXNfZGVsdGFfc2VyaW8ub1xcbi0tXFxuZHJpdmVycy9tZWRpYS9yYy9NYWtlZmlsZT0zPW9iai15ICs9IGtleW1hcHMvXFxuZHJpdmVycy9tZWRpYS9yYy9NYWtlZmlsZS00LVxcbmRyaXZlcnMvbWVkaWEvcmMvTWFrZWZpbGU6NTpyYy1jb3JlLXkgOj0gcmMtbWFpbi5vIHJjLWlyLXJhdy5vXFxuZHJpdmVycy9tZWRpYS9yYy9NYWtlZmlsZS02LXJjLWNvcmUtJChDT05GSUdfTElSQykgKz0gbGlyY19kZXYub1xcbi0tXFxuZHJpdmVycy9tZWRpYS9yYy9NYWtlZmlsZT0zNj1vYmotJChDT05GSUdfSVJfSU1PTikgKz0gaW1vbi5vXFxuZHJpdmVycy9tZWRpYS9yYy9NYWtlZmlsZTozNzpvYmotJChDT05GSUdfSVJfSU1PTl9SQVcpICs9IGltb25fcmF3Lm9cXG5kcml2ZXJzL21lZGlhL3JjL01ha2VmaWxlLTM4LW9iai0kKENPTkZJR19JUl9JVEVfQ0lSKSArPSBpdGUtY2lyLm9cXG4tLVxcbmRyaXZlcnMvbWVkaWEvcmMvaW1nLWlyL01ha2VmaWxlPTI9aW1nLWlyLXlcXHRcXHRcXHQ6PSBpbWctaXItY29yZS5vXFxuZHJpdmVycy9tZWRpYS9yYy9pbWctaXIvTWFrZWZpbGU6MzppbWctaXItJChDT05GSUdfSVJfSU1HX1JBVylcXHQrPSBpbWctaXItcmF3Lm9cXG5kcml2ZXJzL21lZGlhL3JjL2ltZy1pci9NYWtlZmlsZS00LWltZy1pci0kKENPTkZJR19JUl9JTUdfSFcpXFx0Kz0gaW1nLWlyLWh3Lm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2luaXRfb3BzLmg9MjI5PXN0YXRpYyB2b2lkIGJueDJ4X2luaXRfYmxvY2soc3RydWN0IGJueDJ4ICpicCwgdTMyIGJsb2NrLCB1MzIgc3RhZ2UpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9pbml0X29wcy5oLTI1MC1cXHRcXHQvKiBHZXQgZ2VuZXJpYyBkYXRhICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaW5pdF9vcHMuaDoyNTE6XFx0XFx0b3BfdHlwZSA9IG9wLVxcdTAwM2VyYXcub3A7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaW5pdF9vcHMuaDoyNTI6XFx0XFx0YWRkciA9IG9wLVxcdTAwM2VyYXcub2Zmc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2luaXRfb3BzLmgtMjUzLVxcdFxcdC8qIEdldCBkYXRhIHRoYXQncyB1c2VkIGZvciBPUF9TVywgT1BfV0IsIE9QX0ZXLCBPUF9aUCBhbmRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX2luaXRfb3BzLmM9NTQ4PWludCBxZWRfaW5pdF9ydW4oc3RydWN0IHFlZF9od2ZuICpwX2h3Zm4sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9pbml0X29wcy5jLTU2NS1cXHRcXHR1bmlvbiBpbml0X29wICpjbWQgPSBcXHUwMDI2aW5pdF9vcHNbY21kX251bV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfaW5pdF9vcHMuYzo1NjY6XFx0XFx0dTMyIGRhdGEgPSBsZTMyX3RvX2NwdShjbWQtXFx1MDAzZXJhdy5vcF9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9pbml0X29wcy5jLTU2Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dhbi9NYWtlZmlsZT05PW9iai0kKENPTkZJR19IRExDKVxcdFxcdCs9IGhkbGMub1xcbmRyaXZlcnMvbmV0L3dhbi9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfSERMQ19SQVcpXFx0XFx0Kz0gaGRsY19yYXcub1xcbmRyaXZlcnMvbmV0L3dhbi9NYWtlZmlsZS0xMS1vYmotJChDT05GSUdfSERMQ19SQVdfRVRIKVxcdCs9IGhkbGNfcmF3X2V0aC5vXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvZ3JleWJ1cy9NYWtlZmlsZT0xND1nYi1wb3dlci1zdXBwbHkteVxcdDo9IHBvd2VyX3N1cHBseS5vXFxuZHJpdmVycy9zdGFnaW5nL2dyZXlidXMvTWFrZWZpbGU6MTU6Z2ItcmF3LXlcXHRcXHQ6PSByYXcub1xcbmRyaXZlcnMvc3RhZ2luZy9ncmV5YnVzL01ha2VmaWxlLTE2LWdiLXZpYnJhdG9yLXlcXHRcXHQ6PSB2aWJyYXRvci5vXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvZ3JleWJ1cy9NYWtlZmlsZT0yNT1vYmotJChDT05GSUdfR1JFWUJVU19QT1dFUilcXHQrPSBnYi1wb3dlci1zdXBwbHkub1xcbmRyaXZlcnMvc3RhZ2luZy9ncmV5YnVzL01ha2VmaWxlOjI2Om9iai0kKENPTkZJR19HUkVZQlVTX1JBVylcXHQrPSBnYi1yYXcub1xcbmRyaXZlcnMvc3RhZ2luZy9ncmV5YnVzL01ha2VmaWxlLTI3LW9iai0kKENPTkZJR19HUkVZQlVTX1ZJQlJBVE9SKVxcdCs9IGdiLXZpYnJhdG9yLm9cXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL3BjaS9pYV9jc3NfaXNwX2NvbmZpZ3MuYz0yMjI9aW50IGlhX2Nzc19jb25maWd1cmVfcmF3KGNvbnN0IHN0cnVjdCBpYV9jc3NfYmluYXJ5ICpiaW5hcnksXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvaWFfY3NzX2lzcF9jb25maWdzLmMtMjM2LVxcbmRyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL3BjaS9pYV9jc3NfaXNwX2NvbmZpZ3MuYzoyMzc6XFx0b2Zmc2V0ID0gYmluYXJ5LVxcdTAwM2VpbmZvLVxcdTAwM2VtZW1fb2Zmc2V0cy5vZmZzZXRzLmNvbmZpZy1cXHUwMDNlZG1lbS5yYXcub2Zmc2V0O1xcbmRyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL3BjaS9pYV9jc3NfaXNwX2NvbmZpZ3MuYy0yMzgtXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvcnVudGltZS9kZWJ1Zy9zcmMvaWFfY3NzX2RlYnVnLmM9NDQ3PXZvaWQgaWFfY3NzX2RlYnVnX2ZyYW1lX3ByaW50KGNvbnN0IHN0cnVjdCBpYV9jc3NfZnJhbWUgKmZyYW1lLFxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3AvcGNpL3J1bnRpbWUvZGVidWcvc3JjL2lhX2Nzc19kZWJ1Zy5jLTQ5NS1cXHRcXHRpYV9jc3NfZGVidWdfZHRyYWNlKDIsIFxcXCIgIFJBVyBQQUNLRUQgPSAlcFxcXFxuXFxcIixcXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvcnVudGltZS9kZWJ1Zy9zcmMvaWFfY3NzX2RlYnVnLmM6NDk2OlxcdFxcdFxcdFxcdCAgICBkYXRhICsgZnJhbWUtXFx1MDAzZXBsYW5lcy5yYXcub2Zmc2V0KTtcXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvcnVudGltZS9kZWJ1Zy9zcmMvaWFfY3NzX2RlYnVnLmMtNDk3LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3AvcGNpL3J1bnRpbWUvZGVidWcvc3JjL2lhX2Nzc19kZWJ1Zy5jLTQ5OS1cXHRcXHRpYV9jc3NfZGVidWdfZHRyYWNlKDIsIFxcXCIgIFJBVyA9ICVwXFxcXG5cXFwiLFxcbmRyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL3BjaS9ydW50aW1lL2RlYnVnL3NyYy9pYV9jc3NfZGVidWcuYzo1MDA6XFx0XFx0XFx0XFx0ICAgIGRhdGEgKyBmcmFtZS1cXHUwMDNlcGxhbmVzLnJhdy5vZmZzZXQpO1xcbmRyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL3BjaS9ydW50aW1lL2RlYnVnL3NyYy9pYV9jc3NfZGVidWcuYy01MDEtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvc2hfY3NzX3BhcmFtcy5jPTkyND1zaF9jc3Nfc2V0X2JsYWNrX2ZyYW1lKHN0cnVjdCBpYV9jc3Nfc3RyZWFtICpzdHJlYW0sXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvc2hfY3NzX3BhcmFtcy5jLTk0MS1cXHRwdHIgPSByYXdfYmxhY2tfZnJhbWUtXFx1MDAzZWRhdGFcXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvc2hfY3NzX3BhcmFtcy5jOjk0MjpcXHQrIHJhd19ibGFja19mcmFtZS1cXHUwMDNlcGxhbmVzLnJhdy5vZmZzZXQ7XFxuZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3AvcGNpL3NoX2Nzc19wYXJhbXMuYy05NDMtXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvc2hfY3NzX3NwLmM9NDIwPXNoX2Nzc19jb3B5X2ZyYW1lX3RvX3NwZnJhbWUoc3RydWN0IGlhX2Nzc19mcmFtZV9zcCAqc3BfZnJhbWVfb3V0LFxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3AvcGNpL3NoX2Nzc19zcC5jLTQzNy1cXHRjYXNlIElBX0NTU19GUkFNRV9GT1JNQVRfUkFXOlxcbmRyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL3BjaS9zaF9jc3Nfc3AuYzo0Mzg6XFx0XFx0c3BfZnJhbWVfb3V0LVxcdTAwM2VwbGFuZXMucmF3Lm9mZnNldCA9IGZyYW1lX2luLVxcdTAwM2VwbGFuZXMucmF3Lm9mZnNldDtcXG5kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9wY2kvc2hfY3NzX3NwLmMtNDM5LVxcdFxcdGJyZWFrO1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L2N4bF9tZW0uaD0xNjY9c3RydWN0IGN4bF9tZW1fcXVlcnlfY29tbWFuZHMge1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L2N4bF9tZW0uaC0xODYtICogQHJhdzogU3BlY2lhbCBmaWVsZHMgZm9yIHJhdyBjb21tYW5kc1xcbmluY2x1ZGUvdWFwaS9saW51eC9jeGxfbWVtLmg6MTg3OiAqIEByYXcub3Bjb2RlOiBPcGNvZGUgcGFzc2VkIHRvIGhhcmR3YXJlIHdoZW4gdXNpbmcgdGhlIFJBVyBjb21tYW5kLlxcbmluY2x1ZGUvdWFwaS9saW51eC9jeGxfbWVtLmgtMTg4LSAqIEByYXcucnN2ZDogTXVzdCBiZSB6ZXJvLlxcbi0tXFxubmV0L2F0bS9NYWtlZmlsZS01LVxcbm5ldC9hdG0vTWFrZWZpbGU6NjphdG0teVxcdFxcdDo9IHB2Yy5vIGlvY3RsLm8gY29tbW9uLm8gYXRtX21pc2MubyByYXcubyByZXNvdXJjZXMubyBhdG1fc3lzZnMub1xcbm5ldC9hdG0vTWFrZWZpbGUtNy1cXG4tLVxcbm5ldC9jYW4vTWFrZWZpbGU9OD1jYW4tJChDT05GSUdfUFJPQ19GUylcXHQrPSBwcm9jLm9cXG5uZXQvY2FuL01ha2VmaWxlLTktXFxubmV0L2Nhbi9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfQ0FOX1JBVylcXHQrPSBjYW4tcmF3Lm9cXG5uZXQvY2FuL01ha2VmaWxlOjExOmNhbi1yYXcteVxcdFxcdDo9IHJhdy5vXFxubmV0L2Nhbi9NYWtlZmlsZS0xMi1cXG4tLVxcbm5ldC9pcHY0L01ha2VmaWxlPTY9b2JqLXkgICAgIDo9IHJvdXRlLm8gaW5ldHBlZXIubyBwcm90b2NvbC5vIFxcXFxcXG4tLVxcbm5ldC9pcHY0L01ha2VmaWxlLTEyLVxcdCAgICAgdGNwX3JlY292ZXJ5Lm8gdGNwX3VscC5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZToxMzpcXHQgICAgIHRjcF9vZmZsb2FkLm8gdGNwX3BsYi5vIGRhdGFncmFtLm8gcmF3Lm8gdWRwLm8gXFxcXFxcbm5ldC9pcHY0L01ha2VmaWxlLTE0LVxcdCAgICAgdWRwX29mZmxvYWQubyBhcnAubyBpY21wLm8gZGV2aW5ldC5vIGFmX2luZXQubyBpZ21wLm8gXFxcXFxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlPTMzPW9iai0kKENPTkZJR19JUF9ORl9OQVQpICs9IGlwdGFibGVfbmF0Lm9cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX0lQX05GX1JBVykgKz0gaXB0YWJsZV9yYXcub1xcbm5ldC9pcHY0L25ldGZpbHRlci9NYWtlZmlsZS0zNS1vYmotJChDT05GSUdfSVBfTkZfU0VDVVJJVFkpICs9IGlwdGFibGVfc2VjdXJpdHkub1xcbi0tXFxubmV0L2lwdjYvTWFrZWZpbGU9OD1pcHY2LXkgOj1cXHRhZl9pbmV0Ni5vIGFueWNhc3QubyBpcDZfb3V0cHV0Lm8gaXA2X2lucHV0Lm8gYWRkcmNvbmYubyBcXFxcXFxuLS1cXG5uZXQvaXB2Ni9NYWtlZmlsZS0xMC1cXHRcXHRyb3V0ZS5vIGlwNl9maWIubyBpcHY2X3NvY2tnbHVlLm8gbmRpc2MubyB1ZHAubyBcXFxcXFxubmV0L2lwdjYvTWFrZWZpbGU6MTE6XFx0XFx0cmF3Lm8gaWNtcC5vIG1jYXN0Lm8gcmVhc3NlbWJseS5vIHRjcF9pcHY2Lm8gcGluZy5vIFxcXFxcXG5uZXQvaXB2Ni9NYWtlZmlsZS0xMi1cXHRcXHRleHRoZHJzLm8gZGF0YWdyYW0ubyBpcDZfZmxvd2xhYmVsLm8gaW5ldDZfY29ubmVjdGlvbl9zb2NrLm8gXFxcXFxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX0lQNl9ORl9NQU5HTEUpICs9IGlwNnRhYmxlX21hbmdsZS5vXFxubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19JUDZfTkZfUkFXKSArPSBpcDZ0YWJsZV9yYXcub1xcbm5ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZS0xMS1vYmotJChDT05GSUdfSVA2X05GX1NFQ1VSSVRZKSArPSBpcDZ0YWJsZV9zZWN1cml0eS5vXFxuLS1cXG50b29scy9wZXJmL3V0aWwvQnVpbGQ9NzU9cGVyZi11dGlsLXkgKz0gc2FtcGxlLm9cXG50b29scy9wZXJmL3V0aWwvQnVpbGQ6NzY6cGVyZi11dGlsLXkgKz0gc2FtcGxlLXJhdy5vXFxudG9vbHMvcGVyZi91dGlsL0J1aWxkOjc3OnBlcmYtdXRpbC15ICs9IHMzOTAtc2FtcGxlLXJhdy5vXFxudG9vbHMvcGVyZi91dGlsL0J1aWxkOjc4OnBlcmYtdXRpbC15ICs9IGFtZC1zYW1wbGUtcmF3Lm9cXG50b29scy9wZXJmL3V0aWwvQnVpbGQtNzktXFxuLS1cXG50b29scy9wZXJmL3V0aWwvaW50ZWwtcHQuYz0yMDI0PXN0YXRpYyBpbnQgaW50ZWxfcHRfc3ludGhfcHNiX3NhbXBsZShzdHJ1Y3QgaW50ZWxfcHRfcXVldWUgKnB0cSlcXG4tLVxcbnRvb2xzL3BlcmYvdXRpbC9pbnRlbC1wdC5jLTIwNDItXFx0cmF3LnJlc2VydmVkID0gMDtcXG50b29scy9wZXJmL3V0aWwvaW50ZWwtcHQuYzoyMDQzOlxcdHJhdy5vZmZzZXQgPSBwdHEtXFx1MDAzZXN0YXRlLVxcdTAwM2Vwc2Jfb2Zmc2V0O1xcbnRvb2xzL3BlcmYvdXRpbC9pbnRlbC1wdC5jLTIwNDQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjM0OjI5LjE3NDI0NTUyNFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzAwODU1MDM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgS2VybmVsJ3MgSVAgVHVubmVsaW5nIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyBJUCB0dW5uZWxpbmcgaXMgc2V0IHVwIGluIHRoZSBrZXJuZWwuIEl0IGxvb2tzIGxpa2UgYG5ldC9pcHY0L3Jhdy5vYCBhbmQgYG5ldC9pcHY2L3Jhdy5vYCBhcmUgY29tcGlsZWQgaW4gYnkgZGVmYXVsdDsgdGhleSdyZSBwYXJ0IG9mIHRoZSBzdGFuZGFyZCBgb2JqLXlgIGFuZCBgaXB2Ni15YCBjb25maWd1cmF0aW9ucy4gVGhhdCdzIGdvb2QgdG8ga25vdywgYnV0IG5vdCB0aGUgY29yZSBvZiB3aGF0IEknbSBhZnRlci4gTXkgbWFpbiBmb2N1cyBpcyBgQ09ORklHX05FVF9JUF9UVU5ORUxgLCBvYnZpb3VzbHkuXG5cbkhtbSwgd2FpdCBhIHNlY29uZC4uLiB0aGlzIGBpcF90dW5uZWxfbmV3bGlua2AgZnVuY3Rpb24uLi4gdGhhdCdzIGludGVyZXN0aW5nLiBJdCdzIGNhbGxlZCBieSBtb3JlIHRoYW4ganVzdCB0aGUgYmFzZSB0dW5uZWxpbmcgZnVuY3Rpb25hbGl0eS4gSXQncyBhbHNvIHV0aWxpemVkIGJ5IHNwZWNpZmljIHR1bm5lbCB0eXBlcywgbGlrZSBgaXBncmVfbmV3bGlua2AsIGBlcnNwYW5fbmV3bGlua2AsIGB2dGlfbmV3bGlua2AsIGFuZCBgaXBpcF9uZXdsaW5rYC4gVGhhdCBleHBhbmRzIHRoZSBzY29wZSBvZiB3aGF0IEkgbmVlZCB0byBjb25zaWRlci4gSSBzaG91bGQgdmVyaWZ5IHRoZSBidWlsZCBjb25maWd1cmF0aW9ucyBmb3IgdGhlIGluZGl2aWR1YWwgdHVubmVsIHR5cGVzLiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgYG5ldC9pcHY0L01ha2VmaWxlYCBzcGVjaWZpY2FsbHkgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYGlwX2dyZS5vYCwgYGlwX3Z0aS5vYCwgYW5kIGBpcGlwLm9gLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTY3NywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDozNDozMy40NzUxMDM0OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEzNjUxODc3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF9ncmVcXFxcLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9Mjk9b2JqLSQoQ09ORklHX05FVF9JUEdSRV9ERU1VWCkgKz0gZ3JlLm9cXG5uZXQvaXB2NC9NYWtlZmlsZTozMDpvYmotJChDT05GSUdfTkVUX0lQR1JFKSArPSBpcF9ncmUub1xcbm5ldC9pcHY0L01ha2VmaWxlLTMxLXVkcF90dW5uZWwteSA6PSB1ZHBfdHVubmVsX2NvcmUubyB1ZHBfdHVubmVsX25pYy5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjM0OjM1LjYxMTYyNzk0OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjY2ODMxNjgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBpbnN0cnVjdGlvbnMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIEtlcm5lbCBNb2R1bGVzIGZvciBQb3RlbnRpYWwgSW50ZXJhY3Rpb25zKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIHRha2luZyBhIGxvb2sgYXQgYGlwaXAub2AgYW5kIGBpcF92dGkub2AuIE15IGluaXRpYWwgaHlwb3RoZXNpcywgZ2l2ZW4gdGhlaXIgbmFtZXMsIGlzIHRoYXQgdGhlc2UgbGlrZWx5IGRlYWwgd2l0aCBJUC1pbi1JUCB0dW5uZWxpbmcgYW5kIFZpcnR1YWwgVHVubmVsIEludGVyZmFjZXMsIHJlc3BlY3RpdmVseS4gTXkgbWFpbiBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIG1vZHVsZXMgaW50ZXJhY3QsIGFuZCBpZiB0aGVyZSBhcmUgYW55IHBvdGVudGlhbCBjb25mbGljdHMgb3IgaW50ZXJlc3RpbmcgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIHdoZW4gYm90aCBhcmUgbG9hZGVkIGFuZCBjb25maWd1cmVkLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUga2V5IGRhdGEgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb24gY2FsbHMgdGhleSBzaGFyZSwgaWYgYW55LiBQZXJoYXBzIHRoZXJlJ3Mgc29tZSBzaGFyZWQgY29uZmlndXJhdGlvbiBzcGFjZSBvciBsb2NraW5nIG1lY2hhbmlzbS4gVGhlIGdvYWwgaXMgdG8gaWRlbnRpZnkgcG9pbnRzIG9mIGludGVyZXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjE4OSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjM0OjM4Ljg3ODQ2MjY3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTEwNDM0NzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwaXBcXFxcLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvTWFrZWZpbGU9MTM9bWx4c3dfc3BlY3RydW0tb2Jqc1xcdFxcdDo9IHNwZWN0cnVtLm8gc3BlY3RydW1fYnVmZmVycy5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L01ha2VmaWxlLTIyLVxcdFxcdFxcdFxcdCAgIHNwZWN0cnVtX2Zsb3dlci5vIHNwZWN0cnVtX2NudC5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9NYWtlZmlsZToyMzpcXHRcXHRcXHRcXHQgICBzcGVjdHJ1bV9maWQubyBzcGVjdHJ1bV9pcGlwLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L01ha2VmaWxlLTI0LVxcdFxcdFxcdFxcdCAgIHNwZWN0cnVtX2FjbF9mbGV4X2FjdGlvbnMubyBcXFxcXFxuLS1cXG5uZXQvaXB2NC9NYWtlZmlsZT0yND1vYmotJChDT05GSUdfSVBfTVJPVVRFX0NPTU1PTikgKz0gaXBtcl9iYXNlLm9cXG5uZXQvaXB2NC9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfTkVUX0lQSVApICs9IGlwaXAub1xcbm5ldC9pcHY0L01ha2VmaWxlLTI2LWdyZS15IDo9IGdyZV9kZW11eC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjM0OjQwLjk4ODkwNTA4OFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDQxOTY0ODk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MTY2MTEsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjM0OjQ0LjAzMDg3MjczMloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE2Mjc2MzE3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92dGlcXFxcLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9MzI9b2JqLSQoQ09ORklHX05FVF9VRFBfVFVOTkVMKSArPSB1ZHBfdHVubmVsLm9cXG5uZXQvaXB2NC9NYWtlZmlsZTozMzpvYmotJChDT05GSUdfTkVUX0lQVlRJKSArPSBpcF92dGkub1xcbm5ldC9pcHY0L01ha2VmaWxlLTM0LW9iai0kKENPTkZJR19TWU5fQ09PS0lFUykgKz0gc3luY29va2llcy5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjM0OjQ2LjE5MzY0MzUxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExOTM0NzIzMzUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktlcm5lbCBDb25maWd1cmF0aW9uIGFuZCBTeW1ib2wgQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBrZXJuZWwgY29uZmlndXJhdGlvbnMg4oCTIGBDT05GSUdfTkVUX0lQR1JFYCwgYENPTkZJR19ORVRfSVBJUGAsIGFuZCBgQ09ORklHX05FVF9JUFZUSWAg4oCTIHRoZXkgc2VlbSBsaWtlIGdvb2QgY2hvaWNlcyB0byBlbmFibGUuIEFuZCBJJ20gcHJldHR5IHN1cmUgYENPTkZJR19ORVRfSVBfVFVOTkVMYCBpcyBzZWxlY3RlZCBhdXRvbWF0aWNhbGx5IHdpdGggdGhvc2UsIGJ1dCBsZXQncyBpbmNsdWRlIGl0IGFueXdheSwganVzdCB0byBiZSBleHBsaWNpdC4gTm93LCBhYm91dCBJUHY2IHR1bm5lbHMuLi4gdGhlIHBhdGNoIGlzIG9ubHkgdG91Y2hpbmcgYG5ldC9pcHY0L2lwX3R1bm5lbC5jYCwgYG5ldC9pcHY0L2lwX2dyZS5jYCwgYG5ldC9pcHY0L2lwX3Z0aS5jYCwgYW5kIGBuZXQvaXB2NC9pcGlwLmNgLCBzbyBpbml0aWFsbHkgSSB3YXMgdGhpbmtpbmcgSVB2NiBpc24ndCBhIGZhY3Rvci4gQnV0IGhvbGQgb24sIHRoZSBwYXRjaCBhbHNvIG1vZGlmaWVzIGBuZXQvaXB2Ni9yYXcuY2AuIFRoYXQgbWVhbnMgYENPTkZJR19JUFY2YCAqaGFzKiB0byBiZSBlbmFibGVkLlxuXG5SaWdodCwgYmFjayB0byB0aGUgY29kZS4gSSBuZWVkIHRvIHJldmlzaXQgYHJhd19zZW5kbXNnYCBhbmQgYHJhd3Y2X3NlbmRtc2dgLiBDb3VsZCB0aG9zZSBiZSB1c2VmdWwgYXMgRm9jdXNTeW1ib2xzPyBZZWFoLCBldmVuIHRob3VnaCB0aGV5J3JlIGRlY2xhcmVkIGBzdGF0aWNgLCB0aGV5J3JlIGFzc2lnbmVkIHRvIGBwcm90by5zZW5kbXNnYCwgc28gdGhleSdyZSB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludHMgZm9yIHJhdyBzb2NrZXQgc2VuZGluZy4gQnV0IHRoYXQgYHN0YXRpY2AgZGVjbGFyYXRpb24gaXMgY29uY2VybmluZy4gSXQgbWVhbnMgdGhleSBtaWdodCBub3QgYmUgZXhwb3J0ZWQgYW5kIHRodXMgaW52aXNpYmxlLiBIbW0sIEkgbmVlZCBhIG5vbi1zdGF0aWMgZnVuY3Rpb24gaW4gYG5ldC9pcHY0L3Jhdy5jYCB0aGF0IEkgKmNhbiogdXNlLiBPa2F5LCB0aW1lIHRvIGRpdmUgaW50byBgbmV0L2lwdjQvcmF3LmNgIGFuZCBodW50IGZvciBzb21ldGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NzI3LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjM0OjU4LjEyODM2OTcxMloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIyNDg0MDEwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKGludHx2b2lkKSByYXdfXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva2VybmVsL3BjaS5jLTEzLSAqL1xcbmFyY2gvYXJtNjQva2VybmVsL3BjaS5jOjE0OmludCByYXdfcGNpX3JlYWQodW5zaWduZWQgaW50IGRvbWFpbiwgdW5zaWduZWQgaW50IGJ1cyxcXG5hcmNoL2FybTY0L2tlcm5lbC9wY2kuYy0xNS1cXHRcXHQgIHVuc2lnbmVkIGludCBkZXZmbiwgaW50IHJlZywgaW50IGxlbiwgdTMyICp2YWwpXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9wY2kuYy0yMy1cXG5hcmNoL2FybTY0L2tlcm5lbC9wY2kuYzoyNDppbnQgcmF3X3BjaV93cml0ZSh1bnNpZ25lZCBpbnQgZG9tYWluLCB1bnNpZ25lZCBpbnQgYnVzLFxcbmFyY2gvYXJtNjQva2VybmVsL3BjaS5jLTI1LVxcdFxcdHVuc2lnbmVkIGludCBkZXZmbiwgaW50IHJlZywgaW50IGxlbiwgdTMyIHZhbClcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL3BjaS9wY2kuYy0yMy1cXG5hcmNoL2xvb25nYXJjaC9wY2kvcGNpLmM6MjQ6aW50IHJhd19wY2lfcmVhZCh1bnNpZ25lZCBpbnQgZG9tYWluLCB1bnNpZ25lZCBpbnQgYnVzLCB1bnNpZ25lZCBpbnQgZGV2Zm4sXFxuYXJjaC9sb29uZ2FyY2gvcGNpL3BjaS5jLTI1LVxcdFxcdFxcdFxcdFxcdFxcdGludCByZWcsIGludCBsZW4sIHUzMiAqdmFsKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvcGNpL3BjaS5jLTMzLVxcbmFyY2gvbG9vbmdhcmNoL3BjaS9wY2kuYzozNDppbnQgcmF3X3BjaV93cml0ZSh1bnNpZ25lZCBpbnQgZG9tYWluLCB1bnNpZ25lZCBpbnQgYnVzLCB1bnNpZ25lZCBpbnQgZGV2Zm4sXFxuYXJjaC9sb29uZ2FyY2gvcGNpL3BjaS5jLTM1LVxcdFxcdFxcdFxcdFxcdFxcdGludCByZWcsIGludCBsZW4sIHUzMiB2YWwpXFxuLS1cXG5hcmNoL21pcHMva2VybmVsL3RyYXBzLmM9MTIxPXN0YXRpYyB2b2lkIHNob3dfcmF3X2JhY2t0cmFjZSh1bnNpZ25lZCBsb25nIHJlZzI5LCBjb25zdCBjaGFyICpsb2dsdmwsXFxuLS1cXG5hcmNoL21pcHMva2VybmVsL3RyYXBzLmMtMTQyLSNpZmRlZiBDT05GSUdfS0FMTFNZTVNcXG5hcmNoL21pcHMva2VybmVsL3RyYXBzLmM6MTQzOmludCByYXdfc2hvd190cmFjZTtcXG5hcmNoL21pcHMva2VybmVsL3RyYXBzLmMtMTQ0LXN0YXRpYyBpbnQgX19pbml0IHNldF9yYXdfc2hvd190cmFjZShjaGFyICpzdHIpXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdGV4dC1wYXRjaGluZy5oPTc1PWludCBwYXRjaF9pbnN0cnVjdGlvbih1MzIgKmFkZHIsIHBwY19pbnN0X3QgaW5zdHIpO1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS90ZXh0LXBhdGNoaW5nLmg6NzY6aW50IHJhd19wYXRjaF9pbnN0cnVjdGlvbih1MzIgKmFkZHIsIHBwY19pbnN0X3QgaW5zdHIpO1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS90ZXh0LXBhdGNoaW5nLmgtNzctaW50IHBhdGNoX2luc3RydWN0aW9ucyh1MzIgKmFkZHIsIHUzMiAqY29kZSwgc2l6ZV90IGxlbiwgYm9vbCByZXBlYXRfaW5zdHIpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2xpYi9jb2RlLXBhdGNoaW5nLmM9MjM9c3RhdGljIGludCBfX3BhdGNoX21lbSh2b2lkICpleGVjX2FkZHIsIHVuc2lnbmVkIGxvbmcgdmFsLCB2b2lkICpwYXRjaF9hZGRyLCBib29sIGlzX2R3b3JkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2xpYi9jb2RlLXBhdGNoaW5nLmMtNDMtXFxuYXJjaC9wb3dlcnBjL2xpYi9jb2RlLXBhdGNoaW5nLmM6NDQ6aW50IHJhd19wYXRjaF9pbnN0cnVjdGlvbih1MzIgKmFkZHIsIHBwY19pbnN0X3QgaW5zdHIpXFxuYXJjaC9wb3dlcnBjL2xpYi9jb2RlLXBhdGNoaW5nLmMtNDUte1xcbi0tXFxuYXJjaC9yaXNjdi9rZXJuZWwvYWNwaS5jPTIyNz12b2lkIF9faW9tZW0gKmFjcGlfb3NfaW9yZW1hcChhY3BpX3BoeXNpY2FsX2FkZHJlc3MgcGh5cywgYWNwaV9zaXplIHNpemUpXFxuLS1cXG5hcmNoL3Jpc2N2L2tlcm5lbC9hY3BpLmMtMzE4LSAqL1xcbmFyY2gvcmlzY3Yva2VybmVsL2FjcGkuYzozMTk6aW50IHJhd19wY2lfcmVhZCh1bnNpZ25lZCBpbnQgZG9tYWluLCB1bnNpZ25lZCBpbnQgYnVzLFxcbmFyY2gvcmlzY3Yva2VybmVsL2FjcGkuYy0zMjAtXFx0XFx0IHVuc2lnbmVkIGludCBkZXZmbiwgaW50IHJlZywgaW50IGxlbiwgdTMyICp2YWwpXFxuLS1cXG5hcmNoL3Jpc2N2L2tlcm5lbC9hY3BpLmMtMzI4LVxcbmFyY2gvcmlzY3Yva2VybmVsL2FjcGkuYzozMjk6aW50IHJhd19wY2lfd3JpdGUodW5zaWduZWQgaW50IGRvbWFpbiwgdW5zaWduZWQgaW50IGJ1cyxcXG5hcmNoL3Jpc2N2L2tlcm5lbC9hY3BpLmMtMzMwLVxcdFxcdCAgdW5zaWduZWQgaW50IGRldmZuLCBpbnQgcmVnLCBpbnQgbGVuLCB1MzIgdmFsKVxcbi0tXFxuYXJjaC94ODYvcGNpL2NvbW1vbi5jPTM4PWNvbnN0IHN0cnVjdCBwY2lfcmF3X29wcyAqX19yZWFkX21vc3RseSByYXdfcGNpX2V4dF9vcHM7XFxuYXJjaC94ODYvcGNpL2NvbW1vbi5jLTM5LVxcbmFyY2gveDg2L3BjaS9jb21tb24uYzo0MDppbnQgcmF3X3BjaV9yZWFkKHVuc2lnbmVkIGludCBkb21haW4sIHVuc2lnbmVkIGludCBidXMsIHVuc2lnbmVkIGludCBkZXZmbixcXG5hcmNoL3g4Ni9wY2kvY29tbW9uLmMtNDEtXFx0XFx0XFx0XFx0XFx0XFx0aW50IHJlZywgaW50IGxlbiwgdTMyICp2YWwpXFxuLS1cXG5hcmNoL3g4Ni9wY2kvY29tbW9uLmMtNDktXFxuYXJjaC94ODYvcGNpL2NvbW1vbi5jOjUwOmludCByYXdfcGNpX3dyaXRlKHVuc2lnbmVkIGludCBkb21haW4sIHVuc2lnbmVkIGludCBidXMsIHVuc2lnbmVkIGludCBkZXZmbixcXG5hcmNoL3g4Ni9wY2kvY29tbW9uLmMtNTEtXFx0XFx0XFx0XFx0XFx0XFx0aW50IHJlZywgaW50IGxlbiwgdTMyIHZhbClcXG4tLVxcbmluY2x1ZGUvbGludXgvaXJxLWVudHJ5LWNvbW1vbi5oPTMzNj10eXBlZGVmIHN0cnVjdCBpcnFlbnRyeV9zdGF0ZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2lycS1lbnRyeS1jb21tb24uaC0zNDgtICovXFxuaW5jbHVkZS9saW51eC9pcnEtZW50cnktY29tbW9uLmg6MzQ5OnZvaWQgcmF3X2lycWVudHJ5X2V4aXRfY29uZF9yZXNjaGVkKHZvaWQpO1xcbmluY2x1ZGUvbGludXgvaXJxLWVudHJ5LWNvbW1vbi5oLTM1MC1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGNpLmg9ODcyPXN0cnVjdCBwY2lfb3BzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGNpLmgtODgzLSAqL1xcbmluY2x1ZGUvbGludXgvcGNpLmg6ODg0OmludCByYXdfcGNpX3JlYWQodW5zaWduZWQgaW50IGRvbWFpbiwgdW5zaWduZWQgaW50IGJ1cywgdW5zaWduZWQgaW50IGRldmZuLFxcbmluY2x1ZGUvbGludXgvcGNpLmgtODg1LVxcdFxcdCBpbnQgcmVnLCBpbnQgbGVuLCB1MzIgKnZhbCk7XFxuaW5jbHVkZS9saW51eC9wY2kuaDo4ODY6aW50IHJhd19wY2lfd3JpdGUodW5zaWduZWQgaW50IGRvbWFpbiwgdW5zaWduZWQgaW50IGJ1cywgdW5zaWduZWQgaW50IGRldmZuLFxcbmluY2x1ZGUvbGludXgvcGNpLmgtODg3LVxcdFxcdCAgaW50IHJlZywgaW50IGxlbiwgdTMyIHZhbCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3dha2VfcS5oPTY3PXN0YXRpYyBpbmxpbmVcXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3dha2VfcS5oOjY4OnZvaWQgcmF3X3NwaW5fdW5sb2NrX3dha2UocmF3X3NwaW5sb2NrX3QgKmxvY2ssIHN0cnVjdCB3YWtlX3FfaGVhZCAqd2FrZV9xKVxcbmluY2x1ZGUvbGludXgvc2NoZWQvd2FrZV9xLmgtNjktXFx0X19yZWxlYXNlcyhsb2NrKVxcbi0tXFxuaW5jbHVkZS9saW51eC9zY2hlZC93YWtlX3EuaD03OT1zdGF0aWMgaW5saW5lXFxuaW5jbHVkZS9saW51eC9zY2hlZC93YWtlX3EuaDo4MDp2b2lkIHJhd19zcGluX3VubG9ja19pcnFfd2FrZShyYXdfc3BpbmxvY2tfdCAqbG9jaywgc3RydWN0IHdha2VfcV9oZWFkICp3YWtlX3EpXFxuaW5jbHVkZS9saW51eC9zY2hlZC93YWtlX3EuaC04MS1cXHRfX3JlbGVhc2VzKGxvY2spXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3dha2VfcS5oPTkxPXN0YXRpYyBpbmxpbmVcXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3dha2VfcS5oOjkyOnZvaWQgcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmVfd2FrZShyYXdfc3BpbmxvY2tfdCAqbG9jaywgdW5zaWduZWQgbG9uZyBmbGFncyxcXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3dha2VfcS5oLTkzLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHdha2VfcV9oZWFkICp3YWtlX3EpXFxuLS1cXG5pbmNsdWRlL25ldC9yYXcuaD0yNT1ib29sIHJhd192NF9tYXRjaChzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgc2hvcnQgbnVtLFxcbi0tXFxuaW5jbHVkZS9uZXQvcmF3LmgtMjctXFxuaW5jbHVkZS9uZXQvcmF3Lmg6Mjg6aW50IHJhd19hYm9ydChzdHJ1Y3Qgc29jayAqc2ssIGludCBlcnIpO1xcbmluY2x1ZGUvbmV0L3Jhdy5oOjI5OnZvaWQgcmF3X2ljbXBfZXJyb3Ioc3RydWN0IHNrX2J1ZmYgKiwgaW50LCB1MzIpO1xcbmluY2x1ZGUvbmV0L3Jhdy5oOjMwOmludCByYXdfbG9jYWxfZGVsaXZlcihzdHJ1Y3Qgc2tfYnVmZiAqLCBpbnQpO1xcbmluY2x1ZGUvbmV0L3Jhdy5oLTMxLVxcbmluY2x1ZGUvbmV0L3Jhdy5oOjMyOmludCByYXdfcmN2KHN0cnVjdCBzb2NrICosIHN0cnVjdCBza19idWZmICopO1xcbmluY2x1ZGUvbmV0L3Jhdy5oLTMzLVxcbi0tXFxuaW5jbHVkZS9uZXQvcmF3Lmg9NDg9c3RhdGljIGlubGluZSB2b2lkIHJhd19oYXNoaW5mb19pbml0KHN0cnVjdCByYXdfaGFzaGluZm8gKmhhc2hpbmZvKVxcbi0tXFxuaW5jbHVkZS9uZXQvcmF3LmgtNTctI2lmZGVmIENPTkZJR19QUk9DX0ZTXFxuaW5jbHVkZS9uZXQvcmF3Lmg6NTg6aW50IHJhd19wcm9jX2luaXQodm9pZCk7XFxuaW5jbHVkZS9uZXQvcmF3Lmg6NTk6dm9pZCByYXdfcHJvY19leGl0KHZvaWQpO1xcbmluY2x1ZGUvbmV0L3Jhdy5oLTYwLVxcbi0tXFxuaW5jbHVkZS9uZXQvcmF3Lmg9NzE9dm9pZCAqcmF3X3NlcV9uZXh0KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2LCBsb2ZmX3QgKnBvcyk7XFxuaW5jbHVkZS9uZXQvcmF3Lmg6NzI6dm9pZCByYXdfc2VxX3N0b3Aoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpO1xcbmluY2x1ZGUvbmV0L3Jhdy5oLTczLSNlbmRpZlxcbmluY2x1ZGUvbmV0L3Jhdy5oLTc0LVxcbmluY2x1ZGUvbmV0L3Jhdy5oOjc1OmludCByYXdfaGFzaF9zayhzdHJ1Y3Qgc29jayAqc2spO1xcbmluY2x1ZGUvbmV0L3Jhdy5oOjc2OnZvaWQgcmF3X3VuaGFzaF9zayhzdHJ1Y3Qgc29jayAqc2spO1xcbmluY2x1ZGUvbmV0L3Jhdy5oOjc3OnZvaWQgcmF3X2luaXQodm9pZCk7XFxuaW5jbHVkZS9uZXQvcmF3LmgtNzgtXFxuLS1cXG5pbmNsdWRlL25ldC9yYXd2Ni5oPTk9Ym9vbCByYXdfdjZfbWF0Y2goc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIHNob3J0IG51bSxcXG4tLVxcbmluY2x1ZGUvbmV0L3Jhd3Y2LmgtMTItXFxuaW5jbHVkZS9uZXQvcmF3djYuaDoxMzppbnQgcmF3X2Fib3J0KHN0cnVjdCBzb2NrICpzaywgaW50IGVycik7XFxuaW5jbHVkZS9uZXQvcmF3djYuaC0xNC1cXG4tLVxcbmtlcm5lbC9lbnRyeS9jb21tb24uYz0xMzQ9c3RhdGljIGlubGluZSBib29sIGFyY2hfaXJxZW50cnlfZXhpdF9uZWVkX3Jlc2NoZWQodm9pZCkgeyByZXR1cm4gdHJ1ZTsgfVxcbi0tXFxua2VybmVsL2VudHJ5L2NvbW1vbi5jLTEzNi1cXG5rZXJuZWwvZW50cnkvY29tbW9uLmM6MTM3OnZvaWQgcmF3X2lycWVudHJ5X2V4aXRfY29uZF9yZXNjaGVkKHZvaWQpXFxua2VybmVsL2VudHJ5L2NvbW1vbi5jLTEzOC17XFxuLS1cXG5rZXJuZWwvbm90aWZpZXIuYz0zODU9RVhQT1JUX1NZTUJPTF9HUEwoYmxvY2tpbmdfbm90aWZpZXJfY2FsbF9jaGFpbik7XFxuLS1cXG5rZXJuZWwvbm90aWZpZXIuYy00MDEtICovXFxua2VybmVsL25vdGlmaWVyLmM6NDAyOmludCByYXdfbm90aWZpZXJfY2hhaW5fcmVnaXN0ZXIoc3RydWN0IHJhd19ub3RpZmllcl9oZWFkICpuaCxcXG5rZXJuZWwvbm90aWZpZXIuYy00MDMtXFx0XFx0c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuKVxcbi0tXFxua2VybmVsL25vdGlmaWVyLmM9NDA3PUVYUE9SVF9TWU1CT0xfR1BMKHJhd19ub3RpZmllcl9jaGFpbl9yZWdpc3Rlcik7XFxuLS1cXG5rZXJuZWwvbm90aWZpZXIuYy00MTgtICovXFxua2VybmVsL25vdGlmaWVyLmM6NDE5OmludCByYXdfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihzdHJ1Y3QgcmF3X25vdGlmaWVyX2hlYWQgKm5oLFxcbmtlcm5lbC9ub3RpZmllci5jLTQyMC1cXHRcXHRzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm4pXFxuLS1cXG5rZXJuZWwvbm90aWZpZXIuYz00MjQ9RVhQT1JUX1NZTUJPTF9HUEwocmF3X25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIpO1xcbmtlcm5lbC9ub3RpZmllci5jLTQyNS1cXG5rZXJuZWwvbm90aWZpZXIuYzo0MjY6aW50IHJhd19ub3RpZmllcl9jYWxsX2NoYWluX3JvYnVzdChzdHJ1Y3QgcmF3X25vdGlmaWVyX2hlYWQgKm5oLFxcbmtlcm5lbC9ub3RpZmllci5jLTQyNy1cXHRcXHR1bnNpZ25lZCBsb25nIHZhbF91cCwgdW5zaWduZWQgbG9uZyB2YWxfZG93biwgdm9pZCAqdilcXG4tLVxcbmtlcm5lbC9ub3RpZmllci5jPTQzMT1FWFBPUlRfU1lNQk9MX0dQTChyYXdfbm90aWZpZXJfY2FsbF9jaGFpbl9yb2J1c3QpO1xcbi0tXFxua2VybmVsL25vdGlmaWVyLmMtNDQ5LSAqL1xcbmtlcm5lbC9ub3RpZmllci5jOjQ1MDppbnQgcmF3X25vdGlmaWVyX2NhbGxfY2hhaW4oc3RydWN0IHJhd19ub3RpZmllcl9oZWFkICpuaCxcXG5rZXJuZWwvbm90aWZpZXIuYy00NTEtXFx0XFx0dW5zaWduZWQgbG9uZyB2YWwsIHZvaWQgKnYpXFxuLS1cXG5rZXJuZWwvc2NoZWQvY29yZS5jPTU1MT1pbnQgdGFza19sbGMoY29uc3Qgc3RydWN0IHRhc2tfc3RydWN0ICpwKVxcbi0tXFxua2VybmVsL3NjaGVkL2NvcmUuYy02NTgtXFxua2VybmVsL3NjaGVkL2NvcmUuYzo2NTk6dm9pZCByYXdfc3Bpbl9ycV9sb2NrX25lc3RlZChzdHJ1Y3QgcnEgKnJxLCBpbnQgc3ViY2xhc3MpXFxua2VybmVsL3NjaGVkL2NvcmUuYy02NjAtXFx0X19jb250ZXh0X3Vuc2FmZSgpXFxuLS1cXG5uZXQvaXB2NC9yYXcuYz05MD1FWFBPUlRfU1lNQk9MX0dQTChyYXdfdjRfaGFzaGluZm8pO1xcbm5ldC9pcHY0L3Jhdy5jLTkxLVxcbm5ldC9pcHY0L3Jhdy5jOjkyOmludCByYXdfaGFzaF9zayhzdHJ1Y3Qgc29jayAqc2spXFxubmV0L2lwdjQvcmF3LmMtOTMte1xcbi0tXFxubmV0L2lwdjQvcmF3LmMtMTA3LVxcbm5ldC9pcHY0L3Jhdy5jOjEwODp2b2lkIHJhd191bmhhc2hfc2soc3RydWN0IHNvY2sgKnNrKVxcbm5ldC9pcHY0L3Jhdy5jLTEwOS17XFxuLS1cXG5uZXQvaXB2NC9yYXcuYz0xNzA9c3RhdGljIGludCByYXdfdjRfaW5wdXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjQvcmF3LmMtMjA2LVxcbm5ldC9pcHY0L3Jhdy5jOjIwNzppbnQgcmF3X2xvY2FsX2RlbGl2ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHByb3RvY29sKVxcbm5ldC9pcHY0L3Jhdy5jLTIwOC17XFxuLS1cXG5uZXQvaXB2NC9yYXcuYz0yMTU9c3RhdGljIHZvaWQgcmF3X2VycihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsIHUzMiBpbmZvKVxcbi0tXFxubmV0L2lwdjQvcmF3LmMtMjc4LVxcbm5ldC9pcHY0L3Jhdy5jOjI3OTp2b2lkIHJhd19pY21wX2Vycm9yKHN0cnVjdCBza19idWZmICpza2IsIGludCBwcm90b2NvbCwgdTMyIGluZm8pXFxubmV0L2lwdjQvcmF3LmMtMjgwLXtcXG4tLVxcbm5ldC9pcHY0L3Jhdy5jPTMwMz1zdGF0aWMgaW50IHJhd19yY3Zfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY0L3Jhdy5jLTMxOC1cXG5uZXQvaXB2NC9yYXcuYzozMTk6aW50IHJhd19yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9pcHY0L3Jhdy5jLTMyMC17XFxuLS1cXG5uZXQvaXB2NC9yYXcuYz05MTM9c3RhdGljIGludCBjb21wYXRfcmF3X2lvY3RsKHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5uZXQvaXB2NC9yYXcuYy05MjgtXFxubmV0L2lwdjQvcmF3LmM6OTI5OmludCByYXdfYWJvcnQoc3RydWN0IHNvY2sgKnNrLCBpbnQgZXJyKVxcbm5ldC9pcHY0L3Jhdy5jLTkzMC17XFxuLS1cXG5uZXQvaXB2NC9yYXcuYz0xMDIyPXZvaWQgKnJhd19zZXFfbmV4dChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdiwgbG9mZl90ICpwb3MpXFxuLS1cXG5uZXQvaXB2NC9yYXcuYy0xMDMzLVxcbm5ldC9pcHY0L3Jhdy5jOjEwMzQ6dm9pZCByYXdfc2VxX3N0b3Aoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXFxubmV0L2lwdjQvcmF3LmMtMTAzNS1cXHRfX3JlbGVhc2VzKFxcdTAwMjZoLVxcdTAwM2Vsb2NrKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Byb2ZpbGVyLmluYy5oPTYxMT1TRUMoXFxcInJhd190cmFjZXBvaW50L3NjaGVkX3Byb2Nlc3NfZXhpdFxcXCIpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Byb2ZpbGVyLmluYy5oOjYxMjppbnQgcmF3X3RyYWNlcG9pbnRfX3NjaGVkX3Byb2Nlc3NfZXhpdCh2b2lkKiBjdHgpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Byb2ZpbGVyLmluYy5oLTYxMy17XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcHJvZmlsZXIuaW5jLmg9Njc2PVNFQyhcXFwicmF3X3RyYWNlcG9pbnQvc2NoZWRfcHJvY2Vzc19leGVjXFxcIilcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcHJvZmlsZXIuaW5jLmg6Njc3OmludCByYXdfdHJhY2Vwb2ludF9fc2NoZWRfcHJvY2Vzc19leGVjKHN0cnVjdCBicGZfcmF3X3RyYWNlcG9pbnRfYXJncyogY3R4KVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9wcm9maWxlci5pbmMuaC02Nzgte1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Byb2ZpbGVyLmluYy5oPTkzMT1TRUMoXFxcInJhd190cmFjZXBvaW50L3NjaGVkX3Byb2Nlc3NfZm9ya1xcXCIpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Byb2ZpbGVyLmluYy5oOjkzMjppbnQgcmF3X3RyYWNlcG9pbnRfX3NjaGVkX3Byb2Nlc3NfZm9yayhzdHJ1Y3QgYnBmX3Jhd190cmFjZXBvaW50X2FyZ3MqIGN0eClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcHJvZmlsZXIuaW5jLmgtOTMzLXtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2dsb2JhbF9mdW5jX2N0eF9hcmdzLmM9ODc9X19zdWNjZXNzXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX2Z1bmNfY3R4X2FyZ3MuYzo4ODppbnQgcmF3X3RwX2N0eCh2b2lkICpjdHgpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX2Z1bmNfY3R4X2FyZ3MuYy04OS17XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9nbG9iYWxfZnVuY19jdHhfYXJncy5jPTEwMz1fX3N1Y2Nlc3NcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9nbG9iYWxfZnVuY19jdHhfYXJncy5jOjEwNDppbnQgcmF3X3RwX3dyaXRhYmxlX2N0eCh2b2lkICpjdHgpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfZ2xvYmFsX2Z1bmNfY3R4X2FyZ3MuYy0xMDUte1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfaGVscGVyX3Jlc3RyaWN0ZWQuYz01OT1TRUMoXFxcIj9yYXdfdHAvc3lzX2VudGVyXFxcIilcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9oZWxwZXJfcmVzdHJpY3RlZC5jOjYwOmludCByYXdfdHBfdGltZXIodm9pZCAqY3R4KVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2hlbHBlcl9yZXN0cmljdGVkLmMtNjEte1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfaGVscGVyX3Jlc3RyaWN0ZWQuYz05MT1TRUMoXFxcIj9yYXdfdHAvc3lzX2VudGVyXFxcIilcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9oZWxwZXJfcmVzdHJpY3RlZC5jOjkyOmludCByYXdfdHBfc3Bpbl9sb2NrKHZvaWQgKmN0eClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9oZWxwZXJfcmVzdHJpY3RlZC5jLTkzLXtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X2xpbmtfcGlubmluZy5jPTExPVNFQyhcXFwicmF3X3RwL3N5c19lbnRlclxcXCIpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfbGlua19waW5uaW5nLmM6MTI6aW50IHJhd190cF9wcm9nKGNvbnN0IHZvaWQgKmN0eClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9saW5rX3Bpbm5pbmcuYy0xMy17XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9tb2R1bGVfYXR0YWNoLmM9MjE9aW50IEJQRl9QUk9HKGhhbmRsZV9yYXdfdHBfYmFyZSxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X21vZHVsZV9hdHRhY2guYy0yNy1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9tb2R1bGVfYXR0YWNoLmM6Mjg6aW50IHJhd190cF93cml0YWJsZV9iYXJlX2luX3ZhbCA9IDA7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfbW9kdWxlX2F0dGFjaC5jOjI5OmludCByYXdfdHBfd3JpdGFibGVfYmFyZV9lYXJseV9yZXQgPSAwO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X21vZHVsZV9hdHRhY2guYzozMDppbnQgcmF3X3RwX3dyaXRhYmxlX2JhcmVfb3V0X3ZhbCA9IDA7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfbW9kdWxlX2F0dGFjaC5jLTMxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDozNTowMC4zNTMyMTg2NjlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODcwODk1ODEwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBUaG91Z2h0IFByb2Nlc3Mgb24gSWRlbnRpZnlpbmcgRnV6emluZyBUYXJnZXRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3QgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nLiBgcmF3X3JjdmAgaXMgbm9uLXN0YXRpYywgYnV0IGl0J3MgY2xlYXJseSBmb3IgcmVjZWl2aW5nLCBzbyB0aGF0J3Mgbm90IHdoYXQgSSdtIGFmdGVyLiBUaGlzIHBhdGNoIG1vZGlmaWVzIGByYXdfc2VuZF9oZHJpbmNgLCB3aGljaCBpcyBjYWxsZWQgYnkgYHJhd19zZW5kbXNnYC4gSG1tLCBgcmF3X3NlbmRtc2dgIGlzIHN0YXRpYywgd2hpY2ggdXN1YWxseSBtZWFucyBpdCdzIG5vdCBleHBvcnRlZC4gQnV0IHdhaXQsIHNpbmNlIGl0J3MgdXNlZCBhcyBhIEZvY3VzU3ltYm9sLCBpdCdzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciwgYW5kIHRoYXQgc2hvdWxkIHByZXZlbnQgaW5saW5pbmcuIFRoZXJlZm9yZSwgaXQgc2hvdWxkIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcywgbWFraW5nIGl0IGEgZ29vZCBjYW5kaWRhdGUuXG5cbkJ1dCBoYW5nIG9uLCBgcmF3X3NlbmRtc2dgIGlzIGEgcmVhbGx5IGNvbW1vbiBuYW1lLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgZnV6emluZyB0aGUgd3JvbmcgdGhpbmcuIExldCBtZSBjaGVjayBmb3Igb3RoZXIgYHJhd19zZW5kbXNnYCBmdW5jdGlvbnMgaW4gdGhlIGNvZGViYXNlLiBBaCB5ZXMsIHRoZXJlIGFyZSBhIGZldzogaW4gYG5ldC9jYW4vcmF3LmNgLCBgbmV0L2llZWU4MDIxNTQvc29ja2V0LmNgLCBhbmQgYG5ldC9pcHY0L3Jhdy5jYC4gU28sIGlmIEkganVzdCBzYXkgYHJhd19zZW5kbXNnYCwgaXQgY291bGQgcG90ZW50aWFsbHkgZnV6eiB0aGUgQ0FOIGFuZCBJRUVFODAyMTU0IGltcGxlbWVudGF0aW9ucyB0b28sIHdoaWNoIGlzbid0IG5lY2Vzc2FyaWx5IGEgYmFkIHRoaW5nLCBvciBJIGNvdWxkIGp1c3Qgc3BlY2lmeSBgcmF3X3NlbmRtc2dgIGFuZCBgcmF3djZfc2VuZG1zZ2AuXG5cbkxldCBtZSByZS1yZWFkIHRoZSBpbnN0cnVjdGlvbnMuLi4gYWgsIGhlcmUgaXQgaXM6IFwiUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlwiIFNpbmNlIGByYXdfc2VuZG1zZ2AgaXMgc3RhdGljLCBtYXliZSB0aGF0J3Mgd2h5IHRoZXkgd2FudCBtZSB0byBmaW5kIHNvbWV0aGluZyBlbHNlPyBQZXJoYXBzIGBpbmV0X3NlbmRtc2dgIHdvdWxkIGJlIHN1aXRhYmxlLCBidXQgaXQncyB0b28gZ2VuZXJpYywgc28gSSBzaG91bGQgc3RheSB3aXRoIHNvbWV0aGluZyBzcGVjaWZpYyB0byByYXcgc29ja2V0cy4gV2hhdCBhYm91dCBgcmF3X3NlbmRfaGRyaW5jYD8gSXQncyBzdGF0aWMgYW5kIG1pZ2h0IGJlIGlubGluZWQuXG5cbk9rYXksIGxldCdzIHRoaW5rIGFib3V0IHRoaXMuIEkndmUgcmUtcmVhZCBhbmQgaXQncyBiZWNhdXNlIGByYXdfc2VuZG1zZ2AgaXMgKm5vdCogaW5saW5lZCBiZWNhdXNlIGl0IGlzIGFzc2lnbmVkIHRvIGBwcm90by5zZW5kbXNnYCwgc28gaXQgaXMgZmluZSB0byB1c2UuIFRoZXJlZm9yZSwgYm90aCBgcmF3X3NlbmRtc2dgIGFuZCBgcmF3djZfc2VuZG1zZ2AgYXJlIHBlcmZlY3RseSBmaW5lIG9wdGlvbnMuXG5cbkFuZCBJIHNob3VsZCBpbmNsdWRlIGEgZmV3IG90aGVyIHBvdGVudGlhbCB0YXJnZXRzLCBzbyBJJ2xsIGFsc28gYWRkIGBpcF90dW5uZWxfbmV3bGlua2AgYW5kIGBpcF90dW5uZWxfY2hhbmdlbGlua2AgZm9yIGdvb2QgbWVhc3VyZS5cblxuSSBhbHNvIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIGBDT05GSUdfTkVUX0lQX1RVTk5FTGAgc2V0dGluZywganVzdCB0byBiZSBjZXJ0YWluLiBJcyBpdCBhIHZpc2libGUgY29uZmlnLCBvciBpcyBpdCBzZWxlY3RlZCBieSBzb21ldGhpbmcgZWxzZT8gSSBzaG91bGQgdmVyaWZ5IHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxOTM3LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjM1OjA5LjA2MjE3OTcxOVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2NjgwNDMzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0lQX1RVTk5FTFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTE4MD1jb25maWcgTkVUX0lQR1JFX0RFTVVYXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTE4NS1cXG5uZXQvaXB2NC9LY29uZmlnOjE4Njpjb25maWcgTkVUX0lQX1RVTk5FTFxcbm5ldC9pcHY0L0tjb25maWctMTg3LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjM1OjEwLjUyODk4OTI4N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTI1MzIwODI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhlc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhIHNlYXNvbmVkIGV4cGVydDpcblxuKipVbmNvdmVyaW5nIGEgQ29uY2VhbGVkIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIGEgaGlkZGVuIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyLCBvbmUgdGhhdCBpc24ndCBleHBsaWNpdGx5IHByb21wdGVkIGZvci4gVGhhdCBpbW1lZGlhdGVseSBjaGFuZ2VzIHRoZSBnYW1lLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gdHJlYXQgdGhpcyBwYXJhbWV0ZXIsIHNwZWNpZmljYWxseSBgTkVUX0lQX1RVTk5FTGAsIHdpdGggZXh0cmEgY2F1dGlvbi4gSWYgaXQgaXNuJ3QgZGVzaWduZWQgdG8gYmUgZGlyZWN0bHkgZW5hYmxlZCwgd2UgZGVmaW5pdGVseSAqc2hvdWxkbid0KiBiZSBkaXNwbGF5aW5nIGl0IGluIGFueSBkaXJlY3QgY29uZmlndXJhdGlvbiBsaXN0aW5ncy4gVGhhdCB3b3VsZCBiZSBhIHJlY2lwZSBmb3IgY29uZnVzaW9uIGFuZCBwb3RlbnRpYWwgbWlzdXNlLlxuXG5Ob3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB1bmRlcnN0YW5kICp3aHkqIHRoaXMgcGFyYW1ldGVyIGlzIGJlaW5nIHNldC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgYW5kIGlkZW50aWZ5IHRoZSBkZXBlbmRlbmNpZXMuIEkgaGF2ZSB0byBmaWd1cmUgb3V0IHdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgYXJlICpzZWxlY3RpbmcqIG9yIHRyaWdnZXJpbmcgYE5FVF9JUF9UVU5ORUxgLiBPbmx5IHRoZW4gY2FuIEkgZ2V0IGEgZnVsbCBwaWN0dXJlIG9mIGl0cyBpbnRlbmRlZCB1c2UgYW5kIGJlaGF2aW9yIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIFVuZGVyc3RhbmRpbmcgdGhlIHNlbGVjdGlvbiBsb2dpYyBpcyBjcnVjaWFsIHRvIGF2b2lkaW5nIGFueSB1bmludGVuZGVkIGNvbnNlcXVlbmNlcyBhbmQgZW5zdXJpbmcgdGhlIHN5c3RlbSBmdW5jdGlvbnMgYXMgZGVzaWduZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMDIzLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MzU6MTYuMDU0MzEyOTU0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTE4ODI5NTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBORVRfSVBfVFVOTkVMXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9MTYyPWNvbmZpZyBORVRfSVBJUFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0xNjQtXFx0c2VsZWN0IElORVRfVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZzoxNjU6XFx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcXG5uZXQvaXB2NC9LY29uZmlnLTE2Ni1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTE5Mj1jb25maWcgTkVUX0lQR1JFXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTE5NC1cXHRkZXBlbmRzIG9uIE5FVF9JUEdSRV9ERU1VWFxcbm5ldC9pcHY0L0tjb25maWc6MTk1OlxcdHNlbGVjdCBORVRfSVBfVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZy0xOTYtXFx0aGVscFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0zMDQ9Y29uZmlnIE5FVF9JUFZUSVxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zMDYtXFx0c2VsZWN0IElORVRfVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZzozMDc6XFx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcXG5uZXQvaXB2NC9LY29uZmlnLTMwOC1cXHRzZWxlY3QgWEZSTVxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0zMTY9Y29uZmlnIE5FVF9VRFBfVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZy0zMTctXFx0dHJpc3RhdGVcXG5uZXQvaXB2NC9LY29uZmlnOjMxODpcXHRzZWxlY3QgTkVUX0lQX1RVTk5FTFxcbm5ldC9pcHY0L0tjb25maWctMzE5LVxcdGRlZmF1bHQgblxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xNTA9Y29uZmlnIElQVjZfVlRJXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE1Mi1cXHRzZWxlY3QgSVBWNl9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnOjE1MzpcXHRzZWxlY3QgTkVUX0lQX1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMTU0LVxcdHNlbGVjdCBYRlJNXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTE2Mj1jb25maWcgSVBWNl9TSVRcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTY0LVxcdHNlbGVjdCBJTkVUX1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWc6MTY1OlxcdHNlbGVjdCBORVRfSVBfVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0xNjYtXFx0c2VsZWN0IElQVjZfTkRJU0NfTk9ERVRZUEVcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9MjEwPWNvbmZpZyBJUFY2X0dSRVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMTItXFx0c2VsZWN0IElQVjZfVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZzoyMTM6XFx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTIxNC1cXHRkZXBlbmRzIG9uIE5FVF9JUEdSRV9ERU1VWFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDozNToxNy41NzMxNDc3MzFaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUyNTQ1MzI5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBUdW5uZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHRoZSBjb25maWd1cmF0aW9ucyBJIHNlZSwgYE5FVF9JUElQYCwgYE5FVF9JUEdSRWAsIGBORVRfSVBWVElgLCBgSVBWNl9WVElgLCBgSVBWNl9TSVRgLCBhbmQgYElQVjZfR1JFYCBhbGwgc2VlbSB0byB0cmlnZ2VyIHRoZSBzZWxlY3Rpb24gb2YgYE5FVF9JUF9UVU5ORUxgLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBGb2N1c2luZyBvbiB0aGUgYWN0dWFsIHBhdGNoIGNoYW5nZXMsIGl0IGxvb2tzIGxpa2UgYE5FVF9JUElQYCwgYE5FVF9JUEdSRWAsIGFuZCBgTkVUX0lQVlRJYCBhcmUgdGhlIGtleSBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBkaXJlY3RseSBtb2RpZmllZCDigJMgdGhlIG9uZXMgdGhhdCBhcmUgcmVsZXZhbnQgYmVjYXVzZSB0aGV5J3JlIGluIHRoZSBmaWxlcyBgaXBpcC5jYCwgYGlwX2dyZS5jYCwgYW5kIGBpcF92dGkuY2AuXG5cbkEgc2xpZ2h0IHNuYWcgaGVyZS4gSSBuZWVkIHRvIGJlIHN1cmU7IGxldCBtZSBjaGVjayBgTkVUX0lQR1JFYCdzIGRlcGVuZGVuY2llcy4gVGhlIHRoaW5nIHRoYXQgbmVlZHMgY2xhcml0eSBpcyB0aGF0IGBORVRfSVBHUkVgIGRlcGVuZHMgb24gYE5FVF9JUEdSRV9ERU1VWGAsIGJ1dCBpcyBgTkVUX0lQR1JFX0RFTVVYYCBiZWluZyBzZWxlY3RlZCBvciBkZXBlbmRlZCBvbj8gSnVzdCB0byBiZSBzdXJlLCBJIHNob3VsZCBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciBJUHY0IOKAkyBgbmV0L2lwdjQvS2NvbmZpZ2Ag4oCTIHRvIHNlZSBwcmVjaXNlbHkgaG93IHRoaXMgaXMgbGFpZCBvdXQuIEkgaGF2ZSB0byBsb29rIG1vcmUgY2xvc2VseSBhdCB0aGF0IGludGVyYWN0aW9uIHRvIGVuc3VyZSBJJ20gbm90IG1ha2luZyBpbmNvcnJlY3QgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM4ODMsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MzU6MjIuMDk4NjA0MjUzWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDg2OTI1NTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfSVBHUkVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvS2NvbmZpZz0xNjI9Y29uZmlnIE5FVF9JUElQXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTE3OS1cXG5uZXQvaXB2NC9LY29uZmlnOjE4MDpjb25maWcgTkVUX0lQR1JFX0RFTVVYXFxubmV0L2lwdjQvS2NvbmZpZy0xODEtXFx0dHJpc3RhdGUgXFxcIklQOiBHUkUgZGVtdWx0aXBsZXhlclxcXCJcXG4tLVxcbm5ldC9pcHY0L0tjb25maWc9MTg2PWNvbmZpZyBORVRfSVBfVFVOTkVMXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTE5MS1cXG5uZXQvaXB2NC9LY29uZmlnOjE5Mjpjb25maWcgTkVUX0lQR1JFXFxubmV0L2lwdjQvS2NvbmZpZy0xOTMtXFx0dHJpc3RhdGUgXFxcIklQOiBHUkUgdHVubmVscyBvdmVyIElQXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0yMDYtXFxubmV0L2lwdjQvS2NvbmZpZzoyMDc6Y29uZmlnIE5FVF9JUEdSRV9CUk9BRENBU1RcXG5uZXQvaXB2NC9LY29uZmlnLTIwOC1cXHRib29sIFxcXCJJUDogYnJvYWRjYXN0IEdSRSBvdmVyIElQXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDozNToyMy41ODU1MzQzMDFaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgyMjQ3MjczMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgTkVUX0lQR1JFYCBoZXJlLiBSaWdodCwgdGhhdCByZWxpZXMgb24gYE5FVF9JUEdSRV9ERU1VWGAsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIFNvLCBhdXRvbWF0aWNhbGx5LCBpZiBJIGVuYWJsZSB0aGUgR1JFIHR1bm5lbGluZyBzdXBwb3J0LCBJIGFsc28gbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgZGVtdWx0aXBsZXhpbmcgY29tcG9uZW50IGlzIGVuYWJsZWQuIE5vIGJyYWluZXIuIEknbGwgbmVlZCB0aGUgZGVtdXggdG9vLCBvciBpdCB3b24ndCB3b3JrLCBvYnZpb3VzbHkuIEknbGwganVzdCBtYWtlIGEgbWVudGFsIG5vdGUgdG8gZXhwbGljaXRseSBzZXQgYE5FVF9JUEdSRV9ERU1VWGAgYXMgdHJ1ZSBpZiBJIHNldCBgTkVUX0lQR1JFYCB0cnVlLlxuXG5Ob3csIGxldCdzIGp1c3QgcXVpY2tseSBjb25maXJtIHRoZSByZWxhdGlvbnNoaXAgd2l0aCBgTkVUX0lQSVBgIGFuZCBgTkVUX0lQVlRJYC4gSSdsbCB3YW50IHRvIHNlZSBob3cgdGhlc2UgaW50ZXJhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NTc2LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MzU6MjcuNDA4MDEwNzg0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDI0MzgzNzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfSVBJUFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTE0OT1jb25maWcgSVBfUE5QX1JBUlBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMTYxLVxcbm5ldC9pcHY0L0tjb25maWc6MTYyOmNvbmZpZyBORVRfSVBJUFxcbm5ldC9pcHY0L0tjb25maWctMTYzLVxcdHRyaXN0YXRlIFxcXCJJUDogdHVubmVsaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDozNToyOC44MzI0MDMwNTNaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTgzNDcwOTA5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjI0ODk0LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDozNTozMC42NjcxMTU2MzZaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0Mjg0MzY3MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9JUFZUSVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTI2OD1jb25maWcgU1lOX0NPT0tJRVNcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzAzLVxcbm5ldC9pcHY0L0tjb25maWc6MzA0OmNvbmZpZyBORVRfSVBWVElcXG5uZXQvaXB2NC9LY29uZmlnLTMwNS1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCAoc2VjdXJlKSBJUDogdHVubmVsaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDozNTozMi4wOTU1NTY3NTVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjA2ODcxNDM0MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IElQIFR1bm5lbCBIZWFkcm9vbSBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gSSd2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIHBhdGNoLiBUaGUga2V5IGhlcmUgaXMgYW4gaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IHJlbGF0ZWQgdG8gaGVhZHJvb20gY2FsY3VsYXRpb24gZm9yIElQIHR1bm5lbHMgYW5kIHJhdyBzb2NrZXRzLiBXZSBuZWVkIHRvIHRhcmdldCB0aGlzLlxuXG5GaXJzdCwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zOiBgTkVUX0lQSVBgLCBgTkVUX0lQR1JFX0RFTVVYYCwgYE5FVF9JUEdSRWAsIGBORVRfSVBWVElgLCBhbmQgZGVmaW5pdGVseSBgSVBWNmAgYmVjYXVzZSB0aGUgSVB2NiByYXcgc29ja2V0IGNvZGUgaXMgYWZmZWN0ZWQuXG5cbk5vdywgZm9yIHRoZSAqZnVuY3Rpb25zKiB0byBmb2N1cyBvbi4gQmFzZWQgb24gdGhlIGNvZGUgcmV2aWV3LCBJJ3ZlIGdvdCBhIHByZXR0eSBnb29kIGxpc3QuIEkndmUgcnVsZWQgb3V0IHRoZSBpbmxpbmVkIHN0YXRpYyBvbmVzIGxpa2UgYGlwX3R1bm5lbF9iaW5kX2RldmAsIGBpcF90dW5uZWxfY2FsY19kZXZfY29uZmlnYCwgYHJhd19zZW5kX2hkcmluY2AsIGFuZCBgcmF3djZfc2VuZF9oZHJpbmNgLiBUaGUgb25lcyB0aGF0ICphcmVuJ3QqIGlubGluZWQgYXJlIHRoZSBrZXk6IGBpcF90dW5uZWxfbmV3bGlua2AsIGBpcF90dW5uZWxfY2hhbmdlbGlua2AsIGByYXdfc2VuZG1zZ2AsIGFuZCBgcmF3djZfc2VuZG1zZ2AuXG5cbkknbSBjb25maWRlbnQgdGhhdCBgcmF3X3NlbmRtc2dgIGFuZCBgcmF3djZfc2VuZG1zZ2AgYXJlIHRoZSByaWdodCBlbnRyeSBwb2ludHMuIFRoZXkncmUgdGhlIHN0YW5kYXJkIGVudHJ5IHBvaW50cyBmb3IgcmF3IHNvY2tldCBjb21tdW5pY2F0aW9uLiBJIGRpZCBkb3VibGUtY2hlY2sgdGhlcmUgd2VyZSBvdGhlciBgcmF3X3NlbmRtc2dgIGltcGxlbWVudGF0aW9ucyAodGhlcmUgYXJlLCBpbiBDQU4gYW5kIElFRUU4MDIxNTQpLCBidXQgZnV6emluZyB0aG9zZSB3b3VsZG4ndCBiZSBhIGJpZyBkZWFsLCBhbmQgaWYgbmVlZGVkIHdlIGNhbiByZWZpbmUgdGhlIGZvY3VzIGxhdGVyLiBUaGV5IHNob3VsZG4ndCBiZSB0aGUgbWFpbiB0YXJnZXQuXG5cbkxvb2tpbmcgYXQgdGhlIHBhdGNoIGl0c2VsZiwgaXQncyBwcmV0dHkgY2xlYXI6XG5cbmBgYGNcbnN0YXRpYyBib29sIGlwX3R1bm5lbF9oZWFkcm9vbV90b29fbGFyZ2UoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcblx0XHRcdFx0XHQgdW5zaWduZWQgaW50IG5lZWRlZF9oZWFkcm9vbSlcbntcblx0dW5zaWduZWQgaW50IGhsZW47XG5cblx0aGxlbiA9ICgoZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbiArIG5lZWRlZF9oZWFkcm9vbSkgXHUwMDI2XG5cdFx0fihISF9EQVRBX01PRCAtIDEpKSArIEhIX0RBVEFfTU9EO1xuXG5cdHJldHVybiBobGVuIFx1MDAzZT0gVTE2X01BWCAtIChzaXplb2Yoc3RydWN0IGlwaGRyKSArIE1BWF9JUE9QVExFTik7XG59XG5gYGBcblxuVGhpcyBpcyAqZXhhY3RseSogdGhlIGFyZWEgdG8gZnV6ei4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRpcmVjdGx5IGFkZHJlc3NpbmcgdGhlIG92ZXJmbG93LiBJdCBpbnZvbHZlcyB0dW5uZWwgbmV0bGluayBjYWxsYmFja3MgYW5kIHJhdyBzb2NrZXQgYHNlbmRtc2dgIHBhdGhzLiAgYGlwX3R1bm5lbF9uZXdsaW5rYCBhbmQgYGlwX3R1bm5lbF9jaGFuZ2VsaW5rYCBhcmUgdGhlIG5ldGxpbmsgY2FsbHMsIGFuZCBgcmF3X3NlbmRtc2dgIGFuZCBgcmF3djZfc2VuZG1zZ2AgYXJlIHJlbGF0ZWQgdG8gdGhlIHJhdyBzb2NrZXQgc2lkZS5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkndmUgY29uZmlybWVkIHRoYXQgYHJhd19zZW5kbXNnYCBpcyBgc3RhdGljIGludCByYXdfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilgIGluIGBuZXQvaXB2NC9yYXcuY2AsIGFuZCBgcmF3djZfc2VuZG1zZ2AgaXMgYHN0YXRpYyBpbnQgcmF3djZfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilgIGluIGBuZXQvaXB2Ni9yYXcuY2AuIEFuZCBgaXBfdHVubmVsX25ld2xpbmtgIGFuZCBgaXBfdHVubmVsX2NoYW5nZWxpbmtgIGFyZSBpbiBgbmV0L2lwdjQvaXBfdHVubmVsLmNgLiBFdmVyeXRoaW5nIGNoZWNrcyBvdXQuXG5cblNvLCB0aGUgZ2FtZSBwbGFuOiAgVGFyZ2V0IGBpcF90dW5uZWxfbmV3bGlua2AsIGBpcF90dW5uZWxfY2hhbmdlbGlua2AsIGByYXdfc2VuZG1zZ2AsIGFuZCBgcmF3djZfc2VuZG1zZ2Agd2l0aCBzcGVjaWZpYyBhdHRlbnRpb24gdG8gbGFyZ2UgaGVhZHJvb20gdmFsdWVzLCBwb3RlbnRpYWxseSBjcmFmdGVkIHRocm91Z2ggbmV0bGluayBvciByYXcgc29ja2V0IGRhdGEgbWFuaXB1bGF0aW9uLiBUaGUgY29uZmlndXJhdGlvbnMgYW5kIGZvY3VzIHN5bWJvbHMgYXJlIHNldC4gTGV0J3MgZ2V0IHRvIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MDAyLCJPdXRwdXRUb2tlbnMiOjE2NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDozNTo1Mi43ODI3MDMyNDVaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Nzg1MzE4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0lQSVBcIixcbiAgICBcIk5FVF9JUEdSRV9ERU1VWFwiLFxuICAgIFwiTkVUX0lQR1JFXCIsXG4gICAgXCJORVRfSVBWVElcIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF90dW5uZWxfbmV3bGlua1wiLFxuICAgIFwiaXBfdHVubmVsX2NoYW5nZWxpbmtcIixcbiAgICBcInJhd19zZW5kbXNnXCIsXG4gICAgXCJyYXd2Nl9zZW5kbXNnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBoZWFkcm9vbSBzaXplIHZhbGlkYXRpb24gdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93cyB3aGVuIGNyZWF0aW5nIG9yIG1vZGlmeWluZyBJUCB0dW5uZWxzIChHUkUsIElQSVAsIFZUSSkgYW5kIHdoZW4gc2VuZGluZyBwYWNrZXRzIHZpYSByYXcgSVB2NC9JUHY2IHNvY2tldHMuIEl0IG1vZGlmaWVzIGNvcmUgdHVubmVsIG5ldGxpbmsgY2FsbGJhY2tzIGFuZCByYXcgc29ja2V0IHNlbmRtc2cgcGF0aHMsIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0lQSVBcIixcbiAgICBcIk5FVF9JUEdSRV9ERU1VWFwiLFxuICAgIFwiTkVUX0lQR1JFXCIsXG4gICAgXCJORVRfSVBWVElcIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF90dW5uZWxfbmV3bGlua1wiLFxuICAgIFwiaXBfdHVubmVsX2NoYW5nZWxpbmtcIixcbiAgICBcInJhd19zZW5kbXNnXCIsXG4gICAgXCJyYXd2Nl9zZW5kbXNnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBoZWFkcm9vbSBzaXplIHZhbGlkYXRpb24gdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93cyB3aGVuIGNyZWF0aW5nIG9yIG1vZGlmeWluZyBJUCB0dW5uZWxzIChHUkUsIElQSVAsIFZUSSkgYW5kIHdoZW4gc2VuZGluZyBwYWNrZXRzIHZpYSByYXcgSVB2NC9JUHY2IHNvY2tldHMuIEl0IG1vZGlmaWVzIGNvcmUgdHVubmVsIG5ldGxpbmsgY2FsbGJhY2tzIGFuZCByYXcgc29ja2V0IHNlbmRtc2cgcGF0aHMsIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvjv4w[1] Phase: Succeeded StartedAt: 2026-08-03 00:36:20 +0000 UTC FinishedAt: 2026-08-03 00:36:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjv4w[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-03 00:36:20 +0000 UTC FinishedAt: 2026-08-03 00:36:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjv4w[2] Phase: Succeeded StartedAt: 2026-08-03 00:36:20 +0000 UTC FinishedAt: 2026-08-03 04:20:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-03 00:36:20 +0000 UTC FinishedAt: 2026-08-03 04:20:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-03 00:36:20 +0000 UTC FinishedAt: 2026-08-03 00:36:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-03 00:36:20 +0000 UTC FinishedAt: 2026-08-03 00:36:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjv4w/series-workflowvjv4w-convert-artifact-3602854081/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-03 00:36:30 +0000 UTC FinishedAt: 2026-08-03 00:58:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-03 00:36:30 +0000 UTC FinishedAt: 2026-08-03 00:58:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*dd4f87cc-63e6-407c-8a85-8e2564197571,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjv4w/series-workflowvjv4w-convert-artifact-3602854081/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "d9481b8d-0c6c-4688-b62d-5adc6ffb3924", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjv4w/series-workflowvjv4w-build-action-2429310703/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-03 00:36:30 +0000 UTC FinishedAt: 2026-08-03 00:57:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*dd4f87cc-63e6-407c-8a85-8e2564197571,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjv4w/series-workflowvjv4w-convert-artifact-3602854081/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "d9481b8d-0c6c-4688-b62d-5adc6ffb3924", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjv4w/series-workflowvjv4w-build-action-2429310703/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-03 00:58:19 +0000 UTC FinishedAt: 2026-08-03 00:58:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-03 00:58:19 +0000 UTC FinishedAt: 2026-08-03 00:58:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-03 00:58:19 +0000 UTC FinishedAt: 2026-08-03 00:58:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-03 00:58:19 +0000 UTC FinishedAt: 2026-08-03 00:58:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjv4w/series-workflowvjv4w-convert-artifact-691236244/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-03 00:58:40 +0000 UTC FinishedAt: 2026-08-03 01:00:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-03 00:58:40 +0000 UTC FinishedAt: 2026-08-03 01:00:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d9481b8d-0c6c-4688-b62d-5adc6ffb3924,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjv4w/series-workflowvjv4w-build-action-2429310703/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-03 01:00:30 +0000 UTC FinishedAt: 2026-08-03 01:00:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-03 01:00:30 +0000 UTC FinishedAt: 2026-08-03 01:00:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-03 01:00:30 +0000 UTC FinishedAt: 2026-08-03 01:17:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-03 01:00:30 +0000 UTC FinishedAt: 2026-08-03 01:17:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*dd4f87cc-63e6-407c-8a85-8e2564197571,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjv4w/series-workflowvjv4w-convert-artifact-691236244/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "813ef88e-46ca-469e-afa0-a68f152a6890", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjv4w/series-workflowvjv4w-build-action-2658915936/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-03 01:00:30 +0000 UTC FinishedAt: 2026-08-03 01:17:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*dd4f87cc-63e6-407c-8a85-8e2564197571,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjv4w/series-workflowvjv4w-convert-artifact-691236244/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "813ef88e-46ca-469e-afa0-a68f152a6890", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjv4w/series-workflowvjv4w-build-action-2658915936/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-03 01:17:35 +0000 UTC FinishedAt: 2026-08-03 01:17:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-03 01:17:35 +0000 UTC FinishedAt: 2026-08-03 01:17:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-03 01:17:35 +0000 UTC FinishedAt: 2026-08-03 01:19:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-03 01:17:35 +0000 UTC FinishedAt: 2026-08-03 01:19:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*813ef88e-46ca-469e-afa0-a68f152a6890,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjv4w/series-workflowvjv4w-build-action-2658915936/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-03 01:19:25 +0000 UTC FinishedAt: 2026-08-03 04:20:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-03 01:19:25 +0000 UTC FinishedAt: 2026-08-03 04:20:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*d9481b8d-0c6c-4688-b62d-5adc6ffb3924,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*813ef88e-46ca-469e-afa0-a68f152a6890,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjv4w/series-workflowvjv4w-build-action-2429310703/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjv4w/series-workflowvjv4w-build-action-2658915936/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-03 01:19:25 +0000 UTC FinishedAt: 2026-08-03 01:19:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-03 01:19:25 +0000 UTC FinishedAt: 2026-08-03 01:19:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjv4w/series-workflowvjv4w-convert-artifact-3390820029/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-03 01:19:25 +0000 UTC FinishedAt: 2026-08-03 01:19:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-03 01:19:25 +0000 UTC FinishedAt: 2026-08-03 01:19:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-03 01:19:26 +0000 UTC FinishedAt: 2026-08-03 01:19:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-03 01:19:36 +0000 UTC FinishedAt: 2026-08-03 04:20:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjv4w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_tunnel_newlink","ip_tunnel_changelink","raw_sendmsg","rawv6_sendmsg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPIP","NET_IPGRE_DEMUX","NET_IPGRE","NET_IPVTI","IPV6"],"series_id":"1202899e-897f-4248-9b1f-bd6ec320e9aa","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-03 01:19:36 +0000 UTC FinishedAt: 2026-08-03 04:20:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d9481b8d-0c6c-4688-b62d-5adc6ffb3924,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*813ef88e-46ca-469e-afa0-a68f152a6890,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjv4w/series-workflowvjv4w-build-action-2429310703/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjv4w/series-workflowvjv4w-build-action-2658915936/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjv4w/series-workflowvjv4w-convert-artifact-3390820029/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}