Name: series-workflowdc6bh Phase: Succeeded StartedAt: 2026-07-14 05:12:58 +0000 UTC FinishedAt: 2026-07-14 07:05:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdc6bh[0] Phase: Succeeded StartedAt: 2026-07-14 05:12:58 +0000 UTC FinishedAt: 2026-07-14 05:29:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdc6bh[0].run-triage Phase: Succeeded StartedAt: 2026-07-14 05:12:58 +0000 UTC FinishedAt: 2026-07-14 05:29:45 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3b029c035b34bbc693405ddf759f0e9b920c27f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3b029c035b34bbc693405ddf759f0e9b920c27f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "eiointc_get_ipnum", "eiointc_set_sw_coreisr", "eiointc_update_irq" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA1OjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Vpb2ludGNfZ2V0X2lwbnVtJiMzNDssCiAgICAmIzM0O2Vpb2ludGNfc2V0X3N3X2NvcmVpc3ImIzM0OywKICAgICYjMzQ7ZWlvaW50Y191cGRhdGVfaXJxJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBMb29uZ0FyY2ggS1ZNIGludGVycnVwdCBjb250cm9sbGVyIChlaW9pbnRjKSBsb2dpYyBieSBleHRyYWN0aW5nIGFuZCB1cGRhdGluZyB0aGUgSVAgbnVtYmVyIGNhbGN1bGF0aW9uIGludG8gYSBuZXcgZnVuY3Rpb24gYGVpb2ludGNfZ2V0X2lwbnVtYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgS1ZNIGlvY3Rscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNToyOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDgzNjk0YTBhZjA0MDgwN2RlNWJmY2Q4ZWVkMzU1N2FmYThiMWNkMDFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAwNToyOTowNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmNcbmluZGV4IDJiMTQ0ODVkMTRhNzA4Li5jMWUwY2Q4ZGNhMTZjZSAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jXG5AQCAtNywxNyAmIzQzOzcsMjcgQEBcbiAjaW5jbHVkZSBcdTAwM2Nhc20va3ZtX3ZjcHUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvdW50X3plcm9zLmhcdTAwM2VcbiBcbiYjNDM7c3RhdGljIGludCBlaW9pbnRjX2dldF9pcG51bShzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMsIGludCBpcnEpXG4mIzQzO3tcbiYjNDM7XHRpbnQgaXBudW0gPSAocy1cdTAwM2VpcG1hcCBcdTAwM2VcdTAwM2UgKGlycSAvIDMyICogOCkpIFx1MDAyNiAweGZmO1xuJiM0MztcbiYjNDM7XHRpZiAoIShzLVx1MDAzZXN0YXR1cyBcdTAwMjYgQklUKEVJT0lOVENfRU5BQkxFX0lOVF9FTkNPREUpKSkge1xuJiM0MztcdFx0aXBudW0gPSBjb3VudF90cmFpbGluZ196ZXJvcyhpcG51bSk7XG4mIzQzO1x0XHRpcG51bSA9IGlwbnVtIFx1MDAzYyA0ID8gaXBudW0gOiAwO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRpcG51bSA9IChpcG51bSBcdTAwM2MgTE9PTkdTT05fSVBfTlVNKSA/IGlwbnVtIDogMDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBpcG51bTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBlaW9pbnRjX3NldF9zd19jb3JlaXNyKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcylcbiB7XG4gXHRpbnQgaXBudW0sIGNwdSwgY3B1aWQsIGlycTtcbiBcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbiBcbiBcdGZvciAoaXJxID0gMDsgaXJxIFx1MDAzYyBFSU9JTlRDX0lSUVM7IGlycSYjNDM7JiM0MzspIHtcbi1cdFx0aXBudW0gPSAocy1cdTAwM2VpcG1hcCBcdTAwM2VcdTAwM2UgKGlycSAvIDMyICogOCkpIFx1MDAyNiAweGZmO1xuLVx0XHRpZiAoIShzLVx1MDAzZXN0YXR1cyBcdTAwMjYgQklUKEVJT0lOVENfRU5BQkxFX0lOVF9FTkNPREUpKSkge1xuLVx0XHRcdGlwbnVtID0gY291bnRfdHJhaWxpbmdfemVyb3MoaXBudW0pO1xuLVx0XHRcdGlwbnVtID0gaXBudW0gXHUwMDNjIDQgPyBpcG51bSA6IDA7XG4tXHRcdH1cbiYjNDM7XHRcdGlwbnVtID0gZWlvaW50Y19nZXRfaXBudW0ocywgaXJxKTtcbiBcbiBcdFx0Y3B1aWQgPSAoKHU4ICopcy1cdTAwM2Vjb3JlbWFwKVtpcnFdO1xuIFx0XHR2Y3B1ID0ga3ZtX2dldF92Y3B1X2J5X2NwdWlkKHMtXHUwMDNla3ZtLCBjcHVpZCk7XG5AQCAtMzgsMTEgJiM0Mzs0OCw3IEBAIHN0YXRpYyB2b2lkIGVpb2ludGNfdXBkYXRlX2lycShzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMsIGludCBpcnEsIGludCBsZXZlbClcbiBcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbiBcdHN0cnVjdCBrdm1faW50ZXJydXB0IHZjcHVfaXJxO1xuIFxuLVx0aXBudW0gPSAocy1cdTAwM2VpcG1hcCBcdTAwM2VcdTAwM2UgKGlycSAvIDMyICogOCkpIFx1MDAyNiAweGZmO1xuLVx0aWYgKCEocy1cdTAwM2VzdGF0dXMgXHUwMDI2IEJJVChFSU9JTlRDX0VOQUJMRV9JTlRfRU5DT0RFKSkpIHtcbi1cdFx0aXBudW0gPSBjb3VudF90cmFpbGluZ196ZXJvcyhpcG51bSk7XG4tXHRcdGlwbnVtID0gaXBudW0gXHUwMDNjIDQgPyBpcG51bSA6IDA7XG4tXHR9XG4mIzQzO1x0aXBudW0gPSBlaW9pbnRjX2dldF9pcG51bShzLCBpcnEpO1xuIFxuIFx0Y3B1ID0gcy1cdTAwM2Vzd19jb3JlbWFwW2lycV07XG4gXHR2Y3B1ID0ga3ZtX2dldF92Y3B1X2J5X2lkKHMtXHUwMDNla3ZtLCBjcHUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA1OjI5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Vpb2ludGNfZ2V0X2lwbnVtJiMzNDssCiAgICAmIzM0O2Vpb2ludGNfc2V0X3N3X2NvcmVpc3ImIzM0OywKICAgICYjMzQ7ZWlvaW50Y191cGRhdGVfaXJxJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBMb29uZ0FyY2ggS1ZNIGludGVycnVwdCBjb250cm9sbGVyIChlaW9pbnRjKSBsb2dpYyBieSBleHRyYWN0aW5nIGFuZCB1cGRhdGluZyB0aGUgSVAgbnVtYmVyIGNhbGN1bGF0aW9uIGludG8gYSBuZXcgZnVuY3Rpb24gYGVpb2ludGNfZ2V0X2lwbnVtYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgS1ZNIGlvY3Rscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODM2OTRhMGFmMDQwODA3ZGU1YmZjZDhlZWQzNTU3YWZhOGIxY2QwMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDE0IDA1OjI5OjA3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jCmluZGV4IDJiMTQ0ODVkMTRhNzA4Li5jMWUwY2Q4ZGNhMTZjZSAxMDA2NDQKLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYwpAQCAtNywxNyAmIzQzOzcsMjcgQEAKICNpbmNsdWRlICZsdDthc20va3ZtX3ZjcHUuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9jb3VudF96ZXJvcy5oJmd0OwogCiYjNDM7c3RhdGljIGludCBlaW9pbnRjX2dldF9pcG51bShzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMsIGludCBpcnEpCiYjNDM7ewomIzQzOwlpbnQgaXBudW0gPSAocy0mZ3Q7aXBtYXAgJmd0OyZndDsgKGlycSAvIDMyICogOCkpICZhbXA7IDB4ZmY7CiYjNDM7CiYjNDM7CWlmICghKHMtJmd0O3N0YXR1cyAmYW1wOyBCSVQoRUlPSU5UQ19FTkFCTEVfSU5UX0VOQ09ERSkpKSB7CiYjNDM7CQlpcG51bSA9IGNvdW50X3RyYWlsaW5nX3plcm9zKGlwbnVtKTsKJiM0MzsJCWlwbnVtID0gaXBudW0gJmx0OyA0ID8gaXBudW0gOiAwOwomIzQzOwl9IGVsc2UgewomIzQzOwkJaXBudW0gPSAoaXBudW0gJmx0OyBMT09OR1NPTl9JUF9OVU0pID8gaXBudW0gOiAwOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBpcG51bTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBlaW9pbnRjX3NldF9zd19jb3JlaXNyKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcykKIHsKIAlpbnQgaXBudW0sIGNwdSwgY3B1aWQsIGlycTsKIAlzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7CiAKIAlmb3IgKGlycSA9IDA7IGlycSAmbHQ7IEVJT0lOVENfSVJRUzsgaXJxJiM0MzsmIzQzOykgewotCQlpcG51bSA9IChzLSZndDtpcG1hcCAmZ3Q7Jmd0OyAoaXJxIC8gMzIgKiA4KSkgJmFtcDsgMHhmZjsKLQkJaWYgKCEocy0mZ3Q7c3RhdHVzICZhbXA7IEJJVChFSU9JTlRDX0VOQUJMRV9JTlRfRU5DT0RFKSkpIHsKLQkJCWlwbnVtID0gY291bnRfdHJhaWxpbmdfemVyb3MoaXBudW0pOwotCQkJaXBudW0gPSBpcG51bSAmbHQ7IDQgPyBpcG51bSA6IDA7Ci0JCX0KJiM0MzsJCWlwbnVtID0gZWlvaW50Y19nZXRfaXBudW0ocywgaXJxKTsKIAogCQljcHVpZCA9ICgodTggKilzLSZndDtjb3JlbWFwKVtpcnFdOwogCQl2Y3B1ID0ga3ZtX2dldF92Y3B1X2J5X2NwdWlkKHMtJmd0O2t2bSwgY3B1aWQpOwpAQCAtMzgsMTEgJiM0Mzs0OCw3IEBAIHN0YXRpYyB2b2lkIGVpb2ludGNfdXBkYXRlX2lycShzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMsIGludCBpcnEsIGludCBsZXZlbCkKIAlzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7CiAJc3RydWN0IGt2bV9pbnRlcnJ1cHQgdmNwdV9pcnE7CiAKLQlpcG51bSA9IChzLSZndDtpcG1hcCAmZ3Q7Jmd0OyAoaXJxIC8gMzIgKiA4KSkgJmFtcDsgMHhmZjsKLQlpZiAoIShzLSZndDtzdGF0dXMgJmFtcDsgQklUKEVJT0lOVENfRU5BQkxFX0lOVF9FTkNPREUpKSkgewotCQlpcG51bSA9IGNvdW50X3RyYWlsaW5nX3plcm9zKGlwbnVtKTsKLQkJaXBudW0gPSBpcG51bSAmbHQ7IDQgPyBpcG51bSA6IDA7Ci0JfQomIzQzOwlpcG51bSA9IGVpb2ludGNfZ2V0X2lwbnVtKHMsIGlycSk7CiAKIAljcHUgPSBzLSZndDtzd19jb3JlbWFwW2lycV07CiAJdmNwdSA9IGt2bV9nZXRfdmNwdV9ieV9pZChzLSZndDtrdm0sIGNwdSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA1OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MjAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0ODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTG9vbmdBcmNoIEtWTSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgTG9vbmdBcmNoIEtWTSBpbnRlcnJ1cHQgY29udHJvbGxlciBjb2RlLCBzcGVjaWZpY2FsbHkgYGFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgZXh0cmFjdGluZyBzb21lIGNvbW1vbiBsb2dpYyBpbnRvIGEgbmV3IGZ1bmN0aW9uLCBgZWlvaW50Y19nZXRfaXBudW1gLiAgVGhlcmUmIzM5O3MgYWxzbyBhIGNvbmRpdGlvbmFsIGNoZWNrIGJlaW5nIGFkZGVkIHdpdGhpbiB0aGUgYGVsc2VgIGJyYW5jaCwgYSBzYW5pdHkgY2hlY2sgb24gYGlwbnVtYCB0byBlbnN1cmUgaXQmIzM5O3Mgd2l0aGluIGV4cGVjdGVkIGJvdW5kcyBiYXNlZCBvbiBgTE9PTkdTT05fSVBfTlVNYC4KCk15IGZpcnN0IHRob3VnaHQgaXMgYWx3YXlzLCAmIzM0O0hvdyByZWFjaGFibGUgaXMgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyYjMzQ7IEl0JiMzOTtzIEtWTSBjb2RlLCBidXQgdGFyZ2V0ZWQgYXQgdGhlIExvb25nQXJjaCBhcmNoaXRlY3R1cmUsIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyB0aGUgZnV6emluZyBxdWVzdGlvbi4gQ2FuIFN5emthbGxlciByZWFjaCBpdD8gU3l6a2FsbGVyICpjYW4qIGZ1enogS1ZNLCBidXQgdGhlIHF1ZXN0aW9uIGJlY29tZXMgd2hldGhlciBpdCBjYW4gZG8gc28gKm9uKiBMb29uZ0FyY2guICBHZW5lcmFsbHksIG15IGV4cGVyaWVuY2UgaXMgd2l0aCB4ODZfNjQsIGFybTY0LCByaXNjdjY0IGFuZCBzMzkweCBpbnN0YW5jZXMsIHNvIEkgaGF2ZSB0byBwYXVzZSBhbmQgdGhpbmsuIERvZXMgU3l6a2FsbGVyIGV2ZW4gcnVuIG9uIExvb25nQXJjaD8KCkkga25vdyB0aGVyZSYjMzk7cyBubyBMb29uZ0FyY2ggaW5zdGFuY2UgaW4gdGhlIG1haW4gc3l6Ym90LCBidXQgSSBuZWVkIHRvIGJlIGNhcmVmdWwgYXNzdW1pbmcgdGhhdCBtZWFucyBpdCYjMzk7cyB1bnJlYWNoYWJsZS4gSXQgKmNvdWxkKiBleGlzdCBpbiBhIGRpZmZlcmVudCBzZXR1cCwgb3IgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZS4gIEhvd2V2ZXIsIHRoaXMgY2hhbmdlIHNheXMgdGhlIGNvZGUgcGF0aCBtYXkgbm90IGJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHN1Y2ggYXMgR0NFIG9yIFFFTVUsIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBCdXQsIExvb25nQXJjaCBLVk0gaXMgc3BlY2lmaWMgdG8gTG9vbmdBcmNoLiBJZiB3ZSBhcmUgb24geDg2XzY0LCB3ZSBjYW4mIzM5O3QgZnV6eiBMb29uZ0FyY2ggS1ZNLCBsb2dpY2FsbHkuCgpXYWl0LCB0aGUgbmV4dCBzdGVwIGlzIHRvIG1ha2Ugc3VyZSBvZiB0aGF0LCBhbmQgaXQgYXBwZWFycyBzeXprYWxsZXIgZG9lcyBzdXBwb3J0IGBsaW51eC9sb29uZ2FyY2g2NGAuICBTbyB0aGUgYXNzdW1wdGlvbiAqaXMqIHRoYXQgaXQgKmNhbiogYmUgZnV6emVkLCBhcyBsb25nIGFzIGEgTG9vbmdBcmNoIFZNIGlzIHByZXNlbnQuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQgd2l0aGluIGBhcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmNgLiBJdCYjMzk7cyBgZWlvaW50Y19zZXRfc3dfY29yZWlzcmAgYW5kIGBlaW9pbnRjX3VwZGF0ZV9pcnFgIGJlaW5nIGNoYW5nZWQsIGFsb25nIHdpdGggdGhlIG5ldyBgZWlvaW50Y19nZXRfaXBudW1gIGZ1bmN0aW9uLiBGaW5hbGx5LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2hlY2sgYGFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnYCB0byBjb25maXJtIEtWTSBzdXBwb3J0LCBwcm9iYWJseSB2aWEgYENPTkZJR19LVk1gLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA1OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMTktXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA1OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1ODkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIENvbnRleHQqKgoKT2theSwgc28gd2UmIzM5O3JlIHN0YXJ0aW5nIHdpdGggYENPTkZJR19LVk1gLiBUaGF0JiMzOTtzIG91ciBpbml0aWFsIGFuY2hvciBwb2ludCBpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gc3BhY2UuIE5vdywgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIHNlZSB3aGF0IHJlbGF0ZWQgY29uZmlndXJhdGlvbnMsIGRlcGVuZGVuY2llcywgb3IgcG90ZW50aWFsIGNvbmZsaWN0cyBleGlzdC4gVGhpcyBpc24mIzM5O3QganVzdCBhYm91dCB3aGV0aGVyIEtWTSBpcyBlbmFibGVkOyBpdCYjMzk7cyBhYm91dCB1bmRlcnN0YW5kaW5nIHRoZSBicm9hZGVyIHBpY3R1cmUuIEFyZSB0aGVyZSBhbnkgb3RoZXIgdmlydHVhbGl6YXRpb24tcmVsYXRlZCBmbGFncz8gV2hhdCBzdWJzeXN0ZW1zIGFyZSBjb25kaXRpb25hbGx5IGNvbXBpbGVkIGJhc2VkIG9uIGBDT05GSUdfS1ZNYD8gV2hhdCBvdGhlciBmZWF0dXJlIHNldHMgbWlnaHQgYmUgYXZhaWxhYmxlPyBXZSBuZWVkIHRvIG1hcCBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIHRvIGdldCBhIGZ1bGwgdmlldy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlaW9pbnRjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vTWFrZWZpbGU9MjE9a3ZtLXkgJiM0Mzs9IGludGMvZG1zaW50Yy5vXG5hcmNoL2xvb25nYXJjaC9rdm0vTWFrZWZpbGU6MjI6a3ZtLXkgJiM0Mzs9IGludGMvZWlvaW50Yy5vXG5hcmNoL2xvb25nYXJjaC9rdm0vTWFrZWZpbGUtMjMta3ZtLXkgJiM0Mzs9IGludGMvcGNoX3BpYy5vXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTUtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjojaW5jbHVkZSBcdTAwM2Nhc20va3ZtX2Vpb2ludGMuaFx1MDAzZVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTctI2luY2x1ZGUgXHUwMDNjYXNtL2t2bV92Y3B1LmhcdTAwM2Vcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtOS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoxMDpzdGF0aWMgaW50IGVpb2ludGNfZ2V0X2lwbnVtKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcywgaW50IGlycSlcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0xMS17XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTIzLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjI0OnN0YXRpYyB2b2lkIGVpb2ludGNfc2V0X3N3X2NvcmVpc3Ioc3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzKVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTI1LXtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjktXHRmb3IgKGlycSA9IDA7IGlycSBcdTAwM2MgRUlPSU5UQ19JUlFTOyBpcnEmIzQzOyYjNDM7KSB7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzA6XHRcdGlwbnVtID0gZWlvaW50Y19nZXRfaXBudW0ocywgaXJxKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zMS1cbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNDQtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NDU6c3RhdGljIHZvaWQgZWlvaW50Y191cGRhdGVfaXJxKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcywgaW50IGlycSwgaW50IGxldmVsKVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTQ2LXtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNTAtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NTE6XHRpcG51bSA9IGVpb2ludGNfZ2V0X2lwbnVtKHMsIGlycSk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNTItXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTc5LVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjgwOnN0YXRpYyBpbmxpbmUgdm9pZCBlaW9pbnRjX3VwZGF0ZV9zd19jb3JlbWFwKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcyxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy04MS1cdFx0XHRcdFx0aW50IGlycSwgdTY0IHZhbCwgdTMyIGxlbiwgYm9vbCBub3RpZnkpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTEwNC1cdFx0XHQvKiBsb3dlciBpcnEgYXQgb2xkIGNwdSBhbmQgcmFpc2UgaXJxIGF0IG5ldyBjcHUgKi9cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoxMDU6XHRcdFx0ZWlvaW50Y191cGRhdGVfaXJxKHMsIGlycSAmIzQzOyBpLCAwKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0xMDYtXHRcdFx0cy1cdTAwM2Vzd19jb3JlbWFwW2lycSAmIzQzOyBpXSA9IGNwdTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoxMDc6XHRcdFx0ZWlvaW50Y191cGRhdGVfaXJxKHMsIGlycSAmIzQzOyBpLCAxKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0xMDgtXHRcdH0gZWxzZSB7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTExMy1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoxMTQ6dm9pZCBlaW9pbnRjX3NldF9pcnEoc3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzLCBpbnQgaXJxLCBpbnQgbGV2ZWwpXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMTE1LXtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMTIwLVx0bGV2ZWwgPyBfX3NldF9iaXQoaXJxLCBpc3IpIDogX19jbGVhcl9iaXQoaXJxLCBpc3IpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjEyMTpcdGVpb2ludGNfdXBkYXRlX2lycShzLCBpcnEsIGxldmVsKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0xMjItXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0xMjQtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MTI1OnN0YXRpYyBpbnQgbG9vbmdhcmNoX2Vpb2ludGNfcmVhZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcyxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0xMjYtXHRcdFx0XHRncGFfdCBhZGRyLCB1bnNpZ25lZCBsb25nICp2YWwpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTE2NS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoxNjY6c3RhdGljIGludCBrdm1fZWlvaW50Y19yZWFkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0xNjctXHRcdFx0c3RydWN0IGt2bV9pb19kZXZpY2UgKmRldixcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMTcwLVx0dW5zaWduZWQgbG9uZyBmbGFncywgZGF0YSwgb2Zmc2V0O1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjE3MTpcdHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqZWlvaW50YyA9IHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2guZWlvaW50YztcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0xNzItXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MTczOlx0aWYgKCFlaW9pbnRjKSB7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MTc0Olx0XHRrdm1fZXJyKFwmIzM0OyVzOiBlaW9pbnRjIGlycWNoaXAgbm90IHZhbGlkIVxcblwmIzM0OywgX19mdW5jX18pO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTE3NS1cdFx0cmV0dXJuIDA7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTE3OC1cdGlmIChhZGRyIFx1MDAyNiAobGVuIC0gMSkpIHtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoxNzk6XHRcdGt2bV9lcnIoXCYjMzQ7JXM6IGVpb2ludGMgbm90IGFsaWduZWQgYWRkciAlbGx4IGxlbiAlZFxcblwmIzM0OywgX19mdW5jX18sIGFkZHIsIGxlbik7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMTgwLVx0XHRyZXR1cm4gMDtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMTg0LVx0YWRkciAtPSBvZmZzZXQ7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MTg1Olx0dmNwdS1cdTAwM2VzdGF0LmVpb2ludGNfcmVhZF9leGl0cyYjNDM7JiM0Mzs7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MTg2Olx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZWlvaW50Yy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MTg3Olx0bG9vbmdhcmNoX2Vpb2ludGNfcmVhZCh2Y3B1LCBlaW9pbnRjLCBhZGRyLCBcdTAwMjZkYXRhKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoxODg6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmVpb2ludGMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTE4OS1cbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjA4LVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjIwOTpzdGF0aWMgaW50IGxvb25nYXJjaF9laW9pbnRjX3dyaXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoyMTA6XHRcdFx0XHRzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMsXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjExLVx0XHRcdFx0Z3BhX3QgYWRkciwgdTY0IHZhbHVlLCB1NjQgZmllbGRfbWFzaylcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjQ5LVx0XHRcdGlycSA9IF9fZmZzKGRhdGEpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjI1MDpcdFx0XHRlaW9pbnRjX3VwZGF0ZV9pcnEocywgaXJxICYjNDM7IGluZGV4ICogNjQsIDEpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTI1MS1cdFx0XHRkYXRhIFx1MDAyNj0gfkJJVF9VTEwoaXJxKTtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjU5LVx0XHRcdGlycSA9IF9fZmZzKGRhdGEpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjI2MDpcdFx0XHRlaW9pbnRjX3VwZGF0ZV9pcnEocywgaXJxICYjNDM7IGluZGV4ICogNjQsIDApO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTI2MS1cdFx0XHRkYXRhIFx1MDAyNj0gfkJJVF9VTEwoaXJxKTtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjc5LVx0XHRcdGlycSA9IF9fZmZzKGRhdGEpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjI4MDpcdFx0XHRlaW9pbnRjX3VwZGF0ZV9pcnEocywgaXJxICYjNDM7IGluZGV4ICogNjQsIDApO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTI4MS1cdFx0XHRkYXRhIFx1MDAyNj0gfkJJVF9VTEwoaXJxKTtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjg4LVx0XHRkYXRhID0gcy1cdTAwM2Vjb3JlbWFwW2luZGV4XTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoyODk6XHRcdGVpb2ludGNfdXBkYXRlX3N3X2NvcmVtYXAocywgaW5kZXggKiA4LCBkYXRhLCBzaXplb2YoZGF0YSksIHRydWUpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTI5MC1cdFx0YnJlYWs7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTI5Ny1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoyOTg6c3RhdGljIGludCBrdm1fZWlvaW50Y193cml0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjk5LVx0XHRcdHN0cnVjdCBrdm1faW9fZGV2aWNlICpkZXYsXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMwMi1cdHVuc2lnbmVkIGxvbmcgZmxhZ3MsIHZhbHVlO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjMwMzpcdHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqZWlvaW50YyA9IHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2guZWlvaW50YztcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zMDQtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzA1Olx0aWYgKCFlaW9pbnRjKSB7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzA2Olx0XHRrdm1fZXJyKFwmIzM0OyVzOiBlaW9pbnRjIGlycWNoaXAgbm90IHZhbGlkIVxcblwmIzM0OywgX19mdW5jX18pO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMwNy1cdFx0cmV0dXJuIDA7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMxMC1cdGlmIChhZGRyIFx1MDAyNiAobGVuIC0gMSkpIHtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzozMTE6XHRcdGt2bV9lcnIoXCYjMzQ7JXM6IGVpb2ludGMgbm90IGFsaWduZWQgYWRkciAlbGx4IGxlbiAlZFxcblwmIzM0OywgX19mdW5jX18sIGFkZHIsIGxlbik7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzEyLVx0XHRyZXR1cm4gMDtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzE0LVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjMxNTpcdHZjcHUtXHUwMDNlc3RhdC5laW9pbnRjX3dyaXRlX2V4aXRzJiM0MzsmIzQzOztcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzozMTY6XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZlaW9pbnRjLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zMTctXHRzd2l0Y2ggKGxlbikge1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zMTktXHRcdHZhbHVlID0gKih1bnNpZ25lZCBjaGFyICopdmFsO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjMyMDpcdFx0bG9vbmdhcmNoX2Vpb2ludGNfd3JpdGUodmNwdSwgZWlvaW50YywgYWRkciwgdmFsdWUsIDB4RkYpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMyMS1cdFx0YnJlYWs7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMyMy1cdFx0dmFsdWUgPSAqKHVuc2lnbmVkIHNob3J0ICopdmFsO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjMyNDpcdFx0bG9vbmdhcmNoX2Vpb2ludGNfd3JpdGUodmNwdSwgZWlvaW50YywgYWRkciwgdmFsdWUsIFVTSFJUX01BWCk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzI1LVx0XHRicmVhaztcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzI3LVx0XHR2YWx1ZSA9ICoodW5zaWduZWQgaW50ICopdmFsO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjMyODpcdFx0bG9vbmdhcmNoX2Vpb2ludGNfd3JpdGUodmNwdSwgZWlvaW50YywgYWRkciwgdmFsdWUsIFVJTlRfTUFYKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zMjktXHRcdGJyZWFrO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zMzEtXHRcdHZhbHVlID0gKih1bnNpZ25lZCBsb25nICopdmFsO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjMzMjpcdFx0bG9vbmdhcmNoX2Vpb2ludGNfd3JpdGUodmNwdSwgZWlvaW50YywgYWRkciwgdmFsdWUsIFVMT05HX01BWCk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzMzLVx0XHRicmVhaztcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zMzQtXHR9XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzM1Olx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZlaW9pbnRjLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zMzYtXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMzOS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzozNDA6c3RhdGljIGNvbnN0IHN0cnVjdCBrdm1faW9fZGV2aWNlX29wcyBrdm1fZWlvaW50Y19vcHMgPSB7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzQxOlx0LnJlYWRcdD0ga3ZtX2Vpb2ludGNfcmVhZCxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzozNDI6XHQud3JpdGVcdD0ga3ZtX2Vpb2ludGNfd3JpdGUsXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzQzLX07XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzQ0LVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjM0NTpzdGF0aWMgaW50IGt2bV9laW9pbnRjX3ZpcnRfcmVhZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzQ2LVx0XHRcdFx0c3RydWN0IGt2bV9pb19kZXZpY2UgKmRldixcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzUwLVx0dTMyICpkYXRhID0gdmFsO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjM1MTpcdHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqZWlvaW50YyA9IHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2guZWlvaW50YztcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zNTItXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzUzOlx0aWYgKCFlaW9pbnRjKSB7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzU0Olx0XHRrdm1fZXJyKFwmIzM0OyVzOiBlaW9pbnRjIGlycWNoaXAgbm90IHZhbGlkIVxcblwmIzM0OywgX19mdW5jX18pO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM1NS1cdFx0cmV0dXJuIDA7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM1OC1cdGFkZHIgLT0gRUlPSU5UQ19WSVJUX0JBU0U7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzU5Olx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZWlvaW50Yy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzYwLVx0c3dpdGNoIChhZGRyKSB7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzYxLVx0Y2FzZSBFSU9JTlRDX1ZJUlRfRkVBVFVSRVM6XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzYyOlx0XHQqZGF0YSA9IGVpb2ludGMtXHUwMDNlZmVhdHVyZXM7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzYzLVx0XHRicmVhaztcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zNjQtXHRjYXNlIEVJT0lOVENfVklSVF9DT05GSUc6XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzY1Olx0XHQqZGF0YSA9IGVpb2ludGMtXHUwMDNlc3RhdHVzO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM2Ni1cdFx0YnJlYWs7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM2OS1cdH1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzozNzA6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmVpb2ludGMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM3MS1cbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzc0LVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjM3NTpzdGF0aWMgaW50IGt2bV9laW9pbnRjX3ZpcnRfd3JpdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM3Ni1cdFx0XHRcdHN0cnVjdCBrdm1faW9fZGV2aWNlICpkZXYsXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM4MC1cdHUzMiB2YWx1ZSA9ICoodTMyICopdmFsO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjM4MTpcdHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqZWlvaW50YyA9IHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2guZWlvaW50YztcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zODItXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzgzOlx0aWYgKCFlaW9pbnRjKSB7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Mzg0Olx0XHRrdm1fZXJyKFwmIzM0OyVzOiBlaW9pbnRjIGlycWNoaXAgbm90IHZhbGlkIVxcblwmIzM0OywgX19mdW5jX18pO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM4NS1cdFx0cmV0dXJuIDA7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM4OC1cdGFkZHIgLT0gRUlPSU5UQ19WSVJUX0JBU0U7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Mzg5Olx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZWlvaW50Yy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzkwLVx0c3dpdGNoIChhZGRyKSB7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM5NC1cdFx0LypcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzozOTU6XHRcdCAqIGVpb2ludGMgZmVhdHVyZXMgY2FuIG9ubHkgYmUgc2V0IGF0IGRpc2FibGVkIHN0YXR1c1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM5Ni1cdFx0ICovXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Mzk3Olx0XHRpZiAoKGVpb2ludGMtXHUwMDNlc3RhdHVzIFx1MDAyNiBCSVQoRUlPSU5UQ19FTkFCTEUpKSBcdTAwMjZcdTAwMjYgdmFsdWUpIHtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zOTgtXHRcdFx0YnJlYWs7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzk5LVx0XHR9XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NDAwOlx0XHRlaW9pbnRjLVx1MDAzZXN0YXR1cyA9IHZhbHVlIFx1MDAyNiBlaW9pbnRjLVx1MDAzZWZlYXR1cmVzO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTQwMS1cdFx0YnJlYWs7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTQwNC1cdH1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo0MDU6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmVpb2ludGMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTQwNi1cbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNDA5LVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjQxMDpzdGF0aWMgY29uc3Qgc3RydWN0IGt2bV9pb19kZXZpY2Vfb3BzIGt2bV9laW9pbnRjX3ZpcnRfb3BzID0ge1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjQxMTpcdC5yZWFkXHQ9IGt2bV9laW9pbnRjX3ZpcnRfcmVhZCxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo0MTI6XHQud3JpdGVcdD0ga3ZtX2Vpb2ludGNfdmlydF93cml0ZSxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00MTMtfTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00MTQtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NDE1OnN0YXRpYyBpbnQga3ZtX2Vpb2ludGNfY3RybF9hY2Nlc3Moc3RydWN0IGt2bV9kZXZpY2UgKmRldixcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00MTYtXHRcdFx0XHRcdHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTQyMi1cdHZvaWQgX191c2VyICpkYXRhO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjQyMzpcdHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcyA9IGRldi1cdTAwM2Vrdm0tXHUwMDNlYXJjaC5laW9pbnRjO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTQyNC1cbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNDQ5LVx0Y2FzZSBLVk1fREVWX0xPT05HQVJDSF9FWFRJT0lfQ1RSTF9MT0FEX0ZJTklTSEVEOlxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjQ1MDpcdFx0ZWlvaW50Y19zZXRfc3dfY29yZWlzcihzKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00NTEtXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIChFSU9JTlRDX0lSUVMgLyA4KTsgaSYjNDM7JiM0MzspIHtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00NTItXHRcdFx0c3RhcnRfaXJxID0gaSAqIDg7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NDUzOlx0XHRcdGVpb2ludGNfdXBkYXRlX3N3X2NvcmVtYXAocywgc3RhcnRfaXJxLFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTQ1NC1cdFx0XHRcdFx0cy1cdTAwM2Vjb3JlbWFwW2ldLCBzaXplb2YodTY0KSwgZmFsc2UpO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00NjQtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NDY1OnN0YXRpYyBpbnQga3ZtX2Vpb2ludGNfcmVnc19hY2Nlc3Moc3RydWN0IGt2bV9kZXZpY2UgKmRldixcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00NjYtXHRcdFx0XHRcdHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIsXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTQ3MS1cdHZvaWQgKnAgPSBOVUxMO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjQ3MjpcdHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcztcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00NzMtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NDc0Olx0cyA9IGRldi1cdTAwM2Vrdm0tXHUwMDNlYXJjaC5laW9pbnRjO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTQ3NS1cdGFkZHIgPSBhdHRyLVx1MDAzZWF0dHI7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTUxMC1cdGRlZmF1bHQ6XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NTExOlx0XHRrdm1fZXJyKFwmIzM0OyVzOiB1bmtub3duIGVpb2ludGMgcmVnaXN0ZXIsIGFkZHIgPSAlZFxcblwmIzM0OywgX19mdW5jX18sIGFkZHIpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTUxMi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTUyNC1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo1MjU6c3RhdGljIGludCBrdm1fZWlvaW50Y19zd19zdGF0dXNfYWNjZXNzKHN0cnVjdCBrdm1fZGV2aWNlICpkZXYsXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNTI2LVx0XHRcdFx0XHRzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyLFxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy01MzEtXHR2b2lkICpwID0gTlVMTDtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo1MzI6XHRzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnM7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNTMzLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjUzNDpcdHMgPSBkZXYtXHUwMDNla3ZtLVx1MDAzZWFyY2guZWlvaW50YztcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy01MzUtXHRhZGRyID0gYXR0ci1cdTAwM2VhdHRyO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy01NTQtXHRkZWZhdWx0OlxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjU1NTpcdFx0a3ZtX2VycihcJiMzNDslczogdW5rbm93biBlaW9pbnRjIHJlZ2lzdGVyLCBhZGRyID0gJWRcXG5cJiMzNDssIF9fZnVuY19fLCBhZGRyKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy01NTYtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy01NjctXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NTY4OnN0YXRpYyBpbnQga3ZtX2Vpb2ludGNfZ2V0X2F0dHIoc3RydWN0IGt2bV9kZXZpY2UgKmRldixcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy01NjktXHRcdFx0XHRzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy01NzQtXHRjYXNlIEtWTV9ERVZfTE9PTkdBUkNIX0VYVElPSV9HUlBfUkVHUzpcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo1NzU6XHRcdHJldCA9IGt2bV9laW9pbnRjX3JlZ3NfYWNjZXNzKGRldiwgYXR0ciwgZmFsc2UsIFx1MDAyNmRhdGEpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTU3Ni1cdFx0aWYgKHJldClcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNTgzLVx0Y2FzZSBLVk1fREVWX0xPT05HQVJDSF9FWFRJT0lfR1JQX1NXX1NUQVRVUzpcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo1ODQ6XHRcdHJldCA9IGt2bV9laW9pbnRjX3N3X3N0YXR1c19hY2Nlc3MoZGV2LCBhdHRyLCBmYWxzZSwgXHUwMDI2ZGF0YSk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNTg1LVx0XHRpZiAocmV0KVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy01OTYtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NTk3OnN0YXRpYyBpbnQga3ZtX2Vpb2ludGNfc2V0X2F0dHIoc3RydWN0IGt2bV9kZXZpY2UgKmRldixcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy01OTgtXHRcdFx0XHRzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MDMtXHRjYXNlIEtWTV9ERVZfTE9PTkdBUkNIX0VYVElPSV9HUlBfQ1RSTDpcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2MDQ6XHRcdHJldHVybiBrdm1fZWlvaW50Y19jdHJsX2FjY2VzcyhkZXYsIGF0dHIpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTYwNS1cdGNhc2UgS1ZNX0RFVl9MT09OR0FSQ0hfRVhUSU9JX0dSUF9SRUdTOlxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MDgtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjA5Olx0XHRyZXR1cm4ga3ZtX2Vpb2ludGNfcmVnc19hY2Nlc3MoZGV2LCBhdHRyLCB0cnVlLCBcdTAwMjZkYXRhKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MTAtXHRjYXNlIEtWTV9ERVZfTE9PTkdBUkNIX0VYVElPSV9HUlBfU1dfU1RBVFVTOlxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MTMtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjE0Olx0XHRyZXR1cm4ga3ZtX2Vpb2ludGNfc3dfc3RhdHVzX2FjY2VzcyhkZXYsIGF0dHIsIHRydWUsIFx1MDAyNmRhdGEpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTYxNS1cdGRlZmF1bHQ6XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTYxOS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2MjA6c3RhdGljIGludCBrdm1fZWlvaW50Y19jcmVhdGUoc3RydWN0IGt2bV9kZXZpY2UgKmRldiwgdTMyIHR5cGUpXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjIxLXtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MjItXHRpbnQgcmV0O1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjYyMzpcdHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcztcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MjQtXHRzdHJ1Y3Qga3ZtX2lvX2RldmljZSAqZGV2aWNlO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MjYtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjI3Olx0LyogZWlvaW50YyBoYXMgYmVlbiBjcmVhdGVkICovXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjI4Olx0aWYgKGt2bS1cdTAwM2VhcmNoLmVpb2ludGMpXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjI5LVx0XHRyZXR1cm4gLUVJTlZBTDtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MzAtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjMxOlx0cyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50Yyk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjMyLVx0aWYgKCFzKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02NDEtXHRkZXZpY2UgPSBcdTAwMjZzLVx1MDAzZWRldmljZTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2NDI6XHRrdm1faW9kZXZpY2VfaW5pdChkZXZpY2UsIFx1MDAyNmt2bV9laW9pbnRjX29wcyk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjQzLVx0bXV0ZXhfbG9jayhcdTAwMjZrdm0tXHUwMDNlc2xvdHNfbG9jayk7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY1Mi1cdGRldmljZSA9IFx1MDAyNnMtXHUwMDNlZGV2aWNlX3ZleHQ7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjUzOlx0a3ZtX2lvZGV2aWNlX2luaXQoZGV2aWNlLCBcdTAwMjZrdm1fZWlvaW50Y192aXJ0X29wcyk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjU0LVx0bXV0ZXhfbG9jayhcdTAwMjZrdm0tXHUwMDNlc2xvdHNfbG9jayk7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY2NC1cdH1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2NjU6XHRrdm0tXHUwMDNlYXJjaC5laW9pbnRjID0gcztcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02NjYtXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY2OS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2NzA6c3RhdGljIHZvaWQga3ZtX2Vpb2ludGNfZGVzdHJveShzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2KVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY3MS17XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjcyLVx0c3RydWN0IGt2bSAqa3ZtO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjY3MzpcdHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqZWlvaW50YztcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02NzQtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Njc1Olx0aWYgKCFkZXYgfHwgIWRldi1cdTAwM2Vrdm0gfHwgIWRldi1cdTAwM2Vrdm0tXHUwMDNlYXJjaC5laW9pbnRjKVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY3Ni1cdFx0cmV0dXJuO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02NzgtXHRrdm0gPSBkZXYtXHUwMDNla3ZtO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjY3OTpcdGVpb2ludGMgPSBrdm0tXHUwMDNlYXJjaC5laW9pbnRjO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY4MC1cdG11dGV4X2xvY2soXHUwMDI2a3ZtLVx1MDAzZXNsb3RzX2xvY2spO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjY4MTpcdGt2bV9pb19idXNfdW5yZWdpc3Rlcl9kZXYoa3ZtLCBLVk1fSU9DU1JfQlVTLCBcdTAwMjZlaW9pbnRjLVx1MDAzZWRldmljZSk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjgyOlx0a3ZtX2lvX2J1c191bnJlZ2lzdGVyX2Rldihrdm0sIEtWTV9JT0NTUl9CVVMsIFx1MDAyNmVpb2ludGMtXHUwMDNlZGV2aWNlX3ZleHQpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY4My1cdG11dGV4X3VubG9jayhcdTAwMjZrdm0tXHUwMDNlc2xvdHNfbG9jayk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Njg0Olx0a2ZyZWUoZWlvaW50Yyk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjg1LVx0a2ZyZWUoZGV2KTtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjg3LVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjY4ODpzdGF0aWMgc3RydWN0IGt2bV9kZXZpY2Vfb3BzIGt2bV9laW9pbnRjX2Rldl9vcHMgPSB7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Njg5Olx0Lm5hbWUgPSBcJiMzNDtrdm0tbG9vbmdhcmNoLWVpb2ludGNcJiMzNDssXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjkwOlx0LmNyZWF0ZSA9IGt2bV9laW9pbnRjX2NyZWF0ZSxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2OTE6XHQuZGVzdHJveSA9IGt2bV9laW9pbnRjX2Rlc3Ryb3ksXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjkyOlx0LnNldF9hdHRyID0ga3ZtX2Vpb2ludGNfc2V0X2F0dHIsXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjkzOlx0LmdldF9hdHRyID0ga3ZtX2Vpb2ludGNfZ2V0X2F0dHIsXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjk0LX07XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjk1LVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjY5NjppbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9laW9pbnRjX2RldmljZSh2b2lkKVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY5Ny17XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Njk4Olx0cmV0dXJuIGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzKFx1MDAyNmt2bV9laW9pbnRjX2Rldl9vcHMsIEtWTV9ERVZfVFlQRV9MT09OR0FSQ0hfRUlPSU5UQyk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjk5LX1cbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmMtNi0jaW5jbHVkZSBcdTAwM2Nhc20va3ZtX2Rtc2ludGMuaFx1MDAzZVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jOjc6I2luY2x1ZGUgXHUwMDNjYXNtL2t2bV9laW9pbnRjLmhcdTAwM2VcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy04LSNpbmNsdWRlIFx1MDAzY2FzbS9rdm1fcGNoX3BpYy5oXHUwMDNlXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jLTExLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jOjEyOi8qIHVwZGF0ZSB0aGUgaXNyIGFjY29yZGluZyB0byBpcnEgbGV2ZWwgYW5kIHJvdXRlIGlycSB0byBlaW9pbnRjICovXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmMtMTMtc3RhdGljIHZvaWQgcGNoX3BpY191cGRhdGVfaXJxKHN0cnVjdCBsb29uZ2FyY2hfcGNoX3BpYyAqcywgaW50IGlycSwgaW50IGxldmVsKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy0xNy1cdC8qXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmM6MTg6XHQgKiBzZXQgaXNyIGFuZCByb3V0ZSBpcnEgdG8gZWlvaW50YyBhbmRcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy0xOS1cdCAqIHRoZSByb3V0ZSB0YWJsZSBpcyBpbiBodG1zaV92ZWN0b3JbXVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy0yNC1cdFx0XHRpcnEgPSBzLVx1MDAzZWh0bXNpX3ZlY3RvcltpcnFdO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jOjI1Olx0XHRcdGVpb2ludGNfc2V0X2lycShzLVx1MDAzZWt2bS1cdTAwM2VhcmNoLmVpb2ludGMsIGlycSwgbGV2ZWwpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jLTI2LVx0XHR9XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jLTMwLVx0XHRcdGlycSA9IHMtXHUwMDNlaHRtc2lfdmVjdG9yW2lycV07XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmM6MzE6XHRcdFx0ZWlvaW50Y19zZXRfaXJxKHMtXHUwMDNla3ZtLVx1MDAzZWFyY2guZWlvaW50YywgaXJxLCBsZXZlbCk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmMtMzItXHRcdH1cbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmM9NzE9aW50IHBjaF9tc2lfc2V0X2lycShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplLCBpbnQgbGV2ZWwpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jLTgwLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jOjgxOlx0ZWlvaW50Y19zZXRfaXJxKGt2bS1cdTAwM2VhcmNoLmVpb2ludGMsIGUtXHUwMDNlbXNpLmRhdGEsIGxldmVsKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy04Mi1cbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmM9ODY9c3RhdGljIGludCBsb29uZ2FyY2hfcGNoX3BpY19yZWFkKHN0cnVjdCBsb29uZ2FyY2hfcGNoX3BpYyAqcywgZ3BhX3QgYWRkciwgaW50IGxlbiwgdm9pZCAqdmFsKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy0xMTUtXHRjYXNlIFBDSF9QSUNfUk9VVEVfRU5UUllfU1RBUlQgLi4uIFBDSF9QSUNfUk9VVEVfRU5UUllfRU5EOlxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jOjExNjpcdFx0Lyogb25seSByb3V0ZSB0byBpbnQwOiBlaW9pbnRjICovXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmMtMTE3LVx0XHRwdGVtcCA9IHMtXHUwMDNlcm91dGVfZW50cnkgJiM0MzsgKG9mZnNldCAtIFBDSF9QSUNfUk9VVEVfRU5UUllfU1RBUlQpO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMtMTItI2luY2x1ZGUgXHUwMDNjYXNtL2t2bV9jc3IuaFx1MDAzZVxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYzoxMzojaW5jbHVkZSBcdTAwM2Nhc20va3ZtX2Vpb2ludGMuaFx1MDAzZVxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYy0xNC0jaW5jbHVkZSBcdTAwM2Nhc20va3ZtX3BjaF9waWMuaFx1MDAzZVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmM9MzUwPXN0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9lbnZfaW5pdCh2b2lkKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMtMzkwLVx0LyogUmVnaXN0ZXIgTG9vbmdBcmNoIEVJT0lOVEMgaW50ZXJydXB0IGNvbnRyb2xsZXIgaW50ZXJmYWNlLiAqL1xuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYzozOTE6XHRyZXQgPSBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKCk7XG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jLTM5Mi1cdGlmIChyZXQpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz0xNz1jb25zdCBzdHJ1Y3Qga3ZtX3N0YXRzX2Rlc2Mga3ZtX3ZjcHVfc3RhdHNfZGVzY1tdID0ge1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMjUtXHRTVEFUU19ERVNDX0NPVU5URVIoVkNQVSwgaXBpX3dyaXRlX2V4aXRzKSxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MjY6XHRTVEFUU19ERVNDX0NPVU5URVIoVkNQVSwgZWlvaW50Y19yZWFkX2V4aXRzKSxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6Mjc6XHRTVEFUU19ERVNDX0NPVU5URVIoVkNQVSwgZWlvaW50Y193cml0ZV9leGl0cyksXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTI4LVx0U1RBVFNfREVTQ19DT1VOVEVSKFZDUFUsIHBjaF9waWNfcmVhZF9leGl0cyksXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmMtOS0jaW5jbHVkZSBcdTAwM2Nhc20va3ZtX2Nzci5oXHUwMDNlXG5hcmNoL2xvb25nYXJjaC9rdm0vdm0uYzoxMDojaW5jbHVkZSBcdTAwM2Nhc20va3ZtX2Vpb2ludGMuaFx1MDAzZVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmMtMTEtI2luY2x1ZGUgXHUwMDNjYXNtL2t2bV9wY2hfcGljLmhcdTAwM2Vcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdm0uYz0yMDk9Ym9vbCBrdm1fYXJjaF9pcnFjaGlwX2luX2tlcm5lbChzdHJ1Y3Qga3ZtICprdm0pXG5hcmNoL2xvb25nYXJjaC9rdm0vdm0uYy0yMTAte1xuYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmM6MjExOlx0cmV0dXJuIChrdm0tXHUwMDNlYXJjaC5pcGkgXHUwMDI2XHUwMDI2IGt2bS1cdTAwM2VhcmNoLmVpb2ludGMgXHUwMDI2XHUwMDI2IGt2bS1cdTAwM2VhcmNoLnBjaF9waWMpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmMtMjEyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDg1NAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNIENvbmZpZ3VyYXRpb24gYW5kIEFzc29jaWF0ZWQgRnVuY3Rpb25zKioKCk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gSSYjMzk7bSB3b3JraW5nIHdpdGggaXMgY2xlYXJseSBgS1ZNYC4gR290IGl0LiBOb3csIGl0IGxvb2tzIGxpa2UgSSYjMzk7dmUgYmVlbiBtb2RpZnlpbmcgc29tZSBmdW5jdGlvbnM6IHNwZWNpZmljYWxseSBgZWlvaW50Y19zZXRfc3dfY29yZWlzcmAgYW5kIGBlaW9pbnRjX3VwZGF0ZV9pcnFgLiBUaGVyZSYjMzk7cyBhbHNvIHRoaXMgbmV3IGZ1bmN0aW9uLCBgZWlvaW50Y19nZXRfaXBudW1gLCB3aGljaCBoYXMgYmVlbiBhZGRlZC4gTWFrZXMgc2Vuc2UuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBjaGFuZ2VzIGluIHJlbGF0aW9uIHRvIHRoZSBicm9hZGVyIGFyY2hpdGVjdHVyZS4KCkJlZm9yZSBJIGdvIGZ1cnRoZXIsIEkgc2hvdWxkIHZlcmlmeSB0aGF0IGBLVk1gIGlzIHRoZSBvbmx5IHJlbGV2YW50IGNvbmZpZyBoZXJlLiBKdXN0IHRvIGJlIHN1cmUsIGxldCYjMzk7cyB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGF0IGBhcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBzdXJlIEkmIzM5O3ZlIGFscmVhZHkgY2hlY2tlZCBpdCwgYnV0IGEgcXVpY2sgZG91YmxlLWNoZWNrIGNhbiYjMzk7dCBodXJ0IGFuZCBpdCYjMzk7bGwgaGVscCByZWluZm9yY2UgdGhlIGNvbnRleHQuIE5vIHBvaW50IGluIG1ha2luZyBhc3N1bXB0aW9ucyB3aGVuIGEgcXVpY2sgdmVyaWZpY2F0aW9uIGlzIHBvc3NpYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA1OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIEtWTSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdHNvdXJjZSBcJiMzNDt2aXJ0L2t2bS9LY29uZmlnXCYjMzQ7XG4gICA3Olx0XG4gICA4Olx0bWVudWNvbmZpZyBWSVJUVUFMSVpBVElPTlxuICAgOTpcdFx0Ym9vbCBcJiMzNDtWaXJ0dWFsaXphdGlvblwmIzM0O1xuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBTYXkgWSBoZXJlIHRvIGdldCB0byBzZWUgb3B0aW9ucyBmb3IgdXNpbmcgeW91ciBMaW51eCBob3N0IHRvIHJ1blxuICAxMjpcdFx0ICBvdGhlciBvcGVyYXRpbmcgc3lzdGVtcyBpbnNpZGUgdmlydHVhbCBtYWNoaW5lcyAoZ3Vlc3RzKS5cbiAgMTM6XHRcdCAgVGhpcyBvcHRpb24gYWxvbmUgZG9lcyBub3QgYWRkIGFueSBrZXJuZWwgY29kZS5cbiAgMTQ6XHRcbiAgMTU6XHRcdCAgSWYgeW91IHNheSBOLCBhbGwgb3B0aW9ucyBpbiB0aGlzIHN1Ym1lbnUgd2lsbCBiZSBza2lwcGVkIGFuZFxuICAxNjpcdFx0ICBkaXNhYmxlZC5cbiAgMTc6XHRcbiAgMTg6XHRpZiBWSVJUVUFMSVpBVElPTlxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBLVk1cbiAgMjE6XHRcdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuICAyMjpcdFx0ZGVwZW5kcyBvbiBBU19IQVNfTFZaX0VYVEVOU0lPTiBcdTAwMjZcdTAwMjYgNjRCSVRcbiAgMjM6XHRcdHNlbGVjdCBIQVZFX0tWTV9ESVJUWV9SSU5HX0FDUV9SRUxcbiAgMjQ6XHRcdHNlbGVjdCBIQVZFX0tWTV9JUlFfUk9VVElOR1xuICAyNTpcdFx0c2VsZWN0IEhBVkVfS1ZNX0lSUUNISVBcbiAgMjY6XHRcdHNlbGVjdCBIQVZFX0tWTV9NU0lcbiAgMjc6XHRcdHNlbGVjdCBIQVZFX0tWTV9SRUFET05MWV9NRU1cbiAgMjg6XHRcdHNlbGVjdCBLVk1fQ09NTU9OXG4gIDI5Olx0XHRzZWxlY3QgS1ZNX0dFTkVSSUNfRElSVFlMT0dfUkVBRF9QUk9URUNUXG4gIDMwOlx0XHRzZWxlY3QgS1ZNX0dFTkVSSUNfSEFSRFdBUkVfRU5BQkxJTkdcbiAgMzE6XHRcdHNlbGVjdCBLVk1fTU1JT1xuICAzMjpcdFx0c2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLXG4gIDMzOlx0XHRzZWxlY3QgU0NIRURfSU5GT1xuICAzNDpcdFx0c2VsZWN0IEdVRVNUX1BFUkZfRVZFTlRTIGlmIFBFUkZfRVZFTlRTXG4gIDM1Olx0XHRoZWxwXG4gIDM2Olx0XHQgIFN1cHBvcnQgaG9zdGluZyB2aXJ0dWFsaXplZCBndWVzdCBtYWNoaW5lcyB1c2luZ1xuICAzNzpcdFx0ICBoYXJkd2FyZSB2aXJ0dWFsaXphdGlvbiBleHRlbnNpb25zLiBZb3Ugd2lsbCBuZWVkXG4gIDM4Olx0XHQgIGEgcHJvY2Vzc29yIGVxdWlwcGVkIHdpdGggdmlydHVhbGl6YXRpb24gZXh0ZW5zaW9ucy5cbiAgMzk6XHRcbiAgNDA6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNDE6XHRcbiAgNDI6XHRlbmRpZiAjIFZJUlRVQUxJWkFUSU9OXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDU6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU3MjkKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gTG9vbmdBcmNoIEtWTSBJbnRlcnJ1cHQgQ29udHJvbGxlciBGdW5jdGlvbnMqKgoKT2theSwgc28gaXQgbG9va3MgbGlrZSBgS1ZNYCBpcyB0aGUgb25seSBjb25maWd1cmF0aW9uIG9wdGlvbiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhlcmUsIHdoaWNoIHNpbXBsaWZpZXMgdGhpbmdzLiBUaGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhpcyBhcmNoaXRlY3R1cmUgaXMgdGhyb3VnaCB0aGUgS1ZNIGlvY3RscyBmb3IgTG9vbmdBcmNoLCByaWdodD8gTXkgaW5pdGlhbCBndXQgZmVlbGluZyBpcyB0aGF0IGBlaW9pbnRjX3NldF9zd19jb3JlaXNyYCBhbmQgYGVpb2ludGNfdXBkYXRlX2lycWAgYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCBkZW1hbmQgdGhlIG1vc3QgYXR0ZW50aW9uLiBXYWl0IGEgc2Vjb25kLi4uIGlzbiYjMzk7dCBgZWlvaW50Y19nZXRfaXBudW1gIGEgc3RhdGljIGZ1bmN0aW9uPyBUaGF0IGNvdWxkIGJlIGltcG9ydGFudCB0b28uIFllcCwgSSB0aGluayB0aGF0JiMzOTtzIHRoZSByZWFsIG5ldyBmdW5jdGlvbi4KCkFscmlnaHQsIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIGBhcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmNgIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGVpb2ludGNfc2V0X3N3X2NvcmVpc3JgIGFuZCBgZWlvaW50Y191cGRhdGVfaXJxYCwgYnV0IGVzcGVjaWFsbHkgYGVpb2ludGNfZ2V0X2lwbnVtYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdCBhbmQgaG93IHRoZXkgYXJlIGxldmVyYWdlZCBieSBLVk0gdG8gbWFuYWdlIGludGVycnVwdHMgb24gdGhpcyBwbGF0Zm9ybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDU6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQvKlxuICAgMzpcdCAqIENvcHlyaWdodCAoQykgMjAyNCBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uIExpbWl0ZWRcbiAgIDQ6XHQgKi9cbiAgIDU6XHRcbiAgIDY6XHQjaW5jbHVkZSBcdTAwM2Nhc20va3ZtX2Vpb2ludGMuaFx1MDAzZVxuICAgNzpcdCNpbmNsdWRlIFx1MDAzY2FzbS9rdm1fdmNwdS5oXHUwMDNlXG4gICA4Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvY291bnRfemVyb3MuaFx1MDAzZVxuICAgOTpcdFxuICAxMDpcdHN0YXRpYyBpbnQgZWlvaW50Y19nZXRfaXBudW0oc3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzLCBpbnQgaXJxKVxuICAxMTpcdHtcbiAgMTI6XHRcdGludCBpcG51bSA9IChzLVx1MDAzZWlwbWFwIFx1MDAzZVx1MDAzZSAoaXJxIC8gMzIgKiA4KSkgXHUwMDI2IDB4ZmY7XG4gIDEzOlx0XG4gIDE0Olx0XHRpZiAoIShzLVx1MDAzZXN0YXR1cyBcdTAwMjYgQklUKEVJT0lOVENfRU5BQkxFX0lOVF9FTkNPREUpKSkge1xuICAxNTpcdFx0XHRpcG51bSA9IGNvdW50X3RyYWlsaW5nX3plcm9zKGlwbnVtKTtcbiAgMTY6XHRcdFx0aXBudW0gPSBpcG51bSBcdTAwM2MgNCA/IGlwbnVtIDogMDtcbiAgMTc6XHRcdH0gZWxzZSB7XG4gIDE4Olx0XHRcdGlwbnVtID0gKGlwbnVtIFx1MDAzYyBMT09OR1NPTl9JUF9OVU0pID8gaXBudW0gOiAwO1xuICAxOTpcdFx0fVxuICAyMDpcdFxuICAyMTpcdFx0cmV0dXJuIGlwbnVtO1xuICAyMjpcdH1cbiAgMjM6XHRcbiAgMjQ6XHRzdGF0aWMgdm9pZCBlaW9pbnRjX3NldF9zd19jb3JlaXNyKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcylcbiAgMjU6XHR7XG4gIDI2Olx0XHRpbnQgaXBudW0sIGNwdSwgY3B1aWQsIGlycTtcbiAgMjc6XHRcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbiAgMjg6XHRcbiAgMjk6XHRcdGZvciAoaXJxID0gMDsgaXJxIFx1MDAzYyBFSU9JTlRDX0lSUVM7IGlycSYjNDM7JiM0MzspIHtcbiAgMzA6XHRcdFx0aXBudW0gPSBlaW9pbnRjX2dldF9pcG51bShzLCBpcnEpO1xuICAzMTpcdFxuICAzMjpcdFx0XHRjcHVpZCA9ICgodTggKilzLVx1MDAzZWNvcmVtYXApW2lycV07XG4gIDMzOlx0XHRcdHZjcHUgPSBrdm1fZ2V0X3ZjcHVfYnlfY3B1aWQocy1cdTAwM2Vrdm0sIGNwdWlkKTtcbiAgMzQ6XHRcdFx0aWYgKCF2Y3B1KVxuICAzNTpcdFx0XHRcdGNvbnRpbnVlO1xuICAzNjpcdFxuICAzNzpcdFx0XHRjcHUgPSB2Y3B1LVx1MDAzZXZjcHVfaWQ7XG4gIDM4Olx0XHRcdGlmICh0ZXN0X2JpdChpcnEsICh1bnNpZ25lZCBsb25nICopcy1cdTAwM2Vjb3JlaXNyW2NwdV0pKVxuICAzOTpcdFx0XHRcdF9fc2V0X2JpdChpcnEsIHMtXHUwMDNlc3dfY29yZWlzcltjcHVdW2lwbnVtXSk7XG4gIDQwOlx0XHRcdGVsc2VcbiAgNDE6XHRcdFx0XHRfX2NsZWFyX2JpdChpcnEsIHMtXHUwMDNlc3dfY29yZWlzcltjcHVdW2lwbnVtXSk7XG4gIDQyOlx0XHR9XG4gIDQzOlx0fVxuICA0NDpcdFxuICA0NTpcdHN0YXRpYyB2b2lkIGVpb2ludGNfdXBkYXRlX2lycShzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMsIGludCBpcnEsIGludCBsZXZlbClcbiAgNDY6XHR7XG4gIDQ3Olx0XHRpbnQgaXBudW0sIGNwdSwgZm91bmQ7XG4gIDQ4Olx0XHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7XG4gIDQ5Olx0XHRzdHJ1Y3Qga3ZtX2ludGVycnVwdCB2Y3B1X2lycTtcbiAgNTA6XHRcbiAgNTE6XHRcdGlwbnVtID0gZWlvaW50Y19nZXRfaXBudW0ocywgaXJxKTtcbiAgNTI6XHRcbiAgNTM6XHRcdGNwdSA9IHMtXHUwMDNlc3dfY29yZW1hcFtpcnFdO1xuICA1NDpcdFx0dmNwdSA9IGt2bV9nZXRfdmNwdV9ieV9pZChzLVx1MDAzZWt2bSwgY3B1KTtcbiAgNTU6XHRcdGlmICh1bmxpa2VseSh2Y3B1ID09IE5VTEwpKSB7XG4gIDU2Olx0XHRcdGt2bV9lcnIoXCYjMzQ7JXM6IGludmFsaWQgdGFyZ2V0IGNwdTogJWRcXG5cJiMzNDssIF9fZnVuY19fLCBjcHUpO1xuICA1NzpcdFx0XHRyZXR1cm47XG4gIDU4Olx0XHR9XG4gIDU5Olx0XG4gIDYwOlx0XHRpZiAobGV2ZWwpIHtcbiAgNjE6XHRcdFx0LyogaWYgbm90IGVuYWJsZSByZXR1cm4gZmFsc2UgKi9cbiAgNjI6XHRcdFx0aWYgKCF0ZXN0X2JpdChpcnEsICh1bnNpZ25lZCBsb25nICopcy1cdTAwM2VlbmFibGUpKVxuICA2MzpcdFx0XHRcdHJldHVybjtcbiAgNjQ6XHRcdFx0X19zZXRfYml0KGlycSwgKHVuc2lnbmVkIGxvbmcgKilzLVx1MDAzZWNvcmVpc3JbY3B1XSk7XG4gIDY1Olx0XHRcdGZvdW5kID0gZmluZF9maXJzdF9iaXQocy1cdTAwM2Vzd19jb3JlaXNyW2NwdV1baXBudW1dLCBFSU9JTlRDX0lSUVMpO1xuICA2NjpcdFx0XHRfX3NldF9iaXQoaXJxLCBzLVx1MDAzZXN3X2NvcmVpc3JbY3B1XVtpcG51bV0pO1xuICA2NzpcdFx0fSBlbHNlIHtcbiAgNjg6XHRcdFx0X19jbGVhcl9iaXQoaXJxLCAodW5zaWduZWQgbG9uZyAqKXMtXHUwMDNlY29yZWlzcltjcHVdKTtcbiAgNjk6XHRcdFx0X19jbGVhcl9iaXQoaXJxLCBzLVx1MDAzZXN3X2NvcmVpc3JbY3B1XVtpcG51bV0pO1xuICA3MDpcdFx0XHRmb3VuZCA9IGZpbmRfZmlyc3RfYml0KHMtXHUwMDNlc3dfY29yZWlzcltjcHVdW2lwbnVtXSwgRUlPSU5UQ19JUlFTKTtcbiAgNzE6XHRcdH1cbiAgNzI6XHRcbiAgNzM6XHRcdGlmIChmb3VuZCBcdTAwM2MgRUlPSU5UQ19JUlFTKVxuICA3NDpcdFx0XHRyZXR1cm47IC8qIG90aGVyIGlycSBpcyBoYW5kbGluZywgbmVlZG4mIzM5O3QgdXBkYXRlIHBhcmVudCBpcnEgKi9cbiAgNzU6XHRcbiAgNzY6XHRcdHZjcHVfaXJxLmlycSA9IGxldmVsID8gKElOVF9IV0kwICYjNDM7IGlwbnVtKSA6IC0oSU5UX0hXSTAgJiM0MzsgaXBudW0pO1xuICA3NzpcdFx0a3ZtX3ZjcHVfaW9jdGxfaW50ZXJydXB0KHZjcHUsIFx1MDAyNnZjcHVfaXJxKTtcbiAgNzg6XHR9XG4gIDc5Olx0XG4gIDgwOlx0c3RhdGljIGlubGluZSB2b2lkIGVpb2ludGNfdXBkYXRlX3N3X2NvcmVtYXAoc3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzLFxuICA4MTpcdFx0XHRcdFx0XHRpbnQgaXJxLCB1NjQgdmFsLCB1MzIgbGVuLCBib29sIG5vdGlmeSlcbiAgODI6XHR7XG4gIDgzOlx0XHRpbnQgaSwgY3B1LCBjcHVpZDtcbiAgODQ6XHRcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbiAgODU6XHRcbiAgODY6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxlbjsgaSYjNDM7JiM0MzspIHtcbiAgODc6XHRcdFx0Y3B1aWQgPSB2YWwgXHUwMDI2IDB4ZmY7XG4gIDg4Olx0XHRcdHZhbCA9IHZhbCBcdTAwM2VcdTAwM2UgODtcbiAgODk6XHRcbiAgOTA6XHRcdFx0aWYgKCEocy1cdTAwM2VzdGF0dXMgXHUwMDI2IEJJVChFSU9JTlRDX0VOQUJMRV9DUFVfRU5DT0RFKSkpIHtcbiAgOTE6XHRcdFx0XHRjcHVpZCA9IGZmcyhjcHVpZCkgLSAxO1xuICA5MjpcdFx0XHRcdGNwdWlkID0gKChjcHVpZCBcdTAwM2MgMCkgfHwgKGNwdWlkIFx1MDAzZT0gNCkpID8gMCA6IGNwdWlkO1xuICA5MzpcdFx0XHR9XG4gIDk0Olx0XG4gIDk1Olx0XHRcdHZjcHUgPSBrdm1fZ2V0X3ZjcHVfYnlfY3B1aWQocy1cdTAwM2Vrdm0sIGNwdWlkKTtcbiAgOTY6XHRcdFx0aWYgKCF2Y3B1KVxuICA5NzpcdFx0XHRcdGNvbnRpbnVlO1xuICA5ODpcdFxuICA5OTpcdFx0XHRjcHUgPSB2Y3B1LVx1MDAzZXZjcHVfaWQ7XG4gMTAwOlx0XHRcdGlmIChzLVx1MDAzZXN3X2NvcmVtYXBbaXJxICYjNDM7IGldID09IGNwdSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDU6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc3OTYKCQkJCQkJCW91dHB1dDogMTM3CgkJCQkJCQl0aG91Z2h0czogMjAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTG9vbmdBcmNoIEtWTSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSBLVk0gbG9naWMgZm9yIExvb25nQXJjaCDigJMgdGhhdCBtdWNoIGlzIGNsZWFyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGlkZW50aWZ5IHRoZSBlbmFibGluZyBjb25maWd1cmF0aW9ucywgYW5kIGl0IGxvb2tzIGxpa2UgYEtWTWAgaXMgdGhlIGtleS4gTm93LCBJIHNob3VsZCBtYWtlIGEgbm90ZSBvZiB0aGUgc3ltYm9scyBhZmZlY3RlZCB0byBoZWxwIHdpdGggYW55IHBvdGVudGlhbCBkZWJ1Z2dpbmcgZG93biB0aGUgbGluZSwgc28gdGhlIG1haW4gZm9jdXMgcG9pbnRzIGhlcmUgYXJlIGBlaW9pbnRjX2dldF9pcG51bWAsIGBlaW9pbnRjX3NldF9zd19jb3JlaXNyYCwgYW5kIGBlaW9pbnRjX3VwZGF0ZV9pcnFgLiBIbW0sIGBlaW9pbnRjX2dldF9pcG51bWAgaXMgc3RhdGljOyBpdCYjMzk7cyBwcm9iYWJseSBpbmxpbmVkIGJ1dCBzdGlsbCB3b3J0aCBsaXN0aW5nIGl0IGZvciBjb21wbGV0ZW5lc3MuCgpMZXQmIzM5O3MgcXVpY2tseSBjb25maXJtIHRoYXQgYEtWTWAgYWxvbmUgaXMgc3VmZmljaWVudCBmb3IgZW5hYmxpbmcgdGhlIGZlYXR1cmVzLiBZZXAsIGBLVk1gIGlzIGluZGVlZCB0aGUgcHJpbWFyeSBLVk0gY29uZmlnIGZvciBMb29uZ0FyY2guIElzIHRoZXJlIGFueXRoaW5nIGVsc2Ugd2UgbmVlZCB0byBjb25zaWRlcj8gSSYjMzk7bGwgZG91YmxlLWNoZWNrIHRoZSBLY29uZmlnIGZpbGUgd2l0aGluIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgS1ZNIGRpcmVjdG9yeSDigJMgYGFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnYC4gUmlnaHQsIEkgc2VlIGl0IG5vdzogYGNvbmZpZyBLVk1gIGFsc28gZGVwZW5kcyBvbiBgQVNfSEFTX0xWWl9FWFRFTlNJT04gJmFtcDsmYW1wOyA2NEJJVGAuIFNvLCB3aXRoIHRob3NlIHByZXJlcXVpc2l0ZXMgaGFuZGxlZCwgZW5hYmxpbmcgYEtWTWAgc2hvdWxkIGJlIHN1ZmZpY2llbnQuIE9rYXksIEkmIzM5O20gY29uZmlkZW50IGluIHRoYXQgYW5hbHlzaXMuIFRpbWUgdG8gc2V0LXJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA1OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlaW9pbnRjX2dldF9pcG51bSYjMzQ7LAogICAgJiMzNDtlaW9pbnRjX3NldF9zd19jb3JlaXNyJiMzNDssCiAgICAmIzM0O2Vpb2ludGNfdXBkYXRlX2lycSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTG9vbmdBcmNoIEtWTSBpbnRlcnJ1cHQgY29udHJvbGxlciAoZWlvaW50YykgbG9naWMgYnkgZXh0cmFjdGluZyBhbmQgdXBkYXRpbmcgdGhlIElQIG51bWJlciBjYWxjdWxhdGlvbiBpbnRvIGEgbmV3IGZ1bmN0aW9uIGBlaW9pbnRjX2dldF9pcG51bWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgS1ZNIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIEtWTSBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Vpb2ludGNfZ2V0X2lwbnVtJiMzNDssCiAgICAmIzM0O2Vpb2ludGNfc2V0X3N3X2NvcmVpc3ImIzM0OywKICAgICYjMzQ7ZWlvaW50Y191cGRhdGVfaXJxJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBMb29uZ0FyY2ggS1ZNIGludGVycnVwdCBjb250cm9sbGVyIChlaW9pbnRjKSBsb2dpYyBieSBleHRyYWN0aW5nIGFuZCB1cGRhdGluZyB0aGUgSVAgbnVtYmVyIGNhbGN1bGF0aW9uIGludG8gYSBuZXcgZnVuY3Rpb24gYGVpb2ludGNfZ2V0X2lwbnVtYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgS1ZNIGlvY3Rscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA1OjI5OjA5LjcyMzkyMjczOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MzI0MDY4MzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVpb2ludGNfZ2V0X2lwbnVtXCIsXG4gICAgXCJlaW9pbnRjX3NldF9zd19jb3JlaXNyXCIsXG4gICAgXCJlaW9pbnRjX3VwZGF0ZV9pcnFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTG9vbmdBcmNoIEtWTSBpbnRlcnJ1cHQgY29udHJvbGxlciAoZWlvaW50YykgbG9naWMgYnkgZXh0cmFjdGluZyBhbmQgdXBkYXRpbmcgdGhlIElQIG51bWJlciBjYWxjdWxhdGlvbiBpbnRvIGEgbmV3IGZ1bmN0aW9uIGBlaW9pbnRjX2dldF9pcG51bWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgS1ZNIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIEtWTSBpb2N0bHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA1OjI5OjA5LjcyMzkyODc3OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgyNDYxMjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODM2OTRhMGFmMDQwODA3ZGU1YmZjZDhlZWQzNTU3YWZhOGIxY2QwMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAxNCAwNToyOTowNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmNcXG5pbmRleCAyYjE0NDg1ZDE0YTcwOC4uYzFlMGNkOGRjYTE2Y2UgMTAwNjQ0XFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jXFxuKysrIGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jXFxuQEAgLTcsMTcgKzcsMjcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9rdm1fdmNwdS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvY291bnRfemVyb3MuaFxcdTAwM2VcXG4gXFxuK3N0YXRpYyBpbnQgZWlvaW50Y19nZXRfaXBudW0oc3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzLCBpbnQgaXJxKVxcbit7XFxuK1xcdGludCBpcG51bSA9IChzLVxcdTAwM2VpcG1hcCBcXHUwMDNlXFx1MDAzZSAoaXJxIC8gMzIgKiA4KSkgXFx1MDAyNiAweGZmO1xcbitcXG4rXFx0aWYgKCEocy1cXHUwMDNlc3RhdHVzIFxcdTAwMjYgQklUKEVJT0lOVENfRU5BQkxFX0lOVF9FTkNPREUpKSkge1xcbitcXHRcXHRpcG51bSA9IGNvdW50X3RyYWlsaW5nX3plcm9zKGlwbnVtKTtcXG4rXFx0XFx0aXBudW0gPSBpcG51bSBcXHUwMDNjIDQgPyBpcG51bSA6IDA7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGlwbnVtID0gKGlwbnVtIFxcdTAwM2MgTE9PTkdTT05fSVBfTlVNKSA/IGlwbnVtIDogMDtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIGlwbnVtO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBlaW9pbnRjX3NldF9zd19jb3JlaXNyKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcylcXG4ge1xcbiBcXHRpbnQgaXBudW0sIGNwdSwgY3B1aWQsIGlycTtcXG4gXFx0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xcbiBcXG4gXFx0Zm9yIChpcnEgPSAwOyBpcnEgXFx1MDAzYyBFSU9JTlRDX0lSUVM7IGlycSsrKSB7XFxuLVxcdFxcdGlwbnVtID0gKHMtXFx1MDAzZWlwbWFwIFxcdTAwM2VcXHUwMDNlIChpcnEgLyAzMiAqIDgpKSBcXHUwMDI2IDB4ZmY7XFxuLVxcdFxcdGlmICghKHMtXFx1MDAzZXN0YXR1cyBcXHUwMDI2IEJJVChFSU9JTlRDX0VOQUJMRV9JTlRfRU5DT0RFKSkpIHtcXG4tXFx0XFx0XFx0aXBudW0gPSBjb3VudF90cmFpbGluZ196ZXJvcyhpcG51bSk7XFxuLVxcdFxcdFxcdGlwbnVtID0gaXBudW0gXFx1MDAzYyA0ID8gaXBudW0gOiAwO1xcbi1cXHRcXHR9XFxuK1xcdFxcdGlwbnVtID0gZWlvaW50Y19nZXRfaXBudW0ocywgaXJxKTtcXG4gXFxuIFxcdFxcdGNwdWlkID0gKCh1OCAqKXMtXFx1MDAzZWNvcmVtYXApW2lycV07XFxuIFxcdFxcdHZjcHUgPSBrdm1fZ2V0X3ZjcHVfYnlfY3B1aWQocy1cXHUwMDNla3ZtLCBjcHVpZCk7XFxuQEAgLTM4LDExICs0OCw3IEBAIHN0YXRpYyB2b2lkIGVpb2ludGNfdXBkYXRlX2lycShzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMsIGludCBpcnEsIGludCBsZXZlbClcXG4gXFx0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xcbiBcXHRzdHJ1Y3Qga3ZtX2ludGVycnVwdCB2Y3B1X2lycTtcXG4gXFxuLVxcdGlwbnVtID0gKHMtXFx1MDAzZWlwbWFwIFxcdTAwM2VcXHUwMDNlIChpcnEgLyAzMiAqIDgpKSBcXHUwMDI2IDB4ZmY7XFxuLVxcdGlmICghKHMtXFx1MDAzZXN0YXR1cyBcXHUwMDI2IEJJVChFSU9JTlRDX0VOQUJMRV9JTlRfRU5DT0RFKSkpIHtcXG4tXFx0XFx0aXBudW0gPSBjb3VudF90cmFpbGluZ196ZXJvcyhpcG51bSk7XFxuLVxcdFxcdGlwbnVtID0gaXBudW0gXFx1MDAzYyA0ID8gaXBudW0gOiAwO1xcbi1cXHR9XFxuK1xcdGlwbnVtID0gZWlvaW50Y19nZXRfaXBudW0ocywgaXJxKTtcXG4gXFxuIFxcdGNwdSA9IHMtXFx1MDAzZXN3X2NvcmVtYXBbaXJxXTtcXG4gXFx0dmNwdSA9IGt2bV9nZXRfdmNwdV9ieV9pZChzLVxcdTAwM2Vrdm0sIGNwdSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA1OjI5OjEwLjQwNjk5ODU5OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjM2NDA5Nzg2MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZWlvaW50Y19nZXRfaXBudW1cIixcbiAgICBcImVpb2ludGNfc2V0X3N3X2NvcmVpc3JcIixcbiAgICBcImVpb2ludGNfdXBkYXRlX2lycVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBMb29uZ0FyY2ggS1ZNIGludGVycnVwdCBjb250cm9sbGVyIChlaW9pbnRjKSBsb2dpYyBieSBleHRyYWN0aW5nIGFuZCB1cGRhdGluZyB0aGUgSVAgbnVtYmVyIGNhbGN1bGF0aW9uIGludG8gYSBuZXcgZnVuY3Rpb24gYGVpb2ludGNfZ2V0X2lwbnVtYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgS1ZNIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4MzY5NGEwYWYwNDA4MDdkZTViZmNkOGVlZDM1NTdhZmE4YjFjZDAxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMDU6Mjk6MDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmNcbmluZGV4IDJiMTQ0ODVkMTRhNzA4Li5jMWUwY2Q4ZGNhMTZjZSAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuY1xuKysrIGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jXG5AQCAtNywxNyArNywyNyBAQFxuICNpbmNsdWRlIFx1MDAzY2FzbS9rdm1fdmNwdS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY291bnRfemVyb3MuaFx1MDAzZVxuIFxuK3N0YXRpYyBpbnQgZWlvaW50Y19nZXRfaXBudW0oc3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzLCBpbnQgaXJxKVxuK3tcbitcdGludCBpcG51bSA9IChzLVx1MDAzZWlwbWFwIFx1MDAzZVx1MDAzZSAoaXJxIC8gMzIgKiA4KSkgXHUwMDI2IDB4ZmY7XG4rXG4rXHRpZiAoIShzLVx1MDAzZXN0YXR1cyBcdTAwMjYgQklUKEVJT0lOVENfRU5BQkxFX0lOVF9FTkNPREUpKSkge1xuK1x0XHRpcG51bSA9IGNvdW50X3RyYWlsaW5nX3plcm9zKGlwbnVtKTtcbitcdFx0aXBudW0gPSBpcG51bSBcdTAwM2MgNCA/IGlwbnVtIDogMDtcbitcdH0gZWxzZSB7XG4rXHRcdGlwbnVtID0gKGlwbnVtIFx1MDAzYyBMT09OR1NPTl9JUF9OVU0pID8gaXBudW0gOiAwO1xuK1x0fVxuK1xuK1x0cmV0dXJuIGlwbnVtO1xuK31cbitcbiBzdGF0aWMgdm9pZCBlaW9pbnRjX3NldF9zd19jb3JlaXNyKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcylcbiB7XG4gXHRpbnQgaXBudW0sIGNwdSwgY3B1aWQsIGlycTtcbiBcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbiBcbiBcdGZvciAoaXJxID0gMDsgaXJxIFx1MDAzYyBFSU9JTlRDX0lSUVM7IGlycSsrKSB7XG4tXHRcdGlwbnVtID0gKHMtXHUwMDNlaXBtYXAgXHUwMDNlXHUwMDNlIChpcnEgLyAzMiAqIDgpKSBcdTAwMjYgMHhmZjtcbi1cdFx0aWYgKCEocy1cdTAwM2VzdGF0dXMgXHUwMDI2IEJJVChFSU9JTlRDX0VOQUJMRV9JTlRfRU5DT0RFKSkpIHtcbi1cdFx0XHRpcG51bSA9IGNvdW50X3RyYWlsaW5nX3plcm9zKGlwbnVtKTtcbi1cdFx0XHRpcG51bSA9IGlwbnVtIFx1MDAzYyA0ID8gaXBudW0gOiAwO1xuLVx0XHR9XG4rXHRcdGlwbnVtID0gZWlvaW50Y19nZXRfaXBudW0ocywgaXJxKTtcbiBcbiBcdFx0Y3B1aWQgPSAoKHU4ICopcy1cdTAwM2Vjb3JlbWFwKVtpcnFdO1xuIFx0XHR2Y3B1ID0ga3ZtX2dldF92Y3B1X2J5X2NwdWlkKHMtXHUwMDNla3ZtLCBjcHVpZCk7XG5AQCAtMzgsMTEgKzQ4LDcgQEAgc3RhdGljIHZvaWQgZWlvaW50Y191cGRhdGVfaXJxKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcywgaW50IGlycSwgaW50IGxldmVsKVxuIFx0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xuIFx0c3RydWN0IGt2bV9pbnRlcnJ1cHQgdmNwdV9pcnE7XG4gXG4tXHRpcG51bSA9IChzLVx1MDAzZWlwbWFwIFx1MDAzZVx1MDAzZSAoaXJxIC8gMzIgKiA4KSkgXHUwMDI2IDB4ZmY7XG4tXHRpZiAoIShzLVx1MDAzZXN0YXR1cyBcdTAwMjYgQklUKEVJT0lOVENfRU5BQkxFX0lOVF9FTkNPREUpKSkge1xuLVx0XHRpcG51bSA9IGNvdW50X3RyYWlsaW5nX3plcm9zKGlwbnVtKTtcbi1cdFx0aXBudW0gPSBpcG51bSBcdTAwM2MgNCA/IGlwbnVtIDogMDtcbi1cdH1cbitcdGlwbnVtID0gZWlvaW50Y19nZXRfaXBudW0ocywgaXJxKTtcbiBcbiBcdGNwdSA9IHMtXHUwMDNlc3dfY29yZW1hcFtpcnFdO1xuIFx0dmNwdSA9IGt2bV9nZXRfdmNwdV9ieV9pZChzLVx1MDAzZWt2bSwgY3B1KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA1OjI5OjEwLjQwNzAwMDA0N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5NTQwNzkxMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTG9vbmdBcmNoIEtWTSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIExvb25nQXJjaCBLVk0gaW50ZXJydXB0IGNvbnRyb2xsZXIgY29kZSwgc3BlY2lmaWNhbGx5IGBhcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGV4dHJhY3Rpbmcgc29tZSBjb21tb24gbG9naWMgaW50byBhIG5ldyBmdW5jdGlvbiwgYGVpb2ludGNfZ2V0X2lwbnVtYC4gIFRoZXJlJ3MgYWxzbyBhIGNvbmRpdGlvbmFsIGNoZWNrIGJlaW5nIGFkZGVkIHdpdGhpbiB0aGUgYGVsc2VgIGJyYW5jaCwgYSBzYW5pdHkgY2hlY2sgb24gYGlwbnVtYCB0byBlbnN1cmUgaXQncyB3aXRoaW4gZXhwZWN0ZWQgYm91bmRzIGJhc2VkIG9uIGBMT09OR1NPTl9JUF9OVU1gLlxuXG5NeSBmaXJzdCB0aG91Z2h0IGlzIGFsd2F5cywgXCJIb3cgcmVhY2hhYmxlIGlzIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD9cIiBJdCdzIEtWTSBjb2RlLCBidXQgdGFyZ2V0ZWQgYXQgdGhlIExvb25nQXJjaCBhcmNoaXRlY3R1cmUsIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyB0aGUgZnV6emluZyBxdWVzdGlvbi4gQ2FuIFN5emthbGxlciByZWFjaCBpdD8gU3l6a2FsbGVyICpjYW4qIGZ1enogS1ZNLCBidXQgdGhlIHF1ZXN0aW9uIGJlY29tZXMgd2hldGhlciBpdCBjYW4gZG8gc28gKm9uKiBMb29uZ0FyY2guICBHZW5lcmFsbHksIG15IGV4cGVyaWVuY2UgaXMgd2l0aCB4ODZfNjQsIGFybTY0LCByaXNjdjY0IGFuZCBzMzkweCBpbnN0YW5jZXMsIHNvIEkgaGF2ZSB0byBwYXVzZSBhbmQgdGhpbmsuIERvZXMgU3l6a2FsbGVyIGV2ZW4gcnVuIG9uIExvb25nQXJjaD9cblxuSSBrbm93IHRoZXJlJ3Mgbm8gTG9vbmdBcmNoIGluc3RhbmNlIGluIHRoZSBtYWluIHN5emJvdCwgYnV0IEkgbmVlZCB0byBiZSBjYXJlZnVsIGFzc3VtaW5nIHRoYXQgbWVhbnMgaXQncyB1bnJlYWNoYWJsZS4gSXQgKmNvdWxkKiBleGlzdCBpbiBhIGRpZmZlcmVudCBzZXR1cCwgb3IgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZS4gIEhvd2V2ZXIsIHRoaXMgY2hhbmdlIHNheXMgdGhlIGNvZGUgcGF0aCBtYXkgbm90IGJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHN1Y2ggYXMgR0NFIG9yIFFFTVUsIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBCdXQsIExvb25nQXJjaCBLVk0gaXMgc3BlY2lmaWMgdG8gTG9vbmdBcmNoLiBJZiB3ZSBhcmUgb24geDg2XzY0LCB3ZSBjYW4ndCBmdXp6IExvb25nQXJjaCBLVk0sIGxvZ2ljYWxseS5cblxuV2FpdCwgdGhlIG5leHQgc3RlcCBpcyB0byBtYWtlIHN1cmUgb2YgdGhhdCwgYW5kIGl0IGFwcGVhcnMgc3l6a2FsbGVyIGRvZXMgc3VwcG9ydCBgbGludXgvbG9vbmdhcmNoNjRgLiAgU28gdGhlIGFzc3VtcHRpb24gKmlzKiB0aGF0IGl0ICpjYW4qIGJlIGZ1enplZCwgYXMgbG9uZyBhcyBhIExvb25nQXJjaCBWTSBpcyBwcmVzZW50LlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgdGhlIHNwZWNpZmljIGZ1bmN0aW9ucyBiZWluZyBtb2RpZmllZCB3aXRoaW4gYGFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuY2AuIEl0J3MgYGVpb2ludGNfc2V0X3N3X2NvcmVpc3JgIGFuZCBgZWlvaW50Y191cGRhdGVfaXJxYCBiZWluZyBjaGFuZ2VkLCBhbG9uZyB3aXRoIHRoZSBuZXcgYGVpb2ludGNfZ2V0X2lwbnVtYCBmdW5jdGlvbi4gRmluYWxseSwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNoZWNrIGBhcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZ2AgdG8gY29uZmlybSBLVk0gc3VwcG9ydCwgcHJvYmFibHkgdmlhIGBDT05GSUdfS1ZNYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQyMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA1OjI5OjE4LjM2MTA4MjJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM2Njc1ODE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXFxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMjEtXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDU6Mjk6MTguNDk3NzYzMzM3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY2ODk1OTgyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBDb250ZXh0KipcblxuT2theSwgc28gd2UncmUgc3RhcnRpbmcgd2l0aCBgQ09ORklHX0tWTWAuIFRoYXQncyBvdXIgaW5pdGlhbCBhbmNob3IgcG9pbnQgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHNwYWNlLiBOb3csIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBzZWUgd2hhdCByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLCBkZXBlbmRlbmNpZXMsIG9yIHBvdGVudGlhbCBjb25mbGljdHMgZXhpc3QuIFRoaXMgaXNuJ3QganVzdCBhYm91dCB3aGV0aGVyIEtWTSBpcyBlbmFibGVkOyBpdCdzIGFib3V0IHVuZGVyc3RhbmRpbmcgdGhlIGJyb2FkZXIgcGljdHVyZS4gQXJlIHRoZXJlIGFueSBvdGhlciB2aXJ0dWFsaXphdGlvbi1yZWxhdGVkIGZsYWdzPyBXaGF0IHN1YnN5c3RlbXMgYXJlIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgYmFzZWQgb24gYENPTkZJR19LVk1gPyBXaGF0IG90aGVyIGZlYXR1cmUgc2V0cyBtaWdodCBiZSBhdmFpbGFibGU/IFdlIG5lZWQgdG8gbWFwIG91dCB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgdG8gZ2V0IGEgZnVsbCB2aWV3LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTg5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDU6Mjk6MjEuMTY2NzI1Nzg0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MDkwODMxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlaW9pbnRjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9sb29uZ2FyY2gva3ZtL01ha2VmaWxlPTIxPWt2bS15ICs9IGludGMvZG1zaW50Yy5vXFxuYXJjaC9sb29uZ2FyY2gva3ZtL01ha2VmaWxlOjIyOmt2bS15ICs9IGludGMvZWlvaW50Yy5vXFxuYXJjaC9sb29uZ2FyY2gva3ZtL01ha2VmaWxlLTIzLWt2bS15ICs9IGludGMvcGNoX3BpYy5vXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjojaW5jbHVkZSBcXHUwMDNjYXNtL2t2bV9laW9pbnRjLmhcXHUwMDNlXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTctI2luY2x1ZGUgXFx1MDAzY2FzbS9rdm1fdmNwdS5oXFx1MDAzZVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTktXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjEwOnN0YXRpYyBpbnQgZWlvaW50Y19nZXRfaXBudW0oc3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzLCBpbnQgaXJxKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0xMS17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjMtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjI0OnN0YXRpYyB2b2lkIGVpb2ludGNfc2V0X3N3X2NvcmVpc3Ioc3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0yNS17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjktXFx0Zm9yIChpcnEgPSAwOyBpcnEgXFx1MDAzYyBFSU9JTlRDX0lSUVM7IGlycSsrKSB7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjMwOlxcdFxcdGlwbnVtID0gZWlvaW50Y19nZXRfaXBudW0ocywgaXJxKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzEtXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNDQtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjQ1OnN0YXRpYyB2b2lkIGVpb2ludGNfdXBkYXRlX2lycShzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMsIGludCBpcnEsIGludCBsZXZlbClcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNDYte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTUwLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo1MTpcXHRpcG51bSA9IGVpb2ludGNfZ2V0X2lwbnVtKHMsIGlycSk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTUyLVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTc5LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo4MDpzdGF0aWMgaW5saW5lIHZvaWQgZWlvaW50Y191cGRhdGVfc3dfY29yZW1hcChzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMsXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTgxLVxcdFxcdFxcdFxcdFxcdGludCBpcnEsIHU2NCB2YWwsIHUzMiBsZW4sIGJvb2wgbm90aWZ5KVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTEwNC1cXHRcXHRcXHQvKiBsb3dlciBpcnEgYXQgb2xkIGNwdSBhbmQgcmFpc2UgaXJxIGF0IG5ldyBjcHUgKi9cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MTA1OlxcdFxcdFxcdGVpb2ludGNfdXBkYXRlX2lycShzLCBpcnEgKyBpLCAwKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMTA2LVxcdFxcdFxcdHMtXFx1MDAzZXN3X2NvcmVtYXBbaXJxICsgaV0gPSBjcHU7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjEwNzpcXHRcXHRcXHRlaW9pbnRjX3VwZGF0ZV9pcnEocywgaXJxICsgaSwgMSk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTEwOC1cXHRcXHR9IGVsc2Uge1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTExMy1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MTE0OnZvaWQgZWlvaW50Y19zZXRfaXJxKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcywgaW50IGlycSwgaW50IGxldmVsKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0xMTUte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTEyMC1cXHRsZXZlbCA/IF9fc2V0X2JpdChpcnEsIGlzcikgOiBfX2NsZWFyX2JpdChpcnEsIGlzcik7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjEyMTpcXHRlaW9pbnRjX3VwZGF0ZV9pcnEocywgaXJxLCBsZXZlbCk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTEyMi1cXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMTI0LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoxMjU6c3RhdGljIGludCBsb29uZ2FyY2hfZWlvaW50Y19yZWFkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzLFxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0xMjYtXFx0XFx0XFx0XFx0Z3BhX3QgYWRkciwgdW5zaWduZWQgbG9uZyAqdmFsKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTE2NS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MTY2OnN0YXRpYyBpbnQga3ZtX2Vpb2ludGNfcmVhZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTE2Ny1cXHRcXHRcXHRzdHJ1Y3Qga3ZtX2lvX2RldmljZSAqZGV2LFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTE3MC1cXHR1bnNpZ25lZCBsb25nIGZsYWdzLCBkYXRhLCBvZmZzZXQ7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjE3MTpcXHRzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKmVpb2ludGMgPSB2Y3B1LVxcdTAwM2Vrdm0tXFx1MDAzZWFyY2guZWlvaW50YztcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMTcyLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoxNzM6XFx0aWYgKCFlaW9pbnRjKSB7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjE3NDpcXHRcXHRrdm1fZXJyKFxcXCIlczogZWlvaW50YyBpcnFjaGlwIG5vdCB2YWxpZCFcXFxcblxcXCIsIF9fZnVuY19fKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMTc1LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTE3OC1cXHRpZiAoYWRkciBcXHUwMDI2IChsZW4gLSAxKSkge1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoxNzk6XFx0XFx0a3ZtX2VycihcXFwiJXM6IGVpb2ludGMgbm90IGFsaWduZWQgYWRkciAlbGx4IGxlbiAlZFxcXFxuXFxcIiwgX19mdW5jX18sIGFkZHIsIGxlbik7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTE4MC1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0xODQtXFx0YWRkciAtPSBvZmZzZXQ7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjE4NTpcXHR2Y3B1LVxcdTAwM2VzdGF0LmVpb2ludGNfcmVhZF9leGl0cysrO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoxODY6XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmVpb2ludGMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MTg3OlxcdGxvb25nYXJjaF9laW9pbnRjX3JlYWQodmNwdSwgZWlvaW50YywgYWRkciwgXFx1MDAyNmRhdGEpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoxODg6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZWlvaW50Yy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0xODktXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjA4LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoyMDk6c3RhdGljIGludCBsb29uZ2FyY2hfZWlvaW50Y193cml0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjIxMDpcXHRcXHRcXHRcXHRzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMsXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTIxMS1cXHRcXHRcXHRcXHRncGFfdCBhZGRyLCB1NjQgdmFsdWUsIHU2NCBmaWVsZF9tYXNrKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTI0OS1cXHRcXHRcXHRpcnEgPSBfX2ZmcyhkYXRhKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MjUwOlxcdFxcdFxcdGVpb2ludGNfdXBkYXRlX2lycShzLCBpcnEgKyBpbmRleCAqIDY0LCAxKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjUxLVxcdFxcdFxcdGRhdGEgXFx1MDAyNj0gfkJJVF9VTEwoaXJxKTtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0yNTktXFx0XFx0XFx0aXJxID0gX19mZnMoZGF0YSk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjI2MDpcXHRcXHRcXHRlaW9pbnRjX3VwZGF0ZV9pcnEocywgaXJxICsgaW5kZXggKiA2NCwgMCk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTI2MS1cXHRcXHRcXHRkYXRhIFxcdTAwMjY9IH5CSVRfVUxMKGlycSk7XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjc5LVxcdFxcdFxcdGlycSA9IF9fZmZzKGRhdGEpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoyODA6XFx0XFx0XFx0ZWlvaW50Y191cGRhdGVfaXJxKHMsIGlycSArIGluZGV4ICogNjQsIDApO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0yODEtXFx0XFx0XFx0ZGF0YSBcXHUwMDI2PSB+QklUX1VMTChpcnEpO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTI4OC1cXHRcXHRkYXRhID0gcy1cXHUwMDNlY29yZW1hcFtpbmRleF07XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjI4OTpcXHRcXHRlaW9pbnRjX3VwZGF0ZV9zd19jb3JlbWFwKHMsIGluZGV4ICogOCwgZGF0YSwgc2l6ZW9mKGRhdGEpLCB0cnVlKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjkwLVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTI5Ny1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Mjk4OnN0YXRpYyBpbnQga3ZtX2Vpb2ludGNfd3JpdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0yOTktXFx0XFx0XFx0c3RydWN0IGt2bV9pb19kZXZpY2UgKmRldixcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zMDItXFx0dW5zaWduZWQgbG9uZyBmbGFncywgdmFsdWU7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjMwMzpcXHRzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKmVpb2ludGMgPSB2Y3B1LVxcdTAwM2Vrdm0tXFx1MDAzZWFyY2guZWlvaW50YztcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzA0LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzozMDU6XFx0aWYgKCFlaW9pbnRjKSB7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjMwNjpcXHRcXHRrdm1fZXJyKFxcXCIlczogZWlvaW50YyBpcnFjaGlwIG5vdCB2YWxpZCFcXFxcblxcXCIsIF9fZnVuY19fKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzA3LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMxMC1cXHRpZiAoYWRkciBcXHUwMDI2IChsZW4gLSAxKSkge1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzozMTE6XFx0XFx0a3ZtX2VycihcXFwiJXM6IGVpb2ludGMgbm90IGFsaWduZWQgYWRkciAlbGx4IGxlbiAlZFxcXFxuXFxcIiwgX19mdW5jX18sIGFkZHIsIGxlbik7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMxMi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zMTQtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjMxNTpcXHR2Y3B1LVxcdTAwM2VzdGF0LmVpb2ludGNfd3JpdGVfZXhpdHMrKztcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzE2OlxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZlaW9pbnRjLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMxNy1cXHRzd2l0Y2ggKGxlbikge1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMxOS1cXHRcXHR2YWx1ZSA9ICoodW5zaWduZWQgY2hhciAqKXZhbDtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzIwOlxcdFxcdGxvb25nYXJjaF9laW9pbnRjX3dyaXRlKHZjcHUsIGVpb2ludGMsIGFkZHIsIHZhbHVlLCAweEZGKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzIxLVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMyMy1cXHRcXHR2YWx1ZSA9ICoodW5zaWduZWQgc2hvcnQgKil2YWw7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjMyNDpcXHRcXHRsb29uZ2FyY2hfZWlvaW50Y193cml0ZSh2Y3B1LCBlaW9pbnRjLCBhZGRyLCB2YWx1ZSwgVVNIUlRfTUFYKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzI1LVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMyNy1cXHRcXHR2YWx1ZSA9ICoodW5zaWduZWQgaW50ICopdmFsO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzozMjg6XFx0XFx0bG9vbmdhcmNoX2Vpb2ludGNfd3JpdGUodmNwdSwgZWlvaW50YywgYWRkciwgdmFsdWUsIFVJTlRfTUFYKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzI5LVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMzMS1cXHRcXHR2YWx1ZSA9ICoodW5zaWduZWQgbG9uZyAqKXZhbDtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzMyOlxcdFxcdGxvb25nYXJjaF9laW9pbnRjX3dyaXRlKHZjcHUsIGVpb2ludGMsIGFkZHIsIHZhbHVlLCBVTE9OR19NQVgpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zMzMtXFx0XFx0YnJlYWs7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMzNC1cXHR9XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjMzNTpcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZlaW9pbnRjLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMzNi1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zMzktXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjM0MDpzdGF0aWMgY29uc3Qgc3RydWN0IGt2bV9pb19kZXZpY2Vfb3BzIGt2bV9laW9pbnRjX29wcyA9IHtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzQxOlxcdC5yZWFkXFx0PSBrdm1fZWlvaW50Y19yZWFkLFxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzozNDI6XFx0LndyaXRlXFx0PSBrdm1fZWlvaW50Y193cml0ZSxcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzQzLX07XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM0NC1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzQ1OnN0YXRpYyBpbnQga3ZtX2Vpb2ludGNfdmlydF9yZWFkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzQ2LVxcdFxcdFxcdFxcdHN0cnVjdCBrdm1faW9fZGV2aWNlICpkZXYsXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzUwLVxcdHUzMiAqZGF0YSA9IHZhbDtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzUxOlxcdHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqZWlvaW50YyA9IHZjcHUtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC5laW9pbnRjO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zNTItXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjM1MzpcXHRpZiAoIWVpb2ludGMpIHtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzU0OlxcdFxcdGt2bV9lcnIoXFxcIiVzOiBlaW9pbnRjIGlycWNoaXAgbm90IHZhbGlkIVxcXFxuXFxcIiwgX19mdW5jX18pO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zNTUtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzU4LVxcdGFkZHIgLT0gRUlPSU5UQ19WSVJUX0JBU0U7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjM1OTpcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2ZWlvaW50Yy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zNjAtXFx0c3dpdGNoIChhZGRyKSB7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM2MS1cXHRjYXNlIEVJT0lOVENfVklSVF9GRUFUVVJFUzpcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzYyOlxcdFxcdCpkYXRhID0gZWlvaW50Yy1cXHUwMDNlZmVhdHVyZXM7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM2My1cXHRcXHRicmVhaztcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzY0LVxcdGNhc2UgRUlPSU5UQ19WSVJUX0NPTkZJRzpcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzY1OlxcdFxcdCpkYXRhID0gZWlvaW50Yy1cXHUwMDNlc3RhdHVzO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zNjYtXFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzY5LVxcdH1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzcwOlxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmVpb2ludGMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzcxLVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM3NC1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Mzc1OnN0YXRpYyBpbnQga3ZtX2Vpb2ludGNfdmlydF93cml0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM3Ni1cXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX2lvX2RldmljZSAqZGV2LFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM4MC1cXHR1MzIgdmFsdWUgPSAqKHUzMiAqKXZhbDtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzgxOlxcdHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqZWlvaW50YyA9IHZjcHUtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC5laW9pbnRjO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zODItXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjM4MzpcXHRpZiAoIWVpb2ludGMpIHtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Mzg0OlxcdFxcdGt2bV9lcnIoXFxcIiVzOiBlaW9pbnRjIGlycWNoaXAgbm90IHZhbGlkIVxcXFxuXFxcIiwgX19mdW5jX18pO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zODUtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzg4LVxcdGFkZHIgLT0gRUlPSU5UQ19WSVJUX0JBU0U7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjM4OTpcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2ZWlvaW50Yy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zOTAtXFx0c3dpdGNoIChhZGRyKSB7XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzk0LVxcdFxcdC8qXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjM5NTpcXHRcXHQgKiBlaW9pbnRjIGZlYXR1cmVzIGNhbiBvbmx5IGJlIHNldCBhdCBkaXNhYmxlZCBzdGF0dXNcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzk2LVxcdFxcdCAqL1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzozOTc6XFx0XFx0aWYgKChlaW9pbnRjLVxcdTAwM2VzdGF0dXMgXFx1MDAyNiBCSVQoRUlPSU5UQ19FTkFCTEUpKSBcXHUwMDI2XFx1MDAyNiB2YWx1ZSkge1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zOTgtXFx0XFx0XFx0YnJlYWs7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM5OS1cXHRcXHR9XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjQwMDpcXHRcXHRlaW9pbnRjLVxcdTAwM2VzdGF0dXMgPSB2YWx1ZSBcXHUwMDI2IGVpb2ludGMtXFx1MDAzZWZlYXR1cmVzO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00MDEtXFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNDA0LVxcdH1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NDA1OlxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmVpb2ludGMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNDA2LVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTQwOS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NDEwOnN0YXRpYyBjb25zdCBzdHJ1Y3Qga3ZtX2lvX2RldmljZV9vcHMga3ZtX2Vpb2ludGNfdmlydF9vcHMgPSB7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjQxMTpcXHQucmVhZFxcdD0ga3ZtX2Vpb2ludGNfdmlydF9yZWFkLFxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo0MTI6XFx0LndyaXRlXFx0PSBrdm1fZWlvaW50Y192aXJ0X3dyaXRlLFxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00MTMtfTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNDE0LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo0MTU6c3RhdGljIGludCBrdm1fZWlvaW50Y19jdHJsX2FjY2VzcyhzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LFxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00MTYtXFx0XFx0XFx0XFx0XFx0c3RydWN0IGt2bV9kZXZpY2VfYXR0ciAqYXR0cilcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00MjItXFx0dm9pZCBfX3VzZXIgKmRhdGE7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjQyMzpcXHRzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMgPSBkZXYtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC5laW9pbnRjO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00MjQtXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNDQ5LVxcdGNhc2UgS1ZNX0RFVl9MT09OR0FSQ0hfRVhUSU9JX0NUUkxfTE9BRF9GSU5JU0hFRDpcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NDUwOlxcdFxcdGVpb2ludGNfc2V0X3N3X2NvcmVpc3Iocyk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTQ1MS1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgKEVJT0lOVENfSVJRUyAvIDgpOyBpKyspIHtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNDUyLVxcdFxcdFxcdHN0YXJ0X2lycSA9IGkgKiA4O1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo0NTM6XFx0XFx0XFx0ZWlvaW50Y191cGRhdGVfc3dfY29yZW1hcChzLCBzdGFydF9pcnEsXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTQ1NC1cXHRcXHRcXHRcXHRcXHRzLVxcdTAwM2Vjb3JlbWFwW2ldLCBzaXplb2YodTY0KSwgZmFsc2UpO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTQ2NC1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NDY1OnN0YXRpYyBpbnQga3ZtX2Vpb2ludGNfcmVnc19hY2Nlc3Moc3RydWN0IGt2bV9kZXZpY2UgKmRldixcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNDY2LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIsXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNDcxLVxcdHZvaWQgKnAgPSBOVUxMO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo0NzI6XFx0c3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00NzMtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjQ3NDpcXHRzID0gZGV2LVxcdTAwM2Vrdm0tXFx1MDAzZWFyY2guZWlvaW50YztcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNDc1LVxcdGFkZHIgPSBhdHRyLVxcdTAwM2VhdHRyO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTUxMC1cXHRkZWZhdWx0OlxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo1MTE6XFx0XFx0a3ZtX2VycihcXFwiJXM6IHVua25vd24gZWlvaW50YyByZWdpc3RlciwgYWRkciA9ICVkXFxcXG5cXFwiLCBfX2Z1bmNfXywgYWRkcik7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTUxMi1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy01MjQtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjUyNTpzdGF0aWMgaW50IGt2bV9laW9pbnRjX3N3X3N0YXR1c19hY2Nlc3Moc3RydWN0IGt2bV9kZXZpY2UgKmRldixcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNTI2LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIsXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNTMxLVxcdHZvaWQgKnAgPSBOVUxMO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo1MzI6XFx0c3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy01MzMtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjUzNDpcXHRzID0gZGV2LVxcdTAwM2Vrdm0tXFx1MDAzZWFyY2guZWlvaW50YztcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNTM1LVxcdGFkZHIgPSBhdHRyLVxcdTAwM2VhdHRyO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTU1NC1cXHRkZWZhdWx0OlxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo1NTU6XFx0XFx0a3ZtX2VycihcXFwiJXM6IHVua25vd24gZWlvaW50YyByZWdpc3RlciwgYWRkciA9ICVkXFxcXG5cXFwiLCBfX2Z1bmNfXywgYWRkcik7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTU1Ni1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy01NjctXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjU2ODpzdGF0aWMgaW50IGt2bV9laW9pbnRjX2dldF9hdHRyKHN0cnVjdCBrdm1fZGV2aWNlICpkZXYsXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTU2OS1cXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTU3NC1cXHRjYXNlIEtWTV9ERVZfTE9PTkdBUkNIX0VYVElPSV9HUlBfUkVHUzpcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NTc1OlxcdFxcdHJldCA9IGt2bV9laW9pbnRjX3JlZ3NfYWNjZXNzKGRldiwgYXR0ciwgZmFsc2UsIFxcdTAwMjZkYXRhKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNTc2LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNTgzLVxcdGNhc2UgS1ZNX0RFVl9MT09OR0FSQ0hfRVhUSU9JX0dSUF9TV19TVEFUVVM6XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjU4NDpcXHRcXHRyZXQgPSBrdm1fZWlvaW50Y19zd19zdGF0dXNfYWNjZXNzKGRldiwgYXR0ciwgZmFsc2UsIFxcdTAwMjZkYXRhKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNTg1LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNTk2LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo1OTc6c3RhdGljIGludCBrdm1fZWlvaW50Y19zZXRfYXR0cihzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LFxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy01OTgtXFx0XFx0XFx0XFx0c3RydWN0IGt2bV9kZXZpY2VfYXR0ciAqYXR0cilcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MDMtXFx0Y2FzZSBLVk1fREVWX0xPT05HQVJDSF9FWFRJT0lfR1JQX0NUUkw6XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjYwNDpcXHRcXHRyZXR1cm4ga3ZtX2Vpb2ludGNfY3RybF9hY2Nlc3MoZGV2LCBhdHRyKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjA1LVxcdGNhc2UgS1ZNX0RFVl9MT09OR0FSQ0hfRVhUSU9JX0dSUF9SRUdTOlxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTYwOC1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjA5OlxcdFxcdHJldHVybiBrdm1fZWlvaW50Y19yZWdzX2FjY2VzcyhkZXYsIGF0dHIsIHRydWUsIFxcdTAwMjZkYXRhKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjEwLVxcdGNhc2UgS1ZNX0RFVl9MT09OR0FSQ0hfRVhUSU9JX0dSUF9TV19TVEFUVVM6XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjEzLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2MTQ6XFx0XFx0cmV0dXJuIGt2bV9laW9pbnRjX3N3X3N0YXR1c19hY2Nlc3MoZGV2LCBhdHRyLCB0cnVlLCBcXHUwMDI2ZGF0YSk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTYxNS1cXHRkZWZhdWx0Olxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTYxOS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjIwOnN0YXRpYyBpbnQga3ZtX2Vpb2ludGNfY3JlYXRlKHN0cnVjdCBrdm1fZGV2aWNlICpkZXYsIHUzMiB0eXBlKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MjEte1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MjItXFx0aW50IHJldDtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjIzOlxcdHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcztcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjI0LVxcdHN0cnVjdCBrdm1faW9fZGV2aWNlICpkZXZpY2U7XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjI2LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2Mjc6XFx0LyogZWlvaW50YyBoYXMgYmVlbiBjcmVhdGVkICovXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjYyODpcXHRpZiAoa3ZtLVxcdTAwM2VhcmNoLmVpb2ludGMpXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTYyOS1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjMwLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2MzE6XFx0cyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50Yyk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTYzMi1cXHRpZiAoIXMpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjQxLVxcdGRldmljZSA9IFxcdTAwMjZzLVxcdTAwM2VkZXZpY2U7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjY0MjpcXHRrdm1faW9kZXZpY2VfaW5pdChkZXZpY2UsIFxcdTAwMjZrdm1fZWlvaW50Y19vcHMpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02NDMtXFx0bXV0ZXhfbG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VzbG90c19sb2NrKTtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02NTItXFx0ZGV2aWNlID0gXFx1MDAyNnMtXFx1MDAzZWRldmljZV92ZXh0O1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2NTM6XFx0a3ZtX2lvZGV2aWNlX2luaXQoZGV2aWNlLCBcXHUwMDI2a3ZtX2Vpb2ludGNfdmlydF9vcHMpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02NTQtXFx0bXV0ZXhfbG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VzbG90c19sb2NrKTtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02NjQtXFx0fVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2NjU6XFx0a3ZtLVxcdTAwM2VhcmNoLmVpb2ludGMgPSBzO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02NjYtXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjY5LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2NzA6c3RhdGljIHZvaWQga3ZtX2Vpb2ludGNfZGVzdHJveShzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2KVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02NzEte1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02NzItXFx0c3RydWN0IGt2bSAqa3ZtO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2NzM6XFx0c3RydWN0IGxvb25nYXJjaF9laW9pbnRjICplaW9pbnRjO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02NzQtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjY3NTpcXHRpZiAoIWRldiB8fCAhZGV2LVxcdTAwM2Vrdm0gfHwgIWRldi1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLmVpb2ludGMpXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY3Ni1cXHRcXHRyZXR1cm47XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjc4LVxcdGt2bSA9IGRldi1cXHUwMDNla3ZtO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2Nzk6XFx0ZWlvaW50YyA9IGt2bS1cXHUwMDNlYXJjaC5laW9pbnRjO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02ODAtXFx0bXV0ZXhfbG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VzbG90c19sb2NrKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjgxOlxcdGt2bV9pb19idXNfdW5yZWdpc3Rlcl9kZXYoa3ZtLCBLVk1fSU9DU1JfQlVTLCBcXHUwMDI2ZWlvaW50Yy1cXHUwMDNlZGV2aWNlKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjgyOlxcdGt2bV9pb19idXNfdW5yZWdpc3Rlcl9kZXYoa3ZtLCBLVk1fSU9DU1JfQlVTLCBcXHUwMDI2ZWlvaW50Yy1cXHUwMDNlZGV2aWNlX3ZleHQpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02ODMtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZXNsb3RzX2xvY2spO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2ODQ6XFx0a2ZyZWUoZWlvaW50Yyk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY4NS1cXHRrZnJlZShkZXYpO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY4Ny1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Njg4OnN0YXRpYyBzdHJ1Y3Qga3ZtX2RldmljZV9vcHMga3ZtX2Vpb2ludGNfZGV2X29wcyA9IHtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Njg5OlxcdC5uYW1lID0gXFxcImt2bS1sb29uZ2FyY2gtZWlvaW50Y1xcXCIsXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjY5MDpcXHQuY3JlYXRlID0ga3ZtX2Vpb2ludGNfY3JlYXRlLFxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2OTE6XFx0LmRlc3Ryb3kgPSBrdm1fZWlvaW50Y19kZXN0cm95LFxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2OTI6XFx0LnNldF9hdHRyID0ga3ZtX2Vpb2ludGNfc2V0X2F0dHIsXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjY5MzpcXHQuZ2V0X2F0dHIgPSBrdm1fZWlvaW50Y19nZXRfYXR0cixcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjk0LX07XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY5NS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Njk2OmludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKHZvaWQpXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY5Ny17XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjY5ODpcXHRyZXR1cm4ga3ZtX3JlZ2lzdGVyX2RldmljZV9vcHMoXFx1MDAyNmt2bV9laW9pbnRjX2Rldl9vcHMsIEtWTV9ERVZfVFlQRV9MT09OR0FSQ0hfRUlPSU5UQyk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY5OS19XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmMtNi0jaW5jbHVkZSBcXHUwMDNjYXNtL2t2bV9kbXNpbnRjLmhcXHUwMDNlXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jOjc6I2luY2x1ZGUgXFx1MDAzY2FzbS9rdm1fZWlvaW50Yy5oXFx1MDAzZVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy04LSNpbmNsdWRlIFxcdTAwM2Nhc20va3ZtX3BjaF9waWMuaFxcdTAwM2VcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy0xMS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmM6MTI6LyogdXBkYXRlIHRoZSBpc3IgYWNjb3JkaW5nIHRvIGlycSBsZXZlbCBhbmQgcm91dGUgaXJxIHRvIGVpb2ludGMgKi9cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmMtMTMtc3RhdGljIHZvaWQgcGNoX3BpY191cGRhdGVfaXJxKHN0cnVjdCBsb29uZ2FyY2hfcGNoX3BpYyAqcywgaW50IGlycSwgaW50IGxldmVsKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jLTE3LVxcdC8qXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jOjE4OlxcdCAqIHNldCBpc3IgYW5kIHJvdXRlIGlycSB0byBlaW9pbnRjIGFuZFxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy0xOS1cXHQgKiB0aGUgcm91dGUgdGFibGUgaXMgaW4gaHRtc2lfdmVjdG9yW11cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy0yNC1cXHRcXHRcXHRpcnEgPSBzLVxcdTAwM2VodG1zaV92ZWN0b3JbaXJxXTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmM6MjU6XFx0XFx0XFx0ZWlvaW50Y19zZXRfaXJxKHMtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC5laW9pbnRjLCBpcnEsIGxldmVsKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmMtMjYtXFx0XFx0fVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jLTMwLVxcdFxcdFxcdGlycSA9IHMtXFx1MDAzZWh0bXNpX3ZlY3RvcltpcnFdO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYzozMTpcXHRcXHRcXHRlaW9pbnRjX3NldF9pcnEocy1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLmVpb2ludGMsIGlycSwgbGV2ZWwpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy0zMi1cXHRcXHR9XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmM9NzE9aW50IHBjaF9tc2lfc2V0X2lycShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplLCBpbnQgbGV2ZWwpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmMtODAtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jOjgxOlxcdGVpb2ludGNfc2V0X2lycShrdm0tXFx1MDAzZWFyY2guZWlvaW50YywgZS1cXHUwMDNlbXNpLmRhdGEsIGxldmVsKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmMtODItXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmM9ODY9c3RhdGljIGludCBsb29uZ2FyY2hfcGNoX3BpY19yZWFkKHN0cnVjdCBsb29uZ2FyY2hfcGNoX3BpYyAqcywgZ3BhX3QgYWRkciwgaW50IGxlbiwgdm9pZCAqdmFsKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jLTExNS1cXHRjYXNlIFBDSF9QSUNfUk9VVEVfRU5UUllfU1RBUlQgLi4uIFBDSF9QSUNfUk9VVEVfRU5UUllfRU5EOlxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYzoxMTY6XFx0XFx0Lyogb25seSByb3V0ZSB0byBpbnQwOiBlaW9pbnRjICovXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jLTExNy1cXHRcXHRwdGVtcCA9IHMtXFx1MDAzZXJvdXRlX2VudHJ5ICsgKG9mZnNldCAtIFBDSF9QSUNfUk9VVEVfRU5UUllfU1RBUlQpO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYy0xMi0jaW5jbHVkZSBcXHUwMDNjYXNtL2t2bV9jc3IuaFxcdTAwM2VcXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jOjEzOiNpbmNsdWRlIFxcdTAwM2Nhc20va3ZtX2Vpb2ludGMuaFxcdTAwM2VcXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jLTE0LSNpbmNsdWRlIFxcdTAwM2Nhc20va3ZtX3BjaF9waWMuaFxcdTAwM2VcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmM9MzUwPXN0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9lbnZfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYy0zOTAtXFx0LyogUmVnaXN0ZXIgTG9vbmdBcmNoIEVJT0lOVEMgaW50ZXJydXB0IGNvbnRyb2xsZXIgaW50ZXJmYWNlLiAqL1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmM6MzkxOlxcdHJldCA9IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfZWlvaW50Y19kZXZpY2UoKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jLTM5Mi1cXHRpZiAocmV0KVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz0xNz1jb25zdCBzdHJ1Y3Qga3ZtX3N0YXRzX2Rlc2Mga3ZtX3ZjcHVfc3RhdHNfZGVzY1tdID0ge1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0yNS1cXHRTVEFUU19ERVNDX0NPVU5URVIoVkNQVSwgaXBpX3dyaXRlX2V4aXRzKSxcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjI2OlxcdFNUQVRTX0RFU0NfQ09VTlRFUihWQ1BVLCBlaW9pbnRjX3JlYWRfZXhpdHMpLFxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6Mjc6XFx0U1RBVFNfREVTQ19DT1VOVEVSKFZDUFUsIGVpb2ludGNfd3JpdGVfZXhpdHMpLFxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMjgtXFx0U1RBVFNfREVTQ19DT1VOVEVSKFZDUFUsIHBjaF9waWNfcmVhZF9leGl0cyksXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdm0uYy05LSNpbmNsdWRlIFxcdTAwM2Nhc20va3ZtX2Nzci5oXFx1MDAzZVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92bS5jOjEwOiNpbmNsdWRlIFxcdTAwM2Nhc20va3ZtX2Vpb2ludGMuaFxcdTAwM2VcXG5hcmNoL2xvb25nYXJjaC9rdm0vdm0uYy0xMS0jaW5jbHVkZSBcXHUwMDNjYXNtL2t2bV9wY2hfcGljLmhcXHUwMDNlXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdm0uYz0yMDk9Ym9vbCBrdm1fYXJjaF9pcnFjaGlwX2luX2tlcm5lbChzdHJ1Y3Qga3ZtICprdm0pXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmMtMjEwLXtcXG5hcmNoL2xvb25nYXJjaC9rdm0vdm0uYzoyMTE6XFx0cmV0dXJuIChrdm0tXFx1MDAzZWFyY2guaXBpIFxcdTAwMjZcXHUwMDI2IGt2bS1cXHUwMDNlYXJjaC5laW9pbnRjIFxcdTAwMjZcXHUwMDI2IGt2bS1cXHUwMDNlYXJjaC5wY2hfcGljKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vdm0uYy0yMTItfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNToyOToyMS4zMjc2NDA0ODJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDYyMjM1MzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS1ZNIENvbmZpZ3VyYXRpb24gYW5kIEFzc29jaWF0ZWQgRnVuY3Rpb25zKipcblxuT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBJJ20gd29ya2luZyB3aXRoIGlzIGNsZWFybHkgYEtWTWAuIEdvdCBpdC4gTm93LCBpdCBsb29rcyBsaWtlIEkndmUgYmVlbiBtb2RpZnlpbmcgc29tZSBmdW5jdGlvbnM6IHNwZWNpZmljYWxseSBgZWlvaW50Y19zZXRfc3dfY29yZWlzcmAgYW5kIGBlaW9pbnRjX3VwZGF0ZV9pcnFgLiBUaGVyZSdzIGFsc28gdGhpcyBuZXcgZnVuY3Rpb24sIGBlaW9pbnRjX2dldF9pcG51bWAsIHdoaWNoIGhhcyBiZWVuIGFkZGVkLiBNYWtlcyBzZW5zZS4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIGNoYW5nZXMgaW4gcmVsYXRpb24gdG8gdGhlIGJyb2FkZXIgYXJjaGl0ZWN0dXJlLlxuXG5CZWZvcmUgSSBnbyBmdXJ0aGVyLCBJIHNob3VsZCB2ZXJpZnkgdGhhdCBgS1ZNYCBpcyB0aGUgb25seSByZWxldmFudCBjb25maWcgaGVyZS4gSnVzdCB0byBiZSBzdXJlLCBsZXQncyB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGF0IGBhcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZ2AgZmlsZS4gSSdtIHN1cmUgSSd2ZSBhbHJlYWR5IGNoZWNrZWQgaXQsIGJ1dCBhIHF1aWNrIGRvdWJsZS1jaGVjayBjYW4ndCBodXJ0IGFuZCBpdCdsbCBoZWxwIHJlaW5mb3JjZSB0aGUgY29udGV4dC4gTm8gcG9pbnQgaW4gbWFraW5nIGFzc3VtcHRpb25zIHdoZW4gYSBxdWljayB2ZXJpZmljYXRpb24gaXMgcG9zc2libGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0ODU0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDU6Mjk6MjQuNzg5ODc3ODU2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzAzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBLVk0gY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRzb3VyY2UgXFxcInZpcnQva3ZtL0tjb25maWdcXFwiXFxuICAgNzpcXHRcXG4gICA4OlxcdG1lbnVjb25maWcgVklSVFVBTElaQVRJT05cXG4gICA5OlxcdFxcdGJvb2wgXFxcIlZpcnR1YWxpemF0aW9uXFxcIlxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBTYXkgWSBoZXJlIHRvIGdldCB0byBzZWUgb3B0aW9ucyBmb3IgdXNpbmcgeW91ciBMaW51eCBob3N0IHRvIHJ1blxcbiAgMTI6XFx0XFx0ICBvdGhlciBvcGVyYXRpbmcgc3lzdGVtcyBpbnNpZGUgdmlydHVhbCBtYWNoaW5lcyAoZ3Vlc3RzKS5cXG4gIDEzOlxcdFxcdCAgVGhpcyBvcHRpb24gYWxvbmUgZG9lcyBub3QgYWRkIGFueSBrZXJuZWwgY29kZS5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0XFx0ICBJZiB5b3Ugc2F5IE4sIGFsbCBvcHRpb25zIGluIHRoaXMgc3VibWVudSB3aWxsIGJlIHNraXBwZWQgYW5kXFxuICAxNjpcXHRcXHQgIGRpc2FibGVkLlxcbiAgMTc6XFx0XFxuICAxODpcXHRpZiBWSVJUVUFMSVpBVElPTlxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgS1ZNXFxuICAyMTpcXHRcXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBBU19IQVNfTFZaX0VYVEVOU0lPTiBcXHUwMDI2XFx1MDAyNiA2NEJJVFxcbiAgMjM6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0RJUlRZX1JJTkdfQUNRX1JFTFxcbiAgMjQ6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0lSUV9ST1VUSU5HXFxuICAyNTpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fSVJRQ0hJUFxcbiAgMjY6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX01TSVxcbiAgMjc6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX1JFQURPTkxZX01FTVxcbiAgMjg6XFx0XFx0c2VsZWN0IEtWTV9DT01NT05cXG4gIDI5OlxcdFxcdHNlbGVjdCBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcXG4gIDMwOlxcdFxcdHNlbGVjdCBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xcbiAgMzE6XFx0XFx0c2VsZWN0IEtWTV9NTUlPXFxuICAzMjpcXHRcXHRzZWxlY3QgVklSVF9YRkVSX1RPX0dVRVNUX1dPUktcXG4gIDMzOlxcdFxcdHNlbGVjdCBTQ0hFRF9JTkZPXFxuICAzNDpcXHRcXHRzZWxlY3QgR1VFU1RfUEVSRl9FVkVOVFMgaWYgUEVSRl9FVkVOVFNcXG4gIDM1OlxcdFxcdGhlbHBcXG4gIDM2OlxcdFxcdCAgU3VwcG9ydCBob3N0aW5nIHZpcnR1YWxpemVkIGd1ZXN0IG1hY2hpbmVzIHVzaW5nXFxuICAzNzpcXHRcXHQgIGhhcmR3YXJlIHZpcnR1YWxpemF0aW9uIGV4dGVuc2lvbnMuIFlvdSB3aWxsIG5lZWRcXG4gIDM4OlxcdFxcdCAgYSBwcm9jZXNzb3IgZXF1aXBwZWQgd2l0aCB2aXJ0dWFsaXphdGlvbiBleHRlbnNpb25zLlxcbiAgMzk6XFx0XFxuICA0MDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA0MTpcXHRcXG4gIDQyOlxcdGVuZGlmICMgVklSVFVBTElaQVRJT05cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDU6Mjk6MjQuNzg5OTQ5Njc2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgyNzY2NTk0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBMb29uZ0FyY2ggS1ZNIEludGVycnVwdCBDb250cm9sbGVyIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYEtWTWAgaXMgdGhlIG9ubHkgY29uZmlndXJhdGlvbiBvcHRpb24gd2UncmUgZGVhbGluZyB3aXRoIGhlcmUsIHdoaWNoIHNpbXBsaWZpZXMgdGhpbmdzLiBUaGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhpcyBhcmNoaXRlY3R1cmUgaXMgdGhyb3VnaCB0aGUgS1ZNIGlvY3RscyBmb3IgTG9vbmdBcmNoLCByaWdodD8gTXkgaW5pdGlhbCBndXQgZmVlbGluZyBpcyB0aGF0IGBlaW9pbnRjX3NldF9zd19jb3JlaXNyYCBhbmQgYGVpb2ludGNfdXBkYXRlX2lycWAgYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCBkZW1hbmQgdGhlIG1vc3QgYXR0ZW50aW9uLiBXYWl0IGEgc2Vjb25kLi4uIGlzbid0IGBlaW9pbnRjX2dldF9pcG51bWAgYSBzdGF0aWMgZnVuY3Rpb24/IFRoYXQgY291bGQgYmUgaW1wb3J0YW50IHRvby4gWWVwLCBJIHRoaW5rIHRoYXQncyB0aGUgcmVhbCBuZXcgZnVuY3Rpb24uXG5cbkFscmlnaHQsIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIGBhcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmNgIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGVpb2ludGNfc2V0X3N3X2NvcmVpc3JgIGFuZCBgZWlvaW50Y191cGRhdGVfaXJxYCwgYnV0IGVzcGVjaWFsbHkgYGVpb2ludGNfZ2V0X2lwbnVtYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdCBhbmQgaG93IHRoZXkgYXJlIGxldmVyYWdlZCBieSBLVk0gdG8gbWFuYWdlIGludGVycnVwdHMgb24gdGhpcyBwbGF0Zm9ybS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU3MjksIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNToyOToyOC42MTc2MTc4MDRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2ODMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0LypcXG4gICAzOlxcdCAqIENvcHlyaWdodCAoQykgMjAyNCBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uIExpbWl0ZWRcXG4gICA0OlxcdCAqL1xcbiAgIDU6XFx0XFxuICAgNjpcXHQjaW5jbHVkZSBcXHUwMDNjYXNtL2t2bV9laW9pbnRjLmhcXHUwMDNlXFxuICAgNzpcXHQjaW5jbHVkZSBcXHUwMDNjYXNtL2t2bV92Y3B1LmhcXHUwMDNlXFxuICAgODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvY291bnRfemVyb3MuaFxcdTAwM2VcXG4gICA5OlxcdFxcbiAgMTA6XFx0c3RhdGljIGludCBlaW9pbnRjX2dldF9pcG51bShzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMsIGludCBpcnEpXFxuICAxMTpcXHR7XFxuICAxMjpcXHRcXHRpbnQgaXBudW0gPSAocy1cXHUwMDNlaXBtYXAgXFx1MDAzZVxcdTAwM2UgKGlycSAvIDMyICogOCkpIFxcdTAwMjYgMHhmZjtcXG4gIDEzOlxcdFxcbiAgMTQ6XFx0XFx0aWYgKCEocy1cXHUwMDNlc3RhdHVzIFxcdTAwMjYgQklUKEVJT0lOVENfRU5BQkxFX0lOVF9FTkNPREUpKSkge1xcbiAgMTU6XFx0XFx0XFx0aXBudW0gPSBjb3VudF90cmFpbGluZ196ZXJvcyhpcG51bSk7XFxuICAxNjpcXHRcXHRcXHRpcG51bSA9IGlwbnVtIFxcdTAwM2MgNCA/IGlwbnVtIDogMDtcXG4gIDE3OlxcdFxcdH0gZWxzZSB7XFxuICAxODpcXHRcXHRcXHRpcG51bSA9IChpcG51bSBcXHUwMDNjIExPT05HU09OX0lQX05VTSkgPyBpcG51bSA6IDA7XFxuICAxOTpcXHRcXHR9XFxuICAyMDpcXHRcXG4gIDIxOlxcdFxcdHJldHVybiBpcG51bTtcXG4gIDIyOlxcdH1cXG4gIDIzOlxcdFxcbiAgMjQ6XFx0c3RhdGljIHZvaWQgZWlvaW50Y19zZXRfc3dfY29yZWlzcihzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMpXFxuICAyNTpcXHR7XFxuICAyNjpcXHRcXHRpbnQgaXBudW0sIGNwdSwgY3B1aWQsIGlycTtcXG4gIDI3OlxcdFxcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcXG4gIDI4OlxcdFxcbiAgMjk6XFx0XFx0Zm9yIChpcnEgPSAwOyBpcnEgXFx1MDAzYyBFSU9JTlRDX0lSUVM7IGlycSsrKSB7XFxuICAzMDpcXHRcXHRcXHRpcG51bSA9IGVpb2ludGNfZ2V0X2lwbnVtKHMsIGlycSk7XFxuICAzMTpcXHRcXG4gIDMyOlxcdFxcdFxcdGNwdWlkID0gKCh1OCAqKXMtXFx1MDAzZWNvcmVtYXApW2lycV07XFxuICAzMzpcXHRcXHRcXHR2Y3B1ID0ga3ZtX2dldF92Y3B1X2J5X2NwdWlkKHMtXFx1MDAzZWt2bSwgY3B1aWQpO1xcbiAgMzQ6XFx0XFx0XFx0aWYgKCF2Y3B1KVxcbiAgMzU6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuICAzNjpcXHRcXG4gIDM3OlxcdFxcdFxcdGNwdSA9IHZjcHUtXFx1MDAzZXZjcHVfaWQ7XFxuICAzODpcXHRcXHRcXHRpZiAodGVzdF9iaXQoaXJxLCAodW5zaWduZWQgbG9uZyAqKXMtXFx1MDAzZWNvcmVpc3JbY3B1XSkpXFxuICAzOTpcXHRcXHRcXHRcXHRfX3NldF9iaXQoaXJxLCBzLVxcdTAwM2Vzd19jb3JlaXNyW2NwdV1baXBudW1dKTtcXG4gIDQwOlxcdFxcdFxcdGVsc2VcXG4gIDQxOlxcdFxcdFxcdFxcdF9fY2xlYXJfYml0KGlycSwgcy1cXHUwMDNlc3dfY29yZWlzcltjcHVdW2lwbnVtXSk7XFxuICA0MjpcXHRcXHR9XFxuICA0MzpcXHR9XFxuICA0NDpcXHRcXG4gIDQ1OlxcdHN0YXRpYyB2b2lkIGVpb2ludGNfdXBkYXRlX2lycShzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMsIGludCBpcnEsIGludCBsZXZlbClcXG4gIDQ2OlxcdHtcXG4gIDQ3OlxcdFxcdGludCBpcG51bSwgY3B1LCBmb3VuZDtcXG4gIDQ4OlxcdFxcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcXG4gIDQ5OlxcdFxcdHN0cnVjdCBrdm1faW50ZXJydXB0IHZjcHVfaXJxO1xcbiAgNTA6XFx0XFxuICA1MTpcXHRcXHRpcG51bSA9IGVpb2ludGNfZ2V0X2lwbnVtKHMsIGlycSk7XFxuICA1MjpcXHRcXG4gIDUzOlxcdFxcdGNwdSA9IHMtXFx1MDAzZXN3X2NvcmVtYXBbaXJxXTtcXG4gIDU0OlxcdFxcdHZjcHUgPSBrdm1fZ2V0X3ZjcHVfYnlfaWQocy1cXHUwMDNla3ZtLCBjcHUpO1xcbiAgNTU6XFx0XFx0aWYgKHVubGlrZWx5KHZjcHUgPT0gTlVMTCkpIHtcXG4gIDU2OlxcdFxcdFxcdGt2bV9lcnIoXFxcIiVzOiBpbnZhbGlkIHRhcmdldCBjcHU6ICVkXFxcXG5cXFwiLCBfX2Z1bmNfXywgY3B1KTtcXG4gIDU3OlxcdFxcdFxcdHJldHVybjtcXG4gIDU4OlxcdFxcdH1cXG4gIDU5OlxcdFxcbiAgNjA6XFx0XFx0aWYgKGxldmVsKSB7XFxuICA2MTpcXHRcXHRcXHQvKiBpZiBub3QgZW5hYmxlIHJldHVybiBmYWxzZSAqL1xcbiAgNjI6XFx0XFx0XFx0aWYgKCF0ZXN0X2JpdChpcnEsICh1bnNpZ25lZCBsb25nICopcy1cXHUwMDNlZW5hYmxlKSlcXG4gIDYzOlxcdFxcdFxcdFxcdHJldHVybjtcXG4gIDY0OlxcdFxcdFxcdF9fc2V0X2JpdChpcnEsICh1bnNpZ25lZCBsb25nICopcy1cXHUwMDNlY29yZWlzcltjcHVdKTtcXG4gIDY1OlxcdFxcdFxcdGZvdW5kID0gZmluZF9maXJzdF9iaXQocy1cXHUwMDNlc3dfY29yZWlzcltjcHVdW2lwbnVtXSwgRUlPSU5UQ19JUlFTKTtcXG4gIDY2OlxcdFxcdFxcdF9fc2V0X2JpdChpcnEsIHMtXFx1MDAzZXN3X2NvcmVpc3JbY3B1XVtpcG51bV0pO1xcbiAgNjc6XFx0XFx0fSBlbHNlIHtcXG4gIDY4OlxcdFxcdFxcdF9fY2xlYXJfYml0KGlycSwgKHVuc2lnbmVkIGxvbmcgKilzLVxcdTAwM2Vjb3JlaXNyW2NwdV0pO1xcbiAgNjk6XFx0XFx0XFx0X19jbGVhcl9iaXQoaXJxLCBzLVxcdTAwM2Vzd19jb3JlaXNyW2NwdV1baXBudW1dKTtcXG4gIDcwOlxcdFxcdFxcdGZvdW5kID0gZmluZF9maXJzdF9iaXQocy1cXHUwMDNlc3dfY29yZWlzcltjcHVdW2lwbnVtXSwgRUlPSU5UQ19JUlFTKTtcXG4gIDcxOlxcdFxcdH1cXG4gIDcyOlxcdFxcbiAgNzM6XFx0XFx0aWYgKGZvdW5kIFxcdTAwM2MgRUlPSU5UQ19JUlFTKVxcbiAgNzQ6XFx0XFx0XFx0cmV0dXJuOyAvKiBvdGhlciBpcnEgaXMgaGFuZGxpbmcsIG5lZWRuJ3QgdXBkYXRlIHBhcmVudCBpcnEgKi9cXG4gIDc1OlxcdFxcbiAgNzY6XFx0XFx0dmNwdV9pcnEuaXJxID0gbGV2ZWwgPyAoSU5UX0hXSTAgKyBpcG51bSkgOiAtKElOVF9IV0kwICsgaXBudW0pO1xcbiAgNzc6XFx0XFx0a3ZtX3ZjcHVfaW9jdGxfaW50ZXJydXB0KHZjcHUsIFxcdTAwMjZ2Y3B1X2lycSk7XFxuICA3ODpcXHR9XFxuICA3OTpcXHRcXG4gIDgwOlxcdHN0YXRpYyBpbmxpbmUgdm9pZCBlaW9pbnRjX3VwZGF0ZV9zd19jb3JlbWFwKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcyxcXG4gIDgxOlxcdFxcdFxcdFxcdFxcdFxcdGludCBpcnEsIHU2NCB2YWwsIHUzMiBsZW4sIGJvb2wgbm90aWZ5KVxcbiAgODI6XFx0e1xcbiAgODM6XFx0XFx0aW50IGksIGNwdSwgY3B1aWQ7XFxuICA4NDpcXHRcXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7XFxuICA4NTpcXHRcXG4gIDg2OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBsZW47IGkrKykge1xcbiAgODc6XFx0XFx0XFx0Y3B1aWQgPSB2YWwgXFx1MDAyNiAweGZmO1xcbiAgODg6XFx0XFx0XFx0dmFsID0gdmFsIFxcdTAwM2VcXHUwMDNlIDg7XFxuICA4OTpcXHRcXG4gIDkwOlxcdFxcdFxcdGlmICghKHMtXFx1MDAzZXN0YXR1cyBcXHUwMDI2IEJJVChFSU9JTlRDX0VOQUJMRV9DUFVfRU5DT0RFKSkpIHtcXG4gIDkxOlxcdFxcdFxcdFxcdGNwdWlkID0gZmZzKGNwdWlkKSAtIDE7XFxuICA5MjpcXHRcXHRcXHRcXHRjcHVpZCA9ICgoY3B1aWQgXFx1MDAzYyAwKSB8fCAoY3B1aWQgXFx1MDAzZT0gNCkpID8gMCA6IGNwdWlkO1xcbiAgOTM6XFx0XFx0XFx0fVxcbiAgOTQ6XFx0XFxuICA5NTpcXHRcXHRcXHR2Y3B1ID0ga3ZtX2dldF92Y3B1X2J5X2NwdWlkKHMtXFx1MDAzZWt2bSwgY3B1aWQpO1xcbiAgOTY6XFx0XFx0XFx0aWYgKCF2Y3B1KVxcbiAgOTc6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuICA5ODpcXHRcXG4gIDk5OlxcdFxcdFxcdGNwdSA9IHZjcHUtXFx1MDAzZXZjcHVfaWQ7XFxuIDEwMDpcXHRcXHRcXHRpZiAocy1cXHUwMDNlc3dfY29yZW1hcFtpcnEgKyBpXSA9PSBjcHUpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA1OjI5OjI4LjYxNzc2NzIyNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjU3NDM0NDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTG9vbmdBcmNoIEtWTSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIEtWTSBsb2dpYyBmb3IgTG9vbmdBcmNoIOKAkyB0aGF0IG11Y2ggaXMgY2xlYXIuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gaWRlbnRpZnkgdGhlIGVuYWJsaW5nIGNvbmZpZ3VyYXRpb25zLCBhbmQgaXQgbG9va3MgbGlrZSBgS1ZNYCBpcyB0aGUga2V5LiBOb3csIEkgc2hvdWxkIG1ha2UgYSBub3RlIG9mIHRoZSBzeW1ib2xzIGFmZmVjdGVkIHRvIGhlbHAgd2l0aCBhbnkgcG90ZW50aWFsIGRlYnVnZ2luZyBkb3duIHRoZSBsaW5lLCBzbyB0aGUgbWFpbiBmb2N1cyBwb2ludHMgaGVyZSBhcmUgYGVpb2ludGNfZ2V0X2lwbnVtYCwgYGVpb2ludGNfc2V0X3N3X2NvcmVpc3JgLCBhbmQgYGVpb2ludGNfdXBkYXRlX2lycWAuIEhtbSwgYGVpb2ludGNfZ2V0X2lwbnVtYCBpcyBzdGF0aWM7IGl0J3MgcHJvYmFibHkgaW5saW5lZCBidXQgc3RpbGwgd29ydGggbGlzdGluZyBpdCBmb3IgY29tcGxldGVuZXNzLlxuXG5MZXQncyBxdWlja2x5IGNvbmZpcm0gdGhhdCBgS1ZNYCBhbG9uZSBpcyBzdWZmaWNpZW50IGZvciBlbmFibGluZyB0aGUgZmVhdHVyZXMuIFllcCwgYEtWTWAgaXMgaW5kZWVkIHRoZSBwcmltYXJ5IEtWTSBjb25maWcgZm9yIExvb25nQXJjaC4gSXMgdGhlcmUgYW55dGhpbmcgZWxzZSB3ZSBuZWVkIHRvIGNvbnNpZGVyPyBJJ2xsIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBmaWxlIHdpdGhpbiB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEtWTSBkaXJlY3Rvcnkg4oCTIGBhcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZ2AuIFJpZ2h0LCBJIHNlZSBpdCBub3c6IGBjb25maWcgS1ZNYCBhbHNvIGRlcGVuZHMgb24gYEFTX0hBU19MVlpfRVhURU5TSU9OIFx1MDAyNlx1MDAyNiA2NEJJVGAuIFNvLCB3aXRoIHRob3NlIHByZXJlcXVpc2l0ZXMgaGFuZGxlZCwgZW5hYmxpbmcgYEtWTWAgc2hvdWxkIGJlIHN1ZmZpY2llbnQuIE9rYXksIEknbSBjb25maWRlbnQgaW4gdGhhdCBhbmFseXNpcy4gVGltZSB0byBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc3OTYsIk91dHB1dFRva2VucyI6MTM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDU6Mjk6MzMuODc1MjA0OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3Mjc2NDg4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZWlvaW50Y19nZXRfaXBudW1cIixcbiAgICBcImVpb2ludGNfc2V0X3N3X2NvcmVpc3JcIixcbiAgICBcImVpb2ludGNfdXBkYXRlX2lycVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBMb29uZ0FyY2ggS1ZNIGludGVycnVwdCBjb250cm9sbGVyIChlaW9pbnRjKSBsb2dpYyBieSBleHRyYWN0aW5nIGFuZCB1cGRhdGluZyB0aGUgSVAgbnVtYmVyIGNhbGN1bGF0aW9uIGludG8gYSBuZXcgZnVuY3Rpb24gYGVpb2ludGNfZ2V0X2lwbnVtYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgS1ZNIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlaW9pbnRjX2dldF9pcG51bVwiLFxuICAgIFwiZWlvaW50Y19zZXRfc3dfY29yZWlzclwiLFxuICAgIFwiZWlvaW50Y191cGRhdGVfaXJxXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIExvb25nQXJjaCBLVk0gaW50ZXJydXB0IGNvbnRyb2xsZXIgKGVpb2ludGMpIGxvZ2ljIGJ5IGV4dHJhY3RpbmcgYW5kIHVwZGF0aW5nIHRoZSBJUCBudW1iZXIgY2FsY3VsYXRpb24gaW50byBhIG5ldyBmdW5jdGlvbiBgZWlvaW50Y19nZXRfaXBudW1gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEtWTSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBLVk0gaW9jdGxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowdc6bh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-14 05:12:58 +0000 UTC FinishedAt: 2026-07-14 05:29:35 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3b029c035b34bbc693405ddf759f0e9b920c27f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3b029c035b34bbc693405ddf759f0e9b920c27f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "eiointc_get_ipnum", "eiointc_set_sw_coreisr", "eiointc_update_irq" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA1OjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Vpb2ludGNfZ2V0X2lwbnVtJiMzNDssCiAgICAmIzM0O2Vpb2ludGNfc2V0X3N3X2NvcmVpc3ImIzM0OywKICAgICYjMzQ7ZWlvaW50Y191cGRhdGVfaXJxJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBMb29uZ0FyY2ggS1ZNIGludGVycnVwdCBjb250cm9sbGVyIChlaW9pbnRjKSBsb2dpYyBieSBleHRyYWN0aW5nIGFuZCB1cGRhdGluZyB0aGUgSVAgbnVtYmVyIGNhbGN1bGF0aW9uIGludG8gYSBuZXcgZnVuY3Rpb24gYGVpb2ludGNfZ2V0X2lwbnVtYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgS1ZNIGlvY3Rscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNToyOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDgzNjk0YTBhZjA0MDgwN2RlNWJmY2Q4ZWVkMzU1N2FmYThiMWNkMDFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAwNToyOTowNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmNcbmluZGV4IDJiMTQ0ODVkMTRhNzA4Li5jMWUwY2Q4ZGNhMTZjZSAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jXG5AQCAtNywxNyAmIzQzOzcsMjcgQEBcbiAjaW5jbHVkZSBcdTAwM2Nhc20va3ZtX3ZjcHUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvdW50X3plcm9zLmhcdTAwM2VcbiBcbiYjNDM7c3RhdGljIGludCBlaW9pbnRjX2dldF9pcG51bShzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMsIGludCBpcnEpXG4mIzQzO3tcbiYjNDM7XHRpbnQgaXBudW0gPSAocy1cdTAwM2VpcG1hcCBcdTAwM2VcdTAwM2UgKGlycSAvIDMyICogOCkpIFx1MDAyNiAweGZmO1xuJiM0MztcbiYjNDM7XHRpZiAoIShzLVx1MDAzZXN0YXR1cyBcdTAwMjYgQklUKEVJT0lOVENfRU5BQkxFX0lOVF9FTkNPREUpKSkge1xuJiM0MztcdFx0aXBudW0gPSBjb3VudF90cmFpbGluZ196ZXJvcyhpcG51bSk7XG4mIzQzO1x0XHRpcG51bSA9IGlwbnVtIFx1MDAzYyA0ID8gaXBudW0gOiAwO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRpcG51bSA9IChpcG51bSBcdTAwM2MgTE9PTkdTT05fSVBfTlVNKSA/IGlwbnVtIDogMDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBpcG51bTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBlaW9pbnRjX3NldF9zd19jb3JlaXNyKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcylcbiB7XG4gXHRpbnQgaXBudW0sIGNwdSwgY3B1aWQsIGlycTtcbiBcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbiBcbiBcdGZvciAoaXJxID0gMDsgaXJxIFx1MDAzYyBFSU9JTlRDX0lSUVM7IGlycSYjNDM7JiM0MzspIHtcbi1cdFx0aXBudW0gPSAocy1cdTAwM2VpcG1hcCBcdTAwM2VcdTAwM2UgKGlycSAvIDMyICogOCkpIFx1MDAyNiAweGZmO1xuLVx0XHRpZiAoIShzLVx1MDAzZXN0YXR1cyBcdTAwMjYgQklUKEVJT0lOVENfRU5BQkxFX0lOVF9FTkNPREUpKSkge1xuLVx0XHRcdGlwbnVtID0gY291bnRfdHJhaWxpbmdfemVyb3MoaXBudW0pO1xuLVx0XHRcdGlwbnVtID0gaXBudW0gXHUwMDNjIDQgPyBpcG51bSA6IDA7XG4tXHRcdH1cbiYjNDM7XHRcdGlwbnVtID0gZWlvaW50Y19nZXRfaXBudW0ocywgaXJxKTtcbiBcbiBcdFx0Y3B1aWQgPSAoKHU4ICopcy1cdTAwM2Vjb3JlbWFwKVtpcnFdO1xuIFx0XHR2Y3B1ID0ga3ZtX2dldF92Y3B1X2J5X2NwdWlkKHMtXHUwMDNla3ZtLCBjcHVpZCk7XG5AQCAtMzgsMTEgJiM0Mzs0OCw3IEBAIHN0YXRpYyB2b2lkIGVpb2ludGNfdXBkYXRlX2lycShzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMsIGludCBpcnEsIGludCBsZXZlbClcbiBcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbiBcdHN0cnVjdCBrdm1faW50ZXJydXB0IHZjcHVfaXJxO1xuIFxuLVx0aXBudW0gPSAocy1cdTAwM2VpcG1hcCBcdTAwM2VcdTAwM2UgKGlycSAvIDMyICogOCkpIFx1MDAyNiAweGZmO1xuLVx0aWYgKCEocy1cdTAwM2VzdGF0dXMgXHUwMDI2IEJJVChFSU9JTlRDX0VOQUJMRV9JTlRfRU5DT0RFKSkpIHtcbi1cdFx0aXBudW0gPSBjb3VudF90cmFpbGluZ196ZXJvcyhpcG51bSk7XG4tXHRcdGlwbnVtID0gaXBudW0gXHUwMDNjIDQgPyBpcG51bSA6IDA7XG4tXHR9XG4mIzQzO1x0aXBudW0gPSBlaW9pbnRjX2dldF9pcG51bShzLCBpcnEpO1xuIFxuIFx0Y3B1ID0gcy1cdTAwM2Vzd19jb3JlbWFwW2lycV07XG4gXHR2Y3B1ID0ga3ZtX2dldF92Y3B1X2J5X2lkKHMtXHUwMDNla3ZtLCBjcHUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA1OjI5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Vpb2ludGNfZ2V0X2lwbnVtJiMzNDssCiAgICAmIzM0O2Vpb2ludGNfc2V0X3N3X2NvcmVpc3ImIzM0OywKICAgICYjMzQ7ZWlvaW50Y191cGRhdGVfaXJxJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBMb29uZ0FyY2ggS1ZNIGludGVycnVwdCBjb250cm9sbGVyIChlaW9pbnRjKSBsb2dpYyBieSBleHRyYWN0aW5nIGFuZCB1cGRhdGluZyB0aGUgSVAgbnVtYmVyIGNhbGN1bGF0aW9uIGludG8gYSBuZXcgZnVuY3Rpb24gYGVpb2ludGNfZ2V0X2lwbnVtYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgS1ZNIGlvY3Rscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODM2OTRhMGFmMDQwODA3ZGU1YmZjZDhlZWQzNTU3YWZhOGIxY2QwMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDE0IDA1OjI5OjA3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jCmluZGV4IDJiMTQ0ODVkMTRhNzA4Li5jMWUwY2Q4ZGNhMTZjZSAxMDA2NDQKLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYwpAQCAtNywxNyAmIzQzOzcsMjcgQEAKICNpbmNsdWRlICZsdDthc20va3ZtX3ZjcHUuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9jb3VudF96ZXJvcy5oJmd0OwogCiYjNDM7c3RhdGljIGludCBlaW9pbnRjX2dldF9pcG51bShzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMsIGludCBpcnEpCiYjNDM7ewomIzQzOwlpbnQgaXBudW0gPSAocy0mZ3Q7aXBtYXAgJmd0OyZndDsgKGlycSAvIDMyICogOCkpICZhbXA7IDB4ZmY7CiYjNDM7CiYjNDM7CWlmICghKHMtJmd0O3N0YXR1cyAmYW1wOyBCSVQoRUlPSU5UQ19FTkFCTEVfSU5UX0VOQ09ERSkpKSB7CiYjNDM7CQlpcG51bSA9IGNvdW50X3RyYWlsaW5nX3plcm9zKGlwbnVtKTsKJiM0MzsJCWlwbnVtID0gaXBudW0gJmx0OyA0ID8gaXBudW0gOiAwOwomIzQzOwl9IGVsc2UgewomIzQzOwkJaXBudW0gPSAoaXBudW0gJmx0OyBMT09OR1NPTl9JUF9OVU0pID8gaXBudW0gOiAwOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBpcG51bTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBlaW9pbnRjX3NldF9zd19jb3JlaXNyKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcykKIHsKIAlpbnQgaXBudW0sIGNwdSwgY3B1aWQsIGlycTsKIAlzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7CiAKIAlmb3IgKGlycSA9IDA7IGlycSAmbHQ7IEVJT0lOVENfSVJRUzsgaXJxJiM0MzsmIzQzOykgewotCQlpcG51bSA9IChzLSZndDtpcG1hcCAmZ3Q7Jmd0OyAoaXJxIC8gMzIgKiA4KSkgJmFtcDsgMHhmZjsKLQkJaWYgKCEocy0mZ3Q7c3RhdHVzICZhbXA7IEJJVChFSU9JTlRDX0VOQUJMRV9JTlRfRU5DT0RFKSkpIHsKLQkJCWlwbnVtID0gY291bnRfdHJhaWxpbmdfemVyb3MoaXBudW0pOwotCQkJaXBudW0gPSBpcG51bSAmbHQ7IDQgPyBpcG51bSA6IDA7Ci0JCX0KJiM0MzsJCWlwbnVtID0gZWlvaW50Y19nZXRfaXBudW0ocywgaXJxKTsKIAogCQljcHVpZCA9ICgodTggKilzLSZndDtjb3JlbWFwKVtpcnFdOwogCQl2Y3B1ID0ga3ZtX2dldF92Y3B1X2J5X2NwdWlkKHMtJmd0O2t2bSwgY3B1aWQpOwpAQCAtMzgsMTEgJiM0Mzs0OCw3IEBAIHN0YXRpYyB2b2lkIGVpb2ludGNfdXBkYXRlX2lycShzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMsIGludCBpcnEsIGludCBsZXZlbCkKIAlzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7CiAJc3RydWN0IGt2bV9pbnRlcnJ1cHQgdmNwdV9pcnE7CiAKLQlpcG51bSA9IChzLSZndDtpcG1hcCAmZ3Q7Jmd0OyAoaXJxIC8gMzIgKiA4KSkgJmFtcDsgMHhmZjsKLQlpZiAoIShzLSZndDtzdGF0dXMgJmFtcDsgQklUKEVJT0lOVENfRU5BQkxFX0lOVF9FTkNPREUpKSkgewotCQlpcG51bSA9IGNvdW50X3RyYWlsaW5nX3plcm9zKGlwbnVtKTsKLQkJaXBudW0gPSBpcG51bSAmbHQ7IDQgPyBpcG51bSA6IDA7Ci0JfQomIzQzOwlpcG51bSA9IGVpb2ludGNfZ2V0X2lwbnVtKHMsIGlycSk7CiAKIAljcHUgPSBzLSZndDtzd19jb3JlbWFwW2lycV07CiAJdmNwdSA9IGt2bV9nZXRfdmNwdV9ieV9pZChzLSZndDtrdm0sIGNwdSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA1OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MjAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0ODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTG9vbmdBcmNoIEtWTSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgTG9vbmdBcmNoIEtWTSBpbnRlcnJ1cHQgY29udHJvbGxlciBjb2RlLCBzcGVjaWZpY2FsbHkgYGFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgZXh0cmFjdGluZyBzb21lIGNvbW1vbiBsb2dpYyBpbnRvIGEgbmV3IGZ1bmN0aW9uLCBgZWlvaW50Y19nZXRfaXBudW1gLiAgVGhlcmUmIzM5O3MgYWxzbyBhIGNvbmRpdGlvbmFsIGNoZWNrIGJlaW5nIGFkZGVkIHdpdGhpbiB0aGUgYGVsc2VgIGJyYW5jaCwgYSBzYW5pdHkgY2hlY2sgb24gYGlwbnVtYCB0byBlbnN1cmUgaXQmIzM5O3Mgd2l0aGluIGV4cGVjdGVkIGJvdW5kcyBiYXNlZCBvbiBgTE9PTkdTT05fSVBfTlVNYC4KCk15IGZpcnN0IHRob3VnaHQgaXMgYWx3YXlzLCAmIzM0O0hvdyByZWFjaGFibGUgaXMgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyYjMzQ7IEl0JiMzOTtzIEtWTSBjb2RlLCBidXQgdGFyZ2V0ZWQgYXQgdGhlIExvb25nQXJjaCBhcmNoaXRlY3R1cmUsIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyB0aGUgZnV6emluZyBxdWVzdGlvbi4gQ2FuIFN5emthbGxlciByZWFjaCBpdD8gU3l6a2FsbGVyICpjYW4qIGZ1enogS1ZNLCBidXQgdGhlIHF1ZXN0aW9uIGJlY29tZXMgd2hldGhlciBpdCBjYW4gZG8gc28gKm9uKiBMb29uZ0FyY2guICBHZW5lcmFsbHksIG15IGV4cGVyaWVuY2UgaXMgd2l0aCB4ODZfNjQsIGFybTY0LCByaXNjdjY0IGFuZCBzMzkweCBpbnN0YW5jZXMsIHNvIEkgaGF2ZSB0byBwYXVzZSBhbmQgdGhpbmsuIERvZXMgU3l6a2FsbGVyIGV2ZW4gcnVuIG9uIExvb25nQXJjaD8KCkkga25vdyB0aGVyZSYjMzk7cyBubyBMb29uZ0FyY2ggaW5zdGFuY2UgaW4gdGhlIG1haW4gc3l6Ym90LCBidXQgSSBuZWVkIHRvIGJlIGNhcmVmdWwgYXNzdW1pbmcgdGhhdCBtZWFucyBpdCYjMzk7cyB1bnJlYWNoYWJsZS4gSXQgKmNvdWxkKiBleGlzdCBpbiBhIGRpZmZlcmVudCBzZXR1cCwgb3IgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZS4gIEhvd2V2ZXIsIHRoaXMgY2hhbmdlIHNheXMgdGhlIGNvZGUgcGF0aCBtYXkgbm90IGJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHN1Y2ggYXMgR0NFIG9yIFFFTVUsIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBCdXQsIExvb25nQXJjaCBLVk0gaXMgc3BlY2lmaWMgdG8gTG9vbmdBcmNoLiBJZiB3ZSBhcmUgb24geDg2XzY0LCB3ZSBjYW4mIzM5O3QgZnV6eiBMb29uZ0FyY2ggS1ZNLCBsb2dpY2FsbHkuCgpXYWl0LCB0aGUgbmV4dCBzdGVwIGlzIHRvIG1ha2Ugc3VyZSBvZiB0aGF0LCBhbmQgaXQgYXBwZWFycyBzeXprYWxsZXIgZG9lcyBzdXBwb3J0IGBsaW51eC9sb29uZ2FyY2g2NGAuICBTbyB0aGUgYXNzdW1wdGlvbiAqaXMqIHRoYXQgaXQgKmNhbiogYmUgZnV6emVkLCBhcyBsb25nIGFzIGEgTG9vbmdBcmNoIFZNIGlzIHByZXNlbnQuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQgd2l0aGluIGBhcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmNgLiBJdCYjMzk7cyBgZWlvaW50Y19zZXRfc3dfY29yZWlzcmAgYW5kIGBlaW9pbnRjX3VwZGF0ZV9pcnFgIGJlaW5nIGNoYW5nZWQsIGFsb25nIHdpdGggdGhlIG5ldyBgZWlvaW50Y19nZXRfaXBudW1gIGZ1bmN0aW9uLiBGaW5hbGx5LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2hlY2sgYGFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnYCB0byBjb25maXJtIEtWTSBzdXBwb3J0LCBwcm9iYWJseSB2aWEgYENPTkZJR19LVk1gLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA1OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMTktXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA1OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1ODkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIENvbnRleHQqKgoKT2theSwgc28gd2UmIzM5O3JlIHN0YXJ0aW5nIHdpdGggYENPTkZJR19LVk1gLiBUaGF0JiMzOTtzIG91ciBpbml0aWFsIGFuY2hvciBwb2ludCBpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gc3BhY2UuIE5vdywgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIHNlZSB3aGF0IHJlbGF0ZWQgY29uZmlndXJhdGlvbnMsIGRlcGVuZGVuY2llcywgb3IgcG90ZW50aWFsIGNvbmZsaWN0cyBleGlzdC4gVGhpcyBpc24mIzM5O3QganVzdCBhYm91dCB3aGV0aGVyIEtWTSBpcyBlbmFibGVkOyBpdCYjMzk7cyBhYm91dCB1bmRlcnN0YW5kaW5nIHRoZSBicm9hZGVyIHBpY3R1cmUuIEFyZSB0aGVyZSBhbnkgb3RoZXIgdmlydHVhbGl6YXRpb24tcmVsYXRlZCBmbGFncz8gV2hhdCBzdWJzeXN0ZW1zIGFyZSBjb25kaXRpb25hbGx5IGNvbXBpbGVkIGJhc2VkIG9uIGBDT05GSUdfS1ZNYD8gV2hhdCBvdGhlciBmZWF0dXJlIHNldHMgbWlnaHQgYmUgYXZhaWxhYmxlPyBXZSBuZWVkIHRvIG1hcCBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIHRvIGdldCBhIGZ1bGwgdmlldy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlaW9pbnRjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vTWFrZWZpbGU9MjE9a3ZtLXkgJiM0Mzs9IGludGMvZG1zaW50Yy5vXG5hcmNoL2xvb25nYXJjaC9rdm0vTWFrZWZpbGU6MjI6a3ZtLXkgJiM0Mzs9IGludGMvZWlvaW50Yy5vXG5hcmNoL2xvb25nYXJjaC9rdm0vTWFrZWZpbGUtMjMta3ZtLXkgJiM0Mzs9IGludGMvcGNoX3BpYy5vXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTUtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjojaW5jbHVkZSBcdTAwM2Nhc20va3ZtX2Vpb2ludGMuaFx1MDAzZVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTctI2luY2x1ZGUgXHUwMDNjYXNtL2t2bV92Y3B1LmhcdTAwM2Vcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtOS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoxMDpzdGF0aWMgaW50IGVpb2ludGNfZ2V0X2lwbnVtKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcywgaW50IGlycSlcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0xMS17XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTIzLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjI0OnN0YXRpYyB2b2lkIGVpb2ludGNfc2V0X3N3X2NvcmVpc3Ioc3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzKVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTI1LXtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjktXHRmb3IgKGlycSA9IDA7IGlycSBcdTAwM2MgRUlPSU5UQ19JUlFTOyBpcnEmIzQzOyYjNDM7KSB7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzA6XHRcdGlwbnVtID0gZWlvaW50Y19nZXRfaXBudW0ocywgaXJxKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zMS1cbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNDQtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NDU6c3RhdGljIHZvaWQgZWlvaW50Y191cGRhdGVfaXJxKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcywgaW50IGlycSwgaW50IGxldmVsKVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTQ2LXtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNTAtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NTE6XHRpcG51bSA9IGVpb2ludGNfZ2V0X2lwbnVtKHMsIGlycSk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNTItXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTc5LVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjgwOnN0YXRpYyBpbmxpbmUgdm9pZCBlaW9pbnRjX3VwZGF0ZV9zd19jb3JlbWFwKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcyxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy04MS1cdFx0XHRcdFx0aW50IGlycSwgdTY0IHZhbCwgdTMyIGxlbiwgYm9vbCBub3RpZnkpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTEwNC1cdFx0XHQvKiBsb3dlciBpcnEgYXQgb2xkIGNwdSBhbmQgcmFpc2UgaXJxIGF0IG5ldyBjcHUgKi9cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoxMDU6XHRcdFx0ZWlvaW50Y191cGRhdGVfaXJxKHMsIGlycSAmIzQzOyBpLCAwKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0xMDYtXHRcdFx0cy1cdTAwM2Vzd19jb3JlbWFwW2lycSAmIzQzOyBpXSA9IGNwdTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoxMDc6XHRcdFx0ZWlvaW50Y191cGRhdGVfaXJxKHMsIGlycSAmIzQzOyBpLCAxKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0xMDgtXHRcdH0gZWxzZSB7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTExMy1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoxMTQ6dm9pZCBlaW9pbnRjX3NldF9pcnEoc3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzLCBpbnQgaXJxLCBpbnQgbGV2ZWwpXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMTE1LXtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMTIwLVx0bGV2ZWwgPyBfX3NldF9iaXQoaXJxLCBpc3IpIDogX19jbGVhcl9iaXQoaXJxLCBpc3IpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjEyMTpcdGVpb2ludGNfdXBkYXRlX2lycShzLCBpcnEsIGxldmVsKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0xMjItXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0xMjQtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MTI1OnN0YXRpYyBpbnQgbG9vbmdhcmNoX2Vpb2ludGNfcmVhZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcyxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0xMjYtXHRcdFx0XHRncGFfdCBhZGRyLCB1bnNpZ25lZCBsb25nICp2YWwpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTE2NS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoxNjY6c3RhdGljIGludCBrdm1fZWlvaW50Y19yZWFkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0xNjctXHRcdFx0c3RydWN0IGt2bV9pb19kZXZpY2UgKmRldixcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMTcwLVx0dW5zaWduZWQgbG9uZyBmbGFncywgZGF0YSwgb2Zmc2V0O1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjE3MTpcdHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqZWlvaW50YyA9IHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2guZWlvaW50YztcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0xNzItXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MTczOlx0aWYgKCFlaW9pbnRjKSB7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MTc0Olx0XHRrdm1fZXJyKFwmIzM0OyVzOiBlaW9pbnRjIGlycWNoaXAgbm90IHZhbGlkIVxcblwmIzM0OywgX19mdW5jX18pO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTE3NS1cdFx0cmV0dXJuIDA7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTE3OC1cdGlmIChhZGRyIFx1MDAyNiAobGVuIC0gMSkpIHtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoxNzk6XHRcdGt2bV9lcnIoXCYjMzQ7JXM6IGVpb2ludGMgbm90IGFsaWduZWQgYWRkciAlbGx4IGxlbiAlZFxcblwmIzM0OywgX19mdW5jX18sIGFkZHIsIGxlbik7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMTgwLVx0XHRyZXR1cm4gMDtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMTg0LVx0YWRkciAtPSBvZmZzZXQ7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MTg1Olx0dmNwdS1cdTAwM2VzdGF0LmVpb2ludGNfcmVhZF9leGl0cyYjNDM7JiM0Mzs7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MTg2Olx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZWlvaW50Yy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MTg3Olx0bG9vbmdhcmNoX2Vpb2ludGNfcmVhZCh2Y3B1LCBlaW9pbnRjLCBhZGRyLCBcdTAwMjZkYXRhKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoxODg6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmVpb2ludGMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTE4OS1cbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjA4LVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjIwOTpzdGF0aWMgaW50IGxvb25nYXJjaF9laW9pbnRjX3dyaXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoyMTA6XHRcdFx0XHRzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMsXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjExLVx0XHRcdFx0Z3BhX3QgYWRkciwgdTY0IHZhbHVlLCB1NjQgZmllbGRfbWFzaylcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjQ5LVx0XHRcdGlycSA9IF9fZmZzKGRhdGEpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjI1MDpcdFx0XHRlaW9pbnRjX3VwZGF0ZV9pcnEocywgaXJxICYjNDM7IGluZGV4ICogNjQsIDEpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTI1MS1cdFx0XHRkYXRhIFx1MDAyNj0gfkJJVF9VTEwoaXJxKTtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjU5LVx0XHRcdGlycSA9IF9fZmZzKGRhdGEpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjI2MDpcdFx0XHRlaW9pbnRjX3VwZGF0ZV9pcnEocywgaXJxICYjNDM7IGluZGV4ICogNjQsIDApO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTI2MS1cdFx0XHRkYXRhIFx1MDAyNj0gfkJJVF9VTEwoaXJxKTtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjc5LVx0XHRcdGlycSA9IF9fZmZzKGRhdGEpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjI4MDpcdFx0XHRlaW9pbnRjX3VwZGF0ZV9pcnEocywgaXJxICYjNDM7IGluZGV4ICogNjQsIDApO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTI4MS1cdFx0XHRkYXRhIFx1MDAyNj0gfkJJVF9VTEwoaXJxKTtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjg4LVx0XHRkYXRhID0gcy1cdTAwM2Vjb3JlbWFwW2luZGV4XTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoyODk6XHRcdGVpb2ludGNfdXBkYXRlX3N3X2NvcmVtYXAocywgaW5kZXggKiA4LCBkYXRhLCBzaXplb2YoZGF0YSksIHRydWUpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTI5MC1cdFx0YnJlYWs7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTI5Ny1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoyOTg6c3RhdGljIGludCBrdm1fZWlvaW50Y193cml0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjk5LVx0XHRcdHN0cnVjdCBrdm1faW9fZGV2aWNlICpkZXYsXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMwMi1cdHVuc2lnbmVkIGxvbmcgZmxhZ3MsIHZhbHVlO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjMwMzpcdHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqZWlvaW50YyA9IHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2guZWlvaW50YztcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zMDQtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzA1Olx0aWYgKCFlaW9pbnRjKSB7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzA2Olx0XHRrdm1fZXJyKFwmIzM0OyVzOiBlaW9pbnRjIGlycWNoaXAgbm90IHZhbGlkIVxcblwmIzM0OywgX19mdW5jX18pO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMwNy1cdFx0cmV0dXJuIDA7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMxMC1cdGlmIChhZGRyIFx1MDAyNiAobGVuIC0gMSkpIHtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzozMTE6XHRcdGt2bV9lcnIoXCYjMzQ7JXM6IGVpb2ludGMgbm90IGFsaWduZWQgYWRkciAlbGx4IGxlbiAlZFxcblwmIzM0OywgX19mdW5jX18sIGFkZHIsIGxlbik7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzEyLVx0XHRyZXR1cm4gMDtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzE0LVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjMxNTpcdHZjcHUtXHUwMDNlc3RhdC5laW9pbnRjX3dyaXRlX2V4aXRzJiM0MzsmIzQzOztcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzozMTY6XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZlaW9pbnRjLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zMTctXHRzd2l0Y2ggKGxlbikge1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zMTktXHRcdHZhbHVlID0gKih1bnNpZ25lZCBjaGFyICopdmFsO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjMyMDpcdFx0bG9vbmdhcmNoX2Vpb2ludGNfd3JpdGUodmNwdSwgZWlvaW50YywgYWRkciwgdmFsdWUsIDB4RkYpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMyMS1cdFx0YnJlYWs7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMyMy1cdFx0dmFsdWUgPSAqKHVuc2lnbmVkIHNob3J0ICopdmFsO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjMyNDpcdFx0bG9vbmdhcmNoX2Vpb2ludGNfd3JpdGUodmNwdSwgZWlvaW50YywgYWRkciwgdmFsdWUsIFVTSFJUX01BWCk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzI1LVx0XHRicmVhaztcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzI3LVx0XHR2YWx1ZSA9ICoodW5zaWduZWQgaW50ICopdmFsO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjMyODpcdFx0bG9vbmdhcmNoX2Vpb2ludGNfd3JpdGUodmNwdSwgZWlvaW50YywgYWRkciwgdmFsdWUsIFVJTlRfTUFYKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zMjktXHRcdGJyZWFrO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zMzEtXHRcdHZhbHVlID0gKih1bnNpZ25lZCBsb25nICopdmFsO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjMzMjpcdFx0bG9vbmdhcmNoX2Vpb2ludGNfd3JpdGUodmNwdSwgZWlvaW50YywgYWRkciwgdmFsdWUsIFVMT05HX01BWCk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzMzLVx0XHRicmVhaztcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zMzQtXHR9XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzM1Olx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZlaW9pbnRjLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zMzYtXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMzOS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzozNDA6c3RhdGljIGNvbnN0IHN0cnVjdCBrdm1faW9fZGV2aWNlX29wcyBrdm1fZWlvaW50Y19vcHMgPSB7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzQxOlx0LnJlYWRcdD0ga3ZtX2Vpb2ludGNfcmVhZCxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzozNDI6XHQud3JpdGVcdD0ga3ZtX2Vpb2ludGNfd3JpdGUsXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzQzLX07XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzQ0LVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjM0NTpzdGF0aWMgaW50IGt2bV9laW9pbnRjX3ZpcnRfcmVhZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzQ2LVx0XHRcdFx0c3RydWN0IGt2bV9pb19kZXZpY2UgKmRldixcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzUwLVx0dTMyICpkYXRhID0gdmFsO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjM1MTpcdHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqZWlvaW50YyA9IHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2guZWlvaW50YztcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zNTItXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzUzOlx0aWYgKCFlaW9pbnRjKSB7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzU0Olx0XHRrdm1fZXJyKFwmIzM0OyVzOiBlaW9pbnRjIGlycWNoaXAgbm90IHZhbGlkIVxcblwmIzM0OywgX19mdW5jX18pO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM1NS1cdFx0cmV0dXJuIDA7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM1OC1cdGFkZHIgLT0gRUlPSU5UQ19WSVJUX0JBU0U7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzU5Olx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZWlvaW50Yy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzYwLVx0c3dpdGNoIChhZGRyKSB7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzYxLVx0Y2FzZSBFSU9JTlRDX1ZJUlRfRkVBVFVSRVM6XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzYyOlx0XHQqZGF0YSA9IGVpb2ludGMtXHUwMDNlZmVhdHVyZXM7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzYzLVx0XHRicmVhaztcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zNjQtXHRjYXNlIEVJT0lOVENfVklSVF9DT05GSUc6XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzY1Olx0XHQqZGF0YSA9IGVpb2ludGMtXHUwMDNlc3RhdHVzO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM2Ni1cdFx0YnJlYWs7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM2OS1cdH1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzozNzA6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmVpb2ludGMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM3MS1cbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzc0LVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjM3NTpzdGF0aWMgaW50IGt2bV9laW9pbnRjX3ZpcnRfd3JpdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM3Ni1cdFx0XHRcdHN0cnVjdCBrdm1faW9fZGV2aWNlICpkZXYsXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM4MC1cdHUzMiB2YWx1ZSA9ICoodTMyICopdmFsO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjM4MTpcdHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqZWlvaW50YyA9IHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2guZWlvaW50YztcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zODItXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzgzOlx0aWYgKCFlaW9pbnRjKSB7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Mzg0Olx0XHRrdm1fZXJyKFwmIzM0OyVzOiBlaW9pbnRjIGlycWNoaXAgbm90IHZhbGlkIVxcblwmIzM0OywgX19mdW5jX18pO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM4NS1cdFx0cmV0dXJuIDA7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM4OC1cdGFkZHIgLT0gRUlPSU5UQ19WSVJUX0JBU0U7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Mzg5Olx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZWlvaW50Yy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzkwLVx0c3dpdGNoIChhZGRyKSB7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM5NC1cdFx0LypcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzozOTU6XHRcdCAqIGVpb2ludGMgZmVhdHVyZXMgY2FuIG9ubHkgYmUgc2V0IGF0IGRpc2FibGVkIHN0YXR1c1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM5Ni1cdFx0ICovXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Mzk3Olx0XHRpZiAoKGVpb2ludGMtXHUwMDNlc3RhdHVzIFx1MDAyNiBCSVQoRUlPSU5UQ19FTkFCTEUpKSBcdTAwMjZcdTAwMjYgdmFsdWUpIHtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zOTgtXHRcdFx0YnJlYWs7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzk5LVx0XHR9XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NDAwOlx0XHRlaW9pbnRjLVx1MDAzZXN0YXR1cyA9IHZhbHVlIFx1MDAyNiBlaW9pbnRjLVx1MDAzZWZlYXR1cmVzO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTQwMS1cdFx0YnJlYWs7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTQwNC1cdH1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo0MDU6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmVpb2ludGMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTQwNi1cbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNDA5LVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjQxMDpzdGF0aWMgY29uc3Qgc3RydWN0IGt2bV9pb19kZXZpY2Vfb3BzIGt2bV9laW9pbnRjX3ZpcnRfb3BzID0ge1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjQxMTpcdC5yZWFkXHQ9IGt2bV9laW9pbnRjX3ZpcnRfcmVhZCxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo0MTI6XHQud3JpdGVcdD0ga3ZtX2Vpb2ludGNfdmlydF93cml0ZSxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00MTMtfTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00MTQtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NDE1OnN0YXRpYyBpbnQga3ZtX2Vpb2ludGNfY3RybF9hY2Nlc3Moc3RydWN0IGt2bV9kZXZpY2UgKmRldixcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00MTYtXHRcdFx0XHRcdHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTQyMi1cdHZvaWQgX191c2VyICpkYXRhO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjQyMzpcdHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcyA9IGRldi1cdTAwM2Vrdm0tXHUwMDNlYXJjaC5laW9pbnRjO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTQyNC1cbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNDQ5LVx0Y2FzZSBLVk1fREVWX0xPT05HQVJDSF9FWFRJT0lfQ1RSTF9MT0FEX0ZJTklTSEVEOlxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjQ1MDpcdFx0ZWlvaW50Y19zZXRfc3dfY29yZWlzcihzKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00NTEtXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIChFSU9JTlRDX0lSUVMgLyA4KTsgaSYjNDM7JiM0MzspIHtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00NTItXHRcdFx0c3RhcnRfaXJxID0gaSAqIDg7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NDUzOlx0XHRcdGVpb2ludGNfdXBkYXRlX3N3X2NvcmVtYXAocywgc3RhcnRfaXJxLFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTQ1NC1cdFx0XHRcdFx0cy1cdTAwM2Vjb3JlbWFwW2ldLCBzaXplb2YodTY0KSwgZmFsc2UpO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00NjQtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NDY1OnN0YXRpYyBpbnQga3ZtX2Vpb2ludGNfcmVnc19hY2Nlc3Moc3RydWN0IGt2bV9kZXZpY2UgKmRldixcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00NjYtXHRcdFx0XHRcdHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIsXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTQ3MS1cdHZvaWQgKnAgPSBOVUxMO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjQ3MjpcdHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcztcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00NzMtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NDc0Olx0cyA9IGRldi1cdTAwM2Vrdm0tXHUwMDNlYXJjaC5laW9pbnRjO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTQ3NS1cdGFkZHIgPSBhdHRyLVx1MDAzZWF0dHI7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTUxMC1cdGRlZmF1bHQ6XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NTExOlx0XHRrdm1fZXJyKFwmIzM0OyVzOiB1bmtub3duIGVpb2ludGMgcmVnaXN0ZXIsIGFkZHIgPSAlZFxcblwmIzM0OywgX19mdW5jX18sIGFkZHIpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTUxMi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTUyNC1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo1MjU6c3RhdGljIGludCBrdm1fZWlvaW50Y19zd19zdGF0dXNfYWNjZXNzKHN0cnVjdCBrdm1fZGV2aWNlICpkZXYsXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNTI2LVx0XHRcdFx0XHRzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyLFxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy01MzEtXHR2b2lkICpwID0gTlVMTDtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo1MzI6XHRzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnM7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNTMzLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjUzNDpcdHMgPSBkZXYtXHUwMDNla3ZtLVx1MDAzZWFyY2guZWlvaW50YztcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy01MzUtXHRhZGRyID0gYXR0ci1cdTAwM2VhdHRyO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy01NTQtXHRkZWZhdWx0OlxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjU1NTpcdFx0a3ZtX2VycihcJiMzNDslczogdW5rbm93biBlaW9pbnRjIHJlZ2lzdGVyLCBhZGRyID0gJWRcXG5cJiMzNDssIF9fZnVuY19fLCBhZGRyKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy01NTYtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy01NjctXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NTY4OnN0YXRpYyBpbnQga3ZtX2Vpb2ludGNfZ2V0X2F0dHIoc3RydWN0IGt2bV9kZXZpY2UgKmRldixcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy01NjktXHRcdFx0XHRzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy01NzQtXHRjYXNlIEtWTV9ERVZfTE9PTkdBUkNIX0VYVElPSV9HUlBfUkVHUzpcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo1NzU6XHRcdHJldCA9IGt2bV9laW9pbnRjX3JlZ3NfYWNjZXNzKGRldiwgYXR0ciwgZmFsc2UsIFx1MDAyNmRhdGEpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTU3Ni1cdFx0aWYgKHJldClcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNTgzLVx0Y2FzZSBLVk1fREVWX0xPT05HQVJDSF9FWFRJT0lfR1JQX1NXX1NUQVRVUzpcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo1ODQ6XHRcdHJldCA9IGt2bV9laW9pbnRjX3N3X3N0YXR1c19hY2Nlc3MoZGV2LCBhdHRyLCBmYWxzZSwgXHUwMDI2ZGF0YSk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNTg1LVx0XHRpZiAocmV0KVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy01OTYtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NTk3OnN0YXRpYyBpbnQga3ZtX2Vpb2ludGNfc2V0X2F0dHIoc3RydWN0IGt2bV9kZXZpY2UgKmRldixcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy01OTgtXHRcdFx0XHRzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MDMtXHRjYXNlIEtWTV9ERVZfTE9PTkdBUkNIX0VYVElPSV9HUlBfQ1RSTDpcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2MDQ6XHRcdHJldHVybiBrdm1fZWlvaW50Y19jdHJsX2FjY2VzcyhkZXYsIGF0dHIpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTYwNS1cdGNhc2UgS1ZNX0RFVl9MT09OR0FSQ0hfRVhUSU9JX0dSUF9SRUdTOlxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MDgtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjA5Olx0XHRyZXR1cm4ga3ZtX2Vpb2ludGNfcmVnc19hY2Nlc3MoZGV2LCBhdHRyLCB0cnVlLCBcdTAwMjZkYXRhKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MTAtXHRjYXNlIEtWTV9ERVZfTE9PTkdBUkNIX0VYVElPSV9HUlBfU1dfU1RBVFVTOlxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MTMtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjE0Olx0XHRyZXR1cm4ga3ZtX2Vpb2ludGNfc3dfc3RhdHVzX2FjY2VzcyhkZXYsIGF0dHIsIHRydWUsIFx1MDAyNmRhdGEpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTYxNS1cdGRlZmF1bHQ6XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTYxOS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2MjA6c3RhdGljIGludCBrdm1fZWlvaW50Y19jcmVhdGUoc3RydWN0IGt2bV9kZXZpY2UgKmRldiwgdTMyIHR5cGUpXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjIxLXtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MjItXHRpbnQgcmV0O1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjYyMzpcdHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcztcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MjQtXHRzdHJ1Y3Qga3ZtX2lvX2RldmljZSAqZGV2aWNlO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MjYtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjI3Olx0LyogZWlvaW50YyBoYXMgYmVlbiBjcmVhdGVkICovXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjI4Olx0aWYgKGt2bS1cdTAwM2VhcmNoLmVpb2ludGMpXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjI5LVx0XHRyZXR1cm4gLUVJTlZBTDtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MzAtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjMxOlx0cyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50Yyk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjMyLVx0aWYgKCFzKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02NDEtXHRkZXZpY2UgPSBcdTAwMjZzLVx1MDAzZWRldmljZTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2NDI6XHRrdm1faW9kZXZpY2VfaW5pdChkZXZpY2UsIFx1MDAyNmt2bV9laW9pbnRjX29wcyk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjQzLVx0bXV0ZXhfbG9jayhcdTAwMjZrdm0tXHUwMDNlc2xvdHNfbG9jayk7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY1Mi1cdGRldmljZSA9IFx1MDAyNnMtXHUwMDNlZGV2aWNlX3ZleHQ7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjUzOlx0a3ZtX2lvZGV2aWNlX2luaXQoZGV2aWNlLCBcdTAwMjZrdm1fZWlvaW50Y192aXJ0X29wcyk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjU0LVx0bXV0ZXhfbG9jayhcdTAwMjZrdm0tXHUwMDNlc2xvdHNfbG9jayk7XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY2NC1cdH1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2NjU6XHRrdm0tXHUwMDNlYXJjaC5laW9pbnRjID0gcztcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02NjYtXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY2OS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2NzA6c3RhdGljIHZvaWQga3ZtX2Vpb2ludGNfZGVzdHJveShzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2KVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY3MS17XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjcyLVx0c3RydWN0IGt2bSAqa3ZtO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjY3MzpcdHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqZWlvaW50YztcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02NzQtXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Njc1Olx0aWYgKCFkZXYgfHwgIWRldi1cdTAwM2Vrdm0gfHwgIWRldi1cdTAwM2Vrdm0tXHUwMDNlYXJjaC5laW9pbnRjKVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY3Ni1cdFx0cmV0dXJuO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02NzgtXHRrdm0gPSBkZXYtXHUwMDNla3ZtO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjY3OTpcdGVpb2ludGMgPSBrdm0tXHUwMDNlYXJjaC5laW9pbnRjO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY4MC1cdG11dGV4X2xvY2soXHUwMDI2a3ZtLVx1MDAzZXNsb3RzX2xvY2spO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjY4MTpcdGt2bV9pb19idXNfdW5yZWdpc3Rlcl9kZXYoa3ZtLCBLVk1fSU9DU1JfQlVTLCBcdTAwMjZlaW9pbnRjLVx1MDAzZWRldmljZSk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjgyOlx0a3ZtX2lvX2J1c191bnJlZ2lzdGVyX2Rldihrdm0sIEtWTV9JT0NTUl9CVVMsIFx1MDAyNmVpb2ludGMtXHUwMDNlZGV2aWNlX3ZleHQpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY4My1cdG11dGV4X3VubG9jayhcdTAwMjZrdm0tXHUwMDNlc2xvdHNfbG9jayk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Njg0Olx0a2ZyZWUoZWlvaW50Yyk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjg1LVx0a2ZyZWUoZGV2KTtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjg3LVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjY4ODpzdGF0aWMgc3RydWN0IGt2bV9kZXZpY2Vfb3BzIGt2bV9laW9pbnRjX2Rldl9vcHMgPSB7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Njg5Olx0Lm5hbWUgPSBcJiMzNDtrdm0tbG9vbmdhcmNoLWVpb2ludGNcJiMzNDssXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjkwOlx0LmNyZWF0ZSA9IGt2bV9laW9pbnRjX2NyZWF0ZSxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2OTE6XHQuZGVzdHJveSA9IGt2bV9laW9pbnRjX2Rlc3Ryb3ksXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjkyOlx0LnNldF9hdHRyID0ga3ZtX2Vpb2ludGNfc2V0X2F0dHIsXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjkzOlx0LmdldF9hdHRyID0ga3ZtX2Vpb2ludGNfZ2V0X2F0dHIsXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjk0LX07XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjk1LVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjY5NjppbnQga3ZtX2xvb25nYXJjaF9yZWdpc3Rlcl9laW9pbnRjX2RldmljZSh2b2lkKVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY5Ny17XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Njk4Olx0cmV0dXJuIGt2bV9yZWdpc3Rlcl9kZXZpY2Vfb3BzKFx1MDAyNmt2bV9laW9pbnRjX2Rldl9vcHMsIEtWTV9ERVZfVFlQRV9MT09OR0FSQ0hfRUlPSU5UQyk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjk5LX1cbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmMtNi0jaW5jbHVkZSBcdTAwM2Nhc20va3ZtX2Rtc2ludGMuaFx1MDAzZVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jOjc6I2luY2x1ZGUgXHUwMDNjYXNtL2t2bV9laW9pbnRjLmhcdTAwM2VcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy04LSNpbmNsdWRlIFx1MDAzY2FzbS9rdm1fcGNoX3BpYy5oXHUwMDNlXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jLTExLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jOjEyOi8qIHVwZGF0ZSB0aGUgaXNyIGFjY29yZGluZyB0byBpcnEgbGV2ZWwgYW5kIHJvdXRlIGlycSB0byBlaW9pbnRjICovXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmMtMTMtc3RhdGljIHZvaWQgcGNoX3BpY191cGRhdGVfaXJxKHN0cnVjdCBsb29uZ2FyY2hfcGNoX3BpYyAqcywgaW50IGlycSwgaW50IGxldmVsKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy0xNy1cdC8qXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmM6MTg6XHQgKiBzZXQgaXNyIGFuZCByb3V0ZSBpcnEgdG8gZWlvaW50YyBhbmRcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy0xOS1cdCAqIHRoZSByb3V0ZSB0YWJsZSBpcyBpbiBodG1zaV92ZWN0b3JbXVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy0yNC1cdFx0XHRpcnEgPSBzLVx1MDAzZWh0bXNpX3ZlY3RvcltpcnFdO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jOjI1Olx0XHRcdGVpb2ludGNfc2V0X2lycShzLVx1MDAzZWt2bS1cdTAwM2VhcmNoLmVpb2ludGMsIGlycSwgbGV2ZWwpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jLTI2LVx0XHR9XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jLTMwLVx0XHRcdGlycSA9IHMtXHUwMDNlaHRtc2lfdmVjdG9yW2lycV07XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmM6MzE6XHRcdFx0ZWlvaW50Y19zZXRfaXJxKHMtXHUwMDNla3ZtLVx1MDAzZWFyY2guZWlvaW50YywgaXJxLCBsZXZlbCk7XG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmMtMzItXHRcdH1cbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmM9NzE9aW50IHBjaF9tc2lfc2V0X2lycShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplLCBpbnQgbGV2ZWwpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jLTgwLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jOjgxOlx0ZWlvaW50Y19zZXRfaXJxKGt2bS1cdTAwM2VhcmNoLmVpb2ludGMsIGUtXHUwMDNlbXNpLmRhdGEsIGxldmVsKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy04Mi1cbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmM9ODY9c3RhdGljIGludCBsb29uZ2FyY2hfcGNoX3BpY19yZWFkKHN0cnVjdCBsb29uZ2FyY2hfcGNoX3BpYyAqcywgZ3BhX3QgYWRkciwgaW50IGxlbiwgdm9pZCAqdmFsKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy0xMTUtXHRjYXNlIFBDSF9QSUNfUk9VVEVfRU5UUllfU1RBUlQgLi4uIFBDSF9QSUNfUk9VVEVfRU5UUllfRU5EOlxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jOjExNjpcdFx0Lyogb25seSByb3V0ZSB0byBpbnQwOiBlaW9pbnRjICovXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmMtMTE3LVx0XHRwdGVtcCA9IHMtXHUwMDNlcm91dGVfZW50cnkgJiM0MzsgKG9mZnNldCAtIFBDSF9QSUNfUk9VVEVfRU5UUllfU1RBUlQpO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMtMTItI2luY2x1ZGUgXHUwMDNjYXNtL2t2bV9jc3IuaFx1MDAzZVxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYzoxMzojaW5jbHVkZSBcdTAwM2Nhc20va3ZtX2Vpb2ludGMuaFx1MDAzZVxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYy0xNC0jaW5jbHVkZSBcdTAwM2Nhc20va3ZtX3BjaF9waWMuaFx1MDAzZVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmM9MzUwPXN0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9lbnZfaW5pdCh2b2lkKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMtMzkwLVx0LyogUmVnaXN0ZXIgTG9vbmdBcmNoIEVJT0lOVEMgaW50ZXJydXB0IGNvbnRyb2xsZXIgaW50ZXJmYWNlLiAqL1xuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYzozOTE6XHRyZXQgPSBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKCk7XG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jLTM5Mi1cdGlmIChyZXQpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz0xNz1jb25zdCBzdHJ1Y3Qga3ZtX3N0YXRzX2Rlc2Mga3ZtX3ZjcHVfc3RhdHNfZGVzY1tdID0ge1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMjUtXHRTVEFUU19ERVNDX0NPVU5URVIoVkNQVSwgaXBpX3dyaXRlX2V4aXRzKSxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MjY6XHRTVEFUU19ERVNDX0NPVU5URVIoVkNQVSwgZWlvaW50Y19yZWFkX2V4aXRzKSxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6Mjc6XHRTVEFUU19ERVNDX0NPVU5URVIoVkNQVSwgZWlvaW50Y193cml0ZV9leGl0cyksXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTI4LVx0U1RBVFNfREVTQ19DT1VOVEVSKFZDUFUsIHBjaF9waWNfcmVhZF9leGl0cyksXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmMtOS0jaW5jbHVkZSBcdTAwM2Nhc20va3ZtX2Nzci5oXHUwMDNlXG5hcmNoL2xvb25nYXJjaC9rdm0vdm0uYzoxMDojaW5jbHVkZSBcdTAwM2Nhc20va3ZtX2Vpb2ludGMuaFx1MDAzZVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmMtMTEtI2luY2x1ZGUgXHUwMDNjYXNtL2t2bV9wY2hfcGljLmhcdTAwM2Vcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdm0uYz0yMDk9Ym9vbCBrdm1fYXJjaF9pcnFjaGlwX2luX2tlcm5lbChzdHJ1Y3Qga3ZtICprdm0pXG5hcmNoL2xvb25nYXJjaC9rdm0vdm0uYy0yMTAte1xuYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmM6MjExOlx0cmV0dXJuIChrdm0tXHUwMDNlYXJjaC5pcGkgXHUwMDI2XHUwMDI2IGt2bS1cdTAwM2VhcmNoLmVpb2ludGMgXHUwMDI2XHUwMDI2IGt2bS1cdTAwM2VhcmNoLnBjaF9waWMpO1xuYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmMtMjEyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwNToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDg1NAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNIENvbmZpZ3VyYXRpb24gYW5kIEFzc29jaWF0ZWQgRnVuY3Rpb25zKioKCk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gSSYjMzk7bSB3b3JraW5nIHdpdGggaXMgY2xlYXJseSBgS1ZNYC4gR290IGl0LiBOb3csIGl0IGxvb2tzIGxpa2UgSSYjMzk7dmUgYmVlbiBtb2RpZnlpbmcgc29tZSBmdW5jdGlvbnM6IHNwZWNpZmljYWxseSBgZWlvaW50Y19zZXRfc3dfY29yZWlzcmAgYW5kIGBlaW9pbnRjX3VwZGF0ZV9pcnFgLiBUaGVyZSYjMzk7cyBhbHNvIHRoaXMgbmV3IGZ1bmN0aW9uLCBgZWlvaW50Y19nZXRfaXBudW1gLCB3aGljaCBoYXMgYmVlbiBhZGRlZC4gTWFrZXMgc2Vuc2UuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBjaGFuZ2VzIGluIHJlbGF0aW9uIHRvIHRoZSBicm9hZGVyIGFyY2hpdGVjdHVyZS4KCkJlZm9yZSBJIGdvIGZ1cnRoZXIsIEkgc2hvdWxkIHZlcmlmeSB0aGF0IGBLVk1gIGlzIHRoZSBvbmx5IHJlbGV2YW50IGNvbmZpZyBoZXJlLiBKdXN0IHRvIGJlIHN1cmUsIGxldCYjMzk7cyB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGF0IGBhcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBzdXJlIEkmIzM5O3ZlIGFscmVhZHkgY2hlY2tlZCBpdCwgYnV0IGEgcXVpY2sgZG91YmxlLWNoZWNrIGNhbiYjMzk7dCBodXJ0IGFuZCBpdCYjMzk7bGwgaGVscCByZWluZm9yY2UgdGhlIGNvbnRleHQuIE5vIHBvaW50IGluIG1ha2luZyBhc3N1bXB0aW9ucyB3aGVuIGEgcXVpY2sgdmVyaWZpY2F0aW9uIGlzIHBvc3NpYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA1OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIEtWTSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdHNvdXJjZSBcJiMzNDt2aXJ0L2t2bS9LY29uZmlnXCYjMzQ7XG4gICA3Olx0XG4gICA4Olx0bWVudWNvbmZpZyBWSVJUVUFMSVpBVElPTlxuICAgOTpcdFx0Ym9vbCBcJiMzNDtWaXJ0dWFsaXphdGlvblwmIzM0O1xuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBTYXkgWSBoZXJlIHRvIGdldCB0byBzZWUgb3B0aW9ucyBmb3IgdXNpbmcgeW91ciBMaW51eCBob3N0IHRvIHJ1blxuICAxMjpcdFx0ICBvdGhlciBvcGVyYXRpbmcgc3lzdGVtcyBpbnNpZGUgdmlydHVhbCBtYWNoaW5lcyAoZ3Vlc3RzKS5cbiAgMTM6XHRcdCAgVGhpcyBvcHRpb24gYWxvbmUgZG9lcyBub3QgYWRkIGFueSBrZXJuZWwgY29kZS5cbiAgMTQ6XHRcbiAgMTU6XHRcdCAgSWYgeW91IHNheSBOLCBhbGwgb3B0aW9ucyBpbiB0aGlzIHN1Ym1lbnUgd2lsbCBiZSBza2lwcGVkIGFuZFxuICAxNjpcdFx0ICBkaXNhYmxlZC5cbiAgMTc6XHRcbiAgMTg6XHRpZiBWSVJUVUFMSVpBVElPTlxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBLVk1cbiAgMjE6XHRcdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuICAyMjpcdFx0ZGVwZW5kcyBvbiBBU19IQVNfTFZaX0VYVEVOU0lPTiBcdTAwMjZcdTAwMjYgNjRCSVRcbiAgMjM6XHRcdHNlbGVjdCBIQVZFX0tWTV9ESVJUWV9SSU5HX0FDUV9SRUxcbiAgMjQ6XHRcdHNlbGVjdCBIQVZFX0tWTV9JUlFfUk9VVElOR1xuICAyNTpcdFx0c2VsZWN0IEhBVkVfS1ZNX0lSUUNISVBcbiAgMjY6XHRcdHNlbGVjdCBIQVZFX0tWTV9NU0lcbiAgMjc6XHRcdHNlbGVjdCBIQVZFX0tWTV9SRUFET05MWV9NRU1cbiAgMjg6XHRcdHNlbGVjdCBLVk1fQ09NTU9OXG4gIDI5Olx0XHRzZWxlY3QgS1ZNX0dFTkVSSUNfRElSVFlMT0dfUkVBRF9QUk9URUNUXG4gIDMwOlx0XHRzZWxlY3QgS1ZNX0dFTkVSSUNfSEFSRFdBUkVfRU5BQkxJTkdcbiAgMzE6XHRcdHNlbGVjdCBLVk1fTU1JT1xuICAzMjpcdFx0c2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLXG4gIDMzOlx0XHRzZWxlY3QgU0NIRURfSU5GT1xuICAzNDpcdFx0c2VsZWN0IEdVRVNUX1BFUkZfRVZFTlRTIGlmIFBFUkZfRVZFTlRTXG4gIDM1Olx0XHRoZWxwXG4gIDM2Olx0XHQgIFN1cHBvcnQgaG9zdGluZyB2aXJ0dWFsaXplZCBndWVzdCBtYWNoaW5lcyB1c2luZ1xuICAzNzpcdFx0ICBoYXJkd2FyZSB2aXJ0dWFsaXphdGlvbiBleHRlbnNpb25zLiBZb3Ugd2lsbCBuZWVkXG4gIDM4Olx0XHQgIGEgcHJvY2Vzc29yIGVxdWlwcGVkIHdpdGggdmlydHVhbGl6YXRpb24gZXh0ZW5zaW9ucy5cbiAgMzk6XHRcbiAgNDA6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNDE6XHRcbiAgNDI6XHRlbmRpZiAjIFZJUlRVQUxJWkFUSU9OXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDU6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU3MjkKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gTG9vbmdBcmNoIEtWTSBJbnRlcnJ1cHQgQ29udHJvbGxlciBGdW5jdGlvbnMqKgoKT2theSwgc28gaXQgbG9va3MgbGlrZSBgS1ZNYCBpcyB0aGUgb25seSBjb25maWd1cmF0aW9uIG9wdGlvbiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhlcmUsIHdoaWNoIHNpbXBsaWZpZXMgdGhpbmdzLiBUaGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhpcyBhcmNoaXRlY3R1cmUgaXMgdGhyb3VnaCB0aGUgS1ZNIGlvY3RscyBmb3IgTG9vbmdBcmNoLCByaWdodD8gTXkgaW5pdGlhbCBndXQgZmVlbGluZyBpcyB0aGF0IGBlaW9pbnRjX3NldF9zd19jb3JlaXNyYCBhbmQgYGVpb2ludGNfdXBkYXRlX2lycWAgYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCBkZW1hbmQgdGhlIG1vc3QgYXR0ZW50aW9uLiBXYWl0IGEgc2Vjb25kLi4uIGlzbiYjMzk7dCBgZWlvaW50Y19nZXRfaXBudW1gIGEgc3RhdGljIGZ1bmN0aW9uPyBUaGF0IGNvdWxkIGJlIGltcG9ydGFudCB0b28uIFllcCwgSSB0aGluayB0aGF0JiMzOTtzIHRoZSByZWFsIG5ldyBmdW5jdGlvbi4KCkFscmlnaHQsIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIGBhcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmNgIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGVpb2ludGNfc2V0X3N3X2NvcmVpc3JgIGFuZCBgZWlvaW50Y191cGRhdGVfaXJxYCwgYnV0IGVzcGVjaWFsbHkgYGVpb2ludGNfZ2V0X2lwbnVtYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdCBhbmQgaG93IHRoZXkgYXJlIGxldmVyYWdlZCBieSBLVk0gdG8gbWFuYWdlIGludGVycnVwdHMgb24gdGhpcyBwbGF0Zm9ybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDU6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQvKlxuICAgMzpcdCAqIENvcHlyaWdodCAoQykgMjAyNCBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uIExpbWl0ZWRcbiAgIDQ6XHQgKi9cbiAgIDU6XHRcbiAgIDY6XHQjaW5jbHVkZSBcdTAwM2Nhc20va3ZtX2Vpb2ludGMuaFx1MDAzZVxuICAgNzpcdCNpbmNsdWRlIFx1MDAzY2FzbS9rdm1fdmNwdS5oXHUwMDNlXG4gICA4Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvY291bnRfemVyb3MuaFx1MDAzZVxuICAgOTpcdFxuICAxMDpcdHN0YXRpYyBpbnQgZWlvaW50Y19nZXRfaXBudW0oc3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzLCBpbnQgaXJxKVxuICAxMTpcdHtcbiAgMTI6XHRcdGludCBpcG51bSA9IChzLVx1MDAzZWlwbWFwIFx1MDAzZVx1MDAzZSAoaXJxIC8gMzIgKiA4KSkgXHUwMDI2IDB4ZmY7XG4gIDEzOlx0XG4gIDE0Olx0XHRpZiAoIShzLVx1MDAzZXN0YXR1cyBcdTAwMjYgQklUKEVJT0lOVENfRU5BQkxFX0lOVF9FTkNPREUpKSkge1xuICAxNTpcdFx0XHRpcG51bSA9IGNvdW50X3RyYWlsaW5nX3plcm9zKGlwbnVtKTtcbiAgMTY6XHRcdFx0aXBudW0gPSBpcG51bSBcdTAwM2MgNCA/IGlwbnVtIDogMDtcbiAgMTc6XHRcdH0gZWxzZSB7XG4gIDE4Olx0XHRcdGlwbnVtID0gKGlwbnVtIFx1MDAzYyBMT09OR1NPTl9JUF9OVU0pID8gaXBudW0gOiAwO1xuICAxOTpcdFx0fVxuICAyMDpcdFxuICAyMTpcdFx0cmV0dXJuIGlwbnVtO1xuICAyMjpcdH1cbiAgMjM6XHRcbiAgMjQ6XHRzdGF0aWMgdm9pZCBlaW9pbnRjX3NldF9zd19jb3JlaXNyKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcylcbiAgMjU6XHR7XG4gIDI2Olx0XHRpbnQgaXBudW0sIGNwdSwgY3B1aWQsIGlycTtcbiAgMjc6XHRcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbiAgMjg6XHRcbiAgMjk6XHRcdGZvciAoaXJxID0gMDsgaXJxIFx1MDAzYyBFSU9JTlRDX0lSUVM7IGlycSYjNDM7JiM0MzspIHtcbiAgMzA6XHRcdFx0aXBudW0gPSBlaW9pbnRjX2dldF9pcG51bShzLCBpcnEpO1xuICAzMTpcdFxuICAzMjpcdFx0XHRjcHVpZCA9ICgodTggKilzLVx1MDAzZWNvcmVtYXApW2lycV07XG4gIDMzOlx0XHRcdHZjcHUgPSBrdm1fZ2V0X3ZjcHVfYnlfY3B1aWQocy1cdTAwM2Vrdm0sIGNwdWlkKTtcbiAgMzQ6XHRcdFx0aWYgKCF2Y3B1KVxuICAzNTpcdFx0XHRcdGNvbnRpbnVlO1xuICAzNjpcdFxuICAzNzpcdFx0XHRjcHUgPSB2Y3B1LVx1MDAzZXZjcHVfaWQ7XG4gIDM4Olx0XHRcdGlmICh0ZXN0X2JpdChpcnEsICh1bnNpZ25lZCBsb25nICopcy1cdTAwM2Vjb3JlaXNyW2NwdV0pKVxuICAzOTpcdFx0XHRcdF9fc2V0X2JpdChpcnEsIHMtXHUwMDNlc3dfY29yZWlzcltjcHVdW2lwbnVtXSk7XG4gIDQwOlx0XHRcdGVsc2VcbiAgNDE6XHRcdFx0XHRfX2NsZWFyX2JpdChpcnEsIHMtXHUwMDNlc3dfY29yZWlzcltjcHVdW2lwbnVtXSk7XG4gIDQyOlx0XHR9XG4gIDQzOlx0fVxuICA0NDpcdFxuICA0NTpcdHN0YXRpYyB2b2lkIGVpb2ludGNfdXBkYXRlX2lycShzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMsIGludCBpcnEsIGludCBsZXZlbClcbiAgNDY6XHR7XG4gIDQ3Olx0XHRpbnQgaXBudW0sIGNwdSwgZm91bmQ7XG4gIDQ4Olx0XHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7XG4gIDQ5Olx0XHRzdHJ1Y3Qga3ZtX2ludGVycnVwdCB2Y3B1X2lycTtcbiAgNTA6XHRcbiAgNTE6XHRcdGlwbnVtID0gZWlvaW50Y19nZXRfaXBudW0ocywgaXJxKTtcbiAgNTI6XHRcbiAgNTM6XHRcdGNwdSA9IHMtXHUwMDNlc3dfY29yZW1hcFtpcnFdO1xuICA1NDpcdFx0dmNwdSA9IGt2bV9nZXRfdmNwdV9ieV9pZChzLVx1MDAzZWt2bSwgY3B1KTtcbiAgNTU6XHRcdGlmICh1bmxpa2VseSh2Y3B1ID09IE5VTEwpKSB7XG4gIDU2Olx0XHRcdGt2bV9lcnIoXCYjMzQ7JXM6IGludmFsaWQgdGFyZ2V0IGNwdTogJWRcXG5cJiMzNDssIF9fZnVuY19fLCBjcHUpO1xuICA1NzpcdFx0XHRyZXR1cm47XG4gIDU4Olx0XHR9XG4gIDU5Olx0XG4gIDYwOlx0XHRpZiAobGV2ZWwpIHtcbiAgNjE6XHRcdFx0LyogaWYgbm90IGVuYWJsZSByZXR1cm4gZmFsc2UgKi9cbiAgNjI6XHRcdFx0aWYgKCF0ZXN0X2JpdChpcnEsICh1bnNpZ25lZCBsb25nICopcy1cdTAwM2VlbmFibGUpKVxuICA2MzpcdFx0XHRcdHJldHVybjtcbiAgNjQ6XHRcdFx0X19zZXRfYml0KGlycSwgKHVuc2lnbmVkIGxvbmcgKilzLVx1MDAzZWNvcmVpc3JbY3B1XSk7XG4gIDY1Olx0XHRcdGZvdW5kID0gZmluZF9maXJzdF9iaXQocy1cdTAwM2Vzd19jb3JlaXNyW2NwdV1baXBudW1dLCBFSU9JTlRDX0lSUVMpO1xuICA2NjpcdFx0XHRfX3NldF9iaXQoaXJxLCBzLVx1MDAzZXN3X2NvcmVpc3JbY3B1XVtpcG51bV0pO1xuICA2NzpcdFx0fSBlbHNlIHtcbiAgNjg6XHRcdFx0X19jbGVhcl9iaXQoaXJxLCAodW5zaWduZWQgbG9uZyAqKXMtXHUwMDNlY29yZWlzcltjcHVdKTtcbiAgNjk6XHRcdFx0X19jbGVhcl9iaXQoaXJxLCBzLVx1MDAzZXN3X2NvcmVpc3JbY3B1XVtpcG51bV0pO1xuICA3MDpcdFx0XHRmb3VuZCA9IGZpbmRfZmlyc3RfYml0KHMtXHUwMDNlc3dfY29yZWlzcltjcHVdW2lwbnVtXSwgRUlPSU5UQ19JUlFTKTtcbiAgNzE6XHRcdH1cbiAgNzI6XHRcbiAgNzM6XHRcdGlmIChmb3VuZCBcdTAwM2MgRUlPSU5UQ19JUlFTKVxuICA3NDpcdFx0XHRyZXR1cm47IC8qIG90aGVyIGlycSBpcyBoYW5kbGluZywgbmVlZG4mIzM5O3QgdXBkYXRlIHBhcmVudCBpcnEgKi9cbiAgNzU6XHRcbiAgNzY6XHRcdHZjcHVfaXJxLmlycSA9IGxldmVsID8gKElOVF9IV0kwICYjNDM7IGlwbnVtKSA6IC0oSU5UX0hXSTAgJiM0MzsgaXBudW0pO1xuICA3NzpcdFx0a3ZtX3ZjcHVfaW9jdGxfaW50ZXJydXB0KHZjcHUsIFx1MDAyNnZjcHVfaXJxKTtcbiAgNzg6XHR9XG4gIDc5Olx0XG4gIDgwOlx0c3RhdGljIGlubGluZSB2b2lkIGVpb2ludGNfdXBkYXRlX3N3X2NvcmVtYXAoc3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzLFxuICA4MTpcdFx0XHRcdFx0XHRpbnQgaXJxLCB1NjQgdmFsLCB1MzIgbGVuLCBib29sIG5vdGlmeSlcbiAgODI6XHR7XG4gIDgzOlx0XHRpbnQgaSwgY3B1LCBjcHVpZDtcbiAgODQ6XHRcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbiAgODU6XHRcbiAgODY6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxlbjsgaSYjNDM7JiM0MzspIHtcbiAgODc6XHRcdFx0Y3B1aWQgPSB2YWwgXHUwMDI2IDB4ZmY7XG4gIDg4Olx0XHRcdHZhbCA9IHZhbCBcdTAwM2VcdTAwM2UgODtcbiAgODk6XHRcbiAgOTA6XHRcdFx0aWYgKCEocy1cdTAwM2VzdGF0dXMgXHUwMDI2IEJJVChFSU9JTlRDX0VOQUJMRV9DUFVfRU5DT0RFKSkpIHtcbiAgOTE6XHRcdFx0XHRjcHVpZCA9IGZmcyhjcHVpZCkgLSAxO1xuICA5MjpcdFx0XHRcdGNwdWlkID0gKChjcHVpZCBcdTAwM2MgMCkgfHwgKGNwdWlkIFx1MDAzZT0gNCkpID8gMCA6IGNwdWlkO1xuICA5MzpcdFx0XHR9XG4gIDk0Olx0XG4gIDk1Olx0XHRcdHZjcHUgPSBrdm1fZ2V0X3ZjcHVfYnlfY3B1aWQocy1cdTAwM2Vrdm0sIGNwdWlkKTtcbiAgOTY6XHRcdFx0aWYgKCF2Y3B1KVxuICA5NzpcdFx0XHRcdGNvbnRpbnVlO1xuICA5ODpcdFxuICA5OTpcdFx0XHRjcHUgPSB2Y3B1LVx1MDAzZXZjcHVfaWQ7XG4gMTAwOlx0XHRcdGlmIChzLVx1MDAzZXN3X2NvcmVtYXBbaXJxICYjNDM7IGldID09IGNwdSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDU6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc3OTYKCQkJCQkJCW91dHB1dDogMTM3CgkJCQkJCQl0aG91Z2h0czogMjAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTG9vbmdBcmNoIEtWTSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSBLVk0gbG9naWMgZm9yIExvb25nQXJjaCDigJMgdGhhdCBtdWNoIGlzIGNsZWFyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGlkZW50aWZ5IHRoZSBlbmFibGluZyBjb25maWd1cmF0aW9ucywgYW5kIGl0IGxvb2tzIGxpa2UgYEtWTWAgaXMgdGhlIGtleS4gTm93LCBJIHNob3VsZCBtYWtlIGEgbm90ZSBvZiB0aGUgc3ltYm9scyBhZmZlY3RlZCB0byBoZWxwIHdpdGggYW55IHBvdGVudGlhbCBkZWJ1Z2dpbmcgZG93biB0aGUgbGluZSwgc28gdGhlIG1haW4gZm9jdXMgcG9pbnRzIGhlcmUgYXJlIGBlaW9pbnRjX2dldF9pcG51bWAsIGBlaW9pbnRjX3NldF9zd19jb3JlaXNyYCwgYW5kIGBlaW9pbnRjX3VwZGF0ZV9pcnFgLiBIbW0sIGBlaW9pbnRjX2dldF9pcG51bWAgaXMgc3RhdGljOyBpdCYjMzk7cyBwcm9iYWJseSBpbmxpbmVkIGJ1dCBzdGlsbCB3b3J0aCBsaXN0aW5nIGl0IGZvciBjb21wbGV0ZW5lc3MuCgpMZXQmIzM5O3MgcXVpY2tseSBjb25maXJtIHRoYXQgYEtWTWAgYWxvbmUgaXMgc3VmZmljaWVudCBmb3IgZW5hYmxpbmcgdGhlIGZlYXR1cmVzLiBZZXAsIGBLVk1gIGlzIGluZGVlZCB0aGUgcHJpbWFyeSBLVk0gY29uZmlnIGZvciBMb29uZ0FyY2guIElzIHRoZXJlIGFueXRoaW5nIGVsc2Ugd2UgbmVlZCB0byBjb25zaWRlcj8gSSYjMzk7bGwgZG91YmxlLWNoZWNrIHRoZSBLY29uZmlnIGZpbGUgd2l0aGluIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgS1ZNIGRpcmVjdG9yeSDigJMgYGFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnYC4gUmlnaHQsIEkgc2VlIGl0IG5vdzogYGNvbmZpZyBLVk1gIGFsc28gZGVwZW5kcyBvbiBgQVNfSEFTX0xWWl9FWFRFTlNJT04gJmFtcDsmYW1wOyA2NEJJVGAuIFNvLCB3aXRoIHRob3NlIHByZXJlcXVpc2l0ZXMgaGFuZGxlZCwgZW5hYmxpbmcgYEtWTWAgc2hvdWxkIGJlIHN1ZmZpY2llbnQuIE9rYXksIEkmIzM5O20gY29uZmlkZW50IGluIHRoYXQgYW5hbHlzaXMuIFRpbWUgdG8gc2V0LXJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA1OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlaW9pbnRjX2dldF9pcG51bSYjMzQ7LAogICAgJiMzNDtlaW9pbnRjX3NldF9zd19jb3JlaXNyJiMzNDssCiAgICAmIzM0O2Vpb2ludGNfdXBkYXRlX2lycSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTG9vbmdBcmNoIEtWTSBpbnRlcnJ1cHQgY29udHJvbGxlciAoZWlvaW50YykgbG9naWMgYnkgZXh0cmFjdGluZyBhbmQgdXBkYXRpbmcgdGhlIElQIG51bWJlciBjYWxjdWxhdGlvbiBpbnRvIGEgbmV3IGZ1bmN0aW9uIGBlaW9pbnRjX2dldF9pcG51bWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgS1ZNIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIEtWTSBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Vpb2ludGNfZ2V0X2lwbnVtJiMzNDssCiAgICAmIzM0O2Vpb2ludGNfc2V0X3N3X2NvcmVpc3ImIzM0OywKICAgICYjMzQ7ZWlvaW50Y191cGRhdGVfaXJxJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBMb29uZ0FyY2ggS1ZNIGludGVycnVwdCBjb250cm9sbGVyIChlaW9pbnRjKSBsb2dpYyBieSBleHRyYWN0aW5nIGFuZCB1cGRhdGluZyB0aGUgSVAgbnVtYmVyIGNhbGN1bGF0aW9uIGludG8gYSBuZXcgZnVuY3Rpb24gYGVpb2ludGNfZ2V0X2lwbnVtYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgS1ZNIGlvY3Rscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA1OjI5OjA5LjcyMzkyMjczOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MzI0MDY4MzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVpb2ludGNfZ2V0X2lwbnVtXCIsXG4gICAgXCJlaW9pbnRjX3NldF9zd19jb3JlaXNyXCIsXG4gICAgXCJlaW9pbnRjX3VwZGF0ZV9pcnFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTG9vbmdBcmNoIEtWTSBpbnRlcnJ1cHQgY29udHJvbGxlciAoZWlvaW50YykgbG9naWMgYnkgZXh0cmFjdGluZyBhbmQgdXBkYXRpbmcgdGhlIElQIG51bWJlciBjYWxjdWxhdGlvbiBpbnRvIGEgbmV3IGZ1bmN0aW9uIGBlaW9pbnRjX2dldF9pcG51bWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgS1ZNIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIEtWTSBpb2N0bHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA1OjI5OjA5LjcyMzkyODc3OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgyNDYxMjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODM2OTRhMGFmMDQwODA3ZGU1YmZjZDhlZWQzNTU3YWZhOGIxY2QwMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAxNCAwNToyOTowNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmNcXG5pbmRleCAyYjE0NDg1ZDE0YTcwOC4uYzFlMGNkOGRjYTE2Y2UgMTAwNjQ0XFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jXFxuKysrIGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jXFxuQEAgLTcsMTcgKzcsMjcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9rdm1fdmNwdS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvY291bnRfemVyb3MuaFxcdTAwM2VcXG4gXFxuK3N0YXRpYyBpbnQgZWlvaW50Y19nZXRfaXBudW0oc3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzLCBpbnQgaXJxKVxcbit7XFxuK1xcdGludCBpcG51bSA9IChzLVxcdTAwM2VpcG1hcCBcXHUwMDNlXFx1MDAzZSAoaXJxIC8gMzIgKiA4KSkgXFx1MDAyNiAweGZmO1xcbitcXG4rXFx0aWYgKCEocy1cXHUwMDNlc3RhdHVzIFxcdTAwMjYgQklUKEVJT0lOVENfRU5BQkxFX0lOVF9FTkNPREUpKSkge1xcbitcXHRcXHRpcG51bSA9IGNvdW50X3RyYWlsaW5nX3plcm9zKGlwbnVtKTtcXG4rXFx0XFx0aXBudW0gPSBpcG51bSBcXHUwMDNjIDQgPyBpcG51bSA6IDA7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGlwbnVtID0gKGlwbnVtIFxcdTAwM2MgTE9PTkdTT05fSVBfTlVNKSA/IGlwbnVtIDogMDtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIGlwbnVtO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBlaW9pbnRjX3NldF9zd19jb3JlaXNyKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcylcXG4ge1xcbiBcXHRpbnQgaXBudW0sIGNwdSwgY3B1aWQsIGlycTtcXG4gXFx0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xcbiBcXG4gXFx0Zm9yIChpcnEgPSAwOyBpcnEgXFx1MDAzYyBFSU9JTlRDX0lSUVM7IGlycSsrKSB7XFxuLVxcdFxcdGlwbnVtID0gKHMtXFx1MDAzZWlwbWFwIFxcdTAwM2VcXHUwMDNlIChpcnEgLyAzMiAqIDgpKSBcXHUwMDI2IDB4ZmY7XFxuLVxcdFxcdGlmICghKHMtXFx1MDAzZXN0YXR1cyBcXHUwMDI2IEJJVChFSU9JTlRDX0VOQUJMRV9JTlRfRU5DT0RFKSkpIHtcXG4tXFx0XFx0XFx0aXBudW0gPSBjb3VudF90cmFpbGluZ196ZXJvcyhpcG51bSk7XFxuLVxcdFxcdFxcdGlwbnVtID0gaXBudW0gXFx1MDAzYyA0ID8gaXBudW0gOiAwO1xcbi1cXHRcXHR9XFxuK1xcdFxcdGlwbnVtID0gZWlvaW50Y19nZXRfaXBudW0ocywgaXJxKTtcXG4gXFxuIFxcdFxcdGNwdWlkID0gKCh1OCAqKXMtXFx1MDAzZWNvcmVtYXApW2lycV07XFxuIFxcdFxcdHZjcHUgPSBrdm1fZ2V0X3ZjcHVfYnlfY3B1aWQocy1cXHUwMDNla3ZtLCBjcHVpZCk7XFxuQEAgLTM4LDExICs0OCw3IEBAIHN0YXRpYyB2b2lkIGVpb2ludGNfdXBkYXRlX2lycShzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMsIGludCBpcnEsIGludCBsZXZlbClcXG4gXFx0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xcbiBcXHRzdHJ1Y3Qga3ZtX2ludGVycnVwdCB2Y3B1X2lycTtcXG4gXFxuLVxcdGlwbnVtID0gKHMtXFx1MDAzZWlwbWFwIFxcdTAwM2VcXHUwMDNlIChpcnEgLyAzMiAqIDgpKSBcXHUwMDI2IDB4ZmY7XFxuLVxcdGlmICghKHMtXFx1MDAzZXN0YXR1cyBcXHUwMDI2IEJJVChFSU9JTlRDX0VOQUJMRV9JTlRfRU5DT0RFKSkpIHtcXG4tXFx0XFx0aXBudW0gPSBjb3VudF90cmFpbGluZ196ZXJvcyhpcG51bSk7XFxuLVxcdFxcdGlwbnVtID0gaXBudW0gXFx1MDAzYyA0ID8gaXBudW0gOiAwO1xcbi1cXHR9XFxuK1xcdGlwbnVtID0gZWlvaW50Y19nZXRfaXBudW0ocywgaXJxKTtcXG4gXFxuIFxcdGNwdSA9IHMtXFx1MDAzZXN3X2NvcmVtYXBbaXJxXTtcXG4gXFx0dmNwdSA9IGt2bV9nZXRfdmNwdV9ieV9pZChzLVxcdTAwM2Vrdm0sIGNwdSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA1OjI5OjEwLjQwNjk5ODU5OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjM2NDA5Nzg2MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZWlvaW50Y19nZXRfaXBudW1cIixcbiAgICBcImVpb2ludGNfc2V0X3N3X2NvcmVpc3JcIixcbiAgICBcImVpb2ludGNfdXBkYXRlX2lycVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBMb29uZ0FyY2ggS1ZNIGludGVycnVwdCBjb250cm9sbGVyIChlaW9pbnRjKSBsb2dpYyBieSBleHRyYWN0aW5nIGFuZCB1cGRhdGluZyB0aGUgSVAgbnVtYmVyIGNhbGN1bGF0aW9uIGludG8gYSBuZXcgZnVuY3Rpb24gYGVpb2ludGNfZ2V0X2lwbnVtYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgS1ZNIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4MzY5NGEwYWYwNDA4MDdkZTViZmNkOGVlZDM1NTdhZmE4YjFjZDAxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMDU6Mjk6MDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmNcbmluZGV4IDJiMTQ0ODVkMTRhNzA4Li5jMWUwY2Q4ZGNhMTZjZSAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuY1xuKysrIGIvYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jXG5AQCAtNywxNyArNywyNyBAQFxuICNpbmNsdWRlIFx1MDAzY2FzbS9rdm1fdmNwdS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY291bnRfemVyb3MuaFx1MDAzZVxuIFxuK3N0YXRpYyBpbnQgZWlvaW50Y19nZXRfaXBudW0oc3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzLCBpbnQgaXJxKVxuK3tcbitcdGludCBpcG51bSA9IChzLVx1MDAzZWlwbWFwIFx1MDAzZVx1MDAzZSAoaXJxIC8gMzIgKiA4KSkgXHUwMDI2IDB4ZmY7XG4rXG4rXHRpZiAoIShzLVx1MDAzZXN0YXR1cyBcdTAwMjYgQklUKEVJT0lOVENfRU5BQkxFX0lOVF9FTkNPREUpKSkge1xuK1x0XHRpcG51bSA9IGNvdW50X3RyYWlsaW5nX3plcm9zKGlwbnVtKTtcbitcdFx0aXBudW0gPSBpcG51bSBcdTAwM2MgNCA/IGlwbnVtIDogMDtcbitcdH0gZWxzZSB7XG4rXHRcdGlwbnVtID0gKGlwbnVtIFx1MDAzYyBMT09OR1NPTl9JUF9OVU0pID8gaXBudW0gOiAwO1xuK1x0fVxuK1xuK1x0cmV0dXJuIGlwbnVtO1xuK31cbitcbiBzdGF0aWMgdm9pZCBlaW9pbnRjX3NldF9zd19jb3JlaXNyKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcylcbiB7XG4gXHRpbnQgaXBudW0sIGNwdSwgY3B1aWQsIGlycTtcbiBcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbiBcbiBcdGZvciAoaXJxID0gMDsgaXJxIFx1MDAzYyBFSU9JTlRDX0lSUVM7IGlycSsrKSB7XG4tXHRcdGlwbnVtID0gKHMtXHUwMDNlaXBtYXAgXHUwMDNlXHUwMDNlIChpcnEgLyAzMiAqIDgpKSBcdTAwMjYgMHhmZjtcbi1cdFx0aWYgKCEocy1cdTAwM2VzdGF0dXMgXHUwMDI2IEJJVChFSU9JTlRDX0VOQUJMRV9JTlRfRU5DT0RFKSkpIHtcbi1cdFx0XHRpcG51bSA9IGNvdW50X3RyYWlsaW5nX3plcm9zKGlwbnVtKTtcbi1cdFx0XHRpcG51bSA9IGlwbnVtIFx1MDAzYyA0ID8gaXBudW0gOiAwO1xuLVx0XHR9XG4rXHRcdGlwbnVtID0gZWlvaW50Y19nZXRfaXBudW0ocywgaXJxKTtcbiBcbiBcdFx0Y3B1aWQgPSAoKHU4ICopcy1cdTAwM2Vjb3JlbWFwKVtpcnFdO1xuIFx0XHR2Y3B1ID0ga3ZtX2dldF92Y3B1X2J5X2NwdWlkKHMtXHUwMDNla3ZtLCBjcHVpZCk7XG5AQCAtMzgsMTEgKzQ4LDcgQEAgc3RhdGljIHZvaWQgZWlvaW50Y191cGRhdGVfaXJxKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcywgaW50IGlycSwgaW50IGxldmVsKVxuIFx0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xuIFx0c3RydWN0IGt2bV9pbnRlcnJ1cHQgdmNwdV9pcnE7XG4gXG4tXHRpcG51bSA9IChzLVx1MDAzZWlwbWFwIFx1MDAzZVx1MDAzZSAoaXJxIC8gMzIgKiA4KSkgXHUwMDI2IDB4ZmY7XG4tXHRpZiAoIShzLVx1MDAzZXN0YXR1cyBcdTAwMjYgQklUKEVJT0lOVENfRU5BQkxFX0lOVF9FTkNPREUpKSkge1xuLVx0XHRpcG51bSA9IGNvdW50X3RyYWlsaW5nX3plcm9zKGlwbnVtKTtcbi1cdFx0aXBudW0gPSBpcG51bSBcdTAwM2MgNCA/IGlwbnVtIDogMDtcbi1cdH1cbitcdGlwbnVtID0gZWlvaW50Y19nZXRfaXBudW0ocywgaXJxKTtcbiBcbiBcdGNwdSA9IHMtXHUwMDNlc3dfY29yZW1hcFtpcnFdO1xuIFx0dmNwdSA9IGt2bV9nZXRfdmNwdV9ieV9pZChzLVx1MDAzZWt2bSwgY3B1KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA1OjI5OjEwLjQwNzAwMDA0N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5NTQwNzkxMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTG9vbmdBcmNoIEtWTSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIExvb25nQXJjaCBLVk0gaW50ZXJydXB0IGNvbnRyb2xsZXIgY29kZSwgc3BlY2lmaWNhbGx5IGBhcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGV4dHJhY3Rpbmcgc29tZSBjb21tb24gbG9naWMgaW50byBhIG5ldyBmdW5jdGlvbiwgYGVpb2ludGNfZ2V0X2lwbnVtYC4gIFRoZXJlJ3MgYWxzbyBhIGNvbmRpdGlvbmFsIGNoZWNrIGJlaW5nIGFkZGVkIHdpdGhpbiB0aGUgYGVsc2VgIGJyYW5jaCwgYSBzYW5pdHkgY2hlY2sgb24gYGlwbnVtYCB0byBlbnN1cmUgaXQncyB3aXRoaW4gZXhwZWN0ZWQgYm91bmRzIGJhc2VkIG9uIGBMT09OR1NPTl9JUF9OVU1gLlxuXG5NeSBmaXJzdCB0aG91Z2h0IGlzIGFsd2F5cywgXCJIb3cgcmVhY2hhYmxlIGlzIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD9cIiBJdCdzIEtWTSBjb2RlLCBidXQgdGFyZ2V0ZWQgYXQgdGhlIExvb25nQXJjaCBhcmNoaXRlY3R1cmUsIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyB0aGUgZnV6emluZyBxdWVzdGlvbi4gQ2FuIFN5emthbGxlciByZWFjaCBpdD8gU3l6a2FsbGVyICpjYW4qIGZ1enogS1ZNLCBidXQgdGhlIHF1ZXN0aW9uIGJlY29tZXMgd2hldGhlciBpdCBjYW4gZG8gc28gKm9uKiBMb29uZ0FyY2guICBHZW5lcmFsbHksIG15IGV4cGVyaWVuY2UgaXMgd2l0aCB4ODZfNjQsIGFybTY0LCByaXNjdjY0IGFuZCBzMzkweCBpbnN0YW5jZXMsIHNvIEkgaGF2ZSB0byBwYXVzZSBhbmQgdGhpbmsuIERvZXMgU3l6a2FsbGVyIGV2ZW4gcnVuIG9uIExvb25nQXJjaD9cblxuSSBrbm93IHRoZXJlJ3Mgbm8gTG9vbmdBcmNoIGluc3RhbmNlIGluIHRoZSBtYWluIHN5emJvdCwgYnV0IEkgbmVlZCB0byBiZSBjYXJlZnVsIGFzc3VtaW5nIHRoYXQgbWVhbnMgaXQncyB1bnJlYWNoYWJsZS4gSXQgKmNvdWxkKiBleGlzdCBpbiBhIGRpZmZlcmVudCBzZXR1cCwgb3IgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZS4gIEhvd2V2ZXIsIHRoaXMgY2hhbmdlIHNheXMgdGhlIGNvZGUgcGF0aCBtYXkgbm90IGJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHN1Y2ggYXMgR0NFIG9yIFFFTVUsIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBCdXQsIExvb25nQXJjaCBLVk0gaXMgc3BlY2lmaWMgdG8gTG9vbmdBcmNoLiBJZiB3ZSBhcmUgb24geDg2XzY0LCB3ZSBjYW4ndCBmdXp6IExvb25nQXJjaCBLVk0sIGxvZ2ljYWxseS5cblxuV2FpdCwgdGhlIG5leHQgc3RlcCBpcyB0byBtYWtlIHN1cmUgb2YgdGhhdCwgYW5kIGl0IGFwcGVhcnMgc3l6a2FsbGVyIGRvZXMgc3VwcG9ydCBgbGludXgvbG9vbmdhcmNoNjRgLiAgU28gdGhlIGFzc3VtcHRpb24gKmlzKiB0aGF0IGl0ICpjYW4qIGJlIGZ1enplZCwgYXMgbG9uZyBhcyBhIExvb25nQXJjaCBWTSBpcyBwcmVzZW50LlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgdGhlIHNwZWNpZmljIGZ1bmN0aW9ucyBiZWluZyBtb2RpZmllZCB3aXRoaW4gYGFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuY2AuIEl0J3MgYGVpb2ludGNfc2V0X3N3X2NvcmVpc3JgIGFuZCBgZWlvaW50Y191cGRhdGVfaXJxYCBiZWluZyBjaGFuZ2VkLCBhbG9uZyB3aXRoIHRoZSBuZXcgYGVpb2ludGNfZ2V0X2lwbnVtYCBmdW5jdGlvbi4gRmluYWxseSwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNoZWNrIGBhcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZ2AgdG8gY29uZmlybSBLVk0gc3VwcG9ydCwgcHJvYmFibHkgdmlhIGBDT05GSUdfS1ZNYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQyMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA1OjI5OjE4LjM2MTA4MjJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM2Njc1ODE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXFxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMjEtXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDU6Mjk6MTguNDk3NzYzMzM3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY2ODk1OTgyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBDb250ZXh0KipcblxuT2theSwgc28gd2UncmUgc3RhcnRpbmcgd2l0aCBgQ09ORklHX0tWTWAuIFRoYXQncyBvdXIgaW5pdGlhbCBhbmNob3IgcG9pbnQgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHNwYWNlLiBOb3csIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBzZWUgd2hhdCByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLCBkZXBlbmRlbmNpZXMsIG9yIHBvdGVudGlhbCBjb25mbGljdHMgZXhpc3QuIFRoaXMgaXNuJ3QganVzdCBhYm91dCB3aGV0aGVyIEtWTSBpcyBlbmFibGVkOyBpdCdzIGFib3V0IHVuZGVyc3RhbmRpbmcgdGhlIGJyb2FkZXIgcGljdHVyZS4gQXJlIHRoZXJlIGFueSBvdGhlciB2aXJ0dWFsaXphdGlvbi1yZWxhdGVkIGZsYWdzPyBXaGF0IHN1YnN5c3RlbXMgYXJlIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgYmFzZWQgb24gYENPTkZJR19LVk1gPyBXaGF0IG90aGVyIGZlYXR1cmUgc2V0cyBtaWdodCBiZSBhdmFpbGFibGU/IFdlIG5lZWQgdG8gbWFwIG91dCB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgdG8gZ2V0IGEgZnVsbCB2aWV3LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTg5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDU6Mjk6MjEuMTY2NzI1Nzg0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MDkwODMxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlaW9pbnRjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9sb29uZ2FyY2gva3ZtL01ha2VmaWxlPTIxPWt2bS15ICs9IGludGMvZG1zaW50Yy5vXFxuYXJjaC9sb29uZ2FyY2gva3ZtL01ha2VmaWxlOjIyOmt2bS15ICs9IGludGMvZWlvaW50Yy5vXFxuYXJjaC9sb29uZ2FyY2gva3ZtL01ha2VmaWxlLTIzLWt2bS15ICs9IGludGMvcGNoX3BpYy5vXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjojaW5jbHVkZSBcXHUwMDNjYXNtL2t2bV9laW9pbnRjLmhcXHUwMDNlXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTctI2luY2x1ZGUgXFx1MDAzY2FzbS9rdm1fdmNwdS5oXFx1MDAzZVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTktXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjEwOnN0YXRpYyBpbnQgZWlvaW50Y19nZXRfaXBudW0oc3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzLCBpbnQgaXJxKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0xMS17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjMtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjI0OnN0YXRpYyB2b2lkIGVpb2ludGNfc2V0X3N3X2NvcmVpc3Ioc3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0yNS17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjktXFx0Zm9yIChpcnEgPSAwOyBpcnEgXFx1MDAzYyBFSU9JTlRDX0lSUVM7IGlycSsrKSB7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjMwOlxcdFxcdGlwbnVtID0gZWlvaW50Y19nZXRfaXBudW0ocywgaXJxKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzEtXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNDQtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjQ1OnN0YXRpYyB2b2lkIGVpb2ludGNfdXBkYXRlX2lycShzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMsIGludCBpcnEsIGludCBsZXZlbClcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNDYte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTUwLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo1MTpcXHRpcG51bSA9IGVpb2ludGNfZ2V0X2lwbnVtKHMsIGlycSk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTUyLVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTc5LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo4MDpzdGF0aWMgaW5saW5lIHZvaWQgZWlvaW50Y191cGRhdGVfc3dfY29yZW1hcChzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMsXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTgxLVxcdFxcdFxcdFxcdFxcdGludCBpcnEsIHU2NCB2YWwsIHUzMiBsZW4sIGJvb2wgbm90aWZ5KVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTEwNC1cXHRcXHRcXHQvKiBsb3dlciBpcnEgYXQgb2xkIGNwdSBhbmQgcmFpc2UgaXJxIGF0IG5ldyBjcHUgKi9cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MTA1OlxcdFxcdFxcdGVpb2ludGNfdXBkYXRlX2lycShzLCBpcnEgKyBpLCAwKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMTA2LVxcdFxcdFxcdHMtXFx1MDAzZXN3X2NvcmVtYXBbaXJxICsgaV0gPSBjcHU7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjEwNzpcXHRcXHRcXHRlaW9pbnRjX3VwZGF0ZV9pcnEocywgaXJxICsgaSwgMSk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTEwOC1cXHRcXHR9IGVsc2Uge1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTExMy1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MTE0OnZvaWQgZWlvaW50Y19zZXRfaXJxKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcywgaW50IGlycSwgaW50IGxldmVsKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0xMTUte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTEyMC1cXHRsZXZlbCA/IF9fc2V0X2JpdChpcnEsIGlzcikgOiBfX2NsZWFyX2JpdChpcnEsIGlzcik7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjEyMTpcXHRlaW9pbnRjX3VwZGF0ZV9pcnEocywgaXJxLCBsZXZlbCk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTEyMi1cXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMTI0LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoxMjU6c3RhdGljIGludCBsb29uZ2FyY2hfZWlvaW50Y19yZWFkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzLFxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0xMjYtXFx0XFx0XFx0XFx0Z3BhX3QgYWRkciwgdW5zaWduZWQgbG9uZyAqdmFsKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTE2NS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MTY2OnN0YXRpYyBpbnQga3ZtX2Vpb2ludGNfcmVhZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTE2Ny1cXHRcXHRcXHRzdHJ1Y3Qga3ZtX2lvX2RldmljZSAqZGV2LFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTE3MC1cXHR1bnNpZ25lZCBsb25nIGZsYWdzLCBkYXRhLCBvZmZzZXQ7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjE3MTpcXHRzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKmVpb2ludGMgPSB2Y3B1LVxcdTAwM2Vrdm0tXFx1MDAzZWFyY2guZWlvaW50YztcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMTcyLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoxNzM6XFx0aWYgKCFlaW9pbnRjKSB7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjE3NDpcXHRcXHRrdm1fZXJyKFxcXCIlczogZWlvaW50YyBpcnFjaGlwIG5vdCB2YWxpZCFcXFxcblxcXCIsIF9fZnVuY19fKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMTc1LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTE3OC1cXHRpZiAoYWRkciBcXHUwMDI2IChsZW4gLSAxKSkge1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoxNzk6XFx0XFx0a3ZtX2VycihcXFwiJXM6IGVpb2ludGMgbm90IGFsaWduZWQgYWRkciAlbGx4IGxlbiAlZFxcXFxuXFxcIiwgX19mdW5jX18sIGFkZHIsIGxlbik7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTE4MC1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0xODQtXFx0YWRkciAtPSBvZmZzZXQ7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjE4NTpcXHR2Y3B1LVxcdTAwM2VzdGF0LmVpb2ludGNfcmVhZF9leGl0cysrO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoxODY6XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmVpb2ludGMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MTg3OlxcdGxvb25nYXJjaF9laW9pbnRjX3JlYWQodmNwdSwgZWlvaW50YywgYWRkciwgXFx1MDAyNmRhdGEpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoxODg6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZWlvaW50Yy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0xODktXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjA4LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoyMDk6c3RhdGljIGludCBsb29uZ2FyY2hfZWlvaW50Y193cml0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjIxMDpcXHRcXHRcXHRcXHRzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMsXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTIxMS1cXHRcXHRcXHRcXHRncGFfdCBhZGRyLCB1NjQgdmFsdWUsIHU2NCBmaWVsZF9tYXNrKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTI0OS1cXHRcXHRcXHRpcnEgPSBfX2ZmcyhkYXRhKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MjUwOlxcdFxcdFxcdGVpb2ludGNfdXBkYXRlX2lycShzLCBpcnEgKyBpbmRleCAqIDY0LCAxKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjUxLVxcdFxcdFxcdGRhdGEgXFx1MDAyNj0gfkJJVF9VTEwoaXJxKTtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0yNTktXFx0XFx0XFx0aXJxID0gX19mZnMoZGF0YSk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjI2MDpcXHRcXHRcXHRlaW9pbnRjX3VwZGF0ZV9pcnEocywgaXJxICsgaW5kZXggKiA2NCwgMCk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTI2MS1cXHRcXHRcXHRkYXRhIFxcdTAwMjY9IH5CSVRfVUxMKGlycSk7XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjc5LVxcdFxcdFxcdGlycSA9IF9fZmZzKGRhdGEpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzoyODA6XFx0XFx0XFx0ZWlvaW50Y191cGRhdGVfaXJxKHMsIGlycSArIGluZGV4ICogNjQsIDApO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0yODEtXFx0XFx0XFx0ZGF0YSBcXHUwMDI2PSB+QklUX1VMTChpcnEpO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTI4OC1cXHRcXHRkYXRhID0gcy1cXHUwMDNlY29yZW1hcFtpbmRleF07XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjI4OTpcXHRcXHRlaW9pbnRjX3VwZGF0ZV9zd19jb3JlbWFwKHMsIGluZGV4ICogOCwgZGF0YSwgc2l6ZW9mKGRhdGEpLCB0cnVlKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMjkwLVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTI5Ny1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Mjk4OnN0YXRpYyBpbnQga3ZtX2Vpb2ludGNfd3JpdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0yOTktXFx0XFx0XFx0c3RydWN0IGt2bV9pb19kZXZpY2UgKmRldixcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zMDItXFx0dW5zaWduZWQgbG9uZyBmbGFncywgdmFsdWU7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjMwMzpcXHRzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKmVpb2ludGMgPSB2Y3B1LVxcdTAwM2Vrdm0tXFx1MDAzZWFyY2guZWlvaW50YztcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzA0LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzozMDU6XFx0aWYgKCFlaW9pbnRjKSB7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjMwNjpcXHRcXHRrdm1fZXJyKFxcXCIlczogZWlvaW50YyBpcnFjaGlwIG5vdCB2YWxpZCFcXFxcblxcXCIsIF9fZnVuY19fKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzA3LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMxMC1cXHRpZiAoYWRkciBcXHUwMDI2IChsZW4gLSAxKSkge1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzozMTE6XFx0XFx0a3ZtX2VycihcXFwiJXM6IGVpb2ludGMgbm90IGFsaWduZWQgYWRkciAlbGx4IGxlbiAlZFxcXFxuXFxcIiwgX19mdW5jX18sIGFkZHIsIGxlbik7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMxMi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zMTQtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjMxNTpcXHR2Y3B1LVxcdTAwM2VzdGF0LmVpb2ludGNfd3JpdGVfZXhpdHMrKztcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzE2OlxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZlaW9pbnRjLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMxNy1cXHRzd2l0Y2ggKGxlbikge1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMxOS1cXHRcXHR2YWx1ZSA9ICoodW5zaWduZWQgY2hhciAqKXZhbDtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzIwOlxcdFxcdGxvb25nYXJjaF9laW9pbnRjX3dyaXRlKHZjcHUsIGVpb2ludGMsIGFkZHIsIHZhbHVlLCAweEZGKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzIxLVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMyMy1cXHRcXHR2YWx1ZSA9ICoodW5zaWduZWQgc2hvcnQgKil2YWw7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjMyNDpcXHRcXHRsb29uZ2FyY2hfZWlvaW50Y193cml0ZSh2Y3B1LCBlaW9pbnRjLCBhZGRyLCB2YWx1ZSwgVVNIUlRfTUFYKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzI1LVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMyNy1cXHRcXHR2YWx1ZSA9ICoodW5zaWduZWQgaW50ICopdmFsO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzozMjg6XFx0XFx0bG9vbmdhcmNoX2Vpb2ludGNfd3JpdGUodmNwdSwgZWlvaW50YywgYWRkciwgdmFsdWUsIFVJTlRfTUFYKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzI5LVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMzMS1cXHRcXHR2YWx1ZSA9ICoodW5zaWduZWQgbG9uZyAqKXZhbDtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzMyOlxcdFxcdGxvb25nYXJjaF9laW9pbnRjX3dyaXRlKHZjcHUsIGVpb2ludGMsIGFkZHIsIHZhbHVlLCBVTE9OR19NQVgpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zMzMtXFx0XFx0YnJlYWs7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMzNC1cXHR9XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjMzNTpcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZlaW9pbnRjLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTMzNi1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zMzktXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjM0MDpzdGF0aWMgY29uc3Qgc3RydWN0IGt2bV9pb19kZXZpY2Vfb3BzIGt2bV9laW9pbnRjX29wcyA9IHtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzQxOlxcdC5yZWFkXFx0PSBrdm1fZWlvaW50Y19yZWFkLFxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzozNDI6XFx0LndyaXRlXFx0PSBrdm1fZWlvaW50Y193cml0ZSxcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzQzLX07XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM0NC1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzQ1OnN0YXRpYyBpbnQga3ZtX2Vpb2ludGNfdmlydF9yZWFkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzQ2LVxcdFxcdFxcdFxcdHN0cnVjdCBrdm1faW9fZGV2aWNlICpkZXYsXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzUwLVxcdHUzMiAqZGF0YSA9IHZhbDtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzUxOlxcdHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqZWlvaW50YyA9IHZjcHUtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC5laW9pbnRjO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zNTItXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjM1MzpcXHRpZiAoIWVpb2ludGMpIHtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzU0OlxcdFxcdGt2bV9lcnIoXFxcIiVzOiBlaW9pbnRjIGlycWNoaXAgbm90IHZhbGlkIVxcXFxuXFxcIiwgX19mdW5jX18pO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zNTUtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzU4LVxcdGFkZHIgLT0gRUlPSU5UQ19WSVJUX0JBU0U7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjM1OTpcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2ZWlvaW50Yy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zNjAtXFx0c3dpdGNoIChhZGRyKSB7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM2MS1cXHRjYXNlIEVJT0lOVENfVklSVF9GRUFUVVJFUzpcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzYyOlxcdFxcdCpkYXRhID0gZWlvaW50Yy1cXHUwMDNlZmVhdHVyZXM7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM2My1cXHRcXHRicmVhaztcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzY0LVxcdGNhc2UgRUlPSU5UQ19WSVJUX0NPTkZJRzpcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzY1OlxcdFxcdCpkYXRhID0gZWlvaW50Yy1cXHUwMDNlc3RhdHVzO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zNjYtXFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzY5LVxcdH1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzcwOlxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmVpb2ludGMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzcxLVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM3NC1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Mzc1OnN0YXRpYyBpbnQga3ZtX2Vpb2ludGNfdmlydF93cml0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM3Ni1cXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX2lvX2RldmljZSAqZGV2LFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM4MC1cXHR1MzIgdmFsdWUgPSAqKHUzMiAqKXZhbDtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6MzgxOlxcdHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqZWlvaW50YyA9IHZjcHUtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC5laW9pbnRjO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zODItXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjM4MzpcXHRpZiAoIWVpb2ludGMpIHtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Mzg0OlxcdFxcdGt2bV9lcnIoXFxcIiVzOiBlaW9pbnRjIGlycWNoaXAgbm90IHZhbGlkIVxcXFxuXFxcIiwgX19mdW5jX18pO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zODUtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzg4LVxcdGFkZHIgLT0gRUlPSU5UQ19WSVJUX0JBU0U7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjM4OTpcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2ZWlvaW50Yy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zOTAtXFx0c3dpdGNoIChhZGRyKSB7XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzk0LVxcdFxcdC8qXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjM5NTpcXHRcXHQgKiBlaW9pbnRjIGZlYXR1cmVzIGNhbiBvbmx5IGJlIHNldCBhdCBkaXNhYmxlZCBzdGF0dXNcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtMzk2LVxcdFxcdCAqL1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzozOTc6XFx0XFx0aWYgKChlaW9pbnRjLVxcdTAwM2VzdGF0dXMgXFx1MDAyNiBCSVQoRUlPSU5UQ19FTkFCTEUpKSBcXHUwMDI2XFx1MDAyNiB2YWx1ZSkge1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy0zOTgtXFx0XFx0XFx0YnJlYWs7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTM5OS1cXHRcXHR9XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjQwMDpcXHRcXHRlaW9pbnRjLVxcdTAwM2VzdGF0dXMgPSB2YWx1ZSBcXHUwMDI2IGVpb2ludGMtXFx1MDAzZWZlYXR1cmVzO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00MDEtXFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNDA0LVxcdH1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NDA1OlxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmVpb2ludGMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNDA2LVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTQwOS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NDEwOnN0YXRpYyBjb25zdCBzdHJ1Y3Qga3ZtX2lvX2RldmljZV9vcHMga3ZtX2Vpb2ludGNfdmlydF9vcHMgPSB7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjQxMTpcXHQucmVhZFxcdD0ga3ZtX2Vpb2ludGNfdmlydF9yZWFkLFxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo0MTI6XFx0LndyaXRlXFx0PSBrdm1fZWlvaW50Y192aXJ0X3dyaXRlLFxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00MTMtfTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNDE0LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo0MTU6c3RhdGljIGludCBrdm1fZWlvaW50Y19jdHJsX2FjY2VzcyhzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LFxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00MTYtXFx0XFx0XFx0XFx0XFx0c3RydWN0IGt2bV9kZXZpY2VfYXR0ciAqYXR0cilcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00MjItXFx0dm9pZCBfX3VzZXIgKmRhdGE7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjQyMzpcXHRzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMgPSBkZXYtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC5laW9pbnRjO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00MjQtXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNDQ5LVxcdGNhc2UgS1ZNX0RFVl9MT09OR0FSQ0hfRVhUSU9JX0NUUkxfTE9BRF9GSU5JU0hFRDpcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NDUwOlxcdFxcdGVpb2ludGNfc2V0X3N3X2NvcmVpc3Iocyk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTQ1MS1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgKEVJT0lOVENfSVJRUyAvIDgpOyBpKyspIHtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNDUyLVxcdFxcdFxcdHN0YXJ0X2lycSA9IGkgKiA4O1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo0NTM6XFx0XFx0XFx0ZWlvaW50Y191cGRhdGVfc3dfY29yZW1hcChzLCBzdGFydF9pcnEsXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTQ1NC1cXHRcXHRcXHRcXHRcXHRzLVxcdTAwM2Vjb3JlbWFwW2ldLCBzaXplb2YodTY0KSwgZmFsc2UpO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTQ2NC1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NDY1OnN0YXRpYyBpbnQga3ZtX2Vpb2ludGNfcmVnc19hY2Nlc3Moc3RydWN0IGt2bV9kZXZpY2UgKmRldixcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNDY2LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIsXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNDcxLVxcdHZvaWQgKnAgPSBOVUxMO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo0NzI6XFx0c3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy00NzMtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjQ3NDpcXHRzID0gZGV2LVxcdTAwM2Vrdm0tXFx1MDAzZWFyY2guZWlvaW50YztcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNDc1LVxcdGFkZHIgPSBhdHRyLVxcdTAwM2VhdHRyO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTUxMC1cXHRkZWZhdWx0OlxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo1MTE6XFx0XFx0a3ZtX2VycihcXFwiJXM6IHVua25vd24gZWlvaW50YyByZWdpc3RlciwgYWRkciA9ICVkXFxcXG5cXFwiLCBfX2Z1bmNfXywgYWRkcik7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTUxMi1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy01MjQtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjUyNTpzdGF0aWMgaW50IGt2bV9laW9pbnRjX3N3X3N0YXR1c19hY2Nlc3Moc3RydWN0IGt2bV9kZXZpY2UgKmRldixcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNTI2LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIsXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNTMxLVxcdHZvaWQgKnAgPSBOVUxMO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo1MzI6XFx0c3RydWN0IGxvb25nYXJjaF9laW9pbnRjICpzO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy01MzMtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjUzNDpcXHRzID0gZGV2LVxcdTAwM2Vrdm0tXFx1MDAzZWFyY2guZWlvaW50YztcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNTM1LVxcdGFkZHIgPSBhdHRyLVxcdTAwM2VhdHRyO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTU1NC1cXHRkZWZhdWx0OlxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo1NTU6XFx0XFx0a3ZtX2VycihcXFwiJXM6IHVua25vd24gZWlvaW50YyByZWdpc3RlciwgYWRkciA9ICVkXFxcXG5cXFwiLCBfX2Z1bmNfXywgYWRkcik7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTU1Ni1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy01NjctXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjU2ODpzdGF0aWMgaW50IGt2bV9laW9pbnRjX2dldF9hdHRyKHN0cnVjdCBrdm1fZGV2aWNlICpkZXYsXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTU2OS1cXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTU3NC1cXHRjYXNlIEtWTV9ERVZfTE9PTkdBUkNIX0VYVElPSV9HUlBfUkVHUzpcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NTc1OlxcdFxcdHJldCA9IGt2bV9laW9pbnRjX3JlZ3NfYWNjZXNzKGRldiwgYXR0ciwgZmFsc2UsIFxcdTAwMjZkYXRhKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNTc2LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNTgzLVxcdGNhc2UgS1ZNX0RFVl9MT09OR0FSQ0hfRVhUSU9JX0dSUF9TV19TVEFUVVM6XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjU4NDpcXHRcXHRyZXQgPSBrdm1fZWlvaW50Y19zd19zdGF0dXNfYWNjZXNzKGRldiwgYXR0ciwgZmFsc2UsIFxcdTAwMjZkYXRhKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNTg1LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNTk2LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo1OTc6c3RhdGljIGludCBrdm1fZWlvaW50Y19zZXRfYXR0cihzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LFxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy01OTgtXFx0XFx0XFx0XFx0c3RydWN0IGt2bV9kZXZpY2VfYXR0ciAqYXR0cilcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MDMtXFx0Y2FzZSBLVk1fREVWX0xPT05HQVJDSF9FWFRJT0lfR1JQX0NUUkw6XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjYwNDpcXHRcXHRyZXR1cm4ga3ZtX2Vpb2ludGNfY3RybF9hY2Nlc3MoZGV2LCBhdHRyKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjA1LVxcdGNhc2UgS1ZNX0RFVl9MT09OR0FSQ0hfRVhUSU9JX0dSUF9SRUdTOlxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTYwOC1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjA5OlxcdFxcdHJldHVybiBrdm1fZWlvaW50Y19yZWdzX2FjY2VzcyhkZXYsIGF0dHIsIHRydWUsIFxcdTAwMjZkYXRhKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjEwLVxcdGNhc2UgS1ZNX0RFVl9MT09OR0FSQ0hfRVhUSU9JX0dSUF9TV19TVEFUVVM6XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjEzLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2MTQ6XFx0XFx0cmV0dXJuIGt2bV9laW9pbnRjX3N3X3N0YXR1c19hY2Nlc3MoZGV2LCBhdHRyLCB0cnVlLCBcXHUwMDI2ZGF0YSk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTYxNS1cXHRkZWZhdWx0Olxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTYxOS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjIwOnN0YXRpYyBpbnQga3ZtX2Vpb2ludGNfY3JlYXRlKHN0cnVjdCBrdm1fZGV2aWNlICpkZXYsIHUzMiB0eXBlKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MjEte1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MjItXFx0aW50IHJldDtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjIzOlxcdHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcztcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjI0LVxcdHN0cnVjdCBrdm1faW9fZGV2aWNlICpkZXZpY2U7XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjI2LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2Mjc6XFx0LyogZWlvaW50YyBoYXMgYmVlbiBjcmVhdGVkICovXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjYyODpcXHRpZiAoa3ZtLVxcdTAwM2VhcmNoLmVpb2ludGMpXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTYyOS1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjMwLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2MzE6XFx0cyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50Yyk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTYzMi1cXHRpZiAoIXMpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjQxLVxcdGRldmljZSA9IFxcdTAwMjZzLVxcdTAwM2VkZXZpY2U7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjY0MjpcXHRrdm1faW9kZXZpY2VfaW5pdChkZXZpY2UsIFxcdTAwMjZrdm1fZWlvaW50Y19vcHMpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02NDMtXFx0bXV0ZXhfbG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VzbG90c19sb2NrKTtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02NTItXFx0ZGV2aWNlID0gXFx1MDAyNnMtXFx1MDAzZWRldmljZV92ZXh0O1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2NTM6XFx0a3ZtX2lvZGV2aWNlX2luaXQoZGV2aWNlLCBcXHUwMDI2a3ZtX2Vpb2ludGNfdmlydF9vcHMpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02NTQtXFx0bXV0ZXhfbG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VzbG90c19sb2NrKTtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02NjQtXFx0fVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2NjU6XFx0a3ZtLVxcdTAwM2VhcmNoLmVpb2ludGMgPSBzO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02NjYtXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjY5LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2NzA6c3RhdGljIHZvaWQga3ZtX2Vpb2ludGNfZGVzdHJveShzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2KVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02NzEte1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02NzItXFx0c3RydWN0IGt2bSAqa3ZtO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2NzM6XFx0c3RydWN0IGxvb25nYXJjaF9laW9pbnRjICplaW9pbnRjO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02NzQtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjY3NTpcXHRpZiAoIWRldiB8fCAhZGV2LVxcdTAwM2Vrdm0gfHwgIWRldi1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLmVpb2ludGMpXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY3Ni1cXHRcXHRyZXR1cm47XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjc4LVxcdGt2bSA9IGRldi1cXHUwMDNla3ZtO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2Nzk6XFx0ZWlvaW50YyA9IGt2bS1cXHUwMDNlYXJjaC5laW9pbnRjO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02ODAtXFx0bXV0ZXhfbG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VzbG90c19sb2NrKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjgxOlxcdGt2bV9pb19idXNfdW5yZWdpc3Rlcl9kZXYoa3ZtLCBLVk1fSU9DU1JfQlVTLCBcXHUwMDI2ZWlvaW50Yy1cXHUwMDNlZGV2aWNlKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6NjgyOlxcdGt2bV9pb19idXNfdW5yZWdpc3Rlcl9kZXYoa3ZtLCBLVk1fSU9DU1JfQlVTLCBcXHUwMDI2ZWlvaW50Yy1cXHUwMDNlZGV2aWNlX3ZleHQpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02ODMtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZXNsb3RzX2xvY2spO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2ODQ6XFx0a2ZyZWUoZWlvaW50Yyk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY4NS1cXHRrZnJlZShkZXYpO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY4Ny1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Njg4OnN0YXRpYyBzdHJ1Y3Qga3ZtX2RldmljZV9vcHMga3ZtX2Vpb2ludGNfZGV2X29wcyA9IHtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Njg5OlxcdC5uYW1lID0gXFxcImt2bS1sb29uZ2FyY2gtZWlvaW50Y1xcXCIsXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjY5MDpcXHQuY3JlYXRlID0ga3ZtX2Vpb2ludGNfY3JlYXRlLFxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2OTE6XFx0LmRlc3Ryb3kgPSBrdm1fZWlvaW50Y19kZXN0cm95LFxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2OTI6XFx0LnNldF9hdHRyID0ga3ZtX2Vpb2ludGNfc2V0X2F0dHIsXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjY5MzpcXHQuZ2V0X2F0dHIgPSBrdm1fZWlvaW50Y19nZXRfYXR0cixcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjk0LX07XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY5NS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmM6Njk2OmludCBrdm1fbG9vbmdhcmNoX3JlZ2lzdGVyX2Vpb2ludGNfZGV2aWNlKHZvaWQpXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY5Ny17XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjY5ODpcXHRyZXR1cm4ga3ZtX3JlZ2lzdGVyX2RldmljZV9vcHMoXFx1MDAyNmt2bV9laW9pbnRjX2Rldl9vcHMsIEtWTV9ERVZfVFlQRV9MT09OR0FSQ0hfRUlPSU5UQyk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTY5OS19XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmMtNi0jaW5jbHVkZSBcXHUwMDNjYXNtL2t2bV9kbXNpbnRjLmhcXHUwMDNlXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jOjc6I2luY2x1ZGUgXFx1MDAzY2FzbS9rdm1fZWlvaW50Yy5oXFx1MDAzZVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy04LSNpbmNsdWRlIFxcdTAwM2Nhc20va3ZtX3BjaF9waWMuaFxcdTAwM2VcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy0xMS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmM6MTI6LyogdXBkYXRlIHRoZSBpc3IgYWNjb3JkaW5nIHRvIGlycSBsZXZlbCBhbmQgcm91dGUgaXJxIHRvIGVpb2ludGMgKi9cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmMtMTMtc3RhdGljIHZvaWQgcGNoX3BpY191cGRhdGVfaXJxKHN0cnVjdCBsb29uZ2FyY2hfcGNoX3BpYyAqcywgaW50IGlycSwgaW50IGxldmVsKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jLTE3LVxcdC8qXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jOjE4OlxcdCAqIHNldCBpc3IgYW5kIHJvdXRlIGlycSB0byBlaW9pbnRjIGFuZFxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy0xOS1cXHQgKiB0aGUgcm91dGUgdGFibGUgaXMgaW4gaHRtc2lfdmVjdG9yW11cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy0yNC1cXHRcXHRcXHRpcnEgPSBzLVxcdTAwM2VodG1zaV92ZWN0b3JbaXJxXTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmM6MjU6XFx0XFx0XFx0ZWlvaW50Y19zZXRfaXJxKHMtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC5laW9pbnRjLCBpcnEsIGxldmVsKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmMtMjYtXFx0XFx0fVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jLTMwLVxcdFxcdFxcdGlycSA9IHMtXFx1MDAzZWh0bXNpX3ZlY3RvcltpcnFdO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYzozMTpcXHRcXHRcXHRlaW9pbnRjX3NldF9pcnEocy1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLmVpb2ludGMsIGlycSwgbGV2ZWwpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYy0zMi1cXHRcXHR9XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmM9NzE9aW50IHBjaF9tc2lfc2V0X2lycShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplLCBpbnQgbGV2ZWwpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmMtODAtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jOjgxOlxcdGVpb2ludGNfc2V0X2lycShrdm0tXFx1MDAzZWFyY2guZWlvaW50YywgZS1cXHUwMDNlbXNpLmRhdGEsIGxldmVsKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmMtODItXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9wY2hfcGljLmM9ODY9c3RhdGljIGludCBsb29uZ2FyY2hfcGNoX3BpY19yZWFkKHN0cnVjdCBsb29uZ2FyY2hfcGNoX3BpYyAqcywgZ3BhX3QgYWRkciwgaW50IGxlbiwgdm9pZCAqdmFsKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jLTExNS1cXHRjYXNlIFBDSF9QSUNfUk9VVEVfRU5UUllfU1RBUlQgLi4uIFBDSF9QSUNfUk9VVEVfRU5UUllfRU5EOlxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL3BjaF9waWMuYzoxMTY6XFx0XFx0Lyogb25seSByb3V0ZSB0byBpbnQwOiBlaW9pbnRjICovXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvcGNoX3BpYy5jLTExNy1cXHRcXHRwdGVtcCA9IHMtXFx1MDAzZXJvdXRlX2VudHJ5ICsgKG9mZnNldCAtIFBDSF9QSUNfUk9VVEVfRU5UUllfU1RBUlQpO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYy0xMi0jaW5jbHVkZSBcXHUwMDNjYXNtL2t2bV9jc3IuaFxcdTAwM2VcXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jOjEzOiNpbmNsdWRlIFxcdTAwM2Nhc20va3ZtX2Vpb2ludGMuaFxcdTAwM2VcXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jLTE0LSNpbmNsdWRlIFxcdTAwM2Nhc20va3ZtX3BjaF9waWMuaFxcdTAwM2VcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmM9MzUwPXN0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9lbnZfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYy0zOTAtXFx0LyogUmVnaXN0ZXIgTG9vbmdBcmNoIEVJT0lOVEMgaW50ZXJydXB0IGNvbnRyb2xsZXIgaW50ZXJmYWNlLiAqL1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmM6MzkxOlxcdHJldCA9IGt2bV9sb29uZ2FyY2hfcmVnaXN0ZXJfZWlvaW50Y19kZXZpY2UoKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jLTM5Mi1cXHRpZiAocmV0KVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz0xNz1jb25zdCBzdHJ1Y3Qga3ZtX3N0YXRzX2Rlc2Mga3ZtX3ZjcHVfc3RhdHNfZGVzY1tdID0ge1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0yNS1cXHRTVEFUU19ERVNDX0NPVU5URVIoVkNQVSwgaXBpX3dyaXRlX2V4aXRzKSxcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjI2OlxcdFNUQVRTX0RFU0NfQ09VTlRFUihWQ1BVLCBlaW9pbnRjX3JlYWRfZXhpdHMpLFxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6Mjc6XFx0U1RBVFNfREVTQ19DT1VOVEVSKFZDUFUsIGVpb2ludGNfd3JpdGVfZXhpdHMpLFxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMjgtXFx0U1RBVFNfREVTQ19DT1VOVEVSKFZDUFUsIHBjaF9waWNfcmVhZF9leGl0cyksXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdm0uYy05LSNpbmNsdWRlIFxcdTAwM2Nhc20va3ZtX2Nzci5oXFx1MDAzZVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92bS5jOjEwOiNpbmNsdWRlIFxcdTAwM2Nhc20va3ZtX2Vpb2ludGMuaFxcdTAwM2VcXG5hcmNoL2xvb25nYXJjaC9rdm0vdm0uYy0xMS0jaW5jbHVkZSBcXHUwMDNjYXNtL2t2bV9wY2hfcGljLmhcXHUwMDNlXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdm0uYz0yMDk9Ym9vbCBrdm1fYXJjaF9pcnFjaGlwX2luX2tlcm5lbChzdHJ1Y3Qga3ZtICprdm0pXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmMtMjEwLXtcXG5hcmNoL2xvb25nYXJjaC9rdm0vdm0uYzoyMTE6XFx0cmV0dXJuIChrdm0tXFx1MDAzZWFyY2guaXBpIFxcdTAwMjZcXHUwMDI2IGt2bS1cXHUwMDNlYXJjaC5laW9pbnRjIFxcdTAwMjZcXHUwMDI2IGt2bS1cXHUwMDNlYXJjaC5wY2hfcGljKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vdm0uYy0yMTItfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNToyOToyMS4zMjc2NDA0ODJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDYyMjM1MzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS1ZNIENvbmZpZ3VyYXRpb24gYW5kIEFzc29jaWF0ZWQgRnVuY3Rpb25zKipcblxuT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBJJ20gd29ya2luZyB3aXRoIGlzIGNsZWFybHkgYEtWTWAuIEdvdCBpdC4gTm93LCBpdCBsb29rcyBsaWtlIEkndmUgYmVlbiBtb2RpZnlpbmcgc29tZSBmdW5jdGlvbnM6IHNwZWNpZmljYWxseSBgZWlvaW50Y19zZXRfc3dfY29yZWlzcmAgYW5kIGBlaW9pbnRjX3VwZGF0ZV9pcnFgLiBUaGVyZSdzIGFsc28gdGhpcyBuZXcgZnVuY3Rpb24sIGBlaW9pbnRjX2dldF9pcG51bWAsIHdoaWNoIGhhcyBiZWVuIGFkZGVkLiBNYWtlcyBzZW5zZS4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIGNoYW5nZXMgaW4gcmVsYXRpb24gdG8gdGhlIGJyb2FkZXIgYXJjaGl0ZWN0dXJlLlxuXG5CZWZvcmUgSSBnbyBmdXJ0aGVyLCBJIHNob3VsZCB2ZXJpZnkgdGhhdCBgS1ZNYCBpcyB0aGUgb25seSByZWxldmFudCBjb25maWcgaGVyZS4gSnVzdCB0byBiZSBzdXJlLCBsZXQncyB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGF0IGBhcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZ2AgZmlsZS4gSSdtIHN1cmUgSSd2ZSBhbHJlYWR5IGNoZWNrZWQgaXQsIGJ1dCBhIHF1aWNrIGRvdWJsZS1jaGVjayBjYW4ndCBodXJ0IGFuZCBpdCdsbCBoZWxwIHJlaW5mb3JjZSB0aGUgY29udGV4dC4gTm8gcG9pbnQgaW4gbWFraW5nIGFzc3VtcHRpb25zIHdoZW4gYSBxdWljayB2ZXJpZmljYXRpb24gaXMgcG9zc2libGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0ODU0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDU6Mjk6MjQuNzg5ODc3ODU2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzAzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBLVk0gY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRzb3VyY2UgXFxcInZpcnQva3ZtL0tjb25maWdcXFwiXFxuICAgNzpcXHRcXG4gICA4OlxcdG1lbnVjb25maWcgVklSVFVBTElaQVRJT05cXG4gICA5OlxcdFxcdGJvb2wgXFxcIlZpcnR1YWxpemF0aW9uXFxcIlxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBTYXkgWSBoZXJlIHRvIGdldCB0byBzZWUgb3B0aW9ucyBmb3IgdXNpbmcgeW91ciBMaW51eCBob3N0IHRvIHJ1blxcbiAgMTI6XFx0XFx0ICBvdGhlciBvcGVyYXRpbmcgc3lzdGVtcyBpbnNpZGUgdmlydHVhbCBtYWNoaW5lcyAoZ3Vlc3RzKS5cXG4gIDEzOlxcdFxcdCAgVGhpcyBvcHRpb24gYWxvbmUgZG9lcyBub3QgYWRkIGFueSBrZXJuZWwgY29kZS5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0XFx0ICBJZiB5b3Ugc2F5IE4sIGFsbCBvcHRpb25zIGluIHRoaXMgc3VibWVudSB3aWxsIGJlIHNraXBwZWQgYW5kXFxuICAxNjpcXHRcXHQgIGRpc2FibGVkLlxcbiAgMTc6XFx0XFxuICAxODpcXHRpZiBWSVJUVUFMSVpBVElPTlxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgS1ZNXFxuICAyMTpcXHRcXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBBU19IQVNfTFZaX0VYVEVOU0lPTiBcXHUwMDI2XFx1MDAyNiA2NEJJVFxcbiAgMjM6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0RJUlRZX1JJTkdfQUNRX1JFTFxcbiAgMjQ6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0lSUV9ST1VUSU5HXFxuICAyNTpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fSVJRQ0hJUFxcbiAgMjY6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX01TSVxcbiAgMjc6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX1JFQURPTkxZX01FTVxcbiAgMjg6XFx0XFx0c2VsZWN0IEtWTV9DT01NT05cXG4gIDI5OlxcdFxcdHNlbGVjdCBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcXG4gIDMwOlxcdFxcdHNlbGVjdCBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xcbiAgMzE6XFx0XFx0c2VsZWN0IEtWTV9NTUlPXFxuICAzMjpcXHRcXHRzZWxlY3QgVklSVF9YRkVSX1RPX0dVRVNUX1dPUktcXG4gIDMzOlxcdFxcdHNlbGVjdCBTQ0hFRF9JTkZPXFxuICAzNDpcXHRcXHRzZWxlY3QgR1VFU1RfUEVSRl9FVkVOVFMgaWYgUEVSRl9FVkVOVFNcXG4gIDM1OlxcdFxcdGhlbHBcXG4gIDM2OlxcdFxcdCAgU3VwcG9ydCBob3N0aW5nIHZpcnR1YWxpemVkIGd1ZXN0IG1hY2hpbmVzIHVzaW5nXFxuICAzNzpcXHRcXHQgIGhhcmR3YXJlIHZpcnR1YWxpemF0aW9uIGV4dGVuc2lvbnMuIFlvdSB3aWxsIG5lZWRcXG4gIDM4OlxcdFxcdCAgYSBwcm9jZXNzb3IgZXF1aXBwZWQgd2l0aCB2aXJ0dWFsaXphdGlvbiBleHRlbnNpb25zLlxcbiAgMzk6XFx0XFxuICA0MDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA0MTpcXHRcXG4gIDQyOlxcdGVuZGlmICMgVklSVFVBTElaQVRJT05cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDU6Mjk6MjQuNzg5OTQ5Njc2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgyNzY2NTk0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBMb29uZ0FyY2ggS1ZNIEludGVycnVwdCBDb250cm9sbGVyIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYEtWTWAgaXMgdGhlIG9ubHkgY29uZmlndXJhdGlvbiBvcHRpb24gd2UncmUgZGVhbGluZyB3aXRoIGhlcmUsIHdoaWNoIHNpbXBsaWZpZXMgdGhpbmdzLiBUaGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhpcyBhcmNoaXRlY3R1cmUgaXMgdGhyb3VnaCB0aGUgS1ZNIGlvY3RscyBmb3IgTG9vbmdBcmNoLCByaWdodD8gTXkgaW5pdGlhbCBndXQgZmVlbGluZyBpcyB0aGF0IGBlaW9pbnRjX3NldF9zd19jb3JlaXNyYCBhbmQgYGVpb2ludGNfdXBkYXRlX2lycWAgYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCBkZW1hbmQgdGhlIG1vc3QgYXR0ZW50aW9uLiBXYWl0IGEgc2Vjb25kLi4uIGlzbid0IGBlaW9pbnRjX2dldF9pcG51bWAgYSBzdGF0aWMgZnVuY3Rpb24/IFRoYXQgY291bGQgYmUgaW1wb3J0YW50IHRvby4gWWVwLCBJIHRoaW5rIHRoYXQncyB0aGUgcmVhbCBuZXcgZnVuY3Rpb24uXG5cbkFscmlnaHQsIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIGBhcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmNgIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGVpb2ludGNfc2V0X3N3X2NvcmVpc3JgIGFuZCBgZWlvaW50Y191cGRhdGVfaXJxYCwgYnV0IGVzcGVjaWFsbHkgYGVpb2ludGNfZ2V0X2lwbnVtYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdCBhbmQgaG93IHRoZXkgYXJlIGxldmVyYWdlZCBieSBLVk0gdG8gbWFuYWdlIGludGVycnVwdHMgb24gdGhpcyBwbGF0Zm9ybS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU3MjksIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwNToyOToyOC42MTc2MTc4MDRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2ODMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0LypcXG4gICAzOlxcdCAqIENvcHlyaWdodCAoQykgMjAyNCBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uIExpbWl0ZWRcXG4gICA0OlxcdCAqL1xcbiAgIDU6XFx0XFxuICAgNjpcXHQjaW5jbHVkZSBcXHUwMDNjYXNtL2t2bV9laW9pbnRjLmhcXHUwMDNlXFxuICAgNzpcXHQjaW5jbHVkZSBcXHUwMDNjYXNtL2t2bV92Y3B1LmhcXHUwMDNlXFxuICAgODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvY291bnRfemVyb3MuaFxcdTAwM2VcXG4gICA5OlxcdFxcbiAgMTA6XFx0c3RhdGljIGludCBlaW9pbnRjX2dldF9pcG51bShzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMsIGludCBpcnEpXFxuICAxMTpcXHR7XFxuICAxMjpcXHRcXHRpbnQgaXBudW0gPSAocy1cXHUwMDNlaXBtYXAgXFx1MDAzZVxcdTAwM2UgKGlycSAvIDMyICogOCkpIFxcdTAwMjYgMHhmZjtcXG4gIDEzOlxcdFxcbiAgMTQ6XFx0XFx0aWYgKCEocy1cXHUwMDNlc3RhdHVzIFxcdTAwMjYgQklUKEVJT0lOVENfRU5BQkxFX0lOVF9FTkNPREUpKSkge1xcbiAgMTU6XFx0XFx0XFx0aXBudW0gPSBjb3VudF90cmFpbGluZ196ZXJvcyhpcG51bSk7XFxuICAxNjpcXHRcXHRcXHRpcG51bSA9IGlwbnVtIFxcdTAwM2MgNCA/IGlwbnVtIDogMDtcXG4gIDE3OlxcdFxcdH0gZWxzZSB7XFxuICAxODpcXHRcXHRcXHRpcG51bSA9IChpcG51bSBcXHUwMDNjIExPT05HU09OX0lQX05VTSkgPyBpcG51bSA6IDA7XFxuICAxOTpcXHRcXHR9XFxuICAyMDpcXHRcXG4gIDIxOlxcdFxcdHJldHVybiBpcG51bTtcXG4gIDIyOlxcdH1cXG4gIDIzOlxcdFxcbiAgMjQ6XFx0c3RhdGljIHZvaWQgZWlvaW50Y19zZXRfc3dfY29yZWlzcihzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMpXFxuICAyNTpcXHR7XFxuICAyNjpcXHRcXHRpbnQgaXBudW0sIGNwdSwgY3B1aWQsIGlycTtcXG4gIDI3OlxcdFxcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcXG4gIDI4OlxcdFxcbiAgMjk6XFx0XFx0Zm9yIChpcnEgPSAwOyBpcnEgXFx1MDAzYyBFSU9JTlRDX0lSUVM7IGlycSsrKSB7XFxuICAzMDpcXHRcXHRcXHRpcG51bSA9IGVpb2ludGNfZ2V0X2lwbnVtKHMsIGlycSk7XFxuICAzMTpcXHRcXG4gIDMyOlxcdFxcdFxcdGNwdWlkID0gKCh1OCAqKXMtXFx1MDAzZWNvcmVtYXApW2lycV07XFxuICAzMzpcXHRcXHRcXHR2Y3B1ID0ga3ZtX2dldF92Y3B1X2J5X2NwdWlkKHMtXFx1MDAzZWt2bSwgY3B1aWQpO1xcbiAgMzQ6XFx0XFx0XFx0aWYgKCF2Y3B1KVxcbiAgMzU6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuICAzNjpcXHRcXG4gIDM3OlxcdFxcdFxcdGNwdSA9IHZjcHUtXFx1MDAzZXZjcHVfaWQ7XFxuICAzODpcXHRcXHRcXHRpZiAodGVzdF9iaXQoaXJxLCAodW5zaWduZWQgbG9uZyAqKXMtXFx1MDAzZWNvcmVpc3JbY3B1XSkpXFxuICAzOTpcXHRcXHRcXHRcXHRfX3NldF9iaXQoaXJxLCBzLVxcdTAwM2Vzd19jb3JlaXNyW2NwdV1baXBudW1dKTtcXG4gIDQwOlxcdFxcdFxcdGVsc2VcXG4gIDQxOlxcdFxcdFxcdFxcdF9fY2xlYXJfYml0KGlycSwgcy1cXHUwMDNlc3dfY29yZWlzcltjcHVdW2lwbnVtXSk7XFxuICA0MjpcXHRcXHR9XFxuICA0MzpcXHR9XFxuICA0NDpcXHRcXG4gIDQ1OlxcdHN0YXRpYyB2b2lkIGVpb2ludGNfdXBkYXRlX2lycShzdHJ1Y3QgbG9vbmdhcmNoX2Vpb2ludGMgKnMsIGludCBpcnEsIGludCBsZXZlbClcXG4gIDQ2OlxcdHtcXG4gIDQ3OlxcdFxcdGludCBpcG51bSwgY3B1LCBmb3VuZDtcXG4gIDQ4OlxcdFxcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcXG4gIDQ5OlxcdFxcdHN0cnVjdCBrdm1faW50ZXJydXB0IHZjcHVfaXJxO1xcbiAgNTA6XFx0XFxuICA1MTpcXHRcXHRpcG51bSA9IGVpb2ludGNfZ2V0X2lwbnVtKHMsIGlycSk7XFxuICA1MjpcXHRcXG4gIDUzOlxcdFxcdGNwdSA9IHMtXFx1MDAzZXN3X2NvcmVtYXBbaXJxXTtcXG4gIDU0OlxcdFxcdHZjcHUgPSBrdm1fZ2V0X3ZjcHVfYnlfaWQocy1cXHUwMDNla3ZtLCBjcHUpO1xcbiAgNTU6XFx0XFx0aWYgKHVubGlrZWx5KHZjcHUgPT0gTlVMTCkpIHtcXG4gIDU2OlxcdFxcdFxcdGt2bV9lcnIoXFxcIiVzOiBpbnZhbGlkIHRhcmdldCBjcHU6ICVkXFxcXG5cXFwiLCBfX2Z1bmNfXywgY3B1KTtcXG4gIDU3OlxcdFxcdFxcdHJldHVybjtcXG4gIDU4OlxcdFxcdH1cXG4gIDU5OlxcdFxcbiAgNjA6XFx0XFx0aWYgKGxldmVsKSB7XFxuICA2MTpcXHRcXHRcXHQvKiBpZiBub3QgZW5hYmxlIHJldHVybiBmYWxzZSAqL1xcbiAgNjI6XFx0XFx0XFx0aWYgKCF0ZXN0X2JpdChpcnEsICh1bnNpZ25lZCBsb25nICopcy1cXHUwMDNlZW5hYmxlKSlcXG4gIDYzOlxcdFxcdFxcdFxcdHJldHVybjtcXG4gIDY0OlxcdFxcdFxcdF9fc2V0X2JpdChpcnEsICh1bnNpZ25lZCBsb25nICopcy1cXHUwMDNlY29yZWlzcltjcHVdKTtcXG4gIDY1OlxcdFxcdFxcdGZvdW5kID0gZmluZF9maXJzdF9iaXQocy1cXHUwMDNlc3dfY29yZWlzcltjcHVdW2lwbnVtXSwgRUlPSU5UQ19JUlFTKTtcXG4gIDY2OlxcdFxcdFxcdF9fc2V0X2JpdChpcnEsIHMtXFx1MDAzZXN3X2NvcmVpc3JbY3B1XVtpcG51bV0pO1xcbiAgNjc6XFx0XFx0fSBlbHNlIHtcXG4gIDY4OlxcdFxcdFxcdF9fY2xlYXJfYml0KGlycSwgKHVuc2lnbmVkIGxvbmcgKilzLVxcdTAwM2Vjb3JlaXNyW2NwdV0pO1xcbiAgNjk6XFx0XFx0XFx0X19jbGVhcl9iaXQoaXJxLCBzLVxcdTAwM2Vzd19jb3JlaXNyW2NwdV1baXBudW1dKTtcXG4gIDcwOlxcdFxcdFxcdGZvdW5kID0gZmluZF9maXJzdF9iaXQocy1cXHUwMDNlc3dfY29yZWlzcltjcHVdW2lwbnVtXSwgRUlPSU5UQ19JUlFTKTtcXG4gIDcxOlxcdFxcdH1cXG4gIDcyOlxcdFxcbiAgNzM6XFx0XFx0aWYgKGZvdW5kIFxcdTAwM2MgRUlPSU5UQ19JUlFTKVxcbiAgNzQ6XFx0XFx0XFx0cmV0dXJuOyAvKiBvdGhlciBpcnEgaXMgaGFuZGxpbmcsIG5lZWRuJ3QgdXBkYXRlIHBhcmVudCBpcnEgKi9cXG4gIDc1OlxcdFxcbiAgNzY6XFx0XFx0dmNwdV9pcnEuaXJxID0gbGV2ZWwgPyAoSU5UX0hXSTAgKyBpcG51bSkgOiAtKElOVF9IV0kwICsgaXBudW0pO1xcbiAgNzc6XFx0XFx0a3ZtX3ZjcHVfaW9jdGxfaW50ZXJydXB0KHZjcHUsIFxcdTAwMjZ2Y3B1X2lycSk7XFxuICA3ODpcXHR9XFxuICA3OTpcXHRcXG4gIDgwOlxcdHN0YXRpYyBpbmxpbmUgdm9pZCBlaW9pbnRjX3VwZGF0ZV9zd19jb3JlbWFwKHN0cnVjdCBsb29uZ2FyY2hfZWlvaW50YyAqcyxcXG4gIDgxOlxcdFxcdFxcdFxcdFxcdFxcdGludCBpcnEsIHU2NCB2YWwsIHUzMiBsZW4sIGJvb2wgbm90aWZ5KVxcbiAgODI6XFx0e1xcbiAgODM6XFx0XFx0aW50IGksIGNwdSwgY3B1aWQ7XFxuICA4NDpcXHRcXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7XFxuICA4NTpcXHRcXG4gIDg2OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBsZW47IGkrKykge1xcbiAgODc6XFx0XFx0XFx0Y3B1aWQgPSB2YWwgXFx1MDAyNiAweGZmO1xcbiAgODg6XFx0XFx0XFx0dmFsID0gdmFsIFxcdTAwM2VcXHUwMDNlIDg7XFxuICA4OTpcXHRcXG4gIDkwOlxcdFxcdFxcdGlmICghKHMtXFx1MDAzZXN0YXR1cyBcXHUwMDI2IEJJVChFSU9JTlRDX0VOQUJMRV9DUFVfRU5DT0RFKSkpIHtcXG4gIDkxOlxcdFxcdFxcdFxcdGNwdWlkID0gZmZzKGNwdWlkKSAtIDE7XFxuICA5MjpcXHRcXHRcXHRcXHRjcHVpZCA9ICgoY3B1aWQgXFx1MDAzYyAwKSB8fCAoY3B1aWQgXFx1MDAzZT0gNCkpID8gMCA6IGNwdWlkO1xcbiAgOTM6XFx0XFx0XFx0fVxcbiAgOTQ6XFx0XFxuICA5NTpcXHRcXHRcXHR2Y3B1ID0ga3ZtX2dldF92Y3B1X2J5X2NwdWlkKHMtXFx1MDAzZWt2bSwgY3B1aWQpO1xcbiAgOTY6XFx0XFx0XFx0aWYgKCF2Y3B1KVxcbiAgOTc6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuICA5ODpcXHRcXG4gIDk5OlxcdFxcdFxcdGNwdSA9IHZjcHUtXFx1MDAzZXZjcHVfaWQ7XFxuIDEwMDpcXHRcXHRcXHRpZiAocy1cXHUwMDNlc3dfY29yZW1hcFtpcnEgKyBpXSA9PSBjcHUpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA1OjI5OjI4LjYxNzc2NzIyNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjU3NDM0NDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTG9vbmdBcmNoIEtWTSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIEtWTSBsb2dpYyBmb3IgTG9vbmdBcmNoIOKAkyB0aGF0IG11Y2ggaXMgY2xlYXIuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gaWRlbnRpZnkgdGhlIGVuYWJsaW5nIGNvbmZpZ3VyYXRpb25zLCBhbmQgaXQgbG9va3MgbGlrZSBgS1ZNYCBpcyB0aGUga2V5LiBOb3csIEkgc2hvdWxkIG1ha2UgYSBub3RlIG9mIHRoZSBzeW1ib2xzIGFmZmVjdGVkIHRvIGhlbHAgd2l0aCBhbnkgcG90ZW50aWFsIGRlYnVnZ2luZyBkb3duIHRoZSBsaW5lLCBzbyB0aGUgbWFpbiBmb2N1cyBwb2ludHMgaGVyZSBhcmUgYGVpb2ludGNfZ2V0X2lwbnVtYCwgYGVpb2ludGNfc2V0X3N3X2NvcmVpc3JgLCBhbmQgYGVpb2ludGNfdXBkYXRlX2lycWAuIEhtbSwgYGVpb2ludGNfZ2V0X2lwbnVtYCBpcyBzdGF0aWM7IGl0J3MgcHJvYmFibHkgaW5saW5lZCBidXQgc3RpbGwgd29ydGggbGlzdGluZyBpdCBmb3IgY29tcGxldGVuZXNzLlxuXG5MZXQncyBxdWlja2x5IGNvbmZpcm0gdGhhdCBgS1ZNYCBhbG9uZSBpcyBzdWZmaWNpZW50IGZvciBlbmFibGluZyB0aGUgZmVhdHVyZXMuIFllcCwgYEtWTWAgaXMgaW5kZWVkIHRoZSBwcmltYXJ5IEtWTSBjb25maWcgZm9yIExvb25nQXJjaC4gSXMgdGhlcmUgYW55dGhpbmcgZWxzZSB3ZSBuZWVkIHRvIGNvbnNpZGVyPyBJJ2xsIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBmaWxlIHdpdGhpbiB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEtWTSBkaXJlY3Rvcnkg4oCTIGBhcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZ2AuIFJpZ2h0LCBJIHNlZSBpdCBub3c6IGBjb25maWcgS1ZNYCBhbHNvIGRlcGVuZHMgb24gYEFTX0hBU19MVlpfRVhURU5TSU9OIFx1MDAyNlx1MDAyNiA2NEJJVGAuIFNvLCB3aXRoIHRob3NlIHByZXJlcXVpc2l0ZXMgaGFuZGxlZCwgZW5hYmxpbmcgYEtWTWAgc2hvdWxkIGJlIHN1ZmZpY2llbnQuIE9rYXksIEknbSBjb25maWRlbnQgaW4gdGhhdCBhbmFseXNpcy4gVGltZSB0byBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc3OTYsIk91dHB1dFRva2VucyI6MTM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDU6Mjk6MzMuODc1MjA0OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3Mjc2NDg4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZWlvaW50Y19nZXRfaXBudW1cIixcbiAgICBcImVpb2ludGNfc2V0X3N3X2NvcmVpc3JcIixcbiAgICBcImVpb2ludGNfdXBkYXRlX2lycVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBMb29uZ0FyY2ggS1ZNIGludGVycnVwdCBjb250cm9sbGVyIChlaW9pbnRjKSBsb2dpYyBieSBleHRyYWN0aW5nIGFuZCB1cGRhdGluZyB0aGUgSVAgbnVtYmVyIGNhbGN1bGF0aW9uIGludG8gYSBuZXcgZnVuY3Rpb24gYGVpb2ludGNfZ2V0X2lwbnVtYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgS1ZNIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlaW9pbnRjX2dldF9pcG51bVwiLFxuICAgIFwiZWlvaW50Y19zZXRfc3dfY29yZWlzclwiLFxuICAgIFwiZWlvaW50Y191cGRhdGVfaXJxXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIExvb25nQXJjaCBLVk0gaW50ZXJydXB0IGNvbnRyb2xsZXIgKGVpb2ludGMpIGxvZ2ljIGJ5IGV4dHJhY3RpbmcgYW5kIHVwZGF0aW5nIHRoZSBJUCBudW1iZXIgY2FsY3VsYXRpb24gaW50byBhIG5ldyBmdW5jdGlvbiBgZWlvaW50Y19nZXRfaXBudW1gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEtWTSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBLVk0gaW9jdGxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowdc6bh[1] Phase: Succeeded StartedAt: 2026-07-14 05:29:45 +0000 UTC FinishedAt: 2026-07-14 05:29:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdc6bh[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-14 05:29:45 +0000 UTC FinishedAt: 2026-07-14 05:29:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdc6bh[2] Phase: Succeeded StartedAt: 2026-07-14 05:29:45 +0000 UTC FinishedAt: 2026-07-14 07:05:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-14 05:29:45 +0000 UTC FinishedAt: 2026-07-14 07:05:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-14 05:29:45 +0000 UTC FinishedAt: 2026-07-14 05:30:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-14 05:29:45 +0000 UTC FinishedAt: 2026-07-14 05:29:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowdc6bh/series-workflowdc6bh-convert-artifact-4069064633/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-14 05:30:05 +0000 UTC FinishedAt: 2026-07-14 06:10:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-14 05:30:05 +0000 UTC FinishedAt: 2026-07-14 06:10:54 +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:*e39684a0-64a9-47fe-8ac1-7445ce8f0653,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-workflowdc6bh/series-workflowdc6bh-convert-artifact-4069064633/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": "7ea9e40c-41d3-454a-9ea7-36d912d56a24", "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-workflowdc6bh/series-workflowdc6bh-build-action-1355640023/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-14 05:30:05 +0000 UTC FinishedAt: 2026-07-14 06:10:43 +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:*e39684a0-64a9-47fe-8ac1-7445ce8f0653,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-workflowdc6bh/series-workflowdc6bh-convert-artifact-4069064633/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": "7ea9e40c-41d3-454a-9ea7-36d912d56a24", "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-workflowdc6bh/series-workflowdc6bh-build-action-1355640023/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-14 06:10:54 +0000 UTC FinishedAt: 2026-07-14 06:10:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-14 06:10:54 +0000 UTC FinishedAt: 2026-07-14 06:10:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-14 06:10:54 +0000 UTC FinishedAt: 2026-07-14 06:11:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-14 06:10:54 +0000 UTC FinishedAt: 2026-07-14 06:11:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowdc6bh/series-workflowdc6bh-convert-artifact-2070918540/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-14 06:11:14 +0000 UTC FinishedAt: 2026-07-14 06:13:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-14 06:11:14 +0000 UTC FinishedAt: 2026-07-14 06:12:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7ea9e40c-41d3-454a-9ea7-36d912d56a24,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-workflowdc6bh/series-workflowdc6bh-build-action-1355640023/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-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-14 06:13:06 +0000 UTC FinishedAt: 2026-07-14 06:13:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-14 06:13:06 +0000 UTC FinishedAt: 2026-07-14 06:13:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-14 06:13:06 +0000 UTC FinishedAt: 2026-07-14 06:59:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-14 06:13:06 +0000 UTC FinishedAt: 2026-07-14 06:59:42 +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:*e39684a0-64a9-47fe-8ac1-7445ce8f0653,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-workflowdc6bh/series-workflowdc6bh-convert-artifact-2070918540/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": "3e4c2d2f-b899-4f1b-9119-662f5b4b56a0", "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-workflowdc6bh/series-workflowdc6bh-build-action-3512342952/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-14 06:13:06 +0000 UTC FinishedAt: 2026-07-14 06:58:59 +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:*e39684a0-64a9-47fe-8ac1-7445ce8f0653,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-workflowdc6bh/series-workflowdc6bh-convert-artifact-2070918540/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": "3e4c2d2f-b899-4f1b-9119-662f5b4b56a0", "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-workflowdc6bh/series-workflowdc6bh-build-action-3512342952/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-14 06:59:42 +0000 UTC FinishedAt: 2026-07-14 06:59:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-14 06:59:42 +0000 UTC FinishedAt: 2026-07-14 06:59:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-14 06:59:42 +0000 UTC FinishedAt: 2026-07-14 07:01:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-14 06:59:42 +0000 UTC FinishedAt: 2026-07-14 07:01:34 +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:*3e4c2d2f-b899-4f1b-9119-662f5b4b56a0,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-workflowdc6bh/series-workflowdc6bh-build-action-3512342952/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-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-14 07:01:57 +0000 UTC FinishedAt: 2026-07-14 07:01:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-14 07:01:57 +0000 UTC FinishedAt: 2026-07-14 07:01:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-14 07:01:59 +0000 UTC FinishedAt: 2026-07-14 07:05:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-14 07:02:01 +0000 UTC FinishedAt: 2026-07-14 07:05:00 +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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"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:*7ea9e40c-41d3-454a-9ea7-36d912d56a24,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3e4c2d2f-b899-4f1b-9119-662f5b4b56a0,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-workflowdc6bh/series-workflowdc6bh-build-action-1355640023/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-workflowdc6bh/series-workflowdc6bh-build-action-3512342952/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-14 07:02:01 +0000 UTC FinishedAt: 2026-07-14 07:02:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-14 07:02:02 +0000 UTC FinishedAt: 2026-07-14 07:02:12 +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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"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-workflowdc6bh/series-workflowdc6bh-convert-artifact-1961414901/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-14 07:02:09 +0000 UTC FinishedAt: 2026-07-14 07:02:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-14 07:02:37 +0000 UTC FinishedAt: 2026-07-14 07:05:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdc6bh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["eiointc_get_ipnum","eiointc_set_sw_coreisr","eiointc_update_irq"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e3a96bd2-82c1-46b5-9a80-0393e1f0ffb2","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-14 07:02:37 +0000 UTC FinishedAt: 2026-07-14 07:04:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7ea9e40c-41d3-454a-9ea7-36d912d56a24,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3e4c2d2f-b899-4f1b-9119-662f5b4b56a0,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-workflowdc6bh/series-workflowdc6bh-build-action-1355640023/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-workflowdc6bh/series-workflowdc6bh-build-action-3512342952/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-workflowdc6bh/series-workflowdc6bh-convert-artifact-1961414901/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,}