Name: series-workflow4c94f Phase: Succeeded StartedAt: 2026-08-10 18:17:37 +0000 UTC FinishedAt: 2026-08-10 22:44:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c94f[0] Phase: Succeeded StartedAt: 2026-08-10 18:17:37 +0000 UTC FinishedAt: 2026-08-10 19:00:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c94f[0].run-triage Phase: Succeeded StartedAt: 2026-08-10 18:17:37 +0000 UTC FinishedAt: 2026-08-10 19:00:04 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dd057113ac7ba5bdd2aed3d9405305911152f911", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BATMAN_ADV", "BATMAN_ADV_MCAST" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dd057113ac7ba5bdd2aed3d9405305911152f911", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BATMAN_ADV", "BATMAN_ADV_MCAST" ], "series_id": "172f8ce8-d496-40b4-bd99-b1f4308e8e12" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "batadv_tvlv_containers_process", "batadv_recv_mcast_packet" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE4OjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JBVE1BTl9BRFYmIzM0OywKICAgICYjMzQ7QkFUTUFOX0FEVl9NQ0FTVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2VzcyYjMzQ7LAogICAgJiMzNDtiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgaGFyZGVuZWQgdmVyc2lvbiBvZiBgc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyYCAoYHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsYCkgd2hpY2ggY2hlY2tzIGZvciBpbnRlZ2VyIHRydW5jYXRpb24gYW5kIGludmFsaWQgb2Zmc2V0cyAoZS5nLiwgYH4wVWApIHdoZW4gc2V0dGluZyB0aGUgYHNrYi1cdTAwM2V0cmFuc3BvcnRfaGVhZGVyYCBmaWVsZC4gSXQgdGhlbiBhcHBsaWVzIHRoaXMgbmV3IGZ1bmN0aW9uIGluIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgIHRvIHByZXZlbnQgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgY2F1c2VkIGJ5IDE2LWJpdCB0cnVuY2F0aW9uIG9mIHRoZSB0cmFuc3BvcnQgaGVhZGVyIG9mZnNldC4gVGhlc2UgY2hhbmdlcyBhcmUgZGVzaWduZWQgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIHdyaXRlcywgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmUgaXMgbm8gYWxsb2NhdGlvbiBvZiBuZXcgYnVmZmVycywgbm8gY2hhbmdlcyB0byBob3cgdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgaGFuZGxlZCwgYW5kIG5vIHN0cnVjdHVyZXMgYmVpbmcgY29waWVkIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBsZWFrIHVuaW5pdGlhbGl6ZWQgYnl0ZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBoYXJkZW5lZCB2ZXJzaW9uIG9mIHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlciBhbmQgdXNlcyBpdCBpbiBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXIgdG8gZml4IGEgcG90ZW50aWFsIGlzc3VlIHdpdGggdHJhbnNwb3J0IGhlYWRlciBvZmZzZXQgY2FsY3VsYXRpb24gZm9yIG11bHRpY2FzdCBwYWNrZXRzIGluIGJhdG1hbi1hZHYuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxODo1ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGEwMzQ2Nzg2ZTY1YjlmNDU4MWM3OWMwOWE2OGJkZjU4YTQ3OTI4YjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxMCAxODo1ODo0NyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIGIvaW5jbHVkZS9saW51eC9za2J1ZmYuaFxuaW5kZXggMjJlZGExZDU0YTBlOC4uZGJlY2VhZjVjM2IzOSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvc2tidWZmLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvc2tidWZmLmhcbkBAIC0zMTI2LDYgJiM0MzszMTI2LDMyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHNrYi1cdTAwM2V0cmFuc3BvcnRfaGVhZGVyICYjNDM7PSBvZmZzZXQ7XG4gfVxuIFxuJiM0MzsvKipcbiYjNDM7ICogc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWwgLSBjb25kaXRpb25hbGx5IHNldCB0cmFuc3BvcnQgaGVhZGVyXG4mIzQzOyAqIEBza2I6IGJ1ZmZlciB0byBhbHRlclxuJiM0MzsgKiBAb2Zmc2V0OiBvZmZzZXQgdG8gYWRkIHRvIHNrYi1cdTAwM2VkYXRhXG4mIzQzOyAqXG4mIzQzOyAqIEhhcmRlbmVkIHZlcnNpb24gb2Ygc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyKCkuXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybnM6IHRydWUgaWYgdGhlIG9wZXJhdGlvbiB3YXMgYSBzdWNjZXNzLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGlubGluZSBib29sIF9fbXVzdF9jaGVja1xuJiM0Mztza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJfY2FyZWZ1bChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBpbnQgb2Zmc2V0KVxuJiM0Mzt7XG4mIzQzO1x0bG9uZyB0cmFuc3BvcnRfb2Zmc2V0ID0gc2tiLVx1MDAzZWRhdGEgLSBza2ItXHUwMDNlaGVhZCAmIzQzOyBvZmZzZXQ7XG4mIzQzO1xuJiM0MztcdGlmICh1bmxpa2VseSh0cmFuc3BvcnRfb2Zmc2V0ICE9XG4mIzQzO1x0XHQgICAgICh0eXBlb2Yoc2tiLVx1MDAzZXRyYW5zcG9ydF9oZWFkZXIpKXRyYW5zcG9ydF9vZmZzZXQpKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRpZiAodW5saWtlbHkodHJhbnNwb3J0X29mZnNldCA9PVxuJiM0MztcdFx0ICAgICAodHlwZW9mKHNrYi1cdTAwM2V0cmFuc3BvcnRfaGVhZGVyKSl+MFUpKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRza2ItXHUwMDNldHJhbnNwb3J0X2hlYWRlciA9IHRyYW5zcG9ydF9vZmZzZXQ7XG4mIzQzO1x0cmV0dXJuIHRydWU7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyICpza2JfbmV0d29ya19oZWFkZXIoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRyZXR1cm4gc2tiLVx1MDAzZWhlYWQgJiM0Mzsgc2tiLVx1MDAzZW5ldHdvcmtfaGVhZGVyO1xuZGlmZiAtLWdpdCBhL25ldC9iYXRtYW4tYWR2L3R2bHYuYyBiL25ldC9iYXRtYW4tYWR2L3R2bHYuY1xuaW5kZXggMWM5ZmIyMTk4NWY2YS4uYzM4NGRiMTZiY2FjMSAxMDA2NDRcbi0tLSBhL25ldC9iYXRtYW4tYWR2L3R2bHYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JhdG1hbi1hZHYvdHZsdi5jXG5AQCAtNDMzLDggJiM0Mzs0MzMsMTEgQEAgc3RhdGljIGludCBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXIoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbiBcdFx0XHRyZXR1cm4gTkVUX1JYX1NVQ0NFU1M7XG4gXG4gXHRcdHR2bHZfb2Zmc2V0ID0gKHVuc2lnbmVkIGNoYXIgKil0dmx2X3ZhbHVlIC0gc2tiLVx1MDAzZWRhdGE7XG4mIzQzO1x0XHRpZiAoIXNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsKHNrYixcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICAgdHZsdl9vZmZzZXQgJiM0MzsgdHZsdl92YWx1ZV9sZW4pKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4gXHRcdHNrYl9zZXRfbmV0d29ya19oZWFkZXIoc2tiLCB0dmx2X29mZnNldCk7XG4tXHRcdHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcihza2IsIHR2bHZfb2Zmc2V0ICYjNDM7IHR2bHZfdmFsdWVfbGVuKTtcbiBcbiBcdFx0cmV0dXJuIHR2bHZfaGFuZGxlci1cdTAwM2VtY2FzdF9oYW5kbGVyKGJhdF9wcml2LCBza2IpO1xuIFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE4OjU4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCQVRNQU5fQURWJiMzNDssCiAgICAmIzM0O0JBVE1BTl9BRFZfTUNBU1QmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3MmIzM0OywKICAgICYjMzQ7YmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBoYXJkZW5lZCB2ZXJzaW9uIG9mIHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlciBhbmQgdXNlcyBpdCBpbiBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXIgdG8gZml4IGEgcG90ZW50aWFsIGlzc3VlIHdpdGggdHJhbnNwb3J0IGhlYWRlciBvZmZzZXQgY2FsY3VsYXRpb24gZm9yIG11bHRpY2FzdCBwYWNrZXRzIGluIGJhdG1hbi1hZHYuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGEwMzQ2Nzg2ZTY1YjlmNDU4MWM3OWMwOWE2OGJkZjU4YTQ3OTI4YjAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAxMCAxODo1ODo0NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2tidWZmLmggYi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oCmluZGV4IDIyZWRhMWQ1NGEwZTguLmRiZWNlYWY1YzNiMzkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc2tidWZmLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9za2J1ZmYuaApAQCAtMzEyNiw2ICYjNDM7MzEyNiwzMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsCiAJc2tiLSZndDt0cmFuc3BvcnRfaGVhZGVyICYjNDM7PSBvZmZzZXQ7CiB9CiAKJiM0MzsvKioKJiM0MzsgKiBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJfY2FyZWZ1bCAtIGNvbmRpdGlvbmFsbHkgc2V0IHRyYW5zcG9ydCBoZWFkZXIKJiM0MzsgKiBAc2tiOiBidWZmZXIgdG8gYWx0ZXIKJiM0MzsgKiBAb2Zmc2V0OiBvZmZzZXQgdG8gYWRkIHRvIHNrYi0mZ3Q7ZGF0YQomIzQzOyAqCiYjNDM7ICogSGFyZGVuZWQgdmVyc2lvbiBvZiBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXIoKS4KJiM0MzsgKgomIzQzOyAqIFJldHVybnM6IHRydWUgaWYgdGhlIG9wZXJhdGlvbiB3YXMgYSBzdWNjZXNzLgomIzQzOyAqLwomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBfX211c3RfY2hlY2sKJiM0Mztza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJfY2FyZWZ1bChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBpbnQgb2Zmc2V0KQomIzQzO3sKJiM0MzsJbG9uZyB0cmFuc3BvcnRfb2Zmc2V0ID0gc2tiLSZndDtkYXRhIC0gc2tiLSZndDtoZWFkICYjNDM7IG9mZnNldDsKJiM0MzsKJiM0MzsJaWYgKHVubGlrZWx5KHRyYW5zcG9ydF9vZmZzZXQgIT0KJiM0MzsJCSAgICAgKHR5cGVvZihza2ItJmd0O3RyYW5zcG9ydF9oZWFkZXIpKXRyYW5zcG9ydF9vZmZzZXQpKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwlpZiAodW5saWtlbHkodHJhbnNwb3J0X29mZnNldCA9PQomIzQzOwkJICAgICAodHlwZW9mKHNrYi0mZ3Q7dHJhbnNwb3J0X2hlYWRlcikpfjBVKSkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJc2tiLSZndDt0cmFuc3BvcnRfaGVhZGVyID0gdHJhbnNwb3J0X29mZnNldDsKJiM0MzsJcmV0dXJuIHRydWU7CiYjNDM7fQomIzQzOwogc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyICpza2JfbmV0d29ya19oZWFkZXIoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlyZXR1cm4gc2tiLSZndDtoZWFkICYjNDM7IHNrYi0mZ3Q7bmV0d29ya19oZWFkZXI7CmRpZmYgLS1naXQgYS9uZXQvYmF0bWFuLWFkdi90dmx2LmMgYi9uZXQvYmF0bWFuLWFkdi90dmx2LmMKaW5kZXggMWM5ZmIyMTk4NWY2YS4uYzM4NGRiMTZiY2FjMSAxMDA2NDQKLS0tIGEvbmV0L2JhdG1hbi1hZHYvdHZsdi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9iYXRtYW4tYWR2L3R2bHYuYwpAQCAtNDMzLDggJiM0Mzs0MzMsMTEgQEAgc3RhdGljIGludCBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXIoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdiwKIAkJCXJldHVybiBORVRfUlhfU1VDQ0VTUzsKIAogCQl0dmx2X29mZnNldCA9ICh1bnNpZ25lZCBjaGFyICopdHZsdl92YWx1ZSAtIHNrYi0mZ3Q7ZGF0YTsKJiM0MzsJCWlmICghc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWwoc2tiLAomIzQzOwkJCQkJCSAgICAgIHR2bHZfb2Zmc2V0ICYjNDM7IHR2bHZfdmFsdWVfbGVuKSkKJiM0MzsJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKIAkJc2tiX3NldF9uZXR3b3JrX2hlYWRlcihza2IsIHR2bHZfb2Zmc2V0KTsKLQkJc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyKHNrYiwgdHZsdl9vZmZzZXQgJiM0MzsgdHZsdl92YWx1ZV9sZW4pOwogCiAJCXJldHVybiB0dmx2X2hhbmRsZXItJmd0O21jYXN0X2hhbmRsZXIoYmF0X3ByaXYsIHNrYik7CiAJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxODo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDg0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYmF0bWFuLWFkdiBQYXRjaCoqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBhIG5ldyBwYXRjaCwgYW5kIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgaW50cm9kdWNpbmcgYHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsYCBpbiBgaW5jbHVkZS9saW51eC9za2J1ZmYuaGAuIFRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgdXNlcyBpdCB3aXRoaW4gYG5ldC9iYXRtYW4tYWR2L3R2bHYuY2AsIGluc2lkZSB0aGUgYGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcmAgZnVuY3Rpb24uIE15IGZpcnN0IHRob3VnaHQgaXMsIHRoaXMgd2FycmFudHMgYSBjbG9zZXIgbG9vayBhdCBib3RoIGBuZXQvYmF0bWFuLWFkdi90dmx2LmNgIGFuZCBzcGVjaWZpY2FsbHkgYXQgdGhlIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgIGZ1bmN0aW9uIGl0c2VsZi4gSSBzZWUgdGhpcyBpcyBwYXJ0IG9mIGJhdG1hbi1hZHYuCgpHaXZlbiB0aGF0IGJhdG1hbi1hZHYgaXMgYSBuZXR3b3JrIHByb3RvY29sLCBJIG5lZWQgdG8gY29uc2lkZXIgcG90ZW50aWFsIGZ1enppbmcgdmVjdG9ycy4gQ2FuIEkgcmVhY2ggaXQgd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudD8gWWVzLCBzaW5jZSBpdHMgYSBuZXR3b3JrIHByb3RvY29sLCBJIHNob3VsZCBiZSBhYmxlIHRvIGZ1enogaXQgdXNpbmcgbmV0bGluayBvciBieSBpbmplY3RpbmcgcGFja2V0cy4gVGhpcyBzdWdnZXN0cyBhIGdvb2QgYXZlbnVlIGZvciB2dWxuZXJhYmlsaXR5IGRpc2NvdmVyeSBpZiB0aGUgcGF0Y2ggaW50cm9kdWNlcyB1bmV4cGVjdGVkIGJlaGF2aW9yLgoKTmV4dCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gQSBxdWljayBjaGVjayBvZiBgbmV0L2JhdG1hbi1hZHYvS2NvbmZpZ2Agd2lsbCByZXZlYWwgdGhlIGNvbmZpZ3VyYXRpb24gc3ltYm9sIOKAkyBJJiMzOTttIGJldHRpbmcgb24gYEJBVE1BTl9BRFZgLCBidXQgSSYjMzk7bGwgY29uZmlybS4KCk5vdywgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgY29kZS4gVGltZSB0byBzY3J1dGluaXplIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgIHdpdGhpbiBgbmV0L2JhdG1hbi1hZHYvdHZsdi5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgYHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsYCBpcyBiZWluZyB1c2VkIGluIHRoaXMgY29udGV4dC4gUG90ZW50aWFsIG9mZi1ieS1vbmUgZXJyb3JzIG9yIG1pc3VzZSBvZiB0aGUgZnVuY3Rpb24gYXJlIGltbWVkaWF0ZWx5IG9uIG15IHJhZGFyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE4OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JhdGFkdl90dmx2X2NhbGxfaGFuZGxlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9iYXRtYW4tYWR2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYmF0bWFuLWFkdi90dmx2LmM9MzI5PWludCBiYXRhZHZfdHZsdl9jb250YWluZXJfb2dtX2FwcGVuZChzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxuLS1cbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy0zNzUtLyoqXG5uZXQvYmF0bWFuLWFkdi90dmx2LmM6Mzc2OiAqIGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcigpIC0gcGFyc2UgdGhlIGdpdmVuIHR2bHYgYnVmZmVyIHRvIGNhbGwgdGhlXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtMzc3LSAqICBhcHByb3ByaWF0ZSBoYW5kbGVyc1xuLS1cbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy0zODgtICovXG5uZXQvYmF0bWFuLWFkdi90dmx2LmM6Mzg5OnN0YXRpYyBpbnQgYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtMzkwLVx0XHRcdFx0ICAgIHN0cnVjdCBiYXRhZHZfdHZsdl9oYW5kbGVyICp0dmx2X2hhbmRsZXIsXG4tLVxubmV0L2JhdG1hbi1hZHYvdHZsdi5jPTUwMz1pbnQgYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXG4tLVxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTUzNS1cbm5ldC9iYXRtYW4tYWR2L3R2bHYuYzo1MzY6XHRcdHJldCB8PSBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXIoYmF0X3ByaXYsIHR2bHZfaGFuZGxlcixcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy01MzctXHRcdFx0XHRcdFx0cGFja2V0X3R5cGUsIG9yaWdfbm9kZSwgc2tiLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE4OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MzMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb246CgoqKlVuZGVyc3RhbmRpbmcgdGhlIGJhdGFkdl90dmx2IENvZGVmbG93KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyYC4gVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBkZWNsYXJlZCBgc3RhdGljYCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBhbiBpbnRlcm5hbCBmdW5jdGlvbiwgbWVhbnQgdG8gYmUgdXNlZCBvbmx5IHdpdGhpbiB0aGUgc2FtZSBjb21waWxhdGlvbiB1bml0LiBUaGF0IHRlbGxzIG1lIGl0JiMzOTtzIGxpa2VseSBhIGhlbHBlciBmdW5jdGlvbi4gTm93LCB0aGUgZGVzY3JpcHRpb24gc2F5cyBpdCYjMzk7cyBjYWxsZWQgYnkgYGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2Vzc2AuIEdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbnMsIG15IGd1ZXNzIGlzIHRoYXQgYHR2bHZgIHJlZmVycyB0byAmIzM0O1R5cGUtTGVuZ3RoLVZhbHVlJiMzNDsgZGF0YSwgYSBjb21tb24gZm9ybWF0IGluIG5ldHdvcmtpbmcgcHJvdG9jb2xzLiBUaGVyZWZvcmUgYGJhdGFkdmAgbGlrZWx5IHN0YW5kcyBmb3IgJiMzNDtiYXRtYW4tYWR2JiMzNDssIHRoZSBtZXNoIHJvdXRpbmcgcHJvdG9jb2wuIFRoaXMgY29uZmlybXMgdGhhdCB0aGVzZSBmdW5jdGlvbnMgcmVsYXRlIHRvIGJhdG1hbi1hZHYuIEdpdmVuIHRoZSBjb250ZXh0LCBJIHNob3VsZCBmb2N1cyBvbiBob3cgdGhpcyBmdW5jdGlvbiB3b3JrcyB3aXRoaW4gaXRzIGNhbGxpbmcgZnVuY3Rpb24gaW4gb3JkZXIgdG8gZ3Jhc3AgaXRzIHB1cnBvc2Ugd2l0aGluIHRoZSBvdmVyYWxsIHByb3RvY29sJiMzOTtzIGxvZ2ljLiBMZXQmIzM5O3MgZGVsdmUgaW50byBgYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzYCB0byB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxODo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYmF0bWFuLWFkdi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JhdG1hbi1hZHYvYmF0X3Zfb2dtLmM9ODAxPWJhdGFkdl92X29nbV9wcm9jZXNzX3Blcl9vdXRpZihzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxuLS1cbm5ldC9iYXRtYW4tYWR2L2JhdF92X29nbS5jLTgyMi1cdGlmIChzZXFub19hZ2UgXHUwMDNlIDAgXHUwMDI2XHUwMDI2IGlmX291dGdvaW5nID09IEJBVEFEVl9JRl9ERUZBVUxUKVxubmV0L2JhdG1hbi1hZHYvYmF0X3Zfb2dtLmM6ODIzOlx0XHRiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3MoYmF0X3ByaXYsIEJBVEFEVl9PR00yLCBvcmlnX25vZGUsXG5uZXQvYmF0bWFuLWFkdi9iYXRfdl9vZ20uYy04MjQtXHRcdFx0XHRcdCAgICAgICBOVUxMLFxuLS1cbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYz0xMDk1PWludCBiYXRhZHZfcmVjdl91bmljYXN0X3R2bHYoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMtMTEyMy1cbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYzoxMTI0Olx0cmV0ID0gYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzKGJhdF9wcml2LCBCQVRBRFZfVU5JQ0FTVF9UVkxWLFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jLTExMjUtXHRcdFx0XHRcdCAgICAgTlVMTCwgc2tiLCB0dmx2X2J1ZmYsXG4tLVxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jPTEzMzk9aW50IGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYy0xMzc1LVxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jOjEzNzY6XHRyZXQgPSBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3MoYmF0X3ByaXYsIEJBVEFEVl9NQ0FTVCwgTlVMTCwgc2tiLFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jLTEzNzctXHRcdFx0XHRcdCAgICAgdHZsdl9idWZmLCB0dmx2X2J1ZmZfbGVuKTtcbi0tXG5uZXQvYmF0bWFuLWFkdi90dmx2LmM9NDU4PXN0YXRpYyBib29sIGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfY29udGFpbih2b2lkICp0dmx2X3ZhbHVlLFxuLS1cbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy00OTAtLyoqXG5uZXQvYmF0bWFuLWFkdi90dmx2LmM6NDkxOiAqIGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2VzcygpIC0gcGFyc2UgdGhlIGdpdmVuIHR2bHYgYnVmZmVyIHRvIGNhbGwgdGhlXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNDkyLSAqICBhcHByb3ByaWF0ZSBoYW5kbGVyc1xuLS1cbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy01MDItICovXG5uZXQvYmF0bWFuLWFkdi90dmx2LmM6NTAzOmludCBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3Moc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy01MDQtXHRcdFx0XHQgICB1OCBwYWNrZXRfdHlwZSxcbi0tXG5uZXQvYmF0bWFuLWFkdi90dmx2LmM9NTgyPXZvaWQgYmF0YWR2X3R2bHZfb2dtX3JlY2VpdmUoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbi0tXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNTk3LVxubmV0L2JhdG1hbi1hZHYvdHZsdi5jOjU5ODpcdGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2VzcyhiYXRfcHJpdiwgQkFUQURWX0lWX09HTSwgb3JpZ19ub2RlLCBOVUxMLFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTU5OS1cdFx0XHRcdCAgICAgICB0dmx2X3ZhbHVlLCB0dmx2X3ZhbHVlX2xlbik7XG4tLVxubmV0L2JhdG1hbi1hZHYvdHZsdi5oPTQwPXZvaWQgYmF0YWR2X3R2bHZfaGFuZGxlcl91bnJlZ2lzdGVyKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXG5uZXQvYmF0bWFuLWFkdi90dmx2LmgtNDEtXHRcdFx0XHQgICAgdTggdHlwZSwgdTggdmVyc2lvbik7XG5uZXQvYmF0bWFuLWFkdi90dmx2Lmg6NDI6aW50IGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2VzcyhzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxubmV0L2JhdG1hbi1hZHYvdHZsdi5oLTQzLVx0XHRcdFx0ICAgdTggcGFja2V0X3R5cGUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTg6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYzNAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBjb2RlIHNuaXBwZXRzOgoKKipGb2N1c2luZyBvbiBLZXkgRW50cnkgUG9pbnRzIGZvciBQYWNrZXQgSGFuZGxpbmcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHplcm8gaW4gb24gaG93IHRoaXMgQmF0bWFuLWFkdiBpbXBsZW1lbnRhdGlvbiBoYW5kbGVzIGluY29taW5nIHBhY2tldHMuIEkgc2VlIGEgZmV3IGZ1bmN0aW9ucyB0aGF0IGltbWVkaWF0ZWx5IGdyYWIgbXkgYXR0ZW50aW9uIGFzIHBvdGVudGlhbCBlbnRyeSBwb2ludHM6IGBiYXRhZHZfcmVjdl91bmljYXN0X3R2bHZgLCBgYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0YCwgYGJhdGFkdl90dmx2X29nbV9yZWNlaXZlYCwgYW5kIGBiYXRhZHZfdl9vZ21fcHJvY2Vzc19wZXJfb3V0aWZgLiBHaXZlbiBteSBleHBlcnRpc2UsIG15IGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgdGhlIHByaW1hcnkgaG9va3MgZm9yIGRpZmZlcmVudCB0eXBlcyBvZiBwYWNrZXQgcHJvY2Vzc2luZy4gSSYjMzk7bSB0aGlua2luZyBJJiMzOTtsbCBzdGFydCBieSBkaXZpbmcgaW50byB0aGUgbG9naWMgb2YgYGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldGAgYW5kIGBiYXRhZHZfcmVjdl91bmljYXN0X3R2bHZgIGZpcnN0LiBUaGV5IHNlZW0gdG8gcmVwcmVzZW50IHRoZSBjb3JlIGRpc3RpbmN0aW9uczogb25lIGZvciBtdWx0aWNhc3QgdHJhZmZpYyBhbmQgdGhlIG90aGVyIGZvciB1bmljYXN0LCB3aXRoIHRoZSB1c2Ugb2YgVExWIChUeXBlLUxlbmd0aC1WYWx1ZSkgc3RydWN0dXJlcyBzdWdnZXN0aW5nIGEgZmxleGlibGUgZGF0YSBmb3JtYXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGRpZmZlcmVudGlhdGVzIGJldHdlZW4gdGhlc2UgYW5kIHRoZW4gcm91dGVzIHRoZW0gdG8gdGhlIGFwcHJvcHJpYXRlIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYmF0bWFuLWFkdi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JhdG1hbi1hZHYvbWFpbi5jPTUwND1zdGF0aWMgdm9pZCBiYXRhZHZfcmVjdl9oYW5kbGVyX2luaXQodm9pZClcbi0tXG5uZXQvYmF0bWFuLWFkdi9tYWluLmMtNTM3LVx0LyogbXVsdGljYXN0IHBhY2tldCAqL1xubmV0L2JhdG1hbi1hZHYvbWFpbi5jOjUzODpcdGJhdGFkdl9yeF9oYW5kbGVyW0JBVEFEVl9NQ0FTVF0gPSBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQ7XG5uZXQvYmF0bWFuLWFkdi9tYWluLmMtNTM5LVxuLS1cbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYz0xMjEyPWludCBiYXRhZHZfcmVjdl9iY2FzdF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMtMTMyOC0vKipcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYzoxMzI5OiAqIGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldCgpIC0gcHJvY2VzcyByZWNlaXZlZCBiYXRtYW4tYWR2IG11bHRpY2FzdCBwYWNrZXRcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYy0xMzMwLSAqIEBza2I6IHRoZSByZWNlaXZlZCBiYXRtYW4tYWR2IG11bHRpY2FzdCBwYWNrZXRcbi0tXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMtMTMzOC0gKi9cbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYzoxMzM5OmludCBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYy0xMzQwLVx0XHRcdCAgICAgc3RydWN0IGJhdGFkdl9oYXJkX2lmYWNlICpyZWN2X2lmKVxuLS1cbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuaD0yOD1pbnQgYmF0YWR2X3JlY3ZfYmNhc3RfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5oLTMwLSNpZmRlZiBDT05GSUdfQkFUTUFOX0FEVl9NQ0FTVFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5oOjMxOmludCBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuaC0zMi1cdFx0XHQgICAgIHN0cnVjdCBiYXRhZHZfaGFyZF9pZmFjZSAqcmVjdl9pZik7XG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmgtMzMtI2Vsc2Vcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuaDozNDpzdGF0aWMgaW5saW5lIGludCBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuaC0zNS1cdFx0XHRcdFx0ICAgc3RydWN0IGJhdGFkdl9oYXJkX2lmYWNlICpyZWN2X2lmKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1MjkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCYXRtYW4tYWR2IFBhY2tldCBIYW5kbGluZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYmF0bWFuLWFkdi4gIEl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGl0IHNlZW1zLiBXZSYjMzk7dmUgZ290IGBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXRgIHJlZ2lzdGVyZWQgZm9yIGBCQVRBRFZfTUNBU1RgIGFuZCBgYmF0YWR2X3JlY3ZfdW5pY2FzdF90dmx2YCBmb3IgYEJBVEFEVl9VTklDQVNUX1RWTFZgLiAgU3RhbmRhcmQgc3R1ZmYsIHRoZXNlIGFyZSB0aGUgcGFja2V0IGhhbmRsZXJzIHdpdGhpbiB0aGUgYmF0bWFuLWFkdiBmcmFtZXdvcmssIHRoZSBjb3JlIG9mIHRoZSBwYWNrZXQgcHJvY2Vzc2luZy4KClRoZSBjaGFuZ2UgaXRzZWxmIGlzIGluIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgLCBhbmQgaXQmIzM5O3MgdXNpbmcgYHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsYC4gIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyBhYm91dCBob3cgdGhlIHRyYW5zcG9ydCBoZWFkZXIgb2Zmc2V0IGlzIGNhbGN1bGF0ZWQgaW4gdGhlIGBza2JgLiAgVGhpcyBpcyBhICpmdW5jdGlvbmFsKiBmaXggdGhlbiwgd2hpY2ggbWVhbnMgaXQgYWRkcmVzc2VzIGEgY29ycmVjdG5lc3MgaXNzdWUgaW4gdGhlIGV4aXN0aW5nIGNvZGUuIEludGVyZXN0aW5nLiBEZWZpbml0ZWx5IHdvcnRoIGEgdGhvcm91Z2ggZnV6emluZyBjYW1wYWlnbiB0byBzZWUgaWYgdGhpcyBjaGFuZ2UgcHJvcGVybHkgYWRkcmVzc2VzIHRoZSBpc3N1ZSB3aXRob3V0IGludHJvZHVjaW5nIGFueSByZWdyZXNzaW9ucyBvciBuZXcgdnVsbmVyYWJpbGl0aWVzLgoKSSBzaG91bGQgdmVyaWZ5IHRoZSBjb25maWcgZGVwZW5kZW5jaWVzLCBub3cuIEkga25vdyBgQkFUTUFOX0FEVmAgaXMgcmVxdWlyZWQsIG9idmlvdXNseS4gQnV0IGRvZXMgdGhpcyBzcGVjaWZpYyBtb2RpZmljYXRpb24gcmVxdWlyZSBgQkFUTUFOX0FEVl9NQ0FTVGAgdG8gYmUgZW5hYmxlZD8gU2luY2UgYGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcmAgcHJvY2Vzc2VzIGJvdGggdW5pY2FzdCBhbmQgbWNhc3QgdHZsdiBwYWNrZXRzLCBpdCBzaG91bGQgYmUgZmluZS4gSSYjMzk7bGwgdGFrZSBhIGxvb2sgYXQgYGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcmAgYWdhaW4gdG8gYmUgc3VyZSB0aGF0IEkgZGlkbiYjMzk7dCBtaXNzIHNvbWV0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JhdG1hbi1hZHYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9iYXRtYW4tYWR2L3R2bHYuYz0zMjk9aW50IGJhdGFkdl90dmx2X2NvbnRhaW5lcl9vZ21fYXBwZW5kKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXG4tLVxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTM3NS0vKipcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYzozNzY6ICogYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyKCkgLSBwYXJzZSB0aGUgZ2l2ZW4gdHZsdiBidWZmZXIgdG8gY2FsbCB0aGVcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy0zNzctICogIGFwcHJvcHJpYXRlIGhhbmRsZXJzXG4tLVxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTM4OC0gKi9cbm5ldC9iYXRtYW4tYWR2L3R2bHYuYzozODk6c3RhdGljIGludCBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXIoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy0zOTAtXHRcdFx0XHQgICAgc3RydWN0IGJhdGFkdl90dmx2X2hhbmRsZXIgKnR2bHZfaGFuZGxlcixcbi0tXG5uZXQvYmF0bWFuLWFkdi90dmx2LmM9NTAzPWludCBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3Moc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbi0tXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNTM1LVxubmV0L2JhdG1hbi1hZHYvdHZsdi5jOjUzNjpcdFx0cmV0IHw9IGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcihiYXRfcHJpdiwgdHZsdl9oYW5kbGVyLFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTUzNy1cdFx0XHRcdFx0XHRwYWNrZXRfdHlwZSwgb3JpZ19ub2RlLCBza2IsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MzkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhlIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgIGltcGxlbWVudGF0aW9uOgoKKipEaXZpbmcgaW50byBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXIqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIExldCYjMzk7cyBkaWcgaW50byB0aGUgYGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcmAgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoaXMgY3J1Y2lhbCBmdW5jdGlvbiB3b3Jrcy4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGlzIGlzIHdoZXJlIHRoZSBtZWF0IG9mIGhhbmRsaW5nIHNwZWNpZmljIFR5cGUtTGVuZ3RoLVZhbHVlIChUTFYpIG1lc3NhZ2VzIHdpdGhpbiBCQVRNQU4tYWR2IGxpa2VseSByZXNpZGVzLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlIGlucHV0IHBhcmFtZXRlcnMsIHF1aWNrbHkgdW5kZXJzdGFuZGluZyB3aGF0IGNvbnRleHQgaXMgYmVpbmcgcGFzc2VkIGluLiBUaGVuIEkmIzM5O2xsIGZvY3VzIG9uIHRoZSBjb3JlIGxvZ2ljOiB0aGUgY29uZGl0aW9uYWwgYnJhbmNoZXMsIGFueSBkYXRhIHBhcnNpbmcsIGFuZCB1bHRpbWF0ZWx5LCBob3cgdGhlIGZ1bmN0aW9uIHJlYWN0cyB0byB0aGUgcmVjZWl2ZWQgVExWLiBJ4oCZbGwga2VlcCBhbiBleWUgb3V0IGZvciBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybjogbWVtb3J5IGFsbG9jYXRpb24sIGxvY2tpbmcsIGFueSBjb25jdXJyZW5jeSBpc3N1ZXMsIGFuZCBvZiBjb3Vyc2UsIGVycm9yIGhhbmRsaW5nLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBvdmVyYWxsIGZsb3cgLSB3aGF0IGFyZSB0aGUgZGlmZmVyZW50IG1lc3NhZ2UgdHlwZXMgaGFuZGxlZCBoZXJlPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgcGVyZm9ybWFuY2UgYm90dGxlbmVja3M/IEkmIzM5O2xsIGFsc28gYmUgY29uc2lkZXJpbmcgaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggdGhlIG92ZXJhbGwgQkFUTUFOLWFkdiBzdGF0ZSBtYWNoaW5lLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGRhdGEgaXMgYmVpbmcgdXBkYXRlZCwgaG93IGl0JiMzOTtzIGJlaW5nIHVwZGF0ZWQsIGFuZCB3aGVuLiBJIGV4cGVjdCB0byBmaW5kIHNvbWUgaW50ZXJlc3RpbmcgbG9naWMgaGVyZSwgcHJvYmFibHkgaW52b2x2aW5nIG5laWdoYm9yIGRpc2NvdmVyeSwgdG9wb2xvZ3kgdXBkYXRlcywgYW5kIFFvUyBtYW5hZ2VtZW50LiBMZXQmIzM5O3Mgc2VlIGlmIG15IGluaXRpYWwgYXNzdW1wdGlvbnMgYXJlIGNvcnJlY3QuIFRoZSByZWFsIGNoYWxsZW5nZSBpcyBhbHdheXMgdG8gdW5kZXJzdGFuZCB0aGUgZGVzaWduIGNob2ljZXMgbWFkZSBoZXJlLCBzbyBJJiMzOTtsbCBiZSBxdWVzdGlvbmluZyB3aHkgdGhlIGRldmVsb3BlcnMgY2hvc2UgdGhpcyBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBhbmQgY29uc2lkZXIgcG9zc2libGUgYWx0ZXJuYXRpdmVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9iYXRtYW4tYWR2L3R2bHYuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM4OSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzg5Olx0c3RhdGljIGludCBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXIoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbiAzOTA6XHRcdFx0XHRcdCAgICBzdHJ1Y3QgYmF0YWR2X3R2bHZfaGFuZGxlciAqdHZsdl9oYW5kbGVyLFxuIDM5MTpcdFx0XHRcdFx0ICAgIHU4IHBhY2tldF90eXBlLFxuIDM5MjpcdFx0XHRcdFx0ICAgIHN0cnVjdCBiYXRhZHZfb3JpZ19ub2RlICpvcmlnX25vZGUsXG4gMzkzOlx0XHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdm9pZCAqdHZsdl92YWx1ZSxcbiAzOTQ6XHRcdFx0XHRcdCAgICB1MTYgdHZsdl92YWx1ZV9sZW4pXG4gMzk1Olx0e1xuIDM5NjpcdFx0dW5zaWduZWQgaW50IHR2bHZfb2Zmc2V0O1xuIDM5NzpcdFx0dTggKnNyYywgKmRzdDtcbiAzOTg6XHRcbiAzOTk6XHRcdGlmICghdHZsdl9oYW5kbGVyKVxuIDQwMDpcdFx0XHRyZXR1cm4gTkVUX1JYX1NVQ0NFU1M7XG4gNDAxOlx0XG4gNDAyOlx0XHRzd2l0Y2ggKHBhY2tldF90eXBlKSB7XG4gNDAzOlx0XHRjYXNlIEJBVEFEVl9JVl9PR006XG4gNDA0Olx0XHRjYXNlIEJBVEFEVl9PR00yOlxuIDQwNTpcdFx0XHRpZiAoIXR2bHZfaGFuZGxlci1cdTAwM2VvZ21faGFuZGxlcilcbiA0MDY6XHRcdFx0XHRyZXR1cm4gTkVUX1JYX1NVQ0NFU1M7XG4gNDA3Olx0XG4gNDA4Olx0XHRcdGlmICghb3JpZ19ub2RlKVxuIDQwOTpcdFx0XHRcdHJldHVybiBORVRfUlhfU1VDQ0VTUztcbiA0MTA6XHRcbiA0MTE6XHRcdFx0dHZsdl9oYW5kbGVyLVx1MDAzZW9nbV9oYW5kbGVyKGJhdF9wcml2LCBvcmlnX25vZGUsXG4gNDEyOlx0XHRcdFx0XHRcdCAgQkFUQURWX05PX0ZMQUdTLFxuIDQxMzpcdFx0XHRcdFx0XHQgIHR2bHZfdmFsdWUsIHR2bHZfdmFsdWVfbGVuKTtcbiA0MTQ6XHRcdFx0YnJlYWs7XG4gNDE1Olx0XHRjYXNlIEJBVEFEVl9VTklDQVNUX1RWTFY6XG4gNDE2Olx0XHRcdGlmICghc2tiKVxuIDQxNzpcdFx0XHRcdHJldHVybiBORVRfUlhfU1VDQ0VTUztcbiA0MTg6XHRcbiA0MTk6XHRcdFx0aWYgKCF0dmx2X2hhbmRsZXItXHUwMDNldW5pY2FzdF9oYW5kbGVyKVxuIDQyMDpcdFx0XHRcdHJldHVybiBORVRfUlhfU1VDQ0VTUztcbiA0MjE6XHRcbiA0MjI6XHRcdFx0c3JjID0gKChzdHJ1Y3QgYmF0YWR2X3VuaWNhc3RfdHZsdl9wYWNrZXQgKilza2ItXHUwMDNlZGF0YSktXHUwMDNlc3JjO1xuIDQyMzpcdFx0XHRkc3QgPSAoKHN0cnVjdCBiYXRhZHZfdW5pY2FzdF90dmx2X3BhY2tldCAqKXNrYi1cdTAwM2VkYXRhKS1cdTAwM2Vkc3Q7XG4gNDI0Olx0XG4gNDI1Olx0XHRcdHJldHVybiB0dmx2X2hhbmRsZXItXHUwMDNldW5pY2FzdF9oYW5kbGVyKGJhdF9wcml2LCBzcmMsXG4gNDI2Olx0XHRcdFx0XHRcdFx0ICAgICBkc3QsIHR2bHZfdmFsdWUsXG4gNDI3Olx0XHRcdFx0XHRcdFx0ICAgICB0dmx2X3ZhbHVlX2xlbik7XG4gNDI4Olx0XHRjYXNlIEJBVEFEVl9NQ0FTVDpcbiA0Mjk6XHRcdFx0aWYgKCFza2IpXG4gNDMwOlx0XHRcdFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xuIDQzMTpcdFxuIDQzMjpcdFx0XHRpZiAoIXR2bHZfaGFuZGxlci1cdTAwM2VtY2FzdF9oYW5kbGVyKVxuIDQzMzpcdFx0XHRcdHJldHVybiBORVRfUlhfU1VDQ0VTUztcbiA0MzQ6XHRcbiA0MzU6XHRcdFx0dHZsdl9vZmZzZXQgPSAodW5zaWduZWQgY2hhciAqKXR2bHZfdmFsdWUgLSBza2ItXHUwMDNlZGF0YTtcbiA0MzY6XHRcdFx0aWYgKCFza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJfY2FyZWZ1bChza2IsXG4gNDM3Olx0XHRcdFx0XHRcdFx0ICAgICAgdHZsdl9vZmZzZXQgJiM0MzsgdHZsdl92YWx1ZV9sZW4pKVxuIDQzODpcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxODo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjA1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCYjMzk7cyBJbXBhY3QqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIHRoZSBgQkFUQURWX01DQVNUYCBoYW5kbGluZyB3aXRoaW4gdGhlIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGF0IHBhY2tldCB0eXBlOyB0aGF0JiMzOTtzIGNsZWFybHkgdGhlIHRyaWdnZXIgZm9yIHRoaXMgY29kZSBtb2RpZmljYXRpb24uIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwLCBmcm9tIGFuIGFkdmFuY2VkIHBlcnNwZWN0aXZlLCBpcyB0byBjb25maXJtIHdoZXRoZXIgdGhlIGBCQVRNQU5fQURWX01DQVNUYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyByZWxldmFudCwgZ2l2ZW4gdGhpcyBmb2N1c2VkIGNoYW5nZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBwYXRjaCBuZWNlc3NpdGF0ZXMsIG9yIGlzIGluIGFueSB3YXkgZGVwZW5kZW50IG9uLCB0aGF0IGNvbmZpZ3VyYXRpb24gc2V0dGluZyBiZWluZyBlbmFibGVkLiBMZXQmIzM5O3MgZGlnIGludG8gdGhhdCBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCQVRNQU5fQURWX01DQVNUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JhdG1hbi1hZHYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9iYXRtYW4tYWR2L0tjb25maWc9NDc9Y29uZmlnIEJBVE1BTl9BRFZfREFUXG4tLVxubmV0L2JhdG1hbi1hZHYvS2NvbmZpZy01Ni1cbm5ldC9iYXRtYW4tYWR2L0tjb25maWc6NTc6Y29uZmlnIEJBVE1BTl9BRFZfTUNBU1Rcbm5ldC9iYXRtYW4tYWR2L0tjb25maWctNTgtXHRib29sIFwmIzM0O011bHRpY2FzdCBvcHRpbWlzYXRpb25cJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzkzMwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqTXVsdGljYXN0IE9wdGltaXphdGlvbiBpbiBiYXRtYW4tYWR2OiBBIFF1aWNrIENoZWNrKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBlbmFibGluZyBtdWx0aWNhc3Qgb3B0aW1pemF0aW9uIGluIGJhdG1hbi1hZHYuIFRoZSBpbW1lZGlhdGUgYXNzdW1wdGlvbiwgYW5kIGl0IHNlZW1zIGEgcmVhc29uYWJsZSBvbmUgZ2l2ZW4gbXkgZXhwZXJpZW5jZSwgaXMgdGhhdCB3ZSBuZWVkIGBCQVRNQU5fQURWX01DQVNUYC4gIFRoYXQmIzM5O3MgdGhlIGxpa2VseSBwcmVyZXF1aXNpdGUuIEJ1dCBsZXQmIzM5O3Mgbm90IGp1c3QgdGFrZSBpdCBmb3IgZ3JhbnRlZCwgZXZlbiBmb3Igc29tZXRoaW5nIGFzIHNlZW1pbmdseSBzdHJhaWdodGZvcndhcmQgYXMgdGhpcy4gQmVzdCBwcmFjdGljZSBpcyBhbHdheXMgdG8gY29uZmlybS4KClRoZXJlZm9yZSwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHF1aWNrbHkgdHJhY2UgdGhlIGRlcGVuZGVuY3kuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBoYXZpbmcgYEJBVE1BTl9BRFZfTUNBU1RgIGRlZmluZWQgYWN0dWFsbHkgYWxsb3dzIHVzIHRvIHJlYWNoIHRoZSBgQkFUQURWX01DQVNUYCBjb25kaXRpb25hbCBpbiB0aGUgYGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcmAgZnVuY3Rpb24uIEVzc2VudGlhbGx5LCBkb2VzIGl0ICpnYXRlKiB0aGUgbXVsdGljYXN0IGZ1bmN0aW9uYWxpdHkgYXMgZXhwZWN0ZWQ/IEl0JiMzOTtzIGEgcXVpY2sgc2FuaXR5IGNoZWNrIGJ1dCBjYW4gc2F2ZSBhIGRlYnVnZ2luZyBoZWFkYWNoZSBkb3duIHRoZSByb2FkLiBUaGlzIGNvbmZpcm1hdGlvbiB3aWxsIGdpdmUgbWUgY29uZmlkZW5jZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIGlzIHdvcmtpbmcgYXMgZXhwZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JBVEFEVl9NQ0FTVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9iYXRtYW4tYWR2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYmF0bWFuLWFkdi9tYWluLmM9NTA0PXN0YXRpYyB2b2lkIGJhdGFkdl9yZWN2X2hhbmRsZXJfaW5pdCh2b2lkKVxuLS1cbm5ldC9iYXRtYW4tYWR2L21haW4uYy01MzctXHQvKiBtdWx0aWNhc3QgcGFja2V0ICovXG5uZXQvYmF0bWFuLWFkdi9tYWluLmM6NTM4Olx0YmF0YWR2X3J4X2hhbmRsZXJbQkFUQURWX01DQVNUXSA9IGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldDtcbm5ldC9iYXRtYW4tYWR2L21haW4uYy01MzktXG4tLVxubmV0L2JhdG1hbi1hZHYvbWFpbi5oLTM3LSNkZWZpbmUgQkFUQURWX09SSUdfV09SS19QRVJJT0QgMTAwMCAvKiAxIHNlY29uZCAqL1xubmV0L2JhdG1hbi1hZHYvbWFpbi5oOjM4OiNkZWZpbmUgQkFUQURWX01DQVNUX1dPUktfUEVSSU9EIDUwMCAvKiAwLjUgc2Vjb25kcyAqL1xubmV0L2JhdG1hbi1hZHYvbWFpbi5oLTM5LSNkZWZpbmUgQkFUQURWX0RBVF9FTlRSWV9USU1FT1VUICg1ICogNjAwMDApIC8qIDUgbWlucyBpbiBtaWxsaXNlY29uZHMgKi9cbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz02OD1zdGF0aWMgdm9pZCBiYXRhZHZfbWNhc3Rfc3RhcnRfdGltZXIoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdilcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy03MC1cdHF1ZXVlX2RlbGF5ZWRfd29yayhiYXRhZHZfZXZlbnRfd29ya3F1ZXVlLCBcdTAwMjZiYXRfcHJpdi1cdTAwM2VtY2FzdC53b3JrLFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6NzE6XHRcdFx0ICAgbXNlY3NfdG9famlmZmllcyhCQVRBRFZfTUNBU1RfV09SS19QRVJJT0QpKTtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTcyLX1cbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz04ND1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKmJhdGFkdl9tY2FzdF9nZXRfYnJpZGdlKHN0cnVjdCBuZXRfZGV2aWNlICptZXNoX2lmYWNlKVxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTEwNy0gKlxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTA4OiAqIFJldHVybjogQkFUQURWX05PX0ZMQUdTIGlmIHByZXNlbnQsIEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQgb3RoZXJ3aXNlLlxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTA5LSAqL1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTEwPXN0YXRpYyB1OCBiYXRhZHZfbWNhc3RfbWxhX3J0cl9mbGFnc19tZXNoaWZfZ2V0X2lwdjQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xMTYtXHRlbHNlXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxMTc6XHRcdHJldHVybiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0O1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTE4LX1cbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xMjgtICpcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjEyOTogKiBSZXR1cm46IEJBVEFEVl9OT19GTEFHUyBpZiBwcmVzZW50LCBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI2IG90aGVyd2lzZS5cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTEzMC0gKi9cbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz0xMzI9c3RhdGljIHU4IGJhdGFkdl9tY2FzdF9tbGFfcnRyX2ZsYWdzX21lc2hpZl9nZXRfaXB2NihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTEzOC1cdGVsc2Vcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjEzOTpcdFx0cmV0dXJuIEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjY7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNDAtfVxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTE0Mz1iYXRhZHZfbWNhc3RfbWxhX3J0cl9mbGFnc19tZXNoaWZfZ2V0X2lwdjYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE0NC17XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNDU6XHRyZXR1cm4gQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNjtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE0Ni19XG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTU5LSAqXHRCQVRBRFZfTk9fRkxBR1M6IEJvdGggYW4gSVB2NCBhbmQgSVB2NiBtdWx0aWNhc3Qgcm91dGVyIGlzIHByZXNlbnRcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE2MDogKlx0QkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNDogTm8gSVB2NCBtdWx0aWNhc3Qgcm91dGVyIGlzIHByZXNlbnRcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE2MTogKlx0QkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNjogTm8gSVB2NiBtdWx0aWNhc3Qgcm91dGVyIGlzIHByZXNlbnRcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE2Mi0gKlx0VGhlIGZvcm1lciB0d28gT1ImIzM5O2Q6IG5vIG11bHRpY2FzdCByb3V0ZXIgaXMgcHJlc2VudFxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTE2ND1zdGF0aWMgdTggYmF0YWR2X21jYXN0X21sYV9ydHJfZmxhZ3NfbWVzaGlmX2dldChzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE4OS0gKlx0QkFUQURWX05PX0ZMQUdTOiBCb3RoIGFuIElQdjQgYW5kIElQdjYgbXVsdGljYXN0IHJvdXRlciBpcyBwcmVzZW50XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxOTA6ICpcdEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQ6IE5vIElQdjQgbXVsdGljYXN0IHJvdXRlciBpcyBwcmVzZW50XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxOTE6ICpcdEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjY6IE5vIElQdjYgbXVsdGljYXN0IHJvdXRlciBpcyBwcmVzZW50XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xOTItICpcdFRoZSBmb3JtZXIgdHdvIE9SJiMzOTtkOiBubyBtdWx0aWNhc3Qgcm91dGVyIGlzIHByZXNlbnRcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz0xOTQ9c3RhdGljIHU4IGJhdGFkdl9tY2FzdF9tbGFfcnRyX2ZsYWdzX2JyaWRnZV9nZXQoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yMDAtXHRpZiAoIWJyaWRnZSlcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjIwMTpcdFx0cmV0dXJuIEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQgfCBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI2O1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMjAyLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMjAzLVx0aWYgKCFicl9tdWx0aWNhc3RfaGFzX3JvdXRlcl9hZGphY2VudChkZXYsIEVUSF9QX0lQKSlcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjIwNDpcdFx0ZmxhZ3MgfD0gQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNDtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTIwNS1cdGlmICghYnJfbXVsdGljYXN0X2hhc19yb3V0ZXJfYWRqYWNlbnQoZGV2LCBFVEhfUF9JUFY2KSlcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjIwNjpcdFx0ZmxhZ3MgfD0gQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNjtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTIwNy1cbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yMjEtICpcdEJBVEFEVl9OT19GTEFHUzogQm90aCBhbiBJUHY0IGFuZCBJUHY2IG11bHRpY2FzdCByb3V0ZXIgaXMgcHJlc2VudFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MjIyOiAqXHRCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0OiBObyBJUHY0IG11bHRpY2FzdCByb3V0ZXIgaXMgcHJlc2VudFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MjIzOiAqXHRCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI2OiBObyBJUHY2IG11bHRpY2FzdCByb3V0ZXIgaXMgcHJlc2VudFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMjI0LSAqXHRUaGUgZm9ybWVyIHR3byBPUiYjMzk7ZDogbm8gbXVsdGljYXN0IHJvdXRlciBpcyBwcmVzZW50XG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MjI2PXN0YXRpYyB1OCBiYXRhZHZfbWNhc3RfbWxhX3J0cl9mbGFnc19nZXQoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yMjgte1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MjI5Olx0dTggZmxhZ3MgPSBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0IHwgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNjtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTIzMC1cbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yNDMtICpcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjI0NDogKiBSZXR1cm46IEJBVEFEVl9NQ0FTVF9IQVZFX01DX1BUWVBFX0NBUEEgaWYgeWVzLCBCQVRBRFZfTk9fRkxBR1Mgb3RoZXJ3aXNlLlxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMjQ1LSAqL1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MjQ2PXN0YXRpYyB1OCBiYXRhZHZfbWNhc3RfbWxhX2ZvcndfZmxhZ3NfZ2V0KHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYpXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMjYyLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MjYzOlx0cmV0dXJuIEJBVEFEVl9NQ0FTVF9IQVZFX01DX1BUWVBFX0NBUEE7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yNjQtfVxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTI3ND1iYXRhZHZfbWNhc3RfbWxhX2ZsYWdzX2dldChzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2KVxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTMwNi1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjMwNzpcdG1sYV9mbGFncy50dmx2X2ZsYWdzIHw9IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9VTlNOT09QQUJMRVM7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0zMDgtXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMzE4LVx0aWYgKCFxcjQtXHUwMDNlZXhpc3RzIHx8IHFyNC1cdTAwM2VzaGFkb3dpbmcpIHtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjMxOTpcdFx0bWxhX2ZsYWdzLnR2bHZfZmxhZ3MgfD0gQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjQ7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzozMjA6XHRcdG1sYV9mbGFncy50dmx2X2ZsYWdzIFx1MDAyNj0gfkJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQ7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0zMjEtXHR9XG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMzIzLVx0aWYgKCFxcjYtXHUwMDNlZXhpc3RzIHx8IHFyNi1cdTAwM2VzaGFkb3dpbmcpIHtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjMyNDpcdFx0bWxhX2ZsYWdzLnR2bHZfZmxhZ3MgfD0gQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjY7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzozMjU6XHRcdG1sYV9mbGFncy50dmx2X2ZsYWdzIFx1MDAyNj0gfkJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjY7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0zMjYtXHR9XG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MzY2PWJhdGFkdl9tY2FzdF9tbGFfbWVzaGlmX2dldF9pcHY0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMzc1LVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6Mzc2Olx0aWYgKGZsYWdzLVx1MDAzZXR2bHZfZmxhZ3MgXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9JUFY0KVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMzc3LVx0XHRyZXR1cm4gMDtcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0zODgtXHQgICAgIHBtYyA9IHJjdV9kZXJlZmVyZW5jZShwbWMtXHUwMDNlbmV4dF9yY3UpKSB7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzozODk6XHRcdGlmIChmbGFncy1cdTAwM2V0dmx2X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfVU5TTk9PUEFCTEVTIFx1MDAyNlx1MDAyNlxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMzkwLVx0XHQgICAgaXB2NF9pc19sb2NhbF9tdWx0aWNhc3QocG1jLVx1MDAzZW11bHRpYWRkcikpXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMzkyLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MzkzOlx0XHRpZiAoIShmbGFncy1cdTAwM2V0dmx2X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0KSBcdTAwMjZcdTAwMjZcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTM5NC1cdFx0ICAgICFpcHY0X2lzX2xvY2FsX211bHRpY2FzdChwbWMtXHUwMDNlbXVsdGlhZGRyKSlcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz00MzM9YmF0YWR2X21jYXN0X21sYV9tZXNoaWZfZ2V0X2lwdjYoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy00NDItXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzo0NDM6XHRpZiAoZmxhZ3MtXHUwMDNldHZsdl9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjYpXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy00NDQtXHRcdHJldHVybiAwO1xuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTQ2MC1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjQ2MTpcdFx0aWYgKGZsYWdzLVx1MDAzZXR2bHZfZmxhZ3MgXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9VTlNOT09QQUJMRVMgXHUwMDI2XHUwMDI2XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy00NjItXHRcdCAgICBpcHY2X2FkZHJfaXNfbGxfYWxsX25vZGVzKFx1MDAyNnBtYzYtXHUwMDNlbWNhX2FkZHIpKVxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTQ2NC1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjQ2NTpcdFx0aWYgKCEoZmxhZ3MtXHUwMDNldHZsdl9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNikgXHUwMDI2XHUwMDI2XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy00NjYtXHRcdCAgICBJUFY2X0FERFJfTUNfU0NPUEUoXHUwMDI2cG1jNi1cdTAwM2VtY2FfYWRkcikgXHUwMDNlXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9NTgzPXN0YXRpYyBpbnQgYmF0YWR2X21jYXN0X21sYV9icmlkZ2VfZ2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtNjAyLVx0XHRpZiAoYnJfaXBfZW50cnktXHUwMDNlYWRkci5wcm90byA9PSBodG9ucyhFVEhfUF9JUCkpIHtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjYwMzpcdFx0XHRpZiAodHZsdl9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjQpXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy02MDQtXHRcdFx0XHRjb250aW51ZTtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTYwNS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjYwNjpcdFx0XHRpZiAodHZsdl9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX1VOU05PT1BBQkxFUyBcdTAwMjZcdTAwMjZcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTYwNy1cdFx0XHQgICAgaXB2NF9pc19sb2NhbF9tdWx0aWNhc3QoYnJfaXBfZW50cnktXHUwMDNlYWRkci5kc3QuaXA0KSlcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy02MDktXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzo2MTA6XHRcdFx0aWYgKCEodHZsdl9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNCkgXHUwMDI2XHUwMDI2XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy02MTEtXHRcdFx0ICAgICFpcHY0X2lzX2xvY2FsX211bHRpY2FzdChicl9pcF9lbnRyeS1cdTAwM2VhZGRyLmRzdC5pcDQpKVxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTYxNi1cdFx0aWYgKGJyX2lwX2VudHJ5LVx1MDAzZWFkZHIucHJvdG8gPT0gaHRvbnMoRVRIX1BfSVBWNikpIHtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjYxNzpcdFx0XHRpZiAodHZsdl9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjYpXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy02MTgtXHRcdFx0XHRjb250aW51ZTtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTYxOS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjYyMDpcdFx0XHRpZiAodHZsdl9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX1VOU05PT1BBQkxFUyBcdTAwMjZcdTAwMjZcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTYyMS1cdFx0XHQgICAgaXB2Nl9hZGRyX2lzX2xsX2FsbF9ub2RlcyhcdTAwMjZicl9pcF9lbnRyeS1cdTAwM2VhZGRyLmRzdC5pcDYpKVxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTYyMy1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjYyNDpcdFx0XHRpZiAoISh0dmx2X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI2KSBcdTAwMjZcdTAwMjZcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTYyNS1cdFx0XHQgICAgSVBWNl9BRERSX01DX1NDT1BFKFx1MDAyNmJyX2lwX2VudHJ5LVx1MDAzZWFkZHIuZHN0LmlwNikgXHUwMDNlXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9ODM0PXN0YXRpYyB2b2lkIGJhdGFkdl9tY2FzdF9mbGFnc19sb2coc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdiwgdTggZmxhZ3MpXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtODQwLVx0c3ByaW50ZihzdHJfb2xkX2ZsYWdzLCBcJiMzNDtbJWMlYyVjJXMlcyVjXVwmIzM0Oyxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjg0MTpcdFx0KG9sZF9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX1VOU05PT1BBQkxFUykgPyAmIzM5O1UmIzM5OyA6ICYjMzk7LiYjMzk7LFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6ODQyOlx0XHQob2xkX2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNCkgPyAmIzM5OzQmIzM5OyA6ICYjMzk7LiYjMzk7LFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6ODQzOlx0XHQob2xkX2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNikgPyAmIzM5OzYmIzM5OyA6ICYjMzk7LiYjMzk7LFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6ODQ0Olx0XHQhKG9sZF9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNCkgPyBcJiMzNDtSNFwmIzM0OyA6IFwmIzM0Oy4gXCYjMzQ7LFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6ODQ1Olx0XHQhKG9sZF9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNikgPyBcJiMzNDtSNlwmIzM0OyA6IFwmIzM0Oy4gXCYjMzQ7LFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6ODQ2Olx0XHQhKG9sZF9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX0hBVkVfTUNfUFRZUEVfQ0FQQSkgPyAmIzM5O1AmIzM5OyA6ICYjMzk7LiYjMzk7KTtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTg0Ny1cbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy04NTAtXHRcdCAgIG9sZF9lbmFibGVkID8gc3RyX29sZF9mbGFncyA6IFwmIzM0O1x1MDAzY3VuZGVmaW5lZFx1MDAzZVwmIzM0Oyxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjg1MTpcdFx0ICAgKGZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfVU5TTk9PUEFCTEVTKSA/ICYjMzk7VSYjMzk7IDogJiMzOTsuJiMzOTssXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzo4NTI6XHRcdCAgIChmbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjQpID8gJiMzOTs0JiMzOTsgOiAmIzM5Oy4mIzM5Oyxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjg1MzpcdFx0ICAgKGZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNikgPyAmIzM5OzYmIzM5OyA6ICYjMzk7LiYjMzk7LFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6ODU0Olx0XHQgICAhKGZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0KSA/IFwmIzM0O1I0XCYjMzQ7IDogXCYjMzQ7LiBcJiMzNDssXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzo4NTU6XHRcdCAgICEoZmxhZ3MgXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjYpID8gXCYjMzQ7UjZcJiMzNDsgOiBcJiMzNDsuIFwmIzM0Oyxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjg1NjpcdFx0ICAgIShmbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX0hBVkVfTUNfUFRZUEVfQ0FQQSkgPyAmIzM5O1AmIzM5OyA6ICYjMzk7LiYjMzk7KTtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTg1Ny19XG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTE5ND1iYXRhZHZfbWNhc3RfZm9yd19tb2RlX2J5X2NvdW50KHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTIwMS1cdGlmICghYXRvbWljX3JlYWQoXHUwMDI2YmF0X3ByaXYtXHUwMDNlbWNhc3QubnVtX25vX21jX3B0eXBlX2NhcGEpIFx1MDAyNlx1MDAyNlxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTIwMjpcdCAgICBvd25fdHZsdl9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX0hBVkVfTUNfUFRZUEVfQ0FQQSBcdTAwMjZcdTAwMjZcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTEyMDMtXHQgICAgc2tiLVx1MDAzZWxlbiAmIzQzOyBtY2FzdF9oZHJsZW4gXHUwMDNjPSBJUFY2X01JTl9NVFUgXHUwMDI2XHUwMDI2XG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTMwMT1iYXRhZHZfbWNhc3RfZm9yd190dChzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTEzNDEtICogU2VuZHMgY29waWVzIG9mIGEgZnJhbWUgd2l0aCBtdWx0aWNhc3QgZGVzdGluYXRpb24gdG8gYW55IG5vZGUgd2l0aCBhXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxMzQyOiAqIEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9JUFY0IGZsYWcgc2V0LiBBIHRyYW5zbWlzc2lvbiBpcyBwZXJmb3JtZWQgdmlhIGFcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTEzNDMtICogYmF0bWFuLWFkdiB1bmljYXN0IHBhY2tldCBmb3IgZWFjaCBzdWNoIGRlc3RpbmF0aW9uIG5vZGUuXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTM0OT1iYXRhZHZfbWNhc3RfZm9yd193YW50X2FsbF9pcHY0KHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTM3OC0gKiBTZW5kcyBjb3BpZXMgb2YgYSBmcmFtZSB3aXRoIG11bHRpY2FzdCBkZXN0aW5hdGlvbiB0byBhbnkgbm9kZSB3aXRoIGFcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjEzNzk6ICogQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjYgZmxhZyBzZXQuIEEgdHJhbnNtaXNzaW9uIGlzIHBlcmZvcm1lZCB2aWEgYVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTM4MC0gKiBiYXRtYW4tYWR2IHVuaWNhc3QgcGFja2V0IGZvciBlYWNoIHN1Y2ggZGVzdGluYXRpb24gbm9kZS5cbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz0xMzg2PWJhdGFkdl9tY2FzdF9mb3J3X3dhbnRfYWxsX2lwdjYoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNDE1LSAqIFNlbmRzIGNvcGllcyBvZiBhIGZyYW1lIHdpdGggbXVsdGljYXN0IGRlc3RpbmF0aW9uIHRvIGFueSBub2RlIHdpdGggYVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTQxNjogKiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNCBvciBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNiBmbGFnIHNldC4gQVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTQxNy0gKiB0cmFuc21pc3Npb24gaXMgcGVyZm9ybWVkIHZpYSBhIGJhdG1hbi1hZHYgdW5pY2FzdCBwYWNrZXQgZm9yIGVhY2ggc3VjaFxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTE0MjQ9YmF0YWR2X21jYXN0X2Zvcndfd2FudF9hbGwoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNDQ0LSAqIFNlbmRzIGNvcGllcyBvZiBhIGZyYW1lIHdpdGggbXVsdGljYXN0IGRlc3RpbmF0aW9uIHRvIGFueSBub2RlIHdpdGggYVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTQ0NTogKiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0IGZsYWcgdW5zZXQuIEEgdHJhbnNtaXNzaW9uIGlzIHBlcmZvcm1lZCB2aWEgYVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTQ0Ni0gKiBiYXRtYW4tYWR2IHVuaWNhc3QgcGFja2V0IGZvciBlYWNoIHN1Y2ggZGVzdGluYXRpb24gbm9kZS5cbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz0xNDUyPWJhdGFkdl9tY2FzdF9mb3J3X3dhbnRfYWxsX3J0cjQoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNDgxLSAqIFNlbmRzIGNvcGllcyBvZiBhIGZyYW1lIHdpdGggbXVsdGljYXN0IGRlc3RpbmF0aW9uIHRvIGFueSBub2RlIHdpdGggYVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTQ4MjogKiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI2IGZsYWcgdW5zZXQuIEEgdHJhbnNtaXNzaW9uIGlzIHBlcmZvcm1lZCB2aWEgYVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTQ4My0gKiBiYXRtYW4tYWR2IHVuaWNhc3QgcGFja2V0IGZvciBlYWNoIHN1Y2ggZGVzdGluYXRpb24gbm9kZS5cbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz0xNDg5PWJhdGFkdl9tY2FzdF9mb3J3X3dhbnRfYWxsX3J0cjYoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNTE4LSAqIFNlbmRzIGNvcGllcyBvZiBhIGZyYW1lIHdpdGggbXVsdGljYXN0IGRlc3RpbmF0aW9uIHRvIGFueSBub2RlIHdpdGggYVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTUxOTogKiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0IG9yIEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjYgZmxhZyB1bnNldC4gQVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTUyMC0gKiB0cmFuc21pc3Npb24gaXMgcGVyZm9ybWVkIHZpYSBhIGJhdG1hbi1hZHYgdW5pY2FzdCBwYWNrZXQgZm9yIGVhY2ggc3VjaFxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTE1NTg9aW50IGJhdGFkdl9tY2FzdF9mb3J3X3NlbmQoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNTk0LSAqXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNTk1OiAqIElmIHRoZSBCQVRBRFZfTUNBU1RfV0FOVF9BTExfVU5TTk9PUEFCTEVTIGZsYWcgb2YgdGhpcyBvcmlnaW5hdG9yLFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTU5Ni0gKiBvcmlnLCBoYXMgdG9nZ2xlZCB0aGVuIHRoaXMgbWV0aG9kIHVwZGF0ZXMgdGhlIGNvdW50ZXIgYW5kIHRoZSBsaXN0XG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTYwMT1zdGF0aWMgdm9pZCBiYXRhZHZfbWNhc3Rfd2FudF91bnNub29wX3VwZGF0ZShzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE2MTAtXHQvKiBzd2l0Y2hlZCBmcm9tIGZsYWcgdW5zZXQgdG8gc2V0ICovXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNjExOlx0aWYgKG1jYXN0X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfVU5TTk9PUEFCTEVTIFx1MDAyNlx1MDAyNlxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTYxMjpcdCAgICAhKG9yaWctXHUwMDNlbWNhc3RfZmxhZ3MgXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9VTlNOT09QQUJMRVMpKSB7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNjEzLVx0XHRhdG9taWNfaW5jKFx1MDAyNmJhdF9wcml2LVx1MDAzZW1jYXN0Lm51bV93YW50X2FsbF91bnNub29wYWJsZXMpO1xuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE2MjEtXHQvKiBzd2l0Y2hlZCBmcm9tIGZsYWcgc2V0IHRvIHVuc2V0ICovXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNjIyOlx0fSBlbHNlIGlmICghKG1jYXN0X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfVU5TTk9PUEFCTEVTKSBcdTAwMjZcdTAwMjZcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE2MjM6XHRcdCAgIG9yaWctXHUwMDNlbWNhc3RfZmxhZ3MgXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9VTlNOT09QQUJMRVMpIHtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE2MjQtXHRcdGF0b21pY19kZWMoXHUwMDI2YmF0X3ByaXYtXHUwMDNlbWNhc3QubnVtX3dhbnRfYWxsX3Vuc25vb3BhYmxlcyk7XG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTY0MC0gKlxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTY0MTogKiBJZiB0aGUgQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjQgZmxhZyBvZiB0aGlzIG9yaWdpbmF0b3IsIG9yaWcsIGhhc1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTY0Mi0gKiB0b2dnbGVkIHRoZW4gdGhpcyBtZXRob2QgdXBkYXRlcyB0aGUgY291bnRlciBhbmQgdGhlIGxpc3QgYWNjb3JkaW5nbHkuXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTY0Nj1zdGF0aWMgdm9pZCBiYXRhZHZfbWNhc3Rfd2FudF9pcHY0X3VwZGF0ZShzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE2NTUtXHQvKiBzd2l0Y2hlZCBmcm9tIGZsYWcgdW5zZXQgdG8gc2V0ICovXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNjU2Olx0aWYgKG1jYXN0X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNCBcdTAwMjZcdTAwMjZcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE2NTc6XHQgICAgIShvcmlnLVx1MDAzZW1jYXN0X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNCkpIHtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE2NTgtXHRcdGF0b21pY19pbmMoXHUwMDI2YmF0X3ByaXYtXHUwMDNlbWNhc3QubnVtX3dhbnRfYWxsX2lwdjQpO1xuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE2NjYtXHQvKiBzd2l0Y2hlZCBmcm9tIGZsYWcgc2V0IHRvIHVuc2V0ICovXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNjY3Olx0fSBlbHNlIGlmICghKG1jYXN0X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNCkgXHUwMDI2XHUwMDI2XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNjY4Olx0XHQgICBvcmlnLVx1MDAzZW1jYXN0X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNCkge1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTY2OS1cdFx0YXRvbWljX2RlYyhcdTAwMjZiYXRfcHJpdi1cdTAwM2VtY2FzdC5udW1fd2FudF9hbGxfaXB2NCk7XG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTY4NS0gKlxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTY4NjogKiBJZiB0aGUgQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjYgZmxhZyBvZiB0aGlzIG9yaWdpbmF0b3IsIG9yaWcsIGhhc1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTY4Ny0gKiB0b2dnbGVkIHRoZW4gdGhpcyBtZXRob2QgdXBkYXRlcyB0aGUgY291bnRlciBhbmQgdGhlIGxpc3QgYWNjb3JkaW5nbHkuXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTY5MT1zdGF0aWMgdm9pZCBiYXRhZHZfbWNhc3Rfd2FudF9pcHY2X3VwZGF0ZShzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3MDAtXHQvKiBzd2l0Y2hlZCBmcm9tIGZsYWcgdW5zZXQgdG8gc2V0ICovXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNzAxOlx0aWYgKG1jYXN0X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNiBcdTAwMjZcdTAwMjZcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE3MDI6XHQgICAgIShvcmlnLVx1MDAzZW1jYXN0X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNikpIHtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3MDMtXHRcdGF0b21pY19pbmMoXHUwMDI2YmF0X3ByaXYtXHUwMDNlbWNhc3QubnVtX3dhbnRfYWxsX2lwdjYpO1xuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3MTEtXHQvKiBzd2l0Y2hlZCBmcm9tIGZsYWcgc2V0IHRvIHVuc2V0ICovXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNzEyOlx0fSBlbHNlIGlmICghKG1jYXN0X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNikgXHUwMDI2XHUwMDI2XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNzEzOlx0XHQgICBvcmlnLVx1MDAzZW1jYXN0X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNikge1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTcxNC1cdFx0YXRvbWljX2RlYyhcdTAwMjZiYXRfcHJpdi1cdTAwM2VtY2FzdC5udW1fd2FudF9hbGxfaXB2Nik7XG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTczMC0gKlxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTczMTogKiBJZiB0aGUgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNCBmbGFnIG9mIHRoaXMgb3JpZ2luYXRvciwgb3JpZywgaGFzXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNzMyLSAqIHRvZ2dsZWQgdGhlbiB0aGlzIG1ldGhvZCB1cGRhdGVzIHRoZSBjb3VudGVyIGFuZCB0aGUgbGlzdCBhY2NvcmRpbmdseS5cbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz0xNzM2PXN0YXRpYyB2b2lkIGJhdGFkdl9tY2FzdF93YW50X3J0cjRfdXBkYXRlKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTc0NS1cdC8qIHN3aXRjaGVkIGZyb20gZmxhZyBzZXQgdG8gdW5zZXQgKi9cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE3NDY6XHRpZiAoIShtY2FzdF9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNCkgXHUwMDI2XHUwMDI2XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNzQ3Olx0ICAgIG9yaWctXHUwMDNlbWNhc3RfZmxhZ3MgXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQpIHtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3NDgtXHRcdGF0b21pY19pbmMoXHUwMDI2YmF0X3ByaXYtXHUwMDNlbWNhc3QubnVtX3dhbnRfYWxsX3J0cjQpO1xuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3NTYtXHQvKiBzd2l0Y2hlZCBmcm9tIGZsYWcgdW5zZXQgdG8gc2V0ICovXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNzU3Olx0fSBlbHNlIGlmIChtY2FzdF9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNCBcdTAwMjZcdTAwMjZcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE3NTg6XHRcdCAgICEob3JpZy1cdTAwM2VtY2FzdF9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNCkpIHtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3NTktXHRcdGF0b21pY19kZWMoXHUwMDI2YmF0X3ByaXYtXHUwMDNlbWNhc3QubnVtX3dhbnRfYWxsX3J0cjQpO1xuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3NzUtICpcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE3NzY6ICogSWYgdGhlIEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjYgZmxhZyBvZiB0aGlzIG9yaWdpbmF0b3IsIG9yaWcsIGhhc1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTc3Ny0gKiB0b2dnbGVkIHRoZW4gdGhpcyBtZXRob2QgdXBkYXRlcyB0aGUgY291bnRlciBhbmQgdGhlIGxpc3QgYWNjb3JkaW5nbHkuXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTc4MT1zdGF0aWMgdm9pZCBiYXRhZHZfbWNhc3Rfd2FudF9ydHI2X3VwZGF0ZShzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3OTAtXHQvKiBzd2l0Y2hlZCBmcm9tIGZsYWcgc2V0IHRvIHVuc2V0ICovXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNzkxOlx0aWYgKCEobWNhc3RfZmxhZ3MgXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjYpIFx1MDAyNlx1MDAyNlxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTc5MjpcdCAgICBvcmlnLVx1MDAzZW1jYXN0X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI2KSB7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNzkzLVx0XHRhdG9taWNfaW5jKFx1MDAyNmJhdF9wcml2LVx1MDAzZW1jYXN0Lm51bV93YW50X2FsbF9ydHI2KTtcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xODAxLVx0Lyogc3dpdGNoZWQgZnJvbSBmbGFnIHVuc2V0IHRvIHNldCAqL1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTgwMjpcdH0gZWxzZSBpZiAobWNhc3RfZmxhZ3MgXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjYgXHUwMDI2XHUwMDI2XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxODAzOlx0XHQgICAhKG9yaWctXHUwMDNlbWNhc3RfZmxhZ3MgXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjYpKSB7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xODA0LVx0XHRhdG9taWNfZGVjKFx1MDAyNmJhdF9wcml2LVx1MDAzZW1jYXN0Lm51bV93YW50X2FsbF9ydHI2KTtcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xODIwLSAqXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxODIxOiAqIElmIHRoZSBCQVRBRFZfTUNBU1RfSEFWRV9NQ19QVFlQRV9DQVBBIGZsYWcgb2YgdGhpcyBvcmlnaW5hdG9yLCBvcmlnLCBoYXNcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE4MjItICogdG9nZ2xlZCB0aGVuIHRoaXMgbWV0aG9kIHVwZGF0ZXMgdGhlIGNvdW50ZXIgYWNjb3JkaW5nbHkuXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTgyND1zdGF0aWMgdm9pZCBiYXRhZHZfbWNhc3RfaGF2ZV9tY19wdHlwZV91cGRhdGUoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xODMwLVx0Lyogc3dpdGNoZWQgZnJvbSBmbGFnIHNldCB0byB1bnNldCAqL1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTgzMTpcdGlmICghKG1jYXN0X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfSEFWRV9NQ19QVFlQRV9DQVBBKSBcdTAwMjZcdTAwMjZcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE4MzI6XHQgICAgb3JpZy1cdTAwM2VtY2FzdF9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX0hBVkVfTUNfUFRZUEVfQ0FQQSlcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE4MzMtXHRcdGF0b21pY19pbmMoXHUwMDI2YmF0X3ByaXYtXHUwMDNlbWNhc3QubnVtX25vX21jX3B0eXBlX2NhcGEpO1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTgzNC1cdC8qIHN3aXRjaGVkIGZyb20gZmxhZyB1bnNldCB0byBzZXQgKi9cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE4MzU6XHRlbHNlIGlmIChtY2FzdF9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX0hBVkVfTUNfUFRZUEVfQ0FQQSBcdTAwMjZcdTAwMjZcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE4MzY6XHRcdCAhKG9yaWctXHUwMDNlbWNhc3RfZmxhZ3MgXHUwMDI2IEJBVEFEVl9NQ0FTVF9IQVZFX01DX1BUWVBFX0NBUEEpKVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTgzNy1cdFx0YXRvbWljX2RlYyhcdTAwMjZiYXRfcHJpdi1cdTAwM2VtY2FzdC5udW1fbm9fbWNfcHR5cGVfY2FwYSk7XG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTg0OT1iYXRhZHZfbWNhc3RfdHZsdl9mbGFnc19nZXQoYm9vbCBlbmFibGVkLCB2b2lkICp0dmx2X3ZhbHVlLCB1MTYgdHZsdl92YWx1ZV9sZW4pXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTg1Ni1cdGlmICghZW5hYmxlZCkge1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTg1NzpcdFx0bWNhc3RfZmxhZ3MgfD0gQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjQ7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxODU4Olx0XHRtY2FzdF9mbGFncyB8PSBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNjtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE4NTktXHR9XG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTg2MS1cdC8qIHJlbW92ZSByZWR1bmRhbnQgZmxhZ3MgdG8gYXZvaWQgc2VuZGluZyBkdXBsaWNhdGUgcGFja2V0cyBsYXRlciAqL1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTg2MjpcdGlmIChtY2FzdF9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjQpXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxODYzOlx0XHRtY2FzdF9mbGFncyB8PSBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0O1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTg2NC1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE4NjU6XHRpZiAobWNhc3RfZmxhZ3MgXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9JUFY2KVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTg2NjpcdFx0bWNhc3RfZmxhZ3MgfD0gQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNjtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE4NjctXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTkzOT1pbnQgYmF0YWR2X21jYXN0X21lc2hfaW5mb19wdXQoc3RydWN0IHNrX2J1ZmYgKm1zZyxcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xOTQ1LVx0aWYgKGJhdF9wcml2LVx1MDAzZW1jYXN0Lm1sYV9mbGFncy5icmlkZ2VkKSB7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxOTQ2Olx0XHRmbGFnc19wcml2IHw9IEJBVEFEVl9NQ0FTVF9GTEFHU19CUklER0VEO1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTk0Ny1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE5NDgtXHRcdGlmIChiYXRfcHJpdi1cdTAwM2VtY2FzdC5tbGFfZmxhZ3MucXVlcmllcl9pcHY0LmV4aXN0cylcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE5NDk6XHRcdFx0ZmxhZ3NfcHJpdiB8PSBCQVRBRFZfTUNBU1RfRkxBR1NfUVVFUklFUl9JUFY0X0VYSVNUUztcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE5NTAtXHRcdGlmIChiYXRfcHJpdi1cdTAwM2VtY2FzdC5tbGFfZmxhZ3MucXVlcmllcl9pcHY2LmV4aXN0cylcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE5NTE6XHRcdFx0ZmxhZ3NfcHJpdiB8PSBCQVRBRFZfTUNBU1RfRkxBR1NfUVVFUklFUl9JUFY2X0VYSVNUUztcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE5NTItXHRcdGlmIChiYXRfcHJpdi1cdTAwM2VtY2FzdC5tbGFfZmxhZ3MucXVlcmllcl9pcHY0LnNoYWRvd2luZylcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE5NTM6XHRcdFx0ZmxhZ3NfcHJpdiB8PSBCQVRBRFZfTUNBU1RfRkxBR1NfUVVFUklFUl9JUFY0X1NIQURPV0lORztcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE5NTQtXHRcdGlmIChiYXRfcHJpdi1cdTAwM2VtY2FzdC5tbGFfZmxhZ3MucXVlcmllcl9pcHY2LnNoYWRvd2luZylcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE5NTU6XHRcdFx0ZmxhZ3NfcHJpdiB8PSBCQVRBRFZfTUNBU1RfRkxBR1NfUVVFUklFUl9JUFY2X1NIQURPV0lORztcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE5NTYtXHR9XG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MjE3OD12b2lkIGJhdGFkdl9tY2FzdF9wdXJnZV9vcmlnKHN0cnVjdCBiYXRhZHZfb3JpZ19ub2RlICpvcmlnKVxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTIxODctXHRiYXRhZHZfbWNhc3Rfd2FudF9ydHI0X3VwZGF0ZShiYXRfcHJpdiwgb3JpZyxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjIxODg6XHRcdFx0XHQgICAgICBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0KTtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTIxODktXHRiYXRhZHZfbWNhc3Rfd2FudF9ydHI2X3VwZGF0ZShiYXRfcHJpdiwgb3JpZyxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjIxOTA6XHRcdFx0XHQgICAgICBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI2KTtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTIxOTEtXHRiYXRhZHZfbWNhc3RfaGF2ZV9tY19wdHlwZV91cGRhdGUoYmF0X3ByaXYsIG9yaWcsXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoyMTkyOlx0XHRcdFx0XHQgIEJBVEFEVl9NQ0FTVF9IQVZFX01DX1BUWVBFX0NBUEEpO1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMjE5My1cbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3RfZm9ydy5jPTYxNj1iYXRhZHZfbWNhc3RfZm9yd19wdXNoX2hkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBzaG9ydCB0dmx2X2xlbilcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3RfZm9ydy5jLTYyNy1cdG1jYXN0X3BhY2tldC1cdTAwM2V0dGwgPSBCQVRBRFZfVFRMO1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0X2ZvcncuYzo2Mjg6XHRtY2FzdF9wYWNrZXQtXHUwMDNlcGFja2V0X3R5cGUgPSBCQVRBRFZfTUNBU1Q7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3RfZm9ydy5jLTYyOS1cdG1jYXN0X3BhY2tldC1cdTAwM2VyZXNlcnZlZCA9IDA7XG4tLVxubmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jPTk0MT1zdHJ1Y3QgYmF0YWR2X29yaWdfbm9kZSAqYmF0YWR2X29yaWdfbm9kZV9uZXcoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbi0tXG5uZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmMtOTc4LSNpZmRlZiBDT05GSUdfQkFUTUFOX0FEVl9NQ0FTVFxubmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jOjk3OTpcdG9yaWdfbm9kZS1cdTAwM2VtY2FzdF9mbGFncyA9IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQ7XG5uZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmM6OTgwOlx0b3JpZ19ub2RlLVx1MDAzZW1jYXN0X2ZsYWdzIHw9IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjY7XG5uZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmM6OTgxOlx0b3JpZ19ub2RlLVx1MDAzZW1jYXN0X2ZsYWdzIHw9IEJBVEFEVl9NQ0FTVF9IQVZFX01DX1BUWVBFX0NBUEE7XG5uZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmMtOTgyLVx0SU5JVF9ITElTVF9OT0RFKFx1MDAyNm9yaWdfbm9kZS1cdTAwM2VtY2FzdF93YW50X2FsbF91bnNub29wYWJsZXNfbm9kZSk7XG4tLVxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jPTEzMzk9aW50IGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYy0xMzc1LVxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jOjEzNzY6XHRyZXQgPSBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3MoYmF0X3ByaXYsIEJBVEFEVl9NQ0FTVCwgTlVMTCwgc2tiLFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jLTEzNzctXHRcdFx0XHRcdCAgICAgdHZsdl9idWZmLCB0dmx2X2J1ZmZfbGVuKTtcbi0tXG5uZXQvYmF0bWFuLWFkdi90dmx2LmM9Mzg5PXN0YXRpYyBpbnQgYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXG4tLVxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTQyNy1cdFx0XHRcdFx0XHQgICAgIHR2bHZfdmFsdWVfbGVuKTtcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYzo0Mjg6XHRjYXNlIEJBVEFEVl9NQ0FTVDpcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy00MjktXHRcdGlmICghc2tiKVxuLS1cbm5ldC9iYXRtYW4tYWR2L3R5cGVzLmg9MTI0ND1zdHJ1Y3QgYmF0YWR2X3ByaXZfbWNhc3Qge1xuLS1cbm5ldC9iYXRtYW4tYWR2L3R5cGVzLmgtMTMxMC1cdCAqIEBudW1fbm9fbWNfcHR5cGVfY2FwYTogY291bnRlciBmb3IgbnVtYmVyIG9mIG5vZGVzIHdpdGhvdXQgdGhlXG5uZXQvYmF0bWFuLWFkdi90eXBlcy5oOjEzMTE6XHQgKiAgQkFUQURWX01DQVNUX0hBVkVfTUNfUFRZUEVfQ0FQQSBmbGFnXG5uZXQvYmF0bWFuLWFkdi90eXBlcy5oLTEzMTItXHQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg1NDQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJBVEFEViBNdWx0aWNhc3QgUGFja2V0IEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBCQVRBRFZfTUNBU1RgIHBhY2tldCB0eXBlLiBSaWdodCwgdGhhdCBtYWtlcyBzZW5zZSDigJMgaXQmIzM5O3Mgc3BlY2lmaWNhbGx5IGZvciBtdWx0aWNhc3QgdHJhZmZpYyB3aXRoaW4gdGhlIEJhdG1hbi1hZHYgbmV0d29yay4gTm93LCBJIHNlZSB0aGF0IGBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXRgIGZ1bmN0aW9uIGlzIHRoZSBvbmUgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIHRoZXNlIGBCQVRBRFZfTUNBU1RgIHBhY2tldHMuIEFuZCB0aGlzIGZ1bmN0aW9uPyBJdCYjMzk7cyBvbmx5IGdvaW5nIHRvIGJlIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCBtb2R1bGUgaWYgYENPTkZJR19CQVRNQU5fQURWX01DQVNUYCBpcyBkZWZpbmVkLCB3aGljaCBpbXBsaWVzIGl0IGlzIGEgY29tcGlsZS10aW1lIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGNvbmZpZyBvcHRpb24sIHRoZSBmdW5jdGlvbiwgYW5kIHRoZSBwYWNrZXQgdHlwZSwgc28gbGV0IG1lIGp1c3QgdGFrZSBhIHF1aWNrIHNlY29uZCB0byBkb3VibGUtY2hlY2sgYHJvdXRpbmcuaGAgYWdhaW4sIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIHJlbGF0ZWQgdG8gdGhlIHJvdXRpbmcgYXNwZWN0cyBvZiB0aGlzIG11bHRpY2FzdCBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JhdG1hbi1hZHYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9iYXRtYW4tYWR2L21haW4uYz01MDQ9c3RhdGljIHZvaWQgYmF0YWR2X3JlY3ZfaGFuZGxlcl9pbml0KHZvaWQpXG4tLVxubmV0L2JhdG1hbi1hZHYvbWFpbi5jLTUzNy1cdC8qIG11bHRpY2FzdCBwYWNrZXQgKi9cbm5ldC9iYXRtYW4tYWR2L21haW4uYzo1Mzg6XHRiYXRhZHZfcnhfaGFuZGxlcltCQVRBRFZfTUNBU1RdID0gYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0O1xubmV0L2JhdG1hbi1hZHYvbWFpbi5jLTUzOS1cbi0tXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmM9MTIxMj1pbnQgYmF0YWR2X3JlY3ZfYmNhc3RfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jLTEzMjgtLyoqXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmM6MTMyOTogKiBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQoKSAtIHByb2Nlc3MgcmVjZWl2ZWQgYmF0bWFuLWFkdiBtdWx0aWNhc3QgcGFja2V0XG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMtMTMzMC0gKiBAc2tiOiB0aGUgcmVjZWl2ZWQgYmF0bWFuLWFkdiBtdWx0aWNhc3QgcGFja2V0XG4tLVxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jLTEzMzgtICovXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmM6MTMzOTppbnQgYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMtMTM0MC1cdFx0XHQgICAgIHN0cnVjdCBiYXRhZHZfaGFyZF9pZmFjZSAqcmVjdl9pZilcbi0tXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmg9Mjg9aW50IGJhdGFkdl9yZWN2X2JjYXN0X3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuaC0zMC0jaWZkZWYgQ09ORklHX0JBVE1BTl9BRFZfTUNBU1Rcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuaDozMTppbnQgYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmgtMzItXHRcdFx0ICAgICBzdHJ1Y3QgYmF0YWR2X2hhcmRfaWZhY2UgKnJlY3ZfaWYpO1xubmV0L2JhdG1hbi1hZHYvcm91dGluZy5oLTMzLSNlbHNlXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmg6MzQ6c3RhdGljIGlubGluZSBpbnQgYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmgtMzUtXHRcdFx0XHRcdCAgIHN0cnVjdCBiYXRhZHZfaGFyZF9pZmFjZSAqcmVjdl9pZilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkzNzUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJBVE1BTi1BRFYgTXVsdGljYXN0IERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgaW50byB0aGlzIGBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXRgIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgaXQmIzM5O3Mgb25seSAqZnVsbHkqIGltcGxlbWVudGVkIHdoZW4gYENPTkZJR19CQVRNQU5fQURWX01DQVNUYCBpcyBlbmFibGVkLiBUaGF0JiMzOTtzIGEgZ2l2ZW4uIFNvLCB5ZXMsIHRoZSBtdWx0aWNhc3QgZnVuY3Rpb25hbGl0eSBkZWZpbml0ZWx5IGhpbmdlcyBvbiBgQkFUTUFOX0FEVl9NQ0FTVGAuIE5vdywgdGhlIGJyb2FkZXIgcXVlc3Rpb246IHdoYXQgZWxzZSBkbyBJIG5lZWQ/IEkgYXNzdW1lIHRoZSBiYXNlIEJBVE1BTi1BRFYgZnVuY3Rpb25hbGl0eSwgbWVhbmluZyBgQkFUTUFOX0FEVmAgaXRzZWxmIGlzIG5lY2Vzc2FyeS4gVGhhdCYjMzk7cyBwcm9iYWJseSB0aGUgY29yZSBjb25maWcsIHJpZ2h0PwoKQnV0IEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIEFyZSB0aGVyZSBhbnkgKm90aGVyKiBkZXBlbmRlbmNpZXMgbHVya2luZyBpbiB0aGUgc2hhZG93cz8gVGltZSB0byBkaXZlIGludG8gdGhlIGBuZXQvYmF0bWFuLWFkdi9LY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSBkZWZpbml0aXZlIHNvdXJjZS4gSSYjMzk7bGwgc2NvdXIgdGhhdCBjb25maWcgZmlsZSB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgc25lYWt5LCBpbmRpcmVjdCBkZXBlbmRlbmNpZXMgdGhhdCBJJiMzOTttIG1pc3NpbmcuIE5lZWQgdG8gYmUgdGhvcm91Z2ggaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvYmF0bWFuLWFkdi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjIENvcHlyaWdodCAoQykgQi5BLlQuTS5BLk4uIGNvbnRyaWJ1dG9yczpcbiAgIDM6XHQjXG4gICA0Olx0IyBNYXJlayBMaW5kbmVyLCBTaW1vbiBXdW5kZXJsaWNoXG4gICA1Olx0XG4gICA2Olx0I1xuICAgNzpcdCMgQi5BLlQuTS5BLk4gbWVzaGluZyBwcm90b2NvbFxuICAgODpcdCNcbiAgIDk6XHRcbiAgMTA6XHRjb25maWcgQkFUTUFOX0FEVlxuICAxMTpcdFx0dHJpc3RhdGUgXCYjMzQ7Qi5BLlQuTS5BLk4uIEFkdmFuY2VkIE1lc2hpbmcgUHJvdG9jb2xcJiMzNDtcbiAgMTI6XHRcdHNlbGVjdCBDUkMzMlxuICAxMzpcdFx0aGVscFxuICAxNDpcdFx0ICBCLkEuVC5NLkEuTi4gKGJldHRlciBhcHByb2FjaCB0byBtb2JpbGUgYWQtaG9jIG5ldHdvcmtpbmcpIGlzXG4gIDE1Olx0XHQgIGEgcm91dGluZyBwcm90b2NvbCBmb3IgbXVsdGktaG9wIGFkLWhvYyBtZXNoIG5ldHdvcmtzLiBUaGVcbiAgMTY6XHRcdCAgbmV0d29ya3MgbWF5IGJlIHdpcmVkIG9yIHdpcmVsZXNzLiBTZWVcbiAgMTc6XHRcdCAgaHR0cHM6Ly93d3cub3Blbi1tZXNoLm9yZy8gZm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIHVzZXIgc3BhY2VcbiAgMTg6XHRcdCAgdG9vbHMuXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIEJBVE1BTl9BRFZfQkFUTUFOX1ZcbiAgMjE6XHRcdGJvb2wgXCYjMzQ7Qi5BLlQuTS5BLk4uIFYgcHJvdG9jb2xcJiMzNDtcbiAgMjI6XHRcdGRlcGVuZHMgb24gQkFUTUFOX0FEViBcdTAwMjZcdTAwMjYgIShDRkc4MDIxMT1tIFx1MDAyNlx1MDAyNiBCQVRNQU5fQURWPXkpXG4gIDIzOlx0XHRkZWZhdWx0IHlcbiAgMjQ6XHRcdGhlbHBcbiAgMjU6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgQi5BLlQuTS5BLk4uIFYgcHJvdG9jb2wsIHRoZSBzdWNjZXNzb3JcbiAgMjY6XHRcdCAgb2YgdGhlIGN1cnJlbnRseSB1c2VkIEIuQS5ULk0uQS5OLiBJViBwcm90b2NvbC4gVGhlIG1haW5cbiAgMjc6XHRcdCAgY2hhbmdlcyBpbmNsdWRlIHNwbGl0dGluZyBvZiB0aGUgT0dNIHByb3RvY29sIGludG8gYSBuZWlnaGJvclxuICAyODpcdFx0ICBkaXNjb3ZlcnkgcHJvdG9jb2wgKEVjaG8gTG9jYXRpb24gUHJvdG9jb2wsIEVMUCkgYW5kIGEgbmV3IE9HTVxuICAyOTpcdFx0ICBQcm90b2NvbCBPR012MiBmb3IgZmxvb2RpbmcgcHJvdG9jb2wgaW5mb3JtYXRpb24gdGhyb3VnaCB0aGVcbiAgMzA6XHRcdCAgbmV0d29yaywgYXMgd2VsbCBhcyBhIHRocm91Z2hwdXQgYmFzZWQgbWV0cmljLlxuICAzMTpcdFx0ICBCLkEuVC5NLkEuTi4gViBpcyBjdXJyZW50bHkgY29uc2lkZXJlZCBleHBlcmltZW50YWwgYW5kIG5vdFxuICAzMjpcdFx0ICBjb21wYXRpYmxlIHRvIEIuQS5ULk0uQS5OLiBJViBuZXR3b3Jrcy5cbiAgMzM6XHRcbiAgMzQ6XHRjb25maWcgQkFUTUFOX0FEVl9CTEFcbiAgMzU6XHRcdGJvb2wgXCYjMzQ7QnJpZGdlIExvb3AgQXZvaWRhbmNlXCYjMzQ7XG4gIDM2Olx0XHRkZXBlbmRzIG9uIEJBVE1BTl9BRFYgXHUwMDI2XHUwMDI2IElORVRcbiAgMzc6XHRcdHNlbGVjdCBDUkMxNlxuICAzODpcdFx0c2VsZWN0IE5FVF9DUkMzMkNcbiAgMzk6XHRcdGRlZmF1bHQgeVxuICA0MDpcdFx0aGVscFxuICA0MTpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIEJMQSAoQnJpZGdlIExvb3AgQXZvaWRhbmNlKSwgYSBtZWNoYW5pc21cbiAgNDI6XHRcdCAgdG8gYXZvaWQgRXRoZXJuZXQgZnJhbWVzIGxvb3Bpbmcgd2hlbiBtZXNoIG5vZGVzIGFyZSBjb25uZWN0ZWRcbiAgNDM6XHRcdCAgdG8gYm90aCB0aGUgc2FtZSBMQU4gYW5kIHRoZSBzYW1lIG1lc2guIElmIHlvdSB3aWxsIG5ldmVyIHVzZVxuICA0NDpcdFx0ICBtb3JlIHRoYW4gb25lIG1lc2ggbm9kZSBpbiB0aGUgc2FtZSBMQU4sIHlvdSBjYW4gc2FmZWx5IHJlbW92ZVxuICA0NTpcdFx0ICB0aGlzIGZlYXR1cmUgYW5kIHNhdmUgc29tZSBzcGFjZS5cbiAgNDY6XHRcbiAgNDc6XHRjb25maWcgQkFUTUFOX0FEVl9EQVRcbiAgNDg6XHRcdGJvb2wgXCYjMzQ7RGlzdHJpYnV0ZWQgQVJQIFRhYmxlXCYjMzQ7XG4gIDQ5Olx0XHRkZXBlbmRzIG9uIEJBVE1BTl9BRFYgXHUwMDI2XHUwMDI2IElORVRcbiAgNTA6XHRcdGRlZmF1bHQgeVxuICA1MTpcdFx0aGVscFxuICA1MjpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIERBVCAoRGlzdHJpYnV0ZWQgQVJQIFRhYmxlKSwgYSBESFQgYmFzZWRcbiAgNTM6XHRcdCAgbWVjaGFuaXNtIHRoYXQgaW5jcmVhc2VzIEFSUCByZWxpYWJpbGl0eSBvbiBzcGFyc2Ugd2lyZWxlc3NcbiAgNTQ6XHRcdCAgbWVzaCBuZXR3b3Jrcy4gSWYgeW91IHRoaW5rIHRoYXQgeW91ciBuZXR3b3JrIGRvZXMgbm90IG5lZWRcbiAgNTU6XHRcdCAgdGhpcyBvcHRpb24geW91IGNhbiBzYWZlbHkgcmVtb3ZlIGl0IGFuZCBzYXZlIHNvbWUgc3BhY2UuXG4gIDU2Olx0XG4gIDU3Olx0Y29uZmlnIEJBVE1BTl9BRFZfTUNBU1RcbiAgNTg6XHRcdGJvb2wgXCYjMzQ7TXVsdGljYXN0IG9wdGltaXNhdGlvblwmIzM0O1xuICA1OTpcdFx0ZGVwZW5kcyBvbiBCQVRNQU5fQURWIFx1MDAyNlx1MDAyNiBJTkVUIFx1MDAyNlx1MDAyNiAhKEJSSURHRT1tIFx1MDAyNlx1MDAyNiBCQVRNQU5fQURWPXkpXG4gIDYwOlx0XHRkZWZhdWx0IHlcbiAgNjE6XHRcdGhlbHBcbiAgNjI6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgbXVsdGljYXN0IG9wdGltaXNhdGlvbiB3aGljaCBhaW1zIHRvXG4gIDYzOlx0XHQgIHJlZHVjZSB0aGUgYWlyIG92ZXJoZWFkIHdoaWxlIGltcHJvdmluZyB0aGUgcmVsaWFiaWxpdHkgb2ZcbiAgNjQ6XHRcdCAgbXVsdGljYXN0IG1lc3NhZ2VzLlxuICA2NTpcdFxuICA2NjpcdGNvbmZpZyBCQVRNQU5fQURWX0RFQlVHXG4gIDY3Olx0XHRib29sIFwmIzM0O0IuQS5ULk0uQS5OLiBkZWJ1Z2dpbmdcJiMzNDtcbiAgNjg6XHRcdGRlcGVuZHMgb24gQkFUTUFOX0FEVlxuICA2OTpcdFx0aGVscFxuICA3MDpcdFx0ICBUaGlzIGlzIGFuIG9wdGlvbiBmb3IgdXNlIGJ5IGRldmVsb3BlcnM7IG1vc3QgcGVvcGxlIHNob3VsZFxuICA3MTpcdFx0ICBzYXkgTiBoZXJlLiBUaGlzIGVuYWJsZXMgY29tcGlsYXRpb24gb2Ygc3VwcG9ydCBmb3JcbiAgNzI6XHRcdCAgb3V0cHV0dGluZyBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gdG8gdGhlIHRyYWNpbmcgYnVmZmVyLiBUaGUgb3V0cHV0IGlzXG4gIDczOlx0XHQgIGNvbnRyb2xsZWQgdmlhIHRoZSBiYXRhZHYgbmV0ZGV2IHNwZWNpZmljIGxvZ19sZXZlbCBzZXR0aW5nLlxuICA3NDpcdFxuICA3NTpcdGNvbmZpZyBCQVRNQU5fQURWX1RSQUNJTkdcbiAgNzY6XHRcdGJvb2wgXCYjMzQ7Qi5BLlQuTS5BLk4uIHRyYWNpbmcgc3VwcG9ydFwmIzM0O1xuICA3NzpcdFx0ZGVwZW5kcyBvbiBCQVRNQU5fQURWXG4gIDc4Olx0XHRkZXBlbmRzIG9uIEVWRU5UX1RSQUNJTkdcbiAgNzk6XHRcdGhlbHBcbiAgODA6XHRcdCAgVGhpcyBpcyBhbiBvcHRpb24gZm9yIHVzZSBieSBkZXZlbG9wZXJzOyBtb3N0IHBlb3BsZSBzaG91bGRcbiAgODE6XHRcdCAgc2F5IE4gaGVyZS4gU2VsZWN0IHRoaXMgb3B0aW9uIHRvIGdhdGhlciB0cmFjZXMgbGlrZSB0aGUgZGVidWdcbiAgODI6XHRcdCAgbWVzc2FnZXMgdXNpbmcgdGhlIGdlbmVyaWMgdHJhY2luZyBpbmZyYXN0cnVjdHVyZSBvZiB0aGUga2VybmVsLlxuICA4MzpcdFx0ICBCQVRNQU5fQURWX0RFQlVHIG11c3QgYWxzbyBiZSBzZWxlY3RlZCB0byBnZXQgdHJhY2UgZXZlbnRzIGZvclxuICA4NDpcdFx0ICBiYXRhZHZfZGJnLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxODo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDk3OQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24gYEJBVE1BTl9BRFZfTUNBU1RgLiBJdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpdCBoaW5nZXMgb24gYEJBVE1BTl9BRFZgLCBgSU5FVGAsIGFuZCB0aGUgaW52ZXJzZSBvZiBhIGNvbWJpbmF0aW9uIG9mIGBCUklER0U9bWAgYW5kIGBCQVRNQU5fQURWPXlgLiBTbywgcmVhbGx5LCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBgQkFUTUFOX0FEVmAgYW5kIGBCQVRNQU5fQURWX01DQVNUYCBhcmUgZW5hYmxlZCwgYW5kIGBJTkVUYCB3aGljaCBJIGFzc3VtZSBpcyB1c3VhbGx5IGFscmVhZHkgaGFuZGxlZC4gVGhhdCBzZWVtcyBsb2dpY2FsLgoKTm93LCBsZXQmIzM5O3MgZ2V0IGludG8gdGhlIGNvZGUgaXRzZWxmLiBUaGUgcGF0Y2ggdG91Y2hlcyBgYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyYC4gT2theSwgYW5kIHRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3NgLiBSaWdodCwgYW5kIGBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3NgIGlzLCBpbiB0dXJuLCBjYWxsZWQgYnkgYGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldGAgYW5kIHNvbWUgb3RoZXJzLiBTbywgYGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldGAgc2VlbXMgbGlrZSBhIGtleSBmdW5jdGlvbiB0byB1bmRlcnN0YW5kLCBhcyB3ZWxsIGFzIGBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3NgLiBXYWl0IGEgbWludXRlLCBgYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzYCBhbmQgYGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldGAgYXJlIGJvdGggbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMsIHNvIHRoaXMgaXMgYW4gQVBJIGVudHJ5IHBvaW50LiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JhdG1hbi1hZHYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9iYXRtYW4tYWR2L2JhdF92X29nbS5jPTgwMT1iYXRhZHZfdl9vZ21fcHJvY2Vzc19wZXJfb3V0aWYoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbi0tXG5uZXQvYmF0bWFuLWFkdi9iYXRfdl9vZ20uYy04MjItXHRpZiAoc2Vxbm9fYWdlIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBpZl9vdXRnb2luZyA9PSBCQVRBRFZfSUZfREVGQVVMVClcbm5ldC9iYXRtYW4tYWR2L2JhdF92X29nbS5jOjgyMzpcdFx0YmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzKGJhdF9wcml2LCBCQVRBRFZfT0dNMiwgb3JpZ19ub2RlLFxubmV0L2JhdG1hbi1hZHYvYmF0X3Zfb2dtLmMtODI0LVx0XHRcdFx0XHQgICAgICAgTlVMTCxcbi0tXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmM9MTA5NT1pbnQgYmF0YWR2X3JlY3ZfdW5pY2FzdF90dmx2KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jLTExMjMtXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmM6MTEyNDpcdHJldCA9IGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2VzcyhiYXRfcHJpdiwgQkFUQURWX1VOSUNBU1RfVFZMVixcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYy0xMTI1LVx0XHRcdFx0XHQgICAgIE5VTEwsIHNrYiwgdHZsdl9idWZmLFxuLS1cbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYz0xMzM5PWludCBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMtMTM3NS1cbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYzoxMzc2Olx0cmV0ID0gYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzKGJhdF9wcml2LCBCQVRBRFZfTUNBU1QsIE5VTEwsIHNrYixcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYy0xMzc3LVx0XHRcdFx0XHQgICAgIHR2bHZfYnVmZiwgdHZsdl9idWZmX2xlbik7XG4tLVxubmV0L2JhdG1hbi1hZHYvdHZsdi5jPTQ1OD1zdGF0aWMgYm9vbCBiYXRhZHZfdHZsdl9jb250YWluZXJzX2NvbnRhaW4odm9pZCAqdHZsdl92YWx1ZSxcbi0tXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNDkwLS8qKlxubmV0L2JhdG1hbi1hZHYvdHZsdi5jOjQ5MTogKiBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3MoKSAtIHBhcnNlIHRoZSBnaXZlbiB0dmx2IGJ1ZmZlciB0byBjYWxsIHRoZVxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTQ5Mi0gKiAgYXBwcm9wcmlhdGUgaGFuZGxlcnNcbi0tXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNTAyLSAqL1xubmV0L2JhdG1hbi1hZHYvdHZsdi5jOjUwMzppbnQgYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNTA0LVx0XHRcdFx0ICAgdTggcGFja2V0X3R5cGUsXG4tLVxubmV0L2JhdG1hbi1hZHYvdHZsdi5jPTU4Mj12b2lkIGJhdGFkdl90dmx2X29nbV9yZWNlaXZlKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXG4tLVxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTU5Ny1cbm5ldC9iYXRtYW4tYWR2L3R2bHYuYzo1OTg6XHRiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3MoYmF0X3ByaXYsIEJBVEFEVl9JVl9PR00sIG9yaWdfbm9kZSwgTlVMTCxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy01OTktXHRcdFx0XHQgICAgICAgdHZsdl92YWx1ZSwgdHZsdl92YWx1ZV9sZW4pO1xuLS1cbm5ldC9iYXRtYW4tYWR2L3R2bHYuaD00MD12b2lkIGJhdGFkdl90dmx2X2hhbmRsZXJfdW5yZWdpc3RlcihzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxubmV0L2JhdG1hbi1hZHYvdHZsdi5oLTQxLVx0XHRcdFx0ICAgIHU4IHR5cGUsIHU4IHZlcnNpb24pO1xubmV0L2JhdG1hbi1hZHYvdHZsdi5oOjQyOmludCBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3Moc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbm5ldC9iYXRtYW4tYWR2L3R2bHYuaC00My1cdFx0XHRcdCAgIHU4IHBhY2tldF90eXBlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxODo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjQyMwoJCQkJCQkJb3V0cHV0OiAxMzQKCQkJCQkJCXRob3VnaHRzOiAzNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBDYW5kaWRhdGUgQXNzZXNzbWVudDogQmF0bWFuLWFkdiBNdWx0aWNhc3QgUGFja2V0IEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O3ZlIHplcm9lZCBpbiBvbiBhIHByb21pc2luZyBmdXp6aW5nIHRhcmdldC4gYGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2Vzc2AgYW5kIGBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXRgIGFyZSB0aGUga2V5IGZvY3VzIHN5bWJvbHMgaGVyZS4gVGhlIHN1bW1hcnkgaW5kaWNhdGVzIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGhhcmRlbmVkIGBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJgIGZ1bmN0aW9uIGFuZCBpbnRlZ3JhdGVzIGl0IGludG8gYGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcmAgdG8gYWRkcmVzcyBhIHBvdGVudGlhbCB0cmFuc3BvcnQgaGVhZGVyIG9mZnNldCBjYWxjdWxhdGlvbiB2dWxuZXJhYmlsaXR5LCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBtdWx0aWNhc3QgcGFja2V0cyB3aXRoaW4gYmF0bWFuLWFkdi4gRnVuY3Rpb25hbGx5LCBpdCYjMzk7cyBhIGNoYW5nZSB0byB0aGUgbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYywgYW5kIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHdoaWNoIGlzIGV4Y2VsbGVudCBmb3IgZnV6emluZy4KCk15IGFuYWx5c2lzIGNvbmZpcm1zIHRoYXQgYGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldGAgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyBgQkFUQURWX01DQVNUYCwgY2FsbGluZyBgYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzYCB3aGljaCB1c2VzIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgLiBJIHdhbnRlZCB0byBiZSBjZXJ0YWluIGFib3V0IHRoZSBjYWxsIGhpZXJhcmNoeSB0byBmdWxseSB1bmRlcnN0YW5kIGhvdyB0aGlzIGFyZWEgb2YgdGhlIGNvZGUgZnVuY3Rpb25zLgoKTm93LCBhIHF1aWNrIGNoZWNrIG9mIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gYEJBVE1BTl9BRFZfTUNBU1RgIGlzIHN1ZmZpY2llbnQuIEl0IHJlcXVpcmVzIGBCQVRNQU5fQURWYCwgYElORVRgLCBhbmQgZXhjbHVkZXMgdGhlIGNhc2Ugd2hlcmUgYEJSSURHRT1tYCBhbmQgYEJBVE1BTl9BRFY9eWAuIFRoaXMgbWVhbnMgd2UgbmVlZCBib3RoIGBCQVRNQU5fQURWYCBhbmQgYEJBVE1BTl9BRFZfTUNBU1RgIGVuYWJsZWQgaW4gdGhlIGNvbmZpZy4KCkFscmlnaHQsIHdpdGggdGhhdCB1bmRlcnN0YW5kaW5nLCBJJiMzOTttIGNvbmZpZGVudCBpbiB0YWdnaW5nIHRoaXMgYXMgYSBmdXp6aW5nIGNhbmRpZGF0ZS4gSSYjMzk7bGwgdXRpbGl6ZSB0aGUgc2V0LXJlc3VsdHMgdG9vbCB0byBkb2N1bWVudCB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkFUTUFOX0FEViYjMzQ7LAogICAgJiMzNDtCQVRNQU5fQURWX01DQVNUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzJiMzNDssCiAgICAmIzM0O2JhdGFkdl9yZWN2X21jYXN0X3BhY2tldCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgaGFyZGVuZWQgdmVyc2lvbiBvZiBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXIgYW5kIHVzZXMgaXQgaW4gYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyIHRvIGZpeCBhIHBvdGVudGlhbCBpc3N1ZSB3aXRoIHRyYW5zcG9ydCBoZWFkZXIgb2Zmc2V0IGNhbGN1bGF0aW9uIGZvciBtdWx0aWNhc3QgcGFja2V0cyBpbiBiYXRtYW4tYWR2LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JBVE1BTl9BRFYmIzM0OywKICAgICYjMzQ7QkFUTUFOX0FEVl9NQ0FTVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2VzcyYjMzQ7LAogICAgJiMzNDtiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGhhcmRlbmVkIHZlcnNpb24gb2Ygc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyIGFuZCB1c2VzIGl0IGluIGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlciB0byBmaXggYSBwb3RlbnRpYWwgaXNzdWUgd2l0aCB0cmFuc3BvcnQgaGVhZGVyIG9mZnNldCBjYWxjdWxhdGlvbiBmb3IgbXVsdGljYXN0IHBhY2tldHMgaW4gYmF0bWFuLWFkdi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxODo1OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE4OjU5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBoYXJkZW5lZCB2ZXJzaW9uIG9mIGBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJgIChgc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWxgKSB3aGljaCBjaGVja3MgZm9yIGludGVnZXIgdHJ1bmNhdGlvbiBhbmQgaW52YWxpZCBvZmZzZXRzIChlLmcuLCBgfjBVYCkgd2hlbiBzZXR0aW5nIHRoZSBgc2tiLVx1MDAzZXRyYW5zcG9ydF9oZWFkZXJgIGZpZWxkLiBJdCB0aGVuIGFwcGxpZXMgdGhpcyBuZXcgZnVuY3Rpb24gaW4gYGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcmAgdG8gcHJldmVudCBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBjYXVzZWQgYnkgMTYtYml0IHRydW5jYXRpb24gb2YgdGhlIHRyYW5zcG9ydCBoZWFkZXIgb2Zmc2V0LiBUaGVzZSBjaGFuZ2VzIGFyZSBkZXNpZ25lZCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgb3Igd3JpdGVzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOLiBUaGVyZSBpcyBubyBhbGxvY2F0aW9uIG9mIG5ldyBidWZmZXJzLCBubyBjaGFuZ2VzIHRvIGhvdyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBoYW5kbGVkLCBhbmQgbm8gc3RydWN0dXJlcyBiZWluZyBjb3BpZWQgdG8gdXNlciBzcGFjZSB0aGF0IGNvdWxkIGxlYWsgdW5pbml0aWFsaXplZCBieXRlcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTAzNDY3ODZlNjViOWY0NTgxYzc5YzA5YTY4YmRmNThhNDc5MjhiMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDE4OjU4OjQ3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9za2J1ZmYuaCBiL2luY2x1ZGUvbGludXgvc2tidWZmLmgKaW5kZXggMjJlZGExZDU0YTBlOC4uZGJlY2VhZjVjM2IzOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9za2J1ZmYuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oCkBAIC0zMTI2LDYgJiM0MzszMTI2LDMyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlza2ItJmd0O3RyYW5zcG9ydF9oZWFkZXIgJiM0Mzs9IG9mZnNldDsKIH0KIAomIzQzOy8qKgomIzQzOyAqIHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsIC0gY29uZGl0aW9uYWxseSBzZXQgdHJhbnNwb3J0IGhlYWRlcgomIzQzOyAqIEBza2I6IGJ1ZmZlciB0byBhbHRlcgomIzQzOyAqIEBvZmZzZXQ6IG9mZnNldCB0byBhZGQgdG8gc2tiLSZndDtkYXRhCiYjNDM7ICoKJiM0MzsgKiBIYXJkZW5lZCB2ZXJzaW9uIG9mIHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcigpLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuczogdHJ1ZSBpZiB0aGUgb3BlcmF0aW9uIHdhcyBhIHN1Y2Nlc3MuCiYjNDM7ICovCiYjNDM7c3RhdGljIGlubGluZSBib29sIF9fbXVzdF9jaGVjawomIzQzO3NrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IGludCBvZmZzZXQpCiYjNDM7ewomIzQzOwlsb25nIHRyYW5zcG9ydF9vZmZzZXQgPSBza2ItJmd0O2RhdGEgLSBza2ItJmd0O2hlYWQgJiM0Mzsgb2Zmc2V0OwomIzQzOwomIzQzOwlpZiAodW5saWtlbHkodHJhbnNwb3J0X29mZnNldCAhPQomIzQzOwkJICAgICAodHlwZW9mKHNrYi0mZ3Q7dHJhbnNwb3J0X2hlYWRlcikpdHJhbnNwb3J0X29mZnNldCkpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CWlmICh1bmxpa2VseSh0cmFuc3BvcnRfb2Zmc2V0ID09CiYjNDM7CQkgICAgICh0eXBlb2Yoc2tiLSZndDt0cmFuc3BvcnRfaGVhZGVyKSl+MFUpKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwlza2ItJmd0O3RyYW5zcG9ydF9oZWFkZXIgPSB0cmFuc3BvcnRfb2Zmc2V0OwomIzQzOwlyZXR1cm4gdHJ1ZTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIgKnNrYl9uZXR3b3JrX2hlYWRlcihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewogCXJldHVybiBza2ItJmd0O2hlYWQgJiM0Mzsgc2tiLSZndDtuZXR3b3JrX2hlYWRlcjsKZGlmZiAtLWdpdCBhL25ldC9iYXRtYW4tYWR2L3R2bHYuYyBiL25ldC9iYXRtYW4tYWR2L3R2bHYuYwppbmRleCAxYzlmYjIxOTg1ZjZhLi5jMzg0ZGIxNmJjYWMxIDEwMDY0NAotLS0gYS9uZXQvYmF0bWFuLWFkdi90dmx2LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JhdG1hbi1hZHYvdHZsdi5jCkBAIC00MzMsOCAmIzQzOzQzMywxMSBAQCBzdGF0aWMgaW50IGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcihzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LAogCQkJcmV0dXJuIE5FVF9SWF9TVUNDRVNTOwogCiAJCXR2bHZfb2Zmc2V0ID0gKHVuc2lnbmVkIGNoYXIgKil0dmx2X3ZhbHVlIC0gc2tiLSZndDtkYXRhOwomIzQzOwkJaWYgKCFza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJfY2FyZWZ1bChza2IsCiYjNDM7CQkJCQkJICAgICAgdHZsdl9vZmZzZXQgJiM0MzsgdHZsdl92YWx1ZV9sZW4pKQomIzQzOwkJCXJldHVybiAtRUlOVkFMOwomIzQzOwogCQlza2Jfc2V0X25ldHdvcmtfaGVhZGVyKHNrYiwgdHZsdl9vZmZzZXQpOwotCQlza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXIoc2tiLCB0dmx2X29mZnNldCAmIzQzOyB0dmx2X3ZhbHVlX2xlbik7CiAKIAkJcmV0dXJuIHR2bHZfaGFuZGxlci0mZ3Q7bWNhc3RfaGFuZGxlcihiYXRfcHJpdiwgc2tiKTsKIAl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxODo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDgxCgkJCQkJCQlvdXRwdXQ6IDE5OQoJCQkJCQkJdGhvdWdodHM6IDg3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoOiBBZGRyZXNzaW5nIEludGVnZXIgT3ZlcmZsb3cgaW4gU0tCIFRyYW5zcG9ydCBIZWFkZXIgU2V0dGluZyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlLiBJdCYjMzk7cyByZXBsYWNpbmcgdGhlIHN0YW5kYXJkIGBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJgIHdpdGggYSAmIzM0O2NhcmVmdWwmIzM0OyB2ZXJzaW9uLCBgc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWxgLCB3aXRoaW4gdGhlIGBuZXQvYmF0bWFuLWFkdi90dmx2LmNgIGZpbGUuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzLCBpcyB0aGlzIGFib3V0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5PyBObywgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBwdXJlbHkgYSBib3VuZHMgY2hlY2ssIGFuIG92ZXJmbG93IGNoZWNrLCBzcGVjaWZpY2FsbHkuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGNvZGU6CgpgYGBjCnN0YXRpYyBpbmxpbmUgYm9vbCBfX211c3RfY2hlY2sKc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3QgaW50IG9mZnNldCkKewoJbG9uZyB0cmFuc3BvcnRfb2Zmc2V0ID0gc2tiLSZndDtkYXRhIC0gc2tiLSZndDtoZWFkICYjNDM7IG9mZnNldDsKCglpZiAodW5saWtlbHkodHJhbnNwb3J0X29mZnNldCAhPQoJCSAgICAgKHR5cGVvZihza2ItJmd0O3RyYW5zcG9ydF9oZWFkZXIpKXRyYW5zcG9ydF9vZmZzZXQpKQoJCXJldHVybiBmYWxzZTsKCglpZiAodW5saWtlbHkodHJhbnNwb3J0X29mZnNldCA9PQoJCSAgICAgKHR5cGVvZihza2ItJmd0O3RyYW5zcG9ydF9oZWFkZXIpKX4wVSkpCgkJcmV0dXJuIGZhbHNlOwoKCXNrYi0mZ3Q7dHJhbnNwb3J0X2hlYWRlciA9IHRyYW5zcG9ydF9vZmZzZXQ7CglyZXR1cm4gdHJ1ZTsKfQpgYGAKClRoaXMgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQgY2hlY2tzIGlmIHRoZSBgdHJhbnNwb3J0X29mZnNldGAgd291bGQgd3JhcCBhcm91bmQgd2hlbiBzdG9yZWQgaW4gYHNrYi0mZ3Q7dHJhbnNwb3J0X2hlYWRlcmAsIHdoaWNoIGlzIGEgYHUxNmAgb3IgYHVuc2lnbmVkIGludGAgZGVwZW5kaW5nIG9uIHRoZSBhcmNoaXRlY3R1cmUuIEl0IGFsc28gY2hlY2tzIGZvciB0aGUgaW52YWxpZCBvZmZzZXQsIGB+MFVgICgweGZmZmYgZm9yIGEgYHUxNmApLiBUaGlzIHByZXZlbnRzIHRoZSBgc2tiLSZndDt0cmFuc3BvcnRfaGVhZGVyYCBmcm9tIGJlaW5nIHNldCB0byBhbiBpbnZhbGlkIG9yIG91dC1vZi1ib3VuZHMgb2Zmc2V0LCBtaXRpZ2F0aW5nIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZC93cml0ZSBsYXRlciB3aGVuIGBza2JfdHJhbnNwb3J0X2hlYWRlcihza2IpYCBpcyBjYWxsZWQuCgpMb29raW5nIGF0IHRoZSBjb250ZXh0IGluIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgOgoKYGBgYwoJCXR2bHZfb2Zmc2V0ID0gKHVuc2lnbmVkIGNoYXIgKil0dmx2X3ZhbHVlIC0gc2tiLSZndDtkYXRhOwoJCWlmICghc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWwoc2tiLAoJCQkJCQkgICAgICB0dmx2X29mZnNldCAmIzQzOyB0dmx2X3ZhbHVlX2xlbikpCgkJCXJldHVybiAtRUlOVkFMOwoKCQlza2Jfc2V0X25ldHdvcmtfaGVhZGVyKHNrYiwgdHZsdl9vZmZzZXQpOwpgYGAKCk9rYXksIGl0JiMzOTtzIGp1c3Qgc2V0dGluZyB0aGUgdHJhbnNwb3J0IGhlYWRlciBiYXNlZCBvbiBhbiBvZmZzZXQuIElmIHRoZSBgc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWxgIGZhaWxzLCBpdCByZXR1cm5zIGAtRUlOVkFMYC4gVGhpcyBpcyBhbGwgYWJvdXQgcHJldmVudGluZyAxNi1iaXQgdHJ1bmNhdGlvbiBsZWFkaW5nIHRvIE9PQiBhY2Nlc3NlcywgYW5kIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlJiMzOTtzIG5vIG5ldyBhbGxvY2F0aW9uLCBubyBjaGFuZ2VzIHRvIGhvdyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyB0cmVhdGVkLCBhbmQgbm8gc3RydWN0dXJlcyBiZWluZyBjb3BpZWQgdG8gdXNlciBzcGFjZSB0aGF0IGNvdWxkIGxlYWsgdW5pbml0aWFsaXplZCBieXRlcy4gVGh1cywgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzbiYjMzk7dCBuZWNlc3NhcnkgaGVyZS4gVGhlIHBhdGNoIGFkZHJlc3NlcyBhIGtub3duIGludGVnZXIgb3ZlcmZsb3cgaXNzdWUgdGhhdCBLQVNBTiBhbHJlYWR5IGNhdGNoZXMuIE5lZWRzS01TQU4gPSBmYWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGhhcmRlbmVkIHZlcnNpb24gb2YgYHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcmAgKGBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJfY2FyZWZ1bGApIHdoaWNoIGNoZWNrcyBmb3IgaW50ZWdlciB0cnVuY2F0aW9uIGFuZCBpbnZhbGlkIG9mZnNldHMgKGUuZy4sIGB+MFVgKSB3aGVuIHNldHRpbmcgdGhlIGBza2ItXHUwMDNldHJhbnNwb3J0X2hlYWRlcmAgZmllbGQuIEl0IHRoZW4gYXBwbGllcyB0aGlzIG5ldyBmdW5jdGlvbiBpbiBgYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyYCB0byBwcmV2ZW50IHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGNhdXNlZCBieSAxNi1iaXQgdHJ1bmNhdGlvbiBvZiB0aGUgdHJhbnNwb3J0IGhlYWRlciBvZmZzZXQuIFRoZXNlIGNoYW5nZXMgYXJlIGRlc2lnbmVkIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBvciB3cml0ZXMsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4uIFRoZXJlIGlzIG5vIGFsbG9jYXRpb24gb2YgbmV3IGJ1ZmZlcnMsIG5vIGNoYW5nZXMgdG8gaG93IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGhhbmRsZWQsIGFuZCBubyBzdHJ1Y3R1cmVzIGJlaW5nIGNvcGllZCB0byB1c2VyIHNwYWNlIHRoYXQgY291bGQgbGVhayB1bmluaXRpYWxpemVkIGJ5dGVzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGhhcmRlbmVkIHZlcnNpb24gb2YgYHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcmAgKGBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJfY2FyZWZ1bGApIHdoaWNoIGNoZWNrcyBmb3IgaW50ZWdlciB0cnVuY2F0aW9uIGFuZCBpbnZhbGlkIG9mZnNldHMgKGUuZy4sIGB+MFVgKSB3aGVuIHNldHRpbmcgdGhlIGBza2ItXHUwMDNldHJhbnNwb3J0X2hlYWRlcmAgZmllbGQuIEl0IHRoZW4gYXBwbGllcyB0aGlzIG5ldyBmdW5jdGlvbiBpbiBgYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyYCB0byBwcmV2ZW50IHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGNhdXNlZCBieSAxNi1iaXQgdHJ1bmNhdGlvbiBvZiB0aGUgdHJhbnNwb3J0IGhlYWRlciBvZmZzZXQuIFRoZXNlIGNoYW5nZXMgYXJlIGRlc2lnbmVkIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBvciB3cml0ZXMsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4uIFRoZXJlIGlzIG5vIGFsbG9jYXRpb24gb2YgbmV3IGJ1ZmZlcnMsIG5vIGNoYW5nZXMgdG8gaG93IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGhhbmRsZWQsIGFuZCBubyBzdHJ1Y3R1cmVzIGJlaW5nIGNvcGllZCB0byB1c2VyIHNwYWNlIHRoYXQgY291bGQgbGVhayB1bmluaXRpYWxpemVkIGJ5dGVzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxODo1ODo0OS42MTA0MDc5NTdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzY2NzYzNzM1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCQVRNQU5fQURWXCIsXG4gICAgXCJCQVRNQU5fQURWX01DQVNUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzXCIsXG4gICAgXCJiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBoYXJkZW5lZCB2ZXJzaW9uIG9mIGBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJgIChgc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWxgKSB3aGljaCBjaGVja3MgZm9yIGludGVnZXIgdHJ1bmNhdGlvbiBhbmQgaW52YWxpZCBvZmZzZXRzIChlLmcuLCBgfjBVYCkgd2hlbiBzZXR0aW5nIHRoZSBgc2tiLVxcdTAwM2V0cmFuc3BvcnRfaGVhZGVyYCBmaWVsZC4gSXQgdGhlbiBhcHBsaWVzIHRoaXMgbmV3IGZ1bmN0aW9uIGluIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgIHRvIHByZXZlbnQgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgY2F1c2VkIGJ5IDE2LWJpdCB0cnVuY2F0aW9uIG9mIHRoZSB0cmFuc3BvcnQgaGVhZGVyIG9mZnNldC4gVGhlc2UgY2hhbmdlcyBhcmUgZGVzaWduZWQgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIHdyaXRlcywgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmUgaXMgbm8gYWxsb2NhdGlvbiBvZiBuZXcgYnVmZmVycywgbm8gY2hhbmdlcyB0byBob3cgdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgaGFuZGxlZCwgYW5kIG5vIHN0cnVjdHVyZXMgYmVpbmcgY29waWVkIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBsZWFrIHVuaW5pdGlhbGl6ZWQgYnl0ZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGhhcmRlbmVkIHZlcnNpb24gb2Ygc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyIGFuZCB1c2VzIGl0IGluIGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlciB0byBmaXggYSBwb3RlbnRpYWwgaXNzdWUgd2l0aCB0cmFuc3BvcnQgaGVhZGVyIG9mZnNldCBjYWxjdWxhdGlvbiBmb3IgbXVsdGljYXN0IHBhY2tldHMgaW4gYmF0bWFuLWFkdi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxODo1ODo0OS42MTA0MTI2OTdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Mjg4MTUyMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhMDM0Njc4NmU2NWI5ZjQ1ODFjNzljMDlhNjhiZGY1OGE0NzkyOGIwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDEwIDE4OjU4OjQ3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2tidWZmLmggYi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oXFxuaW5kZXggMjJlZGExZDU0YTBlOC4uZGJlY2VhZjVjM2IzOSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9za2J1ZmYuaFxcbkBAIC0zMTI2LDYgKzMxMjYsMzIgQEAgc3RhdGljIGlubGluZSB2b2lkIHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRza2ItXFx1MDAzZXRyYW5zcG9ydF9oZWFkZXIgKz0gb2Zmc2V0O1xcbiB9XFxuIFxcbisvKipcXG4rICogc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWwgLSBjb25kaXRpb25hbGx5IHNldCB0cmFuc3BvcnQgaGVhZGVyXFxuKyAqIEBza2I6IGJ1ZmZlciB0byBhbHRlclxcbisgKiBAb2Zmc2V0OiBvZmZzZXQgdG8gYWRkIHRvIHNrYi1cXHUwMDNlZGF0YVxcbisgKlxcbisgKiBIYXJkZW5lZCB2ZXJzaW9uIG9mIHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcigpLlxcbisgKlxcbisgKiBSZXR1cm5zOiB0cnVlIGlmIHRoZSBvcGVyYXRpb24gd2FzIGEgc3VjY2Vzcy5cXG4rICovXFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBfX211c3RfY2hlY2tcXG4rc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3QgaW50IG9mZnNldClcXG4re1xcbitcXHRsb25nIHRyYW5zcG9ydF9vZmZzZXQgPSBza2ItXFx1MDAzZWRhdGEgLSBza2ItXFx1MDAzZWhlYWQgKyBvZmZzZXQ7XFxuK1xcbitcXHRpZiAodW5saWtlbHkodHJhbnNwb3J0X29mZnNldCAhPVxcbitcXHRcXHQgICAgICh0eXBlb2Yoc2tiLVxcdTAwM2V0cmFuc3BvcnRfaGVhZGVyKSl0cmFuc3BvcnRfb2Zmc2V0KSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0aWYgKHVubGlrZWx5KHRyYW5zcG9ydF9vZmZzZXQgPT1cXG4rXFx0XFx0ICAgICAodHlwZW9mKHNrYi1cXHUwMDNldHJhbnNwb3J0X2hlYWRlcikpfjBVKSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0c2tiLVxcdTAwM2V0cmFuc3BvcnRfaGVhZGVyID0gdHJhbnNwb3J0X29mZnNldDtcXG4rXFx0cmV0dXJuIHRydWU7XFxuK31cXG4rXFxuIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhciAqc2tiX25ldHdvcmtfaGVhZGVyKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuIHtcXG4gXFx0cmV0dXJuIHNrYi1cXHUwMDNlaGVhZCArIHNrYi1cXHUwMDNlbmV0d29ya19oZWFkZXI7XFxuZGlmZiAtLWdpdCBhL25ldC9iYXRtYW4tYWR2L3R2bHYuYyBiL25ldC9iYXRtYW4tYWR2L3R2bHYuY1xcbmluZGV4IDFjOWZiMjE5ODVmNmEuLmMzODRkYjE2YmNhYzEgMTAwNjQ0XFxuLS0tIGEvbmV0L2JhdG1hbi1hZHYvdHZsdi5jXFxuKysrIGIvbmV0L2JhdG1hbi1hZHYvdHZsdi5jXFxuQEAgLTQzMyw4ICs0MzMsMTEgQEAgc3RhdGljIGludCBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXIoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcXG4gXFx0XFx0XFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xcbiBcXG4gXFx0XFx0dHZsdl9vZmZzZXQgPSAodW5zaWduZWQgY2hhciAqKXR2bHZfdmFsdWUgLSBza2ItXFx1MDAzZWRhdGE7XFxuK1xcdFxcdGlmICghc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWwoc2tiLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgICB0dmx2X29mZnNldCArIHR2bHZfdmFsdWVfbGVuKSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbiBcXHRcXHRza2Jfc2V0X25ldHdvcmtfaGVhZGVyKHNrYiwgdHZsdl9vZmZzZXQpO1xcbi1cXHRcXHRza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXIoc2tiLCB0dmx2X29mZnNldCArIHR2bHZfdmFsdWVfbGVuKTtcXG4gXFxuIFxcdFxcdHJldHVybiB0dmx2X2hhbmRsZXItXFx1MDAzZW1jYXN0X2hhbmRsZXIoYmF0X3ByaXYsIHNrYik7XFxuIFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTg6NTg6NTEuMjM5OTAyMzgxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDk2NDgxMjI3MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkFUTUFOX0FEVlwiLFxuICAgIFwiQkFUTUFOX0FEVl9NQ0FTVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2Vzc1wiLFxuICAgIFwiYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGhhcmRlbmVkIHZlcnNpb24gb2Ygc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyIGFuZCB1c2VzIGl0IGluIGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlciB0byBmaXggYSBwb3RlbnRpYWwgaXNzdWUgd2l0aCB0cmFuc3BvcnQgaGVhZGVyIG9mZnNldCBjYWxjdWxhdGlvbiBmb3IgbXVsdGljYXN0IHBhY2tldHMgaW4gYmF0bWFuLWFkdi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhMDM0Njc4NmU2NWI5ZjQ1ODFjNzljMDlhNjhiZGY1OGE0NzkyOGIwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTAgMTg6NTg6NDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIGIvaW5jbHVkZS9saW51eC9za2J1ZmYuaFxuaW5kZXggMjJlZGExZDU0YTBlOC4uZGJlY2VhZjVjM2IzOSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvc2tidWZmLmhcbisrKyBiL2luY2x1ZGUvbGludXgvc2tidWZmLmhcbkBAIC0zMTI2LDYgKzMxMjYsMzIgQEAgc3RhdGljIGlubGluZSB2b2lkIHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0c2tiLVx1MDAzZXRyYW5zcG9ydF9oZWFkZXIgKz0gb2Zmc2V0O1xuIH1cbiBcbisvKipcbisgKiBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJfY2FyZWZ1bCAtIGNvbmRpdGlvbmFsbHkgc2V0IHRyYW5zcG9ydCBoZWFkZXJcbisgKiBAc2tiOiBidWZmZXIgdG8gYWx0ZXJcbisgKiBAb2Zmc2V0OiBvZmZzZXQgdG8gYWRkIHRvIHNrYi1cdTAwM2VkYXRhXG4rICpcbisgKiBIYXJkZW5lZCB2ZXJzaW9uIG9mIHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcigpLlxuKyAqXG4rICogUmV0dXJuczogdHJ1ZSBpZiB0aGUgb3BlcmF0aW9uIHdhcyBhIHN1Y2Nlc3MuXG4rICovXG4rc3RhdGljIGlubGluZSBib29sIF9fbXVzdF9jaGVja1xuK3NrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IGludCBvZmZzZXQpXG4re1xuK1x0bG9uZyB0cmFuc3BvcnRfb2Zmc2V0ID0gc2tiLVx1MDAzZWRhdGEgLSBza2ItXHUwMDNlaGVhZCArIG9mZnNldDtcbitcbitcdGlmICh1bmxpa2VseSh0cmFuc3BvcnRfb2Zmc2V0ICE9XG4rXHRcdCAgICAgKHR5cGVvZihza2ItXHUwMDNldHJhbnNwb3J0X2hlYWRlcikpdHJhbnNwb3J0X29mZnNldCkpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdGlmICh1bmxpa2VseSh0cmFuc3BvcnRfb2Zmc2V0ID09XG4rXHRcdCAgICAgKHR5cGVvZihza2ItXHUwMDNldHJhbnNwb3J0X2hlYWRlcikpfjBVKSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0c2tiLVx1MDAzZXRyYW5zcG9ydF9oZWFkZXIgPSB0cmFuc3BvcnRfb2Zmc2V0O1xuK1x0cmV0dXJuIHRydWU7XG4rfVxuK1xuIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhciAqc2tiX25ldHdvcmtfaGVhZGVyKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0cmV0dXJuIHNrYi1cdTAwM2VoZWFkICsgc2tiLVx1MDAzZW5ldHdvcmtfaGVhZGVyO1xuZGlmZiAtLWdpdCBhL25ldC9iYXRtYW4tYWR2L3R2bHYuYyBiL25ldC9iYXRtYW4tYWR2L3R2bHYuY1xuaW5kZXggMWM5ZmIyMTk4NWY2YS4uYzM4NGRiMTZiY2FjMSAxMDA2NDRcbi0tLSBhL25ldC9iYXRtYW4tYWR2L3R2bHYuY1xuKysrIGIvbmV0L2JhdG1hbi1hZHYvdHZsdi5jXG5AQCAtNDMzLDggKzQzMywxMSBAQCBzdGF0aWMgaW50IGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcihzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxuIFx0XHRcdHJldHVybiBORVRfUlhfU1VDQ0VTUztcbiBcbiBcdFx0dHZsdl9vZmZzZXQgPSAodW5zaWduZWQgY2hhciAqKXR2bHZfdmFsdWUgLSBza2ItXHUwMDNlZGF0YTtcbitcdFx0aWYgKCFza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJfY2FyZWZ1bChza2IsXG4rXHRcdFx0XHRcdFx0ICAgICAgdHZsdl9vZmZzZXQgKyB0dmx2X3ZhbHVlX2xlbikpXG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4gXHRcdHNrYl9zZXRfbmV0d29ya19oZWFkZXIoc2tiLCB0dmx2X29mZnNldCk7XG4tXHRcdHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcihza2IsIHR2bHZfb2Zmc2V0ICsgdHZsdl92YWx1ZV9sZW4pO1xuIFxuIFx0XHRyZXR1cm4gdHZsdl9oYW5kbGVyLVx1MDAzZW1jYXN0X2hhbmRsZXIoYmF0X3ByaXYsIHNrYik7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxODo1ODo1MS4yMzk5MDQyOTFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDUwMTk1NDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYmF0bWFuLWFkdiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZXJlJ3MgYSBuZXcgcGF0Y2gsIGFuZCBpdCBsb29rcyBsaWtlIGl0J3MgaW50cm9kdWNpbmcgYHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsYCBpbiBgaW5jbHVkZS9saW51eC9za2J1ZmYuaGAuIFRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgdXNlcyBpdCB3aXRoaW4gYG5ldC9iYXRtYW4tYWR2L3R2bHYuY2AsIGluc2lkZSB0aGUgYGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcmAgZnVuY3Rpb24uIE15IGZpcnN0IHRob3VnaHQgaXMsIHRoaXMgd2FycmFudHMgYSBjbG9zZXIgbG9vayBhdCBib3RoIGBuZXQvYmF0bWFuLWFkdi90dmx2LmNgIGFuZCBzcGVjaWZpY2FsbHkgYXQgdGhlIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgIGZ1bmN0aW9uIGl0c2VsZi4gSSBzZWUgdGhpcyBpcyBwYXJ0IG9mIGJhdG1hbi1hZHYuXG5cbkdpdmVuIHRoYXQgYmF0bWFuLWFkdiBpcyBhIG5ldHdvcmsgcHJvdG9jb2wsIEkgbmVlZCB0byBjb25zaWRlciBwb3RlbnRpYWwgZnV6emluZyB2ZWN0b3JzLiBDYW4gSSByZWFjaCBpdCB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50PyBZZXMsIHNpbmNlIGl0cyBhIG5ldHdvcmsgcHJvdG9jb2wsIEkgc2hvdWxkIGJlIGFibGUgdG8gZnV6eiBpdCB1c2luZyBuZXRsaW5rIG9yIGJ5IGluamVjdGluZyBwYWNrZXRzLiBUaGlzIHN1Z2dlc3RzIGEgZ29vZCBhdmVudWUgZm9yIHZ1bG5lcmFiaWxpdHkgZGlzY292ZXJ5IGlmIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIHVuZXhwZWN0ZWQgYmVoYXZpb3IuXG5cbk5leHQsIEkgbmVlZCB0byBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEEgcXVpY2sgY2hlY2sgb2YgYG5ldC9iYXRtYW4tYWR2L0tjb25maWdgIHdpbGwgcmV2ZWFsIHRoZSBjb25maWd1cmF0aW9uIHN5bWJvbCDigJMgSSdtIGJldHRpbmcgb24gYEJBVE1BTl9BRFZgLCBidXQgSSdsbCBjb25maXJtLlxuXG5Ob3csIGxldCdzIGRpdmUgaW50byB0aGUgY29kZS4gVGltZSB0byBzY3J1dGluaXplIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgIHdpdGhpbiBgbmV0L2JhdG1hbi1hZHYvdHZsdi5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgYHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsYCBpcyBiZWluZyB1c2VkIGluIHRoaXMgY29udGV4dC4gUG90ZW50aWFsIG9mZi1ieS1vbmUgZXJyb3JzIG9yIG1pc3VzZSBvZiB0aGUgZnVuY3Rpb24gYXJlIGltbWVkaWF0ZWx5IG9uIG15IHJhZGFyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDg0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTg6NTg6NTYuMjkwMTAyMTAzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MTcyNjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJhdGFkdl90dmx2X2NhbGxfaGFuZGxlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYmF0bWFuLWFkdi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JhdG1hbi1hZHYvdHZsdi5jPTMyOT1pbnQgYmF0YWR2X3R2bHZfY29udGFpbmVyX29nbV9hcHBlbmQoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy0zNzUtLyoqXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jOjM3NjogKiBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXIoKSAtIHBhcnNlIHRoZSBnaXZlbiB0dmx2IGJ1ZmZlciB0byBjYWxsIHRoZVxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy0zNzctICogIGFwcHJvcHJpYXRlIGhhbmRsZXJzXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtMzg4LSAqL1xcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYzozODk6c3RhdGljIGludCBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXIoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtMzkwLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgYmF0YWR2X3R2bHZfaGFuZGxlciAqdHZsdl9oYW5kbGVyLFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jPTUwMz1pbnQgYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNTM1LVxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYzo1MzY6XFx0XFx0cmV0IHw9IGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcihiYXRfcHJpdiwgdHZsdl9oYW5kbGVyLFxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy01MzctXFx0XFx0XFx0XFx0XFx0XFx0cGFja2V0X3R5cGUsIG9yaWdfbm9kZSwgc2tiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxODo1ODo1Ni4zMzQyNzkxNVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MzQ2MzU1MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb246XG5cbioqVW5kZXJzdGFuZGluZyB0aGUgYmF0YWR2X3R2bHYgQ29kZWZsb3cqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyYC4gVGhlIGZhY3QgdGhhdCBpdCdzIGRlY2xhcmVkIGBzdGF0aWNgIGltbWVkaWF0ZWx5IGZsYWdzIGl0IGFzIGFuIGludGVybmFsIGZ1bmN0aW9uLCBtZWFudCB0byBiZSB1c2VkIG9ubHkgd2l0aGluIHRoZSBzYW1lIGNvbXBpbGF0aW9uIHVuaXQuIFRoYXQgdGVsbHMgbWUgaXQncyBsaWtlbHkgYSBoZWxwZXIgZnVuY3Rpb24uIE5vdywgdGhlIGRlc2NyaXB0aW9uIHNheXMgaXQncyBjYWxsZWQgYnkgYGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2Vzc2AuIEdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbnMsIG15IGd1ZXNzIGlzIHRoYXQgYHR2bHZgIHJlZmVycyB0byBcIlR5cGUtTGVuZ3RoLVZhbHVlXCIgZGF0YSwgYSBjb21tb24gZm9ybWF0IGluIG5ldHdvcmtpbmcgcHJvdG9jb2xzLiBUaGVyZWZvcmUgYGJhdGFkdmAgbGlrZWx5IHN0YW5kcyBmb3IgXCJiYXRtYW4tYWR2XCIsIHRoZSBtZXNoIHJvdXRpbmcgcHJvdG9jb2wuIFRoaXMgY29uZmlybXMgdGhhdCB0aGVzZSBmdW5jdGlvbnMgcmVsYXRlIHRvIGJhdG1hbi1hZHYuIEdpdmVuIHRoZSBjb250ZXh0LCBJIHNob3VsZCBmb2N1cyBvbiBob3cgdGhpcyBmdW5jdGlvbiB3b3JrcyB3aXRoaW4gaXRzIGNhbGxpbmcgZnVuY3Rpb24gaW4gb3JkZXIgdG8gZ3Jhc3AgaXRzIHB1cnBvc2Ugd2l0aGluIHRoZSBvdmVyYWxsIHByb3RvY29sJ3MgbG9naWMuIExldCdzIGRlbHZlIGludG8gYGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2Vzc2AgdG8gdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MzMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxODo1ODo1OS43Njg5MjM3MjZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ0NzQ3OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9iYXRtYW4tYWR2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYmF0bWFuLWFkdi9iYXRfdl9vZ20uYz04MDE9YmF0YWR2X3Zfb2dtX3Byb2Nlc3NfcGVyX291dGlmKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9iYXRfdl9vZ20uYy04MjItXFx0aWYgKHNlcW5vX2FnZSBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjYgaWZfb3V0Z29pbmcgPT0gQkFUQURWX0lGX0RFRkFVTFQpXFxubmV0L2JhdG1hbi1hZHYvYmF0X3Zfb2dtLmM6ODIzOlxcdFxcdGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2VzcyhiYXRfcHJpdiwgQkFUQURWX09HTTIsIG9yaWdfbm9kZSxcXG5uZXQvYmF0bWFuLWFkdi9iYXRfdl9vZ20uYy04MjQtXFx0XFx0XFx0XFx0XFx0ICAgICAgIE5VTEwsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmM9MTA5NT1pbnQgYmF0YWR2X3JlY3ZfdW5pY2FzdF90dmx2KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMtMTEyMy1cXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmM6MTEyNDpcXHRyZXQgPSBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3MoYmF0X3ByaXYsIEJBVEFEVl9VTklDQVNUX1RWTFYsXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jLTExMjUtXFx0XFx0XFx0XFx0XFx0ICAgICBOVUxMLCBza2IsIHR2bHZfYnVmZixcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYz0xMzM5PWludCBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYy0xMzc1LVxcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYzoxMzc2OlxcdHJldCA9IGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2VzcyhiYXRfcHJpdiwgQkFUQURWX01DQVNULCBOVUxMLCBza2IsXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jLTEzNzctXFx0XFx0XFx0XFx0XFx0ICAgICB0dmx2X2J1ZmYsIHR2bHZfYnVmZl9sZW4pO1xcbi0tXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jPTQ1OD1zdGF0aWMgYm9vbCBiYXRhZHZfdHZsdl9jb250YWluZXJzX2NvbnRhaW4odm9pZCAqdHZsdl92YWx1ZSxcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy00OTAtLyoqXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jOjQ5MTogKiBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3MoKSAtIHBhcnNlIHRoZSBnaXZlbiB0dmx2IGJ1ZmZlciB0byBjYWxsIHRoZVxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy00OTItICogIGFwcHJvcHJpYXRlIGhhbmRsZXJzXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNTAyLSAqL1xcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYzo1MDM6aW50IGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2VzcyhzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy01MDQtXFx0XFx0XFx0XFx0ICAgdTggcGFja2V0X3R5cGUsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi90dmx2LmM9NTgyPXZvaWQgYmF0YWR2X3R2bHZfb2dtX3JlY2VpdmUoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy01OTctXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jOjU5ODpcXHRiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3MoYmF0X3ByaXYsIEJBVEFEVl9JVl9PR00sIG9yaWdfbm9kZSwgTlVMTCxcXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNTk5LVxcdFxcdFxcdFxcdCAgICAgICB0dmx2X3ZhbHVlLCB0dmx2X3ZhbHVlX2xlbik7XFxuLS1cXG5uZXQvYmF0bWFuLWFkdi90dmx2Lmg9NDA9dm9pZCBiYXRhZHZfdHZsdl9oYW5kbGVyX3VucmVnaXN0ZXIoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcXG5uZXQvYmF0bWFuLWFkdi90dmx2LmgtNDEtXFx0XFx0XFx0XFx0ICAgIHU4IHR5cGUsIHU4IHZlcnNpb24pO1xcbm5ldC9iYXRtYW4tYWR2L3R2bHYuaDo0MjppbnQgYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5oLTQzLVxcdFxcdFxcdFxcdCAgIHU4IHBhY2tldF90eXBlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxODo1ODo1OS44MTM0MDQxNjNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDgwNjM0NzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGNvZGUgc25pcHBldHM6XG5cbioqRm9jdXNpbmcgb24gS2V5IEVudHJ5IFBvaW50cyBmb3IgUGFja2V0IEhhbmRsaW5nKipcblxuQWxyaWdodCwgbGV0J3MgemVybyBpbiBvbiBob3cgdGhpcyBCYXRtYW4tYWR2IGltcGxlbWVudGF0aW9uIGhhbmRsZXMgaW5jb21pbmcgcGFja2V0cy4gSSBzZWUgYSBmZXcgZnVuY3Rpb25zIHRoYXQgaW1tZWRpYXRlbHkgZ3JhYiBteSBhdHRlbnRpb24gYXMgcG90ZW50aWFsIGVudHJ5IHBvaW50czogYGJhdGFkdl9yZWN2X3VuaWNhc3RfdHZsdmAsIGBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXRgLCBgYmF0YWR2X3R2bHZfb2dtX3JlY2VpdmVgLCBhbmQgYGJhdGFkdl92X29nbV9wcm9jZXNzX3Blcl9vdXRpZmAuIEdpdmVuIG15IGV4cGVydGlzZSwgbXkgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSB0aGUgcHJpbWFyeSBob29rcyBmb3IgZGlmZmVyZW50IHR5cGVzIG9mIHBhY2tldCBwcm9jZXNzaW5nLiBJJ20gdGhpbmtpbmcgSSdsbCBzdGFydCBieSBkaXZpbmcgaW50byB0aGUgbG9naWMgb2YgYGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldGAgYW5kIGBiYXRhZHZfcmVjdl91bmljYXN0X3R2bHZgIGZpcnN0LiBUaGV5IHNlZW0gdG8gcmVwcmVzZW50IHRoZSBjb3JlIGRpc3RpbmN0aW9uczogb25lIGZvciBtdWx0aWNhc3QgdHJhZmZpYyBhbmQgdGhlIG90aGVyIGZvciB1bmljYXN0LCB3aXRoIHRoZSB1c2Ugb2YgVExWIChUeXBlLUxlbmd0aC1WYWx1ZSkgc3RydWN0dXJlcyBzdWdnZXN0aW5nIGEgZmxleGlibGUgZGF0YSBmb3JtYXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGRpZmZlcmVudGlhdGVzIGJldHdlZW4gdGhlc2UgYW5kIHRoZW4gcm91dGVzIHRoZW0gdG8gdGhlIGFwcHJvcHJpYXRlIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYzNCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE4OjU5OjAzLjI5NDA0MTU3NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTI4NTIwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JhdG1hbi1hZHYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9iYXRtYW4tYWR2L21haW4uYz01MDQ9c3RhdGljIHZvaWQgYmF0YWR2X3JlY3ZfaGFuZGxlcl9pbml0KHZvaWQpXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tYWluLmMtNTM3LVxcdC8qIG11bHRpY2FzdCBwYWNrZXQgKi9cXG5uZXQvYmF0bWFuLWFkdi9tYWluLmM6NTM4OlxcdGJhdGFkdl9yeF9oYW5kbGVyW0JBVEFEVl9NQ0FTVF0gPSBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQ7XFxubmV0L2JhdG1hbi1hZHYvbWFpbi5jLTUzOS1cXG4tLVxcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYz0xMjEyPWludCBiYXRhZHZfcmVjdl9iY2FzdF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYy0xMzI4LS8qKlxcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYzoxMzI5OiAqIGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldCgpIC0gcHJvY2VzcyByZWNlaXZlZCBiYXRtYW4tYWR2IG11bHRpY2FzdCBwYWNrZXRcXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMtMTMzMC0gKiBAc2tiOiB0aGUgcmVjZWl2ZWQgYmF0bWFuLWFkdiBtdWx0aWNhc3QgcGFja2V0XFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMtMTMzOC0gKi9cXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmM6MTMzOTppbnQgYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jLTEzNDAtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgYmF0YWR2X2hhcmRfaWZhY2UgKnJlY3ZfaWYpXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmg9Mjg9aW50IGJhdGFkdl9yZWN2X2JjYXN0X3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5oLTMwLSNpZmRlZiBDT05GSUdfQkFUTUFOX0FEVl9NQ0FTVFxcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuaDozMTppbnQgYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5oLTMyLVxcdFxcdFxcdCAgICAgc3RydWN0IGJhdGFkdl9oYXJkX2lmYWNlICpyZWN2X2lmKTtcXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmgtMzMtI2Vsc2VcXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmg6MzQ6c3RhdGljIGlubGluZSBpbnQgYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5oLTM1LVxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBiYXRhZHZfaGFyZF9pZmFjZSAqcmVjdl9pZilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTg6NTk6MDMuMzM5MzI5NzQzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA1NzE3ODc0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJhdG1hbi1hZHYgUGFja2V0IEhhbmRsaW5nIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYmF0bWFuLWFkdi4gIEl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgaXQgc2VlbXMuIFdlJ3ZlIGdvdCBgYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0YCByZWdpc3RlcmVkIGZvciBgQkFUQURWX01DQVNUYCBhbmQgYGJhdGFkdl9yZWN2X3VuaWNhc3RfdHZsdmAgZm9yIGBCQVRBRFZfVU5JQ0FTVF9UVkxWYC4gIFN0YW5kYXJkIHN0dWZmLCB0aGVzZSBhcmUgdGhlIHBhY2tldCBoYW5kbGVycyB3aXRoaW4gdGhlIGJhdG1hbi1hZHYgZnJhbWV3b3JrLCB0aGUgY29yZSBvZiB0aGUgcGFja2V0IHByb2Nlc3NpbmcuXG5cblRoZSBjaGFuZ2UgaXRzZWxmIGlzIGluIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgLCBhbmQgaXQncyB1c2luZyBgc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWxgLiAgVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGFib3V0IGhvdyB0aGUgdHJhbnNwb3J0IGhlYWRlciBvZmZzZXQgaXMgY2FsY3VsYXRlZCBpbiB0aGUgYHNrYmAuICBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGZpeCB0aGVuLCB3aGljaCBtZWFucyBpdCBhZGRyZXNzZXMgYSBjb3JyZWN0bmVzcyBpc3N1ZSBpbiB0aGUgZXhpc3RpbmcgY29kZS4gSW50ZXJlc3RpbmcuIERlZmluaXRlbHkgd29ydGggYSB0aG9yb3VnaCBmdXp6aW5nIGNhbXBhaWduIHRvIHNlZSBpZiB0aGlzIGNoYW5nZSBwcm9wZXJseSBhZGRyZXNzZXMgdGhlIGlzc3VlIHdpdGhvdXQgaW50cm9kdWNpbmcgYW55IHJlZ3Jlc3Npb25zIG9yIG5ldyB2dWxuZXJhYmlsaXRpZXMuXG5cbkkgc2hvdWxkIHZlcmlmeSB0aGUgY29uZmlnIGRlcGVuZGVuY2llcywgbm93LiBJIGtub3cgYEJBVE1BTl9BRFZgIGlzIHJlcXVpcmVkLCBvYnZpb3VzbHkuIEJ1dCBkb2VzIHRoaXMgc3BlY2lmaWMgbW9kaWZpY2F0aW9uIHJlcXVpcmUgYEJBVE1BTl9BRFZfTUNBU1RgIHRvIGJlIGVuYWJsZWQ/IFNpbmNlIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgIHByb2Nlc3NlcyBib3RoIHVuaWNhc3QgYW5kIG1jYXN0IHR2bHYgcGFja2V0cywgaXQgc2hvdWxkIGJlIGZpbmUuIEknbGwgdGFrZSBhIGxvb2sgYXQgYGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcmAgYWdhaW4gdG8gYmUgc3VyZSB0aGF0IEkgZGlkbid0IG1pc3Mgc29tZXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTI5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE4OjU5OjA4LjM5NjUxMDkwNVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzNjA2NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9iYXRtYW4tYWR2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYmF0bWFuLWFkdi90dmx2LmM9MzI5PWludCBiYXRhZHZfdHZsdl9jb250YWluZXJfb2dtX2FwcGVuZChzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTM3NS0vKipcXG5uZXQvYmF0bWFuLWFkdi90dmx2LmM6Mzc2OiAqIGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcigpIC0gcGFyc2UgdGhlIGdpdmVuIHR2bHYgYnVmZmVyIHRvIGNhbGwgdGhlXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTM3Ny0gKiAgYXBwcm9wcmlhdGUgaGFuZGxlcnNcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy0zODgtICovXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jOjM4OTpzdGF0aWMgaW50IGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcihzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy0zOTAtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBiYXRhZHZfdHZsdl9oYW5kbGVyICp0dmx2X2hhbmRsZXIsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi90dmx2LmM9NTAzPWludCBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3Moc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy01MzUtXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jOjUzNjpcXHRcXHRyZXQgfD0gYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyKGJhdF9wcml2LCB0dmx2X2hhbmRsZXIsXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTUzNy1cXHRcXHRcXHRcXHRcXHRcXHRwYWNrZXRfdHlwZSwgb3JpZ19ub2RlLCBza2IsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE4OjU5OjA4LjQzOTg3NTU2MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTc4MzYwMzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoZSBgYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyYCBpbXBsZW1lbnRhdGlvbjpcblxuKipEaXZpbmcgaW50byBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXIqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTGV0J3MgZGlnIGludG8gdGhlIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGlzIGNydWNpYWwgZnVuY3Rpb24gd29ya3MuIE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhpcyBpcyB3aGVyZSB0aGUgbWVhdCBvZiBoYW5kbGluZyBzcGVjaWZpYyBUeXBlLUxlbmd0aC1WYWx1ZSAoVExWKSBtZXNzYWdlcyB3aXRoaW4gQkFUTUFOLWFkdiBsaWtlbHkgcmVzaWRlcy4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlIGlucHV0IHBhcmFtZXRlcnMsIHF1aWNrbHkgdW5kZXJzdGFuZGluZyB3aGF0IGNvbnRleHQgaXMgYmVpbmcgcGFzc2VkIGluLiBUaGVuIEknbGwgZm9jdXMgb24gdGhlIGNvcmUgbG9naWM6IHRoZSBjb25kaXRpb25hbCBicmFuY2hlcywgYW55IGRhdGEgcGFyc2luZywgYW5kIHVsdGltYXRlbHksIGhvdyB0aGUgZnVuY3Rpb24gcmVhY3RzIHRvIHRoZSByZWNlaXZlZCBUTFYuIEnigJlsbCBrZWVwIGFuIGV5ZSBvdXQgZm9yIHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuOiBtZW1vcnkgYWxsb2NhdGlvbiwgbG9ja2luZywgYW55IGNvbmN1cnJlbmN5IGlzc3VlcywgYW5kIG9mIGNvdXJzZSwgZXJyb3IgaGFuZGxpbmcuIEknbSBsb29raW5nIGZvciB0aGUgb3ZlcmFsbCBmbG93IC0gd2hhdCBhcmUgdGhlIGRpZmZlcmVudCBtZXNzYWdlIHR5cGVzIGhhbmRsZWQgaGVyZT8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzPyBJJ2xsIGFsc28gYmUgY29uc2lkZXJpbmcgaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggdGhlIG92ZXJhbGwgQkFUTUFOLWFkdiBzdGF0ZSBtYWNoaW5lLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGRhdGEgaXMgYmVpbmcgdXBkYXRlZCwgaG93IGl0J3MgYmVpbmcgdXBkYXRlZCwgYW5kIHdoZW4uIEkgZXhwZWN0IHRvIGZpbmQgc29tZSBpbnRlcmVzdGluZyBsb2dpYyBoZXJlLCBwcm9iYWJseSBpbnZvbHZpbmcgbmVpZ2hib3IgZGlzY292ZXJ5LCB0b3BvbG9neSB1cGRhdGVzLCBhbmQgUW9TIG1hbmFnZW1lbnQuIExldCdzIHNlZSBpZiBteSBpbml0aWFsIGFzc3VtcHRpb25zIGFyZSBjb3JyZWN0LiBUaGUgcmVhbCBjaGFsbGVuZ2UgaXMgYWx3YXlzIHRvIHVuZGVyc3RhbmQgdGhlIGRlc2lnbiBjaG9pY2VzIG1hZGUgaGVyZSwgc28gSSdsbCBiZSBxdWVzdGlvbmluZyB3aHkgdGhlIGRldmVsb3BlcnMgY2hvc2UgdGhpcyBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBhbmQgY29uc2lkZXIgcG9zc2libGUgYWx0ZXJuYXRpdmVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDM5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTg6NTk6MTIuNjE4MjM5MzE1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9iYXRtYW4tYWR2L3R2bHYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzODksXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzODk6XFx0c3RhdGljIGludCBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXIoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcXG4gMzkwOlxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgYmF0YWR2X3R2bHZfaGFuZGxlciAqdHZsdl9oYW5kbGVyLFxcbiAzOTE6XFx0XFx0XFx0XFx0XFx0ICAgIHU4IHBhY2tldF90eXBlLFxcbiAzOTI6XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBiYXRhZHZfb3JpZ19ub2RlICpvcmlnX25vZGUsXFxuIDM5MzpcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdm9pZCAqdHZsdl92YWx1ZSxcXG4gMzk0OlxcdFxcdFxcdFxcdFxcdCAgICB1MTYgdHZsdl92YWx1ZV9sZW4pXFxuIDM5NTpcXHR7XFxuIDM5NjpcXHRcXHR1bnNpZ25lZCBpbnQgdHZsdl9vZmZzZXQ7XFxuIDM5NzpcXHRcXHR1OCAqc3JjLCAqZHN0O1xcbiAzOTg6XFx0XFxuIDM5OTpcXHRcXHRpZiAoIXR2bHZfaGFuZGxlcilcXG4gNDAwOlxcdFxcdFxcdHJldHVybiBORVRfUlhfU1VDQ0VTUztcXG4gNDAxOlxcdFxcbiA0MDI6XFx0XFx0c3dpdGNoIChwYWNrZXRfdHlwZSkge1xcbiA0MDM6XFx0XFx0Y2FzZSBCQVRBRFZfSVZfT0dNOlxcbiA0MDQ6XFx0XFx0Y2FzZSBCQVRBRFZfT0dNMjpcXG4gNDA1OlxcdFxcdFxcdGlmICghdHZsdl9oYW5kbGVyLVxcdTAwM2VvZ21faGFuZGxlcilcXG4gNDA2OlxcdFxcdFxcdFxcdHJldHVybiBORVRfUlhfU1VDQ0VTUztcXG4gNDA3OlxcdFxcbiA0MDg6XFx0XFx0XFx0aWYgKCFvcmlnX25vZGUpXFxuIDQwOTpcXHRcXHRcXHRcXHRyZXR1cm4gTkVUX1JYX1NVQ0NFU1M7XFxuIDQxMDpcXHRcXG4gNDExOlxcdFxcdFxcdHR2bHZfaGFuZGxlci1cXHUwMDNlb2dtX2hhbmRsZXIoYmF0X3ByaXYsIG9yaWdfbm9kZSxcXG4gNDEyOlxcdFxcdFxcdFxcdFxcdFxcdCAgQkFUQURWX05PX0ZMQUdTLFxcbiA0MTM6XFx0XFx0XFx0XFx0XFx0XFx0ICB0dmx2X3ZhbHVlLCB0dmx2X3ZhbHVlX2xlbik7XFxuIDQxNDpcXHRcXHRcXHRicmVhaztcXG4gNDE1OlxcdFxcdGNhc2UgQkFUQURWX1VOSUNBU1RfVFZMVjpcXG4gNDE2OlxcdFxcdFxcdGlmICghc2tiKVxcbiA0MTc6XFx0XFx0XFx0XFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xcbiA0MTg6XFx0XFxuIDQxOTpcXHRcXHRcXHRpZiAoIXR2bHZfaGFuZGxlci1cXHUwMDNldW5pY2FzdF9oYW5kbGVyKVxcbiA0MjA6XFx0XFx0XFx0XFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xcbiA0MjE6XFx0XFxuIDQyMjpcXHRcXHRcXHRzcmMgPSAoKHN0cnVjdCBiYXRhZHZfdW5pY2FzdF90dmx2X3BhY2tldCAqKXNrYi1cXHUwMDNlZGF0YSktXFx1MDAzZXNyYztcXG4gNDIzOlxcdFxcdFxcdGRzdCA9ICgoc3RydWN0IGJhdGFkdl91bmljYXN0X3R2bHZfcGFja2V0ICopc2tiLVxcdTAwM2VkYXRhKS1cXHUwMDNlZHN0O1xcbiA0MjQ6XFx0XFxuIDQyNTpcXHRcXHRcXHRyZXR1cm4gdHZsdl9oYW5kbGVyLVxcdTAwM2V1bmljYXN0X2hhbmRsZXIoYmF0X3ByaXYsIHNyYyxcXG4gNDI2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgZHN0LCB0dmx2X3ZhbHVlLFxcbiA0Mjc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICB0dmx2X3ZhbHVlX2xlbik7XFxuIDQyODpcXHRcXHRjYXNlIEJBVEFEVl9NQ0FTVDpcXG4gNDI5OlxcdFxcdFxcdGlmICghc2tiKVxcbiA0MzA6XFx0XFx0XFx0XFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xcbiA0MzE6XFx0XFxuIDQzMjpcXHRcXHRcXHRpZiAoIXR2bHZfaGFuZGxlci1cXHUwMDNlbWNhc3RfaGFuZGxlcilcXG4gNDMzOlxcdFxcdFxcdFxcdHJldHVybiBORVRfUlhfU1VDQ0VTUztcXG4gNDM0OlxcdFxcbiA0MzU6XFx0XFx0XFx0dHZsdl9vZmZzZXQgPSAodW5zaWduZWQgY2hhciAqKXR2bHZfdmFsdWUgLSBza2ItXFx1MDAzZWRhdGE7XFxuIDQzNjpcXHRcXHRcXHRpZiAoIXNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsKHNrYixcXG4gNDM3OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIHR2bHZfb2Zmc2V0ICsgdHZsdl92YWx1ZV9sZW4pKVxcbiA0Mzg6XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE4OjU5OjEyLjYxODMxNzkyNVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjU0MjAyODM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2gncyBJbXBhY3QqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhlIGBCQVRBRFZfTUNBU1RgIGhhbmRsaW5nIHdpdGhpbiB0aGUgYGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcmAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoYXQgcGFja2V0IHR5cGU7IHRoYXQncyBjbGVhcmx5IHRoZSB0cmlnZ2VyIGZvciB0aGlzIGNvZGUgbW9kaWZpY2F0aW9uLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCwgZnJvbSBhbiBhZHZhbmNlZCBwZXJzcGVjdGl2ZSwgaXMgdG8gY29uZmlybSB3aGV0aGVyIHRoZSBgQkFUTUFOX0FEVl9NQ0FTVGAgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgcmVsZXZhbnQsIGdpdmVuIHRoaXMgZm9jdXNlZCBjaGFuZ2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgcGF0Y2ggbmVjZXNzaXRhdGVzLCBvciBpcyBpbiBhbnkgd2F5IGRlcGVuZGVudCBvbiwgdGhhdCBjb25maWd1cmF0aW9uIHNldHRpbmcgYmVpbmcgZW5hYmxlZC4gTGV0J3MgZGlnIGludG8gdGhhdCBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2MDUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE4OjU5OjE1Ljg3MjUyMzI0NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY0ODIwNTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJBVE1BTl9BRFZfTUNBU1RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JhdG1hbi1hZHYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9iYXRtYW4tYWR2L0tjb25maWc9NDc9Y29uZmlnIEJBVE1BTl9BRFZfREFUXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9LY29uZmlnLTU2LVxcbm5ldC9iYXRtYW4tYWR2L0tjb25maWc6NTc6Y29uZmlnIEJBVE1BTl9BRFZfTUNBU1RcXG5uZXQvYmF0bWFuLWFkdi9LY29uZmlnLTU4LVxcdGJvb2wgXFxcIk11bHRpY2FzdCBvcHRpbWlzYXRpb25cXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE4OjU5OjE1LjkxOTAxMDIyMVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTA1MzUxMTYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqTXVsdGljYXN0IE9wdGltaXphdGlvbiBpbiBiYXRtYW4tYWR2OiBBIFF1aWNrIENoZWNrKipcblxuUmlnaHQsIHNvIHdlJ3JlIHRhbGtpbmcgYWJvdXQgZW5hYmxpbmcgbXVsdGljYXN0IG9wdGltaXphdGlvbiBpbiBiYXRtYW4tYWR2LiBUaGUgaW1tZWRpYXRlIGFzc3VtcHRpb24sIGFuZCBpdCBzZWVtcyBhIHJlYXNvbmFibGUgb25lIGdpdmVuIG15IGV4cGVyaWVuY2UsIGlzIHRoYXQgd2UgbmVlZCBgQkFUTUFOX0FEVl9NQ0FTVGAuICBUaGF0J3MgdGhlIGxpa2VseSBwcmVyZXF1aXNpdGUuIEJ1dCBsZXQncyBub3QganVzdCB0YWtlIGl0IGZvciBncmFudGVkLCBldmVuIGZvciBzb21ldGhpbmcgYXMgc2VlbWluZ2x5IHN0cmFpZ2h0Zm9yd2FyZCBhcyB0aGlzLiBCZXN0IHByYWN0aWNlIGlzIGFsd2F5cyB0byBjb25maXJtLlxuXG5UaGVyZWZvcmUsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBxdWlja2x5IHRyYWNlIHRoZSBkZXBlbmRlbmN5LiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaGF2aW5nIGBCQVRNQU5fQURWX01DQVNUYCBkZWZpbmVkIGFjdHVhbGx5IGFsbG93cyB1cyB0byByZWFjaCB0aGUgYEJBVEFEVl9NQ0FTVGAgY29uZGl0aW9uYWwgaW4gdGhlIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgIGZ1bmN0aW9uLiBFc3NlbnRpYWxseSwgZG9lcyBpdCAqZ2F0ZSogdGhlIG11bHRpY2FzdCBmdW5jdGlvbmFsaXR5IGFzIGV4cGVjdGVkPyBJdCdzIGEgcXVpY2sgc2FuaXR5IGNoZWNrIGJ1dCBjYW4gc2F2ZSBhIGRlYnVnZ2luZyBoZWFkYWNoZSBkb3duIHRoZSByb2FkLiBUaGlzIGNvbmZpcm1hdGlvbiB3aWxsIGdpdmUgbWUgY29uZmlkZW5jZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIGlzIHdvcmtpbmcgYXMgZXhwZWN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5MzMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxODo1OToxOS40MjQzNjQwNjNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MTA1NDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJBVEFEVl9NQ0FTVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYmF0bWFuLWFkdi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JhdG1hbi1hZHYvbWFpbi5jPTUwND1zdGF0aWMgdm9pZCBiYXRhZHZfcmVjdl9oYW5kbGVyX2luaXQodm9pZClcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L21haW4uYy01MzctXFx0LyogbXVsdGljYXN0IHBhY2tldCAqL1xcbm5ldC9iYXRtYW4tYWR2L21haW4uYzo1Mzg6XFx0YmF0YWR2X3J4X2hhbmRsZXJbQkFUQURWX01DQVNUXSA9IGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldDtcXG5uZXQvYmF0bWFuLWFkdi9tYWluLmMtNTM5LVxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbWFpbi5oLTM3LSNkZWZpbmUgQkFUQURWX09SSUdfV09SS19QRVJJT0QgMTAwMCAvKiAxIHNlY29uZCAqL1xcbm5ldC9iYXRtYW4tYWR2L21haW4uaDozODojZGVmaW5lIEJBVEFEVl9NQ0FTVF9XT1JLX1BFUklPRCA1MDAgLyogMC41IHNlY29uZHMgKi9cXG5uZXQvYmF0bWFuLWFkdi9tYWluLmgtMzktI2RlZmluZSBCQVRBRFZfREFUX0VOVFJZX1RJTUVPVVQgKDUgKiA2MDAwMCkgLyogNSBtaW5zIGluIG1pbGxpc2Vjb25kcyAqL1xcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9Njg9c3RhdGljIHZvaWQgYmF0YWR2X21jYXN0X3N0YXJ0X3RpbWVyKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYpXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy03MC1cXHRxdWV1ZV9kZWxheWVkX3dvcmsoYmF0YWR2X2V2ZW50X3dvcmtxdWV1ZSwgXFx1MDAyNmJhdF9wcml2LVxcdTAwM2VtY2FzdC53b3JrLFxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjcxOlxcdFxcdFxcdCAgIG1zZWNzX3RvX2ppZmZpZXMoQkFUQURWX01DQVNUX1dPUktfUEVSSU9EKSk7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtNzItfVxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9ODQ9c3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlICpiYXRhZHZfbWNhc3RfZ2V0X2JyaWRnZShzdHJ1Y3QgbmV0X2RldmljZSAqbWVzaF9pZmFjZSlcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTEwNy0gKlxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjEwODogKiBSZXR1cm46IEJBVEFEVl9OT19GTEFHUyBpZiBwcmVzZW50LCBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0IG90aGVyd2lzZS5cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xMDktICovXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTEwPXN0YXRpYyB1OCBiYXRhZHZfbWNhc3RfbWxhX3J0cl9mbGFnc19tZXNoaWZfZ2V0X2lwdjQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTExNi1cXHRlbHNlXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTE3OlxcdFxcdHJldHVybiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0O1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTExOC19XFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xMjgtICpcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxMjk6ICogUmV0dXJuOiBCQVRBRFZfTk9fRkxBR1MgaWYgcHJlc2VudCwgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNiBvdGhlcndpc2UuXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTMwLSAqL1xcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTMyPXN0YXRpYyB1OCBiYXRhZHZfbWNhc3RfbWxhX3J0cl9mbGFnc19tZXNoaWZfZ2V0X2lwdjYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTEzOC1cXHRlbHNlXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTM5OlxcdFxcdHJldHVybiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI2O1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE0MC19XFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz0xNDM9YmF0YWR2X21jYXN0X21sYV9ydHJfZmxhZ3NfbWVzaGlmX2dldF9pcHY2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTQ0LXtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNDU6XFx0cmV0dXJuIEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjY7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTQ2LX1cXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE1OS0gKlxcdEJBVEFEVl9OT19GTEFHUzogQm90aCBhbiBJUHY0IGFuZCBJUHY2IG11bHRpY2FzdCByb3V0ZXIgaXMgcHJlc2VudFxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE2MDogKlxcdEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQ6IE5vIElQdjQgbXVsdGljYXN0IHJvdXRlciBpcyBwcmVzZW50XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTYxOiAqXFx0QkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNjogTm8gSVB2NiBtdWx0aWNhc3Qgcm91dGVyIGlzIHByZXNlbnRcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNjItICpcXHRUaGUgZm9ybWVyIHR3byBPUidkOiBubyBtdWx0aWNhc3Qgcm91dGVyIGlzIHByZXNlbnRcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTE2ND1zdGF0aWMgdTggYmF0YWR2X21jYXN0X21sYV9ydHJfZmxhZ3NfbWVzaGlmX2dldChzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTg5LSAqXFx0QkFUQURWX05PX0ZMQUdTOiBCb3RoIGFuIElQdjQgYW5kIElQdjYgbXVsdGljYXN0IHJvdXRlciBpcyBwcmVzZW50XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTkwOiAqXFx0QkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNDogTm8gSVB2NCBtdWx0aWNhc3Qgcm91dGVyIGlzIHByZXNlbnRcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxOTE6ICpcXHRCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI2OiBObyBJUHY2IG11bHRpY2FzdCByb3V0ZXIgaXMgcHJlc2VudFxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE5Mi0gKlxcdFRoZSBmb3JtZXIgdHdvIE9SJ2Q6IG5vIG11bHRpY2FzdCByb3V0ZXIgaXMgcHJlc2VudFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTk0PXN0YXRpYyB1OCBiYXRhZHZfbWNhc3RfbWxhX3J0cl9mbGFnc19icmlkZ2VfZ2V0KHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yMDAtXFx0aWYgKCFicmlkZ2UpXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MjAxOlxcdFxcdHJldHVybiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0IHwgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNjtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yMDItXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMjAzLVxcdGlmICghYnJfbXVsdGljYXN0X2hhc19yb3V0ZXJfYWRqYWNlbnQoZGV2LCBFVEhfUF9JUCkpXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MjA0OlxcdFxcdGZsYWdzIHw9IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQ7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMjA1LVxcdGlmICghYnJfbXVsdGljYXN0X2hhc19yb3V0ZXJfYWRqYWNlbnQoZGV2LCBFVEhfUF9JUFY2KSlcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoyMDY6XFx0XFx0ZmxhZ3MgfD0gQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNjtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yMDctXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yMjEtICpcXHRCQVRBRFZfTk9fRkxBR1M6IEJvdGggYW4gSVB2NCBhbmQgSVB2NiBtdWx0aWNhc3Qgcm91dGVyIGlzIHByZXNlbnRcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoyMjI6ICpcXHRCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0OiBObyBJUHY0IG11bHRpY2FzdCByb3V0ZXIgaXMgcHJlc2VudFxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjIyMzogKlxcdEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjY6IE5vIElQdjYgbXVsdGljYXN0IHJvdXRlciBpcyBwcmVzZW50XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMjI0LSAqXFx0VGhlIGZvcm1lciB0d28gT1InZDogbm8gbXVsdGljYXN0IHJvdXRlciBpcyBwcmVzZW50XFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz0yMjY9c3RhdGljIHU4IGJhdGFkdl9tY2FzdF9tbGFfcnRyX2ZsYWdzX2dldChzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMjI4LXtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoyMjk6XFx0dTggZmxhZ3MgPSBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0IHwgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNjtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yMzAtXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yNDMtICpcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoyNDQ6ICogUmV0dXJuOiBCQVRBRFZfTUNBU1RfSEFWRV9NQ19QVFlQRV9DQVBBIGlmIHllcywgQkFUQURWX05PX0ZMQUdTIG90aGVyd2lzZS5cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yNDUtICovXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MjQ2PXN0YXRpYyB1OCBiYXRhZHZfbWNhc3RfbWxhX2ZvcndfZmxhZ3NfZ2V0KHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYpXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yNjItXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MjYzOlxcdHJldHVybiBCQVRBRFZfTUNBU1RfSEFWRV9NQ19QVFlQRV9DQVBBO1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTI2NC19XFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz0yNzQ9YmF0YWR2X21jYXN0X21sYV9mbGFnc19nZXQoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdilcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTMwNi1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzozMDc6XFx0bWxhX2ZsYWdzLnR2bHZfZmxhZ3MgfD0gQkFUQURWX01DQVNUX1dBTlRfQUxMX1VOU05PT1BBQkxFUztcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0zMDgtXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0zMTgtXFx0aWYgKCFxcjQtXFx1MDAzZWV4aXN0cyB8fCBxcjQtXFx1MDAzZXNoYWRvd2luZykge1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjMxOTpcXHRcXHRtbGFfZmxhZ3MudHZsdl9mbGFncyB8PSBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNDtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzozMjA6XFx0XFx0bWxhX2ZsYWdzLnR2bHZfZmxhZ3MgXFx1MDAyNj0gfkJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQ7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMzIxLVxcdH1cXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTMyMy1cXHRpZiAoIXFyNi1cXHUwMDNlZXhpc3RzIHx8IHFyNi1cXHUwMDNlc2hhZG93aW5nKSB7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MzI0OlxcdFxcdG1sYV9mbGFncy50dmx2X2ZsYWdzIHw9IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9JUFY2O1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjMyNTpcXHRcXHRtbGFfZmxhZ3MudHZsdl9mbGFncyBcXHUwMDI2PSB+QkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNjtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0zMjYtXFx0fVxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MzY2PWJhdGFkdl9tY2FzdF9tbGFfbWVzaGlmX2dldF9pcHY0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0zNzUtXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6Mzc2OlxcdGlmIChmbGFncy1cXHUwMDNldHZsdl9mbGFncyBcXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9JUFY0KVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTM3Ny1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTM4OC1cXHQgICAgIHBtYyA9IHJjdV9kZXJlZmVyZW5jZShwbWMtXFx1MDAzZW5leHRfcmN1KSkge1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjM4OTpcXHRcXHRpZiAoZmxhZ3MtXFx1MDAzZXR2bHZfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfVU5TTk9PUEFCTEVTIFxcdTAwMjZcXHUwMDI2XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMzkwLVxcdFxcdCAgICBpcHY0X2lzX2xvY2FsX211bHRpY2FzdChwbWMtXFx1MDAzZW11bHRpYWRkcikpXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0zOTItXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MzkzOlxcdFxcdGlmICghKGZsYWdzLVxcdTAwM2V0dmx2X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNCkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0zOTQtXFx0XFx0ICAgICFpcHY0X2lzX2xvY2FsX211bHRpY2FzdChwbWMtXFx1MDAzZW11bHRpYWRkcikpXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz00MzM9YmF0YWR2X21jYXN0X21sYV9tZXNoaWZfZ2V0X2lwdjYoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTQ0Mi1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzo0NDM6XFx0aWYgKGZsYWdzLVxcdTAwM2V0dmx2X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjYpXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtNDQ0LVxcdFxcdHJldHVybiAwO1xcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtNDYwLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjQ2MTpcXHRcXHRpZiAoZmxhZ3MtXFx1MDAzZXR2bHZfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfVU5TTk9PUEFCTEVTIFxcdTAwMjZcXHUwMDI2XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtNDYyLVxcdFxcdCAgICBpcHY2X2FkZHJfaXNfbGxfYWxsX25vZGVzKFxcdTAwMjZwbWM2LVxcdTAwM2VtY2FfYWRkcikpXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy00NjQtXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6NDY1OlxcdFxcdGlmICghKGZsYWdzLVxcdTAwM2V0dmx2X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy00NjYtXFx0XFx0ICAgIElQVjZfQUREUl9NQ19TQ09QRShcXHUwMDI2cG1jNi1cXHUwMDNlbWNhX2FkZHIpIFxcdTAwM2VcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTU4Mz1zdGF0aWMgaW50IGJhdGFkdl9tY2FzdF9tbGFfYnJpZGdlX2dldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtNjAyLVxcdFxcdGlmIChicl9pcF9lbnRyeS1cXHUwMDNlYWRkci5wcm90byA9PSBodG9ucyhFVEhfUF9JUCkpIHtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzo2MDM6XFx0XFx0XFx0aWYgKHR2bHZfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNClcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy02MDQtXFx0XFx0XFx0XFx0Y29udGludWU7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtNjA1LVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjYwNjpcXHRcXHRcXHRpZiAodHZsdl9mbGFncyBcXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9VTlNOT09QQUJMRVMgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy02MDctXFx0XFx0XFx0ICAgIGlwdjRfaXNfbG9jYWxfbXVsdGljYXN0KGJyX2lwX2VudHJ5LVxcdTAwM2VhZGRyLmRzdC5pcDQpKVxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtNjA5LVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjYxMDpcXHRcXHRcXHRpZiAoISh0dmx2X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNCkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy02MTEtXFx0XFx0XFx0ICAgICFpcHY0X2lzX2xvY2FsX211bHRpY2FzdChicl9pcF9lbnRyeS1cXHUwMDNlYWRkci5kc3QuaXA0KSlcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTYxNi1cXHRcXHRpZiAoYnJfaXBfZW50cnktXFx1MDAzZWFkZHIucHJvdG8gPT0gaHRvbnMoRVRIX1BfSVBWNikpIHtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzo2MTc6XFx0XFx0XFx0aWYgKHR2bHZfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNilcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy02MTgtXFx0XFx0XFx0XFx0Y29udGludWU7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtNjE5LVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjYyMDpcXHRcXHRcXHRpZiAodHZsdl9mbGFncyBcXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9VTlNOT09QQUJMRVMgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy02MjEtXFx0XFx0XFx0ICAgIGlwdjZfYWRkcl9pc19sbF9hbGxfbm9kZXMoXFx1MDAyNmJyX2lwX2VudHJ5LVxcdTAwM2VhZGRyLmRzdC5pcDYpKVxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtNjIzLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjYyNDpcXHRcXHRcXHRpZiAoISh0dmx2X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy02MjUtXFx0XFx0XFx0ICAgIElQVjZfQUREUl9NQ19TQ09QRShcXHUwMDI2YnJfaXBfZW50cnktXFx1MDAzZWFkZHIuZHN0LmlwNikgXFx1MDAzZVxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9ODM0PXN0YXRpYyB2b2lkIGJhdGFkdl9tY2FzdF9mbGFnc19sb2coc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdiwgdTggZmxhZ3MpXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy04NDAtXFx0c3ByaW50ZihzdHJfb2xkX2ZsYWdzLCBcXFwiWyVjJWMlYyVzJXMlY11cXFwiLFxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjg0MTpcXHRcXHQob2xkX2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX1VOU05PT1BBQkxFUykgPyAnVScgOiAnLicsXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6ODQyOlxcdFxcdChvbGRfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNCkgPyAnNCcgOiAnLicsXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6ODQzOlxcdFxcdChvbGRfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNikgPyAnNicgOiAnLicsXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6ODQ0OlxcdFxcdCEob2xkX2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNCkgPyBcXFwiUjRcXFwiIDogXFxcIi4gXFxcIixcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzo4NDU6XFx0XFx0IShvbGRfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI2KSA/IFxcXCJSNlxcXCIgOiBcXFwiLiBcXFwiLFxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjg0NjpcXHRcXHQhKG9sZF9mbGFncyBcXHUwMDI2IEJBVEFEVl9NQ0FTVF9IQVZFX01DX1BUWVBFX0NBUEEpID8gJ1AnIDogJy4nKTtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy04NDctXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy04NTAtXFx0XFx0ICAgb2xkX2VuYWJsZWQgPyBzdHJfb2xkX2ZsYWdzIDogXFxcIlxcdTAwM2N1bmRlZmluZWRcXHUwMDNlXFxcIixcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzo4NTE6XFx0XFx0ICAgKGZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX1VOU05PT1BBQkxFUykgPyAnVScgOiAnLicsXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6ODUyOlxcdFxcdCAgIChmbGFncyBcXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9JUFY0KSA/ICc0JyA6ICcuJyxcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzo4NTM6XFx0XFx0ICAgKGZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjYpID8gJzYnIDogJy4nLFxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjg1NDpcXHRcXHQgICAhKGZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNCkgPyBcXFwiUjRcXFwiIDogXFxcIi4gXFxcIixcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzo4NTU6XFx0XFx0ICAgIShmbGFncyBcXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjYpID8gXFxcIlI2XFxcIiA6IFxcXCIuIFxcXCIsXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6ODU2OlxcdFxcdCAgICEoZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfSEFWRV9NQ19QVFlQRV9DQVBBKSA/ICdQJyA6ICcuJyk7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtODU3LX1cXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTExOTQ9YmF0YWR2X21jYXN0X2ZvcndfbW9kZV9ieV9jb3VudChzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTIwMS1cXHRpZiAoIWF0b21pY19yZWFkKFxcdTAwMjZiYXRfcHJpdi1cXHUwMDNlbWNhc3QubnVtX25vX21jX3B0eXBlX2NhcGEpIFxcdTAwMjZcXHUwMDI2XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTIwMjpcXHQgICAgb3duX3R2bHZfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfSEFWRV9NQ19QVFlQRV9DQVBBIFxcdTAwMjZcXHUwMDI2XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTIwMy1cXHQgICAgc2tiLVxcdTAwM2VsZW4gKyBtY2FzdF9oZHJsZW4gXFx1MDAzYz0gSVBWNl9NSU5fTVRVIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz0xMzAxPWJhdGFkdl9tY2FzdF9mb3J3X3R0KHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xMzQxLSAqIFNlbmRzIGNvcGllcyBvZiBhIGZyYW1lIHdpdGggbXVsdGljYXN0IGRlc3RpbmF0aW9uIHRvIGFueSBub2RlIHdpdGggYVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjEzNDI6ICogQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjQgZmxhZyBzZXQuIEEgdHJhbnNtaXNzaW9uIGlzIHBlcmZvcm1lZCB2aWEgYVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTEzNDMtICogYmF0bWFuLWFkdiB1bmljYXN0IHBhY2tldCBmb3IgZWFjaCBzdWNoIGRlc3RpbmF0aW9uIG5vZGUuXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz0xMzQ5PWJhdGFkdl9tY2FzdF9mb3J3X3dhbnRfYWxsX2lwdjQoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTEzNzgtICogU2VuZHMgY29waWVzIG9mIGEgZnJhbWUgd2l0aCBtdWx0aWNhc3QgZGVzdGluYXRpb24gdG8gYW55IG5vZGUgd2l0aCBhXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTM3OTogKiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNiBmbGFnIHNldC4gQSB0cmFuc21pc3Npb24gaXMgcGVyZm9ybWVkIHZpYSBhXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTM4MC0gKiBiYXRtYW4tYWR2IHVuaWNhc3QgcGFja2V0IGZvciBlYWNoIHN1Y2ggZGVzdGluYXRpb24gbm9kZS5cXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTEzODY9YmF0YWR2X21jYXN0X2Zvcndfd2FudF9hbGxfaXB2NihzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTQxNS0gKiBTZW5kcyBjb3BpZXMgb2YgYSBmcmFtZSB3aXRoIG11bHRpY2FzdCBkZXN0aW5hdGlvbiB0byBhbnkgbm9kZSB3aXRoIGFcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNDE2OiAqIEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9JUFY0IG9yIEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9JUFY2IGZsYWcgc2V0LiBBXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTQxNy0gKiB0cmFuc21pc3Npb24gaXMgcGVyZm9ybWVkIHZpYSBhIGJhdG1hbi1hZHYgdW5pY2FzdCBwYWNrZXQgZm9yIGVhY2ggc3VjaFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTQyND1iYXRhZHZfbWNhc3RfZm9yd193YW50X2FsbChzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTQ0NC0gKiBTZW5kcyBjb3BpZXMgb2YgYSBmcmFtZSB3aXRoIG11bHRpY2FzdCBkZXN0aW5hdGlvbiB0byBhbnkgbm9kZSB3aXRoIGFcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNDQ1OiAqIEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQgZmxhZyB1bnNldC4gQSB0cmFuc21pc3Npb24gaXMgcGVyZm9ybWVkIHZpYSBhXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTQ0Ni0gKiBiYXRtYW4tYWR2IHVuaWNhc3QgcGFja2V0IGZvciBlYWNoIHN1Y2ggZGVzdGluYXRpb24gbm9kZS5cXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTE0NTI9YmF0YWR2X21jYXN0X2Zvcndfd2FudF9hbGxfcnRyNChzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTQ4MS0gKiBTZW5kcyBjb3BpZXMgb2YgYSBmcmFtZSB3aXRoIG11bHRpY2FzdCBkZXN0aW5hdGlvbiB0byBhbnkgbm9kZSB3aXRoIGFcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNDgyOiAqIEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjYgZmxhZyB1bnNldC4gQSB0cmFuc21pc3Npb24gaXMgcGVyZm9ybWVkIHZpYSBhXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTQ4My0gKiBiYXRtYW4tYWR2IHVuaWNhc3QgcGFja2V0IGZvciBlYWNoIHN1Y2ggZGVzdGluYXRpb24gbm9kZS5cXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTE0ODk9YmF0YWR2X21jYXN0X2Zvcndfd2FudF9hbGxfcnRyNihzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTUxOC0gKiBTZW5kcyBjb3BpZXMgb2YgYSBmcmFtZSB3aXRoIG11bHRpY2FzdCBkZXN0aW5hdGlvbiB0byBhbnkgbm9kZSB3aXRoIGFcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNTE5OiAqIEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQgb3IgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNiBmbGFnIHVuc2V0LiBBXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTUyMC0gKiB0cmFuc21pc3Npb24gaXMgcGVyZm9ybWVkIHZpYSBhIGJhdG1hbi1hZHYgdW5pY2FzdCBwYWNrZXQgZm9yIGVhY2ggc3VjaFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTU1OD1pbnQgYmF0YWR2X21jYXN0X2Zvcndfc2VuZChzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTU5NC0gKlxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE1OTU6ICogSWYgdGhlIEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9VTlNOT09QQUJMRVMgZmxhZyBvZiB0aGlzIG9yaWdpbmF0b3IsXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTU5Ni0gKiBvcmlnLCBoYXMgdG9nZ2xlZCB0aGVuIHRoaXMgbWV0aG9kIHVwZGF0ZXMgdGhlIGNvdW50ZXIgYW5kIHRoZSBsaXN0XFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz0xNjAxPXN0YXRpYyB2b2lkIGJhdGFkdl9tY2FzdF93YW50X3Vuc25vb3BfdXBkYXRlKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNjEwLVxcdC8qIHN3aXRjaGVkIGZyb20gZmxhZyB1bnNldCB0byBzZXQgKi9cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNjExOlxcdGlmIChtY2FzdF9mbGFncyBcXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9VTlNOT09QQUJMRVMgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNjEyOlxcdCAgICAhKG9yaWctXFx1MDAzZW1jYXN0X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX1VOU05PT1BBQkxFUykpIHtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNjEzLVxcdFxcdGF0b21pY19pbmMoXFx1MDAyNmJhdF9wcml2LVxcdTAwM2VtY2FzdC5udW1fd2FudF9hbGxfdW5zbm9vcGFibGVzKTtcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE2MjEtXFx0Lyogc3dpdGNoZWQgZnJvbSBmbGFnIHNldCB0byB1bnNldCAqL1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE2MjI6XFx0fSBlbHNlIGlmICghKG1jYXN0X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX1VOU05PT1BBQkxFUykgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNjIzOlxcdFxcdCAgIG9yaWctXFx1MDAzZW1jYXN0X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX1VOU05PT1BBQkxFUykge1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE2MjQtXFx0XFx0YXRvbWljX2RlYyhcXHUwMDI2YmF0X3ByaXYtXFx1MDAzZW1jYXN0Lm51bV93YW50X2FsbF91bnNub29wYWJsZXMpO1xcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTY0MC0gKlxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE2NDE6ICogSWYgdGhlIEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9JUFY0IGZsYWcgb2YgdGhpcyBvcmlnaW5hdG9yLCBvcmlnLCBoYXNcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNjQyLSAqIHRvZ2dsZWQgdGhlbiB0aGlzIG1ldGhvZCB1cGRhdGVzIHRoZSBjb3VudGVyIGFuZCB0aGUgbGlzdCBhY2NvcmRpbmdseS5cXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTE2NDY9c3RhdGljIHZvaWQgYmF0YWR2X21jYXN0X3dhbnRfaXB2NF91cGRhdGUoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE2NTUtXFx0Lyogc3dpdGNoZWQgZnJvbSBmbGFnIHVuc2V0IHRvIHNldCAqL1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE2NTY6XFx0aWYgKG1jYXN0X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjQgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNjU3OlxcdCAgICAhKG9yaWctXFx1MDAzZW1jYXN0X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjQpKSB7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTY1OC1cXHRcXHRhdG9taWNfaW5jKFxcdTAwMjZiYXRfcHJpdi1cXHUwMDNlbWNhc3QubnVtX3dhbnRfYWxsX2lwdjQpO1xcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTY2Ni1cXHQvKiBzd2l0Y2hlZCBmcm9tIGZsYWcgc2V0IHRvIHVuc2V0ICovXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTY2NzpcXHR9IGVsc2UgaWYgKCEobWNhc3RfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNCkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNjY4OlxcdFxcdCAgIG9yaWctXFx1MDAzZW1jYXN0X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjQpIHtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNjY5LVxcdFxcdGF0b21pY19kZWMoXFx1MDAyNmJhdF9wcml2LVxcdTAwM2VtY2FzdC5udW1fd2FudF9hbGxfaXB2NCk7XFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNjg1LSAqXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTY4NjogKiBJZiB0aGUgQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjYgZmxhZyBvZiB0aGlzIG9yaWdpbmF0b3IsIG9yaWcsIGhhc1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE2ODctICogdG9nZ2xlZCB0aGVuIHRoaXMgbWV0aG9kIHVwZGF0ZXMgdGhlIGNvdW50ZXIgYW5kIHRoZSBsaXN0IGFjY29yZGluZ2x5Llxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTY5MT1zdGF0aWMgdm9pZCBiYXRhZHZfbWNhc3Rfd2FudF9pcHY2X3VwZGF0ZShzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTcwMC1cXHQvKiBzd2l0Y2hlZCBmcm9tIGZsYWcgdW5zZXQgdG8gc2V0ICovXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTcwMTpcXHRpZiAobWNhc3RfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNiBcXHUwMDI2XFx1MDAyNlxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE3MDI6XFx0ICAgICEob3JpZy1cXHUwMDNlbWNhc3RfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNikpIHtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNzAzLVxcdFxcdGF0b21pY19pbmMoXFx1MDAyNmJhdF9wcml2LVxcdTAwM2VtY2FzdC5udW1fd2FudF9hbGxfaXB2Nik7XFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNzExLVxcdC8qIHN3aXRjaGVkIGZyb20gZmxhZyBzZXQgdG8gdW5zZXQgKi9cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNzEyOlxcdH0gZWxzZSBpZiAoIShtY2FzdF9mbGFncyBcXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9JUFY2KSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE3MTM6XFx0XFx0ICAgb3JpZy1cXHUwMDNlbWNhc3RfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNikge1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3MTQtXFx0XFx0YXRvbWljX2RlYyhcXHUwMDI2YmF0X3ByaXYtXFx1MDAzZW1jYXN0Lm51bV93YW50X2FsbF9pcHY2KTtcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3MzAtICpcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNzMxOiAqIElmIHRoZSBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0IGZsYWcgb2YgdGhpcyBvcmlnaW5hdG9yLCBvcmlnLCBoYXNcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNzMyLSAqIHRvZ2dsZWQgdGhlbiB0aGlzIG1ldGhvZCB1cGRhdGVzIHRoZSBjb3VudGVyIGFuZCB0aGUgbGlzdCBhY2NvcmRpbmdseS5cXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTE3MzY9c3RhdGljIHZvaWQgYmF0YWR2X21jYXN0X3dhbnRfcnRyNF91cGRhdGUoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3NDUtXFx0Lyogc3dpdGNoZWQgZnJvbSBmbGFnIHNldCB0byB1bnNldCAqL1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE3NDY6XFx0aWYgKCEobWNhc3RfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0KSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE3NDc6XFx0ICAgIG9yaWctXFx1MDAzZW1jYXN0X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNCkge1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3NDgtXFx0XFx0YXRvbWljX2luYyhcXHUwMDI2YmF0X3ByaXYtXFx1MDAzZW1jYXN0Lm51bV93YW50X2FsbF9ydHI0KTtcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3NTYtXFx0Lyogc3dpdGNoZWQgZnJvbSBmbGFnIHVuc2V0IHRvIHNldCAqL1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE3NTc6XFx0fSBlbHNlIGlmIChtY2FzdF9mbGFncyBcXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNzU4OlxcdFxcdCAgICEob3JpZy1cXHUwMDNlbWNhc3RfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0KSkge1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3NTktXFx0XFx0YXRvbWljX2RlYyhcXHUwMDI2YmF0X3ByaXYtXFx1MDAzZW1jYXN0Lm51bV93YW50X2FsbF9ydHI0KTtcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3NzUtICpcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNzc2OiAqIElmIHRoZSBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI2IGZsYWcgb2YgdGhpcyBvcmlnaW5hdG9yLCBvcmlnLCBoYXNcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNzc3LSAqIHRvZ2dsZWQgdGhlbiB0aGlzIG1ldGhvZCB1cGRhdGVzIHRoZSBjb3VudGVyIGFuZCB0aGUgbGlzdCBhY2NvcmRpbmdseS5cXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTE3ODE9c3RhdGljIHZvaWQgYmF0YWR2X21jYXN0X3dhbnRfcnRyNl91cGRhdGUoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3OTAtXFx0Lyogc3dpdGNoZWQgZnJvbSBmbGFnIHNldCB0byB1bnNldCAqL1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE3OTE6XFx0aWYgKCEobWNhc3RfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI2KSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE3OTI6XFx0ICAgIG9yaWctXFx1MDAzZW1jYXN0X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNikge1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3OTMtXFx0XFx0YXRvbWljX2luYyhcXHUwMDI2YmF0X3ByaXYtXFx1MDAzZW1jYXN0Lm51bV93YW50X2FsbF9ydHI2KTtcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE4MDEtXFx0Lyogc3dpdGNoZWQgZnJvbSBmbGFnIHVuc2V0IHRvIHNldCAqL1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE4MDI6XFx0fSBlbHNlIGlmIChtY2FzdF9mbGFncyBcXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjYgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxODAzOlxcdFxcdCAgICEob3JpZy1cXHUwMDNlbWNhc3RfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI2KSkge1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE4MDQtXFx0XFx0YXRvbWljX2RlYyhcXHUwMDI2YmF0X3ByaXYtXFx1MDAzZW1jYXN0Lm51bV93YW50X2FsbF9ydHI2KTtcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE4MjAtICpcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxODIxOiAqIElmIHRoZSBCQVRBRFZfTUNBU1RfSEFWRV9NQ19QVFlQRV9DQVBBIGZsYWcgb2YgdGhpcyBvcmlnaW5hdG9yLCBvcmlnLCBoYXNcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xODIyLSAqIHRvZ2dsZWQgdGhlbiB0aGlzIG1ldGhvZCB1cGRhdGVzIHRoZSBjb3VudGVyIGFjY29yZGluZ2x5Llxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTgyND1zdGF0aWMgdm9pZCBiYXRhZHZfbWNhc3RfaGF2ZV9tY19wdHlwZV91cGRhdGUoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE4MzAtXFx0Lyogc3dpdGNoZWQgZnJvbSBmbGFnIHNldCB0byB1bnNldCAqL1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE4MzE6XFx0aWYgKCEobWNhc3RfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfSEFWRV9NQ19QVFlQRV9DQVBBKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE4MzI6XFx0ICAgIG9yaWctXFx1MDAzZW1jYXN0X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX0hBVkVfTUNfUFRZUEVfQ0FQQSlcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xODMzLVxcdFxcdGF0b21pY19pbmMoXFx1MDAyNmJhdF9wcml2LVxcdTAwM2VtY2FzdC5udW1fbm9fbWNfcHR5cGVfY2FwYSk7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTgzNC1cXHQvKiBzd2l0Y2hlZCBmcm9tIGZsYWcgdW5zZXQgdG8gc2V0ICovXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTgzNTpcXHRlbHNlIGlmIChtY2FzdF9mbGFncyBcXHUwMDI2IEJBVEFEVl9NQ0FTVF9IQVZFX01DX1BUWVBFX0NBUEEgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxODM2OlxcdFxcdCAhKG9yaWctXFx1MDAzZW1jYXN0X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX0hBVkVfTUNfUFRZUEVfQ0FQQSkpXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTgzNy1cXHRcXHRhdG9taWNfZGVjKFxcdTAwMjZiYXRfcHJpdi1cXHUwMDNlbWNhc3QubnVtX25vX21jX3B0eXBlX2NhcGEpO1xcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTg0OT1iYXRhZHZfbWNhc3RfdHZsdl9mbGFnc19nZXQoYm9vbCBlbmFibGVkLCB2b2lkICp0dmx2X3ZhbHVlLCB1MTYgdHZsdl92YWx1ZV9sZW4pXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xODU2LVxcdGlmICghZW5hYmxlZCkge1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE4NTc6XFx0XFx0bWNhc3RfZmxhZ3MgfD0gQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjQ7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTg1ODpcXHRcXHRtY2FzdF9mbGFncyB8PSBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNjtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xODU5LVxcdH1cXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE4NjEtXFx0LyogcmVtb3ZlIHJlZHVuZGFudCBmbGFncyB0byBhdm9pZCBzZW5kaW5nIGR1cGxpY2F0ZSBwYWNrZXRzIGxhdGVyICovXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTg2MjpcXHRpZiAobWNhc3RfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNClcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxODYzOlxcdFxcdG1jYXN0X2ZsYWdzIHw9IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQ7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTg2NC1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxODY1OlxcdGlmIChtY2FzdF9mbGFncyBcXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9JUFY2KVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE4NjY6XFx0XFx0bWNhc3RfZmxhZ3MgfD0gQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNjtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xODY3LVxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTkzOT1pbnQgYmF0YWR2X21jYXN0X21lc2hfaW5mb19wdXQoc3RydWN0IHNrX2J1ZmYgKm1zZyxcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE5NDUtXFx0aWYgKGJhdF9wcml2LVxcdTAwM2VtY2FzdC5tbGFfZmxhZ3MuYnJpZGdlZCkge1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE5NDY6XFx0XFx0ZmxhZ3NfcHJpdiB8PSBCQVRBRFZfTUNBU1RfRkxBR1NfQlJJREdFRDtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xOTQ3LVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE5NDgtXFx0XFx0aWYgKGJhdF9wcml2LVxcdTAwM2VtY2FzdC5tbGFfZmxhZ3MucXVlcmllcl9pcHY0LmV4aXN0cylcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxOTQ5OlxcdFxcdFxcdGZsYWdzX3ByaXYgfD0gQkFUQURWX01DQVNUX0ZMQUdTX1FVRVJJRVJfSVBWNF9FWElTVFM7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTk1MC1cXHRcXHRpZiAoYmF0X3ByaXYtXFx1MDAzZW1jYXN0Lm1sYV9mbGFncy5xdWVyaWVyX2lwdjYuZXhpc3RzKVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE5NTE6XFx0XFx0XFx0ZmxhZ3NfcHJpdiB8PSBCQVRBRFZfTUNBU1RfRkxBR1NfUVVFUklFUl9JUFY2X0VYSVNUUztcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xOTUyLVxcdFxcdGlmIChiYXRfcHJpdi1cXHUwMDNlbWNhc3QubWxhX2ZsYWdzLnF1ZXJpZXJfaXB2NC5zaGFkb3dpbmcpXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTk1MzpcXHRcXHRcXHRmbGFnc19wcml2IHw9IEJBVEFEVl9NQ0FTVF9GTEFHU19RVUVSSUVSX0lQVjRfU0hBRE9XSU5HO1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE5NTQtXFx0XFx0aWYgKGJhdF9wcml2LVxcdTAwM2VtY2FzdC5tbGFfZmxhZ3MucXVlcmllcl9pcHY2LnNoYWRvd2luZylcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxOTU1OlxcdFxcdFxcdGZsYWdzX3ByaXYgfD0gQkFUQURWX01DQVNUX0ZMQUdTX1FVRVJJRVJfSVBWNl9TSEFET1dJTkc7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTk1Ni1cXHR9XFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz0yMTc4PXZvaWQgYmF0YWR2X21jYXN0X3B1cmdlX29yaWcoc3RydWN0IGJhdGFkdl9vcmlnX25vZGUgKm9yaWcpXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yMTg3LVxcdGJhdGFkdl9tY2FzdF93YW50X3J0cjRfdXBkYXRlKGJhdF9wcml2LCBvcmlnLFxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjIxODg6XFx0XFx0XFx0XFx0ICAgICAgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNCk7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMjE4OS1cXHRiYXRhZHZfbWNhc3Rfd2FudF9ydHI2X3VwZGF0ZShiYXRfcHJpdiwgb3JpZyxcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoyMTkwOlxcdFxcdFxcdFxcdCAgICAgIEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjYpO1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTIxOTEtXFx0YmF0YWR2X21jYXN0X2hhdmVfbWNfcHR5cGVfdXBkYXRlKGJhdF9wcml2LCBvcmlnLFxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjIxOTI6XFx0XFx0XFx0XFx0XFx0ICBCQVRBRFZfTUNBU1RfSEFWRV9NQ19QVFlQRV9DQVBBKTtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yMTkzLVxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0X2ZvcncuYz02MTY9YmF0YWR2X21jYXN0X2ZvcndfcHVzaF9oZHIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgc2hvcnQgdHZsdl9sZW4pXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3RfZm9ydy5jLTYyNy1cXHRtY2FzdF9wYWNrZXQtXFx1MDAzZXR0bCA9IEJBVEFEVl9UVEw7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0X2ZvcncuYzo2Mjg6XFx0bWNhc3RfcGFja2V0LVxcdTAwM2VwYWNrZXRfdHlwZSA9IEJBVEFEVl9NQ0FTVDtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3RfZm9ydy5jLTYyOS1cXHRtY2FzdF9wYWNrZXQtXFx1MDAzZXJlc2VydmVkID0gMDtcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L29yaWdpbmF0b3IuYz05NDE9c3RydWN0IGJhdGFkdl9vcmlnX25vZGUgKmJhdGFkdl9vcmlnX25vZGVfbmV3KHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmMtOTc4LSNpZmRlZiBDT05GSUdfQkFUTUFOX0FEVl9NQ0FTVFxcbm5ldC9iYXRtYW4tYWR2L29yaWdpbmF0b3IuYzo5Nzk6XFx0b3JpZ19ub2RlLVxcdTAwM2VtY2FzdF9mbGFncyA9IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQ7XFxubmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jOjk4MDpcXHRvcmlnX25vZGUtXFx1MDAzZW1jYXN0X2ZsYWdzIHw9IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjY7XFxubmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jOjk4MTpcXHRvcmlnX25vZGUtXFx1MDAzZW1jYXN0X2ZsYWdzIHw9IEJBVEFEVl9NQ0FTVF9IQVZFX01DX1BUWVBFX0NBUEE7XFxubmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jLTk4Mi1cXHRJTklUX0hMSVNUX05PREUoXFx1MDAyNm9yaWdfbm9kZS1cXHUwMDNlbWNhc3Rfd2FudF9hbGxfdW5zbm9vcGFibGVzX25vZGUpO1xcbi0tXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jPTEzMzk9aW50IGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jLTEzNzUtXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jOjEzNzY6XFx0cmV0ID0gYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzKGJhdF9wcml2LCBCQVRBRFZfTUNBU1QsIE5VTEwsIHNrYixcXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMtMTM3Ny1cXHRcXHRcXHRcXHRcXHQgICAgIHR2bHZfYnVmZiwgdHZsdl9idWZmX2xlbik7XFxuLS1cXG5uZXQvYmF0bWFuLWFkdi90dmx2LmM9Mzg5PXN0YXRpYyBpbnQgYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNDI3LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgdHZsdl92YWx1ZV9sZW4pO1xcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYzo0Mjg6XFx0Y2FzZSBCQVRBRFZfTUNBU1Q6XFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTQyOS1cXHRcXHRpZiAoIXNrYilcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L3R5cGVzLmg9MTI0ND1zdHJ1Y3QgYmF0YWR2X3ByaXZfbWNhc3Qge1xcbi0tXFxubmV0L2JhdG1hbi1hZHYvdHlwZXMuaC0xMzEwLVxcdCAqIEBudW1fbm9fbWNfcHR5cGVfY2FwYTogY291bnRlciBmb3IgbnVtYmVyIG9mIG5vZGVzIHdpdGhvdXQgdGhlXFxubmV0L2JhdG1hbi1hZHYvdHlwZXMuaDoxMzExOlxcdCAqICBCQVRBRFZfTUNBU1RfSEFWRV9NQ19QVFlQRV9DQVBBIGZsYWdcXG5uZXQvYmF0bWFuLWFkdi90eXBlcy5oLTEzMTItXFx0ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE4OjU5OjE5LjQ3MTQ3MTQ2OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTc3ODI0NDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQkFUQURWIE11bHRpY2FzdCBQYWNrZXQgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBCQVRBRFZfTUNBU1RgIHBhY2tldCB0eXBlLiBSaWdodCwgdGhhdCBtYWtlcyBzZW5zZSDigJMgaXQncyBzcGVjaWZpY2FsbHkgZm9yIG11bHRpY2FzdCB0cmFmZmljIHdpdGhpbiB0aGUgQmF0bWFuLWFkdiBuZXR3b3JrLiBOb3csIEkgc2VlIHRoYXQgYGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldGAgZnVuY3Rpb24gaXMgdGhlIG9uZSByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhlc2UgYEJBVEFEVl9NQ0FTVGAgcGFja2V0cy4gQW5kIHRoaXMgZnVuY3Rpb24/IEl0J3Mgb25seSBnb2luZyB0byBiZSBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwgbW9kdWxlIGlmIGBDT05GSUdfQkFUTUFOX0FEVl9NQ0FTVGAgaXMgZGVmaW5lZCwgd2hpY2ggaW1wbGllcyBpdCBpcyBhIGNvbXBpbGUtdGltZSBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBjb25maWcgb3B0aW9uLCB0aGUgZnVuY3Rpb24sIGFuZCB0aGUgcGFja2V0IHR5cGUsIHNvIGxldCBtZSBqdXN0IHRha2UgYSBxdWljayBzZWNvbmQgdG8gZG91YmxlLWNoZWNrIGByb3V0aW5nLmhgIGFnYWluLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIHJlbGF0ZWQgdG8gdGhlIHJvdXRpbmcgYXNwZWN0cyBvZiB0aGlzIG11bHRpY2FzdCBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg1NDQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxODo1OToyMy40NDkyOTg0OTdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMTYyODg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJhdGFkdl9yZWN2X21jYXN0X3BhY2tldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYmF0bWFuLWFkdi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JhdG1hbi1hZHYvbWFpbi5jPTUwND1zdGF0aWMgdm9pZCBiYXRhZHZfcmVjdl9oYW5kbGVyX2luaXQodm9pZClcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L21haW4uYy01MzctXFx0LyogbXVsdGljYXN0IHBhY2tldCAqL1xcbm5ldC9iYXRtYW4tYWR2L21haW4uYzo1Mzg6XFx0YmF0YWR2X3J4X2hhbmRsZXJbQkFUQURWX01DQVNUXSA9IGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldDtcXG5uZXQvYmF0bWFuLWFkdi9tYWluLmMtNTM5LVxcbi0tXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jPTEyMTI9aW50IGJhdGFkdl9yZWN2X2JjYXN0X3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jLTEzMjgtLyoqXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jOjEzMjk6ICogYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0KCkgLSBwcm9jZXNzIHJlY2VpdmVkIGJhdG1hbi1hZHYgbXVsdGljYXN0IHBhY2tldFxcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYy0xMzMwLSAqIEBza2I6IHRoZSByZWNlaXZlZCBiYXRtYW4tYWR2IG11bHRpY2FzdCBwYWNrZXRcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYy0xMzM4LSAqL1xcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYzoxMzM5OmludCBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMtMTM0MC1cXHRcXHRcXHQgICAgIHN0cnVjdCBiYXRhZHZfaGFyZF9pZmFjZSAqcmVjdl9pZilcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuaD0yOD1pbnQgYmF0YWR2X3JlY3ZfYmNhc3RfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmgtMzAtI2lmZGVmIENPTkZJR19CQVRNQU5fQURWX01DQVNUXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5oOjMxOmludCBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmgtMzItXFx0XFx0XFx0ICAgICBzdHJ1Y3QgYmF0YWR2X2hhcmRfaWZhY2UgKnJlY3ZfaWYpO1xcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuaC0zMy0jZWxzZVxcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuaDozNDpzdGF0aWMgaW5saW5lIGludCBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmgtMzUtXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGJhdGFkdl9oYXJkX2lmYWNlICpyZWN2X2lmKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxODo1OToyMy40OTI0NjYwMzRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg1MjkyMDk4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJBVE1BTi1BRFYgTXVsdGljYXN0IERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gdGhpcyBgYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0YCBmdW5jdGlvbiwgYW5kIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgaXQncyBvbmx5ICpmdWxseSogaW1wbGVtZW50ZWQgd2hlbiBgQ09ORklHX0JBVE1BTl9BRFZfTUNBU1RgIGlzIGVuYWJsZWQuIFRoYXQncyBhIGdpdmVuLiBTbywgeWVzLCB0aGUgbXVsdGljYXN0IGZ1bmN0aW9uYWxpdHkgZGVmaW5pdGVseSBoaW5nZXMgb24gYEJBVE1BTl9BRFZfTUNBU1RgLiBOb3csIHRoZSBicm9hZGVyIHF1ZXN0aW9uOiB3aGF0IGVsc2UgZG8gSSBuZWVkPyBJIGFzc3VtZSB0aGUgYmFzZSBCQVRNQU4tQURWIGZ1bmN0aW9uYWxpdHksIG1lYW5pbmcgYEJBVE1BTl9BRFZgIGl0c2VsZiBpcyBuZWNlc3NhcnkuIFRoYXQncyBwcm9iYWJseSB0aGUgY29yZSBjb25maWcsIHJpZ2h0P1xuXG5CdXQgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gQXJlIHRoZXJlIGFueSAqb3RoZXIqIGRlcGVuZGVuY2llcyBsdXJraW5nIGluIHRoZSBzaGFkb3dzPyBUaW1lIHRvIGRpdmUgaW50byB0aGUgYG5ldC9iYXRtYW4tYWR2L0tjb25maWdgIGZpbGUuIFRoYXQncyB0aGUgZGVmaW5pdGl2ZSBzb3VyY2UuIEknbGwgc2NvdXIgdGhhdCBjb25maWcgZmlsZSB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBzbmVha3ksIGluZGlyZWN0IGRlcGVuZGVuY2llcyB0aGF0IEknbSBtaXNzaW5nLiBOZWVkIHRvIGJlIHRob3JvdWdoIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5Mzc1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTg6NTk6MjcuMzQ1Mzg5NTcxWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9iYXRtYW4tYWR2L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0IyBDb3B5cmlnaHQgKEMpIEIuQS5ULk0uQS5OLiBjb250cmlidXRvcnM6XFxuICAgMzpcXHQjXFxuICAgNDpcXHQjIE1hcmVrIExpbmRuZXIsIFNpbW9uIFd1bmRlcmxpY2hcXG4gICA1OlxcdFxcbiAgIDY6XFx0I1xcbiAgIDc6XFx0IyBCLkEuVC5NLkEuTiBtZXNoaW5nIHByb3RvY29sXFxuICAgODpcXHQjXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNvbmZpZyBCQVRNQU5fQURWXFxuICAxMTpcXHRcXHR0cmlzdGF0ZSBcXFwiQi5BLlQuTS5BLk4uIEFkdmFuY2VkIE1lc2hpbmcgUHJvdG9jb2xcXFwiXFxuICAxMjpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDEzOlxcdFxcdGhlbHBcXG4gIDE0OlxcdFxcdCAgQi5BLlQuTS5BLk4uIChiZXR0ZXIgYXBwcm9hY2ggdG8gbW9iaWxlIGFkLWhvYyBuZXR3b3JraW5nKSBpc1xcbiAgMTU6XFx0XFx0ICBhIHJvdXRpbmcgcHJvdG9jb2wgZm9yIG11bHRpLWhvcCBhZC1ob2MgbWVzaCBuZXR3b3Jrcy4gVGhlXFxuICAxNjpcXHRcXHQgIG5ldHdvcmtzIG1heSBiZSB3aXJlZCBvciB3aXJlbGVzcy4gU2VlXFxuICAxNzpcXHRcXHQgIGh0dHBzOi8vd3d3Lm9wZW4tbWVzaC5vcmcvIGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCB1c2VyIHNwYWNlXFxuICAxODpcXHRcXHQgIHRvb2xzLlxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgQkFUTUFOX0FEVl9CQVRNQU5fVlxcbiAgMjE6XFx0XFx0Ym9vbCBcXFwiQi5BLlQuTS5BLk4uIFYgcHJvdG9jb2xcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIEJBVE1BTl9BRFYgXFx1MDAyNlxcdTAwMjYgIShDRkc4MDIxMT1tIFxcdTAwMjZcXHUwMDI2IEJBVE1BTl9BRFY9eSlcXG4gIDIzOlxcdFxcdGRlZmF1bHQgeVxcbiAgMjQ6XFx0XFx0aGVscFxcbiAgMjU6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBCLkEuVC5NLkEuTi4gViBwcm90b2NvbCwgdGhlIHN1Y2Nlc3NvclxcbiAgMjY6XFx0XFx0ICBvZiB0aGUgY3VycmVudGx5IHVzZWQgQi5BLlQuTS5BLk4uIElWIHByb3RvY29sLiBUaGUgbWFpblxcbiAgMjc6XFx0XFx0ICBjaGFuZ2VzIGluY2x1ZGUgc3BsaXR0aW5nIG9mIHRoZSBPR00gcHJvdG9jb2wgaW50byBhIG5laWdoYm9yXFxuICAyODpcXHRcXHQgIGRpc2NvdmVyeSBwcm90b2NvbCAoRWNobyBMb2NhdGlvbiBQcm90b2NvbCwgRUxQKSBhbmQgYSBuZXcgT0dNXFxuICAyOTpcXHRcXHQgIFByb3RvY29sIE9HTXYyIGZvciBmbG9vZGluZyBwcm90b2NvbCBpbmZvcm1hdGlvbiB0aHJvdWdoIHRoZVxcbiAgMzA6XFx0XFx0ICBuZXR3b3JrLCBhcyB3ZWxsIGFzIGEgdGhyb3VnaHB1dCBiYXNlZCBtZXRyaWMuXFxuICAzMTpcXHRcXHQgIEIuQS5ULk0uQS5OLiBWIGlzIGN1cnJlbnRseSBjb25zaWRlcmVkIGV4cGVyaW1lbnRhbCBhbmQgbm90XFxuICAzMjpcXHRcXHQgIGNvbXBhdGlibGUgdG8gQi5BLlQuTS5BLk4uIElWIG5ldHdvcmtzLlxcbiAgMzM6XFx0XFxuICAzNDpcXHRjb25maWcgQkFUTUFOX0FEVl9CTEFcXG4gIDM1OlxcdFxcdGJvb2wgXFxcIkJyaWRnZSBMb29wIEF2b2lkYW5jZVxcXCJcXG4gIDM2OlxcdFxcdGRlcGVuZHMgb24gQkFUTUFOX0FEViBcXHUwMDI2XFx1MDAyNiBJTkVUXFxuICAzNzpcXHRcXHRzZWxlY3QgQ1JDMTZcXG4gIDM4OlxcdFxcdHNlbGVjdCBORVRfQ1JDMzJDXFxuICAzOTpcXHRcXHRkZWZhdWx0IHlcXG4gIDQwOlxcdFxcdGhlbHBcXG4gIDQxOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBCTEEgKEJyaWRnZSBMb29wIEF2b2lkYW5jZSksIGEgbWVjaGFuaXNtXFxuICA0MjpcXHRcXHQgIHRvIGF2b2lkIEV0aGVybmV0IGZyYW1lcyBsb29waW5nIHdoZW4gbWVzaCBub2RlcyBhcmUgY29ubmVjdGVkXFxuICA0MzpcXHRcXHQgIHRvIGJvdGggdGhlIHNhbWUgTEFOIGFuZCB0aGUgc2FtZSBtZXNoLiBJZiB5b3Ugd2lsbCBuZXZlciB1c2VcXG4gIDQ0OlxcdFxcdCAgbW9yZSB0aGFuIG9uZSBtZXNoIG5vZGUgaW4gdGhlIHNhbWUgTEFOLCB5b3UgY2FuIHNhZmVseSByZW1vdmVcXG4gIDQ1OlxcdFxcdCAgdGhpcyBmZWF0dXJlIGFuZCBzYXZlIHNvbWUgc3BhY2UuXFxuICA0NjpcXHRcXG4gIDQ3OlxcdGNvbmZpZyBCQVRNQU5fQURWX0RBVFxcbiAgNDg6XFx0XFx0Ym9vbCBcXFwiRGlzdHJpYnV0ZWQgQVJQIFRhYmxlXFxcIlxcbiAgNDk6XFx0XFx0ZGVwZW5kcyBvbiBCQVRNQU5fQURWIFxcdTAwMjZcXHUwMDI2IElORVRcXG4gIDUwOlxcdFxcdGRlZmF1bHQgeVxcbiAgNTE6XFx0XFx0aGVscFxcbiAgNTI6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIERBVCAoRGlzdHJpYnV0ZWQgQVJQIFRhYmxlKSwgYSBESFQgYmFzZWRcXG4gIDUzOlxcdFxcdCAgbWVjaGFuaXNtIHRoYXQgaW5jcmVhc2VzIEFSUCByZWxpYWJpbGl0eSBvbiBzcGFyc2Ugd2lyZWxlc3NcXG4gIDU0OlxcdFxcdCAgbWVzaCBuZXR3b3Jrcy4gSWYgeW91IHRoaW5rIHRoYXQgeW91ciBuZXR3b3JrIGRvZXMgbm90IG5lZWRcXG4gIDU1OlxcdFxcdCAgdGhpcyBvcHRpb24geW91IGNhbiBzYWZlbHkgcmVtb3ZlIGl0IGFuZCBzYXZlIHNvbWUgc3BhY2UuXFxuICA1NjpcXHRcXG4gIDU3OlxcdGNvbmZpZyBCQVRNQU5fQURWX01DQVNUXFxuICA1ODpcXHRcXHRib29sIFxcXCJNdWx0aWNhc3Qgb3B0aW1pc2F0aW9uXFxcIlxcbiAgNTk6XFx0XFx0ZGVwZW5kcyBvbiBCQVRNQU5fQURWIFxcdTAwMjZcXHUwMDI2IElORVQgXFx1MDAyNlxcdTAwMjYgIShCUklER0U9bSBcXHUwMDI2XFx1MDAyNiBCQVRNQU5fQURWPXkpXFxuICA2MDpcXHRcXHRkZWZhdWx0IHlcXG4gIDYxOlxcdFxcdGhlbHBcXG4gIDYyOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgbXVsdGljYXN0IG9wdGltaXNhdGlvbiB3aGljaCBhaW1zIHRvXFxuICA2MzpcXHRcXHQgIHJlZHVjZSB0aGUgYWlyIG92ZXJoZWFkIHdoaWxlIGltcHJvdmluZyB0aGUgcmVsaWFiaWxpdHkgb2ZcXG4gIDY0OlxcdFxcdCAgbXVsdGljYXN0IG1lc3NhZ2VzLlxcbiAgNjU6XFx0XFxuICA2NjpcXHRjb25maWcgQkFUTUFOX0FEVl9ERUJVR1xcbiAgNjc6XFx0XFx0Ym9vbCBcXFwiQi5BLlQuTS5BLk4uIGRlYnVnZ2luZ1xcXCJcXG4gIDY4OlxcdFxcdGRlcGVuZHMgb24gQkFUTUFOX0FEVlxcbiAgNjk6XFx0XFx0aGVscFxcbiAgNzA6XFx0XFx0ICBUaGlzIGlzIGFuIG9wdGlvbiBmb3IgdXNlIGJ5IGRldmVsb3BlcnM7IG1vc3QgcGVvcGxlIHNob3VsZFxcbiAgNzE6XFx0XFx0ICBzYXkgTiBoZXJlLiBUaGlzIGVuYWJsZXMgY29tcGlsYXRpb24gb2Ygc3VwcG9ydCBmb3JcXG4gIDcyOlxcdFxcdCAgb3V0cHV0dGluZyBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gdG8gdGhlIHRyYWNpbmcgYnVmZmVyLiBUaGUgb3V0cHV0IGlzXFxuICA3MzpcXHRcXHQgIGNvbnRyb2xsZWQgdmlhIHRoZSBiYXRhZHYgbmV0ZGV2IHNwZWNpZmljIGxvZ19sZXZlbCBzZXR0aW5nLlxcbiAgNzQ6XFx0XFxuICA3NTpcXHRjb25maWcgQkFUTUFOX0FEVl9UUkFDSU5HXFxuICA3NjpcXHRcXHRib29sIFxcXCJCLkEuVC5NLkEuTi4gdHJhY2luZyBzdXBwb3J0XFxcIlxcbiAgNzc6XFx0XFx0ZGVwZW5kcyBvbiBCQVRNQU5fQURWXFxuICA3ODpcXHRcXHRkZXBlbmRzIG9uIEVWRU5UX1RSQUNJTkdcXG4gIDc5OlxcdFxcdGhlbHBcXG4gIDgwOlxcdFxcdCAgVGhpcyBpcyBhbiBvcHRpb24gZm9yIHVzZSBieSBkZXZlbG9wZXJzOyBtb3N0IHBlb3BsZSBzaG91bGRcXG4gIDgxOlxcdFxcdCAgc2F5IE4gaGVyZS4gU2VsZWN0IHRoaXMgb3B0aW9uIHRvIGdhdGhlciB0cmFjZXMgbGlrZSB0aGUgZGVidWdcXG4gIDgyOlxcdFxcdCAgbWVzc2FnZXMgdXNpbmcgdGhlIGdlbmVyaWMgdHJhY2luZyBpbmZyYXN0cnVjdHVyZSBvZiB0aGUga2VybmVsLlxcbiAgODM6XFx0XFx0ICBCQVRNQU5fQURWX0RFQlVHIG11c3QgYWxzbyBiZSBzZWxlY3RlZCB0byBnZXQgdHJhY2UgZXZlbnRzIGZvclxcbiAgODQ6XFx0XFx0ICBiYXRhZHZfZGJnLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxODo1OToyNy4zNDU0NjkyMzFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk4MDA2MDI3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGBCQVRNQU5fQURWX01DQVNUYC4gSXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpdCBoaW5nZXMgb24gYEJBVE1BTl9BRFZgLCBgSU5FVGAsIGFuZCB0aGUgaW52ZXJzZSBvZiBhIGNvbWJpbmF0aW9uIG9mIGBCUklER0U9bWAgYW5kIGBCQVRNQU5fQURWPXlgLiBTbywgcmVhbGx5LCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBgQkFUTUFOX0FEVmAgYW5kIGBCQVRNQU5fQURWX01DQVNUYCBhcmUgZW5hYmxlZCwgYW5kIGBJTkVUYCB3aGljaCBJIGFzc3VtZSBpcyB1c3VhbGx5IGFscmVhZHkgaGFuZGxlZC4gVGhhdCBzZWVtcyBsb2dpY2FsLlxuXG5Ob3csIGxldCdzIGdldCBpbnRvIHRoZSBjb2RlIGl0c2VsZi4gVGhlIHBhdGNoIHRvdWNoZXMgYGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcmAuIE9rYXksIGFuZCB0aGF0IGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBgYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzYC4gUmlnaHQsIGFuZCBgYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzYCBpcywgaW4gdHVybiwgY2FsbGVkIGJ5IGBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXRgIGFuZCBzb21lIG90aGVycy4gU28sIGBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXRgIHNlZW1zIGxpa2UgYSBrZXkgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCwgYXMgd2VsbCBhcyBgYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzYC4gV2FpdCBhIG1pbnV0ZSwgYGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2Vzc2AgYW5kIGBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXRgIGFyZSBib3RoIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzLCBzbyB0aGlzIGlzIGFuIEFQSSBlbnRyeSBwb2ludC4gTGV0J3Mgc3RhcnQgd2l0aCBgYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5NzksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxODo1OTozMy4zMjU1NDE4NzdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDUzNzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2Vzc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYmF0bWFuLWFkdi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JhdG1hbi1hZHYvYmF0X3Zfb2dtLmM9ODAxPWJhdGFkdl92X29nbV9wcm9jZXNzX3Blcl9vdXRpZihzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvYmF0X3Zfb2dtLmMtODIyLVxcdGlmIChzZXFub19hZ2UgXFx1MDAzZSAwIFxcdTAwMjZcXHUwMDI2IGlmX291dGdvaW5nID09IEJBVEFEVl9JRl9ERUZBVUxUKVxcbm5ldC9iYXRtYW4tYWR2L2JhdF92X29nbS5jOjgyMzpcXHRcXHRiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3MoYmF0X3ByaXYsIEJBVEFEVl9PR00yLCBvcmlnX25vZGUsXFxubmV0L2JhdG1hbi1hZHYvYmF0X3Zfb2dtLmMtODI0LVxcdFxcdFxcdFxcdFxcdCAgICAgICBOVUxMLFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jPTEwOTU9aW50IGJhdGFkdl9yZWN2X3VuaWNhc3RfdHZsdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jLTExMjMtXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jOjExMjQ6XFx0cmV0ID0gYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzKGJhdF9wcml2LCBCQVRBRFZfVU5JQ0FTVF9UVkxWLFxcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYy0xMTI1LVxcdFxcdFxcdFxcdFxcdCAgICAgTlVMTCwgc2tiLCB0dmx2X2J1ZmYsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmM9MTMzOT1pbnQgYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMtMTM3NS1cXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmM6MTM3NjpcXHRyZXQgPSBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3MoYmF0X3ByaXYsIEJBVEFEVl9NQ0FTVCwgTlVMTCwgc2tiLFxcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYy0xMzc3LVxcdFxcdFxcdFxcdFxcdCAgICAgdHZsdl9idWZmLCB0dmx2X2J1ZmZfbGVuKTtcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYz00NTg9c3RhdGljIGJvb2wgYmF0YWR2X3R2bHZfY29udGFpbmVyc19jb250YWluKHZvaWQgKnR2bHZfdmFsdWUsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNDkwLS8qKlxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYzo0OTE6ICogYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzKCkgLSBwYXJzZSB0aGUgZ2l2ZW4gdHZsdiBidWZmZXIgdG8gY2FsbCB0aGVcXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNDkyLSAqICBhcHByb3ByaWF0ZSBoYW5kbGVyc1xcbi0tXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTUwMi0gKi9cXG5uZXQvYmF0bWFuLWFkdi90dmx2LmM6NTAzOmludCBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3Moc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNTA0LVxcdFxcdFxcdFxcdCAgIHU4IHBhY2tldF90eXBlLFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jPTU4Mj12b2lkIGJhdGFkdl90dmx2X29nbV9yZWNlaXZlKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNTk3LVxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYzo1OTg6XFx0YmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzKGJhdF9wcml2LCBCQVRBRFZfSVZfT0dNLCBvcmlnX25vZGUsIE5VTEwsXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTU5OS1cXHRcXHRcXHRcXHQgICAgICAgdHZsdl92YWx1ZSwgdHZsdl92YWx1ZV9sZW4pO1xcbi0tXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5oPTQwPXZvaWQgYmF0YWR2X3R2bHZfaGFuZGxlcl91bnJlZ2lzdGVyKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5oLTQxLVxcdFxcdFxcdFxcdCAgICB1OCB0eXBlLCB1OCB2ZXJzaW9uKTtcXG5uZXQvYmF0bWFuLWFkdi90dmx2Lmg6NDI6aW50IGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2VzcyhzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuaC00My1cXHRcXHRcXHRcXHQgICB1OCBwYWNrZXRfdHlwZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTg6NTk6MzMuMzY5NTk5MjI0WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0NDA1ODYyNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBDYW5kaWRhdGUgQXNzZXNzbWVudDogQmF0bWFuLWFkdiBNdWx0aWNhc3QgUGFja2V0IEhhbmRsaW5nKipcblxuT2theSwgc28gSSd2ZSB6ZXJvZWQgaW4gb24gYSBwcm9taXNpbmcgZnV6emluZyB0YXJnZXQuIGBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3NgIGFuZCBgYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0YCBhcmUgdGhlIGtleSBmb2N1cyBzeW1ib2xzIGhlcmUuIFRoZSBzdW1tYXJ5IGluZGljYXRlcyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBoYXJkZW5lZCBgc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyYCBmdW5jdGlvbiBhbmQgaW50ZWdyYXRlcyBpdCBpbnRvIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgIHRvIGFkZHJlc3MgYSBwb3RlbnRpYWwgdHJhbnNwb3J0IGhlYWRlciBvZmZzZXQgY2FsY3VsYXRpb24gdnVsbmVyYWJpbGl0eSwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gbXVsdGljYXN0IHBhY2tldHMgd2l0aGluIGJhdG1hbi1hZHYuIEZ1bmN0aW9uYWxseSwgaXQncyBhIGNoYW5nZSB0byB0aGUgbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYywgYW5kIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHdoaWNoIGlzIGV4Y2VsbGVudCBmb3IgZnV6emluZy5cblxuTXkgYW5hbHlzaXMgY29uZmlybXMgdGhhdCBgYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0YCBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIGhhbmRsaW5nIGBCQVRBRFZfTUNBU1RgLCBjYWxsaW5nIGBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3NgIHdoaWNoIHVzZXMgYGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcmAuIEkgd2FudGVkIHRvIGJlIGNlcnRhaW4gYWJvdXQgdGhlIGNhbGwgaGllcmFyY2h5IHRvIGZ1bGx5IHVuZGVyc3RhbmQgaG93IHRoaXMgYXJlYSBvZiB0aGUgY29kZSBmdW5jdGlvbnMuXG5cbk5vdywgYSBxdWljayBjaGVjayBvZiB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIGBCQVRNQU5fQURWX01DQVNUYCBpcyBzdWZmaWNpZW50LiBJdCByZXF1aXJlcyBgQkFUTUFOX0FEVmAsIGBJTkVUYCwgYW5kIGV4Y2x1ZGVzIHRoZSBjYXNlIHdoZXJlIGBCUklER0U9bWAgYW5kIGBCQVRNQU5fQURWPXlgLiBUaGlzIG1lYW5zIHdlIG5lZWQgYm90aCBgQkFUTUFOX0FEVmAgYW5kIGBCQVRNQU5fQURWX01DQVNUYCBlbmFibGVkIGluIHRoZSBjb25maWcuXG5cbkFscmlnaHQsIHdpdGggdGhhdCB1bmRlcnN0YW5kaW5nLCBJJ20gY29uZmlkZW50IGluIHRhZ2dpbmcgdGhpcyBhcyBhIGZ1enppbmcgY2FuZGlkYXRlLiBJJ2xsIHV0aWxpemUgdGhlIHNldC1yZXN1bHRzIHRvb2wgdG8gZG9jdW1lbnQgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI0MjMsIk91dHB1dFRva2VucyI6MTM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE4OjU5OjQwLjgxMDE4NzYwNloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3ODM0NDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCQVRNQU5fQURWXCIsXG4gICAgXCJCQVRNQU5fQURWX01DQVNUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzXCIsXG4gICAgXCJiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgaGFyZGVuZWQgdmVyc2lvbiBvZiBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXIgYW5kIHVzZXMgaXQgaW4gYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyIHRvIGZpeCBhIHBvdGVudGlhbCBpc3N1ZSB3aXRoIHRyYW5zcG9ydCBoZWFkZXIgb2Zmc2V0IGNhbGN1bGF0aW9uIGZvciBtdWx0aWNhc3QgcGFja2V0cyBpbiBiYXRtYW4tYWR2LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkFUTUFOX0FEVlwiLFxuICAgIFwiQkFUTUFOX0FEVl9NQ0FTVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2Vzc1wiLFxuICAgIFwiYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGhhcmRlbmVkIHZlcnNpb24gb2Ygc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyIGFuZCB1c2VzIGl0IGluIGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlciB0byBmaXggYSBwb3RlbnRpYWwgaXNzdWUgd2l0aCB0cmFuc3BvcnQgaGVhZGVyIG9mZnNldCBjYWxjdWxhdGlvbiBmb3IgbXVsdGljYXN0IHBhY2tldHMgaW4gYmF0bWFuLWFkdi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxODo1OTo0MC44ODgwMjg1OTFaIiwiU2VxIjoyNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzkwMDA3OTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTg6NTk6NDAuODg4NDU5MTExWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEyMzg5NTczODkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgaGFyZGVuZWQgdmVyc2lvbiBvZiBgc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyYCAoYHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsYCkgd2hpY2ggY2hlY2tzIGZvciBpbnRlZ2VyIHRydW5jYXRpb24gYW5kIGludmFsaWQgb2Zmc2V0cyAoZS5nLiwgYH4wVWApIHdoZW4gc2V0dGluZyB0aGUgYHNrYi1cXHUwMDNldHJhbnNwb3J0X2hlYWRlcmAgZmllbGQuIEl0IHRoZW4gYXBwbGllcyB0aGlzIG5ldyBmdW5jdGlvbiBpbiBgYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyYCB0byBwcmV2ZW50IHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGNhdXNlZCBieSAxNi1iaXQgdHJ1bmNhdGlvbiBvZiB0aGUgdHJhbnNwb3J0IGhlYWRlciBvZmZzZXQuIFRoZXNlIGNoYW5nZXMgYXJlIGRlc2lnbmVkIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBvciB3cml0ZXMsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4uIFRoZXJlIGlzIG5vIGFsbG9jYXRpb24gb2YgbmV3IGJ1ZmZlcnMsIG5vIGNoYW5nZXMgdG8gaG93IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGhhbmRsZWQsIGFuZCBubyBzdHJ1Y3R1cmVzIGJlaW5nIGNvcGllZCB0byB1c2VyIHNwYWNlIHRoYXQgY291bGQgbGVhayB1bmluaXRpYWxpemVkIGJ5dGVzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGEwMzQ2Nzg2ZTY1YjlmNDU4MWM3OWMwOWE2OGJkZjU4YTQ3OTI4YjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxMCAxODo1ODo0NyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2tidWZmLmggYi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oXG5pbmRleCAyMmVkYTFkNTRhMGU4Li5kYmVjZWFmNWMzYjM5IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9za2J1ZmYuaFxuKysrIGIvaW5jbHVkZS9saW51eC9za2J1ZmYuaFxuQEAgLTMxMjYsNiArMzEyNiwzMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRza2ItXHUwMDNldHJhbnNwb3J0X2hlYWRlciArPSBvZmZzZXQ7XG4gfVxuIFxuKy8qKlxuKyAqIHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsIC0gY29uZGl0aW9uYWxseSBzZXQgdHJhbnNwb3J0IGhlYWRlclxuKyAqIEBza2I6IGJ1ZmZlciB0byBhbHRlclxuKyAqIEBvZmZzZXQ6IG9mZnNldCB0byBhZGQgdG8gc2tiLVx1MDAzZWRhdGFcbisgKlxuKyAqIEhhcmRlbmVkIHZlcnNpb24gb2Ygc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyKCkuXG4rICpcbisgKiBSZXR1cm5zOiB0cnVlIGlmIHRoZSBvcGVyYXRpb24gd2FzIGEgc3VjY2Vzcy5cbisgKi9cbitzdGF0aWMgaW5saW5lIGJvb2wgX19tdXN0X2NoZWNrXG4rc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3QgaW50IG9mZnNldClcbit7XG4rXHRsb25nIHRyYW5zcG9ydF9vZmZzZXQgPSBza2ItXHUwMDNlZGF0YSAtIHNrYi1cdTAwM2VoZWFkICsgb2Zmc2V0O1xuK1xuK1x0aWYgKHVubGlrZWx5KHRyYW5zcG9ydF9vZmZzZXQgIT1cbitcdFx0ICAgICAodHlwZW9mKHNrYi1cdTAwM2V0cmFuc3BvcnRfaGVhZGVyKSl0cmFuc3BvcnRfb2Zmc2V0KSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0aWYgKHVubGlrZWx5KHRyYW5zcG9ydF9vZmZzZXQgPT1cbitcdFx0ICAgICAodHlwZW9mKHNrYi1cdTAwM2V0cmFuc3BvcnRfaGVhZGVyKSl+MFUpKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRza2ItXHUwMDNldHJhbnNwb3J0X2hlYWRlciA9IHRyYW5zcG9ydF9vZmZzZXQ7XG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG4rXG4gc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyICpza2JfbmV0d29ya19oZWFkZXIoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRyZXR1cm4gc2tiLVx1MDAzZWhlYWQgKyBza2ItXHUwMDNlbmV0d29ya19oZWFkZXI7XG5kaWZmIC0tZ2l0IGEvbmV0L2JhdG1hbi1hZHYvdHZsdi5jIGIvbmV0L2JhdG1hbi1hZHYvdHZsdi5jXG5pbmRleCAxYzlmYjIxOTg1ZjZhLi5jMzg0ZGIxNmJjYWMxIDEwMDY0NFxuLS0tIGEvbmV0L2JhdG1hbi1hZHYvdHZsdi5jXG4rKysgYi9uZXQvYmF0bWFuLWFkdi90dmx2LmNcbkBAIC00MzMsOCArNDMzLDExIEBAIHN0YXRpYyBpbnQgYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXG4gXHRcdFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xuIFxuIFx0XHR0dmx2X29mZnNldCA9ICh1bnNpZ25lZCBjaGFyICopdHZsdl92YWx1ZSAtIHNrYi1cdTAwM2VkYXRhO1xuK1x0XHRpZiAoIXNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsKHNrYixcbitcdFx0XHRcdFx0XHQgICAgICB0dmx2X29mZnNldCArIHR2bHZfdmFsdWVfbGVuKSlcbitcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcbiBcdFx0c2tiX3NldF9uZXR3b3JrX2hlYWRlcihza2IsIHR2bHZfb2Zmc2V0KTtcbi1cdFx0c2tiX3NldF90cmFuc3BvcnRfaGVhZGVyKHNrYiwgdHZsdl9vZmZzZXQgKyB0dmx2X3ZhbHVlX2xlbik7XG4gXG4gXHRcdHJldHVybiB0dmx2X2hhbmRsZXItXHUwMDNlbWNhc3RfaGFuZGxlcihiYXRfcHJpdiwgc2tiKTtcbiBcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE4OjU5OjQwLjg4ODQ1OTk3MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjM4OTU0MzI5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoOiBBZGRyZXNzaW5nIEludGVnZXIgT3ZlcmZsb3cgaW4gU0tCIFRyYW5zcG9ydCBIZWFkZXIgU2V0dGluZyoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZS4gSXQncyByZXBsYWNpbmcgdGhlIHN0YW5kYXJkIGBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJgIHdpdGggYSBcImNhcmVmdWxcIiB2ZXJzaW9uLCBgc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWxgLCB3aXRoaW4gdGhlIGBuZXQvYmF0bWFuLWFkdi90dmx2LmNgIGZpbGUuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzLCBpcyB0aGlzIGFib3V0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5PyBObywgaXQgbG9va3MgbGlrZSBpdCdzIHB1cmVseSBhIGJvdW5kcyBjaGVjaywgYW4gb3ZlcmZsb3cgY2hlY2ssIHNwZWNpZmljYWxseS4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgY29kZTpcblxuYGBgY1xuc3RhdGljIGlubGluZSBib29sIF9fbXVzdF9jaGVja1xuc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3QgaW50IG9mZnNldClcbntcblx0bG9uZyB0cmFuc3BvcnRfb2Zmc2V0ID0gc2tiLVx1MDAzZWRhdGEgLSBza2ItXHUwMDNlaGVhZCArIG9mZnNldDtcblxuXHRpZiAodW5saWtlbHkodHJhbnNwb3J0X29mZnNldCAhPVxuXHRcdCAgICAgKHR5cGVvZihza2ItXHUwMDNldHJhbnNwb3J0X2hlYWRlcikpdHJhbnNwb3J0X29mZnNldCkpXG5cdFx0cmV0dXJuIGZhbHNlO1xuXG5cdGlmICh1bmxpa2VseSh0cmFuc3BvcnRfb2Zmc2V0ID09XG5cdFx0ICAgICAodHlwZW9mKHNrYi1cdTAwM2V0cmFuc3BvcnRfaGVhZGVyKSl+MFUpKVxuXHRcdHJldHVybiBmYWxzZTtcblxuXHRza2ItXHUwMDNldHJhbnNwb3J0X2hlYWRlciA9IHRyYW5zcG9ydF9vZmZzZXQ7XG5cdHJldHVybiB0cnVlO1xufVxuYGBgXG5cblRoaXMgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQgY2hlY2tzIGlmIHRoZSBgdHJhbnNwb3J0X29mZnNldGAgd291bGQgd3JhcCBhcm91bmQgd2hlbiBzdG9yZWQgaW4gYHNrYi1cdTAwM2V0cmFuc3BvcnRfaGVhZGVyYCwgd2hpY2ggaXMgYSBgdTE2YCBvciBgdW5zaWduZWQgaW50YCBkZXBlbmRpbmcgb24gdGhlIGFyY2hpdGVjdHVyZS4gSXQgYWxzbyBjaGVja3MgZm9yIHRoZSBpbnZhbGlkIG9mZnNldCwgYH4wVWAgKDB4ZmZmZiBmb3IgYSBgdTE2YCkuIFRoaXMgcHJldmVudHMgdGhlIGBza2ItXHUwMDNldHJhbnNwb3J0X2hlYWRlcmAgZnJvbSBiZWluZyBzZXQgdG8gYW4gaW52YWxpZCBvciBvdXQtb2YtYm91bmRzIG9mZnNldCwgbWl0aWdhdGluZyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQvd3JpdGUgbGF0ZXIgd2hlbiBgc2tiX3RyYW5zcG9ydF9oZWFkZXIoc2tiKWAgaXMgY2FsbGVkLlxuXG5Mb29raW5nIGF0IHRoZSBjb250ZXh0IGluIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgOlxuXG5gYGBjXG5cdFx0dHZsdl9vZmZzZXQgPSAodW5zaWduZWQgY2hhciAqKXR2bHZfdmFsdWUgLSBza2ItXHUwMDNlZGF0YTtcblx0XHRpZiAoIXNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsKHNrYixcblx0XHRcdFx0XHRcdCAgICAgIHR2bHZfb2Zmc2V0ICsgdHZsdl92YWx1ZV9sZW4pKVxuXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG5cblx0XHRza2Jfc2V0X25ldHdvcmtfaGVhZGVyKHNrYiwgdHZsdl9vZmZzZXQpO1xuYGBgXG5cbk9rYXksIGl0J3MganVzdCBzZXR0aW5nIHRoZSB0cmFuc3BvcnQgaGVhZGVyIGJhc2VkIG9uIGFuIG9mZnNldC4gSWYgdGhlIGBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJfY2FyZWZ1bGAgZmFpbHMsIGl0IHJldHVybnMgYC1FSU5WQUxgLiBUaGlzIGlzIGFsbCBhYm91dCBwcmV2ZW50aW5nIDE2LWJpdCB0cnVuY2F0aW9uIGxlYWRpbmcgdG8gT09CIGFjY2Vzc2VzLCBhbmQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmUncyBubyBuZXcgYWxsb2NhdGlvbiwgbm8gY2hhbmdlcyB0byBob3cgdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgdHJlYXRlZCwgYW5kIG5vIHN0cnVjdHVyZXMgYmVpbmcgY29waWVkIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBsZWFrIHVuaW5pdGlhbGl6ZWQgYnl0ZXMuIFRodXMsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpc24ndCBuZWNlc3NhcnkgaGVyZS4gVGhlIHBhdGNoIGFkZHJlc3NlcyBhIGtub3duIGludGVnZXIgb3ZlcmZsb3cgaXNzdWUgdGhhdCBLQVNBTiBhbHJlYWR5IGNhdGNoZXMuIE5lZWRzS01TQU4gPSBmYWxzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ4MSwiT3V0cHV0VG9rZW5zIjoxOTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NzgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxODo1OTo1My4yNzgwMDY3NDJaIiwiU2VxIjoyOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDkzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBoYXJkZW5lZCB2ZXJzaW9uIG9mIGBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJgIChgc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWxgKSB3aGljaCBjaGVja3MgZm9yIGludGVnZXIgdHJ1bmNhdGlvbiBhbmQgaW52YWxpZCBvZmZzZXRzIChlLmcuLCBgfjBVYCkgd2hlbiBzZXR0aW5nIHRoZSBgc2tiLVxcdTAwM2V0cmFuc3BvcnRfaGVhZGVyYCBmaWVsZC4gSXQgdGhlbiBhcHBsaWVzIHRoaXMgbmV3IGZ1bmN0aW9uIGluIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgIHRvIHByZXZlbnQgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgY2F1c2VkIGJ5IDE2LWJpdCB0cnVuY2F0aW9uIG9mIHRoZSB0cmFuc3BvcnQgaGVhZGVyIG9mZnNldC4gVGhlc2UgY2hhbmdlcyBhcmUgZGVzaWduZWQgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIHdyaXRlcywgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmUgaXMgbm8gYWxsb2NhdGlvbiBvZiBuZXcgYnVmZmVycywgbm8gY2hhbmdlcyB0byBob3cgdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgaGFuZGxlZCwgYW5kIG5vIHN0cnVjdHVyZXMgYmVpbmcgY29waWVkIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBsZWFrIHVuaW5pdGlhbGl6ZWQgYnl0ZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGhhcmRlbmVkIHZlcnNpb24gb2YgYHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcmAgKGBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJfY2FyZWZ1bGApIHdoaWNoIGNoZWNrcyBmb3IgaW50ZWdlciB0cnVuY2F0aW9uIGFuZCBpbnZhbGlkIG9mZnNldHMgKGUuZy4sIGB+MFVgKSB3aGVuIHNldHRpbmcgdGhlIGBza2ItXFx1MDAzZXRyYW5zcG9ydF9oZWFkZXJgIGZpZWxkLiBJdCB0aGVuIGFwcGxpZXMgdGhpcyBuZXcgZnVuY3Rpb24gaW4gYGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcmAgdG8gcHJldmVudCBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBjYXVzZWQgYnkgMTYtYml0IHRydW5jYXRpb24gb2YgdGhlIHRyYW5zcG9ydCBoZWFkZXIgb2Zmc2V0LiBUaGVzZSBjaGFuZ2VzIGFyZSBkZXNpZ25lZCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgb3Igd3JpdGVzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOLiBUaGVyZSBpcyBubyBhbGxvY2F0aW9uIG9mIG5ldyBidWZmZXJzLCBubyBjaGFuZ2VzIHRvIGhvdyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBoYW5kbGVkLCBhbmQgbm8gc3RydWN0dXJlcyBiZWluZyBjb3BpZWQgdG8gdXNlciBzcGFjZSB0aGF0IGNvdWxkIGxlYWsgdW5pbml0aWFsaXplZCBieXRlcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow4c94f[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-10 18:17:37 +0000 UTC FinishedAt: 2026-08-10 18:59:54 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dd057113ac7ba5bdd2aed3d9405305911152f911", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BATMAN_ADV", "BATMAN_ADV_MCAST" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dd057113ac7ba5bdd2aed3d9405305911152f911", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BATMAN_ADV", "BATMAN_ADV_MCAST" ], "series_id": "172f8ce8-d496-40b4-bd99-b1f4308e8e12" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "batadv_tvlv_containers_process", "batadv_recv_mcast_packet" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE4OjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JBVE1BTl9BRFYmIzM0OywKICAgICYjMzQ7QkFUTUFOX0FEVl9NQ0FTVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2VzcyYjMzQ7LAogICAgJiMzNDtiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgaGFyZGVuZWQgdmVyc2lvbiBvZiBgc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyYCAoYHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsYCkgd2hpY2ggY2hlY2tzIGZvciBpbnRlZ2VyIHRydW5jYXRpb24gYW5kIGludmFsaWQgb2Zmc2V0cyAoZS5nLiwgYH4wVWApIHdoZW4gc2V0dGluZyB0aGUgYHNrYi1cdTAwM2V0cmFuc3BvcnRfaGVhZGVyYCBmaWVsZC4gSXQgdGhlbiBhcHBsaWVzIHRoaXMgbmV3IGZ1bmN0aW9uIGluIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgIHRvIHByZXZlbnQgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgY2F1c2VkIGJ5IDE2LWJpdCB0cnVuY2F0aW9uIG9mIHRoZSB0cmFuc3BvcnQgaGVhZGVyIG9mZnNldC4gVGhlc2UgY2hhbmdlcyBhcmUgZGVzaWduZWQgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIHdyaXRlcywgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmUgaXMgbm8gYWxsb2NhdGlvbiBvZiBuZXcgYnVmZmVycywgbm8gY2hhbmdlcyB0byBob3cgdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgaGFuZGxlZCwgYW5kIG5vIHN0cnVjdHVyZXMgYmVpbmcgY29waWVkIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBsZWFrIHVuaW5pdGlhbGl6ZWQgYnl0ZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBoYXJkZW5lZCB2ZXJzaW9uIG9mIHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlciBhbmQgdXNlcyBpdCBpbiBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXIgdG8gZml4IGEgcG90ZW50aWFsIGlzc3VlIHdpdGggdHJhbnNwb3J0IGhlYWRlciBvZmZzZXQgY2FsY3VsYXRpb24gZm9yIG11bHRpY2FzdCBwYWNrZXRzIGluIGJhdG1hbi1hZHYuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxODo1ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGEwMzQ2Nzg2ZTY1YjlmNDU4MWM3OWMwOWE2OGJkZjU4YTQ3OTI4YjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxMCAxODo1ODo0NyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIGIvaW5jbHVkZS9saW51eC9za2J1ZmYuaFxuaW5kZXggMjJlZGExZDU0YTBlOC4uZGJlY2VhZjVjM2IzOSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvc2tidWZmLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvc2tidWZmLmhcbkBAIC0zMTI2LDYgJiM0MzszMTI2LDMyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHNrYi1cdTAwM2V0cmFuc3BvcnRfaGVhZGVyICYjNDM7PSBvZmZzZXQ7XG4gfVxuIFxuJiM0MzsvKipcbiYjNDM7ICogc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWwgLSBjb25kaXRpb25hbGx5IHNldCB0cmFuc3BvcnQgaGVhZGVyXG4mIzQzOyAqIEBza2I6IGJ1ZmZlciB0byBhbHRlclxuJiM0MzsgKiBAb2Zmc2V0OiBvZmZzZXQgdG8gYWRkIHRvIHNrYi1cdTAwM2VkYXRhXG4mIzQzOyAqXG4mIzQzOyAqIEhhcmRlbmVkIHZlcnNpb24gb2Ygc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyKCkuXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybnM6IHRydWUgaWYgdGhlIG9wZXJhdGlvbiB3YXMgYSBzdWNjZXNzLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGlubGluZSBib29sIF9fbXVzdF9jaGVja1xuJiM0Mztza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJfY2FyZWZ1bChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBpbnQgb2Zmc2V0KVxuJiM0Mzt7XG4mIzQzO1x0bG9uZyB0cmFuc3BvcnRfb2Zmc2V0ID0gc2tiLVx1MDAzZWRhdGEgLSBza2ItXHUwMDNlaGVhZCAmIzQzOyBvZmZzZXQ7XG4mIzQzO1xuJiM0MztcdGlmICh1bmxpa2VseSh0cmFuc3BvcnRfb2Zmc2V0ICE9XG4mIzQzO1x0XHQgICAgICh0eXBlb2Yoc2tiLVx1MDAzZXRyYW5zcG9ydF9oZWFkZXIpKXRyYW5zcG9ydF9vZmZzZXQpKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRpZiAodW5saWtlbHkodHJhbnNwb3J0X29mZnNldCA9PVxuJiM0MztcdFx0ICAgICAodHlwZW9mKHNrYi1cdTAwM2V0cmFuc3BvcnRfaGVhZGVyKSl+MFUpKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRza2ItXHUwMDNldHJhbnNwb3J0X2hlYWRlciA9IHRyYW5zcG9ydF9vZmZzZXQ7XG4mIzQzO1x0cmV0dXJuIHRydWU7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyICpza2JfbmV0d29ya19oZWFkZXIoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRyZXR1cm4gc2tiLVx1MDAzZWhlYWQgJiM0Mzsgc2tiLVx1MDAzZW5ldHdvcmtfaGVhZGVyO1xuZGlmZiAtLWdpdCBhL25ldC9iYXRtYW4tYWR2L3R2bHYuYyBiL25ldC9iYXRtYW4tYWR2L3R2bHYuY1xuaW5kZXggMWM5ZmIyMTk4NWY2YS4uYzM4NGRiMTZiY2FjMSAxMDA2NDRcbi0tLSBhL25ldC9iYXRtYW4tYWR2L3R2bHYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JhdG1hbi1hZHYvdHZsdi5jXG5AQCAtNDMzLDggJiM0Mzs0MzMsMTEgQEAgc3RhdGljIGludCBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXIoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbiBcdFx0XHRyZXR1cm4gTkVUX1JYX1NVQ0NFU1M7XG4gXG4gXHRcdHR2bHZfb2Zmc2V0ID0gKHVuc2lnbmVkIGNoYXIgKil0dmx2X3ZhbHVlIC0gc2tiLVx1MDAzZWRhdGE7XG4mIzQzO1x0XHRpZiAoIXNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsKHNrYixcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICAgdHZsdl9vZmZzZXQgJiM0MzsgdHZsdl92YWx1ZV9sZW4pKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4gXHRcdHNrYl9zZXRfbmV0d29ya19oZWFkZXIoc2tiLCB0dmx2X29mZnNldCk7XG4tXHRcdHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcihza2IsIHR2bHZfb2Zmc2V0ICYjNDM7IHR2bHZfdmFsdWVfbGVuKTtcbiBcbiBcdFx0cmV0dXJuIHR2bHZfaGFuZGxlci1cdTAwM2VtY2FzdF9oYW5kbGVyKGJhdF9wcml2LCBza2IpO1xuIFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE4OjU4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCQVRNQU5fQURWJiMzNDssCiAgICAmIzM0O0JBVE1BTl9BRFZfTUNBU1QmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3MmIzM0OywKICAgICYjMzQ7YmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBoYXJkZW5lZCB2ZXJzaW9uIG9mIHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlciBhbmQgdXNlcyBpdCBpbiBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXIgdG8gZml4IGEgcG90ZW50aWFsIGlzc3VlIHdpdGggdHJhbnNwb3J0IGhlYWRlciBvZmZzZXQgY2FsY3VsYXRpb24gZm9yIG11bHRpY2FzdCBwYWNrZXRzIGluIGJhdG1hbi1hZHYuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGEwMzQ2Nzg2ZTY1YjlmNDU4MWM3OWMwOWE2OGJkZjU4YTQ3OTI4YjAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAxMCAxODo1ODo0NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2tidWZmLmggYi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oCmluZGV4IDIyZWRhMWQ1NGEwZTguLmRiZWNlYWY1YzNiMzkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc2tidWZmLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9za2J1ZmYuaApAQCAtMzEyNiw2ICYjNDM7MzEyNiwzMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsCiAJc2tiLSZndDt0cmFuc3BvcnRfaGVhZGVyICYjNDM7PSBvZmZzZXQ7CiB9CiAKJiM0MzsvKioKJiM0MzsgKiBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJfY2FyZWZ1bCAtIGNvbmRpdGlvbmFsbHkgc2V0IHRyYW5zcG9ydCBoZWFkZXIKJiM0MzsgKiBAc2tiOiBidWZmZXIgdG8gYWx0ZXIKJiM0MzsgKiBAb2Zmc2V0OiBvZmZzZXQgdG8gYWRkIHRvIHNrYi0mZ3Q7ZGF0YQomIzQzOyAqCiYjNDM7ICogSGFyZGVuZWQgdmVyc2lvbiBvZiBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXIoKS4KJiM0MzsgKgomIzQzOyAqIFJldHVybnM6IHRydWUgaWYgdGhlIG9wZXJhdGlvbiB3YXMgYSBzdWNjZXNzLgomIzQzOyAqLwomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBfX211c3RfY2hlY2sKJiM0Mztza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJfY2FyZWZ1bChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBpbnQgb2Zmc2V0KQomIzQzO3sKJiM0MzsJbG9uZyB0cmFuc3BvcnRfb2Zmc2V0ID0gc2tiLSZndDtkYXRhIC0gc2tiLSZndDtoZWFkICYjNDM7IG9mZnNldDsKJiM0MzsKJiM0MzsJaWYgKHVubGlrZWx5KHRyYW5zcG9ydF9vZmZzZXQgIT0KJiM0MzsJCSAgICAgKHR5cGVvZihza2ItJmd0O3RyYW5zcG9ydF9oZWFkZXIpKXRyYW5zcG9ydF9vZmZzZXQpKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwlpZiAodW5saWtlbHkodHJhbnNwb3J0X29mZnNldCA9PQomIzQzOwkJICAgICAodHlwZW9mKHNrYi0mZ3Q7dHJhbnNwb3J0X2hlYWRlcikpfjBVKSkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJc2tiLSZndDt0cmFuc3BvcnRfaGVhZGVyID0gdHJhbnNwb3J0X29mZnNldDsKJiM0MzsJcmV0dXJuIHRydWU7CiYjNDM7fQomIzQzOwogc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyICpza2JfbmV0d29ya19oZWFkZXIoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlyZXR1cm4gc2tiLSZndDtoZWFkICYjNDM7IHNrYi0mZ3Q7bmV0d29ya19oZWFkZXI7CmRpZmYgLS1naXQgYS9uZXQvYmF0bWFuLWFkdi90dmx2LmMgYi9uZXQvYmF0bWFuLWFkdi90dmx2LmMKaW5kZXggMWM5ZmIyMTk4NWY2YS4uYzM4NGRiMTZiY2FjMSAxMDA2NDQKLS0tIGEvbmV0L2JhdG1hbi1hZHYvdHZsdi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9iYXRtYW4tYWR2L3R2bHYuYwpAQCAtNDMzLDggJiM0Mzs0MzMsMTEgQEAgc3RhdGljIGludCBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXIoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdiwKIAkJCXJldHVybiBORVRfUlhfU1VDQ0VTUzsKIAogCQl0dmx2X29mZnNldCA9ICh1bnNpZ25lZCBjaGFyICopdHZsdl92YWx1ZSAtIHNrYi0mZ3Q7ZGF0YTsKJiM0MzsJCWlmICghc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWwoc2tiLAomIzQzOwkJCQkJCSAgICAgIHR2bHZfb2Zmc2V0ICYjNDM7IHR2bHZfdmFsdWVfbGVuKSkKJiM0MzsJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKIAkJc2tiX3NldF9uZXR3b3JrX2hlYWRlcihza2IsIHR2bHZfb2Zmc2V0KTsKLQkJc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyKHNrYiwgdHZsdl9vZmZzZXQgJiM0MzsgdHZsdl92YWx1ZV9sZW4pOwogCiAJCXJldHVybiB0dmx2X2hhbmRsZXItJmd0O21jYXN0X2hhbmRsZXIoYmF0X3ByaXYsIHNrYik7CiAJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxODo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDg0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYmF0bWFuLWFkdiBQYXRjaCoqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBhIG5ldyBwYXRjaCwgYW5kIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgaW50cm9kdWNpbmcgYHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsYCBpbiBgaW5jbHVkZS9saW51eC9za2J1ZmYuaGAuIFRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgdXNlcyBpdCB3aXRoaW4gYG5ldC9iYXRtYW4tYWR2L3R2bHYuY2AsIGluc2lkZSB0aGUgYGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcmAgZnVuY3Rpb24uIE15IGZpcnN0IHRob3VnaHQgaXMsIHRoaXMgd2FycmFudHMgYSBjbG9zZXIgbG9vayBhdCBib3RoIGBuZXQvYmF0bWFuLWFkdi90dmx2LmNgIGFuZCBzcGVjaWZpY2FsbHkgYXQgdGhlIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgIGZ1bmN0aW9uIGl0c2VsZi4gSSBzZWUgdGhpcyBpcyBwYXJ0IG9mIGJhdG1hbi1hZHYuCgpHaXZlbiB0aGF0IGJhdG1hbi1hZHYgaXMgYSBuZXR3b3JrIHByb3RvY29sLCBJIG5lZWQgdG8gY29uc2lkZXIgcG90ZW50aWFsIGZ1enppbmcgdmVjdG9ycy4gQ2FuIEkgcmVhY2ggaXQgd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudD8gWWVzLCBzaW5jZSBpdHMgYSBuZXR3b3JrIHByb3RvY29sLCBJIHNob3VsZCBiZSBhYmxlIHRvIGZ1enogaXQgdXNpbmcgbmV0bGluayBvciBieSBpbmplY3RpbmcgcGFja2V0cy4gVGhpcyBzdWdnZXN0cyBhIGdvb2QgYXZlbnVlIGZvciB2dWxuZXJhYmlsaXR5IGRpc2NvdmVyeSBpZiB0aGUgcGF0Y2ggaW50cm9kdWNlcyB1bmV4cGVjdGVkIGJlaGF2aW9yLgoKTmV4dCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gQSBxdWljayBjaGVjayBvZiBgbmV0L2JhdG1hbi1hZHYvS2NvbmZpZ2Agd2lsbCByZXZlYWwgdGhlIGNvbmZpZ3VyYXRpb24gc3ltYm9sIOKAkyBJJiMzOTttIGJldHRpbmcgb24gYEJBVE1BTl9BRFZgLCBidXQgSSYjMzk7bGwgY29uZmlybS4KCk5vdywgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgY29kZS4gVGltZSB0byBzY3J1dGluaXplIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgIHdpdGhpbiBgbmV0L2JhdG1hbi1hZHYvdHZsdi5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgYHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsYCBpcyBiZWluZyB1c2VkIGluIHRoaXMgY29udGV4dC4gUG90ZW50aWFsIG9mZi1ieS1vbmUgZXJyb3JzIG9yIG1pc3VzZSBvZiB0aGUgZnVuY3Rpb24gYXJlIGltbWVkaWF0ZWx5IG9uIG15IHJhZGFyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE4OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JhdGFkdl90dmx2X2NhbGxfaGFuZGxlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9iYXRtYW4tYWR2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYmF0bWFuLWFkdi90dmx2LmM9MzI5PWludCBiYXRhZHZfdHZsdl9jb250YWluZXJfb2dtX2FwcGVuZChzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxuLS1cbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy0zNzUtLyoqXG5uZXQvYmF0bWFuLWFkdi90dmx2LmM6Mzc2OiAqIGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcigpIC0gcGFyc2UgdGhlIGdpdmVuIHR2bHYgYnVmZmVyIHRvIGNhbGwgdGhlXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtMzc3LSAqICBhcHByb3ByaWF0ZSBoYW5kbGVyc1xuLS1cbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy0zODgtICovXG5uZXQvYmF0bWFuLWFkdi90dmx2LmM6Mzg5OnN0YXRpYyBpbnQgYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtMzkwLVx0XHRcdFx0ICAgIHN0cnVjdCBiYXRhZHZfdHZsdl9oYW5kbGVyICp0dmx2X2hhbmRsZXIsXG4tLVxubmV0L2JhdG1hbi1hZHYvdHZsdi5jPTUwMz1pbnQgYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXG4tLVxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTUzNS1cbm5ldC9iYXRtYW4tYWR2L3R2bHYuYzo1MzY6XHRcdHJldCB8PSBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXIoYmF0X3ByaXYsIHR2bHZfaGFuZGxlcixcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy01MzctXHRcdFx0XHRcdFx0cGFja2V0X3R5cGUsIG9yaWdfbm9kZSwgc2tiLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE4OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MzMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb246CgoqKlVuZGVyc3RhbmRpbmcgdGhlIGJhdGFkdl90dmx2IENvZGVmbG93KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyYC4gVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBkZWNsYXJlZCBgc3RhdGljYCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBhbiBpbnRlcm5hbCBmdW5jdGlvbiwgbWVhbnQgdG8gYmUgdXNlZCBvbmx5IHdpdGhpbiB0aGUgc2FtZSBjb21waWxhdGlvbiB1bml0LiBUaGF0IHRlbGxzIG1lIGl0JiMzOTtzIGxpa2VseSBhIGhlbHBlciBmdW5jdGlvbi4gTm93LCB0aGUgZGVzY3JpcHRpb24gc2F5cyBpdCYjMzk7cyBjYWxsZWQgYnkgYGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2Vzc2AuIEdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbnMsIG15IGd1ZXNzIGlzIHRoYXQgYHR2bHZgIHJlZmVycyB0byAmIzM0O1R5cGUtTGVuZ3RoLVZhbHVlJiMzNDsgZGF0YSwgYSBjb21tb24gZm9ybWF0IGluIG5ldHdvcmtpbmcgcHJvdG9jb2xzLiBUaGVyZWZvcmUgYGJhdGFkdmAgbGlrZWx5IHN0YW5kcyBmb3IgJiMzNDtiYXRtYW4tYWR2JiMzNDssIHRoZSBtZXNoIHJvdXRpbmcgcHJvdG9jb2wuIFRoaXMgY29uZmlybXMgdGhhdCB0aGVzZSBmdW5jdGlvbnMgcmVsYXRlIHRvIGJhdG1hbi1hZHYuIEdpdmVuIHRoZSBjb250ZXh0LCBJIHNob3VsZCBmb2N1cyBvbiBob3cgdGhpcyBmdW5jdGlvbiB3b3JrcyB3aXRoaW4gaXRzIGNhbGxpbmcgZnVuY3Rpb24gaW4gb3JkZXIgdG8gZ3Jhc3AgaXRzIHB1cnBvc2Ugd2l0aGluIHRoZSBvdmVyYWxsIHByb3RvY29sJiMzOTtzIGxvZ2ljLiBMZXQmIzM5O3MgZGVsdmUgaW50byBgYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzYCB0byB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxODo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYmF0bWFuLWFkdi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JhdG1hbi1hZHYvYmF0X3Zfb2dtLmM9ODAxPWJhdGFkdl92X29nbV9wcm9jZXNzX3Blcl9vdXRpZihzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxuLS1cbm5ldC9iYXRtYW4tYWR2L2JhdF92X29nbS5jLTgyMi1cdGlmIChzZXFub19hZ2UgXHUwMDNlIDAgXHUwMDI2XHUwMDI2IGlmX291dGdvaW5nID09IEJBVEFEVl9JRl9ERUZBVUxUKVxubmV0L2JhdG1hbi1hZHYvYmF0X3Zfb2dtLmM6ODIzOlx0XHRiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3MoYmF0X3ByaXYsIEJBVEFEVl9PR00yLCBvcmlnX25vZGUsXG5uZXQvYmF0bWFuLWFkdi9iYXRfdl9vZ20uYy04MjQtXHRcdFx0XHRcdCAgICAgICBOVUxMLFxuLS1cbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYz0xMDk1PWludCBiYXRhZHZfcmVjdl91bmljYXN0X3R2bHYoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMtMTEyMy1cbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYzoxMTI0Olx0cmV0ID0gYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzKGJhdF9wcml2LCBCQVRBRFZfVU5JQ0FTVF9UVkxWLFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jLTExMjUtXHRcdFx0XHRcdCAgICAgTlVMTCwgc2tiLCB0dmx2X2J1ZmYsXG4tLVxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jPTEzMzk9aW50IGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYy0xMzc1LVxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jOjEzNzY6XHRyZXQgPSBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3MoYmF0X3ByaXYsIEJBVEFEVl9NQ0FTVCwgTlVMTCwgc2tiLFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jLTEzNzctXHRcdFx0XHRcdCAgICAgdHZsdl9idWZmLCB0dmx2X2J1ZmZfbGVuKTtcbi0tXG5uZXQvYmF0bWFuLWFkdi90dmx2LmM9NDU4PXN0YXRpYyBib29sIGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfY29udGFpbih2b2lkICp0dmx2X3ZhbHVlLFxuLS1cbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy00OTAtLyoqXG5uZXQvYmF0bWFuLWFkdi90dmx2LmM6NDkxOiAqIGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2VzcygpIC0gcGFyc2UgdGhlIGdpdmVuIHR2bHYgYnVmZmVyIHRvIGNhbGwgdGhlXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNDkyLSAqICBhcHByb3ByaWF0ZSBoYW5kbGVyc1xuLS1cbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy01MDItICovXG5uZXQvYmF0bWFuLWFkdi90dmx2LmM6NTAzOmludCBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3Moc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy01MDQtXHRcdFx0XHQgICB1OCBwYWNrZXRfdHlwZSxcbi0tXG5uZXQvYmF0bWFuLWFkdi90dmx2LmM9NTgyPXZvaWQgYmF0YWR2X3R2bHZfb2dtX3JlY2VpdmUoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbi0tXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNTk3LVxubmV0L2JhdG1hbi1hZHYvdHZsdi5jOjU5ODpcdGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2VzcyhiYXRfcHJpdiwgQkFUQURWX0lWX09HTSwgb3JpZ19ub2RlLCBOVUxMLFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTU5OS1cdFx0XHRcdCAgICAgICB0dmx2X3ZhbHVlLCB0dmx2X3ZhbHVlX2xlbik7XG4tLVxubmV0L2JhdG1hbi1hZHYvdHZsdi5oPTQwPXZvaWQgYmF0YWR2X3R2bHZfaGFuZGxlcl91bnJlZ2lzdGVyKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXG5uZXQvYmF0bWFuLWFkdi90dmx2LmgtNDEtXHRcdFx0XHQgICAgdTggdHlwZSwgdTggdmVyc2lvbik7XG5uZXQvYmF0bWFuLWFkdi90dmx2Lmg6NDI6aW50IGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2VzcyhzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxubmV0L2JhdG1hbi1hZHYvdHZsdi5oLTQzLVx0XHRcdFx0ICAgdTggcGFja2V0X3R5cGUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTg6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYzNAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBjb2RlIHNuaXBwZXRzOgoKKipGb2N1c2luZyBvbiBLZXkgRW50cnkgUG9pbnRzIGZvciBQYWNrZXQgSGFuZGxpbmcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHplcm8gaW4gb24gaG93IHRoaXMgQmF0bWFuLWFkdiBpbXBsZW1lbnRhdGlvbiBoYW5kbGVzIGluY29taW5nIHBhY2tldHMuIEkgc2VlIGEgZmV3IGZ1bmN0aW9ucyB0aGF0IGltbWVkaWF0ZWx5IGdyYWIgbXkgYXR0ZW50aW9uIGFzIHBvdGVudGlhbCBlbnRyeSBwb2ludHM6IGBiYXRhZHZfcmVjdl91bmljYXN0X3R2bHZgLCBgYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0YCwgYGJhdGFkdl90dmx2X29nbV9yZWNlaXZlYCwgYW5kIGBiYXRhZHZfdl9vZ21fcHJvY2Vzc19wZXJfb3V0aWZgLiBHaXZlbiBteSBleHBlcnRpc2UsIG15IGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgdGhlIHByaW1hcnkgaG9va3MgZm9yIGRpZmZlcmVudCB0eXBlcyBvZiBwYWNrZXQgcHJvY2Vzc2luZy4gSSYjMzk7bSB0aGlua2luZyBJJiMzOTtsbCBzdGFydCBieSBkaXZpbmcgaW50byB0aGUgbG9naWMgb2YgYGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldGAgYW5kIGBiYXRhZHZfcmVjdl91bmljYXN0X3R2bHZgIGZpcnN0LiBUaGV5IHNlZW0gdG8gcmVwcmVzZW50IHRoZSBjb3JlIGRpc3RpbmN0aW9uczogb25lIGZvciBtdWx0aWNhc3QgdHJhZmZpYyBhbmQgdGhlIG90aGVyIGZvciB1bmljYXN0LCB3aXRoIHRoZSB1c2Ugb2YgVExWIChUeXBlLUxlbmd0aC1WYWx1ZSkgc3RydWN0dXJlcyBzdWdnZXN0aW5nIGEgZmxleGlibGUgZGF0YSBmb3JtYXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGRpZmZlcmVudGlhdGVzIGJldHdlZW4gdGhlc2UgYW5kIHRoZW4gcm91dGVzIHRoZW0gdG8gdGhlIGFwcHJvcHJpYXRlIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYmF0bWFuLWFkdi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JhdG1hbi1hZHYvbWFpbi5jPTUwND1zdGF0aWMgdm9pZCBiYXRhZHZfcmVjdl9oYW5kbGVyX2luaXQodm9pZClcbi0tXG5uZXQvYmF0bWFuLWFkdi9tYWluLmMtNTM3LVx0LyogbXVsdGljYXN0IHBhY2tldCAqL1xubmV0L2JhdG1hbi1hZHYvbWFpbi5jOjUzODpcdGJhdGFkdl9yeF9oYW5kbGVyW0JBVEFEVl9NQ0FTVF0gPSBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQ7XG5uZXQvYmF0bWFuLWFkdi9tYWluLmMtNTM5LVxuLS1cbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYz0xMjEyPWludCBiYXRhZHZfcmVjdl9iY2FzdF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMtMTMyOC0vKipcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYzoxMzI5OiAqIGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldCgpIC0gcHJvY2VzcyByZWNlaXZlZCBiYXRtYW4tYWR2IG11bHRpY2FzdCBwYWNrZXRcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYy0xMzMwLSAqIEBza2I6IHRoZSByZWNlaXZlZCBiYXRtYW4tYWR2IG11bHRpY2FzdCBwYWNrZXRcbi0tXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMtMTMzOC0gKi9cbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYzoxMzM5OmludCBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYy0xMzQwLVx0XHRcdCAgICAgc3RydWN0IGJhdGFkdl9oYXJkX2lmYWNlICpyZWN2X2lmKVxuLS1cbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuaD0yOD1pbnQgYmF0YWR2X3JlY3ZfYmNhc3RfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5oLTMwLSNpZmRlZiBDT05GSUdfQkFUTUFOX0FEVl9NQ0FTVFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5oOjMxOmludCBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuaC0zMi1cdFx0XHQgICAgIHN0cnVjdCBiYXRhZHZfaGFyZF9pZmFjZSAqcmVjdl9pZik7XG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmgtMzMtI2Vsc2Vcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuaDozNDpzdGF0aWMgaW5saW5lIGludCBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuaC0zNS1cdFx0XHRcdFx0ICAgc3RydWN0IGJhdGFkdl9oYXJkX2lmYWNlICpyZWN2X2lmKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1MjkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCYXRtYW4tYWR2IFBhY2tldCBIYW5kbGluZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYmF0bWFuLWFkdi4gIEl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGl0IHNlZW1zLiBXZSYjMzk7dmUgZ290IGBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXRgIHJlZ2lzdGVyZWQgZm9yIGBCQVRBRFZfTUNBU1RgIGFuZCBgYmF0YWR2X3JlY3ZfdW5pY2FzdF90dmx2YCBmb3IgYEJBVEFEVl9VTklDQVNUX1RWTFZgLiAgU3RhbmRhcmQgc3R1ZmYsIHRoZXNlIGFyZSB0aGUgcGFja2V0IGhhbmRsZXJzIHdpdGhpbiB0aGUgYmF0bWFuLWFkdiBmcmFtZXdvcmssIHRoZSBjb3JlIG9mIHRoZSBwYWNrZXQgcHJvY2Vzc2luZy4KClRoZSBjaGFuZ2UgaXRzZWxmIGlzIGluIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgLCBhbmQgaXQmIzM5O3MgdXNpbmcgYHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsYC4gIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyBhYm91dCBob3cgdGhlIHRyYW5zcG9ydCBoZWFkZXIgb2Zmc2V0IGlzIGNhbGN1bGF0ZWQgaW4gdGhlIGBza2JgLiAgVGhpcyBpcyBhICpmdW5jdGlvbmFsKiBmaXggdGhlbiwgd2hpY2ggbWVhbnMgaXQgYWRkcmVzc2VzIGEgY29ycmVjdG5lc3MgaXNzdWUgaW4gdGhlIGV4aXN0aW5nIGNvZGUuIEludGVyZXN0aW5nLiBEZWZpbml0ZWx5IHdvcnRoIGEgdGhvcm91Z2ggZnV6emluZyBjYW1wYWlnbiB0byBzZWUgaWYgdGhpcyBjaGFuZ2UgcHJvcGVybHkgYWRkcmVzc2VzIHRoZSBpc3N1ZSB3aXRob3V0IGludHJvZHVjaW5nIGFueSByZWdyZXNzaW9ucyBvciBuZXcgdnVsbmVyYWJpbGl0aWVzLgoKSSBzaG91bGQgdmVyaWZ5IHRoZSBjb25maWcgZGVwZW5kZW5jaWVzLCBub3cuIEkga25vdyBgQkFUTUFOX0FEVmAgaXMgcmVxdWlyZWQsIG9idmlvdXNseS4gQnV0IGRvZXMgdGhpcyBzcGVjaWZpYyBtb2RpZmljYXRpb24gcmVxdWlyZSBgQkFUTUFOX0FEVl9NQ0FTVGAgdG8gYmUgZW5hYmxlZD8gU2luY2UgYGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcmAgcHJvY2Vzc2VzIGJvdGggdW5pY2FzdCBhbmQgbWNhc3QgdHZsdiBwYWNrZXRzLCBpdCBzaG91bGQgYmUgZmluZS4gSSYjMzk7bGwgdGFrZSBhIGxvb2sgYXQgYGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcmAgYWdhaW4gdG8gYmUgc3VyZSB0aGF0IEkgZGlkbiYjMzk7dCBtaXNzIHNvbWV0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JhdG1hbi1hZHYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9iYXRtYW4tYWR2L3R2bHYuYz0zMjk9aW50IGJhdGFkdl90dmx2X2NvbnRhaW5lcl9vZ21fYXBwZW5kKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXG4tLVxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTM3NS0vKipcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYzozNzY6ICogYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyKCkgLSBwYXJzZSB0aGUgZ2l2ZW4gdHZsdiBidWZmZXIgdG8gY2FsbCB0aGVcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy0zNzctICogIGFwcHJvcHJpYXRlIGhhbmRsZXJzXG4tLVxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTM4OC0gKi9cbm5ldC9iYXRtYW4tYWR2L3R2bHYuYzozODk6c3RhdGljIGludCBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXIoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy0zOTAtXHRcdFx0XHQgICAgc3RydWN0IGJhdGFkdl90dmx2X2hhbmRsZXIgKnR2bHZfaGFuZGxlcixcbi0tXG5uZXQvYmF0bWFuLWFkdi90dmx2LmM9NTAzPWludCBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3Moc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbi0tXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNTM1LVxubmV0L2JhdG1hbi1hZHYvdHZsdi5jOjUzNjpcdFx0cmV0IHw9IGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcihiYXRfcHJpdiwgdHZsdl9oYW5kbGVyLFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTUzNy1cdFx0XHRcdFx0XHRwYWNrZXRfdHlwZSwgb3JpZ19ub2RlLCBza2IsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MzkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhlIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgIGltcGxlbWVudGF0aW9uOgoKKipEaXZpbmcgaW50byBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXIqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIExldCYjMzk7cyBkaWcgaW50byB0aGUgYGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcmAgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoaXMgY3J1Y2lhbCBmdW5jdGlvbiB3b3Jrcy4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGlzIGlzIHdoZXJlIHRoZSBtZWF0IG9mIGhhbmRsaW5nIHNwZWNpZmljIFR5cGUtTGVuZ3RoLVZhbHVlIChUTFYpIG1lc3NhZ2VzIHdpdGhpbiBCQVRNQU4tYWR2IGxpa2VseSByZXNpZGVzLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlIGlucHV0IHBhcmFtZXRlcnMsIHF1aWNrbHkgdW5kZXJzdGFuZGluZyB3aGF0IGNvbnRleHQgaXMgYmVpbmcgcGFzc2VkIGluLiBUaGVuIEkmIzM5O2xsIGZvY3VzIG9uIHRoZSBjb3JlIGxvZ2ljOiB0aGUgY29uZGl0aW9uYWwgYnJhbmNoZXMsIGFueSBkYXRhIHBhcnNpbmcsIGFuZCB1bHRpbWF0ZWx5LCBob3cgdGhlIGZ1bmN0aW9uIHJlYWN0cyB0byB0aGUgcmVjZWl2ZWQgVExWLiBJ4oCZbGwga2VlcCBhbiBleWUgb3V0IGZvciBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybjogbWVtb3J5IGFsbG9jYXRpb24sIGxvY2tpbmcsIGFueSBjb25jdXJyZW5jeSBpc3N1ZXMsIGFuZCBvZiBjb3Vyc2UsIGVycm9yIGhhbmRsaW5nLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBvdmVyYWxsIGZsb3cgLSB3aGF0IGFyZSB0aGUgZGlmZmVyZW50IG1lc3NhZ2UgdHlwZXMgaGFuZGxlZCBoZXJlPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgcGVyZm9ybWFuY2UgYm90dGxlbmVja3M/IEkmIzM5O2xsIGFsc28gYmUgY29uc2lkZXJpbmcgaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggdGhlIG92ZXJhbGwgQkFUTUFOLWFkdiBzdGF0ZSBtYWNoaW5lLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGRhdGEgaXMgYmVpbmcgdXBkYXRlZCwgaG93IGl0JiMzOTtzIGJlaW5nIHVwZGF0ZWQsIGFuZCB3aGVuLiBJIGV4cGVjdCB0byBmaW5kIHNvbWUgaW50ZXJlc3RpbmcgbG9naWMgaGVyZSwgcHJvYmFibHkgaW52b2x2aW5nIG5laWdoYm9yIGRpc2NvdmVyeSwgdG9wb2xvZ3kgdXBkYXRlcywgYW5kIFFvUyBtYW5hZ2VtZW50LiBMZXQmIzM5O3Mgc2VlIGlmIG15IGluaXRpYWwgYXNzdW1wdGlvbnMgYXJlIGNvcnJlY3QuIFRoZSByZWFsIGNoYWxsZW5nZSBpcyBhbHdheXMgdG8gdW5kZXJzdGFuZCB0aGUgZGVzaWduIGNob2ljZXMgbWFkZSBoZXJlLCBzbyBJJiMzOTtsbCBiZSBxdWVzdGlvbmluZyB3aHkgdGhlIGRldmVsb3BlcnMgY2hvc2UgdGhpcyBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBhbmQgY29uc2lkZXIgcG9zc2libGUgYWx0ZXJuYXRpdmVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9iYXRtYW4tYWR2L3R2bHYuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM4OSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzg5Olx0c3RhdGljIGludCBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXIoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbiAzOTA6XHRcdFx0XHRcdCAgICBzdHJ1Y3QgYmF0YWR2X3R2bHZfaGFuZGxlciAqdHZsdl9oYW5kbGVyLFxuIDM5MTpcdFx0XHRcdFx0ICAgIHU4IHBhY2tldF90eXBlLFxuIDM5MjpcdFx0XHRcdFx0ICAgIHN0cnVjdCBiYXRhZHZfb3JpZ19ub2RlICpvcmlnX25vZGUsXG4gMzkzOlx0XHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdm9pZCAqdHZsdl92YWx1ZSxcbiAzOTQ6XHRcdFx0XHRcdCAgICB1MTYgdHZsdl92YWx1ZV9sZW4pXG4gMzk1Olx0e1xuIDM5NjpcdFx0dW5zaWduZWQgaW50IHR2bHZfb2Zmc2V0O1xuIDM5NzpcdFx0dTggKnNyYywgKmRzdDtcbiAzOTg6XHRcbiAzOTk6XHRcdGlmICghdHZsdl9oYW5kbGVyKVxuIDQwMDpcdFx0XHRyZXR1cm4gTkVUX1JYX1NVQ0NFU1M7XG4gNDAxOlx0XG4gNDAyOlx0XHRzd2l0Y2ggKHBhY2tldF90eXBlKSB7XG4gNDAzOlx0XHRjYXNlIEJBVEFEVl9JVl9PR006XG4gNDA0Olx0XHRjYXNlIEJBVEFEVl9PR00yOlxuIDQwNTpcdFx0XHRpZiAoIXR2bHZfaGFuZGxlci1cdTAwM2VvZ21faGFuZGxlcilcbiA0MDY6XHRcdFx0XHRyZXR1cm4gTkVUX1JYX1NVQ0NFU1M7XG4gNDA3Olx0XG4gNDA4Olx0XHRcdGlmICghb3JpZ19ub2RlKVxuIDQwOTpcdFx0XHRcdHJldHVybiBORVRfUlhfU1VDQ0VTUztcbiA0MTA6XHRcbiA0MTE6XHRcdFx0dHZsdl9oYW5kbGVyLVx1MDAzZW9nbV9oYW5kbGVyKGJhdF9wcml2LCBvcmlnX25vZGUsXG4gNDEyOlx0XHRcdFx0XHRcdCAgQkFUQURWX05PX0ZMQUdTLFxuIDQxMzpcdFx0XHRcdFx0XHQgIHR2bHZfdmFsdWUsIHR2bHZfdmFsdWVfbGVuKTtcbiA0MTQ6XHRcdFx0YnJlYWs7XG4gNDE1Olx0XHRjYXNlIEJBVEFEVl9VTklDQVNUX1RWTFY6XG4gNDE2Olx0XHRcdGlmICghc2tiKVxuIDQxNzpcdFx0XHRcdHJldHVybiBORVRfUlhfU1VDQ0VTUztcbiA0MTg6XHRcbiA0MTk6XHRcdFx0aWYgKCF0dmx2X2hhbmRsZXItXHUwMDNldW5pY2FzdF9oYW5kbGVyKVxuIDQyMDpcdFx0XHRcdHJldHVybiBORVRfUlhfU1VDQ0VTUztcbiA0MjE6XHRcbiA0MjI6XHRcdFx0c3JjID0gKChzdHJ1Y3QgYmF0YWR2X3VuaWNhc3RfdHZsdl9wYWNrZXQgKilza2ItXHUwMDNlZGF0YSktXHUwMDNlc3JjO1xuIDQyMzpcdFx0XHRkc3QgPSAoKHN0cnVjdCBiYXRhZHZfdW5pY2FzdF90dmx2X3BhY2tldCAqKXNrYi1cdTAwM2VkYXRhKS1cdTAwM2Vkc3Q7XG4gNDI0Olx0XG4gNDI1Olx0XHRcdHJldHVybiB0dmx2X2hhbmRsZXItXHUwMDNldW5pY2FzdF9oYW5kbGVyKGJhdF9wcml2LCBzcmMsXG4gNDI2Olx0XHRcdFx0XHRcdFx0ICAgICBkc3QsIHR2bHZfdmFsdWUsXG4gNDI3Olx0XHRcdFx0XHRcdFx0ICAgICB0dmx2X3ZhbHVlX2xlbik7XG4gNDI4Olx0XHRjYXNlIEJBVEFEVl9NQ0FTVDpcbiA0Mjk6XHRcdFx0aWYgKCFza2IpXG4gNDMwOlx0XHRcdFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xuIDQzMTpcdFxuIDQzMjpcdFx0XHRpZiAoIXR2bHZfaGFuZGxlci1cdTAwM2VtY2FzdF9oYW5kbGVyKVxuIDQzMzpcdFx0XHRcdHJldHVybiBORVRfUlhfU1VDQ0VTUztcbiA0MzQ6XHRcbiA0MzU6XHRcdFx0dHZsdl9vZmZzZXQgPSAodW5zaWduZWQgY2hhciAqKXR2bHZfdmFsdWUgLSBza2ItXHUwMDNlZGF0YTtcbiA0MzY6XHRcdFx0aWYgKCFza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJfY2FyZWZ1bChza2IsXG4gNDM3Olx0XHRcdFx0XHRcdFx0ICAgICAgdHZsdl9vZmZzZXQgJiM0MzsgdHZsdl92YWx1ZV9sZW4pKVxuIDQzODpcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxODo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjA1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCYjMzk7cyBJbXBhY3QqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIHRoZSBgQkFUQURWX01DQVNUYCBoYW5kbGluZyB3aXRoaW4gdGhlIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGF0IHBhY2tldCB0eXBlOyB0aGF0JiMzOTtzIGNsZWFybHkgdGhlIHRyaWdnZXIgZm9yIHRoaXMgY29kZSBtb2RpZmljYXRpb24uIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwLCBmcm9tIGFuIGFkdmFuY2VkIHBlcnNwZWN0aXZlLCBpcyB0byBjb25maXJtIHdoZXRoZXIgdGhlIGBCQVRNQU5fQURWX01DQVNUYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyByZWxldmFudCwgZ2l2ZW4gdGhpcyBmb2N1c2VkIGNoYW5nZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBwYXRjaCBuZWNlc3NpdGF0ZXMsIG9yIGlzIGluIGFueSB3YXkgZGVwZW5kZW50IG9uLCB0aGF0IGNvbmZpZ3VyYXRpb24gc2V0dGluZyBiZWluZyBlbmFibGVkLiBMZXQmIzM5O3MgZGlnIGludG8gdGhhdCBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCQVRNQU5fQURWX01DQVNUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JhdG1hbi1hZHYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9iYXRtYW4tYWR2L0tjb25maWc9NDc9Y29uZmlnIEJBVE1BTl9BRFZfREFUXG4tLVxubmV0L2JhdG1hbi1hZHYvS2NvbmZpZy01Ni1cbm5ldC9iYXRtYW4tYWR2L0tjb25maWc6NTc6Y29uZmlnIEJBVE1BTl9BRFZfTUNBU1Rcbm5ldC9iYXRtYW4tYWR2L0tjb25maWctNTgtXHRib29sIFwmIzM0O011bHRpY2FzdCBvcHRpbWlzYXRpb25cJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzkzMwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqTXVsdGljYXN0IE9wdGltaXphdGlvbiBpbiBiYXRtYW4tYWR2OiBBIFF1aWNrIENoZWNrKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBlbmFibGluZyBtdWx0aWNhc3Qgb3B0aW1pemF0aW9uIGluIGJhdG1hbi1hZHYuIFRoZSBpbW1lZGlhdGUgYXNzdW1wdGlvbiwgYW5kIGl0IHNlZW1zIGEgcmVhc29uYWJsZSBvbmUgZ2l2ZW4gbXkgZXhwZXJpZW5jZSwgaXMgdGhhdCB3ZSBuZWVkIGBCQVRNQU5fQURWX01DQVNUYC4gIFRoYXQmIzM5O3MgdGhlIGxpa2VseSBwcmVyZXF1aXNpdGUuIEJ1dCBsZXQmIzM5O3Mgbm90IGp1c3QgdGFrZSBpdCBmb3IgZ3JhbnRlZCwgZXZlbiBmb3Igc29tZXRoaW5nIGFzIHNlZW1pbmdseSBzdHJhaWdodGZvcndhcmQgYXMgdGhpcy4gQmVzdCBwcmFjdGljZSBpcyBhbHdheXMgdG8gY29uZmlybS4KClRoZXJlZm9yZSwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHF1aWNrbHkgdHJhY2UgdGhlIGRlcGVuZGVuY3kuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBoYXZpbmcgYEJBVE1BTl9BRFZfTUNBU1RgIGRlZmluZWQgYWN0dWFsbHkgYWxsb3dzIHVzIHRvIHJlYWNoIHRoZSBgQkFUQURWX01DQVNUYCBjb25kaXRpb25hbCBpbiB0aGUgYGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcmAgZnVuY3Rpb24uIEVzc2VudGlhbGx5LCBkb2VzIGl0ICpnYXRlKiB0aGUgbXVsdGljYXN0IGZ1bmN0aW9uYWxpdHkgYXMgZXhwZWN0ZWQ/IEl0JiMzOTtzIGEgcXVpY2sgc2FuaXR5IGNoZWNrIGJ1dCBjYW4gc2F2ZSBhIGRlYnVnZ2luZyBoZWFkYWNoZSBkb3duIHRoZSByb2FkLiBUaGlzIGNvbmZpcm1hdGlvbiB3aWxsIGdpdmUgbWUgY29uZmlkZW5jZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIGlzIHdvcmtpbmcgYXMgZXhwZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JBVEFEVl9NQ0FTVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9iYXRtYW4tYWR2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYmF0bWFuLWFkdi9tYWluLmM9NTA0PXN0YXRpYyB2b2lkIGJhdGFkdl9yZWN2X2hhbmRsZXJfaW5pdCh2b2lkKVxuLS1cbm5ldC9iYXRtYW4tYWR2L21haW4uYy01MzctXHQvKiBtdWx0aWNhc3QgcGFja2V0ICovXG5uZXQvYmF0bWFuLWFkdi9tYWluLmM6NTM4Olx0YmF0YWR2X3J4X2hhbmRsZXJbQkFUQURWX01DQVNUXSA9IGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldDtcbm5ldC9iYXRtYW4tYWR2L21haW4uYy01MzktXG4tLVxubmV0L2JhdG1hbi1hZHYvbWFpbi5oLTM3LSNkZWZpbmUgQkFUQURWX09SSUdfV09SS19QRVJJT0QgMTAwMCAvKiAxIHNlY29uZCAqL1xubmV0L2JhdG1hbi1hZHYvbWFpbi5oOjM4OiNkZWZpbmUgQkFUQURWX01DQVNUX1dPUktfUEVSSU9EIDUwMCAvKiAwLjUgc2Vjb25kcyAqL1xubmV0L2JhdG1hbi1hZHYvbWFpbi5oLTM5LSNkZWZpbmUgQkFUQURWX0RBVF9FTlRSWV9USU1FT1VUICg1ICogNjAwMDApIC8qIDUgbWlucyBpbiBtaWxsaXNlY29uZHMgKi9cbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz02OD1zdGF0aWMgdm9pZCBiYXRhZHZfbWNhc3Rfc3RhcnRfdGltZXIoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdilcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy03MC1cdHF1ZXVlX2RlbGF5ZWRfd29yayhiYXRhZHZfZXZlbnRfd29ya3F1ZXVlLCBcdTAwMjZiYXRfcHJpdi1cdTAwM2VtY2FzdC53b3JrLFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6NzE6XHRcdFx0ICAgbXNlY3NfdG9famlmZmllcyhCQVRBRFZfTUNBU1RfV09SS19QRVJJT0QpKTtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTcyLX1cbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz04ND1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKmJhdGFkdl9tY2FzdF9nZXRfYnJpZGdlKHN0cnVjdCBuZXRfZGV2aWNlICptZXNoX2lmYWNlKVxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTEwNy0gKlxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTA4OiAqIFJldHVybjogQkFUQURWX05PX0ZMQUdTIGlmIHByZXNlbnQsIEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQgb3RoZXJ3aXNlLlxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTA5LSAqL1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTEwPXN0YXRpYyB1OCBiYXRhZHZfbWNhc3RfbWxhX3J0cl9mbGFnc19tZXNoaWZfZ2V0X2lwdjQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xMTYtXHRlbHNlXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxMTc6XHRcdHJldHVybiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0O1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTE4LX1cbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xMjgtICpcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjEyOTogKiBSZXR1cm46IEJBVEFEVl9OT19GTEFHUyBpZiBwcmVzZW50LCBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI2IG90aGVyd2lzZS5cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTEzMC0gKi9cbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz0xMzI9c3RhdGljIHU4IGJhdGFkdl9tY2FzdF9tbGFfcnRyX2ZsYWdzX21lc2hpZl9nZXRfaXB2NihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTEzOC1cdGVsc2Vcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjEzOTpcdFx0cmV0dXJuIEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjY7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNDAtfVxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTE0Mz1iYXRhZHZfbWNhc3RfbWxhX3J0cl9mbGFnc19tZXNoaWZfZ2V0X2lwdjYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE0NC17XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNDU6XHRyZXR1cm4gQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNjtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE0Ni19XG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTU5LSAqXHRCQVRBRFZfTk9fRkxBR1M6IEJvdGggYW4gSVB2NCBhbmQgSVB2NiBtdWx0aWNhc3Qgcm91dGVyIGlzIHByZXNlbnRcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE2MDogKlx0QkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNDogTm8gSVB2NCBtdWx0aWNhc3Qgcm91dGVyIGlzIHByZXNlbnRcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE2MTogKlx0QkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNjogTm8gSVB2NiBtdWx0aWNhc3Qgcm91dGVyIGlzIHByZXNlbnRcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE2Mi0gKlx0VGhlIGZvcm1lciB0d28gT1ImIzM5O2Q6IG5vIG11bHRpY2FzdCByb3V0ZXIgaXMgcHJlc2VudFxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTE2ND1zdGF0aWMgdTggYmF0YWR2X21jYXN0X21sYV9ydHJfZmxhZ3NfbWVzaGlmX2dldChzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE4OS0gKlx0QkFUQURWX05PX0ZMQUdTOiBCb3RoIGFuIElQdjQgYW5kIElQdjYgbXVsdGljYXN0IHJvdXRlciBpcyBwcmVzZW50XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxOTA6ICpcdEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQ6IE5vIElQdjQgbXVsdGljYXN0IHJvdXRlciBpcyBwcmVzZW50XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxOTE6ICpcdEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjY6IE5vIElQdjYgbXVsdGljYXN0IHJvdXRlciBpcyBwcmVzZW50XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xOTItICpcdFRoZSBmb3JtZXIgdHdvIE9SJiMzOTtkOiBubyBtdWx0aWNhc3Qgcm91dGVyIGlzIHByZXNlbnRcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz0xOTQ9c3RhdGljIHU4IGJhdGFkdl9tY2FzdF9tbGFfcnRyX2ZsYWdzX2JyaWRnZV9nZXQoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yMDAtXHRpZiAoIWJyaWRnZSlcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjIwMTpcdFx0cmV0dXJuIEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQgfCBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI2O1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMjAyLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMjAzLVx0aWYgKCFicl9tdWx0aWNhc3RfaGFzX3JvdXRlcl9hZGphY2VudChkZXYsIEVUSF9QX0lQKSlcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjIwNDpcdFx0ZmxhZ3MgfD0gQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNDtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTIwNS1cdGlmICghYnJfbXVsdGljYXN0X2hhc19yb3V0ZXJfYWRqYWNlbnQoZGV2LCBFVEhfUF9JUFY2KSlcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjIwNjpcdFx0ZmxhZ3MgfD0gQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNjtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTIwNy1cbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yMjEtICpcdEJBVEFEVl9OT19GTEFHUzogQm90aCBhbiBJUHY0IGFuZCBJUHY2IG11bHRpY2FzdCByb3V0ZXIgaXMgcHJlc2VudFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MjIyOiAqXHRCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0OiBObyBJUHY0IG11bHRpY2FzdCByb3V0ZXIgaXMgcHJlc2VudFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MjIzOiAqXHRCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI2OiBObyBJUHY2IG11bHRpY2FzdCByb3V0ZXIgaXMgcHJlc2VudFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMjI0LSAqXHRUaGUgZm9ybWVyIHR3byBPUiYjMzk7ZDogbm8gbXVsdGljYXN0IHJvdXRlciBpcyBwcmVzZW50XG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MjI2PXN0YXRpYyB1OCBiYXRhZHZfbWNhc3RfbWxhX3J0cl9mbGFnc19nZXQoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yMjgte1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MjI5Olx0dTggZmxhZ3MgPSBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0IHwgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNjtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTIzMC1cbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yNDMtICpcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjI0NDogKiBSZXR1cm46IEJBVEFEVl9NQ0FTVF9IQVZFX01DX1BUWVBFX0NBUEEgaWYgeWVzLCBCQVRBRFZfTk9fRkxBR1Mgb3RoZXJ3aXNlLlxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMjQ1LSAqL1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MjQ2PXN0YXRpYyB1OCBiYXRhZHZfbWNhc3RfbWxhX2ZvcndfZmxhZ3NfZ2V0KHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYpXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMjYyLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MjYzOlx0cmV0dXJuIEJBVEFEVl9NQ0FTVF9IQVZFX01DX1BUWVBFX0NBUEE7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yNjQtfVxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTI3ND1iYXRhZHZfbWNhc3RfbWxhX2ZsYWdzX2dldChzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2KVxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTMwNi1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjMwNzpcdG1sYV9mbGFncy50dmx2X2ZsYWdzIHw9IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9VTlNOT09QQUJMRVM7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0zMDgtXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMzE4LVx0aWYgKCFxcjQtXHUwMDNlZXhpc3RzIHx8IHFyNC1cdTAwM2VzaGFkb3dpbmcpIHtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjMxOTpcdFx0bWxhX2ZsYWdzLnR2bHZfZmxhZ3MgfD0gQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjQ7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzozMjA6XHRcdG1sYV9mbGFncy50dmx2X2ZsYWdzIFx1MDAyNj0gfkJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQ7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0zMjEtXHR9XG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMzIzLVx0aWYgKCFxcjYtXHUwMDNlZXhpc3RzIHx8IHFyNi1cdTAwM2VzaGFkb3dpbmcpIHtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjMyNDpcdFx0bWxhX2ZsYWdzLnR2bHZfZmxhZ3MgfD0gQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjY7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzozMjU6XHRcdG1sYV9mbGFncy50dmx2X2ZsYWdzIFx1MDAyNj0gfkJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjY7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0zMjYtXHR9XG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MzY2PWJhdGFkdl9tY2FzdF9tbGFfbWVzaGlmX2dldF9pcHY0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMzc1LVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6Mzc2Olx0aWYgKGZsYWdzLVx1MDAzZXR2bHZfZmxhZ3MgXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9JUFY0KVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMzc3LVx0XHRyZXR1cm4gMDtcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0zODgtXHQgICAgIHBtYyA9IHJjdV9kZXJlZmVyZW5jZShwbWMtXHUwMDNlbmV4dF9yY3UpKSB7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzozODk6XHRcdGlmIChmbGFncy1cdTAwM2V0dmx2X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfVU5TTk9PUEFCTEVTIFx1MDAyNlx1MDAyNlxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMzkwLVx0XHQgICAgaXB2NF9pc19sb2NhbF9tdWx0aWNhc3QocG1jLVx1MDAzZW11bHRpYWRkcikpXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMzkyLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MzkzOlx0XHRpZiAoIShmbGFncy1cdTAwM2V0dmx2X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0KSBcdTAwMjZcdTAwMjZcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTM5NC1cdFx0ICAgICFpcHY0X2lzX2xvY2FsX211bHRpY2FzdChwbWMtXHUwMDNlbXVsdGlhZGRyKSlcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz00MzM9YmF0YWR2X21jYXN0X21sYV9tZXNoaWZfZ2V0X2lwdjYoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy00NDItXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzo0NDM6XHRpZiAoZmxhZ3MtXHUwMDNldHZsdl9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjYpXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy00NDQtXHRcdHJldHVybiAwO1xuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTQ2MC1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjQ2MTpcdFx0aWYgKGZsYWdzLVx1MDAzZXR2bHZfZmxhZ3MgXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9VTlNOT09QQUJMRVMgXHUwMDI2XHUwMDI2XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy00NjItXHRcdCAgICBpcHY2X2FkZHJfaXNfbGxfYWxsX25vZGVzKFx1MDAyNnBtYzYtXHUwMDNlbWNhX2FkZHIpKVxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTQ2NC1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjQ2NTpcdFx0aWYgKCEoZmxhZ3MtXHUwMDNldHZsdl9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNikgXHUwMDI2XHUwMDI2XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy00NjYtXHRcdCAgICBJUFY2X0FERFJfTUNfU0NPUEUoXHUwMDI2cG1jNi1cdTAwM2VtY2FfYWRkcikgXHUwMDNlXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9NTgzPXN0YXRpYyBpbnQgYmF0YWR2X21jYXN0X21sYV9icmlkZ2VfZ2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtNjAyLVx0XHRpZiAoYnJfaXBfZW50cnktXHUwMDNlYWRkci5wcm90byA9PSBodG9ucyhFVEhfUF9JUCkpIHtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjYwMzpcdFx0XHRpZiAodHZsdl9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjQpXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy02MDQtXHRcdFx0XHRjb250aW51ZTtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTYwNS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjYwNjpcdFx0XHRpZiAodHZsdl9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX1VOU05PT1BBQkxFUyBcdTAwMjZcdTAwMjZcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTYwNy1cdFx0XHQgICAgaXB2NF9pc19sb2NhbF9tdWx0aWNhc3QoYnJfaXBfZW50cnktXHUwMDNlYWRkci5kc3QuaXA0KSlcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy02MDktXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzo2MTA6XHRcdFx0aWYgKCEodHZsdl9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNCkgXHUwMDI2XHUwMDI2XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy02MTEtXHRcdFx0ICAgICFpcHY0X2lzX2xvY2FsX211bHRpY2FzdChicl9pcF9lbnRyeS1cdTAwM2VhZGRyLmRzdC5pcDQpKVxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTYxNi1cdFx0aWYgKGJyX2lwX2VudHJ5LVx1MDAzZWFkZHIucHJvdG8gPT0gaHRvbnMoRVRIX1BfSVBWNikpIHtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjYxNzpcdFx0XHRpZiAodHZsdl9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjYpXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy02MTgtXHRcdFx0XHRjb250aW51ZTtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTYxOS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjYyMDpcdFx0XHRpZiAodHZsdl9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX1VOU05PT1BBQkxFUyBcdTAwMjZcdTAwMjZcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTYyMS1cdFx0XHQgICAgaXB2Nl9hZGRyX2lzX2xsX2FsbF9ub2RlcyhcdTAwMjZicl9pcF9lbnRyeS1cdTAwM2VhZGRyLmRzdC5pcDYpKVxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTYyMy1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjYyNDpcdFx0XHRpZiAoISh0dmx2X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI2KSBcdTAwMjZcdTAwMjZcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTYyNS1cdFx0XHQgICAgSVBWNl9BRERSX01DX1NDT1BFKFx1MDAyNmJyX2lwX2VudHJ5LVx1MDAzZWFkZHIuZHN0LmlwNikgXHUwMDNlXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9ODM0PXN0YXRpYyB2b2lkIGJhdGFkdl9tY2FzdF9mbGFnc19sb2coc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdiwgdTggZmxhZ3MpXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtODQwLVx0c3ByaW50ZihzdHJfb2xkX2ZsYWdzLCBcJiMzNDtbJWMlYyVjJXMlcyVjXVwmIzM0Oyxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjg0MTpcdFx0KG9sZF9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX1VOU05PT1BBQkxFUykgPyAmIzM5O1UmIzM5OyA6ICYjMzk7LiYjMzk7LFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6ODQyOlx0XHQob2xkX2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNCkgPyAmIzM5OzQmIzM5OyA6ICYjMzk7LiYjMzk7LFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6ODQzOlx0XHQob2xkX2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNikgPyAmIzM5OzYmIzM5OyA6ICYjMzk7LiYjMzk7LFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6ODQ0Olx0XHQhKG9sZF9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNCkgPyBcJiMzNDtSNFwmIzM0OyA6IFwmIzM0Oy4gXCYjMzQ7LFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6ODQ1Olx0XHQhKG9sZF9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNikgPyBcJiMzNDtSNlwmIzM0OyA6IFwmIzM0Oy4gXCYjMzQ7LFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6ODQ2Olx0XHQhKG9sZF9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX0hBVkVfTUNfUFRZUEVfQ0FQQSkgPyAmIzM5O1AmIzM5OyA6ICYjMzk7LiYjMzk7KTtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTg0Ny1cbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy04NTAtXHRcdCAgIG9sZF9lbmFibGVkID8gc3RyX29sZF9mbGFncyA6IFwmIzM0O1x1MDAzY3VuZGVmaW5lZFx1MDAzZVwmIzM0Oyxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjg1MTpcdFx0ICAgKGZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfVU5TTk9PUEFCTEVTKSA/ICYjMzk7VSYjMzk7IDogJiMzOTsuJiMzOTssXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzo4NTI6XHRcdCAgIChmbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjQpID8gJiMzOTs0JiMzOTsgOiAmIzM5Oy4mIzM5Oyxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjg1MzpcdFx0ICAgKGZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNikgPyAmIzM5OzYmIzM5OyA6ICYjMzk7LiYjMzk7LFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6ODU0Olx0XHQgICAhKGZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0KSA/IFwmIzM0O1I0XCYjMzQ7IDogXCYjMzQ7LiBcJiMzNDssXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzo4NTU6XHRcdCAgICEoZmxhZ3MgXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjYpID8gXCYjMzQ7UjZcJiMzNDsgOiBcJiMzNDsuIFwmIzM0Oyxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjg1NjpcdFx0ICAgIShmbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX0hBVkVfTUNfUFRZUEVfQ0FQQSkgPyAmIzM5O1AmIzM5OyA6ICYjMzk7LiYjMzk7KTtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTg1Ny19XG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTE5ND1iYXRhZHZfbWNhc3RfZm9yd19tb2RlX2J5X2NvdW50KHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTIwMS1cdGlmICghYXRvbWljX3JlYWQoXHUwMDI2YmF0X3ByaXYtXHUwMDNlbWNhc3QubnVtX25vX21jX3B0eXBlX2NhcGEpIFx1MDAyNlx1MDAyNlxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTIwMjpcdCAgICBvd25fdHZsdl9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX0hBVkVfTUNfUFRZUEVfQ0FQQSBcdTAwMjZcdTAwMjZcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTEyMDMtXHQgICAgc2tiLVx1MDAzZWxlbiAmIzQzOyBtY2FzdF9oZHJsZW4gXHUwMDNjPSBJUFY2X01JTl9NVFUgXHUwMDI2XHUwMDI2XG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTMwMT1iYXRhZHZfbWNhc3RfZm9yd190dChzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTEzNDEtICogU2VuZHMgY29waWVzIG9mIGEgZnJhbWUgd2l0aCBtdWx0aWNhc3QgZGVzdGluYXRpb24gdG8gYW55IG5vZGUgd2l0aCBhXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxMzQyOiAqIEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9JUFY0IGZsYWcgc2V0LiBBIHRyYW5zbWlzc2lvbiBpcyBwZXJmb3JtZWQgdmlhIGFcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTEzNDMtICogYmF0bWFuLWFkdiB1bmljYXN0IHBhY2tldCBmb3IgZWFjaCBzdWNoIGRlc3RpbmF0aW9uIG5vZGUuXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTM0OT1iYXRhZHZfbWNhc3RfZm9yd193YW50X2FsbF9pcHY0KHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTM3OC0gKiBTZW5kcyBjb3BpZXMgb2YgYSBmcmFtZSB3aXRoIG11bHRpY2FzdCBkZXN0aW5hdGlvbiB0byBhbnkgbm9kZSB3aXRoIGFcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjEzNzk6ICogQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjYgZmxhZyBzZXQuIEEgdHJhbnNtaXNzaW9uIGlzIHBlcmZvcm1lZCB2aWEgYVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTM4MC0gKiBiYXRtYW4tYWR2IHVuaWNhc3QgcGFja2V0IGZvciBlYWNoIHN1Y2ggZGVzdGluYXRpb24gbm9kZS5cbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz0xMzg2PWJhdGFkdl9tY2FzdF9mb3J3X3dhbnRfYWxsX2lwdjYoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNDE1LSAqIFNlbmRzIGNvcGllcyBvZiBhIGZyYW1lIHdpdGggbXVsdGljYXN0IGRlc3RpbmF0aW9uIHRvIGFueSBub2RlIHdpdGggYVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTQxNjogKiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNCBvciBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNiBmbGFnIHNldC4gQVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTQxNy0gKiB0cmFuc21pc3Npb24gaXMgcGVyZm9ybWVkIHZpYSBhIGJhdG1hbi1hZHYgdW5pY2FzdCBwYWNrZXQgZm9yIGVhY2ggc3VjaFxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTE0MjQ9YmF0YWR2X21jYXN0X2Zvcndfd2FudF9hbGwoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNDQ0LSAqIFNlbmRzIGNvcGllcyBvZiBhIGZyYW1lIHdpdGggbXVsdGljYXN0IGRlc3RpbmF0aW9uIHRvIGFueSBub2RlIHdpdGggYVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTQ0NTogKiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0IGZsYWcgdW5zZXQuIEEgdHJhbnNtaXNzaW9uIGlzIHBlcmZvcm1lZCB2aWEgYVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTQ0Ni0gKiBiYXRtYW4tYWR2IHVuaWNhc3QgcGFja2V0IGZvciBlYWNoIHN1Y2ggZGVzdGluYXRpb24gbm9kZS5cbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz0xNDUyPWJhdGFkdl9tY2FzdF9mb3J3X3dhbnRfYWxsX3J0cjQoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNDgxLSAqIFNlbmRzIGNvcGllcyBvZiBhIGZyYW1lIHdpdGggbXVsdGljYXN0IGRlc3RpbmF0aW9uIHRvIGFueSBub2RlIHdpdGggYVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTQ4MjogKiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI2IGZsYWcgdW5zZXQuIEEgdHJhbnNtaXNzaW9uIGlzIHBlcmZvcm1lZCB2aWEgYVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTQ4My0gKiBiYXRtYW4tYWR2IHVuaWNhc3QgcGFja2V0IGZvciBlYWNoIHN1Y2ggZGVzdGluYXRpb24gbm9kZS5cbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz0xNDg5PWJhdGFkdl9tY2FzdF9mb3J3X3dhbnRfYWxsX3J0cjYoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNTE4LSAqIFNlbmRzIGNvcGllcyBvZiBhIGZyYW1lIHdpdGggbXVsdGljYXN0IGRlc3RpbmF0aW9uIHRvIGFueSBub2RlIHdpdGggYVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTUxOTogKiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0IG9yIEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjYgZmxhZyB1bnNldC4gQVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTUyMC0gKiB0cmFuc21pc3Npb24gaXMgcGVyZm9ybWVkIHZpYSBhIGJhdG1hbi1hZHYgdW5pY2FzdCBwYWNrZXQgZm9yIGVhY2ggc3VjaFxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTE1NTg9aW50IGJhdGFkdl9tY2FzdF9mb3J3X3NlbmQoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNTk0LSAqXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNTk1OiAqIElmIHRoZSBCQVRBRFZfTUNBU1RfV0FOVF9BTExfVU5TTk9PUEFCTEVTIGZsYWcgb2YgdGhpcyBvcmlnaW5hdG9yLFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTU5Ni0gKiBvcmlnLCBoYXMgdG9nZ2xlZCB0aGVuIHRoaXMgbWV0aG9kIHVwZGF0ZXMgdGhlIGNvdW50ZXIgYW5kIHRoZSBsaXN0XG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTYwMT1zdGF0aWMgdm9pZCBiYXRhZHZfbWNhc3Rfd2FudF91bnNub29wX3VwZGF0ZShzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE2MTAtXHQvKiBzd2l0Y2hlZCBmcm9tIGZsYWcgdW5zZXQgdG8gc2V0ICovXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNjExOlx0aWYgKG1jYXN0X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfVU5TTk9PUEFCTEVTIFx1MDAyNlx1MDAyNlxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTYxMjpcdCAgICAhKG9yaWctXHUwMDNlbWNhc3RfZmxhZ3MgXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9VTlNOT09QQUJMRVMpKSB7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNjEzLVx0XHRhdG9taWNfaW5jKFx1MDAyNmJhdF9wcml2LVx1MDAzZW1jYXN0Lm51bV93YW50X2FsbF91bnNub29wYWJsZXMpO1xuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE2MjEtXHQvKiBzd2l0Y2hlZCBmcm9tIGZsYWcgc2V0IHRvIHVuc2V0ICovXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNjIyOlx0fSBlbHNlIGlmICghKG1jYXN0X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfVU5TTk9PUEFCTEVTKSBcdTAwMjZcdTAwMjZcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE2MjM6XHRcdCAgIG9yaWctXHUwMDNlbWNhc3RfZmxhZ3MgXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9VTlNOT09QQUJMRVMpIHtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE2MjQtXHRcdGF0b21pY19kZWMoXHUwMDI2YmF0X3ByaXYtXHUwMDNlbWNhc3QubnVtX3dhbnRfYWxsX3Vuc25vb3BhYmxlcyk7XG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTY0MC0gKlxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTY0MTogKiBJZiB0aGUgQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjQgZmxhZyBvZiB0aGlzIG9yaWdpbmF0b3IsIG9yaWcsIGhhc1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTY0Mi0gKiB0b2dnbGVkIHRoZW4gdGhpcyBtZXRob2QgdXBkYXRlcyB0aGUgY291bnRlciBhbmQgdGhlIGxpc3QgYWNjb3JkaW5nbHkuXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTY0Nj1zdGF0aWMgdm9pZCBiYXRhZHZfbWNhc3Rfd2FudF9pcHY0X3VwZGF0ZShzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE2NTUtXHQvKiBzd2l0Y2hlZCBmcm9tIGZsYWcgdW5zZXQgdG8gc2V0ICovXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNjU2Olx0aWYgKG1jYXN0X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNCBcdTAwMjZcdTAwMjZcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE2NTc6XHQgICAgIShvcmlnLVx1MDAzZW1jYXN0X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNCkpIHtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE2NTgtXHRcdGF0b21pY19pbmMoXHUwMDI2YmF0X3ByaXYtXHUwMDNlbWNhc3QubnVtX3dhbnRfYWxsX2lwdjQpO1xuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE2NjYtXHQvKiBzd2l0Y2hlZCBmcm9tIGZsYWcgc2V0IHRvIHVuc2V0ICovXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNjY3Olx0fSBlbHNlIGlmICghKG1jYXN0X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNCkgXHUwMDI2XHUwMDI2XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNjY4Olx0XHQgICBvcmlnLVx1MDAzZW1jYXN0X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNCkge1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTY2OS1cdFx0YXRvbWljX2RlYyhcdTAwMjZiYXRfcHJpdi1cdTAwM2VtY2FzdC5udW1fd2FudF9hbGxfaXB2NCk7XG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTY4NS0gKlxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTY4NjogKiBJZiB0aGUgQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjYgZmxhZyBvZiB0aGlzIG9yaWdpbmF0b3IsIG9yaWcsIGhhc1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTY4Ny0gKiB0b2dnbGVkIHRoZW4gdGhpcyBtZXRob2QgdXBkYXRlcyB0aGUgY291bnRlciBhbmQgdGhlIGxpc3QgYWNjb3JkaW5nbHkuXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTY5MT1zdGF0aWMgdm9pZCBiYXRhZHZfbWNhc3Rfd2FudF9pcHY2X3VwZGF0ZShzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3MDAtXHQvKiBzd2l0Y2hlZCBmcm9tIGZsYWcgdW5zZXQgdG8gc2V0ICovXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNzAxOlx0aWYgKG1jYXN0X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNiBcdTAwMjZcdTAwMjZcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE3MDI6XHQgICAgIShvcmlnLVx1MDAzZW1jYXN0X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNikpIHtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3MDMtXHRcdGF0b21pY19pbmMoXHUwMDI2YmF0X3ByaXYtXHUwMDNlbWNhc3QubnVtX3dhbnRfYWxsX2lwdjYpO1xuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3MTEtXHQvKiBzd2l0Y2hlZCBmcm9tIGZsYWcgc2V0IHRvIHVuc2V0ICovXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNzEyOlx0fSBlbHNlIGlmICghKG1jYXN0X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNikgXHUwMDI2XHUwMDI2XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNzEzOlx0XHQgICBvcmlnLVx1MDAzZW1jYXN0X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNikge1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTcxNC1cdFx0YXRvbWljX2RlYyhcdTAwMjZiYXRfcHJpdi1cdTAwM2VtY2FzdC5udW1fd2FudF9hbGxfaXB2Nik7XG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTczMC0gKlxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTczMTogKiBJZiB0aGUgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNCBmbGFnIG9mIHRoaXMgb3JpZ2luYXRvciwgb3JpZywgaGFzXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNzMyLSAqIHRvZ2dsZWQgdGhlbiB0aGlzIG1ldGhvZCB1cGRhdGVzIHRoZSBjb3VudGVyIGFuZCB0aGUgbGlzdCBhY2NvcmRpbmdseS5cbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz0xNzM2PXN0YXRpYyB2b2lkIGJhdGFkdl9tY2FzdF93YW50X3J0cjRfdXBkYXRlKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTc0NS1cdC8qIHN3aXRjaGVkIGZyb20gZmxhZyBzZXQgdG8gdW5zZXQgKi9cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE3NDY6XHRpZiAoIShtY2FzdF9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNCkgXHUwMDI2XHUwMDI2XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNzQ3Olx0ICAgIG9yaWctXHUwMDNlbWNhc3RfZmxhZ3MgXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQpIHtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3NDgtXHRcdGF0b21pY19pbmMoXHUwMDI2YmF0X3ByaXYtXHUwMDNlbWNhc3QubnVtX3dhbnRfYWxsX3J0cjQpO1xuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3NTYtXHQvKiBzd2l0Y2hlZCBmcm9tIGZsYWcgdW5zZXQgdG8gc2V0ICovXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNzU3Olx0fSBlbHNlIGlmIChtY2FzdF9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNCBcdTAwMjZcdTAwMjZcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE3NTg6XHRcdCAgICEob3JpZy1cdTAwM2VtY2FzdF9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNCkpIHtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3NTktXHRcdGF0b21pY19kZWMoXHUwMDI2YmF0X3ByaXYtXHUwMDNlbWNhc3QubnVtX3dhbnRfYWxsX3J0cjQpO1xuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3NzUtICpcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE3NzY6ICogSWYgdGhlIEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjYgZmxhZyBvZiB0aGlzIG9yaWdpbmF0b3IsIG9yaWcsIGhhc1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTc3Ny0gKiB0b2dnbGVkIHRoZW4gdGhpcyBtZXRob2QgdXBkYXRlcyB0aGUgY291bnRlciBhbmQgdGhlIGxpc3QgYWNjb3JkaW5nbHkuXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTc4MT1zdGF0aWMgdm9pZCBiYXRhZHZfbWNhc3Rfd2FudF9ydHI2X3VwZGF0ZShzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3OTAtXHQvKiBzd2l0Y2hlZCBmcm9tIGZsYWcgc2V0IHRvIHVuc2V0ICovXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNzkxOlx0aWYgKCEobWNhc3RfZmxhZ3MgXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjYpIFx1MDAyNlx1MDAyNlxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTc5MjpcdCAgICBvcmlnLVx1MDAzZW1jYXN0X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI2KSB7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNzkzLVx0XHRhdG9taWNfaW5jKFx1MDAyNmJhdF9wcml2LVx1MDAzZW1jYXN0Lm51bV93YW50X2FsbF9ydHI2KTtcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xODAxLVx0Lyogc3dpdGNoZWQgZnJvbSBmbGFnIHVuc2V0IHRvIHNldCAqL1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTgwMjpcdH0gZWxzZSBpZiAobWNhc3RfZmxhZ3MgXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjYgXHUwMDI2XHUwMDI2XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxODAzOlx0XHQgICAhKG9yaWctXHUwMDNlbWNhc3RfZmxhZ3MgXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjYpKSB7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xODA0LVx0XHRhdG9taWNfZGVjKFx1MDAyNmJhdF9wcml2LVx1MDAzZW1jYXN0Lm51bV93YW50X2FsbF9ydHI2KTtcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xODIwLSAqXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxODIxOiAqIElmIHRoZSBCQVRBRFZfTUNBU1RfSEFWRV9NQ19QVFlQRV9DQVBBIGZsYWcgb2YgdGhpcyBvcmlnaW5hdG9yLCBvcmlnLCBoYXNcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE4MjItICogdG9nZ2xlZCB0aGVuIHRoaXMgbWV0aG9kIHVwZGF0ZXMgdGhlIGNvdW50ZXIgYWNjb3JkaW5nbHkuXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTgyND1zdGF0aWMgdm9pZCBiYXRhZHZfbWNhc3RfaGF2ZV9tY19wdHlwZV91cGRhdGUoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xODMwLVx0Lyogc3dpdGNoZWQgZnJvbSBmbGFnIHNldCB0byB1bnNldCAqL1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTgzMTpcdGlmICghKG1jYXN0X2ZsYWdzIFx1MDAyNiBCQVRBRFZfTUNBU1RfSEFWRV9NQ19QVFlQRV9DQVBBKSBcdTAwMjZcdTAwMjZcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE4MzI6XHQgICAgb3JpZy1cdTAwM2VtY2FzdF9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX0hBVkVfTUNfUFRZUEVfQ0FQQSlcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE4MzMtXHRcdGF0b21pY19pbmMoXHUwMDI2YmF0X3ByaXYtXHUwMDNlbWNhc3QubnVtX25vX21jX3B0eXBlX2NhcGEpO1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTgzNC1cdC8qIHN3aXRjaGVkIGZyb20gZmxhZyB1bnNldCB0byBzZXQgKi9cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE4MzU6XHRlbHNlIGlmIChtY2FzdF9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX0hBVkVfTUNfUFRZUEVfQ0FQQSBcdTAwMjZcdTAwMjZcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE4MzY6XHRcdCAhKG9yaWctXHUwMDNlbWNhc3RfZmxhZ3MgXHUwMDI2IEJBVEFEVl9NQ0FTVF9IQVZFX01DX1BUWVBFX0NBUEEpKVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTgzNy1cdFx0YXRvbWljX2RlYyhcdTAwMjZiYXRfcHJpdi1cdTAwM2VtY2FzdC5udW1fbm9fbWNfcHR5cGVfY2FwYSk7XG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTg0OT1iYXRhZHZfbWNhc3RfdHZsdl9mbGFnc19nZXQoYm9vbCBlbmFibGVkLCB2b2lkICp0dmx2X3ZhbHVlLCB1MTYgdHZsdl92YWx1ZV9sZW4pXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTg1Ni1cdGlmICghZW5hYmxlZCkge1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTg1NzpcdFx0bWNhc3RfZmxhZ3MgfD0gQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjQ7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxODU4Olx0XHRtY2FzdF9mbGFncyB8PSBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNjtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE4NTktXHR9XG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTg2MS1cdC8qIHJlbW92ZSByZWR1bmRhbnQgZmxhZ3MgdG8gYXZvaWQgc2VuZGluZyBkdXBsaWNhdGUgcGFja2V0cyBsYXRlciAqL1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTg2MjpcdGlmIChtY2FzdF9mbGFncyBcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjQpXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxODYzOlx0XHRtY2FzdF9mbGFncyB8PSBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0O1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTg2NC1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE4NjU6XHRpZiAobWNhc3RfZmxhZ3MgXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9JUFY2KVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTg2NjpcdFx0bWNhc3RfZmxhZ3MgfD0gQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNjtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE4NjctXG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTkzOT1pbnQgYmF0YWR2X21jYXN0X21lc2hfaW5mb19wdXQoc3RydWN0IHNrX2J1ZmYgKm1zZyxcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xOTQ1LVx0aWYgKGJhdF9wcml2LVx1MDAzZW1jYXN0Lm1sYV9mbGFncy5icmlkZ2VkKSB7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxOTQ2Olx0XHRmbGFnc19wcml2IHw9IEJBVEFEVl9NQ0FTVF9GTEFHU19CUklER0VEO1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTk0Ny1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE5NDgtXHRcdGlmIChiYXRfcHJpdi1cdTAwM2VtY2FzdC5tbGFfZmxhZ3MucXVlcmllcl9pcHY0LmV4aXN0cylcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE5NDk6XHRcdFx0ZmxhZ3NfcHJpdiB8PSBCQVRBRFZfTUNBU1RfRkxBR1NfUVVFUklFUl9JUFY0X0VYSVNUUztcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE5NTAtXHRcdGlmIChiYXRfcHJpdi1cdTAwM2VtY2FzdC5tbGFfZmxhZ3MucXVlcmllcl9pcHY2LmV4aXN0cylcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE5NTE6XHRcdFx0ZmxhZ3NfcHJpdiB8PSBCQVRBRFZfTUNBU1RfRkxBR1NfUVVFUklFUl9JUFY2X0VYSVNUUztcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE5NTItXHRcdGlmIChiYXRfcHJpdi1cdTAwM2VtY2FzdC5tbGFfZmxhZ3MucXVlcmllcl9pcHY0LnNoYWRvd2luZylcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE5NTM6XHRcdFx0ZmxhZ3NfcHJpdiB8PSBCQVRBRFZfTUNBU1RfRkxBR1NfUVVFUklFUl9JUFY0X1NIQURPV0lORztcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE5NTQtXHRcdGlmIChiYXRfcHJpdi1cdTAwM2VtY2FzdC5tbGFfZmxhZ3MucXVlcmllcl9pcHY2LnNoYWRvd2luZylcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE5NTU6XHRcdFx0ZmxhZ3NfcHJpdiB8PSBCQVRBRFZfTUNBU1RfRkxBR1NfUVVFUklFUl9JUFY2X1NIQURPV0lORztcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE5NTYtXHR9XG4tLVxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MjE3OD12b2lkIGJhdGFkdl9tY2FzdF9wdXJnZV9vcmlnKHN0cnVjdCBiYXRhZHZfb3JpZ19ub2RlICpvcmlnKVxuLS1cbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTIxODctXHRiYXRhZHZfbWNhc3Rfd2FudF9ydHI0X3VwZGF0ZShiYXRfcHJpdiwgb3JpZyxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjIxODg6XHRcdFx0XHQgICAgICBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0KTtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTIxODktXHRiYXRhZHZfbWNhc3Rfd2FudF9ydHI2X3VwZGF0ZShiYXRfcHJpdiwgb3JpZyxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjIxOTA6XHRcdFx0XHQgICAgICBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI2KTtcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTIxOTEtXHRiYXRhZHZfbWNhc3RfaGF2ZV9tY19wdHlwZV91cGRhdGUoYmF0X3ByaXYsIG9yaWcsXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoyMTkyOlx0XHRcdFx0XHQgIEJBVEFEVl9NQ0FTVF9IQVZFX01DX1BUWVBFX0NBUEEpO1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMjE5My1cbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3RfZm9ydy5jPTYxNj1iYXRhZHZfbWNhc3RfZm9yd19wdXNoX2hkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBzaG9ydCB0dmx2X2xlbilcbi0tXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3RfZm9ydy5jLTYyNy1cdG1jYXN0X3BhY2tldC1cdTAwM2V0dGwgPSBCQVRBRFZfVFRMO1xubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0X2ZvcncuYzo2Mjg6XHRtY2FzdF9wYWNrZXQtXHUwMDNlcGFja2V0X3R5cGUgPSBCQVRBRFZfTUNBU1Q7XG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3RfZm9ydy5jLTYyOS1cdG1jYXN0X3BhY2tldC1cdTAwM2VyZXNlcnZlZCA9IDA7XG4tLVxubmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jPTk0MT1zdHJ1Y3QgYmF0YWR2X29yaWdfbm9kZSAqYmF0YWR2X29yaWdfbm9kZV9uZXcoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbi0tXG5uZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmMtOTc4LSNpZmRlZiBDT05GSUdfQkFUTUFOX0FEVl9NQ0FTVFxubmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jOjk3OTpcdG9yaWdfbm9kZS1cdTAwM2VtY2FzdF9mbGFncyA9IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQ7XG5uZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmM6OTgwOlx0b3JpZ19ub2RlLVx1MDAzZW1jYXN0X2ZsYWdzIHw9IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjY7XG5uZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmM6OTgxOlx0b3JpZ19ub2RlLVx1MDAzZW1jYXN0X2ZsYWdzIHw9IEJBVEFEVl9NQ0FTVF9IQVZFX01DX1BUWVBFX0NBUEE7XG5uZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmMtOTgyLVx0SU5JVF9ITElTVF9OT0RFKFx1MDAyNm9yaWdfbm9kZS1cdTAwM2VtY2FzdF93YW50X2FsbF91bnNub29wYWJsZXNfbm9kZSk7XG4tLVxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jPTEzMzk9aW50IGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYy0xMzc1LVxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jOjEzNzY6XHRyZXQgPSBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3MoYmF0X3ByaXYsIEJBVEFEVl9NQ0FTVCwgTlVMTCwgc2tiLFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jLTEzNzctXHRcdFx0XHRcdCAgICAgdHZsdl9idWZmLCB0dmx2X2J1ZmZfbGVuKTtcbi0tXG5uZXQvYmF0bWFuLWFkdi90dmx2LmM9Mzg5PXN0YXRpYyBpbnQgYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXG4tLVxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTQyNy1cdFx0XHRcdFx0XHQgICAgIHR2bHZfdmFsdWVfbGVuKTtcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYzo0Mjg6XHRjYXNlIEJBVEFEVl9NQ0FTVDpcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy00MjktXHRcdGlmICghc2tiKVxuLS1cbm5ldC9iYXRtYW4tYWR2L3R5cGVzLmg9MTI0ND1zdHJ1Y3QgYmF0YWR2X3ByaXZfbWNhc3Qge1xuLS1cbm5ldC9iYXRtYW4tYWR2L3R5cGVzLmgtMTMxMC1cdCAqIEBudW1fbm9fbWNfcHR5cGVfY2FwYTogY291bnRlciBmb3IgbnVtYmVyIG9mIG5vZGVzIHdpdGhvdXQgdGhlXG5uZXQvYmF0bWFuLWFkdi90eXBlcy5oOjEzMTE6XHQgKiAgQkFUQURWX01DQVNUX0hBVkVfTUNfUFRZUEVfQ0FQQSBmbGFnXG5uZXQvYmF0bWFuLWFkdi90eXBlcy5oLTEzMTItXHQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg1NDQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJBVEFEViBNdWx0aWNhc3QgUGFja2V0IEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBCQVRBRFZfTUNBU1RgIHBhY2tldCB0eXBlLiBSaWdodCwgdGhhdCBtYWtlcyBzZW5zZSDigJMgaXQmIzM5O3Mgc3BlY2lmaWNhbGx5IGZvciBtdWx0aWNhc3QgdHJhZmZpYyB3aXRoaW4gdGhlIEJhdG1hbi1hZHYgbmV0d29yay4gTm93LCBJIHNlZSB0aGF0IGBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXRgIGZ1bmN0aW9uIGlzIHRoZSBvbmUgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIHRoZXNlIGBCQVRBRFZfTUNBU1RgIHBhY2tldHMuIEFuZCB0aGlzIGZ1bmN0aW9uPyBJdCYjMzk7cyBvbmx5IGdvaW5nIHRvIGJlIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCBtb2R1bGUgaWYgYENPTkZJR19CQVRNQU5fQURWX01DQVNUYCBpcyBkZWZpbmVkLCB3aGljaCBpbXBsaWVzIGl0IGlzIGEgY29tcGlsZS10aW1lIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGNvbmZpZyBvcHRpb24sIHRoZSBmdW5jdGlvbiwgYW5kIHRoZSBwYWNrZXQgdHlwZSwgc28gbGV0IG1lIGp1c3QgdGFrZSBhIHF1aWNrIHNlY29uZCB0byBkb3VibGUtY2hlY2sgYHJvdXRpbmcuaGAgYWdhaW4sIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIHJlbGF0ZWQgdG8gdGhlIHJvdXRpbmcgYXNwZWN0cyBvZiB0aGlzIG11bHRpY2FzdCBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JhdG1hbi1hZHYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9iYXRtYW4tYWR2L21haW4uYz01MDQ9c3RhdGljIHZvaWQgYmF0YWR2X3JlY3ZfaGFuZGxlcl9pbml0KHZvaWQpXG4tLVxubmV0L2JhdG1hbi1hZHYvbWFpbi5jLTUzNy1cdC8qIG11bHRpY2FzdCBwYWNrZXQgKi9cbm5ldC9iYXRtYW4tYWR2L21haW4uYzo1Mzg6XHRiYXRhZHZfcnhfaGFuZGxlcltCQVRBRFZfTUNBU1RdID0gYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0O1xubmV0L2JhdG1hbi1hZHYvbWFpbi5jLTUzOS1cbi0tXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmM9MTIxMj1pbnQgYmF0YWR2X3JlY3ZfYmNhc3RfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jLTEzMjgtLyoqXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmM6MTMyOTogKiBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQoKSAtIHByb2Nlc3MgcmVjZWl2ZWQgYmF0bWFuLWFkdiBtdWx0aWNhc3QgcGFja2V0XG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMtMTMzMC0gKiBAc2tiOiB0aGUgcmVjZWl2ZWQgYmF0bWFuLWFkdiBtdWx0aWNhc3QgcGFja2V0XG4tLVxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jLTEzMzgtICovXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmM6MTMzOTppbnQgYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMtMTM0MC1cdFx0XHQgICAgIHN0cnVjdCBiYXRhZHZfaGFyZF9pZmFjZSAqcmVjdl9pZilcbi0tXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmg9Mjg9aW50IGJhdGFkdl9yZWN2X2JjYXN0X3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuaC0zMC0jaWZkZWYgQ09ORklHX0JBVE1BTl9BRFZfTUNBU1Rcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuaDozMTppbnQgYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmgtMzItXHRcdFx0ICAgICBzdHJ1Y3QgYmF0YWR2X2hhcmRfaWZhY2UgKnJlY3ZfaWYpO1xubmV0L2JhdG1hbi1hZHYvcm91dGluZy5oLTMzLSNlbHNlXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmg6MzQ6c3RhdGljIGlubGluZSBpbnQgYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmgtMzUtXHRcdFx0XHRcdCAgIHN0cnVjdCBiYXRhZHZfaGFyZF9pZmFjZSAqcmVjdl9pZilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkzNzUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJBVE1BTi1BRFYgTXVsdGljYXN0IERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgaW50byB0aGlzIGBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXRgIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgaXQmIzM5O3Mgb25seSAqZnVsbHkqIGltcGxlbWVudGVkIHdoZW4gYENPTkZJR19CQVRNQU5fQURWX01DQVNUYCBpcyBlbmFibGVkLiBUaGF0JiMzOTtzIGEgZ2l2ZW4uIFNvLCB5ZXMsIHRoZSBtdWx0aWNhc3QgZnVuY3Rpb25hbGl0eSBkZWZpbml0ZWx5IGhpbmdlcyBvbiBgQkFUTUFOX0FEVl9NQ0FTVGAuIE5vdywgdGhlIGJyb2FkZXIgcXVlc3Rpb246IHdoYXQgZWxzZSBkbyBJIG5lZWQ/IEkgYXNzdW1lIHRoZSBiYXNlIEJBVE1BTi1BRFYgZnVuY3Rpb25hbGl0eSwgbWVhbmluZyBgQkFUTUFOX0FEVmAgaXRzZWxmIGlzIG5lY2Vzc2FyeS4gVGhhdCYjMzk7cyBwcm9iYWJseSB0aGUgY29yZSBjb25maWcsIHJpZ2h0PwoKQnV0IEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIEFyZSB0aGVyZSBhbnkgKm90aGVyKiBkZXBlbmRlbmNpZXMgbHVya2luZyBpbiB0aGUgc2hhZG93cz8gVGltZSB0byBkaXZlIGludG8gdGhlIGBuZXQvYmF0bWFuLWFkdi9LY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSBkZWZpbml0aXZlIHNvdXJjZS4gSSYjMzk7bGwgc2NvdXIgdGhhdCBjb25maWcgZmlsZSB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgc25lYWt5LCBpbmRpcmVjdCBkZXBlbmRlbmNpZXMgdGhhdCBJJiMzOTttIG1pc3NpbmcuIE5lZWQgdG8gYmUgdGhvcm91Z2ggaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvYmF0bWFuLWFkdi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjIENvcHlyaWdodCAoQykgQi5BLlQuTS5BLk4uIGNvbnRyaWJ1dG9yczpcbiAgIDM6XHQjXG4gICA0Olx0IyBNYXJlayBMaW5kbmVyLCBTaW1vbiBXdW5kZXJsaWNoXG4gICA1Olx0XG4gICA2Olx0I1xuICAgNzpcdCMgQi5BLlQuTS5BLk4gbWVzaGluZyBwcm90b2NvbFxuICAgODpcdCNcbiAgIDk6XHRcbiAgMTA6XHRjb25maWcgQkFUTUFOX0FEVlxuICAxMTpcdFx0dHJpc3RhdGUgXCYjMzQ7Qi5BLlQuTS5BLk4uIEFkdmFuY2VkIE1lc2hpbmcgUHJvdG9jb2xcJiMzNDtcbiAgMTI6XHRcdHNlbGVjdCBDUkMzMlxuICAxMzpcdFx0aGVscFxuICAxNDpcdFx0ICBCLkEuVC5NLkEuTi4gKGJldHRlciBhcHByb2FjaCB0byBtb2JpbGUgYWQtaG9jIG5ldHdvcmtpbmcpIGlzXG4gIDE1Olx0XHQgIGEgcm91dGluZyBwcm90b2NvbCBmb3IgbXVsdGktaG9wIGFkLWhvYyBtZXNoIG5ldHdvcmtzLiBUaGVcbiAgMTY6XHRcdCAgbmV0d29ya3MgbWF5IGJlIHdpcmVkIG9yIHdpcmVsZXNzLiBTZWVcbiAgMTc6XHRcdCAgaHR0cHM6Ly93d3cub3Blbi1tZXNoLm9yZy8gZm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIHVzZXIgc3BhY2VcbiAgMTg6XHRcdCAgdG9vbHMuXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIEJBVE1BTl9BRFZfQkFUTUFOX1ZcbiAgMjE6XHRcdGJvb2wgXCYjMzQ7Qi5BLlQuTS5BLk4uIFYgcHJvdG9jb2xcJiMzNDtcbiAgMjI6XHRcdGRlcGVuZHMgb24gQkFUTUFOX0FEViBcdTAwMjZcdTAwMjYgIShDRkc4MDIxMT1tIFx1MDAyNlx1MDAyNiBCQVRNQU5fQURWPXkpXG4gIDIzOlx0XHRkZWZhdWx0IHlcbiAgMjQ6XHRcdGhlbHBcbiAgMjU6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgQi5BLlQuTS5BLk4uIFYgcHJvdG9jb2wsIHRoZSBzdWNjZXNzb3JcbiAgMjY6XHRcdCAgb2YgdGhlIGN1cnJlbnRseSB1c2VkIEIuQS5ULk0uQS5OLiBJViBwcm90b2NvbC4gVGhlIG1haW5cbiAgMjc6XHRcdCAgY2hhbmdlcyBpbmNsdWRlIHNwbGl0dGluZyBvZiB0aGUgT0dNIHByb3RvY29sIGludG8gYSBuZWlnaGJvclxuICAyODpcdFx0ICBkaXNjb3ZlcnkgcHJvdG9jb2wgKEVjaG8gTG9jYXRpb24gUHJvdG9jb2wsIEVMUCkgYW5kIGEgbmV3IE9HTVxuICAyOTpcdFx0ICBQcm90b2NvbCBPR012MiBmb3IgZmxvb2RpbmcgcHJvdG9jb2wgaW5mb3JtYXRpb24gdGhyb3VnaCB0aGVcbiAgMzA6XHRcdCAgbmV0d29yaywgYXMgd2VsbCBhcyBhIHRocm91Z2hwdXQgYmFzZWQgbWV0cmljLlxuICAzMTpcdFx0ICBCLkEuVC5NLkEuTi4gViBpcyBjdXJyZW50bHkgY29uc2lkZXJlZCBleHBlcmltZW50YWwgYW5kIG5vdFxuICAzMjpcdFx0ICBjb21wYXRpYmxlIHRvIEIuQS5ULk0uQS5OLiBJViBuZXR3b3Jrcy5cbiAgMzM6XHRcbiAgMzQ6XHRjb25maWcgQkFUTUFOX0FEVl9CTEFcbiAgMzU6XHRcdGJvb2wgXCYjMzQ7QnJpZGdlIExvb3AgQXZvaWRhbmNlXCYjMzQ7XG4gIDM2Olx0XHRkZXBlbmRzIG9uIEJBVE1BTl9BRFYgXHUwMDI2XHUwMDI2IElORVRcbiAgMzc6XHRcdHNlbGVjdCBDUkMxNlxuICAzODpcdFx0c2VsZWN0IE5FVF9DUkMzMkNcbiAgMzk6XHRcdGRlZmF1bHQgeVxuICA0MDpcdFx0aGVscFxuICA0MTpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIEJMQSAoQnJpZGdlIExvb3AgQXZvaWRhbmNlKSwgYSBtZWNoYW5pc21cbiAgNDI6XHRcdCAgdG8gYXZvaWQgRXRoZXJuZXQgZnJhbWVzIGxvb3Bpbmcgd2hlbiBtZXNoIG5vZGVzIGFyZSBjb25uZWN0ZWRcbiAgNDM6XHRcdCAgdG8gYm90aCB0aGUgc2FtZSBMQU4gYW5kIHRoZSBzYW1lIG1lc2guIElmIHlvdSB3aWxsIG5ldmVyIHVzZVxuICA0NDpcdFx0ICBtb3JlIHRoYW4gb25lIG1lc2ggbm9kZSBpbiB0aGUgc2FtZSBMQU4sIHlvdSBjYW4gc2FmZWx5IHJlbW92ZVxuICA0NTpcdFx0ICB0aGlzIGZlYXR1cmUgYW5kIHNhdmUgc29tZSBzcGFjZS5cbiAgNDY6XHRcbiAgNDc6XHRjb25maWcgQkFUTUFOX0FEVl9EQVRcbiAgNDg6XHRcdGJvb2wgXCYjMzQ7RGlzdHJpYnV0ZWQgQVJQIFRhYmxlXCYjMzQ7XG4gIDQ5Olx0XHRkZXBlbmRzIG9uIEJBVE1BTl9BRFYgXHUwMDI2XHUwMDI2IElORVRcbiAgNTA6XHRcdGRlZmF1bHQgeVxuICA1MTpcdFx0aGVscFxuICA1MjpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIERBVCAoRGlzdHJpYnV0ZWQgQVJQIFRhYmxlKSwgYSBESFQgYmFzZWRcbiAgNTM6XHRcdCAgbWVjaGFuaXNtIHRoYXQgaW5jcmVhc2VzIEFSUCByZWxpYWJpbGl0eSBvbiBzcGFyc2Ugd2lyZWxlc3NcbiAgNTQ6XHRcdCAgbWVzaCBuZXR3b3Jrcy4gSWYgeW91IHRoaW5rIHRoYXQgeW91ciBuZXR3b3JrIGRvZXMgbm90IG5lZWRcbiAgNTU6XHRcdCAgdGhpcyBvcHRpb24geW91IGNhbiBzYWZlbHkgcmVtb3ZlIGl0IGFuZCBzYXZlIHNvbWUgc3BhY2UuXG4gIDU2Olx0XG4gIDU3Olx0Y29uZmlnIEJBVE1BTl9BRFZfTUNBU1RcbiAgNTg6XHRcdGJvb2wgXCYjMzQ7TXVsdGljYXN0IG9wdGltaXNhdGlvblwmIzM0O1xuICA1OTpcdFx0ZGVwZW5kcyBvbiBCQVRNQU5fQURWIFx1MDAyNlx1MDAyNiBJTkVUIFx1MDAyNlx1MDAyNiAhKEJSSURHRT1tIFx1MDAyNlx1MDAyNiBCQVRNQU5fQURWPXkpXG4gIDYwOlx0XHRkZWZhdWx0IHlcbiAgNjE6XHRcdGhlbHBcbiAgNjI6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgbXVsdGljYXN0IG9wdGltaXNhdGlvbiB3aGljaCBhaW1zIHRvXG4gIDYzOlx0XHQgIHJlZHVjZSB0aGUgYWlyIG92ZXJoZWFkIHdoaWxlIGltcHJvdmluZyB0aGUgcmVsaWFiaWxpdHkgb2ZcbiAgNjQ6XHRcdCAgbXVsdGljYXN0IG1lc3NhZ2VzLlxuICA2NTpcdFxuICA2NjpcdGNvbmZpZyBCQVRNQU5fQURWX0RFQlVHXG4gIDY3Olx0XHRib29sIFwmIzM0O0IuQS5ULk0uQS5OLiBkZWJ1Z2dpbmdcJiMzNDtcbiAgNjg6XHRcdGRlcGVuZHMgb24gQkFUTUFOX0FEVlxuICA2OTpcdFx0aGVscFxuICA3MDpcdFx0ICBUaGlzIGlzIGFuIG9wdGlvbiBmb3IgdXNlIGJ5IGRldmVsb3BlcnM7IG1vc3QgcGVvcGxlIHNob3VsZFxuICA3MTpcdFx0ICBzYXkgTiBoZXJlLiBUaGlzIGVuYWJsZXMgY29tcGlsYXRpb24gb2Ygc3VwcG9ydCBmb3JcbiAgNzI6XHRcdCAgb3V0cHV0dGluZyBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gdG8gdGhlIHRyYWNpbmcgYnVmZmVyLiBUaGUgb3V0cHV0IGlzXG4gIDczOlx0XHQgIGNvbnRyb2xsZWQgdmlhIHRoZSBiYXRhZHYgbmV0ZGV2IHNwZWNpZmljIGxvZ19sZXZlbCBzZXR0aW5nLlxuICA3NDpcdFxuICA3NTpcdGNvbmZpZyBCQVRNQU5fQURWX1RSQUNJTkdcbiAgNzY6XHRcdGJvb2wgXCYjMzQ7Qi5BLlQuTS5BLk4uIHRyYWNpbmcgc3VwcG9ydFwmIzM0O1xuICA3NzpcdFx0ZGVwZW5kcyBvbiBCQVRNQU5fQURWXG4gIDc4Olx0XHRkZXBlbmRzIG9uIEVWRU5UX1RSQUNJTkdcbiAgNzk6XHRcdGhlbHBcbiAgODA6XHRcdCAgVGhpcyBpcyBhbiBvcHRpb24gZm9yIHVzZSBieSBkZXZlbG9wZXJzOyBtb3N0IHBlb3BsZSBzaG91bGRcbiAgODE6XHRcdCAgc2F5IE4gaGVyZS4gU2VsZWN0IHRoaXMgb3B0aW9uIHRvIGdhdGhlciB0cmFjZXMgbGlrZSB0aGUgZGVidWdcbiAgODI6XHRcdCAgbWVzc2FnZXMgdXNpbmcgdGhlIGdlbmVyaWMgdHJhY2luZyBpbmZyYXN0cnVjdHVyZSBvZiB0aGUga2VybmVsLlxuICA4MzpcdFx0ICBCQVRNQU5fQURWX0RFQlVHIG11c3QgYWxzbyBiZSBzZWxlY3RlZCB0byBnZXQgdHJhY2UgZXZlbnRzIGZvclxuICA4NDpcdFx0ICBiYXRhZHZfZGJnLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxODo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDk3OQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24gYEJBVE1BTl9BRFZfTUNBU1RgLiBJdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpdCBoaW5nZXMgb24gYEJBVE1BTl9BRFZgLCBgSU5FVGAsIGFuZCB0aGUgaW52ZXJzZSBvZiBhIGNvbWJpbmF0aW9uIG9mIGBCUklER0U9bWAgYW5kIGBCQVRNQU5fQURWPXlgLiBTbywgcmVhbGx5LCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBgQkFUTUFOX0FEVmAgYW5kIGBCQVRNQU5fQURWX01DQVNUYCBhcmUgZW5hYmxlZCwgYW5kIGBJTkVUYCB3aGljaCBJIGFzc3VtZSBpcyB1c3VhbGx5IGFscmVhZHkgaGFuZGxlZC4gVGhhdCBzZWVtcyBsb2dpY2FsLgoKTm93LCBsZXQmIzM5O3MgZ2V0IGludG8gdGhlIGNvZGUgaXRzZWxmLiBUaGUgcGF0Y2ggdG91Y2hlcyBgYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyYC4gT2theSwgYW5kIHRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3NgLiBSaWdodCwgYW5kIGBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3NgIGlzLCBpbiB0dXJuLCBjYWxsZWQgYnkgYGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldGAgYW5kIHNvbWUgb3RoZXJzLiBTbywgYGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldGAgc2VlbXMgbGlrZSBhIGtleSBmdW5jdGlvbiB0byB1bmRlcnN0YW5kLCBhcyB3ZWxsIGFzIGBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3NgLiBXYWl0IGEgbWludXRlLCBgYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzYCBhbmQgYGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldGAgYXJlIGJvdGggbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMsIHNvIHRoaXMgaXMgYW4gQVBJIGVudHJ5IHBvaW50LiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JhdG1hbi1hZHYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9iYXRtYW4tYWR2L2JhdF92X29nbS5jPTgwMT1iYXRhZHZfdl9vZ21fcHJvY2Vzc19wZXJfb3V0aWYoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbi0tXG5uZXQvYmF0bWFuLWFkdi9iYXRfdl9vZ20uYy04MjItXHRpZiAoc2Vxbm9fYWdlIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBpZl9vdXRnb2luZyA9PSBCQVRBRFZfSUZfREVGQVVMVClcbm5ldC9iYXRtYW4tYWR2L2JhdF92X29nbS5jOjgyMzpcdFx0YmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzKGJhdF9wcml2LCBCQVRBRFZfT0dNMiwgb3JpZ19ub2RlLFxubmV0L2JhdG1hbi1hZHYvYmF0X3Zfb2dtLmMtODI0LVx0XHRcdFx0XHQgICAgICAgTlVMTCxcbi0tXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmM9MTA5NT1pbnQgYmF0YWR2X3JlY3ZfdW5pY2FzdF90dmx2KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jLTExMjMtXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmM6MTEyNDpcdHJldCA9IGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2VzcyhiYXRfcHJpdiwgQkFUQURWX1VOSUNBU1RfVFZMVixcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYy0xMTI1LVx0XHRcdFx0XHQgICAgIE5VTEwsIHNrYiwgdHZsdl9idWZmLFxuLS1cbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYz0xMzM5PWludCBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMtMTM3NS1cbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYzoxMzc2Olx0cmV0ID0gYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzKGJhdF9wcml2LCBCQVRBRFZfTUNBU1QsIE5VTEwsIHNrYixcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYy0xMzc3LVx0XHRcdFx0XHQgICAgIHR2bHZfYnVmZiwgdHZsdl9idWZmX2xlbik7XG4tLVxubmV0L2JhdG1hbi1hZHYvdHZsdi5jPTQ1OD1zdGF0aWMgYm9vbCBiYXRhZHZfdHZsdl9jb250YWluZXJzX2NvbnRhaW4odm9pZCAqdHZsdl92YWx1ZSxcbi0tXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNDkwLS8qKlxubmV0L2JhdG1hbi1hZHYvdHZsdi5jOjQ5MTogKiBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3MoKSAtIHBhcnNlIHRoZSBnaXZlbiB0dmx2IGJ1ZmZlciB0byBjYWxsIHRoZVxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTQ5Mi0gKiAgYXBwcm9wcmlhdGUgaGFuZGxlcnNcbi0tXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNTAyLSAqL1xubmV0L2JhdG1hbi1hZHYvdHZsdi5jOjUwMzppbnQgYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNTA0LVx0XHRcdFx0ICAgdTggcGFja2V0X3R5cGUsXG4tLVxubmV0L2JhdG1hbi1hZHYvdHZsdi5jPTU4Mj12b2lkIGJhdGFkdl90dmx2X29nbV9yZWNlaXZlKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXG4tLVxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTU5Ny1cbm5ldC9iYXRtYW4tYWR2L3R2bHYuYzo1OTg6XHRiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3MoYmF0X3ByaXYsIEJBVEFEVl9JVl9PR00sIG9yaWdfbm9kZSwgTlVMTCxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy01OTktXHRcdFx0XHQgICAgICAgdHZsdl92YWx1ZSwgdHZsdl92YWx1ZV9sZW4pO1xuLS1cbm5ldC9iYXRtYW4tYWR2L3R2bHYuaD00MD12b2lkIGJhdGFkdl90dmx2X2hhbmRsZXJfdW5yZWdpc3RlcihzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxubmV0L2JhdG1hbi1hZHYvdHZsdi5oLTQxLVx0XHRcdFx0ICAgIHU4IHR5cGUsIHU4IHZlcnNpb24pO1xubmV0L2JhdG1hbi1hZHYvdHZsdi5oOjQyOmludCBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3Moc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcbm5ldC9iYXRtYW4tYWR2L3R2bHYuaC00My1cdFx0XHRcdCAgIHU4IHBhY2tldF90eXBlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxODo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjQyMwoJCQkJCQkJb3V0cHV0OiAxMzQKCQkJCQkJCXRob3VnaHRzOiAzNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBDYW5kaWRhdGUgQXNzZXNzbWVudDogQmF0bWFuLWFkdiBNdWx0aWNhc3QgUGFja2V0IEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O3ZlIHplcm9lZCBpbiBvbiBhIHByb21pc2luZyBmdXp6aW5nIHRhcmdldC4gYGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2Vzc2AgYW5kIGBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXRgIGFyZSB0aGUga2V5IGZvY3VzIHN5bWJvbHMgaGVyZS4gVGhlIHN1bW1hcnkgaW5kaWNhdGVzIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGhhcmRlbmVkIGBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJgIGZ1bmN0aW9uIGFuZCBpbnRlZ3JhdGVzIGl0IGludG8gYGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcmAgdG8gYWRkcmVzcyBhIHBvdGVudGlhbCB0cmFuc3BvcnQgaGVhZGVyIG9mZnNldCBjYWxjdWxhdGlvbiB2dWxuZXJhYmlsaXR5LCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBtdWx0aWNhc3QgcGFja2V0cyB3aXRoaW4gYmF0bWFuLWFkdi4gRnVuY3Rpb25hbGx5LCBpdCYjMzk7cyBhIGNoYW5nZSB0byB0aGUgbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYywgYW5kIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHdoaWNoIGlzIGV4Y2VsbGVudCBmb3IgZnV6emluZy4KCk15IGFuYWx5c2lzIGNvbmZpcm1zIHRoYXQgYGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldGAgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyBgQkFUQURWX01DQVNUYCwgY2FsbGluZyBgYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzYCB3aGljaCB1c2VzIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgLiBJIHdhbnRlZCB0byBiZSBjZXJ0YWluIGFib3V0IHRoZSBjYWxsIGhpZXJhcmNoeSB0byBmdWxseSB1bmRlcnN0YW5kIGhvdyB0aGlzIGFyZWEgb2YgdGhlIGNvZGUgZnVuY3Rpb25zLgoKTm93LCBhIHF1aWNrIGNoZWNrIG9mIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gYEJBVE1BTl9BRFZfTUNBU1RgIGlzIHN1ZmZpY2llbnQuIEl0IHJlcXVpcmVzIGBCQVRNQU5fQURWYCwgYElORVRgLCBhbmQgZXhjbHVkZXMgdGhlIGNhc2Ugd2hlcmUgYEJSSURHRT1tYCBhbmQgYEJBVE1BTl9BRFY9eWAuIFRoaXMgbWVhbnMgd2UgbmVlZCBib3RoIGBCQVRNQU5fQURWYCBhbmQgYEJBVE1BTl9BRFZfTUNBU1RgIGVuYWJsZWQgaW4gdGhlIGNvbmZpZy4KCkFscmlnaHQsIHdpdGggdGhhdCB1bmRlcnN0YW5kaW5nLCBJJiMzOTttIGNvbmZpZGVudCBpbiB0YWdnaW5nIHRoaXMgYXMgYSBmdXp6aW5nIGNhbmRpZGF0ZS4gSSYjMzk7bGwgdXRpbGl6ZSB0aGUgc2V0LXJlc3VsdHMgdG9vbCB0byBkb2N1bWVudCB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkFUTUFOX0FEViYjMzQ7LAogICAgJiMzNDtCQVRNQU5fQURWX01DQVNUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzJiMzNDssCiAgICAmIzM0O2JhdGFkdl9yZWN2X21jYXN0X3BhY2tldCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgaGFyZGVuZWQgdmVyc2lvbiBvZiBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXIgYW5kIHVzZXMgaXQgaW4gYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyIHRvIGZpeCBhIHBvdGVudGlhbCBpc3N1ZSB3aXRoIHRyYW5zcG9ydCBoZWFkZXIgb2Zmc2V0IGNhbGN1bGF0aW9uIGZvciBtdWx0aWNhc3QgcGFja2V0cyBpbiBiYXRtYW4tYWR2LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JBVE1BTl9BRFYmIzM0OywKICAgICYjMzQ7QkFUTUFOX0FEVl9NQ0FTVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2VzcyYjMzQ7LAogICAgJiMzNDtiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGhhcmRlbmVkIHZlcnNpb24gb2Ygc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyIGFuZCB1c2VzIGl0IGluIGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlciB0byBmaXggYSBwb3RlbnRpYWwgaXNzdWUgd2l0aCB0cmFuc3BvcnQgaGVhZGVyIG9mZnNldCBjYWxjdWxhdGlvbiBmb3IgbXVsdGljYXN0IHBhY2tldHMgaW4gYmF0bWFuLWFkdi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxODo1OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE4OjU5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBoYXJkZW5lZCB2ZXJzaW9uIG9mIGBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJgIChgc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWxgKSB3aGljaCBjaGVja3MgZm9yIGludGVnZXIgdHJ1bmNhdGlvbiBhbmQgaW52YWxpZCBvZmZzZXRzIChlLmcuLCBgfjBVYCkgd2hlbiBzZXR0aW5nIHRoZSBgc2tiLVx1MDAzZXRyYW5zcG9ydF9oZWFkZXJgIGZpZWxkLiBJdCB0aGVuIGFwcGxpZXMgdGhpcyBuZXcgZnVuY3Rpb24gaW4gYGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcmAgdG8gcHJldmVudCBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBjYXVzZWQgYnkgMTYtYml0IHRydW5jYXRpb24gb2YgdGhlIHRyYW5zcG9ydCBoZWFkZXIgb2Zmc2V0LiBUaGVzZSBjaGFuZ2VzIGFyZSBkZXNpZ25lZCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgb3Igd3JpdGVzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOLiBUaGVyZSBpcyBubyBhbGxvY2F0aW9uIG9mIG5ldyBidWZmZXJzLCBubyBjaGFuZ2VzIHRvIGhvdyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBoYW5kbGVkLCBhbmQgbm8gc3RydWN0dXJlcyBiZWluZyBjb3BpZWQgdG8gdXNlciBzcGFjZSB0aGF0IGNvdWxkIGxlYWsgdW5pbml0aWFsaXplZCBieXRlcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTAzNDY3ODZlNjViOWY0NTgxYzc5YzA5YTY4YmRmNThhNDc5MjhiMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDE4OjU4OjQ3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9za2J1ZmYuaCBiL2luY2x1ZGUvbGludXgvc2tidWZmLmgKaW5kZXggMjJlZGExZDU0YTBlOC4uZGJlY2VhZjVjM2IzOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9za2J1ZmYuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oCkBAIC0zMTI2LDYgJiM0MzszMTI2LDMyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlza2ItJmd0O3RyYW5zcG9ydF9oZWFkZXIgJiM0Mzs9IG9mZnNldDsKIH0KIAomIzQzOy8qKgomIzQzOyAqIHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsIC0gY29uZGl0aW9uYWxseSBzZXQgdHJhbnNwb3J0IGhlYWRlcgomIzQzOyAqIEBza2I6IGJ1ZmZlciB0byBhbHRlcgomIzQzOyAqIEBvZmZzZXQ6IG9mZnNldCB0byBhZGQgdG8gc2tiLSZndDtkYXRhCiYjNDM7ICoKJiM0MzsgKiBIYXJkZW5lZCB2ZXJzaW9uIG9mIHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcigpLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuczogdHJ1ZSBpZiB0aGUgb3BlcmF0aW9uIHdhcyBhIHN1Y2Nlc3MuCiYjNDM7ICovCiYjNDM7c3RhdGljIGlubGluZSBib29sIF9fbXVzdF9jaGVjawomIzQzO3NrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IGludCBvZmZzZXQpCiYjNDM7ewomIzQzOwlsb25nIHRyYW5zcG9ydF9vZmZzZXQgPSBza2ItJmd0O2RhdGEgLSBza2ItJmd0O2hlYWQgJiM0Mzsgb2Zmc2V0OwomIzQzOwomIzQzOwlpZiAodW5saWtlbHkodHJhbnNwb3J0X29mZnNldCAhPQomIzQzOwkJICAgICAodHlwZW9mKHNrYi0mZ3Q7dHJhbnNwb3J0X2hlYWRlcikpdHJhbnNwb3J0X29mZnNldCkpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CWlmICh1bmxpa2VseSh0cmFuc3BvcnRfb2Zmc2V0ID09CiYjNDM7CQkgICAgICh0eXBlb2Yoc2tiLSZndDt0cmFuc3BvcnRfaGVhZGVyKSl+MFUpKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwlza2ItJmd0O3RyYW5zcG9ydF9oZWFkZXIgPSB0cmFuc3BvcnRfb2Zmc2V0OwomIzQzOwlyZXR1cm4gdHJ1ZTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIgKnNrYl9uZXR3b3JrX2hlYWRlcihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewogCXJldHVybiBza2ItJmd0O2hlYWQgJiM0Mzsgc2tiLSZndDtuZXR3b3JrX2hlYWRlcjsKZGlmZiAtLWdpdCBhL25ldC9iYXRtYW4tYWR2L3R2bHYuYyBiL25ldC9iYXRtYW4tYWR2L3R2bHYuYwppbmRleCAxYzlmYjIxOTg1ZjZhLi5jMzg0ZGIxNmJjYWMxIDEwMDY0NAotLS0gYS9uZXQvYmF0bWFuLWFkdi90dmx2LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JhdG1hbi1hZHYvdHZsdi5jCkBAIC00MzMsOCAmIzQzOzQzMywxMSBAQCBzdGF0aWMgaW50IGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcihzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LAogCQkJcmV0dXJuIE5FVF9SWF9TVUNDRVNTOwogCiAJCXR2bHZfb2Zmc2V0ID0gKHVuc2lnbmVkIGNoYXIgKil0dmx2X3ZhbHVlIC0gc2tiLSZndDtkYXRhOwomIzQzOwkJaWYgKCFza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJfY2FyZWZ1bChza2IsCiYjNDM7CQkJCQkJICAgICAgdHZsdl9vZmZzZXQgJiM0MzsgdHZsdl92YWx1ZV9sZW4pKQomIzQzOwkJCXJldHVybiAtRUlOVkFMOwomIzQzOwogCQlza2Jfc2V0X25ldHdvcmtfaGVhZGVyKHNrYiwgdHZsdl9vZmZzZXQpOwotCQlza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXIoc2tiLCB0dmx2X29mZnNldCAmIzQzOyB0dmx2X3ZhbHVlX2xlbik7CiAKIAkJcmV0dXJuIHR2bHZfaGFuZGxlci0mZ3Q7bWNhc3RfaGFuZGxlcihiYXRfcHJpdiwgc2tiKTsKIAl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxODo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDgxCgkJCQkJCQlvdXRwdXQ6IDE5OQoJCQkJCQkJdGhvdWdodHM6IDg3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoOiBBZGRyZXNzaW5nIEludGVnZXIgT3ZlcmZsb3cgaW4gU0tCIFRyYW5zcG9ydCBIZWFkZXIgU2V0dGluZyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlLiBJdCYjMzk7cyByZXBsYWNpbmcgdGhlIHN0YW5kYXJkIGBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJgIHdpdGggYSAmIzM0O2NhcmVmdWwmIzM0OyB2ZXJzaW9uLCBgc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWxgLCB3aXRoaW4gdGhlIGBuZXQvYmF0bWFuLWFkdi90dmx2LmNgIGZpbGUuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzLCBpcyB0aGlzIGFib3V0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5PyBObywgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBwdXJlbHkgYSBib3VuZHMgY2hlY2ssIGFuIG92ZXJmbG93IGNoZWNrLCBzcGVjaWZpY2FsbHkuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGNvZGU6CgpgYGBjCnN0YXRpYyBpbmxpbmUgYm9vbCBfX211c3RfY2hlY2sKc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3QgaW50IG9mZnNldCkKewoJbG9uZyB0cmFuc3BvcnRfb2Zmc2V0ID0gc2tiLSZndDtkYXRhIC0gc2tiLSZndDtoZWFkICYjNDM7IG9mZnNldDsKCglpZiAodW5saWtlbHkodHJhbnNwb3J0X29mZnNldCAhPQoJCSAgICAgKHR5cGVvZihza2ItJmd0O3RyYW5zcG9ydF9oZWFkZXIpKXRyYW5zcG9ydF9vZmZzZXQpKQoJCXJldHVybiBmYWxzZTsKCglpZiAodW5saWtlbHkodHJhbnNwb3J0X29mZnNldCA9PQoJCSAgICAgKHR5cGVvZihza2ItJmd0O3RyYW5zcG9ydF9oZWFkZXIpKX4wVSkpCgkJcmV0dXJuIGZhbHNlOwoKCXNrYi0mZ3Q7dHJhbnNwb3J0X2hlYWRlciA9IHRyYW5zcG9ydF9vZmZzZXQ7CglyZXR1cm4gdHJ1ZTsKfQpgYGAKClRoaXMgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQgY2hlY2tzIGlmIHRoZSBgdHJhbnNwb3J0X29mZnNldGAgd291bGQgd3JhcCBhcm91bmQgd2hlbiBzdG9yZWQgaW4gYHNrYi0mZ3Q7dHJhbnNwb3J0X2hlYWRlcmAsIHdoaWNoIGlzIGEgYHUxNmAgb3IgYHVuc2lnbmVkIGludGAgZGVwZW5kaW5nIG9uIHRoZSBhcmNoaXRlY3R1cmUuIEl0IGFsc28gY2hlY2tzIGZvciB0aGUgaW52YWxpZCBvZmZzZXQsIGB+MFVgICgweGZmZmYgZm9yIGEgYHUxNmApLiBUaGlzIHByZXZlbnRzIHRoZSBgc2tiLSZndDt0cmFuc3BvcnRfaGVhZGVyYCBmcm9tIGJlaW5nIHNldCB0byBhbiBpbnZhbGlkIG9yIG91dC1vZi1ib3VuZHMgb2Zmc2V0LCBtaXRpZ2F0aW5nIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZC93cml0ZSBsYXRlciB3aGVuIGBza2JfdHJhbnNwb3J0X2hlYWRlcihza2IpYCBpcyBjYWxsZWQuCgpMb29raW5nIGF0IHRoZSBjb250ZXh0IGluIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgOgoKYGBgYwoJCXR2bHZfb2Zmc2V0ID0gKHVuc2lnbmVkIGNoYXIgKil0dmx2X3ZhbHVlIC0gc2tiLSZndDtkYXRhOwoJCWlmICghc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWwoc2tiLAoJCQkJCQkgICAgICB0dmx2X29mZnNldCAmIzQzOyB0dmx2X3ZhbHVlX2xlbikpCgkJCXJldHVybiAtRUlOVkFMOwoKCQlza2Jfc2V0X25ldHdvcmtfaGVhZGVyKHNrYiwgdHZsdl9vZmZzZXQpOwpgYGAKCk9rYXksIGl0JiMzOTtzIGp1c3Qgc2V0dGluZyB0aGUgdHJhbnNwb3J0IGhlYWRlciBiYXNlZCBvbiBhbiBvZmZzZXQuIElmIHRoZSBgc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWxgIGZhaWxzLCBpdCByZXR1cm5zIGAtRUlOVkFMYC4gVGhpcyBpcyBhbGwgYWJvdXQgcHJldmVudGluZyAxNi1iaXQgdHJ1bmNhdGlvbiBsZWFkaW5nIHRvIE9PQiBhY2Nlc3NlcywgYW5kIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlJiMzOTtzIG5vIG5ldyBhbGxvY2F0aW9uLCBubyBjaGFuZ2VzIHRvIGhvdyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyB0cmVhdGVkLCBhbmQgbm8gc3RydWN0dXJlcyBiZWluZyBjb3BpZWQgdG8gdXNlciBzcGFjZSB0aGF0IGNvdWxkIGxlYWsgdW5pbml0aWFsaXplZCBieXRlcy4gVGh1cywgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzbiYjMzk7dCBuZWNlc3NhcnkgaGVyZS4gVGhlIHBhdGNoIGFkZHJlc3NlcyBhIGtub3duIGludGVnZXIgb3ZlcmZsb3cgaXNzdWUgdGhhdCBLQVNBTiBhbHJlYWR5IGNhdGNoZXMuIE5lZWRzS01TQU4gPSBmYWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTg6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGhhcmRlbmVkIHZlcnNpb24gb2YgYHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcmAgKGBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJfY2FyZWZ1bGApIHdoaWNoIGNoZWNrcyBmb3IgaW50ZWdlciB0cnVuY2F0aW9uIGFuZCBpbnZhbGlkIG9mZnNldHMgKGUuZy4sIGB+MFVgKSB3aGVuIHNldHRpbmcgdGhlIGBza2ItXHUwMDNldHJhbnNwb3J0X2hlYWRlcmAgZmllbGQuIEl0IHRoZW4gYXBwbGllcyB0aGlzIG5ldyBmdW5jdGlvbiBpbiBgYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyYCB0byBwcmV2ZW50IHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGNhdXNlZCBieSAxNi1iaXQgdHJ1bmNhdGlvbiBvZiB0aGUgdHJhbnNwb3J0IGhlYWRlciBvZmZzZXQuIFRoZXNlIGNoYW5nZXMgYXJlIGRlc2lnbmVkIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBvciB3cml0ZXMsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4uIFRoZXJlIGlzIG5vIGFsbG9jYXRpb24gb2YgbmV3IGJ1ZmZlcnMsIG5vIGNoYW5nZXMgdG8gaG93IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGhhbmRsZWQsIGFuZCBubyBzdHJ1Y3R1cmVzIGJlaW5nIGNvcGllZCB0byB1c2VyIHNwYWNlIHRoYXQgY291bGQgbGVhayB1bmluaXRpYWxpemVkIGJ5dGVzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGhhcmRlbmVkIHZlcnNpb24gb2YgYHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcmAgKGBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJfY2FyZWZ1bGApIHdoaWNoIGNoZWNrcyBmb3IgaW50ZWdlciB0cnVuY2F0aW9uIGFuZCBpbnZhbGlkIG9mZnNldHMgKGUuZy4sIGB+MFVgKSB3aGVuIHNldHRpbmcgdGhlIGBza2ItXHUwMDNldHJhbnNwb3J0X2hlYWRlcmAgZmllbGQuIEl0IHRoZW4gYXBwbGllcyB0aGlzIG5ldyBmdW5jdGlvbiBpbiBgYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyYCB0byBwcmV2ZW50IHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGNhdXNlZCBieSAxNi1iaXQgdHJ1bmNhdGlvbiBvZiB0aGUgdHJhbnNwb3J0IGhlYWRlciBvZmZzZXQuIFRoZXNlIGNoYW5nZXMgYXJlIGRlc2lnbmVkIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBvciB3cml0ZXMsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4uIFRoZXJlIGlzIG5vIGFsbG9jYXRpb24gb2YgbmV3IGJ1ZmZlcnMsIG5vIGNoYW5nZXMgdG8gaG93IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGhhbmRsZWQsIGFuZCBubyBzdHJ1Y3R1cmVzIGJlaW5nIGNvcGllZCB0byB1c2VyIHNwYWNlIHRoYXQgY291bGQgbGVhayB1bmluaXRpYWxpemVkIGJ5dGVzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxODo1ODo0OS42MTA0MDc5NTdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzY2NzYzNzM1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCQVRNQU5fQURWXCIsXG4gICAgXCJCQVRNQU5fQURWX01DQVNUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzXCIsXG4gICAgXCJiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBoYXJkZW5lZCB2ZXJzaW9uIG9mIGBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJgIChgc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWxgKSB3aGljaCBjaGVja3MgZm9yIGludGVnZXIgdHJ1bmNhdGlvbiBhbmQgaW52YWxpZCBvZmZzZXRzIChlLmcuLCBgfjBVYCkgd2hlbiBzZXR0aW5nIHRoZSBgc2tiLVxcdTAwM2V0cmFuc3BvcnRfaGVhZGVyYCBmaWVsZC4gSXQgdGhlbiBhcHBsaWVzIHRoaXMgbmV3IGZ1bmN0aW9uIGluIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgIHRvIHByZXZlbnQgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgY2F1c2VkIGJ5IDE2LWJpdCB0cnVuY2F0aW9uIG9mIHRoZSB0cmFuc3BvcnQgaGVhZGVyIG9mZnNldC4gVGhlc2UgY2hhbmdlcyBhcmUgZGVzaWduZWQgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIHdyaXRlcywgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmUgaXMgbm8gYWxsb2NhdGlvbiBvZiBuZXcgYnVmZmVycywgbm8gY2hhbmdlcyB0byBob3cgdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgaGFuZGxlZCwgYW5kIG5vIHN0cnVjdHVyZXMgYmVpbmcgY29waWVkIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBsZWFrIHVuaW5pdGlhbGl6ZWQgYnl0ZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGhhcmRlbmVkIHZlcnNpb24gb2Ygc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyIGFuZCB1c2VzIGl0IGluIGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlciB0byBmaXggYSBwb3RlbnRpYWwgaXNzdWUgd2l0aCB0cmFuc3BvcnQgaGVhZGVyIG9mZnNldCBjYWxjdWxhdGlvbiBmb3IgbXVsdGljYXN0IHBhY2tldHMgaW4gYmF0bWFuLWFkdi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxODo1ODo0OS42MTA0MTI2OTdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Mjg4MTUyMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhMDM0Njc4NmU2NWI5ZjQ1ODFjNzljMDlhNjhiZGY1OGE0NzkyOGIwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDEwIDE4OjU4OjQ3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2tidWZmLmggYi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oXFxuaW5kZXggMjJlZGExZDU0YTBlOC4uZGJlY2VhZjVjM2IzOSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9za2J1ZmYuaFxcbkBAIC0zMTI2LDYgKzMxMjYsMzIgQEAgc3RhdGljIGlubGluZSB2b2lkIHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRza2ItXFx1MDAzZXRyYW5zcG9ydF9oZWFkZXIgKz0gb2Zmc2V0O1xcbiB9XFxuIFxcbisvKipcXG4rICogc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWwgLSBjb25kaXRpb25hbGx5IHNldCB0cmFuc3BvcnQgaGVhZGVyXFxuKyAqIEBza2I6IGJ1ZmZlciB0byBhbHRlclxcbisgKiBAb2Zmc2V0OiBvZmZzZXQgdG8gYWRkIHRvIHNrYi1cXHUwMDNlZGF0YVxcbisgKlxcbisgKiBIYXJkZW5lZCB2ZXJzaW9uIG9mIHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcigpLlxcbisgKlxcbisgKiBSZXR1cm5zOiB0cnVlIGlmIHRoZSBvcGVyYXRpb24gd2FzIGEgc3VjY2Vzcy5cXG4rICovXFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBfX211c3RfY2hlY2tcXG4rc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3QgaW50IG9mZnNldClcXG4re1xcbitcXHRsb25nIHRyYW5zcG9ydF9vZmZzZXQgPSBza2ItXFx1MDAzZWRhdGEgLSBza2ItXFx1MDAzZWhlYWQgKyBvZmZzZXQ7XFxuK1xcbitcXHRpZiAodW5saWtlbHkodHJhbnNwb3J0X29mZnNldCAhPVxcbitcXHRcXHQgICAgICh0eXBlb2Yoc2tiLVxcdTAwM2V0cmFuc3BvcnRfaGVhZGVyKSl0cmFuc3BvcnRfb2Zmc2V0KSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0aWYgKHVubGlrZWx5KHRyYW5zcG9ydF9vZmZzZXQgPT1cXG4rXFx0XFx0ICAgICAodHlwZW9mKHNrYi1cXHUwMDNldHJhbnNwb3J0X2hlYWRlcikpfjBVKSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0c2tiLVxcdTAwM2V0cmFuc3BvcnRfaGVhZGVyID0gdHJhbnNwb3J0X29mZnNldDtcXG4rXFx0cmV0dXJuIHRydWU7XFxuK31cXG4rXFxuIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhciAqc2tiX25ldHdvcmtfaGVhZGVyKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuIHtcXG4gXFx0cmV0dXJuIHNrYi1cXHUwMDNlaGVhZCArIHNrYi1cXHUwMDNlbmV0d29ya19oZWFkZXI7XFxuZGlmZiAtLWdpdCBhL25ldC9iYXRtYW4tYWR2L3R2bHYuYyBiL25ldC9iYXRtYW4tYWR2L3R2bHYuY1xcbmluZGV4IDFjOWZiMjE5ODVmNmEuLmMzODRkYjE2YmNhYzEgMTAwNjQ0XFxuLS0tIGEvbmV0L2JhdG1hbi1hZHYvdHZsdi5jXFxuKysrIGIvbmV0L2JhdG1hbi1hZHYvdHZsdi5jXFxuQEAgLTQzMyw4ICs0MzMsMTEgQEAgc3RhdGljIGludCBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXIoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcXG4gXFx0XFx0XFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xcbiBcXG4gXFx0XFx0dHZsdl9vZmZzZXQgPSAodW5zaWduZWQgY2hhciAqKXR2bHZfdmFsdWUgLSBza2ItXFx1MDAzZWRhdGE7XFxuK1xcdFxcdGlmICghc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWwoc2tiLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgICB0dmx2X29mZnNldCArIHR2bHZfdmFsdWVfbGVuKSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbiBcXHRcXHRza2Jfc2V0X25ldHdvcmtfaGVhZGVyKHNrYiwgdHZsdl9vZmZzZXQpO1xcbi1cXHRcXHRza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXIoc2tiLCB0dmx2X29mZnNldCArIHR2bHZfdmFsdWVfbGVuKTtcXG4gXFxuIFxcdFxcdHJldHVybiB0dmx2X2hhbmRsZXItXFx1MDAzZW1jYXN0X2hhbmRsZXIoYmF0X3ByaXYsIHNrYik7XFxuIFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTg6NTg6NTEuMjM5OTAyMzgxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDk2NDgxMjI3MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkFUTUFOX0FEVlwiLFxuICAgIFwiQkFUTUFOX0FEVl9NQ0FTVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2Vzc1wiLFxuICAgIFwiYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGhhcmRlbmVkIHZlcnNpb24gb2Ygc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyIGFuZCB1c2VzIGl0IGluIGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlciB0byBmaXggYSBwb3RlbnRpYWwgaXNzdWUgd2l0aCB0cmFuc3BvcnQgaGVhZGVyIG9mZnNldCBjYWxjdWxhdGlvbiBmb3IgbXVsdGljYXN0IHBhY2tldHMgaW4gYmF0bWFuLWFkdi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhMDM0Njc4NmU2NWI5ZjQ1ODFjNzljMDlhNjhiZGY1OGE0NzkyOGIwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTAgMTg6NTg6NDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIGIvaW5jbHVkZS9saW51eC9za2J1ZmYuaFxuaW5kZXggMjJlZGExZDU0YTBlOC4uZGJlY2VhZjVjM2IzOSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvc2tidWZmLmhcbisrKyBiL2luY2x1ZGUvbGludXgvc2tidWZmLmhcbkBAIC0zMTI2LDYgKzMxMjYsMzIgQEAgc3RhdGljIGlubGluZSB2b2lkIHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0c2tiLVx1MDAzZXRyYW5zcG9ydF9oZWFkZXIgKz0gb2Zmc2V0O1xuIH1cbiBcbisvKipcbisgKiBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJfY2FyZWZ1bCAtIGNvbmRpdGlvbmFsbHkgc2V0IHRyYW5zcG9ydCBoZWFkZXJcbisgKiBAc2tiOiBidWZmZXIgdG8gYWx0ZXJcbisgKiBAb2Zmc2V0OiBvZmZzZXQgdG8gYWRkIHRvIHNrYi1cdTAwM2VkYXRhXG4rICpcbisgKiBIYXJkZW5lZCB2ZXJzaW9uIG9mIHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcigpLlxuKyAqXG4rICogUmV0dXJuczogdHJ1ZSBpZiB0aGUgb3BlcmF0aW9uIHdhcyBhIHN1Y2Nlc3MuXG4rICovXG4rc3RhdGljIGlubGluZSBib29sIF9fbXVzdF9jaGVja1xuK3NrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IGludCBvZmZzZXQpXG4re1xuK1x0bG9uZyB0cmFuc3BvcnRfb2Zmc2V0ID0gc2tiLVx1MDAzZWRhdGEgLSBza2ItXHUwMDNlaGVhZCArIG9mZnNldDtcbitcbitcdGlmICh1bmxpa2VseSh0cmFuc3BvcnRfb2Zmc2V0ICE9XG4rXHRcdCAgICAgKHR5cGVvZihza2ItXHUwMDNldHJhbnNwb3J0X2hlYWRlcikpdHJhbnNwb3J0X29mZnNldCkpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdGlmICh1bmxpa2VseSh0cmFuc3BvcnRfb2Zmc2V0ID09XG4rXHRcdCAgICAgKHR5cGVvZihza2ItXHUwMDNldHJhbnNwb3J0X2hlYWRlcikpfjBVKSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0c2tiLVx1MDAzZXRyYW5zcG9ydF9oZWFkZXIgPSB0cmFuc3BvcnRfb2Zmc2V0O1xuK1x0cmV0dXJuIHRydWU7XG4rfVxuK1xuIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhciAqc2tiX25ldHdvcmtfaGVhZGVyKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0cmV0dXJuIHNrYi1cdTAwM2VoZWFkICsgc2tiLVx1MDAzZW5ldHdvcmtfaGVhZGVyO1xuZGlmZiAtLWdpdCBhL25ldC9iYXRtYW4tYWR2L3R2bHYuYyBiL25ldC9iYXRtYW4tYWR2L3R2bHYuY1xuaW5kZXggMWM5ZmIyMTk4NWY2YS4uYzM4NGRiMTZiY2FjMSAxMDA2NDRcbi0tLSBhL25ldC9iYXRtYW4tYWR2L3R2bHYuY1xuKysrIGIvbmV0L2JhdG1hbi1hZHYvdHZsdi5jXG5AQCAtNDMzLDggKzQzMywxMSBAQCBzdGF0aWMgaW50IGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcihzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxuIFx0XHRcdHJldHVybiBORVRfUlhfU1VDQ0VTUztcbiBcbiBcdFx0dHZsdl9vZmZzZXQgPSAodW5zaWduZWQgY2hhciAqKXR2bHZfdmFsdWUgLSBza2ItXHUwMDNlZGF0YTtcbitcdFx0aWYgKCFza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJfY2FyZWZ1bChza2IsXG4rXHRcdFx0XHRcdFx0ICAgICAgdHZsdl9vZmZzZXQgKyB0dmx2X3ZhbHVlX2xlbikpXG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4gXHRcdHNrYl9zZXRfbmV0d29ya19oZWFkZXIoc2tiLCB0dmx2X29mZnNldCk7XG4tXHRcdHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcihza2IsIHR2bHZfb2Zmc2V0ICsgdHZsdl92YWx1ZV9sZW4pO1xuIFxuIFx0XHRyZXR1cm4gdHZsdl9oYW5kbGVyLVx1MDAzZW1jYXN0X2hhbmRsZXIoYmF0X3ByaXYsIHNrYik7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxODo1ODo1MS4yMzk5MDQyOTFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDUwMTk1NDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYmF0bWFuLWFkdiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZXJlJ3MgYSBuZXcgcGF0Y2gsIGFuZCBpdCBsb29rcyBsaWtlIGl0J3MgaW50cm9kdWNpbmcgYHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsYCBpbiBgaW5jbHVkZS9saW51eC9za2J1ZmYuaGAuIFRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgdXNlcyBpdCB3aXRoaW4gYG5ldC9iYXRtYW4tYWR2L3R2bHYuY2AsIGluc2lkZSB0aGUgYGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcmAgZnVuY3Rpb24uIE15IGZpcnN0IHRob3VnaHQgaXMsIHRoaXMgd2FycmFudHMgYSBjbG9zZXIgbG9vayBhdCBib3RoIGBuZXQvYmF0bWFuLWFkdi90dmx2LmNgIGFuZCBzcGVjaWZpY2FsbHkgYXQgdGhlIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgIGZ1bmN0aW9uIGl0c2VsZi4gSSBzZWUgdGhpcyBpcyBwYXJ0IG9mIGJhdG1hbi1hZHYuXG5cbkdpdmVuIHRoYXQgYmF0bWFuLWFkdiBpcyBhIG5ldHdvcmsgcHJvdG9jb2wsIEkgbmVlZCB0byBjb25zaWRlciBwb3RlbnRpYWwgZnV6emluZyB2ZWN0b3JzLiBDYW4gSSByZWFjaCBpdCB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50PyBZZXMsIHNpbmNlIGl0cyBhIG5ldHdvcmsgcHJvdG9jb2wsIEkgc2hvdWxkIGJlIGFibGUgdG8gZnV6eiBpdCB1c2luZyBuZXRsaW5rIG9yIGJ5IGluamVjdGluZyBwYWNrZXRzLiBUaGlzIHN1Z2dlc3RzIGEgZ29vZCBhdmVudWUgZm9yIHZ1bG5lcmFiaWxpdHkgZGlzY292ZXJ5IGlmIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIHVuZXhwZWN0ZWQgYmVoYXZpb3IuXG5cbk5leHQsIEkgbmVlZCB0byBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEEgcXVpY2sgY2hlY2sgb2YgYG5ldC9iYXRtYW4tYWR2L0tjb25maWdgIHdpbGwgcmV2ZWFsIHRoZSBjb25maWd1cmF0aW9uIHN5bWJvbCDigJMgSSdtIGJldHRpbmcgb24gYEJBVE1BTl9BRFZgLCBidXQgSSdsbCBjb25maXJtLlxuXG5Ob3csIGxldCdzIGRpdmUgaW50byB0aGUgY29kZS4gVGltZSB0byBzY3J1dGluaXplIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgIHdpdGhpbiBgbmV0L2JhdG1hbi1hZHYvdHZsdi5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgYHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsYCBpcyBiZWluZyB1c2VkIGluIHRoaXMgY29udGV4dC4gUG90ZW50aWFsIG9mZi1ieS1vbmUgZXJyb3JzIG9yIG1pc3VzZSBvZiB0aGUgZnVuY3Rpb24gYXJlIGltbWVkaWF0ZWx5IG9uIG15IHJhZGFyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDg0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTg6NTg6NTYuMjkwMTAyMTAzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MTcyNjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJhdGFkdl90dmx2X2NhbGxfaGFuZGxlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYmF0bWFuLWFkdi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JhdG1hbi1hZHYvdHZsdi5jPTMyOT1pbnQgYmF0YWR2X3R2bHZfY29udGFpbmVyX29nbV9hcHBlbmQoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy0zNzUtLyoqXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jOjM3NjogKiBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXIoKSAtIHBhcnNlIHRoZSBnaXZlbiB0dmx2IGJ1ZmZlciB0byBjYWxsIHRoZVxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy0zNzctICogIGFwcHJvcHJpYXRlIGhhbmRsZXJzXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtMzg4LSAqL1xcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYzozODk6c3RhdGljIGludCBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXIoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtMzkwLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgYmF0YWR2X3R2bHZfaGFuZGxlciAqdHZsdl9oYW5kbGVyLFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jPTUwMz1pbnQgYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNTM1LVxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYzo1MzY6XFx0XFx0cmV0IHw9IGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcihiYXRfcHJpdiwgdHZsdl9oYW5kbGVyLFxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy01MzctXFx0XFx0XFx0XFx0XFx0XFx0cGFja2V0X3R5cGUsIG9yaWdfbm9kZSwgc2tiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxODo1ODo1Ni4zMzQyNzkxNVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MzQ2MzU1MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb246XG5cbioqVW5kZXJzdGFuZGluZyB0aGUgYmF0YWR2X3R2bHYgQ29kZWZsb3cqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyYC4gVGhlIGZhY3QgdGhhdCBpdCdzIGRlY2xhcmVkIGBzdGF0aWNgIGltbWVkaWF0ZWx5IGZsYWdzIGl0IGFzIGFuIGludGVybmFsIGZ1bmN0aW9uLCBtZWFudCB0byBiZSB1c2VkIG9ubHkgd2l0aGluIHRoZSBzYW1lIGNvbXBpbGF0aW9uIHVuaXQuIFRoYXQgdGVsbHMgbWUgaXQncyBsaWtlbHkgYSBoZWxwZXIgZnVuY3Rpb24uIE5vdywgdGhlIGRlc2NyaXB0aW9uIHNheXMgaXQncyBjYWxsZWQgYnkgYGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2Vzc2AuIEdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbnMsIG15IGd1ZXNzIGlzIHRoYXQgYHR2bHZgIHJlZmVycyB0byBcIlR5cGUtTGVuZ3RoLVZhbHVlXCIgZGF0YSwgYSBjb21tb24gZm9ybWF0IGluIG5ldHdvcmtpbmcgcHJvdG9jb2xzLiBUaGVyZWZvcmUgYGJhdGFkdmAgbGlrZWx5IHN0YW5kcyBmb3IgXCJiYXRtYW4tYWR2XCIsIHRoZSBtZXNoIHJvdXRpbmcgcHJvdG9jb2wuIFRoaXMgY29uZmlybXMgdGhhdCB0aGVzZSBmdW5jdGlvbnMgcmVsYXRlIHRvIGJhdG1hbi1hZHYuIEdpdmVuIHRoZSBjb250ZXh0LCBJIHNob3VsZCBmb2N1cyBvbiBob3cgdGhpcyBmdW5jdGlvbiB3b3JrcyB3aXRoaW4gaXRzIGNhbGxpbmcgZnVuY3Rpb24gaW4gb3JkZXIgdG8gZ3Jhc3AgaXRzIHB1cnBvc2Ugd2l0aGluIHRoZSBvdmVyYWxsIHByb3RvY29sJ3MgbG9naWMuIExldCdzIGRlbHZlIGludG8gYGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2Vzc2AgdG8gdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MzMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxODo1ODo1OS43Njg5MjM3MjZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ0NzQ3OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9iYXRtYW4tYWR2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYmF0bWFuLWFkdi9iYXRfdl9vZ20uYz04MDE9YmF0YWR2X3Zfb2dtX3Byb2Nlc3NfcGVyX291dGlmKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9iYXRfdl9vZ20uYy04MjItXFx0aWYgKHNlcW5vX2FnZSBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjYgaWZfb3V0Z29pbmcgPT0gQkFUQURWX0lGX0RFRkFVTFQpXFxubmV0L2JhdG1hbi1hZHYvYmF0X3Zfb2dtLmM6ODIzOlxcdFxcdGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2VzcyhiYXRfcHJpdiwgQkFUQURWX09HTTIsIG9yaWdfbm9kZSxcXG5uZXQvYmF0bWFuLWFkdi9iYXRfdl9vZ20uYy04MjQtXFx0XFx0XFx0XFx0XFx0ICAgICAgIE5VTEwsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmM9MTA5NT1pbnQgYmF0YWR2X3JlY3ZfdW5pY2FzdF90dmx2KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMtMTEyMy1cXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmM6MTEyNDpcXHRyZXQgPSBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3MoYmF0X3ByaXYsIEJBVEFEVl9VTklDQVNUX1RWTFYsXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jLTExMjUtXFx0XFx0XFx0XFx0XFx0ICAgICBOVUxMLCBza2IsIHR2bHZfYnVmZixcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYz0xMzM5PWludCBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYy0xMzc1LVxcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYzoxMzc2OlxcdHJldCA9IGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2VzcyhiYXRfcHJpdiwgQkFUQURWX01DQVNULCBOVUxMLCBza2IsXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jLTEzNzctXFx0XFx0XFx0XFx0XFx0ICAgICB0dmx2X2J1ZmYsIHR2bHZfYnVmZl9sZW4pO1xcbi0tXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jPTQ1OD1zdGF0aWMgYm9vbCBiYXRhZHZfdHZsdl9jb250YWluZXJzX2NvbnRhaW4odm9pZCAqdHZsdl92YWx1ZSxcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy00OTAtLyoqXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jOjQ5MTogKiBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3MoKSAtIHBhcnNlIHRoZSBnaXZlbiB0dmx2IGJ1ZmZlciB0byBjYWxsIHRoZVxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy00OTItICogIGFwcHJvcHJpYXRlIGhhbmRsZXJzXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNTAyLSAqL1xcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYzo1MDM6aW50IGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2VzcyhzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy01MDQtXFx0XFx0XFx0XFx0ICAgdTggcGFja2V0X3R5cGUsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi90dmx2LmM9NTgyPXZvaWQgYmF0YWR2X3R2bHZfb2dtX3JlY2VpdmUoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy01OTctXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jOjU5ODpcXHRiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3MoYmF0X3ByaXYsIEJBVEFEVl9JVl9PR00sIG9yaWdfbm9kZSwgTlVMTCxcXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNTk5LVxcdFxcdFxcdFxcdCAgICAgICB0dmx2X3ZhbHVlLCB0dmx2X3ZhbHVlX2xlbik7XFxuLS1cXG5uZXQvYmF0bWFuLWFkdi90dmx2Lmg9NDA9dm9pZCBiYXRhZHZfdHZsdl9oYW5kbGVyX3VucmVnaXN0ZXIoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcXG5uZXQvYmF0bWFuLWFkdi90dmx2LmgtNDEtXFx0XFx0XFx0XFx0ICAgIHU4IHR5cGUsIHU4IHZlcnNpb24pO1xcbm5ldC9iYXRtYW4tYWR2L3R2bHYuaDo0MjppbnQgYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5oLTQzLVxcdFxcdFxcdFxcdCAgIHU4IHBhY2tldF90eXBlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxODo1ODo1OS44MTM0MDQxNjNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDgwNjM0NzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGNvZGUgc25pcHBldHM6XG5cbioqRm9jdXNpbmcgb24gS2V5IEVudHJ5IFBvaW50cyBmb3IgUGFja2V0IEhhbmRsaW5nKipcblxuQWxyaWdodCwgbGV0J3MgemVybyBpbiBvbiBob3cgdGhpcyBCYXRtYW4tYWR2IGltcGxlbWVudGF0aW9uIGhhbmRsZXMgaW5jb21pbmcgcGFja2V0cy4gSSBzZWUgYSBmZXcgZnVuY3Rpb25zIHRoYXQgaW1tZWRpYXRlbHkgZ3JhYiBteSBhdHRlbnRpb24gYXMgcG90ZW50aWFsIGVudHJ5IHBvaW50czogYGJhdGFkdl9yZWN2X3VuaWNhc3RfdHZsdmAsIGBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXRgLCBgYmF0YWR2X3R2bHZfb2dtX3JlY2VpdmVgLCBhbmQgYGJhdGFkdl92X29nbV9wcm9jZXNzX3Blcl9vdXRpZmAuIEdpdmVuIG15IGV4cGVydGlzZSwgbXkgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSB0aGUgcHJpbWFyeSBob29rcyBmb3IgZGlmZmVyZW50IHR5cGVzIG9mIHBhY2tldCBwcm9jZXNzaW5nLiBJJ20gdGhpbmtpbmcgSSdsbCBzdGFydCBieSBkaXZpbmcgaW50byB0aGUgbG9naWMgb2YgYGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldGAgYW5kIGBiYXRhZHZfcmVjdl91bmljYXN0X3R2bHZgIGZpcnN0LiBUaGV5IHNlZW0gdG8gcmVwcmVzZW50IHRoZSBjb3JlIGRpc3RpbmN0aW9uczogb25lIGZvciBtdWx0aWNhc3QgdHJhZmZpYyBhbmQgdGhlIG90aGVyIGZvciB1bmljYXN0LCB3aXRoIHRoZSB1c2Ugb2YgVExWIChUeXBlLUxlbmd0aC1WYWx1ZSkgc3RydWN0dXJlcyBzdWdnZXN0aW5nIGEgZmxleGlibGUgZGF0YSBmb3JtYXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGRpZmZlcmVudGlhdGVzIGJldHdlZW4gdGhlc2UgYW5kIHRoZW4gcm91dGVzIHRoZW0gdG8gdGhlIGFwcHJvcHJpYXRlIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYzNCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE4OjU5OjAzLjI5NDA0MTU3NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTI4NTIwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JhdG1hbi1hZHYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9iYXRtYW4tYWR2L21haW4uYz01MDQ9c3RhdGljIHZvaWQgYmF0YWR2X3JlY3ZfaGFuZGxlcl9pbml0KHZvaWQpXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tYWluLmMtNTM3LVxcdC8qIG11bHRpY2FzdCBwYWNrZXQgKi9cXG5uZXQvYmF0bWFuLWFkdi9tYWluLmM6NTM4OlxcdGJhdGFkdl9yeF9oYW5kbGVyW0JBVEFEVl9NQ0FTVF0gPSBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQ7XFxubmV0L2JhdG1hbi1hZHYvbWFpbi5jLTUzOS1cXG4tLVxcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYz0xMjEyPWludCBiYXRhZHZfcmVjdl9iY2FzdF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYy0xMzI4LS8qKlxcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYzoxMzI5OiAqIGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldCgpIC0gcHJvY2VzcyByZWNlaXZlZCBiYXRtYW4tYWR2IG11bHRpY2FzdCBwYWNrZXRcXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMtMTMzMC0gKiBAc2tiOiB0aGUgcmVjZWl2ZWQgYmF0bWFuLWFkdiBtdWx0aWNhc3QgcGFja2V0XFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMtMTMzOC0gKi9cXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmM6MTMzOTppbnQgYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jLTEzNDAtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgYmF0YWR2X2hhcmRfaWZhY2UgKnJlY3ZfaWYpXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmg9Mjg9aW50IGJhdGFkdl9yZWN2X2JjYXN0X3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5oLTMwLSNpZmRlZiBDT05GSUdfQkFUTUFOX0FEVl9NQ0FTVFxcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuaDozMTppbnQgYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5oLTMyLVxcdFxcdFxcdCAgICAgc3RydWN0IGJhdGFkdl9oYXJkX2lmYWNlICpyZWN2X2lmKTtcXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmgtMzMtI2Vsc2VcXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmg6MzQ6c3RhdGljIGlubGluZSBpbnQgYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5oLTM1LVxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBiYXRhZHZfaGFyZF9pZmFjZSAqcmVjdl9pZilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTg6NTk6MDMuMzM5MzI5NzQzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA1NzE3ODc0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJhdG1hbi1hZHYgUGFja2V0IEhhbmRsaW5nIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYmF0bWFuLWFkdi4gIEl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgaXQgc2VlbXMuIFdlJ3ZlIGdvdCBgYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0YCByZWdpc3RlcmVkIGZvciBgQkFUQURWX01DQVNUYCBhbmQgYGJhdGFkdl9yZWN2X3VuaWNhc3RfdHZsdmAgZm9yIGBCQVRBRFZfVU5JQ0FTVF9UVkxWYC4gIFN0YW5kYXJkIHN0dWZmLCB0aGVzZSBhcmUgdGhlIHBhY2tldCBoYW5kbGVycyB3aXRoaW4gdGhlIGJhdG1hbi1hZHYgZnJhbWV3b3JrLCB0aGUgY29yZSBvZiB0aGUgcGFja2V0IHByb2Nlc3NpbmcuXG5cblRoZSBjaGFuZ2UgaXRzZWxmIGlzIGluIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgLCBhbmQgaXQncyB1c2luZyBgc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWxgLiAgVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGFib3V0IGhvdyB0aGUgdHJhbnNwb3J0IGhlYWRlciBvZmZzZXQgaXMgY2FsY3VsYXRlZCBpbiB0aGUgYHNrYmAuICBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGZpeCB0aGVuLCB3aGljaCBtZWFucyBpdCBhZGRyZXNzZXMgYSBjb3JyZWN0bmVzcyBpc3N1ZSBpbiB0aGUgZXhpc3RpbmcgY29kZS4gSW50ZXJlc3RpbmcuIERlZmluaXRlbHkgd29ydGggYSB0aG9yb3VnaCBmdXp6aW5nIGNhbXBhaWduIHRvIHNlZSBpZiB0aGlzIGNoYW5nZSBwcm9wZXJseSBhZGRyZXNzZXMgdGhlIGlzc3VlIHdpdGhvdXQgaW50cm9kdWNpbmcgYW55IHJlZ3Jlc3Npb25zIG9yIG5ldyB2dWxuZXJhYmlsaXRpZXMuXG5cbkkgc2hvdWxkIHZlcmlmeSB0aGUgY29uZmlnIGRlcGVuZGVuY2llcywgbm93LiBJIGtub3cgYEJBVE1BTl9BRFZgIGlzIHJlcXVpcmVkLCBvYnZpb3VzbHkuIEJ1dCBkb2VzIHRoaXMgc3BlY2lmaWMgbW9kaWZpY2F0aW9uIHJlcXVpcmUgYEJBVE1BTl9BRFZfTUNBU1RgIHRvIGJlIGVuYWJsZWQ/IFNpbmNlIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgIHByb2Nlc3NlcyBib3RoIHVuaWNhc3QgYW5kIG1jYXN0IHR2bHYgcGFja2V0cywgaXQgc2hvdWxkIGJlIGZpbmUuIEknbGwgdGFrZSBhIGxvb2sgYXQgYGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcmAgYWdhaW4gdG8gYmUgc3VyZSB0aGF0IEkgZGlkbid0IG1pc3Mgc29tZXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTI5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE4OjU5OjA4LjM5NjUxMDkwNVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzNjA2NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9iYXRtYW4tYWR2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYmF0bWFuLWFkdi90dmx2LmM9MzI5PWludCBiYXRhZHZfdHZsdl9jb250YWluZXJfb2dtX2FwcGVuZChzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTM3NS0vKipcXG5uZXQvYmF0bWFuLWFkdi90dmx2LmM6Mzc2OiAqIGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcigpIC0gcGFyc2UgdGhlIGdpdmVuIHR2bHYgYnVmZmVyIHRvIGNhbGwgdGhlXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTM3Ny0gKiAgYXBwcm9wcmlhdGUgaGFuZGxlcnNcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy0zODgtICovXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jOjM4OTpzdGF0aWMgaW50IGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcihzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy0zOTAtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBiYXRhZHZfdHZsdl9oYW5kbGVyICp0dmx2X2hhbmRsZXIsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi90dmx2LmM9NTAzPWludCBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3Moc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYy01MzUtXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jOjUzNjpcXHRcXHRyZXQgfD0gYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyKGJhdF9wcml2LCB0dmx2X2hhbmRsZXIsXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTUzNy1cXHRcXHRcXHRcXHRcXHRcXHRwYWNrZXRfdHlwZSwgb3JpZ19ub2RlLCBza2IsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE4OjU5OjA4LjQzOTg3NTU2MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTc4MzYwMzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoZSBgYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyYCBpbXBsZW1lbnRhdGlvbjpcblxuKipEaXZpbmcgaW50byBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXIqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTGV0J3MgZGlnIGludG8gdGhlIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGlzIGNydWNpYWwgZnVuY3Rpb24gd29ya3MuIE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhpcyBpcyB3aGVyZSB0aGUgbWVhdCBvZiBoYW5kbGluZyBzcGVjaWZpYyBUeXBlLUxlbmd0aC1WYWx1ZSAoVExWKSBtZXNzYWdlcyB3aXRoaW4gQkFUTUFOLWFkdiBsaWtlbHkgcmVzaWRlcy4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlIGlucHV0IHBhcmFtZXRlcnMsIHF1aWNrbHkgdW5kZXJzdGFuZGluZyB3aGF0IGNvbnRleHQgaXMgYmVpbmcgcGFzc2VkIGluLiBUaGVuIEknbGwgZm9jdXMgb24gdGhlIGNvcmUgbG9naWM6IHRoZSBjb25kaXRpb25hbCBicmFuY2hlcywgYW55IGRhdGEgcGFyc2luZywgYW5kIHVsdGltYXRlbHksIGhvdyB0aGUgZnVuY3Rpb24gcmVhY3RzIHRvIHRoZSByZWNlaXZlZCBUTFYuIEnigJlsbCBrZWVwIGFuIGV5ZSBvdXQgZm9yIHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuOiBtZW1vcnkgYWxsb2NhdGlvbiwgbG9ja2luZywgYW55IGNvbmN1cnJlbmN5IGlzc3VlcywgYW5kIG9mIGNvdXJzZSwgZXJyb3IgaGFuZGxpbmcuIEknbSBsb29raW5nIGZvciB0aGUgb3ZlcmFsbCBmbG93IC0gd2hhdCBhcmUgdGhlIGRpZmZlcmVudCBtZXNzYWdlIHR5cGVzIGhhbmRsZWQgaGVyZT8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzPyBJJ2xsIGFsc28gYmUgY29uc2lkZXJpbmcgaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggdGhlIG92ZXJhbGwgQkFUTUFOLWFkdiBzdGF0ZSBtYWNoaW5lLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGRhdGEgaXMgYmVpbmcgdXBkYXRlZCwgaG93IGl0J3MgYmVpbmcgdXBkYXRlZCwgYW5kIHdoZW4uIEkgZXhwZWN0IHRvIGZpbmQgc29tZSBpbnRlcmVzdGluZyBsb2dpYyBoZXJlLCBwcm9iYWJseSBpbnZvbHZpbmcgbmVpZ2hib3IgZGlzY292ZXJ5LCB0b3BvbG9neSB1cGRhdGVzLCBhbmQgUW9TIG1hbmFnZW1lbnQuIExldCdzIHNlZSBpZiBteSBpbml0aWFsIGFzc3VtcHRpb25zIGFyZSBjb3JyZWN0LiBUaGUgcmVhbCBjaGFsbGVuZ2UgaXMgYWx3YXlzIHRvIHVuZGVyc3RhbmQgdGhlIGRlc2lnbiBjaG9pY2VzIG1hZGUgaGVyZSwgc28gSSdsbCBiZSBxdWVzdGlvbmluZyB3aHkgdGhlIGRldmVsb3BlcnMgY2hvc2UgdGhpcyBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBhbmQgY29uc2lkZXIgcG9zc2libGUgYWx0ZXJuYXRpdmVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDM5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTg6NTk6MTIuNjE4MjM5MzE1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9iYXRtYW4tYWR2L3R2bHYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzODksXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzODk6XFx0c3RhdGljIGludCBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXIoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcXG4gMzkwOlxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgYmF0YWR2X3R2bHZfaGFuZGxlciAqdHZsdl9oYW5kbGVyLFxcbiAzOTE6XFx0XFx0XFx0XFx0XFx0ICAgIHU4IHBhY2tldF90eXBlLFxcbiAzOTI6XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBiYXRhZHZfb3JpZ19ub2RlICpvcmlnX25vZGUsXFxuIDM5MzpcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdm9pZCAqdHZsdl92YWx1ZSxcXG4gMzk0OlxcdFxcdFxcdFxcdFxcdCAgICB1MTYgdHZsdl92YWx1ZV9sZW4pXFxuIDM5NTpcXHR7XFxuIDM5NjpcXHRcXHR1bnNpZ25lZCBpbnQgdHZsdl9vZmZzZXQ7XFxuIDM5NzpcXHRcXHR1OCAqc3JjLCAqZHN0O1xcbiAzOTg6XFx0XFxuIDM5OTpcXHRcXHRpZiAoIXR2bHZfaGFuZGxlcilcXG4gNDAwOlxcdFxcdFxcdHJldHVybiBORVRfUlhfU1VDQ0VTUztcXG4gNDAxOlxcdFxcbiA0MDI6XFx0XFx0c3dpdGNoIChwYWNrZXRfdHlwZSkge1xcbiA0MDM6XFx0XFx0Y2FzZSBCQVRBRFZfSVZfT0dNOlxcbiA0MDQ6XFx0XFx0Y2FzZSBCQVRBRFZfT0dNMjpcXG4gNDA1OlxcdFxcdFxcdGlmICghdHZsdl9oYW5kbGVyLVxcdTAwM2VvZ21faGFuZGxlcilcXG4gNDA2OlxcdFxcdFxcdFxcdHJldHVybiBORVRfUlhfU1VDQ0VTUztcXG4gNDA3OlxcdFxcbiA0MDg6XFx0XFx0XFx0aWYgKCFvcmlnX25vZGUpXFxuIDQwOTpcXHRcXHRcXHRcXHRyZXR1cm4gTkVUX1JYX1NVQ0NFU1M7XFxuIDQxMDpcXHRcXG4gNDExOlxcdFxcdFxcdHR2bHZfaGFuZGxlci1cXHUwMDNlb2dtX2hhbmRsZXIoYmF0X3ByaXYsIG9yaWdfbm9kZSxcXG4gNDEyOlxcdFxcdFxcdFxcdFxcdFxcdCAgQkFUQURWX05PX0ZMQUdTLFxcbiA0MTM6XFx0XFx0XFx0XFx0XFx0XFx0ICB0dmx2X3ZhbHVlLCB0dmx2X3ZhbHVlX2xlbik7XFxuIDQxNDpcXHRcXHRcXHRicmVhaztcXG4gNDE1OlxcdFxcdGNhc2UgQkFUQURWX1VOSUNBU1RfVFZMVjpcXG4gNDE2OlxcdFxcdFxcdGlmICghc2tiKVxcbiA0MTc6XFx0XFx0XFx0XFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xcbiA0MTg6XFx0XFxuIDQxOTpcXHRcXHRcXHRpZiAoIXR2bHZfaGFuZGxlci1cXHUwMDNldW5pY2FzdF9oYW5kbGVyKVxcbiA0MjA6XFx0XFx0XFx0XFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xcbiA0MjE6XFx0XFxuIDQyMjpcXHRcXHRcXHRzcmMgPSAoKHN0cnVjdCBiYXRhZHZfdW5pY2FzdF90dmx2X3BhY2tldCAqKXNrYi1cXHUwMDNlZGF0YSktXFx1MDAzZXNyYztcXG4gNDIzOlxcdFxcdFxcdGRzdCA9ICgoc3RydWN0IGJhdGFkdl91bmljYXN0X3R2bHZfcGFja2V0ICopc2tiLVxcdTAwM2VkYXRhKS1cXHUwMDNlZHN0O1xcbiA0MjQ6XFx0XFxuIDQyNTpcXHRcXHRcXHRyZXR1cm4gdHZsdl9oYW5kbGVyLVxcdTAwM2V1bmljYXN0X2hhbmRsZXIoYmF0X3ByaXYsIHNyYyxcXG4gNDI2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgZHN0LCB0dmx2X3ZhbHVlLFxcbiA0Mjc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICB0dmx2X3ZhbHVlX2xlbik7XFxuIDQyODpcXHRcXHRjYXNlIEJBVEFEVl9NQ0FTVDpcXG4gNDI5OlxcdFxcdFxcdGlmICghc2tiKVxcbiA0MzA6XFx0XFx0XFx0XFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xcbiA0MzE6XFx0XFxuIDQzMjpcXHRcXHRcXHRpZiAoIXR2bHZfaGFuZGxlci1cXHUwMDNlbWNhc3RfaGFuZGxlcilcXG4gNDMzOlxcdFxcdFxcdFxcdHJldHVybiBORVRfUlhfU1VDQ0VTUztcXG4gNDM0OlxcdFxcbiA0MzU6XFx0XFx0XFx0dHZsdl9vZmZzZXQgPSAodW5zaWduZWQgY2hhciAqKXR2bHZfdmFsdWUgLSBza2ItXFx1MDAzZWRhdGE7XFxuIDQzNjpcXHRcXHRcXHRpZiAoIXNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsKHNrYixcXG4gNDM3OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIHR2bHZfb2Zmc2V0ICsgdHZsdl92YWx1ZV9sZW4pKVxcbiA0Mzg6XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE4OjU5OjEyLjYxODMxNzkyNVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjU0MjAyODM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2gncyBJbXBhY3QqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhlIGBCQVRBRFZfTUNBU1RgIGhhbmRsaW5nIHdpdGhpbiB0aGUgYGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcmAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoYXQgcGFja2V0IHR5cGU7IHRoYXQncyBjbGVhcmx5IHRoZSB0cmlnZ2VyIGZvciB0aGlzIGNvZGUgbW9kaWZpY2F0aW9uLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCwgZnJvbSBhbiBhZHZhbmNlZCBwZXJzcGVjdGl2ZSwgaXMgdG8gY29uZmlybSB3aGV0aGVyIHRoZSBgQkFUTUFOX0FEVl9NQ0FTVGAgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgcmVsZXZhbnQsIGdpdmVuIHRoaXMgZm9jdXNlZCBjaGFuZ2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgcGF0Y2ggbmVjZXNzaXRhdGVzLCBvciBpcyBpbiBhbnkgd2F5IGRlcGVuZGVudCBvbiwgdGhhdCBjb25maWd1cmF0aW9uIHNldHRpbmcgYmVpbmcgZW5hYmxlZC4gTGV0J3MgZGlnIGludG8gdGhhdCBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2MDUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE4OjU5OjE1Ljg3MjUyMzI0NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY0ODIwNTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJBVE1BTl9BRFZfTUNBU1RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JhdG1hbi1hZHYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9iYXRtYW4tYWR2L0tjb25maWc9NDc9Y29uZmlnIEJBVE1BTl9BRFZfREFUXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9LY29uZmlnLTU2LVxcbm5ldC9iYXRtYW4tYWR2L0tjb25maWc6NTc6Y29uZmlnIEJBVE1BTl9BRFZfTUNBU1RcXG5uZXQvYmF0bWFuLWFkdi9LY29uZmlnLTU4LVxcdGJvb2wgXFxcIk11bHRpY2FzdCBvcHRpbWlzYXRpb25cXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE4OjU5OjE1LjkxOTAxMDIyMVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTA1MzUxMTYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqTXVsdGljYXN0IE9wdGltaXphdGlvbiBpbiBiYXRtYW4tYWR2OiBBIFF1aWNrIENoZWNrKipcblxuUmlnaHQsIHNvIHdlJ3JlIHRhbGtpbmcgYWJvdXQgZW5hYmxpbmcgbXVsdGljYXN0IG9wdGltaXphdGlvbiBpbiBiYXRtYW4tYWR2LiBUaGUgaW1tZWRpYXRlIGFzc3VtcHRpb24sIGFuZCBpdCBzZWVtcyBhIHJlYXNvbmFibGUgb25lIGdpdmVuIG15IGV4cGVyaWVuY2UsIGlzIHRoYXQgd2UgbmVlZCBgQkFUTUFOX0FEVl9NQ0FTVGAuICBUaGF0J3MgdGhlIGxpa2VseSBwcmVyZXF1aXNpdGUuIEJ1dCBsZXQncyBub3QganVzdCB0YWtlIGl0IGZvciBncmFudGVkLCBldmVuIGZvciBzb21ldGhpbmcgYXMgc2VlbWluZ2x5IHN0cmFpZ2h0Zm9yd2FyZCBhcyB0aGlzLiBCZXN0IHByYWN0aWNlIGlzIGFsd2F5cyB0byBjb25maXJtLlxuXG5UaGVyZWZvcmUsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBxdWlja2x5IHRyYWNlIHRoZSBkZXBlbmRlbmN5LiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaGF2aW5nIGBCQVRNQU5fQURWX01DQVNUYCBkZWZpbmVkIGFjdHVhbGx5IGFsbG93cyB1cyB0byByZWFjaCB0aGUgYEJBVEFEVl9NQ0FTVGAgY29uZGl0aW9uYWwgaW4gdGhlIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgIGZ1bmN0aW9uLiBFc3NlbnRpYWxseSwgZG9lcyBpdCAqZ2F0ZSogdGhlIG11bHRpY2FzdCBmdW5jdGlvbmFsaXR5IGFzIGV4cGVjdGVkPyBJdCdzIGEgcXVpY2sgc2FuaXR5IGNoZWNrIGJ1dCBjYW4gc2F2ZSBhIGRlYnVnZ2luZyBoZWFkYWNoZSBkb3duIHRoZSByb2FkLiBUaGlzIGNvbmZpcm1hdGlvbiB3aWxsIGdpdmUgbWUgY29uZmlkZW5jZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIGlzIHdvcmtpbmcgYXMgZXhwZWN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5MzMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxODo1OToxOS40MjQzNjQwNjNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MTA1NDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJBVEFEVl9NQ0FTVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYmF0bWFuLWFkdi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JhdG1hbi1hZHYvbWFpbi5jPTUwND1zdGF0aWMgdm9pZCBiYXRhZHZfcmVjdl9oYW5kbGVyX2luaXQodm9pZClcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L21haW4uYy01MzctXFx0LyogbXVsdGljYXN0IHBhY2tldCAqL1xcbm5ldC9iYXRtYW4tYWR2L21haW4uYzo1Mzg6XFx0YmF0YWR2X3J4X2hhbmRsZXJbQkFUQURWX01DQVNUXSA9IGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldDtcXG5uZXQvYmF0bWFuLWFkdi9tYWluLmMtNTM5LVxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbWFpbi5oLTM3LSNkZWZpbmUgQkFUQURWX09SSUdfV09SS19QRVJJT0QgMTAwMCAvKiAxIHNlY29uZCAqL1xcbm5ldC9iYXRtYW4tYWR2L21haW4uaDozODojZGVmaW5lIEJBVEFEVl9NQ0FTVF9XT1JLX1BFUklPRCA1MDAgLyogMC41IHNlY29uZHMgKi9cXG5uZXQvYmF0bWFuLWFkdi9tYWluLmgtMzktI2RlZmluZSBCQVRBRFZfREFUX0VOVFJZX1RJTUVPVVQgKDUgKiA2MDAwMCkgLyogNSBtaW5zIGluIG1pbGxpc2Vjb25kcyAqL1xcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9Njg9c3RhdGljIHZvaWQgYmF0YWR2X21jYXN0X3N0YXJ0X3RpbWVyKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYpXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy03MC1cXHRxdWV1ZV9kZWxheWVkX3dvcmsoYmF0YWR2X2V2ZW50X3dvcmtxdWV1ZSwgXFx1MDAyNmJhdF9wcml2LVxcdTAwM2VtY2FzdC53b3JrLFxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjcxOlxcdFxcdFxcdCAgIG1zZWNzX3RvX2ppZmZpZXMoQkFUQURWX01DQVNUX1dPUktfUEVSSU9EKSk7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtNzItfVxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9ODQ9c3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlICpiYXRhZHZfbWNhc3RfZ2V0X2JyaWRnZShzdHJ1Y3QgbmV0X2RldmljZSAqbWVzaF9pZmFjZSlcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTEwNy0gKlxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjEwODogKiBSZXR1cm46IEJBVEFEVl9OT19GTEFHUyBpZiBwcmVzZW50LCBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0IG90aGVyd2lzZS5cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xMDktICovXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTEwPXN0YXRpYyB1OCBiYXRhZHZfbWNhc3RfbWxhX3J0cl9mbGFnc19tZXNoaWZfZ2V0X2lwdjQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTExNi1cXHRlbHNlXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTE3OlxcdFxcdHJldHVybiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0O1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTExOC19XFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xMjgtICpcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxMjk6ICogUmV0dXJuOiBCQVRBRFZfTk9fRkxBR1MgaWYgcHJlc2VudCwgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNiBvdGhlcndpc2UuXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTMwLSAqL1xcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTMyPXN0YXRpYyB1OCBiYXRhZHZfbWNhc3RfbWxhX3J0cl9mbGFnc19tZXNoaWZfZ2V0X2lwdjYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTEzOC1cXHRlbHNlXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTM5OlxcdFxcdHJldHVybiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI2O1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE0MC19XFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz0xNDM9YmF0YWR2X21jYXN0X21sYV9ydHJfZmxhZ3NfbWVzaGlmX2dldF9pcHY2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTQ0LXtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNDU6XFx0cmV0dXJuIEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjY7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTQ2LX1cXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE1OS0gKlxcdEJBVEFEVl9OT19GTEFHUzogQm90aCBhbiBJUHY0IGFuZCBJUHY2IG11bHRpY2FzdCByb3V0ZXIgaXMgcHJlc2VudFxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE2MDogKlxcdEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQ6IE5vIElQdjQgbXVsdGljYXN0IHJvdXRlciBpcyBwcmVzZW50XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTYxOiAqXFx0QkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNjogTm8gSVB2NiBtdWx0aWNhc3Qgcm91dGVyIGlzIHByZXNlbnRcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNjItICpcXHRUaGUgZm9ybWVyIHR3byBPUidkOiBubyBtdWx0aWNhc3Qgcm91dGVyIGlzIHByZXNlbnRcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTE2ND1zdGF0aWMgdTggYmF0YWR2X21jYXN0X21sYV9ydHJfZmxhZ3NfbWVzaGlmX2dldChzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTg5LSAqXFx0QkFUQURWX05PX0ZMQUdTOiBCb3RoIGFuIElQdjQgYW5kIElQdjYgbXVsdGljYXN0IHJvdXRlciBpcyBwcmVzZW50XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTkwOiAqXFx0QkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNDogTm8gSVB2NCBtdWx0aWNhc3Qgcm91dGVyIGlzIHByZXNlbnRcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxOTE6ICpcXHRCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI2OiBObyBJUHY2IG11bHRpY2FzdCByb3V0ZXIgaXMgcHJlc2VudFxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE5Mi0gKlxcdFRoZSBmb3JtZXIgdHdvIE9SJ2Q6IG5vIG11bHRpY2FzdCByb3V0ZXIgaXMgcHJlc2VudFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTk0PXN0YXRpYyB1OCBiYXRhZHZfbWNhc3RfbWxhX3J0cl9mbGFnc19icmlkZ2VfZ2V0KHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yMDAtXFx0aWYgKCFicmlkZ2UpXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MjAxOlxcdFxcdHJldHVybiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0IHwgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNjtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yMDItXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMjAzLVxcdGlmICghYnJfbXVsdGljYXN0X2hhc19yb3V0ZXJfYWRqYWNlbnQoZGV2LCBFVEhfUF9JUCkpXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MjA0OlxcdFxcdGZsYWdzIHw9IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQ7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMjA1LVxcdGlmICghYnJfbXVsdGljYXN0X2hhc19yb3V0ZXJfYWRqYWNlbnQoZGV2LCBFVEhfUF9JUFY2KSlcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoyMDY6XFx0XFx0ZmxhZ3MgfD0gQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNjtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yMDctXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yMjEtICpcXHRCQVRBRFZfTk9fRkxBR1M6IEJvdGggYW4gSVB2NCBhbmQgSVB2NiBtdWx0aWNhc3Qgcm91dGVyIGlzIHByZXNlbnRcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoyMjI6ICpcXHRCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0OiBObyBJUHY0IG11bHRpY2FzdCByb3V0ZXIgaXMgcHJlc2VudFxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjIyMzogKlxcdEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjY6IE5vIElQdjYgbXVsdGljYXN0IHJvdXRlciBpcyBwcmVzZW50XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMjI0LSAqXFx0VGhlIGZvcm1lciB0d28gT1InZDogbm8gbXVsdGljYXN0IHJvdXRlciBpcyBwcmVzZW50XFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz0yMjY9c3RhdGljIHU4IGJhdGFkdl9tY2FzdF9tbGFfcnRyX2ZsYWdzX2dldChzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMjI4LXtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoyMjk6XFx0dTggZmxhZ3MgPSBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0IHwgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNjtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yMzAtXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yNDMtICpcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoyNDQ6ICogUmV0dXJuOiBCQVRBRFZfTUNBU1RfSEFWRV9NQ19QVFlQRV9DQVBBIGlmIHllcywgQkFUQURWX05PX0ZMQUdTIG90aGVyd2lzZS5cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yNDUtICovXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MjQ2PXN0YXRpYyB1OCBiYXRhZHZfbWNhc3RfbWxhX2ZvcndfZmxhZ3NfZ2V0KHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYpXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yNjItXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MjYzOlxcdHJldHVybiBCQVRBRFZfTUNBU1RfSEFWRV9NQ19QVFlQRV9DQVBBO1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTI2NC19XFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz0yNzQ9YmF0YWR2X21jYXN0X21sYV9mbGFnc19nZXQoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdilcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTMwNi1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzozMDc6XFx0bWxhX2ZsYWdzLnR2bHZfZmxhZ3MgfD0gQkFUQURWX01DQVNUX1dBTlRfQUxMX1VOU05PT1BBQkxFUztcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0zMDgtXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0zMTgtXFx0aWYgKCFxcjQtXFx1MDAzZWV4aXN0cyB8fCBxcjQtXFx1MDAzZXNoYWRvd2luZykge1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjMxOTpcXHRcXHRtbGFfZmxhZ3MudHZsdl9mbGFncyB8PSBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNDtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzozMjA6XFx0XFx0bWxhX2ZsYWdzLnR2bHZfZmxhZ3MgXFx1MDAyNj0gfkJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQ7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMzIxLVxcdH1cXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTMyMy1cXHRpZiAoIXFyNi1cXHUwMDNlZXhpc3RzIHx8IHFyNi1cXHUwMDNlc2hhZG93aW5nKSB7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MzI0OlxcdFxcdG1sYV9mbGFncy50dmx2X2ZsYWdzIHw9IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9JUFY2O1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjMyNTpcXHRcXHRtbGFfZmxhZ3MudHZsdl9mbGFncyBcXHUwMDI2PSB+QkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNjtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0zMjYtXFx0fVxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MzY2PWJhdGFkdl9tY2FzdF9tbGFfbWVzaGlmX2dldF9pcHY0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0zNzUtXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6Mzc2OlxcdGlmIChmbGFncy1cXHUwMDNldHZsdl9mbGFncyBcXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9JUFY0KVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTM3Ny1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTM4OC1cXHQgICAgIHBtYyA9IHJjdV9kZXJlZmVyZW5jZShwbWMtXFx1MDAzZW5leHRfcmN1KSkge1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjM4OTpcXHRcXHRpZiAoZmxhZ3MtXFx1MDAzZXR2bHZfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfVU5TTk9PUEFCTEVTIFxcdTAwMjZcXHUwMDI2XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMzkwLVxcdFxcdCAgICBpcHY0X2lzX2xvY2FsX211bHRpY2FzdChwbWMtXFx1MDAzZW11bHRpYWRkcikpXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0zOTItXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MzkzOlxcdFxcdGlmICghKGZsYWdzLVxcdTAwM2V0dmx2X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNCkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0zOTQtXFx0XFx0ICAgICFpcHY0X2lzX2xvY2FsX211bHRpY2FzdChwbWMtXFx1MDAzZW11bHRpYWRkcikpXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz00MzM9YmF0YWR2X21jYXN0X21sYV9tZXNoaWZfZ2V0X2lwdjYoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTQ0Mi1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzo0NDM6XFx0aWYgKGZsYWdzLVxcdTAwM2V0dmx2X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjYpXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtNDQ0LVxcdFxcdHJldHVybiAwO1xcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtNDYwLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjQ2MTpcXHRcXHRpZiAoZmxhZ3MtXFx1MDAzZXR2bHZfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfVU5TTk9PUEFCTEVTIFxcdTAwMjZcXHUwMDI2XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtNDYyLVxcdFxcdCAgICBpcHY2X2FkZHJfaXNfbGxfYWxsX25vZGVzKFxcdTAwMjZwbWM2LVxcdTAwM2VtY2FfYWRkcikpXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy00NjQtXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6NDY1OlxcdFxcdGlmICghKGZsYWdzLVxcdTAwM2V0dmx2X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy00NjYtXFx0XFx0ICAgIElQVjZfQUREUl9NQ19TQ09QRShcXHUwMDI2cG1jNi1cXHUwMDNlbWNhX2FkZHIpIFxcdTAwM2VcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTU4Mz1zdGF0aWMgaW50IGJhdGFkdl9tY2FzdF9tbGFfYnJpZGdlX2dldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtNjAyLVxcdFxcdGlmIChicl9pcF9lbnRyeS1cXHUwMDNlYWRkci5wcm90byA9PSBodG9ucyhFVEhfUF9JUCkpIHtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzo2MDM6XFx0XFx0XFx0aWYgKHR2bHZfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNClcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy02MDQtXFx0XFx0XFx0XFx0Y29udGludWU7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtNjA1LVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjYwNjpcXHRcXHRcXHRpZiAodHZsdl9mbGFncyBcXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9VTlNOT09QQUJMRVMgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy02MDctXFx0XFx0XFx0ICAgIGlwdjRfaXNfbG9jYWxfbXVsdGljYXN0KGJyX2lwX2VudHJ5LVxcdTAwM2VhZGRyLmRzdC5pcDQpKVxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtNjA5LVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjYxMDpcXHRcXHRcXHRpZiAoISh0dmx2X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNCkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy02MTEtXFx0XFx0XFx0ICAgICFpcHY0X2lzX2xvY2FsX211bHRpY2FzdChicl9pcF9lbnRyeS1cXHUwMDNlYWRkci5kc3QuaXA0KSlcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTYxNi1cXHRcXHRpZiAoYnJfaXBfZW50cnktXFx1MDAzZWFkZHIucHJvdG8gPT0gaHRvbnMoRVRIX1BfSVBWNikpIHtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzo2MTc6XFx0XFx0XFx0aWYgKHR2bHZfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNilcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy02MTgtXFx0XFx0XFx0XFx0Y29udGludWU7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtNjE5LVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjYyMDpcXHRcXHRcXHRpZiAodHZsdl9mbGFncyBcXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9VTlNOT09QQUJMRVMgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy02MjEtXFx0XFx0XFx0ICAgIGlwdjZfYWRkcl9pc19sbF9hbGxfbm9kZXMoXFx1MDAyNmJyX2lwX2VudHJ5LVxcdTAwM2VhZGRyLmRzdC5pcDYpKVxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtNjIzLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjYyNDpcXHRcXHRcXHRpZiAoISh0dmx2X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy02MjUtXFx0XFx0XFx0ICAgIElQVjZfQUREUl9NQ19TQ09QRShcXHUwMDI2YnJfaXBfZW50cnktXFx1MDAzZWFkZHIuZHN0LmlwNikgXFx1MDAzZVxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9ODM0PXN0YXRpYyB2b2lkIGJhdGFkdl9tY2FzdF9mbGFnc19sb2coc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdiwgdTggZmxhZ3MpXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy04NDAtXFx0c3ByaW50ZihzdHJfb2xkX2ZsYWdzLCBcXFwiWyVjJWMlYyVzJXMlY11cXFwiLFxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjg0MTpcXHRcXHQob2xkX2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX1VOU05PT1BBQkxFUykgPyAnVScgOiAnLicsXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6ODQyOlxcdFxcdChvbGRfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNCkgPyAnNCcgOiAnLicsXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6ODQzOlxcdFxcdChvbGRfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNikgPyAnNicgOiAnLicsXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6ODQ0OlxcdFxcdCEob2xkX2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNCkgPyBcXFwiUjRcXFwiIDogXFxcIi4gXFxcIixcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzo4NDU6XFx0XFx0IShvbGRfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI2KSA/IFxcXCJSNlxcXCIgOiBcXFwiLiBcXFwiLFxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjg0NjpcXHRcXHQhKG9sZF9mbGFncyBcXHUwMDI2IEJBVEFEVl9NQ0FTVF9IQVZFX01DX1BUWVBFX0NBUEEpID8gJ1AnIDogJy4nKTtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy04NDctXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy04NTAtXFx0XFx0ICAgb2xkX2VuYWJsZWQgPyBzdHJfb2xkX2ZsYWdzIDogXFxcIlxcdTAwM2N1bmRlZmluZWRcXHUwMDNlXFxcIixcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzo4NTE6XFx0XFx0ICAgKGZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX1VOU05PT1BBQkxFUykgPyAnVScgOiAnLicsXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6ODUyOlxcdFxcdCAgIChmbGFncyBcXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9JUFY0KSA/ICc0JyA6ICcuJyxcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzo4NTM6XFx0XFx0ICAgKGZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjYpID8gJzYnIDogJy4nLFxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjg1NDpcXHRcXHQgICAhKGZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNCkgPyBcXFwiUjRcXFwiIDogXFxcIi4gXFxcIixcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzo4NTU6XFx0XFx0ICAgIShmbGFncyBcXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjYpID8gXFxcIlI2XFxcIiA6IFxcXCIuIFxcXCIsXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6ODU2OlxcdFxcdCAgICEoZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfSEFWRV9NQ19QVFlQRV9DQVBBKSA/ICdQJyA6ICcuJyk7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtODU3LX1cXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTExOTQ9YmF0YWR2X21jYXN0X2ZvcndfbW9kZV9ieV9jb3VudChzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTIwMS1cXHRpZiAoIWF0b21pY19yZWFkKFxcdTAwMjZiYXRfcHJpdi1cXHUwMDNlbWNhc3QubnVtX25vX21jX3B0eXBlX2NhcGEpIFxcdTAwMjZcXHUwMDI2XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTIwMjpcXHQgICAgb3duX3R2bHZfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfSEFWRV9NQ19QVFlQRV9DQVBBIFxcdTAwMjZcXHUwMDI2XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTIwMy1cXHQgICAgc2tiLVxcdTAwM2VsZW4gKyBtY2FzdF9oZHJsZW4gXFx1MDAzYz0gSVBWNl9NSU5fTVRVIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz0xMzAxPWJhdGFkdl9tY2FzdF9mb3J3X3R0KHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xMzQxLSAqIFNlbmRzIGNvcGllcyBvZiBhIGZyYW1lIHdpdGggbXVsdGljYXN0IGRlc3RpbmF0aW9uIHRvIGFueSBub2RlIHdpdGggYVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjEzNDI6ICogQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjQgZmxhZyBzZXQuIEEgdHJhbnNtaXNzaW9uIGlzIHBlcmZvcm1lZCB2aWEgYVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTEzNDMtICogYmF0bWFuLWFkdiB1bmljYXN0IHBhY2tldCBmb3IgZWFjaCBzdWNoIGRlc3RpbmF0aW9uIG5vZGUuXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz0xMzQ5PWJhdGFkdl9tY2FzdF9mb3J3X3dhbnRfYWxsX2lwdjQoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTEzNzgtICogU2VuZHMgY29waWVzIG9mIGEgZnJhbWUgd2l0aCBtdWx0aWNhc3QgZGVzdGluYXRpb24gdG8gYW55IG5vZGUgd2l0aCBhXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTM3OTogKiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNiBmbGFnIHNldC4gQSB0cmFuc21pc3Npb24gaXMgcGVyZm9ybWVkIHZpYSBhXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTM4MC0gKiBiYXRtYW4tYWR2IHVuaWNhc3QgcGFja2V0IGZvciBlYWNoIHN1Y2ggZGVzdGluYXRpb24gbm9kZS5cXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTEzODY9YmF0YWR2X21jYXN0X2Zvcndfd2FudF9hbGxfaXB2NihzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTQxNS0gKiBTZW5kcyBjb3BpZXMgb2YgYSBmcmFtZSB3aXRoIG11bHRpY2FzdCBkZXN0aW5hdGlvbiB0byBhbnkgbm9kZSB3aXRoIGFcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNDE2OiAqIEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9JUFY0IG9yIEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9JUFY2IGZsYWcgc2V0LiBBXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTQxNy0gKiB0cmFuc21pc3Npb24gaXMgcGVyZm9ybWVkIHZpYSBhIGJhdG1hbi1hZHYgdW5pY2FzdCBwYWNrZXQgZm9yIGVhY2ggc3VjaFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTQyND1iYXRhZHZfbWNhc3RfZm9yd193YW50X2FsbChzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTQ0NC0gKiBTZW5kcyBjb3BpZXMgb2YgYSBmcmFtZSB3aXRoIG11bHRpY2FzdCBkZXN0aW5hdGlvbiB0byBhbnkgbm9kZSB3aXRoIGFcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNDQ1OiAqIEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQgZmxhZyB1bnNldC4gQSB0cmFuc21pc3Npb24gaXMgcGVyZm9ybWVkIHZpYSBhXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTQ0Ni0gKiBiYXRtYW4tYWR2IHVuaWNhc3QgcGFja2V0IGZvciBlYWNoIHN1Y2ggZGVzdGluYXRpb24gbm9kZS5cXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTE0NTI9YmF0YWR2X21jYXN0X2Zvcndfd2FudF9hbGxfcnRyNChzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTQ4MS0gKiBTZW5kcyBjb3BpZXMgb2YgYSBmcmFtZSB3aXRoIG11bHRpY2FzdCBkZXN0aW5hdGlvbiB0byBhbnkgbm9kZSB3aXRoIGFcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNDgyOiAqIEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjYgZmxhZyB1bnNldC4gQSB0cmFuc21pc3Npb24gaXMgcGVyZm9ybWVkIHZpYSBhXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTQ4My0gKiBiYXRtYW4tYWR2IHVuaWNhc3QgcGFja2V0IGZvciBlYWNoIHN1Y2ggZGVzdGluYXRpb24gbm9kZS5cXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTE0ODk9YmF0YWR2X21jYXN0X2Zvcndfd2FudF9hbGxfcnRyNihzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTUxOC0gKiBTZW5kcyBjb3BpZXMgb2YgYSBmcmFtZSB3aXRoIG11bHRpY2FzdCBkZXN0aW5hdGlvbiB0byBhbnkgbm9kZSB3aXRoIGFcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNTE5OiAqIEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQgb3IgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNiBmbGFnIHVuc2V0LiBBXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTUyMC0gKiB0cmFuc21pc3Npb24gaXMgcGVyZm9ybWVkIHZpYSBhIGJhdG1hbi1hZHYgdW5pY2FzdCBwYWNrZXQgZm9yIGVhY2ggc3VjaFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTU1OD1pbnQgYmF0YWR2X21jYXN0X2Zvcndfc2VuZChzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTU5NC0gKlxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE1OTU6ICogSWYgdGhlIEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9VTlNOT09QQUJMRVMgZmxhZyBvZiB0aGlzIG9yaWdpbmF0b3IsXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTU5Ni0gKiBvcmlnLCBoYXMgdG9nZ2xlZCB0aGVuIHRoaXMgbWV0aG9kIHVwZGF0ZXMgdGhlIGNvdW50ZXIgYW5kIHRoZSBsaXN0XFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz0xNjAxPXN0YXRpYyB2b2lkIGJhdGFkdl9tY2FzdF93YW50X3Vuc25vb3BfdXBkYXRlKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNjEwLVxcdC8qIHN3aXRjaGVkIGZyb20gZmxhZyB1bnNldCB0byBzZXQgKi9cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNjExOlxcdGlmIChtY2FzdF9mbGFncyBcXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9VTlNOT09QQUJMRVMgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNjEyOlxcdCAgICAhKG9yaWctXFx1MDAzZW1jYXN0X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX1VOU05PT1BBQkxFUykpIHtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNjEzLVxcdFxcdGF0b21pY19pbmMoXFx1MDAyNmJhdF9wcml2LVxcdTAwM2VtY2FzdC5udW1fd2FudF9hbGxfdW5zbm9vcGFibGVzKTtcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE2MjEtXFx0Lyogc3dpdGNoZWQgZnJvbSBmbGFnIHNldCB0byB1bnNldCAqL1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE2MjI6XFx0fSBlbHNlIGlmICghKG1jYXN0X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX1VOU05PT1BBQkxFUykgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNjIzOlxcdFxcdCAgIG9yaWctXFx1MDAzZW1jYXN0X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX1VOU05PT1BBQkxFUykge1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE2MjQtXFx0XFx0YXRvbWljX2RlYyhcXHUwMDI2YmF0X3ByaXYtXFx1MDAzZW1jYXN0Lm51bV93YW50X2FsbF91bnNub29wYWJsZXMpO1xcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTY0MC0gKlxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE2NDE6ICogSWYgdGhlIEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9JUFY0IGZsYWcgb2YgdGhpcyBvcmlnaW5hdG9yLCBvcmlnLCBoYXNcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNjQyLSAqIHRvZ2dsZWQgdGhlbiB0aGlzIG1ldGhvZCB1cGRhdGVzIHRoZSBjb3VudGVyIGFuZCB0aGUgbGlzdCBhY2NvcmRpbmdseS5cXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTE2NDY9c3RhdGljIHZvaWQgYmF0YWR2X21jYXN0X3dhbnRfaXB2NF91cGRhdGUoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE2NTUtXFx0Lyogc3dpdGNoZWQgZnJvbSBmbGFnIHVuc2V0IHRvIHNldCAqL1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE2NTY6XFx0aWYgKG1jYXN0X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjQgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNjU3OlxcdCAgICAhKG9yaWctXFx1MDAzZW1jYXN0X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjQpKSB7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTY1OC1cXHRcXHRhdG9taWNfaW5jKFxcdTAwMjZiYXRfcHJpdi1cXHUwMDNlbWNhc3QubnVtX3dhbnRfYWxsX2lwdjQpO1xcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTY2Ni1cXHQvKiBzd2l0Y2hlZCBmcm9tIGZsYWcgc2V0IHRvIHVuc2V0ICovXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTY2NzpcXHR9IGVsc2UgaWYgKCEobWNhc3RfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNCkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNjY4OlxcdFxcdCAgIG9yaWctXFx1MDAzZW1jYXN0X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjQpIHtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNjY5LVxcdFxcdGF0b21pY19kZWMoXFx1MDAyNmJhdF9wcml2LVxcdTAwM2VtY2FzdC5udW1fd2FudF9hbGxfaXB2NCk7XFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNjg1LSAqXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTY4NjogKiBJZiB0aGUgQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjYgZmxhZyBvZiB0aGlzIG9yaWdpbmF0b3IsIG9yaWcsIGhhc1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE2ODctICogdG9nZ2xlZCB0aGVuIHRoaXMgbWV0aG9kIHVwZGF0ZXMgdGhlIGNvdW50ZXIgYW5kIHRoZSBsaXN0IGFjY29yZGluZ2x5Llxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTY5MT1zdGF0aWMgdm9pZCBiYXRhZHZfbWNhc3Rfd2FudF9pcHY2X3VwZGF0ZShzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTcwMC1cXHQvKiBzd2l0Y2hlZCBmcm9tIGZsYWcgdW5zZXQgdG8gc2V0ICovXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTcwMTpcXHRpZiAobWNhc3RfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNiBcXHUwMDI2XFx1MDAyNlxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE3MDI6XFx0ICAgICEob3JpZy1cXHUwMDNlbWNhc3RfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNikpIHtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNzAzLVxcdFxcdGF0b21pY19pbmMoXFx1MDAyNmJhdF9wcml2LVxcdTAwM2VtY2FzdC5udW1fd2FudF9hbGxfaXB2Nik7XFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNzExLVxcdC8qIHN3aXRjaGVkIGZyb20gZmxhZyBzZXQgdG8gdW5zZXQgKi9cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNzEyOlxcdH0gZWxzZSBpZiAoIShtY2FzdF9mbGFncyBcXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9JUFY2KSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE3MTM6XFx0XFx0ICAgb3JpZy1cXHUwMDNlbWNhc3RfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNikge1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3MTQtXFx0XFx0YXRvbWljX2RlYyhcXHUwMDI2YmF0X3ByaXYtXFx1MDAzZW1jYXN0Lm51bV93YW50X2FsbF9pcHY2KTtcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3MzAtICpcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNzMxOiAqIElmIHRoZSBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0IGZsYWcgb2YgdGhpcyBvcmlnaW5hdG9yLCBvcmlnLCBoYXNcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNzMyLSAqIHRvZ2dsZWQgdGhlbiB0aGlzIG1ldGhvZCB1cGRhdGVzIHRoZSBjb3VudGVyIGFuZCB0aGUgbGlzdCBhY2NvcmRpbmdseS5cXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTE3MzY9c3RhdGljIHZvaWQgYmF0YWR2X21jYXN0X3dhbnRfcnRyNF91cGRhdGUoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3NDUtXFx0Lyogc3dpdGNoZWQgZnJvbSBmbGFnIHNldCB0byB1bnNldCAqL1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE3NDY6XFx0aWYgKCEobWNhc3RfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0KSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE3NDc6XFx0ICAgIG9yaWctXFx1MDAzZW1jYXN0X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNCkge1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3NDgtXFx0XFx0YXRvbWljX2luYyhcXHUwMDI2YmF0X3ByaXYtXFx1MDAzZW1jYXN0Lm51bV93YW50X2FsbF9ydHI0KTtcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3NTYtXFx0Lyogc3dpdGNoZWQgZnJvbSBmbGFnIHVuc2V0IHRvIHNldCAqL1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE3NTc6XFx0fSBlbHNlIGlmIChtY2FzdF9mbGFncyBcXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNzU4OlxcdFxcdCAgICEob3JpZy1cXHUwMDNlbWNhc3RfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI0KSkge1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3NTktXFx0XFx0YXRvbWljX2RlYyhcXHUwMDI2YmF0X3ByaXYtXFx1MDAzZW1jYXN0Lm51bV93YW50X2FsbF9ydHI0KTtcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3NzUtICpcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxNzc2OiAqIElmIHRoZSBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI2IGZsYWcgb2YgdGhpcyBvcmlnaW5hdG9yLCBvcmlnLCBoYXNcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xNzc3LSAqIHRvZ2dsZWQgdGhlbiB0aGlzIG1ldGhvZCB1cGRhdGVzIHRoZSBjb3VudGVyIGFuZCB0aGUgbGlzdCBhY2NvcmRpbmdseS5cXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jPTE3ODE9c3RhdGljIHZvaWQgYmF0YWR2X21jYXN0X3dhbnRfcnRyNl91cGRhdGUoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3OTAtXFx0Lyogc3dpdGNoZWQgZnJvbSBmbGFnIHNldCB0byB1bnNldCAqL1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE3OTE6XFx0aWYgKCEobWNhc3RfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI2KSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE3OTI6XFx0ICAgIG9yaWctXFx1MDAzZW1jYXN0X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNikge1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE3OTMtXFx0XFx0YXRvbWljX2luYyhcXHUwMDI2YmF0X3ByaXYtXFx1MDAzZW1jYXN0Lm51bV93YW50X2FsbF9ydHI2KTtcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE4MDEtXFx0Lyogc3dpdGNoZWQgZnJvbSBmbGFnIHVuc2V0IHRvIHNldCAqL1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE4MDI6XFx0fSBlbHNlIGlmIChtY2FzdF9mbGFncyBcXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjYgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxODAzOlxcdFxcdCAgICEob3JpZy1cXHUwMDNlbWNhc3RfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9OT19SVFI2KSkge1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE4MDQtXFx0XFx0YXRvbWljX2RlYyhcXHUwMDI2YmF0X3ByaXYtXFx1MDAzZW1jYXN0Lm51bV93YW50X2FsbF9ydHI2KTtcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE4MjAtICpcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxODIxOiAqIElmIHRoZSBCQVRBRFZfTUNBU1RfSEFWRV9NQ19QVFlQRV9DQVBBIGZsYWcgb2YgdGhpcyBvcmlnaW5hdG9yLCBvcmlnLCBoYXNcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xODIyLSAqIHRvZ2dsZWQgdGhlbiB0aGlzIG1ldGhvZCB1cGRhdGVzIHRoZSBjb3VudGVyIGFjY29yZGluZ2x5Llxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTgyND1zdGF0aWMgdm9pZCBiYXRhZHZfbWNhc3RfaGF2ZV9tY19wdHlwZV91cGRhdGUoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE4MzAtXFx0Lyogc3dpdGNoZWQgZnJvbSBmbGFnIHNldCB0byB1bnNldCAqL1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE4MzE6XFx0aWYgKCEobWNhc3RfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfSEFWRV9NQ19QVFlQRV9DQVBBKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE4MzI6XFx0ICAgIG9yaWctXFx1MDAzZW1jYXN0X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX0hBVkVfTUNfUFRZUEVfQ0FQQSlcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xODMzLVxcdFxcdGF0b21pY19pbmMoXFx1MDAyNmJhdF9wcml2LVxcdTAwM2VtY2FzdC5udW1fbm9fbWNfcHR5cGVfY2FwYSk7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTgzNC1cXHQvKiBzd2l0Y2hlZCBmcm9tIGZsYWcgdW5zZXQgdG8gc2V0ICovXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTgzNTpcXHRlbHNlIGlmIChtY2FzdF9mbGFncyBcXHUwMDI2IEJBVEFEVl9NQ0FTVF9IQVZFX01DX1BUWVBFX0NBUEEgXFx1MDAyNlxcdTAwMjZcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxODM2OlxcdFxcdCAhKG9yaWctXFx1MDAzZW1jYXN0X2ZsYWdzIFxcdTAwMjYgQkFUQURWX01DQVNUX0hBVkVfTUNfUFRZUEVfQ0FQQSkpXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTgzNy1cXHRcXHRhdG9taWNfZGVjKFxcdTAwMjZiYXRfcHJpdi1cXHUwMDNlbWNhc3QubnVtX25vX21jX3B0eXBlX2NhcGEpO1xcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTg0OT1iYXRhZHZfbWNhc3RfdHZsdl9mbGFnc19nZXQoYm9vbCBlbmFibGVkLCB2b2lkICp0dmx2X3ZhbHVlLCB1MTYgdHZsdl92YWx1ZV9sZW4pXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xODU2LVxcdGlmICghZW5hYmxlZCkge1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE4NTc6XFx0XFx0bWNhc3RfZmxhZ3MgfD0gQkFUQURWX01DQVNUX1dBTlRfQUxMX0lQVjQ7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTg1ODpcXHRcXHRtY2FzdF9mbGFncyB8PSBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNjtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xODU5LVxcdH1cXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE4NjEtXFx0LyogcmVtb3ZlIHJlZHVuZGFudCBmbGFncyB0byBhdm9pZCBzZW5kaW5nIGR1cGxpY2F0ZSBwYWNrZXRzIGxhdGVyICovXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTg2MjpcXHRpZiAobWNhc3RfZmxhZ3MgXFx1MDAyNiBCQVRBRFZfTUNBU1RfV0FOVF9BTExfSVBWNClcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxODYzOlxcdFxcdG1jYXN0X2ZsYWdzIHw9IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQ7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTg2NC1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxODY1OlxcdGlmIChtY2FzdF9mbGFncyBcXHUwMDI2IEJBVEFEVl9NQ0FTVF9XQU5UX0FMTF9JUFY2KVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE4NjY6XFx0XFx0bWNhc3RfZmxhZ3MgfD0gQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNjtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xODY3LVxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM9MTkzOT1pbnQgYmF0YWR2X21jYXN0X21lc2hfaW5mb19wdXQoc3RydWN0IHNrX2J1ZmYgKm1zZyxcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE5NDUtXFx0aWYgKGJhdF9wcml2LVxcdTAwM2VtY2FzdC5tbGFfZmxhZ3MuYnJpZGdlZCkge1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE5NDY6XFx0XFx0ZmxhZ3NfcHJpdiB8PSBCQVRBRFZfTUNBU1RfRkxBR1NfQlJJREdFRDtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xOTQ3LVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE5NDgtXFx0XFx0aWYgKGJhdF9wcml2LVxcdTAwM2VtY2FzdC5tbGFfZmxhZ3MucXVlcmllcl9pcHY0LmV4aXN0cylcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxOTQ5OlxcdFxcdFxcdGZsYWdzX3ByaXYgfD0gQkFUQURWX01DQVNUX0ZMQUdTX1FVRVJJRVJfSVBWNF9FWElTVFM7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTk1MC1cXHRcXHRpZiAoYmF0X3ByaXYtXFx1MDAzZW1jYXN0Lm1sYV9mbGFncy5xdWVyaWVyX2lwdjYuZXhpc3RzKVxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjE5NTE6XFx0XFx0XFx0ZmxhZ3NfcHJpdiB8PSBCQVRBRFZfTUNBU1RfRkxBR1NfUVVFUklFUl9JUFY2X0VYSVNUUztcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0xOTUyLVxcdFxcdGlmIChiYXRfcHJpdi1cXHUwMDNlbWNhc3QubWxhX2ZsYWdzLnF1ZXJpZXJfaXB2NC5zaGFkb3dpbmcpXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmM6MTk1MzpcXHRcXHRcXHRmbGFnc19wcml2IHw9IEJBVEFEVl9NQ0FTVF9GTEFHU19RVUVSSUVSX0lQVjRfU0hBRE9XSU5HO1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTE5NTQtXFx0XFx0aWYgKGJhdF9wcml2LVxcdTAwM2VtY2FzdC5tbGFfZmxhZ3MucXVlcmllcl9pcHY2LnNoYWRvd2luZylcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoxOTU1OlxcdFxcdFxcdGZsYWdzX3ByaXYgfD0gQkFUQURWX01DQVNUX0ZMQUdTX1FVRVJJRVJfSVBWNl9TSEFET1dJTkc7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMTk1Ni1cXHR9XFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYz0yMTc4PXZvaWQgYmF0YWR2X21jYXN0X3B1cmdlX29yaWcoc3RydWN0IGJhdGFkdl9vcmlnX25vZGUgKm9yaWcpXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yMTg3LVxcdGJhdGFkdl9tY2FzdF93YW50X3J0cjRfdXBkYXRlKGJhdF9wcml2LCBvcmlnLFxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjIxODg6XFx0XFx0XFx0XFx0ICAgICAgQkFUQURWX01DQVNUX1dBTlRfTk9fUlRSNCk7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0LmMtMjE4OS1cXHRiYXRhZHZfbWNhc3Rfd2FudF9ydHI2X3VwZGF0ZShiYXRfcHJpdiwgb3JpZyxcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYzoyMTkwOlxcdFxcdFxcdFxcdCAgICAgIEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjYpO1xcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jLTIxOTEtXFx0YmF0YWR2X21jYXN0X2hhdmVfbWNfcHR5cGVfdXBkYXRlKGJhdF9wcml2LCBvcmlnLFxcbm5ldC9iYXRtYW4tYWR2L211bHRpY2FzdC5jOjIxOTI6XFx0XFx0XFx0XFx0XFx0ICBCQVRBRFZfTUNBU1RfSEFWRV9NQ19QVFlQRV9DQVBBKTtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3QuYy0yMTkzLVxcbi0tXFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0X2ZvcncuYz02MTY9YmF0YWR2X21jYXN0X2ZvcndfcHVzaF9oZHIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgc2hvcnQgdHZsdl9sZW4pXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3RfZm9ydy5jLTYyNy1cXHRtY2FzdF9wYWNrZXQtXFx1MDAzZXR0bCA9IEJBVEFEVl9UVEw7XFxubmV0L2JhdG1hbi1hZHYvbXVsdGljYXN0X2ZvcncuYzo2Mjg6XFx0bWNhc3RfcGFja2V0LVxcdTAwM2VwYWNrZXRfdHlwZSA9IEJBVEFEVl9NQ0FTVDtcXG5uZXQvYmF0bWFuLWFkdi9tdWx0aWNhc3RfZm9ydy5jLTYyOS1cXHRtY2FzdF9wYWNrZXQtXFx1MDAzZXJlc2VydmVkID0gMDtcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L29yaWdpbmF0b3IuYz05NDE9c3RydWN0IGJhdGFkdl9vcmlnX25vZGUgKmJhdGFkdl9vcmlnX25vZGVfbmV3KHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmMtOTc4LSNpZmRlZiBDT05GSUdfQkFUTUFOX0FEVl9NQ0FTVFxcbm5ldC9iYXRtYW4tYWR2L29yaWdpbmF0b3IuYzo5Nzk6XFx0b3JpZ19ub2RlLVxcdTAwM2VtY2FzdF9mbGFncyA9IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjQ7XFxubmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jOjk4MDpcXHRvcmlnX25vZGUtXFx1MDAzZW1jYXN0X2ZsYWdzIHw9IEJBVEFEVl9NQ0FTVF9XQU5UX05PX1JUUjY7XFxubmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jOjk4MTpcXHRvcmlnX25vZGUtXFx1MDAzZW1jYXN0X2ZsYWdzIHw9IEJBVEFEVl9NQ0FTVF9IQVZFX01DX1BUWVBFX0NBUEE7XFxubmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jLTk4Mi1cXHRJTklUX0hMSVNUX05PREUoXFx1MDAyNm9yaWdfbm9kZS1cXHUwMDNlbWNhc3Rfd2FudF9hbGxfdW5zbm9vcGFibGVzX25vZGUpO1xcbi0tXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jPTEzMzk9aW50IGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jLTEzNzUtXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jOjEzNzY6XFx0cmV0ID0gYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzKGJhdF9wcml2LCBCQVRBRFZfTUNBU1QsIE5VTEwsIHNrYixcXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMtMTM3Ny1cXHRcXHRcXHRcXHRcXHQgICAgIHR2bHZfYnVmZiwgdHZsdl9idWZmX2xlbik7XFxuLS1cXG5uZXQvYmF0bWFuLWFkdi90dmx2LmM9Mzg5PXN0YXRpYyBpbnQgYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNDI3LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgdHZsdl92YWx1ZV9sZW4pO1xcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYzo0Mjg6XFx0Y2FzZSBCQVRBRFZfTUNBU1Q6XFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTQyOS1cXHRcXHRpZiAoIXNrYilcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L3R5cGVzLmg9MTI0ND1zdHJ1Y3QgYmF0YWR2X3ByaXZfbWNhc3Qge1xcbi0tXFxubmV0L2JhdG1hbi1hZHYvdHlwZXMuaC0xMzEwLVxcdCAqIEBudW1fbm9fbWNfcHR5cGVfY2FwYTogY291bnRlciBmb3IgbnVtYmVyIG9mIG5vZGVzIHdpdGhvdXQgdGhlXFxubmV0L2JhdG1hbi1hZHYvdHlwZXMuaDoxMzExOlxcdCAqICBCQVRBRFZfTUNBU1RfSEFWRV9NQ19QVFlQRV9DQVBBIGZsYWdcXG5uZXQvYmF0bWFuLWFkdi90eXBlcy5oLTEzMTItXFx0ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE4OjU5OjE5LjQ3MTQ3MTQ2OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTc3ODI0NDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQkFUQURWIE11bHRpY2FzdCBQYWNrZXQgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBCQVRBRFZfTUNBU1RgIHBhY2tldCB0eXBlLiBSaWdodCwgdGhhdCBtYWtlcyBzZW5zZSDigJMgaXQncyBzcGVjaWZpY2FsbHkgZm9yIG11bHRpY2FzdCB0cmFmZmljIHdpdGhpbiB0aGUgQmF0bWFuLWFkdiBuZXR3b3JrLiBOb3csIEkgc2VlIHRoYXQgYGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldGAgZnVuY3Rpb24gaXMgdGhlIG9uZSByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhlc2UgYEJBVEFEVl9NQ0FTVGAgcGFja2V0cy4gQW5kIHRoaXMgZnVuY3Rpb24/IEl0J3Mgb25seSBnb2luZyB0byBiZSBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwgbW9kdWxlIGlmIGBDT05GSUdfQkFUTUFOX0FEVl9NQ0FTVGAgaXMgZGVmaW5lZCwgd2hpY2ggaW1wbGllcyBpdCBpcyBhIGNvbXBpbGUtdGltZSBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBjb25maWcgb3B0aW9uLCB0aGUgZnVuY3Rpb24sIGFuZCB0aGUgcGFja2V0IHR5cGUsIHNvIGxldCBtZSBqdXN0IHRha2UgYSBxdWljayBzZWNvbmQgdG8gZG91YmxlLWNoZWNrIGByb3V0aW5nLmhgIGFnYWluLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIHJlbGF0ZWQgdG8gdGhlIHJvdXRpbmcgYXNwZWN0cyBvZiB0aGlzIG11bHRpY2FzdCBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg1NDQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxODo1OToyMy40NDkyOTg0OTdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMTYyODg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJhdGFkdl9yZWN2X21jYXN0X3BhY2tldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYmF0bWFuLWFkdi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JhdG1hbi1hZHYvbWFpbi5jPTUwND1zdGF0aWMgdm9pZCBiYXRhZHZfcmVjdl9oYW5kbGVyX2luaXQodm9pZClcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L21haW4uYy01MzctXFx0LyogbXVsdGljYXN0IHBhY2tldCAqL1xcbm5ldC9iYXRtYW4tYWR2L21haW4uYzo1Mzg6XFx0YmF0YWR2X3J4X2hhbmRsZXJbQkFUQURWX01DQVNUXSA9IGJhdGFkdl9yZWN2X21jYXN0X3BhY2tldDtcXG5uZXQvYmF0bWFuLWFkdi9tYWluLmMtNTM5LVxcbi0tXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jPTEyMTI9aW50IGJhdGFkdl9yZWN2X2JjYXN0X3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jLTEzMjgtLyoqXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jOjEzMjk6ICogYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0KCkgLSBwcm9jZXNzIHJlY2VpdmVkIGJhdG1hbi1hZHYgbXVsdGljYXN0IHBhY2tldFxcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYy0xMzMwLSAqIEBza2I6IHRoZSByZWNlaXZlZCBiYXRtYW4tYWR2IG11bHRpY2FzdCBwYWNrZXRcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYy0xMzM4LSAqL1xcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYzoxMzM5OmludCBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMtMTM0MC1cXHRcXHRcXHQgICAgIHN0cnVjdCBiYXRhZHZfaGFyZF9pZmFjZSAqcmVjdl9pZilcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuaD0yOD1pbnQgYmF0YWR2X3JlY3ZfYmNhc3RfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmgtMzAtI2lmZGVmIENPTkZJR19CQVRNQU5fQURWX01DQVNUXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5oOjMxOmludCBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmgtMzItXFx0XFx0XFx0ICAgICBzdHJ1Y3QgYmF0YWR2X2hhcmRfaWZhY2UgKnJlY3ZfaWYpO1xcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuaC0zMy0jZWxzZVxcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuaDozNDpzdGF0aWMgaW5saW5lIGludCBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmgtMzUtXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGJhdGFkdl9oYXJkX2lmYWNlICpyZWN2X2lmKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxODo1OToyMy40OTI0NjYwMzRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg1MjkyMDk4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJBVE1BTi1BRFYgTXVsdGljYXN0IERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gdGhpcyBgYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0YCBmdW5jdGlvbiwgYW5kIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgaXQncyBvbmx5ICpmdWxseSogaW1wbGVtZW50ZWQgd2hlbiBgQ09ORklHX0JBVE1BTl9BRFZfTUNBU1RgIGlzIGVuYWJsZWQuIFRoYXQncyBhIGdpdmVuLiBTbywgeWVzLCB0aGUgbXVsdGljYXN0IGZ1bmN0aW9uYWxpdHkgZGVmaW5pdGVseSBoaW5nZXMgb24gYEJBVE1BTl9BRFZfTUNBU1RgLiBOb3csIHRoZSBicm9hZGVyIHF1ZXN0aW9uOiB3aGF0IGVsc2UgZG8gSSBuZWVkPyBJIGFzc3VtZSB0aGUgYmFzZSBCQVRNQU4tQURWIGZ1bmN0aW9uYWxpdHksIG1lYW5pbmcgYEJBVE1BTl9BRFZgIGl0c2VsZiBpcyBuZWNlc3NhcnkuIFRoYXQncyBwcm9iYWJseSB0aGUgY29yZSBjb25maWcsIHJpZ2h0P1xuXG5CdXQgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gQXJlIHRoZXJlIGFueSAqb3RoZXIqIGRlcGVuZGVuY2llcyBsdXJraW5nIGluIHRoZSBzaGFkb3dzPyBUaW1lIHRvIGRpdmUgaW50byB0aGUgYG5ldC9iYXRtYW4tYWR2L0tjb25maWdgIGZpbGUuIFRoYXQncyB0aGUgZGVmaW5pdGl2ZSBzb3VyY2UuIEknbGwgc2NvdXIgdGhhdCBjb25maWcgZmlsZSB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBzbmVha3ksIGluZGlyZWN0IGRlcGVuZGVuY2llcyB0aGF0IEknbSBtaXNzaW5nLiBOZWVkIHRvIGJlIHRob3JvdWdoIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5Mzc1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTg6NTk6MjcuMzQ1Mzg5NTcxWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9iYXRtYW4tYWR2L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0IyBDb3B5cmlnaHQgKEMpIEIuQS5ULk0uQS5OLiBjb250cmlidXRvcnM6XFxuICAgMzpcXHQjXFxuICAgNDpcXHQjIE1hcmVrIExpbmRuZXIsIFNpbW9uIFd1bmRlcmxpY2hcXG4gICA1OlxcdFxcbiAgIDY6XFx0I1xcbiAgIDc6XFx0IyBCLkEuVC5NLkEuTiBtZXNoaW5nIHByb3RvY29sXFxuICAgODpcXHQjXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNvbmZpZyBCQVRNQU5fQURWXFxuICAxMTpcXHRcXHR0cmlzdGF0ZSBcXFwiQi5BLlQuTS5BLk4uIEFkdmFuY2VkIE1lc2hpbmcgUHJvdG9jb2xcXFwiXFxuICAxMjpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDEzOlxcdFxcdGhlbHBcXG4gIDE0OlxcdFxcdCAgQi5BLlQuTS5BLk4uIChiZXR0ZXIgYXBwcm9hY2ggdG8gbW9iaWxlIGFkLWhvYyBuZXR3b3JraW5nKSBpc1xcbiAgMTU6XFx0XFx0ICBhIHJvdXRpbmcgcHJvdG9jb2wgZm9yIG11bHRpLWhvcCBhZC1ob2MgbWVzaCBuZXR3b3Jrcy4gVGhlXFxuICAxNjpcXHRcXHQgIG5ldHdvcmtzIG1heSBiZSB3aXJlZCBvciB3aXJlbGVzcy4gU2VlXFxuICAxNzpcXHRcXHQgIGh0dHBzOi8vd3d3Lm9wZW4tbWVzaC5vcmcvIGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCB1c2VyIHNwYWNlXFxuICAxODpcXHRcXHQgIHRvb2xzLlxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgQkFUTUFOX0FEVl9CQVRNQU5fVlxcbiAgMjE6XFx0XFx0Ym9vbCBcXFwiQi5BLlQuTS5BLk4uIFYgcHJvdG9jb2xcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIEJBVE1BTl9BRFYgXFx1MDAyNlxcdTAwMjYgIShDRkc4MDIxMT1tIFxcdTAwMjZcXHUwMDI2IEJBVE1BTl9BRFY9eSlcXG4gIDIzOlxcdFxcdGRlZmF1bHQgeVxcbiAgMjQ6XFx0XFx0aGVscFxcbiAgMjU6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBCLkEuVC5NLkEuTi4gViBwcm90b2NvbCwgdGhlIHN1Y2Nlc3NvclxcbiAgMjY6XFx0XFx0ICBvZiB0aGUgY3VycmVudGx5IHVzZWQgQi5BLlQuTS5BLk4uIElWIHByb3RvY29sLiBUaGUgbWFpblxcbiAgMjc6XFx0XFx0ICBjaGFuZ2VzIGluY2x1ZGUgc3BsaXR0aW5nIG9mIHRoZSBPR00gcHJvdG9jb2wgaW50byBhIG5laWdoYm9yXFxuICAyODpcXHRcXHQgIGRpc2NvdmVyeSBwcm90b2NvbCAoRWNobyBMb2NhdGlvbiBQcm90b2NvbCwgRUxQKSBhbmQgYSBuZXcgT0dNXFxuICAyOTpcXHRcXHQgIFByb3RvY29sIE9HTXYyIGZvciBmbG9vZGluZyBwcm90b2NvbCBpbmZvcm1hdGlvbiB0aHJvdWdoIHRoZVxcbiAgMzA6XFx0XFx0ICBuZXR3b3JrLCBhcyB3ZWxsIGFzIGEgdGhyb3VnaHB1dCBiYXNlZCBtZXRyaWMuXFxuICAzMTpcXHRcXHQgIEIuQS5ULk0uQS5OLiBWIGlzIGN1cnJlbnRseSBjb25zaWRlcmVkIGV4cGVyaW1lbnRhbCBhbmQgbm90XFxuICAzMjpcXHRcXHQgIGNvbXBhdGlibGUgdG8gQi5BLlQuTS5BLk4uIElWIG5ldHdvcmtzLlxcbiAgMzM6XFx0XFxuICAzNDpcXHRjb25maWcgQkFUTUFOX0FEVl9CTEFcXG4gIDM1OlxcdFxcdGJvb2wgXFxcIkJyaWRnZSBMb29wIEF2b2lkYW5jZVxcXCJcXG4gIDM2OlxcdFxcdGRlcGVuZHMgb24gQkFUTUFOX0FEViBcXHUwMDI2XFx1MDAyNiBJTkVUXFxuICAzNzpcXHRcXHRzZWxlY3QgQ1JDMTZcXG4gIDM4OlxcdFxcdHNlbGVjdCBORVRfQ1JDMzJDXFxuICAzOTpcXHRcXHRkZWZhdWx0IHlcXG4gIDQwOlxcdFxcdGhlbHBcXG4gIDQxOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBCTEEgKEJyaWRnZSBMb29wIEF2b2lkYW5jZSksIGEgbWVjaGFuaXNtXFxuICA0MjpcXHRcXHQgIHRvIGF2b2lkIEV0aGVybmV0IGZyYW1lcyBsb29waW5nIHdoZW4gbWVzaCBub2RlcyBhcmUgY29ubmVjdGVkXFxuICA0MzpcXHRcXHQgIHRvIGJvdGggdGhlIHNhbWUgTEFOIGFuZCB0aGUgc2FtZSBtZXNoLiBJZiB5b3Ugd2lsbCBuZXZlciB1c2VcXG4gIDQ0OlxcdFxcdCAgbW9yZSB0aGFuIG9uZSBtZXNoIG5vZGUgaW4gdGhlIHNhbWUgTEFOLCB5b3UgY2FuIHNhZmVseSByZW1vdmVcXG4gIDQ1OlxcdFxcdCAgdGhpcyBmZWF0dXJlIGFuZCBzYXZlIHNvbWUgc3BhY2UuXFxuICA0NjpcXHRcXG4gIDQ3OlxcdGNvbmZpZyBCQVRNQU5fQURWX0RBVFxcbiAgNDg6XFx0XFx0Ym9vbCBcXFwiRGlzdHJpYnV0ZWQgQVJQIFRhYmxlXFxcIlxcbiAgNDk6XFx0XFx0ZGVwZW5kcyBvbiBCQVRNQU5fQURWIFxcdTAwMjZcXHUwMDI2IElORVRcXG4gIDUwOlxcdFxcdGRlZmF1bHQgeVxcbiAgNTE6XFx0XFx0aGVscFxcbiAgNTI6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIERBVCAoRGlzdHJpYnV0ZWQgQVJQIFRhYmxlKSwgYSBESFQgYmFzZWRcXG4gIDUzOlxcdFxcdCAgbWVjaGFuaXNtIHRoYXQgaW5jcmVhc2VzIEFSUCByZWxpYWJpbGl0eSBvbiBzcGFyc2Ugd2lyZWxlc3NcXG4gIDU0OlxcdFxcdCAgbWVzaCBuZXR3b3Jrcy4gSWYgeW91IHRoaW5rIHRoYXQgeW91ciBuZXR3b3JrIGRvZXMgbm90IG5lZWRcXG4gIDU1OlxcdFxcdCAgdGhpcyBvcHRpb24geW91IGNhbiBzYWZlbHkgcmVtb3ZlIGl0IGFuZCBzYXZlIHNvbWUgc3BhY2UuXFxuICA1NjpcXHRcXG4gIDU3OlxcdGNvbmZpZyBCQVRNQU5fQURWX01DQVNUXFxuICA1ODpcXHRcXHRib29sIFxcXCJNdWx0aWNhc3Qgb3B0aW1pc2F0aW9uXFxcIlxcbiAgNTk6XFx0XFx0ZGVwZW5kcyBvbiBCQVRNQU5fQURWIFxcdTAwMjZcXHUwMDI2IElORVQgXFx1MDAyNlxcdTAwMjYgIShCUklER0U9bSBcXHUwMDI2XFx1MDAyNiBCQVRNQU5fQURWPXkpXFxuICA2MDpcXHRcXHRkZWZhdWx0IHlcXG4gIDYxOlxcdFxcdGhlbHBcXG4gIDYyOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgbXVsdGljYXN0IG9wdGltaXNhdGlvbiB3aGljaCBhaW1zIHRvXFxuICA2MzpcXHRcXHQgIHJlZHVjZSB0aGUgYWlyIG92ZXJoZWFkIHdoaWxlIGltcHJvdmluZyB0aGUgcmVsaWFiaWxpdHkgb2ZcXG4gIDY0OlxcdFxcdCAgbXVsdGljYXN0IG1lc3NhZ2VzLlxcbiAgNjU6XFx0XFxuICA2NjpcXHRjb25maWcgQkFUTUFOX0FEVl9ERUJVR1xcbiAgNjc6XFx0XFx0Ym9vbCBcXFwiQi5BLlQuTS5BLk4uIGRlYnVnZ2luZ1xcXCJcXG4gIDY4OlxcdFxcdGRlcGVuZHMgb24gQkFUTUFOX0FEVlxcbiAgNjk6XFx0XFx0aGVscFxcbiAgNzA6XFx0XFx0ICBUaGlzIGlzIGFuIG9wdGlvbiBmb3IgdXNlIGJ5IGRldmVsb3BlcnM7IG1vc3QgcGVvcGxlIHNob3VsZFxcbiAgNzE6XFx0XFx0ICBzYXkgTiBoZXJlLiBUaGlzIGVuYWJsZXMgY29tcGlsYXRpb24gb2Ygc3VwcG9ydCBmb3JcXG4gIDcyOlxcdFxcdCAgb3V0cHV0dGluZyBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gdG8gdGhlIHRyYWNpbmcgYnVmZmVyLiBUaGUgb3V0cHV0IGlzXFxuICA3MzpcXHRcXHQgIGNvbnRyb2xsZWQgdmlhIHRoZSBiYXRhZHYgbmV0ZGV2IHNwZWNpZmljIGxvZ19sZXZlbCBzZXR0aW5nLlxcbiAgNzQ6XFx0XFxuICA3NTpcXHRjb25maWcgQkFUTUFOX0FEVl9UUkFDSU5HXFxuICA3NjpcXHRcXHRib29sIFxcXCJCLkEuVC5NLkEuTi4gdHJhY2luZyBzdXBwb3J0XFxcIlxcbiAgNzc6XFx0XFx0ZGVwZW5kcyBvbiBCQVRNQU5fQURWXFxuICA3ODpcXHRcXHRkZXBlbmRzIG9uIEVWRU5UX1RSQUNJTkdcXG4gIDc5OlxcdFxcdGhlbHBcXG4gIDgwOlxcdFxcdCAgVGhpcyBpcyBhbiBvcHRpb24gZm9yIHVzZSBieSBkZXZlbG9wZXJzOyBtb3N0IHBlb3BsZSBzaG91bGRcXG4gIDgxOlxcdFxcdCAgc2F5IE4gaGVyZS4gU2VsZWN0IHRoaXMgb3B0aW9uIHRvIGdhdGhlciB0cmFjZXMgbGlrZSB0aGUgZGVidWdcXG4gIDgyOlxcdFxcdCAgbWVzc2FnZXMgdXNpbmcgdGhlIGdlbmVyaWMgdHJhY2luZyBpbmZyYXN0cnVjdHVyZSBvZiB0aGUga2VybmVsLlxcbiAgODM6XFx0XFx0ICBCQVRNQU5fQURWX0RFQlVHIG11c3QgYWxzbyBiZSBzZWxlY3RlZCB0byBnZXQgdHJhY2UgZXZlbnRzIGZvclxcbiAgODQ6XFx0XFx0ICBiYXRhZHZfZGJnLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxODo1OToyNy4zNDU0NjkyMzFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk4MDA2MDI3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGBCQVRNQU5fQURWX01DQVNUYC4gSXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpdCBoaW5nZXMgb24gYEJBVE1BTl9BRFZgLCBgSU5FVGAsIGFuZCB0aGUgaW52ZXJzZSBvZiBhIGNvbWJpbmF0aW9uIG9mIGBCUklER0U9bWAgYW5kIGBCQVRNQU5fQURWPXlgLiBTbywgcmVhbGx5LCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBgQkFUTUFOX0FEVmAgYW5kIGBCQVRNQU5fQURWX01DQVNUYCBhcmUgZW5hYmxlZCwgYW5kIGBJTkVUYCB3aGljaCBJIGFzc3VtZSBpcyB1c3VhbGx5IGFscmVhZHkgaGFuZGxlZC4gVGhhdCBzZWVtcyBsb2dpY2FsLlxuXG5Ob3csIGxldCdzIGdldCBpbnRvIHRoZSBjb2RlIGl0c2VsZi4gVGhlIHBhdGNoIHRvdWNoZXMgYGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcmAuIE9rYXksIGFuZCB0aGF0IGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBgYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzYC4gUmlnaHQsIGFuZCBgYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzYCBpcywgaW4gdHVybiwgY2FsbGVkIGJ5IGBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXRgIGFuZCBzb21lIG90aGVycy4gU28sIGBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXRgIHNlZW1zIGxpa2UgYSBrZXkgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCwgYXMgd2VsbCBhcyBgYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzYC4gV2FpdCBhIG1pbnV0ZSwgYGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2Vzc2AgYW5kIGBiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXRgIGFyZSBib3RoIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzLCBzbyB0aGlzIGlzIGFuIEFQSSBlbnRyeSBwb2ludC4gTGV0J3Mgc3RhcnQgd2l0aCBgYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5NzksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxODo1OTozMy4zMjU1NDE4NzdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDUzNzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2Vzc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYmF0bWFuLWFkdi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JhdG1hbi1hZHYvYmF0X3Zfb2dtLmM9ODAxPWJhdGFkdl92X29nbV9wcm9jZXNzX3Blcl9vdXRpZihzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvYmF0X3Zfb2dtLmMtODIyLVxcdGlmIChzZXFub19hZ2UgXFx1MDAzZSAwIFxcdTAwMjZcXHUwMDI2IGlmX291dGdvaW5nID09IEJBVEFEVl9JRl9ERUZBVUxUKVxcbm5ldC9iYXRtYW4tYWR2L2JhdF92X29nbS5jOjgyMzpcXHRcXHRiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3MoYmF0X3ByaXYsIEJBVEFEVl9PR00yLCBvcmlnX25vZGUsXFxubmV0L2JhdG1hbi1hZHYvYmF0X3Zfb2dtLmMtODI0LVxcdFxcdFxcdFxcdFxcdCAgICAgICBOVUxMLFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jPTEwOTU9aW50IGJhdGFkdl9yZWN2X3VuaWNhc3RfdHZsdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jLTExMjMtXFxubmV0L2JhdG1hbi1hZHYvcm91dGluZy5jOjExMjQ6XFx0cmV0ID0gYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzKGJhdF9wcml2LCBCQVRBRFZfVU5JQ0FTVF9UVkxWLFxcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYy0xMTI1LVxcdFxcdFxcdFxcdFxcdCAgICAgTlVMTCwgc2tiLCB0dmx2X2J1ZmYsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmM9MTMzOT1pbnQgYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMtMTM3NS1cXG5uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmM6MTM3NjpcXHRyZXQgPSBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3MoYmF0X3ByaXYsIEJBVEFEVl9NQ0FTVCwgTlVMTCwgc2tiLFxcbm5ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYy0xMzc3LVxcdFxcdFxcdFxcdFxcdCAgICAgdHZsdl9idWZmLCB0dmx2X2J1ZmZfbGVuKTtcXG4tLVxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYz00NTg9c3RhdGljIGJvb2wgYmF0YWR2X3R2bHZfY29udGFpbmVyc19jb250YWluKHZvaWQgKnR2bHZfdmFsdWUsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNDkwLS8qKlxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYzo0OTE6ICogYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzKCkgLSBwYXJzZSB0aGUgZ2l2ZW4gdHZsdiBidWZmZXIgdG8gY2FsbCB0aGVcXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNDkyLSAqICBhcHByb3ByaWF0ZSBoYW5kbGVyc1xcbi0tXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTUwMi0gKi9cXG5uZXQvYmF0bWFuLWFkdi90dmx2LmM6NTAzOmludCBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3Moc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdixcXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNTA0LVxcdFxcdFxcdFxcdCAgIHU4IHBhY2tldF90eXBlLFxcbi0tXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jPTU4Mj12b2lkIGJhdGFkdl90dmx2X29nbV9yZWNlaXZlKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXFxuLS1cXG5uZXQvYmF0bWFuLWFkdi90dmx2LmMtNTk3LVxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuYzo1OTg6XFx0YmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzKGJhdF9wcml2LCBCQVRBRFZfSVZfT0dNLCBvcmlnX25vZGUsIE5VTEwsXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5jLTU5OS1cXHRcXHRcXHRcXHQgICAgICAgdHZsdl92YWx1ZSwgdHZsdl92YWx1ZV9sZW4pO1xcbi0tXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5oPTQwPXZvaWQgYmF0YWR2X3R2bHZfaGFuZGxlcl91bnJlZ2lzdGVyKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXFxubmV0L2JhdG1hbi1hZHYvdHZsdi5oLTQxLVxcdFxcdFxcdFxcdCAgICB1OCB0eXBlLCB1OCB2ZXJzaW9uKTtcXG5uZXQvYmF0bWFuLWFkdi90dmx2Lmg6NDI6aW50IGJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2VzcyhzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LFxcbm5ldC9iYXRtYW4tYWR2L3R2bHYuaC00My1cXHRcXHRcXHRcXHQgICB1OCBwYWNrZXRfdHlwZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTg6NTk6MzMuMzY5NTk5MjI0WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0NDA1ODYyNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBDYW5kaWRhdGUgQXNzZXNzbWVudDogQmF0bWFuLWFkdiBNdWx0aWNhc3QgUGFja2V0IEhhbmRsaW5nKipcblxuT2theSwgc28gSSd2ZSB6ZXJvZWQgaW4gb24gYSBwcm9taXNpbmcgZnV6emluZyB0YXJnZXQuIGBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3NgIGFuZCBgYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0YCBhcmUgdGhlIGtleSBmb2N1cyBzeW1ib2xzIGhlcmUuIFRoZSBzdW1tYXJ5IGluZGljYXRlcyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBoYXJkZW5lZCBgc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyYCBmdW5jdGlvbiBhbmQgaW50ZWdyYXRlcyBpdCBpbnRvIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgIHRvIGFkZHJlc3MgYSBwb3RlbnRpYWwgdHJhbnNwb3J0IGhlYWRlciBvZmZzZXQgY2FsY3VsYXRpb24gdnVsbmVyYWJpbGl0eSwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gbXVsdGljYXN0IHBhY2tldHMgd2l0aGluIGJhdG1hbi1hZHYuIEZ1bmN0aW9uYWxseSwgaXQncyBhIGNoYW5nZSB0byB0aGUgbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYywgYW5kIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHdoaWNoIGlzIGV4Y2VsbGVudCBmb3IgZnV6emluZy5cblxuTXkgYW5hbHlzaXMgY29uZmlybXMgdGhhdCBgYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0YCBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIGhhbmRsaW5nIGBCQVRBRFZfTUNBU1RgLCBjYWxsaW5nIGBiYXRhZHZfdHZsdl9jb250YWluZXJzX3Byb2Nlc3NgIHdoaWNoIHVzZXMgYGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcmAuIEkgd2FudGVkIHRvIGJlIGNlcnRhaW4gYWJvdXQgdGhlIGNhbGwgaGllcmFyY2h5IHRvIGZ1bGx5IHVuZGVyc3RhbmQgaG93IHRoaXMgYXJlYSBvZiB0aGUgY29kZSBmdW5jdGlvbnMuXG5cbk5vdywgYSBxdWljayBjaGVjayBvZiB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIGBCQVRNQU5fQURWX01DQVNUYCBpcyBzdWZmaWNpZW50LiBJdCByZXF1aXJlcyBgQkFUTUFOX0FEVmAsIGBJTkVUYCwgYW5kIGV4Y2x1ZGVzIHRoZSBjYXNlIHdoZXJlIGBCUklER0U9bWAgYW5kIGBCQVRNQU5fQURWPXlgLiBUaGlzIG1lYW5zIHdlIG5lZWQgYm90aCBgQkFUTUFOX0FEVmAgYW5kIGBCQVRNQU5fQURWX01DQVNUYCBlbmFibGVkIGluIHRoZSBjb25maWcuXG5cbkFscmlnaHQsIHdpdGggdGhhdCB1bmRlcnN0YW5kaW5nLCBJJ20gY29uZmlkZW50IGluIHRhZ2dpbmcgdGhpcyBhcyBhIGZ1enppbmcgY2FuZGlkYXRlLiBJJ2xsIHV0aWxpemUgdGhlIHNldC1yZXN1bHRzIHRvb2wgdG8gZG9jdW1lbnQgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI0MjMsIk91dHB1dFRva2VucyI6MTM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE4OjU5OjQwLjgxMDE4NzYwNloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3ODM0NDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCQVRNQU5fQURWXCIsXG4gICAgXCJCQVRNQU5fQURWX01DQVNUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYmF0YWR2X3R2bHZfY29udGFpbmVyc19wcm9jZXNzXCIsXG4gICAgXCJiYXRhZHZfcmVjdl9tY2FzdF9wYWNrZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgaGFyZGVuZWQgdmVyc2lvbiBvZiBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXIgYW5kIHVzZXMgaXQgaW4gYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyIHRvIGZpeCBhIHBvdGVudGlhbCBpc3N1ZSB3aXRoIHRyYW5zcG9ydCBoZWFkZXIgb2Zmc2V0IGNhbGN1bGF0aW9uIGZvciBtdWx0aWNhc3QgcGFja2V0cyBpbiBiYXRtYW4tYWR2LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkFUTUFOX0FEVlwiLFxuICAgIFwiQkFUTUFOX0FEVl9NQ0FTVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJhdGFkdl90dmx2X2NvbnRhaW5lcnNfcHJvY2Vzc1wiLFxuICAgIFwiYmF0YWR2X3JlY3ZfbWNhc3RfcGFja2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGhhcmRlbmVkIHZlcnNpb24gb2Ygc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyIGFuZCB1c2VzIGl0IGluIGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlciB0byBmaXggYSBwb3RlbnRpYWwgaXNzdWUgd2l0aCB0cmFuc3BvcnQgaGVhZGVyIG9mZnNldCBjYWxjdWxhdGlvbiBmb3IgbXVsdGljYXN0IHBhY2tldHMgaW4gYmF0bWFuLWFkdi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxODo1OTo0MC44ODgwMjg1OTFaIiwiU2VxIjoyNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzkwMDA3OTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTg6NTk6NDAuODg4NDU5MTExWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEyMzg5NTczODkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgaGFyZGVuZWQgdmVyc2lvbiBvZiBgc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyYCAoYHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsYCkgd2hpY2ggY2hlY2tzIGZvciBpbnRlZ2VyIHRydW5jYXRpb24gYW5kIGludmFsaWQgb2Zmc2V0cyAoZS5nLiwgYH4wVWApIHdoZW4gc2V0dGluZyB0aGUgYHNrYi1cXHUwMDNldHJhbnNwb3J0X2hlYWRlcmAgZmllbGQuIEl0IHRoZW4gYXBwbGllcyB0aGlzIG5ldyBmdW5jdGlvbiBpbiBgYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyYCB0byBwcmV2ZW50IHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGNhdXNlZCBieSAxNi1iaXQgdHJ1bmNhdGlvbiBvZiB0aGUgdHJhbnNwb3J0IGhlYWRlciBvZmZzZXQuIFRoZXNlIGNoYW5nZXMgYXJlIGRlc2lnbmVkIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBvciB3cml0ZXMsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4uIFRoZXJlIGlzIG5vIGFsbG9jYXRpb24gb2YgbmV3IGJ1ZmZlcnMsIG5vIGNoYW5nZXMgdG8gaG93IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGhhbmRsZWQsIGFuZCBubyBzdHJ1Y3R1cmVzIGJlaW5nIGNvcGllZCB0byB1c2VyIHNwYWNlIHRoYXQgY291bGQgbGVhayB1bmluaXRpYWxpemVkIGJ5dGVzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGEwMzQ2Nzg2ZTY1YjlmNDU4MWM3OWMwOWE2OGJkZjU4YTQ3OTI4YjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxMCAxODo1ODo0NyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2tidWZmLmggYi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oXG5pbmRleCAyMmVkYTFkNTRhMGU4Li5kYmVjZWFmNWMzYjM5IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9za2J1ZmYuaFxuKysrIGIvaW5jbHVkZS9saW51eC9za2J1ZmYuaFxuQEAgLTMxMjYsNiArMzEyNiwzMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRza2ItXHUwMDNldHJhbnNwb3J0X2hlYWRlciArPSBvZmZzZXQ7XG4gfVxuIFxuKy8qKlxuKyAqIHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsIC0gY29uZGl0aW9uYWxseSBzZXQgdHJhbnNwb3J0IGhlYWRlclxuKyAqIEBza2I6IGJ1ZmZlciB0byBhbHRlclxuKyAqIEBvZmZzZXQ6IG9mZnNldCB0byBhZGQgdG8gc2tiLVx1MDAzZWRhdGFcbisgKlxuKyAqIEhhcmRlbmVkIHZlcnNpb24gb2Ygc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyKCkuXG4rICpcbisgKiBSZXR1cm5zOiB0cnVlIGlmIHRoZSBvcGVyYXRpb24gd2FzIGEgc3VjY2Vzcy5cbisgKi9cbitzdGF0aWMgaW5saW5lIGJvb2wgX19tdXN0X2NoZWNrXG4rc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3QgaW50IG9mZnNldClcbit7XG4rXHRsb25nIHRyYW5zcG9ydF9vZmZzZXQgPSBza2ItXHUwMDNlZGF0YSAtIHNrYi1cdTAwM2VoZWFkICsgb2Zmc2V0O1xuK1xuK1x0aWYgKHVubGlrZWx5KHRyYW5zcG9ydF9vZmZzZXQgIT1cbitcdFx0ICAgICAodHlwZW9mKHNrYi1cdTAwM2V0cmFuc3BvcnRfaGVhZGVyKSl0cmFuc3BvcnRfb2Zmc2V0KSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0aWYgKHVubGlrZWx5KHRyYW5zcG9ydF9vZmZzZXQgPT1cbitcdFx0ICAgICAodHlwZW9mKHNrYi1cdTAwM2V0cmFuc3BvcnRfaGVhZGVyKSl+MFUpKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRza2ItXHUwMDNldHJhbnNwb3J0X2hlYWRlciA9IHRyYW5zcG9ydF9vZmZzZXQ7XG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG4rXG4gc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyICpza2JfbmV0d29ya19oZWFkZXIoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRyZXR1cm4gc2tiLVx1MDAzZWhlYWQgKyBza2ItXHUwMDNlbmV0d29ya19oZWFkZXI7XG5kaWZmIC0tZ2l0IGEvbmV0L2JhdG1hbi1hZHYvdHZsdi5jIGIvbmV0L2JhdG1hbi1hZHYvdHZsdi5jXG5pbmRleCAxYzlmYjIxOTg1ZjZhLi5jMzg0ZGIxNmJjYWMxIDEwMDY0NFxuLS0tIGEvbmV0L2JhdG1hbi1hZHYvdHZsdi5jXG4rKysgYi9uZXQvYmF0bWFuLWFkdi90dmx2LmNcbkBAIC00MzMsOCArNDMzLDExIEBAIHN0YXRpYyBpbnQgYmF0YWR2X3R2bHZfY2FsbF9oYW5kbGVyKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsXG4gXHRcdFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xuIFxuIFx0XHR0dmx2X29mZnNldCA9ICh1bnNpZ25lZCBjaGFyICopdHZsdl92YWx1ZSAtIHNrYi1cdTAwM2VkYXRhO1xuK1x0XHRpZiAoIXNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsKHNrYixcbitcdFx0XHRcdFx0XHQgICAgICB0dmx2X29mZnNldCArIHR2bHZfdmFsdWVfbGVuKSlcbitcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcbiBcdFx0c2tiX3NldF9uZXR3b3JrX2hlYWRlcihza2IsIHR2bHZfb2Zmc2V0KTtcbi1cdFx0c2tiX3NldF90cmFuc3BvcnRfaGVhZGVyKHNrYiwgdHZsdl9vZmZzZXQgKyB0dmx2X3ZhbHVlX2xlbik7XG4gXG4gXHRcdHJldHVybiB0dmx2X2hhbmRsZXItXHUwMDNlbWNhc3RfaGFuZGxlcihiYXRfcHJpdiwgc2tiKTtcbiBcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE4OjU5OjQwLjg4ODQ1OTk3MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjM4OTU0MzI5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoOiBBZGRyZXNzaW5nIEludGVnZXIgT3ZlcmZsb3cgaW4gU0tCIFRyYW5zcG9ydCBIZWFkZXIgU2V0dGluZyoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZS4gSXQncyByZXBsYWNpbmcgdGhlIHN0YW5kYXJkIGBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJgIHdpdGggYSBcImNhcmVmdWxcIiB2ZXJzaW9uLCBgc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWxgLCB3aXRoaW4gdGhlIGBuZXQvYmF0bWFuLWFkdi90dmx2LmNgIGZpbGUuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzLCBpcyB0aGlzIGFib3V0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5PyBObywgaXQgbG9va3MgbGlrZSBpdCdzIHB1cmVseSBhIGJvdW5kcyBjaGVjaywgYW4gb3ZlcmZsb3cgY2hlY2ssIHNwZWNpZmljYWxseS4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgY29kZTpcblxuYGBgY1xuc3RhdGljIGlubGluZSBib29sIF9fbXVzdF9jaGVja1xuc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3QgaW50IG9mZnNldClcbntcblx0bG9uZyB0cmFuc3BvcnRfb2Zmc2V0ID0gc2tiLVx1MDAzZWRhdGEgLSBza2ItXHUwMDNlaGVhZCArIG9mZnNldDtcblxuXHRpZiAodW5saWtlbHkodHJhbnNwb3J0X29mZnNldCAhPVxuXHRcdCAgICAgKHR5cGVvZihza2ItXHUwMDNldHJhbnNwb3J0X2hlYWRlcikpdHJhbnNwb3J0X29mZnNldCkpXG5cdFx0cmV0dXJuIGZhbHNlO1xuXG5cdGlmICh1bmxpa2VseSh0cmFuc3BvcnRfb2Zmc2V0ID09XG5cdFx0ICAgICAodHlwZW9mKHNrYi1cdTAwM2V0cmFuc3BvcnRfaGVhZGVyKSl+MFUpKVxuXHRcdHJldHVybiBmYWxzZTtcblxuXHRza2ItXHUwMDNldHJhbnNwb3J0X2hlYWRlciA9IHRyYW5zcG9ydF9vZmZzZXQ7XG5cdHJldHVybiB0cnVlO1xufVxuYGBgXG5cblRoaXMgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQgY2hlY2tzIGlmIHRoZSBgdHJhbnNwb3J0X29mZnNldGAgd291bGQgd3JhcCBhcm91bmQgd2hlbiBzdG9yZWQgaW4gYHNrYi1cdTAwM2V0cmFuc3BvcnRfaGVhZGVyYCwgd2hpY2ggaXMgYSBgdTE2YCBvciBgdW5zaWduZWQgaW50YCBkZXBlbmRpbmcgb24gdGhlIGFyY2hpdGVjdHVyZS4gSXQgYWxzbyBjaGVja3MgZm9yIHRoZSBpbnZhbGlkIG9mZnNldCwgYH4wVWAgKDB4ZmZmZiBmb3IgYSBgdTE2YCkuIFRoaXMgcHJldmVudHMgdGhlIGBza2ItXHUwMDNldHJhbnNwb3J0X2hlYWRlcmAgZnJvbSBiZWluZyBzZXQgdG8gYW4gaW52YWxpZCBvciBvdXQtb2YtYm91bmRzIG9mZnNldCwgbWl0aWdhdGluZyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQvd3JpdGUgbGF0ZXIgd2hlbiBgc2tiX3RyYW5zcG9ydF9oZWFkZXIoc2tiKWAgaXMgY2FsbGVkLlxuXG5Mb29raW5nIGF0IHRoZSBjb250ZXh0IGluIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgOlxuXG5gYGBjXG5cdFx0dHZsdl9vZmZzZXQgPSAodW5zaWduZWQgY2hhciAqKXR2bHZfdmFsdWUgLSBza2ItXHUwMDNlZGF0YTtcblx0XHRpZiAoIXNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcl9jYXJlZnVsKHNrYixcblx0XHRcdFx0XHRcdCAgICAgIHR2bHZfb2Zmc2V0ICsgdHZsdl92YWx1ZV9sZW4pKVxuXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG5cblx0XHRza2Jfc2V0X25ldHdvcmtfaGVhZGVyKHNrYiwgdHZsdl9vZmZzZXQpO1xuYGBgXG5cbk9rYXksIGl0J3MganVzdCBzZXR0aW5nIHRoZSB0cmFuc3BvcnQgaGVhZGVyIGJhc2VkIG9uIGFuIG9mZnNldC4gSWYgdGhlIGBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJfY2FyZWZ1bGAgZmFpbHMsIGl0IHJldHVybnMgYC1FSU5WQUxgLiBUaGlzIGlzIGFsbCBhYm91dCBwcmV2ZW50aW5nIDE2LWJpdCB0cnVuY2F0aW9uIGxlYWRpbmcgdG8gT09CIGFjY2Vzc2VzLCBhbmQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmUncyBubyBuZXcgYWxsb2NhdGlvbiwgbm8gY2hhbmdlcyB0byBob3cgdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgdHJlYXRlZCwgYW5kIG5vIHN0cnVjdHVyZXMgYmVpbmcgY29waWVkIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBsZWFrIHVuaW5pdGlhbGl6ZWQgYnl0ZXMuIFRodXMsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpc24ndCBuZWNlc3NhcnkgaGVyZS4gVGhlIHBhdGNoIGFkZHJlc3NlcyBhIGtub3duIGludGVnZXIgb3ZlcmZsb3cgaXNzdWUgdGhhdCBLQVNBTiBhbHJlYWR5IGNhdGNoZXMuIE5lZWRzS01TQU4gPSBmYWxzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ4MSwiT3V0cHV0VG9rZW5zIjoxOTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NzgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxODo1OTo1My4yNzgwMDY3NDJaIiwiU2VxIjoyOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDkzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBoYXJkZW5lZCB2ZXJzaW9uIG9mIGBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJgIChgc2tiX3NldF90cmFuc3BvcnRfaGVhZGVyX2NhcmVmdWxgKSB3aGljaCBjaGVja3MgZm9yIGludGVnZXIgdHJ1bmNhdGlvbiBhbmQgaW52YWxpZCBvZmZzZXRzIChlLmcuLCBgfjBVYCkgd2hlbiBzZXR0aW5nIHRoZSBgc2tiLVxcdTAwM2V0cmFuc3BvcnRfaGVhZGVyYCBmaWVsZC4gSXQgdGhlbiBhcHBsaWVzIHRoaXMgbmV3IGZ1bmN0aW9uIGluIGBiYXRhZHZfdHZsdl9jYWxsX2hhbmRsZXJgIHRvIHByZXZlbnQgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgY2F1c2VkIGJ5IDE2LWJpdCB0cnVuY2F0aW9uIG9mIHRoZSB0cmFuc3BvcnQgaGVhZGVyIG9mZnNldC4gVGhlc2UgY2hhbmdlcyBhcmUgZGVzaWduZWQgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIHdyaXRlcywgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmUgaXMgbm8gYWxsb2NhdGlvbiBvZiBuZXcgYnVmZmVycywgbm8gY2hhbmdlcyB0byBob3cgdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgaGFuZGxlZCwgYW5kIG5vIHN0cnVjdHVyZXMgYmVpbmcgY29waWVkIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBsZWFrIHVuaW5pdGlhbGl6ZWQgYnl0ZXMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGhhcmRlbmVkIHZlcnNpb24gb2YgYHNrYl9zZXRfdHJhbnNwb3J0X2hlYWRlcmAgKGBza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXJfY2FyZWZ1bGApIHdoaWNoIGNoZWNrcyBmb3IgaW50ZWdlciB0cnVuY2F0aW9uIGFuZCBpbnZhbGlkIG9mZnNldHMgKGUuZy4sIGB+MFVgKSB3aGVuIHNldHRpbmcgdGhlIGBza2ItXFx1MDAzZXRyYW5zcG9ydF9oZWFkZXJgIGZpZWxkLiBJdCB0aGVuIGFwcGxpZXMgdGhpcyBuZXcgZnVuY3Rpb24gaW4gYGJhdGFkdl90dmx2X2NhbGxfaGFuZGxlcmAgdG8gcHJldmVudCBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBjYXVzZWQgYnkgMTYtYml0IHRydW5jYXRpb24gb2YgdGhlIHRyYW5zcG9ydCBoZWFkZXIgb2Zmc2V0LiBUaGVzZSBjaGFuZ2VzIGFyZSBkZXNpZ25lZCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgb3Igd3JpdGVzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOLiBUaGVyZSBpcyBubyBhbGxvY2F0aW9uIG9mIG5ldyBidWZmZXJzLCBubyBjaGFuZ2VzIHRvIGhvdyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBoYW5kbGVkLCBhbmQgbm8gc3RydWN0dXJlcyBiZWluZyBjb3BpZWQgdG8gdXNlciBzcGFjZSB0aGF0IGNvdWxkIGxlYWsgdW5pbml0aWFsaXplZCBieXRlcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow4c94f[1] Phase: Succeeded StartedAt: 2026-08-10 19:00:04 +0000 UTC FinishedAt: 2026-08-10 19:00:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c94f[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-10 19:00:04 +0000 UTC FinishedAt: 2026-08-10 19:00:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c94f[2] Phase: Succeeded StartedAt: 2026-08-10 19:00:04 +0000 UTC FinishedAt: 2026-08-10 22:44:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-10 19:00:04 +0000 UTC FinishedAt: 2026-08-10 22:44:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-10 19:00:04 +0000 UTC FinishedAt: 2026-08-10 19:00:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-10 19:00:04 +0000 UTC FinishedAt: 2026-08-10 19:00:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4c94f/series-workflow4c94f-convert-artifact-704772826/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-10 19:00:14 +0000 UTC FinishedAt: 2026-08-10 19:20:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-10 19:00:14 +0000 UTC FinishedAt: 2026-08-10 19:20:50 +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:*97e20f53-68ca-4a44-8780-cb50a975c594,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-workflow4c94f/series-workflow4c94f-convert-artifact-704772826/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": "1a39a68e-4e0b-42ea-a1b8-d44927b17d09", "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-workflow4c94f/series-workflow4c94f-build-action-3341823880/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-10 19:00:14 +0000 UTC FinishedAt: 2026-08-10 19:20:40 +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:*97e20f53-68ca-4a44-8780-cb50a975c594,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-workflow4c94f/series-workflow4c94f-convert-artifact-704772826/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": "1a39a68e-4e0b-42ea-a1b8-d44927b17d09", "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-workflow4c94f/series-workflow4c94f-build-action-3341823880/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-10 19:20:50 +0000 UTC FinishedAt: 2026-08-10 19:20:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-10 19:20:50 +0000 UTC FinishedAt: 2026-08-10 19:20:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-10 19:20:50 +0000 UTC FinishedAt: 2026-08-10 19:21:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-10 19:20:50 +0000 UTC FinishedAt: 2026-08-10 19:20:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4c94f/series-workflow4c94f-convert-artifact-3818978357/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-10 19:21:01 +0000 UTC FinishedAt: 2026-08-10 19:22:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-10 19:21:01 +0000 UTC FinishedAt: 2026-08-10 19:22:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1a39a68e-4e0b-42ea-a1b8-d44927b17d09,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-workflow4c94f/series-workflow4c94f-build-action-3341823880/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-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-10 19:22:50 +0000 UTC FinishedAt: 2026-08-10 19:22:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-10 19:22:50 +0000 UTC FinishedAt: 2026-08-10 19:22:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-10 19:22:50 +0000 UTC FinishedAt: 2026-08-10 19:39:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-10 19:22:50 +0000 UTC FinishedAt: 2026-08-10 19:39:43 +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:*97e20f53-68ca-4a44-8780-cb50a975c594,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-workflow4c94f/series-workflow4c94f-convert-artifact-3818978357/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": "02fe1c45-73b9-4236-b1c0-173a58b5680a", "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-workflow4c94f/series-workflow4c94f-build-action-2016226625/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-10 19:22:50 +0000 UTC FinishedAt: 2026-08-10 19:39:33 +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:*97e20f53-68ca-4a44-8780-cb50a975c594,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-workflow4c94f/series-workflow4c94f-convert-artifact-3818978357/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": "02fe1c45-73b9-4236-b1c0-173a58b5680a", "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-workflow4c94f/series-workflow4c94f-build-action-2016226625/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-10 19:39:43 +0000 UTC FinishedAt: 2026-08-10 19:39:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-10 19:39:43 +0000 UTC FinishedAt: 2026-08-10 19:39:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-10 19:39:43 +0000 UTC FinishedAt: 2026-08-10 19:42:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-10 19:39:43 +0000 UTC FinishedAt: 2026-08-10 19:42:25 +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:*02fe1c45-73b9-4236-b1c0-173a58b5680a,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-workflow4c94f/series-workflow4c94f-build-action-2016226625/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-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-10 19:42:38 +0000 UTC FinishedAt: 2026-08-10 22:44:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-10 19:42:38 +0000 UTC FinishedAt: 2026-08-10 22:44:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"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:*1a39a68e-4e0b-42ea-a1b8-d44927b17d09,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*02fe1c45-73b9-4236-b1c0-173a58b5680a,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-workflow4c94f/series-workflow4c94f-build-action-3341823880/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-workflow4c94f/series-workflow4c94f-build-action-2016226625/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-10 19:42:38 +0000 UTC FinishedAt: 2026-08-10 19:43:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-10 19:42:38 +0000 UTC FinishedAt: 2026-08-10 19:42:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"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-workflow4c94f/series-workflow4c94f-convert-artifact-2269951258/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-10 19:42:38 +0000 UTC FinishedAt: 2026-08-10 19:42:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-10 19:42:38 +0000 UTC FinishedAt: 2026-08-10 19:42:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-10 19:42:38 +0000 UTC FinishedAt: 2026-08-10 19:42:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-10 19:43:00 +0000 UTC FinishedAt: 2026-08-10 22:44:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c94f[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["batadv_tvlv_containers_process","batadv_recv_mcast_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd057113ac7ba5bdd2aed3d9405305911152f911","config_name":"upstream-apparmor-kasan.config","enable_configs":["BATMAN_ADV","BATMAN_ADV_MCAST"],"series_id":"172f8ce8-d496-40b4-bd99-b1f4308e8e12","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-10 19:43:00 +0000 UTC FinishedAt: 2026-08-10 22:44:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1a39a68e-4e0b-42ea-a1b8-d44927b17d09,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*02fe1c45-73b9-4236-b1c0-173a58b5680a,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-workflow4c94f/series-workflow4c94f-build-action-3341823880/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-workflow4c94f/series-workflow4c94f-build-action-2016226625/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-workflow4c94f/series-workflow4c94f-convert-artifact-2269951258/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,}