Name: series-workflow9p224 Phase: Succeeded StartedAt: 2026-08-11 00:26:16 +0000 UTC FinishedAt: 2026-08-11 04:50:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9p224[0] Phase: Succeeded StartedAt: 2026-08-11 00:26:16 +0000 UTC FinishedAt: 2026-08-11 00:48:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9p224[0].run-triage Phase: Succeeded StartedAt: 2026-08-11 00:26:16 +0000 UTC FinishedAt: 2026-08-11 00:48:41 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HUGETLBFS", "CMA", "CPUSETS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HUGETLBFS", "CMA", "CPUSETS" ], "series_id": "4f335ea2-65da-4c04-925b-d90851d0157f" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "hugetlb_cma_alloc_frozen_folio" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hVR0VUTEJGUyYjMzQ7LAogICAgJiMzNDtDTUEmIzM0OywKICAgICYjMzQ7Q1BVU0VUUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2h1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBub2RlIHNlbGVjdGlvbiBsb2dpYyBpbiBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCB0byByZXNwZWN0IGNwdXNldCBtZW1vcnkgcGxhY2VtZW50IHJ1bGVzLiBJdCBpbnRyb2R1Y2VzIGEgbG9jYWwgYG5vZGVtYXNrX3QgbG9jYWxfbm9kZV9tYXNrYCB3aGljaCBpcyBmdWxseSBpbml0aWFsaXplZCBieSBhc3NpZ25tZW50IGZyb20gYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAgd2hlbiB0aGUgcHJvdmlkZWQgYG5vZGVtYXNrYCBpcyBOVUxMLiBUaGUgYGNwdXNldF9tZW1zX2Nvb2tpZWAgaXMgYWxzbyBwcm9wZXJseSBpbml0aWFsaXplZCB2aWEgYHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKClgLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLCBubyBjb21wbGV4IGFsbG9jYXRpb25zIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMsIGFuZCBubyBjb250cm9sIGZsb3cgZGVwZW5kaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIHdvdWxkIGJlIHJlbGF0ZWQgdG8gaW5jb3JyZWN0IG5vZGUgc2VsZWN0aW9uLCBvdXQtb2YtYm91bmRzIGFjY2Vzcywgb3IgY29uY3VycmVuY3kgaXNzdWVzLCB3aGljaCBhcmUgd2VsbCBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIHRvIHJlc3BlY3QgY3B1c2V0IG1lbW9yeSBhbGxvd2VkIG5vZGVzIHdoZW4gYG5vZGVtYXNrYCBpcyBOVUxMLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSAoSHVnZVRMQiBDTUEpIHRoYXQgYWZmZWN0cyBtZW1vcnkgYWxsb2NhdGlvbiBiZWhhdmlvci4gSXQgaXMgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOTNlZWJmYmRjYWU0ZDYwMTYzY2YwMjYzMTRhMWQ4ZmFmMzFjMDY5OFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDAwOjQ2OjM3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL2h1Z2V0bGJfY21hLmMgYi9tbS9odWdldGxiX2NtYS5jXG5pbmRleCAzOTM0NGQ2Yzc4ZDg0Li45ZGViZjAzM2Q0ZmQ3IDEwMDY0NFxuLS0tIGEvbW0vaHVnZXRsYl9jbWEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vaHVnZXRsYl9jbWEuY1xuQEAgLTMsNiAmIzQzOzMsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21tLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jbWEuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBpbGVyLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvY3B1c2V0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tbV9pbmxpbmUuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFx1MDAzY2FzbS9wYWdlLmhcdTAwM2VcbkBAIC0zMCwxNSAmIzQzOzMxLDI3IEBAIHN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXG4gXHRpbnQgbm9kZTtcbiBcdHN0cnVjdCBmb2xpbyAqZm9saW87XG4gXHRzdHJ1Y3QgcGFnZSAqcGFnZSA9IE5VTEw7XG4mIzQzO1x0Y29uc3Qgbm9kZW1hc2tfdCAqbm1hc2s7XG4mIzQzO1x0bm9kZW1hc2tfdCBsb2NhbF9ub2RlX21hc2s7XG4mIzQzO1x0dW5zaWduZWQgaW50IGNwdXNldF9tZW1zX2Nvb2tpZTtcbiBcbiBcdGlmICghaHVnZXRsYl9jbWFfc2l6ZSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4tXHRpZiAoaHVnZXRsYl9jbWFbbmlkXSlcbiYjNDM7cmV0cnlfY3B1c2V0OlxuJiM0MztcdGlmICghbm9kZW1hc2spIHtcbiYjNDM7XHRcdGNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7XG4mIzQzO1x0XHRsb2NhbF9ub2RlX21hc2sgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XG4mIzQzO1x0XHRubWFzayA9IFx1MDAyNmxvY2FsX25vZGVfbWFzaztcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0bm1hc2sgPSBub2RlbWFzaztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChodWdldGxiX2NtYVtuaWRdIFx1MDAyNlx1MDAyNiBub2RlX2lzc2V0KG5pZCwgKm5tYXNrKSlcbiBcdFx0cGFnZSA9IGNtYV9hbGxvY19mcm96ZW5fY29tcG91bmQoaHVnZXRsYl9jbWFbbmlkXSwgb3JkZXIpO1xuIFxuIFx0aWYgKCFwYWdlIFx1MDAyNlx1MDAyNiAhKGdmcF9tYXNrIFx1MDAyNiBfX0dGUF9USElTTk9ERSkpIHtcbi1cdFx0Zm9yX2VhY2hfbm9kZV9tYXNrKG5vZGUsICpub2RlbWFzaykge1xuJiM0MztcdFx0Zm9yX2VhY2hfbm9kZV9tYXNrKG5vZGUsICpubWFzaykge1xuIFx0XHRcdGlmIChub2RlID09IG5pZCB8fCAhaHVnZXRsYl9jbWFbbm9kZV0pXG4gXHRcdFx0XHRjb250aW51ZTtcbiBcbkBAIC00OCw4ICYjNDM7NjEsMTIgQEAgc3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcbiBcdFx0fVxuIFx0fVxuIFxuLVx0aWYgKCFwYWdlKVxuJiM0MztcdGlmICghcGFnZSkge1xuJiM0MztcdFx0aWYgKCFub2RlbWFzayBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICB1bmxpa2VseShyZWFkX21lbXNfYWxsb3dlZF9yZXRyeShjcHVzZXRfbWVtc19jb29raWUpKSlcbiYjNDM7XHRcdFx0Z290byByZXRyeV9jcHVzZXQ7XG4gXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdGZvbGlvID0gcGFnZV9mb2xpbyhwYWdlKTtcbiBcdGZvbGlvX3NldF9odWdldGxiX2NtYShmb2xpbyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hVR0VUTEJGUyYjMzQ7LAogICAgJiMzNDtDTUEmIzM0OywKICAgICYjMzQ7Q1BVU0VUUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2h1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCB0byByZXNwZWN0IGNwdXNldCBtZW1vcnkgYWxsb3dlZCBub2RlcyB3aGVuIGBub2RlbWFza2AgaXMgTlVMTC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0gKEh1Z2VUTEIgQ01BKSB0aGF0IGFmZmVjdHMgbWVtb3J5IGFsbG9jYXRpb24gYmVoYXZpb3IuIEl0IGlzIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDkzZWViZmJkY2FlNGQ2MDE2M2NmMDI2MzE0YTFkOGZhZjMxYzA2OTgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxMSAwMDo0NjozNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2h1Z2V0bGJfY21hLmMgYi9tbS9odWdldGxiX2NtYS5jCmluZGV4IDM5MzQ0ZDZjNzhkODQuLjlkZWJmMDMzZDRmZDcgMTAwNjQ0Ci0tLSBhL21tL2h1Z2V0bGJfY21hLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vaHVnZXRsYl9jbWEuYwpAQCAtMyw2ICYjNDM7Myw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvbW0uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9jbWEuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9jb21waWxlci5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9jcHVzZXQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9tbV9pbmxpbmUuaCZndDsKIAogI2luY2x1ZGUgJmx0O2FzbS9wYWdlLmgmZ3Q7CkBAIC0zMCwxNSAmIzQzOzMxLDI3IEBAIHN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssCiAJaW50IG5vZGU7CiAJc3RydWN0IGZvbGlvICpmb2xpbzsKIAlzdHJ1Y3QgcGFnZSAqcGFnZSA9IE5VTEw7CiYjNDM7CWNvbnN0IG5vZGVtYXNrX3QgKm5tYXNrOwomIzQzOwlub2RlbWFza190IGxvY2FsX25vZGVfbWFzazsKJiM0MzsJdW5zaWduZWQgaW50IGNwdXNldF9tZW1zX2Nvb2tpZTsKIAogCWlmICghaHVnZXRsYl9jbWFfc2l6ZSkKIAkJcmV0dXJuIE5VTEw7CiAKLQlpZiAoaHVnZXRsYl9jbWFbbmlkXSkKJiM0MztyZXRyeV9jcHVzZXQ6CiYjNDM7CWlmICghbm9kZW1hc2spIHsKJiM0MzsJCWNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7CiYjNDM7CQlsb2NhbF9ub2RlX21hc2sgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7CiYjNDM7CQlubWFzayA9ICZhbXA7bG9jYWxfbm9kZV9tYXNrOwomIzQzOwl9IGVsc2UgewomIzQzOwkJbm1hc2sgPSBub2RlbWFzazsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoaHVnZXRsYl9jbWFbbmlkXSAmYW1wOyZhbXA7IG5vZGVfaXNzZXQobmlkLCAqbm1hc2spKQogCQlwYWdlID0gY21hX2FsbG9jX2Zyb3plbl9jb21wb3VuZChodWdldGxiX2NtYVtuaWRdLCBvcmRlcik7CiAKIAlpZiAoIXBhZ2UgJmFtcDsmYW1wOyAhKGdmcF9tYXNrICZhbXA7IF9fR0ZQX1RISVNOT0RFKSkgewotCQlmb3JfZWFjaF9ub2RlX21hc2sobm9kZSwgKm5vZGVtYXNrKSB7CiYjNDM7CQlmb3JfZWFjaF9ub2RlX21hc2sobm9kZSwgKm5tYXNrKSB7CiAJCQlpZiAobm9kZSA9PSBuaWQgfHwgIWh1Z2V0bGJfY21hW25vZGVdKQogCQkJCWNvbnRpbnVlOwogCkBAIC00OCw4ICYjNDM7NjEsMTIgQEAgc3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzaywKIAkJfQogCX0KIAotCWlmICghcGFnZSkKJiM0MzsJaWYgKCFwYWdlKSB7CiYjNDM7CQlpZiAoIW5vZGVtYXNrICZhbXA7JmFtcDsKJiM0MzsJCSAgICB1bmxpa2VseShyZWFkX21lbXNfYWxsb3dlZF9yZXRyeShjcHVzZXRfbWVtc19jb29raWUpKSkKJiM0MzsJCQlnb3RvIHJldHJ5X2NwdXNldDsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCWZvbGlvID0gcGFnZV9mb2xpbyhwYWdlKTsKIAlmb2xpb19zZXRfaHVnZXRsYl9jbWEoZm9saW8pOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDY0CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEh1Z2VUTEIgQ01BIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0d2Vha2luZyBgbW0vaHVnZXRsYl9jbWEuY2AuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgbW9kaWZ5aW5nIHRoZSBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCBmdW5jdGlvbi4gSSBzZWUgaXQmIzM5O3MgYWRkaW5nIHRoZXNlIGNwdXNldCBtZW1vcnkgYWxsb3dlZCBjaGVja3MsIGJ1dCBvbmx5IHdoZW4gYG5vZGVtYXNrYCBpcyBOVUxMLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIEh1Z2VUTEIgQ01BIHN1YnN5c3RlbS4gVGhhdCYjMzk7cyBtZW1vcnkgbWFuYWdlbWVudCwgc28gYW55IGNoYW5nZSB0aGVyZSBuZWVkcyBjYXJlZnVsIHNjcnV0aW55LiBJJiMzOTttIGdvaW5nIHRvIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgKndoeSogYmVoaW5kIHRoaXMgY29uZGl0aW9uYWwgY2hlY2suCgpNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byB0aG9yb3VnaGx5IHJldmlldyB0aGUgdXNhZ2VzIG9mIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gLiBJIHdhbnQgdG8gc2VlIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkIGZyb20sIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgaW4gd2hpY2ggaXQmIzM5O3MgYmVpbmcgdXNlZCwgYW5kIHdoYXQgc2NlbmFyaW9zIHRyaWdnZXIgdGhlIE5VTEwgYG5vZGVtYXNrYC4gS25vd2luZyB0aGUgY2FsbGVycyB3aWxsIGNsYXJpZnkgdGhlIHBvc3NpYmxlIGltcGFjdCBvZiB0aGlzIGNwdXNldCBjaGVjay4gSSYjMzk7bGwgYWxzbyBuZWVkIHRvIHZlcmlmeSB0aGF0IGFsbCByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gYG1tL2h1Z2V0bGJfY21hLmNgIGhhdmVuJiMzOTt0IGJlZW4gYWZmZWN0ZWQgb3IgbWFkZSByZWR1bmRhbnQgYXMgYSByZXN1bHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2h1Z2V0bGIuYz0xMzYwPXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxuLS1cbm1tL2h1Z2V0bGIuYy0xMzY0LVxubW0vaHVnZXRsYi5jOjEzNjU6XHRmb2xpbyA9IGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhvcmRlciwgZ2ZwX21hc2ssIG5pZCwgbm9kZW1hc2spO1xubW0vaHVnZXRsYi5jLTEzNjYtXHRpZiAoZm9saW8pXG4tLVxubW0vaHVnZXRsYl9jbWEuYz0yMj12b2lkIGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0vaHVnZXRsYl9jbWEuYy0yNy1cbm1tL2h1Z2V0bGJfY21hLmM6Mjg6c3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcbm1tL2h1Z2V0bGJfY21hLmMtMjktXHRcdGludCBuaWQsIG5vZGVtYXNrX3QgKm5vZGVtYXNrKVxuLS1cbm1tL2h1Z2V0bGJfY21hLmg9Nj12b2lkIGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xubW0vaHVnZXRsYl9jbWEuaDo3OnN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXG5tbS9odWdldGxiX2NtYS5oLTgtXHRcdFx0XHQgICAgICBpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzayk7XG4tLVxubW0vaHVnZXRsYl9jbWEuaD0xNj1zdGF0aWMgaW5saW5lIHZvaWQgaHVnZXRsYl9jbWFfZnJlZV9mcm96ZW5fZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS9odWdldGxiX2NtYS5oLTE5LVxubW0vaHVnZXRsYl9jbWEuaDoyMDpzdGF0aWMgaW5saW5lIHN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlcixcbm1tL2h1Z2V0bGJfY21hLmgtMjEtXHRcdGdmcF90IGdmcF9tYXNrLFx0aW50IG5pZCwgbm9kZW1hc2tfdCAqbm9kZW1hc2spXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMzMQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQWxsb2NhdGlvbiBQYXRoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIGZ1bmN0aW9uLiBUaGUgY2FsbCBzdGFjayB0ZWxscyBtZSBpdCBvcmlnaW5hdGVzIGZyb20gYGFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpb2Agd2l0aGluIGBtbS9odWdldGxiLmNgLiBUaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludCBJIG5lZWQgdG8gZm9jdXMgb24uIE15IG5leHQgdGhvdWdodCBpcywgSSBuZWVkIHRvIGtub3cgdW5kZXIgd2hhdCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGBtbS9odWdldGxiX2NtYS5jYCBpcyBldmVuIGVuYWJsZWQuIFRoYXQgd2lsbCBnaXZlIG1lIGNvbnRleHQgb24gdGhlIHNjZW5hcmlvcyB3aGVyZSBJJiMzOTtkIGVuY291bnRlciB0aGlzIHBhdGggYW5kIGhlbHBzIG1lIHVuZGVyc3RhbmQgdGhlIHN5c3RlbSBkZXNpZ24gZ29hbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aHVnZXRsYl9jbWFcXC5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlPTgyPWlmZGVmIENPTkZJR19DTUFcbm1tL01ha2VmaWxlOjgzOm9iai0kKENPTkZJR19IVUdFVExCRlMpXHQmIzQzOz0gaHVnZXRsYl9jbWEub1xubW0vTWFrZWZpbGUtODQtZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjAwCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFraW5nIG9uIHRoZSBwZXJzb25hIHlvdSByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIE1lbW9yeSBNYW5hZ2VtZW50KioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIEkgbmVlZCB0byBnZXQgdGhpcyBtZW1vcnkgbWFuYWdlbWVudCBzeXN0ZW0gc2V0IHVwIGNvcnJlY3RseS4gUmlnaHQsIHNvIEkgbmVlZCBib3RoIGBDT05GSUdfQ01BYCBhbmQgYENPTkZJR19IVUdFVExCRlNgIGVuYWJsZWQsIHRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBIb2xkIG9uIGEgc2Vjb25kIHRob3VnaCwgYENPTkZJR19DTUFgIGlzIGFuIGlmZGVmLCBtZWFuaW5nIGl0JiMzOTtzIGNvbmRpdGlvbmFsLCBhbmQgYENPTkZJR19IVUdFVExCRlNgIGlzIGFjdHVhbGx5IHRoZSBvYmplY3QgSSYjMzk7bSBhaW1pbmcgZm9yLiBOb3cgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGlzIGl0IGBDT05GSUdfSFVHRVRMQl9QQUdFYCBvciBgQ09ORklHX0hVR0VUTEJGU2A/IEkmIzM5O20gZ2V0dGluZyBhIGxpdHRsZSB0dXJuZWQgYXJvdW5kLCBiZXR0ZXIgdG8gdmVyaWZ5LiBMZXQgbWUganVzdCB0YWtlIGEgcXVpY2sgcGVlayBhdCB0aGUgYG1tL01ha2VmaWxlYCB0byBtYWtlIHN1cmUgSSBnZXQgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb25zIGVuYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2JqLVxcJFxcKENPTkZJR19IVUdFVExCRlNcXCkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvTWFrZWZpbGU9NzI9b2JqLXlcdFx0XHRcdCYjNDM7PSByYW1mcy9cbmZzL01ha2VmaWxlOjczOm9iai0kKENPTkZJR19IVUdFVExCRlMpXHRcdCYjNDM7PSBodWdldGxiZnMvXG5mcy9NYWtlZmlsZS03NC1vYmotJChDT05GSUdfQ09EQV9GUylcdFx0JiM0Mzs9IGNvZGEvXG4tLVxuZnMvaHVnZXRsYmZzL01ha2VmaWxlLTUtXG5mcy9odWdldGxiZnMvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfSFVHRVRMQkZTKSAmIzQzOz0gaHVnZXRsYmZzLm9cbmZzL2h1Z2V0bGJmcy9NYWtlZmlsZS03LVxuLS1cbm1tL01ha2VmaWxlPTgwPW9iai0kKENPTkZJR19IQVNfRE1BKVx0JiM0Mzs9IGRtYXBvb2wub1xubW0vTWFrZWZpbGU6ODE6b2JqLSQoQ09ORklHX0hVR0VUTEJGUylcdCYjNDM7PSBodWdldGxiLm8gaHVnZXRsYl9zeXNmcy5vIGh1Z2V0bGJfc3lzY3RsLm9cbm1tL01ha2VmaWxlLTgyLWlmZGVmIENPTkZJR19DTUFcbm1tL01ha2VmaWxlOjgzOm9iai0kKENPTkZJR19IVUdFVExCRlMpXHQmIzQzOz0gaHVnZXRsYl9jbWEub1xubW0vTWFrZWZpbGUtODQtZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTMwCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgTGFyZ2UgTWVtb3J5IEFsbG9jYXRpb25zKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uIHRoZSBzeXN0ZW0gc2VlbXMgdG8gYmUgY29uZmlndXJlZCBmb3IgSHVnZVRMQkZTIGFuZCBDb250aWd1b3VzIE1lbW9yeSBBbGxvY2F0aW9uIChDTUEpLiBFeGNlbGxlbnQuIEdpdmVuIHRoYXQsIEkgbmVlZCB0byBjaGVjayB0aGUgcG90ZW50aWFsIHVzZXMgb2YgYGFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpb2AuIFRoYXQgZnVuY3Rpb24gaXMgY3JpdGljYWwgaW4gaG93IHRoZSBrZXJuZWwgaGFuZGxlcyB0aGVzZSB2ZXJ5IGxhcmdlIG1lbW9yeSByZXF1ZXN0cy4gSSB3YW50IHRvIHNlZSBob3cgYW5kIHdoZXJlIGl0JiMzOTtzIGJlaW5nIGVtcGxveWVkIGluIHRoaXMgc3BlY2lmaWMgY29udGV4dCwgaG93IHdlbGwgaXQmIzM5O3Mgd29ya2luZywgYW5kIGxvb2sgb3V0IGZvciBhbnl0aGluZyB1bnVzdWFsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgdGhvcm91Z2hseSB0byBpZGVudGlmeSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgb3IgbWVtb3J5IGZyYWdtZW50YXRpb24gaXNzdWVzLCBlc3BlY2lhbGx5IGluIHJlbGF0aW9uIHRvIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiBIdWdlVExCRlMgYW5kIENNQS4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBvZiBteSBjdXJyZW50IGZvY3VzIGxpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpbyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9odWdldGxiLmM9MTMyMD1zdGF0aWMgc3RydWN0IGZvbGlvICpkZXF1ZXVlX2h1Z2V0bGJfZm9saW9fdm1hKHN0cnVjdCBoc3RhdGUgKmgsXG4tLVxubW0vaHVnZXRsYi5jLTEzNTktI2lmIGRlZmluZWQoQ09ORklHX0FSQ0hfSEFTX0dJR0FOVElDX1BBR0UpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19DT05USUdfQUxMT0MpXG5tbS9odWdldGxiLmM6MTM2MDpzdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcbm1tL2h1Z2V0bGIuYy0xMzYxLVx0XHRpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzaylcbi0tXG5tbS9odWdldGxiLmMtMTM3Ni0jZWxzZSAvKiAhQ09ORklHX0FSQ0hfSEFTX0dJR0FOVElDX1BBR0UgfHwgIUNPTkZJR19DT05USUdfQUxMT0MgKi9cbm1tL2h1Z2V0bGIuYzoxMzc3OnN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLCBpbnQgbmlkLFxubW0vaHVnZXRsYi5jLTEzNzgtXHRcdFx0XHRcdCAgbm9kZW1hc2tfdCAqbm9kZW1hc2spXG4tLVxubW0vaHVnZXRsYi5jPTE4MzY9c3RhdGljIHN0cnVjdCBmb2xpbyAqb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXG4tLVxubW0vaHVnZXRsYi5jLTE4NDYtXHRpZiAob3JkZXJfaXNfZ2lnYW50aWMob3JkZXIpKVxubW0vaHVnZXRsYi5jOjE4NDc6XHRcdGZvbGlvID0gYWxsb2NfZ2lnYW50aWNfZnJvemVuX2ZvbGlvKG9yZGVyLCBnZnBfbWFzaywgbmlkLCBubWFzayk7XG5tbS9odWdldGxiLmMtMTg0OC1cdGVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDczMQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkRpdmluZyBpbnRvIEh1Z2VUTEIgQWxsb2NhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYG9ubHlfYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2AuLi4gUmlnaHQsIGl0IHNlZW1zIGxpa2UgdGhhdCBmdW5jdGlvbiB1bHRpbWF0ZWx5IGNhbGxzIGBhbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW9gLiBUaGF0IG1ha2VzIHNlbnNlOyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIEh1Z2VUTEIgcGFnZXMsIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGdpZ2FudGljLCBwcmUtZnJvemVuIGZvbGlvcyBoZXJlLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsICYjMzQ7V2h5IHRoZSBleHRyYSBsYXllcj8mIzM0OyBXaGF0JiMzOTtzIHRoZSBzcGVjaWZpYyByb2xlIG9mIGBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW9gIGluIHRoaXMgYWxsb2NhdGlvbiBwcm9jZXNzPyBJcyBpdCBoYW5kbGluZyBzb21lIHNwZWNpZmljIEh1Z2VUTEIgaW5pdGlhbGl6YXRpb24gb3IgdmFsaWRhdGlvbiB0aGF0IGBhbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW9gIGRvZXNuJiMzOTt0PyBMZXQmIzM5O3MgdHJhY2UgYG9ubHlfYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2AgYW5kIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uLi4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgYW5kIHBvdGVudGlhbCBjaGVja3Mgb3IgYWN0aW9ucyB0YWtlbiBiZWZvcmUgdGhlIGFjdHVhbCBnaWdhbnRpYyBmb2xpbyBhbGxvY2F0aW9uIGhhcHBlbnMuIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2h1Z2V0bGIuYz0xNzkxPXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2J1ZGR5X2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxuLS1cbm1tL2h1Z2V0bGIuYy0xODM1LVxubW0vaHVnZXRsYi5jOjE4MzY6c3RhdGljIHN0cnVjdCBmb2xpbyAqb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXG5tbS9odWdldGxiLmMtMTgzNy1cdFx0Z2ZwX3QgZ2ZwX21hc2ssIGludCBuaWQsIG5vZGVtYXNrX3QgKm5tYXNrLFxuLS1cbm1tL2h1Z2V0bGIuYz0xODYzPXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcbi0tXG5tbS9odWdldGxiLmMtMTg2Ny1cbm1tL2h1Z2V0bGIuYzoxODY4Olx0Zm9saW8gPSBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oaCwgZ2ZwX21hc2ssIG5pZCwgbm1hc2ssIE5VTEwpO1xubW0vaHVnZXRsYi5jLTE4NjktXHRpZiAoZm9saW8pXG4tLVxubW0vaHVnZXRsYi5jPTE4OTY9c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfcG9vbF9odWdlX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXG4tLVxubW0vaHVnZXRsYi5jLTE5MDYtXG5tbS9odWdldGxiLmM6MTkwNzpcdFx0Zm9saW8gPSBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oaCwgZ2ZwX21hc2ssIG5vZGUsXG5tbS9odWdldGxiLmMtMTkwOC1cdFx0XHRcdFx0bm9kZXNfYWxsb3dlZCwgbm9kZV9hbGxvY19ub3JldHJ5KTtcbi0tXG5tbS9odWdldGxiLmM9MzM3Mj1zdGF0aWMgdm9pZCBfX2luaXQgaHVnZXRsYl9oc3RhdGVfYWxsb2NfcGFnZXNfb25lbm9kZShzdHJ1Y3QgaHN0YXRlICpoLCBpbnQgbmlkKVxuLS1cbm1tL2h1Z2V0bGIuYy0zMzg1LVxubW0vaHVnZXRsYi5jOjMzODY6XHRcdFx0Zm9saW8gPSBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oaCwgZ2ZwX21hc2ssIG5pZCxcbm1tL2h1Z2V0bGIuYy0zMzg3LVx0XHRcdFx0XHRcdTAwMjZub2RlX3N0YXRlc1tOX01FTU9SWV0sIE5VTEwpO1xuLS1cbm1tL2h1Z2V0bGIuYy0zMzkxLVx0XHRcdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Zm9saW9fbGlzdCk7XG5tbS9odWdldGxiLmM6MzM5MjpcdFx0XHRcdGZvbGlvID0gb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsXG5tbS9odWdldGxiLmMtMzM5My1cdFx0XHRcdFx0XHRcdTAwMjZub2RlX3N0YXRlc1tOX01FTU9SWV0sIE5VTEwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTkwCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSHVnZXRsYiBGb2xpbyBBbGxvY2F0aW9uIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IGFsbG9jYXRpbmcgbmV3IGh1Z2V0bGIgZm9saW9zLCB3aGljaCBpcyBzb21ldGhpbmcgSSBkZWFsIHdpdGggZnJlcXVlbnRseS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgaW50cm9kdWNpbmcgc29tZSBpbnRlcmVzdGluZyBjaGFuZ2VzLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGFkZGluZyBgY3B1c2V0X21lbXNfY29va2llID0gcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKTtgIGFuZCB0aGVuIHVzaW5nIGBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWRgIGlmIHRoZSBgbm9kZW1hc2tgIGlzIG51bGwuIFJpZ2h0IGF3YXksIEkgc2VlIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQmIzM5O3MgcmVzdHJpY3RpbmcgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIHRvIHRoZSBub2RlcyBjdXJyZW50bHkgYWxsb3dlZCBieSB0aGUgY3B1c2V0LgoKVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogaXMgdGhpcyBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyBmdXp6aW5nPyBBYnNvbHV0ZWx5LCB5ZXMuIEFueSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBtZW1vcnkgbWFuYWdlbWVudCBpcyBwcmltZSB0ZXJyaXRvcnkgZm9yIGZ1enppbmcsIGVzcGVjaWFsbHkgc29tZXRoaW5nIHRoYXQgYWx0ZXJzIGFsbG93ZWQgbm9kZSBiZWhhdmlvciBsaWtlIHRoaXMuIEl0IGNvdWxkIHVuY292ZXIgc3VidGxlIGVkZ2UgY2FzZXMgb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIG1lbW9yeSBpc29sYXRpb24gb3IgY29udGVudGlvbi4KCldhaXQgYSBzZWNvbmTigKYgYHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luYCBhbmQgYHJlYWRfbWVtc19hbGxvd2VkX3JldHJ5YCDigJMgdGhvc2UgYXJlIGluIGBsaW51eC9jcHVzZXQuaGAuIE1ha2VzIHNlbnNlLCBjb25zaWRlcmluZyB3aGF0IHRoZSBwYXRjaCBpcyBkb2luZy4KCk5vdywgbGV0IG1lIGp1c3QgY29uZmlybSB0aGUgY29uZmlndXJhdGlvbnMgaW52b2x2ZWQuIEkgZXhwZWN0IGBDT05GSUdfSFVHRVRMQkZTYCwgb2J2aW91c2x5LCBhbmQgbGlrZWx5IGBDT05GSUdfQ01BYCBzaW5jZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGNvbnRpZ3VvdXMgbWVtb3J5IGFsbG9jYXRpb24uIEFuZCwgb2YgY291cnNlLCBgQ09ORklHX0NQVVNFVFNgIGlzIGEgZ2l2ZW4uIFRob3VnaCBJIHNob3VsZCBkb3VibGUgY2hlY2sgdGhhdCBsYXN0IG9uZSwganVzdCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9jcHVzZXQuaD0yMT1leHRlcm4gYm9vbCBsb2NrZGVwX2lzX2NwdXNldF9oZWxkKHZvaWQpO1xuLS1cbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMjYtICogU3RhdGljIGJyYW5jaCByZXdyaXRlcyBjYW4gaGFwcGVuIGluIGFuIGFyYml0cmFyeSBvcmRlciBmb3IgYSBnaXZlblxuaW5jbHVkZS9saW51eC9jcHVzZXQuaDoyNzogKiBrZXkuIEluIGNvZGUgcGF0aHMgd2hlcmUgd2UgbmVlZCB0byBsb29wIHdpdGggcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKSBhbmRcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMjgtICogcmVhZF9tZW1zX2FsbG93ZWRfcmV0cnkoKSB0byBnZXQgYSBjb25zaXN0ZW50IHZpZXcgb2YgbWVtc19hbGxvd2VkLCB3ZSBuZWVkXG4tLVxuaW5jbHVkZS9saW51eC9jcHVzZXQuaD0xMzU9ZXh0ZXJuIHZvaWQgY3B1c2V0X3Jlc2V0X3NjaGVkX2RvbWFpbnModm9pZCk7XG4tLVxuaW5jbHVkZS9saW51eC9jcHVzZXQuaC0xMzctLypcbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg6MTM4OiAqIHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luIGlzIHJlcXVpcmVkIHdoZW4gbWFraW5nIGRlY2lzaW9ucyBpbnZvbHZpbmdcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMTM5LSAqIG1lbXNfYWxsb3dlZCBzdWNoIGFzIGR1cmluZyBwYWdlIGFsbG9jYXRpb24uIG1lbXNfYWxsb3dlZCBjYW4gYmUgdXBkYXRlZCBpblxuaW5jbHVkZS9saW51eC9jcHVzZXQuaC0xNDAtICogcGFyYWxsZWwgYW5kIGRlcGVuZGluZyBvbiB0aGUgbmV3IHZhbHVlIGFuIG9wZXJhdGlvbiBjYW4gZmFpbCBwb3RlbnRpYWxseVxuaW5jbHVkZS9saW51eC9jcHVzZXQuaDoxNDE6ICogY2F1c2luZyBwcm9jZXNzIGZhaWx1cmUuIEEgcmV0cnkgbG9vcCB3aXRoIHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luIGFuZFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaC0xNDItICogcmVhZF9tZW1zX2FsbG93ZWRfcmV0cnkgcHJldmVudHMgdGhlc2UgYXJ0aWZpY2lhbCBmYWlsdXJlcy5cbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMTQzLSAqL1xuaW5jbHVkZS9saW51eC9jcHVzZXQuaDoxNDQ6c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4odm9pZClcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMTQ1LXtcbi0tXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTE1My0gKiBJZiB0aGlzIHJldHVybnMgdHJ1ZSwgdGhlIG9wZXJhdGlvbiB0aGF0IHRvb2sgcGxhY2UgYWZ0ZXJcbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg6MTU0OiAqIHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luIG1heSBoYXZlIGZhaWxlZCBhcnRpZmljaWFsbHkgZHVlIHRvIGEgY29uY3VycmVudFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaC0xNTUtICogdXBkYXRlIG9mIG1lbXNfYWxsb3dlZC4gSXQgaXMgdXAgdG8gdGhlIGNhbGxlciB0byByZXRyeSB0aGUgb3BlcmF0aW9uIGlmXG4tLVxuaW5jbHVkZS9saW51eC9jcHVzZXQuaD0yODg9c3RhdGljIGlubGluZSB2b2lkIHNldF9tZW1zX2FsbG93ZWQobm9kZW1hc2tfdCBub2RlbWFzaylcbi0tXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTI5MS1cbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg6MjkyOnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKHZvaWQpXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTI5My17XG4tLVxubW0vZmlsZW1hcC5jPTk5OT1zdHJ1Y3QgZm9saW8gKmZpbGVtYXBfYWxsb2NfZm9saW9fbm9wcm9mKGdmcF90IGdmcCwgdW5zaWduZWQgaW50IG9yZGVyLFxuLS1cbm1tL2ZpbGVtYXAuYy0xMDExLVx0XHRkbyB7XG5tbS9maWxlbWFwLmM6MTAxMjpcdFx0XHRjcHVzZXRfbWVtc19jb29raWUgPSByZWFkX21lbXNfYWxsb3dlZF9iZWdpbigpO1xubW0vZmlsZW1hcC5jLTEwMTMtXHRcdFx0biA9IGNwdXNldF9tZW1fc3ByZWFkX25vZGUoKTtcbi0tXG5tbS9odWdldGxiLmM9MTI3NT1zdGF0aWMgc3RydWN0IGZvbGlvICpkZXF1ZXVlX2h1Z2V0bGJfZm9saW9fbm9kZW1hc2soc3RydWN0IGhzdGF0ZSAqaCwgZ2ZwX3QgZ2ZwX21hc2ssXG4tLVxubW0vaHVnZXRsYi5jLTEyOTAtcmV0cnlfY3B1c2V0OlxubW0vaHVnZXRsYi5jOjEyOTE6XHRjcHVzZXRfbWVtc19jb29raWUgPSByZWFkX21lbXNfYWxsb3dlZF9iZWdpbigpO1xubW0vaHVnZXRsYi5jLTEyOTItXHRmb3JfZWFjaF96b25lX3pvbmVsaXN0X25vZGVtYXNrKHpvbmUsIHosIHpvbmVsaXN0LCBnZnBfem9uZShnZnBfbWFzayksIG5tYXNrKSB7XG4tLVxubW0vaHVnZXRsYl9jbWEuYz0yOD1zdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxuLS1cbm1tL2h1Z2V0bGJfY21hLmMtNDItXHRpZiAoIW5vZGVtYXNrKSB7XG5tbS9odWdldGxiX2NtYS5jOjQzOlx0XHRjcHVzZXRfbWVtc19jb29raWUgPSByZWFkX21lbXNfYWxsb3dlZF9iZWdpbigpO1xubW0vaHVnZXRsYl9jbWEuYy00NC1cdFx0bG9jYWxfbm9kZV9tYXNrID0gY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkO1xuLS1cbm1tL21lbXBvbGljeS5jPTIxMDA9c3RhdGljIHVuc2lnbmVkIGludCB3ZWlnaHRlZF9pbnRlcmxlYXZlX25vZGVzKHN0cnVjdCBtZW1wb2xpY3kgKnBvbGljeSlcbi0tXG5tbS9tZW1wb2xpY3kuYy0yMTA2LVx0LyogdG8gcHJldmVudCBtaXNjb3VudCB1c2UgdHNrLVx1MDAzZW1lbXNfYWxsb3dlZF9zZXEgdG8gZGV0ZWN0IHJlYmluZCAqL1xubW0vbWVtcG9saWN5LmM6MjEwNzpcdGNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7XG5tbS9tZW1wb2xpY3kuYy0yMTA4LVx0bm9kZSA9IGN1cnJlbnQtXHUwMDNlaWxfcHJldjtcbi0tXG5tbS9tZW1wb2xpY3kuYz0yMTIzPXN0YXRpYyB1bnNpZ25lZCBpbnQgaW50ZXJsZWF2ZV9ub2RlcyhzdHJ1Y3QgbWVtcG9saWN5ICpwb2xpY3kpXG4tLVxubW0vbWVtcG9saWN5LmMtMjEyOS1cdGRvIHtcbm1tL21lbXBvbGljeS5jOjIxMzA6XHRcdGNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7XG5tbS9tZW1wb2xpY3kuYy0yMTMxLVx0XHRuaWQgPSBuZXh0X25vZGVfaW4oY3VycmVudC1cdTAwM2VpbF9wcmV2LCBwb2xpY3ktXHUwMDNlbm9kZXMpO1xuLS1cbm1tL21lbXBvbGljeS5jPTI2MzA9c3RhdGljIHVuc2lnbmVkIGxvbmcgYWxsb2NfcGFnZXNfYnVsa193ZWlnaHRlZF9pbnRlcmxlYXZlKGdmcF90IGdmcCxcbi0tXG5tbS9tZW1wb2xpY3kuYy0yNjU1LVx0ZG8ge1xubW0vbWVtcG9saWN5LmM6MjY1NjpcdFx0Y3B1c2V0X21lbXNfY29va2llID0gcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKTtcbm1tL21lbXBvbGljeS5jLTI2NTctXHRcdG5ub2RlcyA9IHJlYWRfb25jZV9wb2xpY3lfbm9kZW1hc2socG9sLCBcdTAwMjZub2Rlcyk7XG4tLVxubW0vcGFnZV9hbGxvYy5jPTQ3MjU9X19hbGxvY19wYWdlc19zbG93cGF0aChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy00NzY0LVx0Y29tcGFjdF9wcmlvcml0eSA9IERFRl9DT01QQUNUX1BSSU9SSVRZO1xubW0vcGFnZV9hbGxvYy5jOjQ3NjU6XHRjcHVzZXRfbWVtc19jb29raWUgPSByZWFkX21lbXNfYWxsb3dlZF9iZWdpbigpO1xubW0vcGFnZV9hbGxvYy5jLTQ3NjYtXHR6b25lbGlzdF9pdGVyX2Nvb2tpZSA9IHpvbmVsaXN0X2l0ZXJfYmVnaW4oKTtcbi0tXG5tbS9zaG93X21lbS5jPTExOT1zdGF0aWMgYm9vbCBzaG93X21lbV9ub2RlX3NraXAodW5zaWduZWQgaW50IGZsYWdzLCBpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzaylcbi0tXG5tbS9zaG93X21lbS5jLTEyNS1cdCAqIG5vIG5vZGUgbWFzayAtIGFrYSBpbXBsaWNpdCBtZW1vcnkgbnVtYSBwb2xpY3kuIERvIG5vdCBib3RoZXIgd2l0aFxubW0vc2hvd19tZW0uYzoxMjY6XHQgKiB0aGUgc3luY2hyb25pemF0aW9uIC0gcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4gLSBiZWNhdXNlIHdlIGRvIG5vdFxubW0vc2hvd19tZW0uYy0xMjctXHQgKiBoYXZlIHRvIGJlIHByZWNpc2UgaGVyZS5cbi0tXG5tbS9zbHViLmM9Mzg2Mz1zdGF0aWMgdm9pZCAqZ2V0X2Zyb21fYW55X3BhcnRpYWwoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcF9mbGFncyxcbi0tXG5tbS9zbHViLmMtMzg5Ny1cdFx0Lypcbm1tL3NsdWIuYzozODk4Olx0XHQgKiByZWFkX21lbXNfYWxsb3dlZF9iZWdpbigpIGFjY2Vzc2VzIGN1cnJlbnQtXHUwMDNlbWVtc19hbGxvd2VkX3NlcSxcbm1tL3NsdWIuYy0zODk5LVx0XHQgKiBhIHNlcWNvdW50X3NwaW5sb2NrX3QgdGhhdCBpcyBub3QgTk1JLXNhZmUuIERvIG5vdCBhY2Nlc3Ncbi0tXG5tbS9zbHViLmMtMzkwMy1cdFx0aWYgKGFsbG93X3NwaW4pXG5tbS9zbHViLmM6MzkwNDpcdFx0XHRjcHVzZXRfbWVtc19jb29raWUgPSByZWFkX21lbXNfYWxsb3dlZF9iZWdpbigpO1xubW0vc2x1Yi5jLTM5MDUtXG4tLVxubW0vc2x1Yi5jPTcyMzE9X19yZWZpbGxfb2JqZWN0c19hbnkoc3RydWN0IGttZW1fY2FjaGUgKnMsIHZvaWQgKipwLCBnZnBfdCBnZnAsIHVuc2lnbmVkIGludCBtaW4sXG4tLVxubW0vc2x1Yi5jLTcyNDYtXHRkbyB7XG5tbS9zbHViLmM6NzI0NzpcdFx0Y3B1c2V0X21lbXNfY29va2llID0gcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKTtcbm1tL3NsdWIuYy03MjQ4LVx0XHR6b25lbGlzdCA9IG5vZGVfem9uZWxpc3QobWVtcG9saWN5X3NsYWJfbm9kZSgpLCBnZnApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTg0CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGByZWFkX21lbXNfYWxsb3dlZF9iZWdpbmAgYW5kIENQVVNldHMqKgoKT2theSwgc28gYHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luYCBpcyBkZWZpbmVkIGluIGBpbmNsdWRlL2xpbnV4L2NwdXNldC5oYC4gVGhhdCBtYWtlcyBzZW5zZSwgYnV0IGl0JiMzOTtzIGludGVyZXN0aW5nIHRoYXQgaXQmIzM5O3MgcHJlc2VudCBldmVuIHdoZW4gYENPTkZJR19DUFVTRVRTYCBpc24mIzM5O3QgZW5hYmxlZC4gQ2xlYXJseSwgdGhlcmUmIzM5O3MgYSBkdW1teSBpbXBsZW1lbnRhdGlvbiBpbiBwbGFjZSB0byBoYW5kbGUgdGhlIHNjZW5hcmlvIHdoZXJlIGNwdXNldHMgYXJlIGRpc2FibGVkLiBIb3dldmVyLCBpZiBJIHJlYWxseSB3YW50IHRvIGRpdmUgZGVlcCBpbnRvIHRoZSBsb2dpYyBhbmQgdGVzdCB0aGUgZnVuY3Rpb25hbGl0eSBwcm9wZXJseSwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgaWYgYENPTkZJR19DUFVTRVRTYCBpcyBhY3R1YWxseSBjb25maWd1cmVkLiBCZXN0IHRvIHZlcmlmeSB0aGUgcmVhbCBpbXBsZW1lbnRhdGlvbiwgc28gSSYjMzk7bGwgZ28gYWhlYWQgYW5kIHRha2UgYSBsb29rIGF0IGBpbmNsdWRlL2xpbnV4L2NwdXNldC5oYCBhZ2Fpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0NQVVNFVFMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jcHUtaXNvbGF0aW9uLnJzdD05OD1SZXF1aXJlbWVudHNcbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2NwdS1pc29sYXRpb24ucnN0LTEwMC1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvY3B1LWlzb2xhdGlvbi5yc3Q6MTAxOi0gQ09ORklHX0NQVVNFVFM9eSBmb3IgdGhlIGNwdXNldHMtYmFzZWQgaW50ZXJmYWNlXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2NwdS1pc29sYXRpb24ucnN0LTEwMi1cbi0tXG5Eb2N1bWVudGF0aW9uL2Rldi10b29scy9ncGlvLXNsb3BweS1sb2dpYy1hbmFseXplci5yc3Q9MzU9U2V0dXBcbi0tXG5Eb2N1bWVudGF0aW9uL2Rldi10b29scy9ncGlvLXNsb3BweS1sb2dpYy1hbmFseXplci5yc3QtMzctXG5Eb2N1bWVudGF0aW9uL2Rldi10b29scy9ncGlvLXNsb3BweS1sb2dpYy1hbmFseXplci5yc3Q6Mzg6WW91ciBrZXJuZWwgbXVzdCBoYXZlIENPTkZJR19ERUJVR19GUyBhbmQgQ09ORklHX0NQVVNFVFMgZW5hYmxlZC4gSWRlYWxseSwgeW91clxuRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMvZ3Bpby1zbG9wcHktbG9naWMtYW5hbHl6ZXIucnN0LTM5LXJ1bnRpbWUgZW52aXJvbm1lbnQgZG9lcyBub3QgdXRpbGl6ZSBjcHVzZXRzIG90aGVyd2lzZSwgdGhlbiBpc29sYXRpb24gb2YgYSBDUFVcbi0tXG5hcmNoL2FybS9jb25maWdzL2JjbTI4MzVfZGVmY29uZmlnPTEwPUNPTkZJR19DR1JPVVBfRlJFRVpFUj15XG5hcmNoL2FybS9jb25maWdzL2JjbTI4MzVfZGVmY29uZmlnOjExOkNPTkZJR19DUFVTRVRTPXlcbmFyY2gvYXJtL2NvbmZpZ3MvYmNtMjgzNV9kZWZjb25maWctMTItQ09ORklHX0NHUk9VUF9ERVZJQ0U9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZz0xNj1DT05GSUdfQ0dST1VQX0ZSRUVaRVI9eVxuYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnOjE3OkNPTkZJR19DUFVTRVRTPXlcbmFyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZy0xOC1DT05GSUdfQ0dST1VQX0RFVklDRT15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9zb2NmcGdhX2RlZmNvbmZpZz02PUNPTkZJR19DR1JPVVBTPXlcbmFyY2gvYXJtL2NvbmZpZ3Mvc29jZnBnYV9kZWZjb25maWc6NzpDT05GSUdfQ1BVU0VUUz15XG5hcmNoL2FybS9jb25maWdzL3NvY2ZwZ2FfZGVmY29uZmlnLTgtQ09ORklHX05BTUVTUEFDRVM9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvdmV4cHJlc3NfZGVmY29uZmlnPTg9Q09ORklHX0NHUk9VUFM9eVxuYXJjaC9hcm0vY29uZmlncy92ZXhwcmVzc19kZWZjb25maWc6OTpDT05GSUdfQ1BVU0VUUz15XG5hcmNoL2FybS9jb25maWdzL3ZleHByZXNzX2RlZmNvbmZpZy0xMC0jIENPTkZJR19VVFNfTlMgaXMgbm90IHNldFxuLS1cbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc9MjI9Q09ORklHX0NHUk9VUF9IVUdFVExCPXlcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc6MjM6Q09ORklHX0NQVVNFVFM9eVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy0yNC1DT05GSUdfQ0dST1VQX0RFVklDRT15XG4tLVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz0yNz1DT05GSUdfQ0dST1VQX0ZSRUVaRVI9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzoyODpDT05GSUdfQ1BVU0VUUz15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTI5LUNPTkZJR19DR1JPVVBfREVWSUNFPXlcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTMxPUNPTkZJR19DR1JPVVBfSFVHRVRMQj15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnOjMyOkNPTkZJR19DUFVTRVRTPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMzMtQ09ORklHX0NHUk9VUF9ERVZJQ0U9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE1X2RlZmNvbmZpZz0xMj1DT05GSUdfQ0dST1VQX0ZSRUVaRVI9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnOjEzOkNPTkZJR19DUFVTRVRTPXlcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE1X2RlZmNvbmZpZy0xNC1DT05GSUdfQ0dST1VQX0RFVklDRT15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZfZGVmY29uZmlnPTEzPUNPTkZJR19DR1JPVVBfRlJFRVpFUj15XG5hcmNoL21pcHMvY29uZmlncy9leWVxNl9kZWZjb25maWc6MTQ6Q09ORklHX0NQVVNFVFM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZfZGVmY29uZmlnLTE1LUNPTkZJR19DR1JPVVBfREVWSUNFPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9leWVxNmxwbHVzX2RlZmNvbmZpZz0xMz1DT05GSUdfQ0dST1VQX0ZSRUVaRVI9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZscGx1c19kZWZjb25maWc6MTQ6Q09ORklHX0NQVVNFVFM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZscGx1c19kZWZjb25maWctMTUtQ09ORklHX0NHUk9VUF9ERVZJQ0U9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2dlbmVyaWNfZGVmY29uZmlnPTk9Q09ORklHX0NHUk9VUF9GUkVFWkVSPXlcbmFyY2gvbWlwcy9jb25maWdzL2dlbmVyaWNfZGVmY29uZmlnOjEwOkNPTkZJR19DUFVTRVRTPXlcbmFyY2gvbWlwcy9jb25maWdzL2dlbmVyaWNfZGVmY29uZmlnLTExLUNPTkZJR19DR1JPVVBfREVWSUNFPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZz04PUNPTkZJR19DR1JPVVBTPXlcbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnOjk6Q09ORklHX0NQVVNFVFM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWctMTAtQ09ORklHX1JFTEFZPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZz04PUNPTkZJR19DR1JPVVBTPXlcbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnOjk6Q09ORklHX0NQVVNFVFM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWctMTAtQ09ORklHX1JFTEFZPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnPTIwPUNPTkZJR19DR1JPVVBfRlJFRVpFUj15XG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnOjIxOkNPTkZJR19DUFVTRVRTPXlcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWctMjItQ09ORklHX0NHUk9VUF9ERVZJQ0U9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL3NiMTI1MF9zd2FybV9kZWZjb25maWc9ND1DT05GSUdfQ0dST1VQUz15XG5hcmNoL21pcHMvY29uZmlncy9zYjEyNTBfc3dhcm1fZGVmY29uZmlnOjU6Q09ORklHX0NQVVNFVFM9eVxuYXJjaC9taXBzL2NvbmZpZ3Mvc2IxMjUwX3N3YXJtX2RlZmNvbmZpZy02LSMgQ09ORklHX1BST0NfUElEX0NQVVNFVCBpcyBub3Qgc2V0XG4tLVxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZz0xNz1DT05GSUdfQ0dST1VQX1BJRFM9eVxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZzoxODpDT05GSUdfQ1BVU0VUUz15XG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnLTE5LUNPTkZJR19VU0VSX05TPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9jZWxsX2RlZmNvbmZpZz0xMj1DT05GSUdfQ0dST1VQUz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9jZWxsX2RlZmNvbmZpZzoxMzpDT05GSUdfQ1BVU0VUUz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9jZWxsX2RlZmNvbmZpZy0xNC1DT05GSUdfQkxLX0RFVl9JTklUUkQ9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL2ZzbC1lbWItbm9uaHcuY29uZmlnPTE2PUNPTkZJR19DR1JPVVBTPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL2ZzbC1lbWItbm9uaHcuY29uZmlnLTE3LSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcbmFyY2gvcG93ZXJwYy9jb25maWdzL2ZzbC1lbWItbm9uaHcuY29uZmlnOjE4OkNPTkZJR19DUFVTRVRTPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL2ZzbC1lbWItbm9uaHcuY29uZmlnLTE5LUNPTkZJR19DUkFNRlM9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnPTIxPUNPTkZJR19DR1JPVVBfRlJFRVpFUj15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZzoyMjpDT05GSUdfQ1BVU0VUUz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZy0yMy1DT05GSUdfQ0dST1VQX0RFVklDRT15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnPTI4PUNPTkZJR19DR1JPVVBfSFVHRVRMQj15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc6Mjk6Q09ORklHX0NQVVNFVFM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnLTMwLUNPTkZJR19DR1JPVVBfREVWSUNFPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NGVfZGVmY29uZmlnPTEyPUNPTkZJR19DR1JPVVBTPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0ZV9kZWZjb25maWc6MTM6Q09ORklHX0NQVVNFVFM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRlX2RlZmNvbmZpZy0xNC1DT05GSUdfQkxLX0RFVl9JTklUUkQ9eVxuLS1cbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWc9MTU9Q09ORklHX0NHUk9VUF9IVUdFVExCPXlcbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWc6MTY6Q09ORklHX0NQVVNFVFM9eVxuYXJjaC9yaXNjdi9jb25maWdzL2RlZmNvbmZpZy0xNy1DT05GSUdfQ0dST1VQX0RFVklDRT15XG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTMxPUNPTkZJR19DR1JPVVBfSFVHRVRMQj15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6MzI6Q09ORklHX0NQVVNFVFM9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTMzLUNPTkZJR19DR1JPVVBfREVWSUNFPXlcbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9Mjk9Q09ORklHX0NHUk9VUF9IVUdFVExCPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzozMDpDT05GSUdfQ1BVU0VUUz15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMzEtQ09ORklHX0NHUk9VUF9ERVZJQ0U9eVxuLS1cbmFyY2gvc2gvY29uZmlncy9zZGs3Nzg2X2RlZmNvbmZpZz0xND1DT05GSUdfQ0dST1VQX0RFVklDRT15XG5hcmNoL3NoL2NvbmZpZ3Mvc2RrNzc4Nl9kZWZjb25maWc6MTU6Q09ORklHX0NQVVNFVFM9eVxuYXJjaC9zaC9jb25maWdzL3Nkazc3ODZfZGVmY29uZmlnLTE2LSMgQ09ORklHX1BST0NfUElEX0NQVVNFVCBpcyBub3Qgc2V0XG4tLVxuYXJjaC9zaC9jb25maWdzL3VycXVlbGxfZGVmY29uZmlnPTEyPUNPTkZJR19DR1JPVVBfREVWSUNFPXlcbmFyY2gvc2gvY29uZmlncy91cnF1ZWxsX2RlZmNvbmZpZzoxMzpDT05GSUdfQ1BVU0VUUz15XG5hcmNoL3NoL2NvbmZpZ3MvdXJxdWVsbF9kZWZjb25maWctMTQtIyBDT05GSUdfUFJPQ19QSURfQ1BVU0VUIGlzIG5vdCBzZXRcbi0tXG5hcmNoL3VtL2NvbmZpZ3MvaTM4Nl9kZWZjb25maWc9MTY9Q09ORklHX0NHUk9VUF9ERVZJQ0U9eVxuYXJjaC91bS9jb25maWdzL2kzODZfZGVmY29uZmlnOjE3OkNPTkZJR19DUFVTRVRTPXlcbmFyY2gvdW0vY29uZmlncy9pMzg2X2RlZmNvbmZpZy0xOC1DT05GSUdfQ0dST1VQX0NQVUFDQ1Q9eVxuLS1cbmFyY2gvdW0vY29uZmlncy94ODZfNjRfZGVmY29uZmlnPTE1PUNPTkZJR19DR1JPVVBfREVWSUNFPXlcbmFyY2gvdW0vY29uZmlncy94ODZfNjRfZGVmY29uZmlnOjE2OkNPTkZJR19DUFVTRVRTPXlcbmFyY2gvdW0vY29uZmlncy94ODZfNjRfZGVmY29uZmlnLTE3LUNPTkZJR19DR1JPVVBfQ1BVQUNDVD15XG4tLVxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZz0yMD1DT05GSUdfQ0dST1VQX0hVR0VUTEI9eVxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZzoyMTpDT05GSUdfQ1BVU0VUUz15XG5hcmNoL3g4Ni9jb25maWdzL2kzODZfZGVmY29uZmlnLTIyLUNPTkZJR19DR1JPVVBfREVWSUNFPXlcbi0tXG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWc9MjA9Q09ORklHX0NHUk9VUF9IVUdFVExCPXlcbmFyY2gveDg2L2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZzoyMTpDT05GSUdfQ1BVU0VUUz15XG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWctMjItQ09ORklHX0NHUk9VUF9ERVZJQ0U9eVxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3MvYXVkaW9fa2M3MDVfZGVmY29uZmlnPTEwPUNPTkZJR19DR1JPVVBfREVWSUNFPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3MvYXVkaW9fa2M3MDVfZGVmY29uZmlnOjExOkNPTkZJR19DUFVTRVRTPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3MvYXVkaW9fa2M3MDVfZGVmY29uZmlnLTEyLUNPTkZJR19DR1JPVVBfQ1BVQUNDVD15XG4tLVxuYXJjaC94dGVuc2EvY29uZmlncy9jYWRlbmNlX2NzcF9kZWZjb25maWc9Nz1DT05GSUdfQ0dST1VQX0ZSRUVaRVI9eVxuYXJjaC94dGVuc2EvY29uZmlncy9jYWRlbmNlX2NzcF9kZWZjb25maWc6ODpDT05GSUdfQ1BVU0VUUz15XG5hcmNoL3h0ZW5zYS9jb25maWdzL2NhZGVuY2VfY3NwX2RlZmNvbmZpZy05LUNPTkZJR19DR1JPVVBfREVWSUNFPXlcbi0tXG5hcmNoL3h0ZW5zYS9jb25maWdzL2dlbmVyaWNfa2M3MDVfZGVmY29uZmlnPTEwPUNPTkZJR19DR1JPVVBfREVWSUNFPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3MvZ2VuZXJpY19rYzcwNV9kZWZjb25maWc6MTE6Q09ORklHX0NQVVNFVFM9eVxuYXJjaC94dGVuc2EvY29uZmlncy9nZW5lcmljX2tjNzA1X2RlZmNvbmZpZy0xMi1DT05GSUdfQ0dST1VQX0NQVUFDQ1Q9eVxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3Mvbm9tbXVfa2M3MDVfZGVmY29uZmlnPTEwPUNPTkZJR19DR1JPVVBfREVWSUNFPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3Mvbm9tbXVfa2M3MDVfZGVmY29uZmlnOjExOkNPTkZJR19DUFVTRVRTPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3Mvbm9tbXVfa2M3MDVfZGVmY29uZmlnLTEyLUNPTkZJR19DR1JPVVBfQ1BVQUNDVD15XG4tLVxuYXJjaC94dGVuc2EvY29uZmlncy9zbXBfbHgyMDBfZGVmY29uZmlnPTEwPUNPTkZJR19DR1JPVVBfREVWSUNFPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3Mvc21wX2x4MjAwX2RlZmNvbmZpZzoxMTpDT05GSUdfQ1BVU0VUUz15XG5hcmNoL3h0ZW5zYS9jb25maWdzL3NtcF9seDIwMF9kZWZjb25maWctMTItQ09ORklHX0NHUk9VUF9DUFVBQ0NUPXlcbi0tXG5pbmNsdWRlL2xpbnV4L2Nncm91cF9zdWJzeXMuaC0xMS1cbmluY2x1ZGUvbGludXgvY2dyb3VwX3N1YnN5cy5oOjEyOiNpZiBJU19FTkFCTEVEKENPTkZJR19DUFVTRVRTKVxuaW5jbHVkZS9saW51eC9jZ3JvdXBfc3Vic3lzLmgtMTMtU1VCU1lTKGNwdXNldClcbi0tXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oPTIxPWV4dGVybiBib29sIGxvY2tkZXBfaXNfY3B1c2V0X2hlbGQodm9pZCk7XG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTIyLVxuaW5jbHVkZS9saW51eC9jcHVzZXQuaDoyMzojaWZkZWYgQ09ORklHX0NQVVNFVFNcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMjQtXG4tLVxuaW5jbHVkZS9saW51eC9jcHVzZXQuaD0xMDI9ZXh0ZXJuIGludCBjcHVzZXRfbWVtc19hbGxvd2VkX2ludGVyc2VjdHMoY29uc3Qgc3RydWN0IHRhc2tfc3RydWN0ICp0c2sxLFxuLS1cbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMTA0LVxuaW5jbHVkZS9saW51eC9jcHVzZXQuaDoxMDU6I2lmZGVmIENPTkZJR19DUFVTRVRTX1YxXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTEwNi0jZGVmaW5lIGNwdXNldF9tZW1vcnlfcHJlc3N1cmVfYnVtcCgpIFx0XHRcdFx0XFxcbi0tXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oPTE3OT1leHRlcm4gdm9pZCBjcHVzZXRfbm9kZXNfYWxsb3dlZChzdHJ1Y3QgY2dyb3VwICpjZ3JvdXAsIG5vZGVtYXNrX3QgKm1hc2spO1xuaW5jbHVkZS9saW51eC9jcHVzZXQuaDoxODA6I2Vsc2UgLyogIUNPTkZJR19DUFVTRVRTICovXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTE4MS1cbi0tXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oPTMwMj1zdGF0aWMgaW5saW5lIHZvaWQgY3B1c2V0X25vZGVzX2FsbG93ZWQoc3RydWN0IGNncm91cCAqY2dyb3VwLCBub2RlbWFza190ICptYXNrKVxuLS1cbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMzA1LX1cbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg6MzA2OiNlbmRpZiAvKiAhQ09ORklHX0NQVVNFVFMgKi9cbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMzA3LVxuLS1cbmluY2x1ZGUvbGludXgvc2NoZWQuaD04MjY9c3RydWN0IHRhc2tfc3RydWN0IHtcbi0tXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtMTMzMS0jZW5kaWZcbmluY2x1ZGUvbGludXgvc2NoZWQuaDoxMzMyOiNpZmRlZiBDT05GSUdfQ1BVU0VUU1xuaW5jbHVkZS9saW51eC9zY2hlZC5oLTEzMzMtXHQvKiBQcm90ZWN0ZWQgYnkgLVx1MDAzZWFsbG9jX2xvY2s6ICovXG4tLVxuaW5pdC9pbml0X3Rhc2suYz0xMDU9c3RydWN0IHRhc2tfc3RydWN0IGluaXRfdGFzayBfX2FsaWduZWQoTDFfQ0FDSEVfQllURVMpID0ge1xuLS1cbmluaXQvaW5pdF90YXNrLmMtMjA4LSNlbmRpZlxuaW5pdC9pbml0X3Rhc2suYzoyMDk6I2lmZGVmIENPTkZJR19DUFVTRVRTXG5pbml0L2luaXRfdGFzay5jLTIxMC1cdC5tZW1zX2FsbG93ZWRfc2VxID0gU0VRQ05UX1NQSU5MT0NLX1pFUk8oaW5pdF90YXNrLm1lbXNfYWxsb3dlZF9zZXEsXG4tLVxua2VybmVsL2Nncm91cC9NYWtlZmlsZT02PW9iai0kKENPTkZJR19DR1JPVVBfUkRNQSkgJiM0Mzs9IHJkbWEub1xua2VybmVsL2Nncm91cC9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19DUFVTRVRTKSAmIzQzOz0gY3B1c2V0Lm9cbmtlcm5lbC9jZ3JvdXAvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfQ1BVU0VUU19WMSkgJiM0Mzs9IGNwdXNldC12MS5vXG5rZXJuZWwvY2dyb3VwL01ha2VmaWxlLTktb2JqLSQoQ09ORklHX0NHUk9VUF9NSVNDKSAmIzQzOz0gbWlzYy5vXG4tLVxua2VybmVsL2Nncm91cC9jZ3JvdXAtdjEuYz0xMDM3PXN0YXRpYyBpbnQgY2hlY2tfY2dyb3VwZnNfb3B0aW9ucyhzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4tLVxua2VybmVsL2Nncm91cC9jZ3JvdXAtdjEuYy0xMDQ0LVxua2VybmVsL2Nncm91cC9jZ3JvdXAtdjEuYzoxMDQ1OiNpZmRlZiBDT05GSUdfQ1BVU0VUU1xua2VybmVsL2Nncm91cC9jZ3JvdXAtdjEuYy0xMDQ2LVx0bWFzayA9IH4oKHUzMikxIFx1MDAzY1x1MDAzYyBjcHVzZXRfY2dycF9pZCk7XG4tLVxua2VybmVsL2Nncm91cC9jZ3JvdXAuYz0yMzk2PXN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBjZ3JvdXAyX2ZzX3R5cGUgPSB7XG4tLVxua2VybmVsL2Nncm91cC9jZ3JvdXAuYy0yNDAzLVxua2VybmVsL2Nncm91cC9jZ3JvdXAuYzoyNDA0OiNpZmRlZiBDT05GSUdfQ1BVU0VUU19WMVxua2VybmVsL2Nncm91cC9jZ3JvdXAuYy0yNDA1LWVudW0gY3B1c2V0X3BhcmFtIHtcbi0tXG5rZXJuZWwvY2dyb3VwL2Nncm91cC5jPTY0MjM9aW50IF9faW5pdCBjZ3JvdXBfaW5pdCh2b2lkKVxuLS1cbmtlcm5lbC9jZ3JvdXAvY2dyb3VwLmMtNjUxNi1cdFdBUk5fT04oIXByb2NfY3JlYXRlX3NpbmdsZShcJiMzNDtjZ3JvdXBzXCYjMzQ7LCAwLCBOVUxMLCBwcm9jX2Nncm91cHN0YXRzX3Nob3cpKTtcbmtlcm5lbC9jZ3JvdXAvY2dyb3VwLmM6NjUxNzojaWZkZWYgQ09ORklHX0NQVVNFVFNfVjFcbmtlcm5lbC9jZ3JvdXAvY2dyb3VwLmMtNjUxOC1cdFdBUk5fT04ocmVnaXN0ZXJfZmlsZXN5c3RlbShcdTAwMjZjcHVzZXRfZnNfdHlwZSkpO1xuLS1cbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmg9NzU9c3RydWN0IGNwdXNldCB7XG4tLVxua2VybmVsL2Nncm91cC9jcHVzZXQtaW50ZXJuYWwuaC0xODMtXG5rZXJuZWwvY2dyb3VwL2NwdXNldC1pbnRlcm5hbC5oOjE4NDojaWZkZWYgQ09ORklHX0NQVVNFVFNfVjFcbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmgtMTg1LVx0c3RydWN0IGZtZXRlciBmbWV0ZXI7XHRcdC8qIG1lbW9yeV9wcmVzc3VyZSBmaWx0ZXIgKi9cbi0tXG5rZXJuZWwvY2dyb3VwL2NwdXNldC1pbnRlcm5hbC5oPTMxNj12b2lkIGNwdXNldF9mdWxsX3VubG9jayh2b2lkKTtcbi0tXG5rZXJuZWwvY2dyb3VwL2NwdXNldC1pbnRlcm5hbC5oLTMyMC0gKi9cbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmg6MzIxOiNpZmRlZiBDT05GSUdfQ1BVU0VUU19WMVxua2VybmVsL2Nncm91cC9jcHVzZXQtaW50ZXJuYWwuaC0zMjItZXh0ZXJuIHN0cnVjdCBjZnR5cGUgY3B1c2V0MV9maWxlc1tdO1xuLS1cbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmg9MzQ5PXN0YXRpYyBpbmxpbmUgaW50IGNwdXNldDFfZ2VuZXJhdGVfc2NoZWRfZG9tYWlucyhjcHVtYXNrX3Zhcl90ICoqZG9tYWlucyxcbi0tXG5rZXJuZWwvY2dyb3VwL2NwdXNldC1pbnRlcm5hbC5oLTM1MS1cbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmg6MzUyOiNlbmRpZiAvKiBDT05GSUdfQ1BVU0VUU19WMSAqL1xua2VybmVsL2Nncm91cC9jcHVzZXQtaW50ZXJuYWwuaC0zNTMtXG4tLVxua2VybmVsL2Nncm91cC9jcHVzZXQuYz0zOTA9c3RhdGljIGlubGluZSBib29sIGNwdXNldF92Mih2b2lkKVxua2VybmVsL2Nncm91cC9jcHVzZXQuYy0zOTEte1xua2VybmVsL2Nncm91cC9jcHVzZXQuYzozOTI6XHRyZXR1cm4gIUlTX0VOQUJMRUQoQ09ORklHX0NQVVNFVFNfVjEpIHx8XG5rZXJuZWwvY2dyb3VwL2NwdXNldC5jLTM5My1cdFx0Y2dyb3VwX3N1YnN5c19vbl9kZmwoY3B1c2V0X2NncnBfc3Vic3lzKTtcbi0tXG5rZXJuZWwvY2dyb3VwL2NwdXNldC5jPTM2NjU9c3RydWN0IGNncm91cF9zdWJzeXMgY3B1c2V0X2NncnBfc3Vic3lzID0ge1xuLS1cbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LmMtMzY3Ny1cdC5mb3JrXHRcdD0gY3B1c2V0X2ZvcmssXG5rZXJuZWwvY2dyb3VwL2NwdXNldC5jOjM2Nzg6I2lmZGVmIENPTkZJR19DUFVTRVRTX1YxXG5rZXJuZWwvY2dyb3VwL2NwdXNldC5jLTM2NzktXHQubGVnYWN5X2NmdHlwZXNcdD0gY3B1c2V0MV9maWxlcyxcbi0tXG5rZXJuZWwvZm9yay5jPTE5OTQ9X19sYXRlbnRfZW50cm9weSBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmNvcHlfcHJvY2Vzcyhcbi0tXG5rZXJuZWwvZm9yay5jLTIyMzEtI2VuZGlmXG5rZXJuZWwvZm9yay5jOjIyMzI6I2lmZGVmIENPTkZJR19DUFVTRVRTXG5rZXJuZWwvZm9yay5jLTIyMzMtXHRwLVx1MDAzZWNwdXNldF9tZW1fc3ByZWFkX3JvdG9yID0gTlVNQV9OT19OT0RFO1xuLS1cbmtlcm5lbC9zY2hlZC9pc29sYXRpb24uYz0zNz1zdGF0aWMgYm9vbCBob3VzZWtlZXBpbmdfZGVyZWZlcmVuY2VfY2hlY2soZW51bSBoa190eXBlIHR5cGUpXG4tLVxua2VybmVsL3NjaGVkL2lzb2xhdGlvbi5jLTQ4LVx0XHQvKiBDcHVzZXQgbG9jayBoZWxkLCBwYXJ0aXRpb25zIG5vdCB3cml0YWJsZSAqL1xua2VybmVsL3NjaGVkL2lzb2xhdGlvbi5jOjQ5Olx0XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfQ1BVU0VUUykgXHUwMDI2XHUwMDI2IGxvY2tkZXBfaXNfY3B1c2V0X2hlbGQoKSlcbmtlcm5lbC9zY2hlZC9pc29sYXRpb24uYy01MC1cdFx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLmFhcmNoNjQ9MzA9Q09ORklHX0NPTVBBVD15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLmFhcmNoNjQ6MzE6Q09ORklHX0NQVVNFVFM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0LTMyLUNPTkZJR19DUkFTSF9EVU1QPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWw9MjE9Q09ORklHX0NQVV9MSVRUTEVfRU5ESUFOPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcucHBjNjRlbDoyMjpDT05GSUdfQ1BVU0VUUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWwtMjMtQ09ORklHX0RFQlVHX0FUT01JQ19TTEVFUD15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0PTE3PUNPTkZJR19DR1JPVVBfU0NIRUQ9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0OjE4OkNPTkZJR19DUFVTRVRTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcucmlzY3Y2NC0xOS1DT05GSUdfREVCVUdfQVRPTUlDX1NMRUVQPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnMzOTB4PTIxPUNPTkZJR19DSEVDS1BPSU5UX1JFU1RPUkU9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweDoyMjpDT05GSUdfQ1BVU0VUUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnMzOTB4LTIzLUNPTkZJR19DUkFTSF9EVU1QPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLng4Nl82ND00MD1DT05GSUdfQ1BVX0lETEVfR09WX0xBRERFUj15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLng4Nl82NDo0MTpDT05GSUdfQ1BVU0VUUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLng4Nl82NC00Mi1DT05GSUdfQ1JZUFRPX0JMQUtFMkI9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uPTQwPUNPTkZJR19DUFVfSURMRV9HT1ZfTEFEREVSPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uOjQxOkNPTkZJR19DUFVTRVRTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uLTQyLUNPTkZJR19DUllQVE9fQkxBS0UyQj15XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNzk1CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uCgoqKlVuZGVyc3RhbmRpbmcgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkKioKCkFscmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7WWVhaCwgYENPTkZJR19DUFVTRVRTYCBpcyBhYnNvbHV0ZWx5IGNydWNpYWwgaGVyZS4mIzM0OyBXaXRob3V0IGl0LCBgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkYCBpcyBiYXNpY2FsbHkganVzdCBhbGlhc2VkIHRvIGBub2RlX3N0YXRlc1tOX01FTU9SWV1gLCB3aGljaCBkb2VzbiYjMzk7dCBnaXZlIG1lIHRoZSBmaW5lLWdyYWluZWQgY29udHJvbCBJJiMzOTttIGxvb2tpbmcgZm9yLiBJdCYjMzk7cyBsaWtlIGhhdmluZyBhIGZhbmN5IHRvb2wgYW5kIHRoZW4gbm90IHR1cm5pbmcgaXQgb24uIFdoYXQmIzM5O3MgdGhlIHBvaW50PyBJIG5lZWQgYENPTkZJR19DUFVTRVRTYCBlbmFibGVkIHRvIGFjdHVhbGx5ICp1c2UqIHRoaXMgdGhpbmcgdG8gcGFydGl0aW9uIG1lbW9yeSBlZmZlY3RpdmVseS4gCgpIbW0sIHJpZ2h0LCBub3cgd2hlcmUgKmlzKiBgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkYCBhY3R1YWxseSBkZWZpbmVkPyBPaCwgeWVzLCBvZiBjb3Vyc2UsIGl0JiMzOTtzIGhpZGluZyBpbiBgaW5jbHVkZS9saW51eC9jcHVzZXQuaGAuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBzb3VyY2UgYW5kIHNlZSBleGFjdGx5IGhvdyBpdCYjMzk7cyBpbXBsZW1lbnRlZCBhbmQgd2hhdCBpdCBkZXBlbmRzIG9uLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGRlZmluaXRpb24gdG8gYmUgZW50aXJlbHkgc3VyZS4gR290dGEgYmUgdGhvcm91Z2guIExldCYjMzk7cyBzZWUgd2hhdCB0aGF0IGhlYWRlciBmaWxlIHNheXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2NwdXNldC5oPTgzPWV4dGVybiBub2RlbWFza190IGNwdXNldF9tZW1zX2FsbG93ZWQoc3RydWN0IHRhc2tfc3RydWN0ICpwKTtcbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg6ODQ6I2RlZmluZSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQgKGN1cnJlbnQtXHUwMDNlbWVtc19hbGxvd2VkKVxuaW5jbHVkZS9saW51eC9jcHVzZXQuaC04NS12b2lkIGNwdXNldF9pbml0X2N1cnJlbnRfbWVtc19hbGxvd2VkKHZvaWQpO1xuLS1cbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg9MjE5PXN0YXRpYyBpbmxpbmUgbm9kZW1hc2tfdCBjcHVzZXRfbWVtc19hbGxvd2VkKHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbi0tXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTIyMy1cbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg6MjI0OiNkZWZpbmUgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkIChub2RlX3N0YXRlc1tOX01FTU9SWV0pXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTIyNS1zdGF0aWMgaW5saW5lIHZvaWQgY3B1c2V0X2luaXRfY3VycmVudF9tZW1zX2FsbG93ZWQodm9pZCkge31cbi0tXG5rZXJuZWwvc2NoZWQvZmFpci5jPTQwNzY9c3RhdGljIHZvaWQgdGFza19udW1hX3dvcmsoc3RydWN0IGNhbGxiYWNrX2hlYWQgKndvcmspXG4tLVxua2VybmVsL3NjaGVkL2ZhaXIuYy00MTA3LVx0ICovXG5rZXJuZWwvc2NoZWQvZmFpci5jOjQxMDg6XHRpZiAoY3B1c2V0c19lbmFibGVkKCkgXHUwMDI2XHUwMDI2IG5vZGVzX3dlaWdodChjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQpID09IDEpIHtcbmtlcm5lbC9zY2hlZC9mYWlyLmM6NDEwOTpcdFx0dHJhY2Vfc2NoZWRfc2tpcF9jcHVzZXRfbnVtYShjdXJyZW50LCBcdTAwMjZjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQpO1xua2VybmVsL3NjaGVkL2ZhaXIuYy00MTEwLVx0XHRyZXR1cm47XG4tLVxubW0vaHVnZXRsYi5jPTIyNDU9c3RhdGljIGludCBnYXRoZXJfc3VycGx1c19wYWdlcyhzdHJ1Y3QgaHN0YXRlICpoLCBsb25nIGRlbHRhKVxuLS1cbm1tL2h1Z2V0bGIuYy0yMjU3LVx0aWYgKG1iaW5kX25vZGVtYXNrKVxubW0vaHVnZXRsYi5jOjIyNTg6XHRcdG5vZGVzX2FuZChhbGxvY19ub2RlbWFzaywgKm1iaW5kX25vZGVtYXNrLCBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQpO1xubW0vaHVnZXRsYi5jLTIyNTktXHRlbHNlXG5tbS9odWdldGxiLmM6MjI2MDpcdFx0YWxsb2Nfbm9kZW1hc2sgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XG5tbS9odWdldGxiLmMtMjI2MS1cbi0tXG5tbS9odWdldGxiLmM9NDUwMD1zdGF0aWMgdW5zaWduZWQgaW50IGFsbG93ZWRfbWVtc19ucihzdHJ1Y3QgaHN0YXRlICpoKVxuLS1cbm1tL2h1Z2V0bGIuYy00NTA4LVx0bWJpbmRfbm9kZW1hc2sgPSBwb2xpY3lfbWJpbmRfbm9kZW1hc2soZ2ZwX21hc2spO1xubW0vaHVnZXRsYi5jOjQ1MDk6XHRmb3JfZWFjaF9ub2RlX21hc2sobm9kZSwgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkKSB7XG5tbS9odWdldGxiLmMtNDUxMC1cdFx0aWYgKCFtYmluZF9ub2RlbWFzayB8fCBub2RlX2lzc2V0KG5vZGUsICptYmluZF9ub2RlbWFzaykpXG4tLVxubW0vaHVnZXRsYl9jbWEuYz0yOD1zdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxuLS1cbm1tL2h1Z2V0bGJfY21hLmMtNDMtXHRcdGNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7XG5tbS9odWdldGxiX2NtYS5jOjQ0Olx0XHRsb2NhbF9ub2RlX21hc2sgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XG5tbS9odWdldGxiX2NtYS5jLTQ1LVx0XHRubWFzayA9IFx1MDAyNmxvY2FsX25vZGVfbWFzaztcbi0tXG5tbS9tZW1wb2xpY3kuYz00MDQ9c3RhdGljIGludCBtcG9sX3NldF9ub2RlbWFzayhzdHJ1Y3QgbWVtcG9saWN5ICpwb2wsXG4tLVxubW0vbWVtcG9saWN5LmMtNDE4LVx0bm9kZXNfYW5kKG5zYy1cdTAwM2VtYXNrMSxcbm1tL21lbXBvbGljeS5jOjQxOTpcdFx0ICBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQsIG5vZGVfc3RhdGVzW05fTUVNT1JZXSk7XG5tbS9tZW1wb2xpY3kuYy00MjAtXG4tLVxubW0vbWVtcG9saWN5LmMtNDMwLVx0ZWxzZVxubW0vbWVtcG9saWN5LmM6NDMxOlx0XHRwb2wtXHUwMDNldy5jcHVzZXRfbWVtc19hbGxvd2VkID0gY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkO1xubW0vbWVtcG9saWN5LmMtNDMyLVxuLS1cbm1tL21lbXBvbGljeS5jPTExNDc9c3RhdGljIGxvbmcgZG9fZ2V0X21lbXBvbGljeShpbnQgKnBvbGljeSwgbm9kZW1hc2tfdCAqbm1hc2ssXG4tLVxubW0vbWVtcG9saWN5LmMtMTE2My1cdFx0dGFza19sb2NrKGN1cnJlbnQpO1xubW0vbWVtcG9saWN5LmM6MTE2NDpcdFx0Km5tYXNrICA9IGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZDtcbm1tL21lbXBvbGljeS5jLTExNjUtXHRcdHRhc2tfdW5sb2NrKGN1cnJlbnQpO1xuLS1cbm1tL29vbV9raWxsLmM9MjQ5PXN0YXRpYyBlbnVtIG9vbV9jb25zdHJhaW50IGNvbnN0cmFpbmVkX2FsbG9jKHN0cnVjdCBvb21fY29udHJvbCAqb2MpXG4tLVxubW0vb29tX2tpbGwuYy0yOTgtXHRcdG9jLVx1MDAzZXRvdGFscGFnZXMgPSB0b3RhbF9zd2FwX3BhZ2VzO1xubW0vb29tX2tpbGwuYzoyOTk6XHRcdGZvcl9lYWNoX25vZGVfbWFzayhuaWQsIGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZClcbm1tL29vbV9raWxsLmMtMzAwLVx0XHRcdG9jLVx1MDAzZXRvdGFscGFnZXMgJiM0Mzs9IG5vZGVfcHJlc2VudF9wYWdlcyhuaWQpO1xuLS1cbm1tL3BhZ2VfYWxsb2MuYz00NzI1PV9fYWxsb2NfcGFnZXNfc2xvd3BhdGgoZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcixcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNDgwNi1cdFx0XHRcdFx0YWMtXHUwMDNlaGlnaGVzdF96b25laWR4LFxubW0vcGFnZV9hbGxvYy5jOjQ4MDc6XHRcdFx0XHRcdFx1MDAyNmNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZCk7XG5tbS9wYWdlX2FsbG9jLmMtNDgwOC1cdFx0aWYgKCF6b25lbGlzdF96b25lKHopKVxuLS1cbm1tL3BhZ2VfYWxsb2MuYz01MDI2PXN0YXRpYyBpbmxpbmUgYm9vbCBwcmVwYXJlX2FsbG9jX3BhZ2VzKGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsXG4tLVxubW0vcGFnZV9hbGxvYy5jLTUwNDItXHRcdGlmIChpbl90YXNrKCkgXHUwMDI2XHUwMDI2ICFhYy1cdTAwM2Vub2RlbWFzaylcbm1tL3BhZ2VfYWxsb2MuYzo1MDQzOlx0XHRcdGFjLVx1MDAzZW5vZGVtYXNrID0gXHUwMDI2Y3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkO1xubW0vcGFnZV9hbGxvYy5jLTUwNDQtXHRcdGVsc2Vcbi0tXG5tbS9wYWdlX2FsbG9jLmM9NTI2OD1zdHJ1Y3QgcGFnZSAqX19hbGxvY19mcm96ZW5fcGFnZXNfbm9wcm9mKGdmcF90IGdmcCwgdW5zaWduZWQgaW50IG9yZGVyLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy01MzEyLVx0ICogUmVzdG9yZSB0aGUgb3JpZ2luYWwgbm9kZW1hc2sgaWYgaXQgd2FzIHBvdGVudGlhbGx5IHJlcGxhY2VkIHdpdGhcbm1tL3BhZ2VfYWxsb2MuYzo1MzEzOlx0ICogXHUwMDI2Y3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkIHRvIG9wdGltaXplIHRoZSBmYXN0LXBhdGggYXR0ZW1wdC5cbm1tL3BhZ2VfYWxsb2MuYy01MzE0LVx0ICovXG4tLVxubW0vc2hvd19tZW0uYz0xMTk9c3RhdGljIGJvb2wgc2hvd19tZW1fbm9kZV9za2lwKHVuc2lnbmVkIGludCBmbGFncywgaW50IG5pZCwgbm9kZW1hc2tfdCAqbm9kZW1hc2spXG4tLVxubW0vc2hvd19tZW0uYy0xMjktXHRpZiAoIW5vZGVtYXNrKVxubW0vc2hvd19tZW0uYzoxMzA6XHRcdG5vZGVtYXNrID0gXHUwMDI2Y3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkO1xubW0vc2hvd19tZW0uYy0xMzEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1Nzk1CgkJCQkJCQlvdXRwdXQ6IDE2CgkJCQkJCQl0aG91Z2h0czogOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuCgoqKkRldGVybWluaW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAqKgoKUmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCYjMzk7cyByZXF1aXJlZCBmb3IgYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAgdG8gYmVoYXZlIGFzIGV4cGVjdGVkLCBzcGVjaWZpY2FsbHksIGZvciBpdCB0byByZXNvbHZlIHRvIGBjdXJyZW50LSZndDttZW1zX2FsbG93ZWRgLiBUaGF0IG1lYW5zIGBDT05GSUdfQ1BVU0VUU2AgaXMgYSBkZWZpbml0ZSByZXF1aXJlbWVudC4gV2l0aG91dCBpdCwgdGhlIGZ1bmN0aW9uIHJldmVydHMgdG8gdXNpbmcgYG5vZGVfc3RhdGVzW05fTUVNT1JZXWAsIHdoaWNoIGlzbiYjMzk7dCB0aGUgaW50ZW5kZWQgYmVoYXZpb3IuIFNvLCBgQ09ORklHX0NQVVNFVFNgIGlzIHRoZSBzdGFydGluZyBwb2ludC4KCkJ1dCBob2xkIG9uLCB0aGVyZSYjMzk7cyBtb3JlIHRvIGNvbnNpZGVyIGhlcmUuIEkgYWxzbyBzZWVtIHRvIHJlY2FsbCB0aGF0IGJvdGggYENPTkZJR19IVUdFVExCRlNgIGFuZCBgQ09ORklHX0NNQWAgaGF2ZSBzb21lIGNvbm5lY3Rpb24gdG8gdGhpcyBhcmVhLiBMZXQgbWUgcGF1c2UgYW5kIGRlbHZlIGRlZXBlciBpbnRvIHRoZSBkZXBlbmRlbmN5IHRyZWUgb2YgYENPTkZJR19DTUFgLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGEgY3J1Y2lhbCBsaW5rIGluIHRoaXMgY2hhaW4uIExldCBtZSBzZWUgd2hlcmUgdGhhdCB0YWtlcyBtZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENNQSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvZG1hL0tjb25maWc9MTczPWNvbmZpZyBETUFfTlVNQV9DTUFcbi0tXG5rZXJuZWwvZG1hL0tjb25maWctMTg1LVxua2VybmVsL2RtYS9LY29uZmlnOjE4Njpjb25maWcgQ01BX1NJWkVfUEVSTlVNQVxua2VybmVsL2RtYS9LY29uZmlnLTE4Ny1cdGJvb2wgXCYjMzQ7RGVmYXVsdCBDTUEgYXJlYSBwZXIgTlVNQSBub2RlXCYjMzQ7XG4tLVxua2VybmVsL2RtYS9LY29uZmlnPTE5Nj1jb21tZW50IFwmIzM0O0RlZmF1bHQgY29udGlndW91cyBtZW1vcnkgYXJlYSBzaXplOlwmIzM0O1xua2VybmVsL2RtYS9LY29uZmlnLTE5Ny1cbmtlcm5lbC9kbWEvS2NvbmZpZzoxOTg6Y29uZmlnIENNQV9TSVpFX01CWVRFU1xua2VybmVsL2RtYS9LY29uZmlnLTE5OS1cdGludCBcJiMzNDtTaXplIGluIE1lZ2EgQnl0ZXNcJiMzNDtcbi0tXG5rZXJuZWwvZG1hL0tjb25maWctMjA4LVxua2VybmVsL2RtYS9LY29uZmlnOjIwOTpjb25maWcgQ01BX1NJWkVfUEVSQ0VOVEFHRVxua2VybmVsL2RtYS9LY29uZmlnLTIxMC1cdGludCBcJiMzNDtQZXJjZW50YWdlIG9mIHRvdGFsIG1lbW9yeVwmIzM0O1xuLS1cbmtlcm5lbC9kbWEvS2NvbmZpZz0yMjA9Y2hvaWNlXG4tLVxua2VybmVsL2RtYS9LY29uZmlnLTIyMy1cbmtlcm5lbC9kbWEvS2NvbmZpZzoyMjQ6Y29uZmlnIENNQV9TSVpFX1NFTF9NQllURVNcbmtlcm5lbC9kbWEvS2NvbmZpZy0yMjUtXHRib29sIFwmIzM0O1VzZSBtZWdhIGJ5dGVzIHZhbHVlIG9ubHlcJiMzNDtcbmtlcm5lbC9kbWEvS2NvbmZpZy0yMjYtXG5rZXJuZWwvZG1hL0tjb25maWc6MjI3OmNvbmZpZyBDTUFfU0laRV9TRUxfUEVSQ0VOVEFHRVxua2VybmVsL2RtYS9LY29uZmlnLTIyOC1cdGJvb2wgXCYjMzQ7VXNlIHBlcmNlbnRhZ2UgdmFsdWUgb25seVwmIzM0O1xua2VybmVsL2RtYS9LY29uZmlnLTIyOS1cbmtlcm5lbC9kbWEvS2NvbmZpZzoyMzA6Y29uZmlnIENNQV9TSVpFX1NFTF9NSU5cbmtlcm5lbC9kbWEvS2NvbmZpZy0yMzEtXHRib29sIFwmIzM0O1VzZSBsb3dlciB2YWx1ZSAobWluaW11bSlcJiMzNDtcbmtlcm5lbC9kbWEvS2NvbmZpZy0yMzItXG5rZXJuZWwvZG1hL0tjb25maWc6MjMzOmNvbmZpZyBDTUFfU0laRV9TRUxfTUFYXG5rZXJuZWwvZG1hL0tjb25maWctMjM0LVx0Ym9vbCBcJiMzNDtVc2UgaGlnaGVyIHZhbHVlIChtYXhpbXVtKVwmIzM0O1xuLS1cbmtlcm5lbC9kbWEvS2NvbmZpZz0yMzY9ZW5kY2hvaWNlXG5rZXJuZWwvZG1hL0tjb25maWctMjM3LVxua2VybmVsL2RtYS9LY29uZmlnOjIzODpjb25maWcgQ01BX0FMSUdOTUVOVFxua2VybmVsL2RtYS9LY29uZmlnLTIzOS1cdGludCBcJiMzNDtNYXhpbXVtIFBBR0VfU0laRSBvcmRlciBvZiBhbGlnbm1lbnQgZm9yIGNvbnRpZ3VvdXMgYnVmZmVyc1wmIzM0O1xuLS1cbm1tL0tjb25maWc9MTA2ND1jb25maWcgSEFWRV9TRVRVUF9QRVJfQ1BVX0FSRUFcbi0tXG5tbS9LY29uZmlnLTEwNjYtXG5tbS9LY29uZmlnOjEwNjc6Y29uZmlnIENNQVxubW0vS2NvbmZpZy0xMDY4LVx0Ym9vbCBcJiMzNDtDb250aWd1b3VzIE1lbW9yeSBBbGxvY2F0b3JcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTEwODEtXG5tbS9LY29uZmlnOjEwODI6Y29uZmlnIENNQV9ERUJVR0ZTXG5tbS9LY29uZmlnLTEwODMtXHRib29sIFwmIzM0O0NNQSBkZWJ1Z2ZzIGludGVyZmFjZVwmIzM0O1xuLS1cbm1tL0tjb25maWctMTA4Ny1cbm1tL0tjb25maWc6MTA4ODpjb25maWcgQ01BX1NZU0ZTXG5tbS9LY29uZmlnLTEwODktXHRib29sIFwmIzM0O0NNQSBpbmZvcm1hdGlvbiB0aHJvdWdoIHN5c2ZzIGludGVyZmFjZVwmIzM0O1xuLS1cbm1tL0tjb25maWctMTA5NC1cbm1tL0tjb25maWc6MTA5NTpjb25maWcgQ01BX0FSRUFTXG5tbS9LY29uZmlnLTEwOTYtXHRpbnQgXCYjMzQ7TWF4aW11bSBjb3VudCBvZiB0aGUgQ01BIGFyZWFzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2ODgzCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBNZW1vcnkgTWFuYWdlbWVudCBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgc28gYENPTkZJR19DTUFgLCB0aGF0JiMzOTtzIGNsZWFybHkgZGVmaW5lZCBpbiBgbW0vS2NvbmZpZ2AuIEdvb2QsIHRoYXQmIzM5O3Mgd2hlcmUgSSBleHBlY3RlZCB0byBmaW5kIGl0LiBOb3csIGdpdmVuIG15IGN1cnJlbnQgZm9jdXMsIEkgc2hvdWxkIGRpZyBpbnRvIHRoZSBkZXBlbmRlbmNpZXMuIExldCYjMzk7cyBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBgQ09ORklHX0hVR0VUTEJGU2AuIEkgd2FudCB0byBzZWUgaWYgZW5hYmxpbmcgb25lIGltcGFjdHMgdGhlIG90aGVyLCBvciBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBpbnRlcmFjdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBHb3R0YSB0cmFjayB0aGVzZSBkZXBlbmRlbmNpZXMgY2xvc2VseS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBLY29uZmlnIHRlbGxzIHVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSFVHRVRMQkZTJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL0tjb25maWc9MjQ3PWNvbmZpZyBBUkNIX1NVUFBPUlRTX0hVR0VUTEJGU1xuLS1cbmZzL0tjb25maWctMjQ5LVxuZnMvS2NvbmZpZzoyNTA6bWVudWNvbmZpZyBIVUdFVExCRlNcbmZzL0tjb25maWctMjUxLVx0Ym9vbCBcJiMzNDtIdWdlVExCIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcxNDUKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCBtZSBzZWUuLi4gSSYjMzk7bSBsb29raW5nIGF0IGEgcGFydGljdWxhciBzdWJzeXN0ZW0gb3IgZmVhdHVyZSB3aXRoaW4gdGhlIGtlcm5lbCwgYW5kIGl0IHNlZW1zIHByZXR0eSBjbGVhciB0aGF0IGBDT05GSUdfSFVHRVRMQkZTYCBpcyBhIHByZXJlcXVpc2l0ZS4gVGhhdCYjMzk7cyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQmIzM5O3MgZW5hYmxlZCBpbiB0aGUga2VybmVsIGNvbmZpZy4KCkhtbS4uLiBidXQgaG9sZCBvbiBhIHNlY29uZC4gSSYjMzk7bSBhbHNvIGdsYW5jaW5nIGF0IHRoZSBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzIG9mIHRoZSBtb2R1bGUsIGFuZCBzb21ldGhpbmcgdGVsbHMgbWUgSSBtaWdodCBhbHNvIG5lZWQgdG8gY29uc2lkZXIgYENPTkZJR19IVUdFVExCX1BBR0VgLCBlc3BlY2lhbGx5IGdpdmVuIHRoYXQgYG1tL2h1Z2V0bGIuY2AgaXMgaW52b2x2ZWQuIEkga25vdyB0aGF0IGZpbGUgaGFuZGxlcyBIdWdlVExCLXNwZWNpZmljIG1lbW9yeSBtYW5hZ2VtZW50LiBTbyB3aGlsZSBgQ09ORklHX0hVR0VUTEJGU2Agc2V0cyB1cCB0aGUgZmlsZXN5c3RlbSwgaXQgbG9va3MgbGlrZSBgQ09ORklHX0hVR0VUTEJfUEFHRWAgbWlnaHQgYmUgYSBtb3JlIGZpbmUtZ3JhaW5lZCBjb25maWd1cmF0aW9uIGNob2ljZSB3aGljaCBoZWxwcyBkZWZpbmVzIGhvdyB0aGUgcGFnZXMgd2lsbCBiZSBoYW5kbGVkLCB3aGljaCBJIG1pZ2h0IG5lZWQgdG8gZXhwbGljaXRseSBzZWxlY3QgaWYgSSB3YW50IHRvIG1heGltaXplIHBlcmZvcm1hbmNlLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgZG9jdW1lbnRhdGlvbiBmb3IgYm90aCB0byBiZSBjZXJ0YWluLiBJIG5lZWQgdG8gdGhpbmsgdGhyb3VnaCBob3cgdGhlc2UgcmVsYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSFVHRVRMQl9QQUdFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvc2gvbW0vS2NvbmZpZz0xNTg9Y2hvaWNlXG4tLVxuYXJjaC9zaC9tbS9LY29uZmlnLTE2My1cbmFyY2gvc2gvbW0vS2NvbmZpZzoxNjQ6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFXzY0S1xuYXJjaC9zaC9tbS9LY29uZmlnLTE2NS1cdGJvb2wgXCYjMzQ7NjRrQlwmIzM0O1xuLS1cbmFyY2gvc2gvbW0vS2NvbmZpZy0xNjctXG5hcmNoL3NoL21tL0tjb25maWc6MTY4OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV8yNTZLXG5hcmNoL3NoL21tL0tjb25maWctMTY5LVx0Ym9vbCBcJiMzNDsyNTZrQlwmIzM0O1xuLS1cbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzEtXG5hcmNoL3NoL21tL0tjb25maWc6MTcyOmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV8xTUJcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzMtXHRib29sIFwmIzM0OzFNQlwmIzM0O1xuYXJjaC9zaC9tbS9LY29uZmlnLTE3NC1cbmFyY2gvc2gvbW0vS2NvbmZpZzoxNzU6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFXzRNQlxuYXJjaC9zaC9tbS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7NE1CXCYjMzQ7XG4tLVxuYXJjaC9zaC9tbS9LY29uZmlnLTE3OC1cbmFyY2gvc2gvbW0vS2NvbmZpZzoxNzk6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFXzY0TUJcbmFyY2gvc2gvbW0vS2NvbmZpZy0xODAtXHRib29sIFwmIzM0OzY0TUJcJiMzNDtcbi0tXG5mcy9LY29uZmlnPTI2Mj1pZiBIVUdFVExCRlNcbmZzL0tjb25maWc6MjYzOmNvbmZpZyBIVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUF9ERUZBVUxUX09OXG5mcy9LY29uZmlnLTI2NC1cdGJvb2wgXCYjMzQ7SHVnZVRMQiBWbWVtbWFwIE9wdGltaXphdGlvbiAoSFZPKSBkZWZhdWx0cyB0byBvblwmIzM0O1xuLS1cbmZzL0tjb25maWc9MjcxPWVuZGlmICMgSFVHRVRMQkZTXG5mcy9LY29uZmlnLTI3Mi1cbmZzL0tjb25maWc6MjczOmNvbmZpZyBIVUdFVExCX1BBR0VcbmZzL0tjb25maWctMjc0LVx0ZGVmX2Jvb2wgSFVHRVRMQkZTXG4tLVxuZnMvS2NvbmZpZy0yNzYtXG5mcy9LY29uZmlnOjI3Nzpjb25maWcgSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBcbmZzL0tjb25maWctMjc4LVx0ZGVmX2Jvb2wgSFVHRVRMQl9QQUdFXG4tLVxubW0vS2NvbmZpZz03MDY9Y29uZmlnIEFSQ0hfRU5BQkxFX1RIUF9NSUdSQVRJT05cbi0tXG5tbS9LY29uZmlnLTcwOC1cbm1tL0tjb25maWc6NzA5OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV9WQVJJQUJMRVxubW0vS2NvbmZpZy03MTAtXHRkZWZfYm9vbCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MDQzCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBLZXJuZWwgQ29uZmlndXJhdGlvbiBUaG91Z2h0cyoqCgpPa2F5LCBzbyBsb29raW5nIGF0IHRoZSBrZXJuZWwgY29uZmlnIG9wdGlvbnMsIGBDT05GSUdfSFVHRVRMQl9QQUdFYCBkZWZhdWx0cyB0byB1c2luZyBgSFVHRVRMQkZTYC4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncy4gV2hpY2ggbWVhbnMgSSBzaG91bGQgcmVhbGx5IGp1c3QgYmUgY29uY2VybmVkIGFib3V0IGBDT05GSUdfSFVHRVRMQkZTYCBmb3Igbm93LiBIYW5nIG9uLCB0aG91Z2guLi4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcuIFRoYXQgYGFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpb2AgZnVuY3Rpb27igKYgaXQmIzM5O3Mgb25seSBkZWZpbmVkIGlmIHdlIGhhdmUgYm90aCBgQ09ORklHX0FSQ0hfSEFTX0dJR0FOVElDX1BBR0VgICphbmQqIGBDT05GSUdfQ09OVElHX0FMTE9DYCBlbmFibGVkLiBSaWdodC4gT2theSwgbGV0IG1lIGdvIGJhY2sgYW5kIGdpdmUgYG1tL2h1Z2V0bGIuY2AgYW5vdGhlciBsb29rIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsLiBHb3R0YSBnZXQgdGhpcyByaWdodC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0FSQ0hfSEFTX0dJR0FOVElDX1BBR0UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9hc20tZ2VuZXJpYy9odWdldGxiLmg9MTI1PXN0YXRpYyBpbmxpbmUgYm9vbCBnaWdhbnRpY19wYWdlX3J1bnRpbWVfc3VwcG9ydGVkKHZvaWQpXG5pbmNsdWRlL2FzbS1nZW5lcmljL2h1Z2V0bGIuaC0xMjYte1xuaW5jbHVkZS9hc20tZ2VuZXJpYy9odWdldGxiLmg6MTI3Olx0cmV0dXJuIElTX0VOQUJMRUQoQ09ORklHX0FSQ0hfSEFTX0dJR0FOVElDX1BBR0UpO1xuaW5jbHVkZS9hc20tZ2VuZXJpYy9odWdldGxiLmgtMTI4LX1cbi0tXG5tbS9odWdldGxiLmM9MTMyMD1zdGF0aWMgc3RydWN0IGZvbGlvICpkZXF1ZXVlX2h1Z2V0bGJfZm9saW9fdm1hKHN0cnVjdCBoc3RhdGUgKmgsXG4tLVxubW0vaHVnZXRsYi5jLTEzNTgtXG5tbS9odWdldGxiLmM6MTM1OTojaWYgZGVmaW5lZChDT05GSUdfQVJDSF9IQVNfR0lHQU5USUNfUEFHRSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0NPTlRJR19BTExPQylcbm1tL2h1Z2V0bGIuYy0xMzYwLXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxuLS1cbm1tL2h1Z2V0bGIuYy0xMzc1LX1cbm1tL2h1Z2V0bGIuYzoxMzc2OiNlbHNlIC8qICFDT05GSUdfQVJDSF9IQVNfR0lHQU5USUNfUEFHRSB8fCAhQ09ORklHX0NPTlRJR19BTExPQyAqL1xubW0vaHVnZXRsYi5jLTEzNzctc3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfZ2lnYW50aWNfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssIGludCBuaWQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NjQ5CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gZGVlcCBpbiB0aGUgd2VlZHMgb2Yga2VybmVsIGNvbmZpZ3VyYXRpb246CgoqKk5hdmlnYXRpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGl0IGxvb2tzIGxpa2UgSSBuZWVkIHRvIGVuYWJsZSBgQ09ORklHX0FSQ0hfSEFTX0dJR0FOVElDX1BBR0VgIHRvIGdldCB0aGlzIHRoaW5nIHdvcmtpbmcuIEJ1dCBob2xkIG9uLCB0aGUgYnVpbGQgcHJvY2VzcyBpcyBmbGFnZ2luZyBzb21ldGhpbmcgZWxzZSDigJMgYENPTkZJR19DT05USUdfQUxMT0NgLiBMZXQgbWUganVzdCBwYXVzZSBoZXJlLiBCZWZvcmUgSSBjb21taXQgdG8gYW55dGhpbmcsIEkgc2hvdWxkIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3by4gSSBuZWVkIHRvIGRpZyBpbnRvIGBDT05GSUdfQ09OVElHX0FMTE9DYC4gVGhpcyBpcyB3aGVyZSBJIHN0YXJ0IGludmVzdGlnYXRpbmcgdGhlIGRlcGVuZGVuY2llcyBhbmQgaW50ZXJhY3Rpb25zIGJldHdlZW4gdGhlc2UgY29uZmlndXJhdGlvbnMuIEl04oCZcyBiZXN0IHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBiZWZvcmUgSSBnbyBhbmQgYnJlYWsgc29tZXRoaW5nIGVsc2UhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDT05USUdfQUxMT0MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz03MDk9Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFX1ZBUklBQkxFXG4tLVxubW0vS2NvbmZpZy03MTgtXG5tbS9LY29uZmlnOjcxOTpjb25maWcgQ09OVElHX0FMTE9DXG5tbS9LY29uZmlnLTcyMC1cdGRlZl9ib29sIChNRU1PUllfSVNPTEFUSU9OIFx1MDAyNlx1MDAyNiBDT01QQUNUSU9OKSB8fCBDTUFcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg5NDcKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBNZW1vcnkgQWxsb2NhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4uLiBTbywgYENPTlRJR19BTExPQ2AgYnkgZGVmYXVsdCBpcyBzZXQgdXAgdG8gdXNlIGBDTUFgIOKAkyB0aGF0JiMzOTtzIHRoZSBDb250aW51b3VzIE1lbW9yeSBBbGxvY2F0b3Ig4oCTIGFuZCB0aGF0IG1lYW5zIGlmIGBDT05GSUdfQ01BYCBpcyBlbmFibGVkLCB0aGVuIHdlJiMzOTtyZSBnb29kIHRvIGdvLiBTZWVtcyBzdHJhaWdodGZvcndhcmQuIEJ1dCwgaG9sZCBvbiBhIHNlYy4uLiBXaGF0IGFib3V0IHRoYXQgb3RoZXIgcGFyYW1ldGVyIGBDT05GSUdfQVJDSF9IQVNfR0lHQU5USUNfUEFHRWA/IFRoYXQgZGVmaW5pdGVseSBwbGF5cyBhIHJvbGUgaW4gaG93IG1lbW9yeSBpcyBoYW5kbGVkLCBzcGVjaWZpY2FsbHkgd2l0aCBsYXJnZSBwYWdlcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhvc2Ugc2V0dGluZ3MuIEl0JiMzOTtzIGltcG9ydGFudCB0byBjb25zaWRlciBpZiBlbmFibGluZyBgQ01BYCBoYXMgYW55IGltcGxpY2F0aW9uIGluIHRoZSB1c2UsIG9yIHBlcmZvcm1hbmNlLCBvZiBsYXJnZSBwYWdlcy4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBhbmQgaW1wbGljYXRpb25zIG9mIHRob3NlIHR3byBwYXJhbWV0ZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVJDSF9IQVNfR0lHQU5USUNfUEFHRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9LY29uZmlnPTI4Mz1jb25maWcgSFVHRVRMQl9QTURfUEFHRV9UQUJMRV9TSEFSSU5HXG4tLVxuZnMvS2NvbmZpZy0yODYtXG5mcy9LY29uZmlnOjI4Nzpjb25maWcgQVJDSF9IQVNfR0lHQU5USUNfUEFHRVxuZnMvS2NvbmZpZy0yODgtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5Mjc2CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIEFyY2hpdGVjdHVyYWwgRGVwZW5kZW5jeSoqCgpSaWdodCwgc28gd2UmIzM5O3ZlIGdvdCB0aGlzIGVsZW1lbnQsIGFuZCBteSBpbW1lZGlhdGUgY29uY2VybiBpcyBpdHMgZGVwZW5kZW5jeSBwcm9maWxlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aGljaCogYXJjaGl0ZWN0dXJlcyBhcmUgZXZlbiBib3RoZXJpbmcgdG8gdXNlIGl0LiBUaGlzIGlzbiYjMzk7dCBqdXN0IGFib3V0IGdlbmVyYWwgYXdhcmVuZXNzLCBJIG5lZWQgdG8ga25vdyB0aGUgZGlyZWN0IGNvbm5lY3Rpb25zLiBObyBwb2ludCBpbiBvcHRpbWl6aW5nIGl0LCBpbXByb3ZpbmcgaXRzIGludGVyZmFjZSwgb3IgZXZlbiB3b3JyeWluZyBhYm91dCBpdHMgbGlmZWN5Y2xlIGlmIGl0JiMzOTtzIG5vdCBhY3R1YWxseSAqc2VsZWN0ZWQqIGFuZCBpbmNvcnBvcmF0ZWQgaW50byBhbnkgbWVhbmluZ2Z1bCBhcmNoaXRlY3R1cmFsIHBhdHRlcm5zLiBMZXTigJlzIGRpdmUgc3RyYWlnaHQgaW50byB0aGUgYXJjaGl0ZWN0dXJlIGxhbmRzY2FwZSBhbmQgdHJhY2UgaXRzIHVzYWdlLiBUaW1lIHRvIGdldCBzb21lIGFuc3dlcnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBBUkNIX0hBU19HSUdBTlRJQ19QQUdFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQvS2NvbmZpZz0yPWNvbmZpZyBBUk02NFxuLS1cbmFyY2gvYXJtNjQvS2NvbmZpZy0zMi1cdHNlbGVjdCBBUkNIX0hBU19HQ09WX1BST0ZJTEVfQUxMXG5hcmNoL2FybTY0L0tjb25maWc6MzM6XHRzZWxlY3QgQVJDSF9IQVNfR0lHQU5USUNfUEFHRVxuYXJjaC9hcm02NC9LY29uZmlnLTM0LVx0c2VsZWN0IEFSQ0hfSEFTX0tDT1Zcbi0tXG5hcmNoL3Bvd2VycGMvS2NvbmZpZz0xMTg9Y29uZmlnIFBQQ1xuLS1cbmFyY2gvcG93ZXJwYy9LY29uZmlnLTEzOC1cdHNlbGVjdCBBUkNIX0hBU19HQ09WX1BST0ZJTEVfQUxMXG5hcmNoL3Bvd2VycGMvS2NvbmZpZzoxMzk6XHRzZWxlY3QgQVJDSF9IQVNfR0lHQU5USUNfUEFHRVx0XHRpZiBBUkNIX1NVUFBPUlRTX0hVR0VUTEJGU1xuYXJjaC9wb3dlcnBjL0tjb25maWctMTQwLVx0c2VsZWN0IEFSQ0hfSEFTX0tDT1Zcbi0tXG5hcmNoL3Jpc2N2L0tjb25maWc9MTM9Y29uZmlnIFJJU0NWXG4tLVxuYXJjaC9yaXNjdi9LY29uZmlnLTM1LVx0c2VsZWN0IEFSQ0hfSEFTX0dDT1ZfUFJPRklMRV9BTExcbmFyY2gvcmlzY3YvS2NvbmZpZzozNjpcdHNlbGVjdCBBUkNIX0hBU19HSUdBTlRJQ19QQUdFXG5hcmNoL3Jpc2N2L0tjb25maWctMzctXHRzZWxlY3QgQVJDSF9IQVNfSFdfUFRFX1lPVU5HXG4tLVxuYXJjaC9zMzkwL0tjb25maWc9NzU9Y29uZmlnIFMzOTBcbi0tXG5hcmNoL3MzOTAvS2NvbmZpZy05Ny1cdHNlbGVjdCBBUkNIX0hBU19HQ09WX1BST0ZJTEVfQUxMXG5hcmNoL3MzOTAvS2NvbmZpZzo5ODpcdHNlbGVjdCBBUkNIX0hBU19HSUdBTlRJQ19QQUdFXG5hcmNoL3MzOTAvS2NvbmZpZy05OS1cdHNlbGVjdCBBUkNIX0hBU19LQ09WXG4tLVxuYXJjaC9zaC9LY29uZmlnPTI9Y29uZmlnIFNVUEVSSFxuLS1cbmFyY2gvc2gvS2NvbmZpZy05LVx0c2VsZWN0IEFSQ0hfSEFTX0NVUlJFTlRfU1RBQ0tfUE9JTlRFUlxuYXJjaC9zaC9LY29uZmlnOjEwOlx0c2VsZWN0IEFSQ0hfSEFTX0dJR0FOVElDX1BBR0VcbmFyY2gvc2gvS2NvbmZpZy0xMS1cdHNlbGVjdCBBUkNIX0hBU19HQ09WX1BST0ZJTEVfQUxMXG4tLVxuYXJjaC9zcGFyYy9LY29uZmlnPTcwPWNvbmZpZyBTUEFSQzY0XG4tLVxuYXJjaC9zcGFyYy9LY29uZmlnLTEwNy1cdHNlbGVjdCBQQ0lfRE9NQUlOUyBpZiBQQ0lcbmFyY2gvc3BhcmMvS2NvbmZpZzoxMDg6XHRzZWxlY3QgQVJDSF9IQVNfR0lHQU5USUNfUEFHRVxuYXJjaC9zcGFyYy9LY29uZmlnLTEwOS1cdHNlbGVjdCBIQVZFX1NPRlRJUlFfT05fT1dOX1NUQUNLXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0yMz1jb25maWcgWDg2XzY0XG4tLVxuYXJjaC94ODYvS2NvbmZpZy0yNi1cdCMgT3B0aW9ucyB0aGF0IGFyZSBpbmhlcmVudGx5IDY0LWJpdCBrZXJuZWwgb25seTpcbmFyY2gveDg2L0tjb25maWc6Mjc6XHRzZWxlY3QgQVJDSF9IQVNfR0lHQU5USUNfUEFHRVxuYXJjaC94ODYvS2NvbmZpZy0yOC1cdHNlbGVjdCBBUkNIX1NVUFBPUlRTX01TRUFMX1NZU1RFTV9NQVBQSU5HU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDEyNAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDI4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgQ29kZSYjMzk7cyBDb25maWd1cmF0aW9uIGFuZCBLZXkgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGZpZ3VyaW5nIG91dCB0aGUgY3JpdGljYWwgY29tcG9uZW50cy4gSXQgbG9va3MgbGlrZSB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZXMgYXJlIHByZXR0eSBicm9hZCAtIGBYODZfNjRgLCBgQVJNNjRgLCBgUklTQ1ZgLCBgUzM5MGAsIGBTUEFSQzY0YCwgYFNVUEVSSGAsIGFuZCBgUFBDYC4gTm8gbmVlZCB0byBzcGVjaWZ5IHRoZW0sIHRoZSBjb2RlIGhhbmRsZXMgYSBnb29kIHJhbmdlLgoKVGhlIGNvbmZpZ3MgSSBuZWVkIHRvIHBheSBhdHRlbnRpb24gdG8gYXJlIGBIVUdFVExCRlNgLCBgQ01BYCwgYW5kIGBDUFVTRVRTYC4gSSB0aGluayBJIHJlY2FsbCB0aGF0IGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIGlzIG9ubHkgY29tcGlsZWQgaWYgYm90aCBgQ09ORklHX0NNQWAgYW5kIGBDT05GSUdfSFVHRVRMQkZTYCBhcmUgc2V0LiBBbmQgYENQVVNFVFNgIGlzIGtleSwgYmVjYXVzZSBJJiMzOTtsbCBuZWVkIHRvIHVzZSBpdCB0byB0ZXN0IGNwdXNldCBsb2dpYy4KCkxldCYjMzk7cyBzZWUgd2hhdCBmdW5jdGlvbnMgYXJlIG9mIGludGVyZXN0LiBJIG5lZWQgdG8gZm9jdXMgb246IGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIGFuZCB0aGVuIGBhbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW9gICh3aGljaCBpcyBtYXJrZWQgYXMgc3RhdGljLCBzbyBtaWdodCBiZSBpbmxpbmVkKS4gSG93ZXZlciwgdGhlIHJlYWxseSBpbXBvcnRhbnQgZnVuY3Rpb24gaXMgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2Agc2luY2UgaXQmIzM5O3MgZ2xvYmFsLgoKSG9sZCBvbiwgSSBnb3QgdGhhdCBzbGlnaHRseSB3cm9uZy4gYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AgaXNuJiMzOTt0IHN0YXRpYy4gSXQmIzM5O3MgZGVmaW5lZCBpbiBgbW0vaHVnZXRsYl9jbWEuY2AsIGFuZCBpdCBpcyBub3QgZXhwbGljaXRseSBleHBvcnRlZCwgYnV0IGlzIGEgZ2xvYmFsIGZ1bmN0aW9uLiBTbywgSSBuZWVkIHRvIGNoZWNrIGBtbS9odWdldGxiX2NtYS5jYCB0byBzZWUgaG93IGl0IHdvcmtzIGFuZCB3aGF0IGl0IGRvZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2h1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9odWdldGxiLmM9MTM2MD1zdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcbi0tXG5tbS9odWdldGxiLmMtMTM2NC1cbm1tL2h1Z2V0bGIuYzoxMzY1Olx0Zm9saW8gPSBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8ob3JkZXIsIGdmcF9tYXNrLCBuaWQsIG5vZGVtYXNrKTtcbm1tL2h1Z2V0bGIuYy0xMzY2LVx0aWYgKGZvbGlvKVxuLS1cbm1tL2h1Z2V0bGJfY21hLmM9MjI9dm9pZCBodWdldGxiX2NtYV9mcmVlX2Zyb3plbl9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuLS1cbm1tL2h1Z2V0bGJfY21hLmMtMjctXG5tbS9odWdldGxiX2NtYS5jOjI4OnN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXG5tbS9odWdldGxiX2NtYS5jLTI5LVx0XHRpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzaylcbi0tXG5tbS9odWdldGxiX2NtYS5oPTY9dm9pZCBodWdldGxiX2NtYV9mcmVlX2Zyb3plbl9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcbm1tL2h1Z2V0bGJfY21hLmg6NzpzdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxubW0vaHVnZXRsYl9jbWEuaC04LVx0XHRcdFx0ICAgICAgaW50IG5pZCwgbm9kZW1hc2tfdCAqbm9kZW1hc2spO1xuLS1cbm1tL2h1Z2V0bGJfY21hLmg9MTY9c3RhdGljIGlubGluZSB2b2lkIGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0vaHVnZXRsYl9jbWEuaC0xOS1cbm1tL2h1Z2V0bGJfY21hLmg6MjA6c3RhdGljIGlubGluZSBzdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsXG5tbS9odWdldGxiX2NtYS5oLTIxLVx0XHRnZnBfdCBnZnBfbWFzayxcdGludCBuaWQsIG5vZGVtYXNrX3QgKm5vZGVtYXNrKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTI3OQoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipBbmFseXppbmcgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AgYW5kIGl0cyBDYWxsZXJzKioKCkFscmlnaHQsIHNvIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIGlzIGEgZ2xvYmFsIGZ1bmN0aW9uLCBhbmQgdGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCYjMzk7cyBhIGNyaXRpY2FsIHBvaW50IHRvIGludmVzdGlnYXRlLiBHaXZlbiB0aGF0IGl0JiMzOTtzIGdsb2JhbCwgdW5kZXJzdGFuZGluZyBpdHMgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIGlzIHBhcmFtb3VudC4gSSBzaG91bGQgZGVmaW5pdGVseSBmb2N1cyBteSBhbmFseXNpcyBvbiB0aGF0IGZ1bmN0aW9uLiBTaW5jZSBJIGhhdmUgYSBnbG9iYWwgZnVuY3Rpb24gSSBzaG91bGQgY2hlY2sgaXRzIGNhbGxlcnMuIEJhc2VkIG9uIHdoYXQgSSBzZWUgaGVyZSwgdGhlIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdCBhcmUgYG9ubHlfYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2Agb3IgdGhlIHZlcnkgc2ltaWxhciBzb3VuZGluZyBgYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2AuIExldCBtZSBzdGFydCBieSBsb29raW5nIGludG8gYGFsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW9gIGFuZCBzZWUgd2hhdCB0aGF0IGNhbiB0ZWxsIG1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2h1Z2V0bGIuYz0xNzkxPXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2J1ZGR5X2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxuLS1cbm1tL2h1Z2V0bGIuYy0xODM1LVxubW0vaHVnZXRsYi5jOjE4MzY6c3RhdGljIHN0cnVjdCBmb2xpbyAqb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXG5tbS9odWdldGxiLmMtMTgzNy1cdFx0Z2ZwX3QgZ2ZwX21hc2ssIGludCBuaWQsIG5vZGVtYXNrX3QgKm5tYXNrLFxuLS1cbm1tL2h1Z2V0bGIuYy0xODYyLSAqL1xubW0vaHVnZXRsYi5jOjE4NjM6c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxubW0vaHVnZXRsYi5jLTE4NjQtXHRcdGdmcF90IGdmcF9tYXNrLCBpbnQgbmlkLCBub2RlbWFza190ICpubWFzaylcbi0tXG5tbS9odWdldGxiLmMtMTg2Ny1cbm1tL2h1Z2V0bGIuYzoxODY4Olx0Zm9saW8gPSBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oaCwgZ2ZwX21hc2ssIG5pZCwgbm1hc2ssIE5VTEwpO1xubW0vaHVnZXRsYi5jLTE4NjktXHRpZiAoZm9saW8pXG4tLVxubW0vaHVnZXRsYi5jPTE4OTY9c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfcG9vbF9odWdlX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXG4tLVxubW0vaHVnZXRsYi5jLTE5MDYtXG5tbS9odWdldGxiLmM6MTkwNzpcdFx0Zm9saW8gPSBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oaCwgZ2ZwX21hc2ssIG5vZGUsXG5tbS9odWdldGxiLmMtMTkwOC1cdFx0XHRcdFx0bm9kZXNfYWxsb3dlZCwgbm9kZV9hbGxvY19ub3JldHJ5KTtcbi0tXG5tbS9odWdldGxiLmM9MjA3Nj1zdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19zdXJwbHVzX2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcbi0tXG5tbS9odWdldGxiLmMtMjA4OC1cbm1tL2h1Z2V0bGIuYzoyMDg5Olx0Zm9saW8gPSBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsIG5tYXNrKTtcbm1tL2h1Z2V0bGIuYy0yMDkwLVx0aWYgKCFmb2xpbylcbi0tXG5tbS9odWdldGxiLmM9MjEyND1zdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19taWdyYXRlX2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCwgZ2ZwX3QgZ2ZwX21hc2ssXG4tLVxubW0vaHVnZXRsYi5jLTIxMzEtXG5tbS9odWdldGxiLmM6MjEzMjpcdGZvbGlvID0gYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhoLCBnZnBfbWFzaywgbmlkLCBubWFzayk7XG5tbS9odWdldGxiLmMtMjEzMy1cdGlmICghZm9saW8pXG4tLVxubW0vaHVnZXRsYi5jPTI2NDE9c3RhdGljIGludCBhbGxvY19hbmRfZGlzc29sdmVfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgZm9saW8gKm9sZF9mb2xpbyxcbi0tXG5tbS9odWdldGxiLmMtMjY4Ni1cdFx0XHRnZnBfbWFzayA9IGh0bGJfYWxsb2NfbWFzayhoKSB8IF9fR0ZQX1RISVNOT0RFO1xubW0vaHVnZXRsYi5jOjI2ODc6XHRcdFx0bmV3X2ZvbGlvID0gYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhoLCBnZnBfbWFzayxcbm1tL2h1Z2V0bGIuYy0yNjg4LVx0XHRcdFx0XHRcdFx0ICAgICAgbmlkLCBOVUxMKTtcbi0tXG5tbS9odWdldGxiLmM9MzM3Mj1zdGF0aWMgdm9pZCBfX2luaXQgaHVnZXRsYl9oc3RhdGVfYWxsb2NfcGFnZXNfb25lbm9kZShzdHJ1Y3QgaHN0YXRlICpoLCBpbnQgbmlkKVxuLS1cbm1tL2h1Z2V0bGIuYy0zMzg1LVxubW0vaHVnZXRsYi5jOjMzODY6XHRcdFx0Zm9saW8gPSBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oaCwgZ2ZwX21hc2ssIG5pZCxcbm1tL2h1Z2V0bGIuYy0zMzg3LVx0XHRcdFx0XHRcdTAwMjZub2RlX3N0YXRlc1tOX01FTU9SWV0sIE5VTEwpO1xuLS1cbm1tL2h1Z2V0bGIuYy0zMzkxLVx0XHRcdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Zm9saW9fbGlzdCk7XG5tbS9odWdldGxiLmM6MzM5MjpcdFx0XHRcdGZvbGlvID0gb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsXG5tbS9odWdldGxiLmMtMzM5My1cdFx0XHRcdFx0XHRcdTAwMjZub2RlX3N0YXRlc1tOX01FTU9SWV0sIE5VTEwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjU1OQoJCQkJCQkJb3V0cHV0OiAxMjUKCQkJCQkJCXRob3VnaHRzOiA0NjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMgZm9yIEh1Z2VUTEIgQ01BIE1lbW9yeSBBbGxvY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCBwb3RlbnRpYWwgdGFyZ2V0cyBmb3IgZnV6emluZyB3aXRoaW4gdGhlIEh1Z2VUTEIgQ01BIG1lbW9yeSBhbGxvY2F0aW9uIGNvZGUuIEluaXRpYWxseSwgSSBjb25zaWRlcmVkIGBhbGxvY19wb29sX2h1Z2VfZm9saW9gLCBgYWxsb2Nfc3VycGx1c19odWdldGxiX2ZvbGlvYCwgYGFsbG9jX21pZ3JhdGVfaHVnZXRsYl9mb2xpb2AsIGFuZCBgYWxsb2NfYW5kX2Rpc3NvbHZlX2h1Z2V0bGJfZm9saW9gIGFzIHByb21pc2luZyBjYW5kaWRhdGVzLiBCdXQsIGFmdGVyIGEgY2xvc2VyIGxvb2ssIGl0JiMzOTtzIGNsZWFyIHRoYXQgdGhlIHBhdGNoIHNwZWNpZmljYWxseSBtb2RpZmllcyBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYC4gVGhhdCYjMzk7cyB0aGUga2V5IGZ1bmN0aW9uIHdlIG5lZWQgdG8gZm9jdXMgb24uIFNvLCB0aGF0JiMzOTtzIGRlZmluaXRlbHkgZ29pbmcgaW50byBgRm9jdXNTeW1ib2xzYC4KCk5vdywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJiMzOTt2ZSBnb3QgYENPTkZJR19IVUdFVExCRlNgLCBgQ09ORklHX0NNQWAsIGFuZCBgQ09ORklHX0NQVVNFVFNgIGluIG1pbmQuIExldCYjMzk7cyBqdXN0IGNvbmZpcm0gdGhhdCBgQ09ORklHX0hVR0VUTEJGU2AgYWN0dWFsbHkgZW5hYmxlcyB0aGUgcmVsZXZhbnQgYG1tL2h1Z2V0bGIuY2AgY29kZS4gT2theSwgdGhlIGBtbS9NYWtlZmlsZWAgY29uZmlybXMgaXQ6IGBvYmotJChDT05GSUdfSFVHRVRMQkZTKSAmIzQzOz0gaHVnZXRsYi5vIGh1Z2V0bGJfc3lzZnMubyBodWdldGxiX3N5c2N0bC5vYC4gQW5kLCBhcyBleHBlY3RlZCwgYG9iai0kKENPTkZJR19IVUdFVExCRlMpICYjNDM7PSBodWdldGxiX2NtYS5vYCBpcyBhbHNvIGluY2x1ZGVkIHdoZW4gYENPTkZJR19DTUFgIGlzIGRlZmluZWQuCgpTbywgdGhlIGtleSBjb25maWd1cmF0aW9ucyB3ZSBuZWVkIHRvIGNvbnNpZGVyIGFyZToKCiogICBgSFVHRVRMQkZTYAoqICAgYENNQWAKKiAgIGBDUFVTRVRTYAoKQW5kIHRoZSBrZXkgZm9jdXMgc3ltYm9sIGlzIGRlZmluaXRlbHk6CgoqICAgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AKCkFscmlnaHQsIGxldCYjMzk7cyBjb25zaWRlciB3aHkgd2UgYXJlIGZvY3VzZWQgb24gdGhpcyBmdW5jdGlvbjogdGhlIHBhdGNoIG1vZGlmaWVzIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIHRvIHJlc3BlY3QgY3B1c2V0IG1lbW9yeSBhbGxvd2VkIG5vZGVzIHdoZW4gYG5vZGVtYXNrYCBpcyBOVUxMLiBUaGlzIGlzIGEgY2xlYXIsIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgdGhlIEh1Z2VUTEIgQ01BIHBvcnRpb24uIEl0IHdpbGwgZGlyZWN0bHkgYWZmZWN0IG1lbW9yeSBhbGxvY2F0aW9uIGJlaGF2aW9yLiBUaGUgY29kZSBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSwgYW5kIHRoYXQgbWFrZXMgaXQgd29ydGggZnV6emluZy4KCkp1c3QgYSBxdWljayBzYW5pdHkgY2hlY2s6IGxldCYjMzk7cyB2ZXJpZnkgdGhhdCBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCBpc24mIzM5O3QgYSBzdGF0aWMgZnVuY3Rpb24uIEEgcXVpY2sgbG9vayBhdCBpdHMgZGVmaW5pdGlvbiBpbiBgbW0vaHVnZXRsYl9jbWEuY2A6CgpgYGBjCnN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssCgkJaW50IG5pZCwgbm9kZW1hc2tfdCAqbm9kZW1hc2spCmBgYAoKTm8sIGl0JiMzOTtzIG5vdCBzdGF0aWMuIEdvb2QuCgpJJiMzOTttIHJlYWR5IHRvIGBzZXQtcmVzdWx0c2Agbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SFVHRVRMQkZTJiMzNDssCiAgICAmIzM0O0NNQSYjMzQ7LAogICAgJiMzNDtDUFVTRVRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIHRvIHJlc3BlY3QgY3B1c2V0IG1lbW9yeSBhbGxvd2VkIG5vZGVzIHdoZW4gYG5vZGVtYXNrYCBpcyBOVUxMLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSAoSHVnZVRMQiBDTUEpIHRoYXQgYWZmZWN0cyBtZW1vcnkgYWxsb2NhdGlvbiBiZWhhdmlvci4gSXQgaXMgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtIVUdFVExCRlMmIzM0OywKICAgICYjMzQ7Q01BJiMzNDssCiAgICAmIzM0O0NQVVNFVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AgdG8gcmVzcGVjdCBjcHVzZXQgbWVtb3J5IGFsbG93ZWQgbm9kZXMgd2hlbiBgbm9kZW1hc2tgIGlzIE5VTEwuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIChIdWdlVExCIENNQSkgdGhhdCBhZmZlY3RzIG1lbW9yeSBhbGxvY2F0aW9uIGJlaGF2aW9yLiBJdCBpcyByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5vZGUgc2VsZWN0aW9uIGxvZ2ljIGluIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIHRvIHJlc3BlY3QgY3B1c2V0IG1lbW9yeSBwbGFjZW1lbnQgcnVsZXMuIEl0IGludHJvZHVjZXMgYSBsb2NhbCBgbm9kZW1hc2tfdCBsb2NhbF9ub2RlX21hc2tgIHdoaWNoIGlzIGZ1bGx5IGluaXRpYWxpemVkIGJ5IGFzc2lnbm1lbnQgZnJvbSBgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkYCB3aGVuIHRoZSBwcm92aWRlZCBgbm9kZW1hc2tgIGlzIE5VTEwuIFRoZSBgY3B1c2V0X21lbXNfY29va2llYCBpcyBhbHNvIHByb3Blcmx5IGluaXRpYWxpemVkIHZpYSBgcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKWAuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBleHBvc2VkIHRvIHVzZXIgc3BhY2UsIG5vIGNvbXBsZXggYWxsb2NhdGlvbnMgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcywgYW5kIG5vIGNvbnRyb2wgZmxvdyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBpbmNvcnJlY3Qgbm9kZSBzZWxlY3Rpb24sIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBvciBjb25jdXJyZW5jeSBpc3N1ZXMsIHdoaWNoIGFyZSB3ZWxsIGNvdmVyZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTNlZWJmYmRjYWU0ZDYwMTYzY2YwMjYzMTRhMWQ4ZmFmMzFjMDY5OApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDExIDAwOjQ2OjM3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vaHVnZXRsYl9jbWEuYyBiL21tL2h1Z2V0bGJfY21hLmMKaW5kZXggMzkzNDRkNmM3OGQ4NC4uOWRlYmYwMzNkNGZkNyAxMDA2NDQKLS0tIGEvbW0vaHVnZXRsYl9jbWEuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9odWdldGxiX2NtYS5jCkBAIC0zLDYgJiM0MzszLDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9tbS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2NtYS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2NvbXBpbGVyLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2NwdXNldC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21tX2lubGluZS5oJmd0OwogCiAjaW5jbHVkZSAmbHQ7YXNtL3BhZ2UuaCZndDsKQEAgLTMwLDE1ICYjNDM7MzEsMjcgQEAgc3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzaywKIAlpbnQgbm9kZTsKIAlzdHJ1Y3QgZm9saW8gKmZvbGlvOwogCXN0cnVjdCBwYWdlICpwYWdlID0gTlVMTDsKJiM0MzsJY29uc3Qgbm9kZW1hc2tfdCAqbm1hc2s7CiYjNDM7CW5vZGVtYXNrX3QgbG9jYWxfbm9kZV9tYXNrOwomIzQzOwl1bnNpZ25lZCBpbnQgY3B1c2V0X21lbXNfY29va2llOwogCiAJaWYgKCFodWdldGxiX2NtYV9zaXplKQogCQlyZXR1cm4gTlVMTDsKIAotCWlmIChodWdldGxiX2NtYVtuaWRdKQomIzQzO3JldHJ5X2NwdXNldDoKJiM0MzsJaWYgKCFub2RlbWFzaykgewomIzQzOwkJY3B1c2V0X21lbXNfY29va2llID0gcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKTsKJiM0MzsJCWxvY2FsX25vZGVfbWFzayA9IGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZDsKJiM0MzsJCW5tYXNrID0gJmFtcDtsb2NhbF9ub2RlX21hc2s7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlubWFzayA9IG5vZGVtYXNrOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChodWdldGxiX2NtYVtuaWRdICZhbXA7JmFtcDsgbm9kZV9pc3NldChuaWQsICpubWFzaykpCiAJCXBhZ2UgPSBjbWFfYWxsb2NfZnJvemVuX2NvbXBvdW5kKGh1Z2V0bGJfY21hW25pZF0sIG9yZGVyKTsKIAogCWlmICghcGFnZSAmYW1wOyZhbXA7ICEoZ2ZwX21hc2sgJmFtcDsgX19HRlBfVEhJU05PREUpKSB7Ci0JCWZvcl9lYWNoX25vZGVfbWFzayhub2RlLCAqbm9kZW1hc2spIHsKJiM0MzsJCWZvcl9lYWNoX25vZGVfbWFzayhub2RlLCAqbm1hc2spIHsKIAkJCWlmIChub2RlID09IG5pZCB8fCAhaHVnZXRsYl9jbWFbbm9kZV0pCiAJCQkJY29udGludWU7CiAKQEAgLTQ4LDggJiM0Mzs2MSwxMiBAQCBzdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLAogCQl9CiAJfQogCi0JaWYgKCFwYWdlKQomIzQzOwlpZiAoIXBhZ2UpIHsKJiM0MzsJCWlmICghbm9kZW1hc2sgJmFtcDsmYW1wOwomIzQzOwkJICAgIHVubGlrZWx5KHJlYWRfbWVtc19hbGxvd2VkX3JldHJ5KGNwdXNldF9tZW1zX2Nvb2tpZSkpKQomIzQzOwkJCWdvdG8gcmV0cnlfY3B1c2V0OwogCQlyZXR1cm4gTlVMTDsKJiM0MzsJfQogCiAJZm9saW8gPSBwYWdlX2ZvbGlvKHBhZ2UpOwogCWZvbGlvX3NldF9odWdldGxiX2NtYShmb2xpbyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDYxCgkJCQkJCQlvdXRwdXQ6IDIwOAoJCQkJCQkJdGhvdWdodHM6IDgxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgVW5pbml0aWFsaXplZCBNZW1vcnkgVXNhZ2UgaW4gVGhpcyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIGluIGBtbS9odWdldGxiX2NtYS5jYCwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGNwdXNldC1hd2FyZSBub2RlIHNlbGVjdGlvbi4gTXkgZmlyc3QgdGhvdWdodCBpczogYXJlIHRoZXJlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgdnVsbmVyYWJpbGl0aWVzIGJlaW5nIGludHJvZHVjZWQgaGVyZT8gVGhlIHBhdGNoIGludHJvZHVjZXMgYG5vZGVtYXNrX3QgbG9jYWxfbm9kZV9tYXNrYCBhbmQgYHVuc2lnbmVkIGludCBjcHVzZXRfbWVtc19jb29raWVgLCBzbyB0aGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBmb2N1cy4KCkkgc2VlIGBsb2NhbF9ub2RlX21hc2tgIGlzIGluaXRpYWxpemVkIHdpdGggYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAsIHdoaWNoIGlzIGdvb2QuIEJ1dCBpcyBpdCAqZnVsbHkqIGluaXRpYWxpemVkPyAgYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAgaXMgYSBwZXItdGFzayBvciBnbG9iYWwgdmFyaWFibGUsIHNvIGxldCYjMzk7cyBtYWtlIHN1cmUgbm90aGluZyB3ZWlyZCBpcyBnb2luZyBvbiBpbiBob3cgaXQmIzM5O3MgdXNlZC4gU2luY2UgYGxvY2FsX25vZGVfbWFza2AgaXMgYSBgbm9kZW1hc2tfdGAsIHdoaWNoIGlzIGRlZmluZWQgYXMgZXNzZW50aWFsbHkgYW4gYXJyYXkgb2YgdW5zaWduZWQgbG9uZ3MgKERFQ0xBUkVfQklUTUFQKSwgdGhlIGFzc2lnbm1lbnQgYGxvY2FsX25vZGVfbWFzayA9IGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZDtgIGlzIGEgc3RyYWlnaHRmb3J3YXJkIHN0cnVjdCBjb3B5LiAgSSBrbm93IGBub2RlbWFza190YCBpcyBhIGJpdG1hcCwgYW5kIHRoZSB3aG9sZSBzdHJ1Y3Qgd2lsbCBiZSBjb3BpZWQsIHRoZXJlJiMzOTtzIG5vIHJpc2sgb2YgcGFkZGluZyBvciB1bmluaXRpYWxpemVkIGJpdHMgY3JlZXBpbmcgaW4uCgpJIHdhcyBhIGJpdCBjb25jZXJuZWQgaWYgYG5vZGVtYXNrYCB3YXMgTlVMTC4gQnV0IGVpdGhlciB3YXksIGBubWFza2Agd2lsbCBiZSBpbml0aWFsaXplZC4gU28gSSYjMzk7bSBjb25maWRlbnQgYGxvY2FsX25vZGVfbWFza2AgaXMgaW5kZWVkIGZ1bGx5IGluaXRpYWxpemVkLgoKVGhlbiBJIGxvb2sgYXQgdGhlIHVzYWdlIG9mIGBjcHVzZXRfbWVtc19jb29raWVgLCBpbml0aWFsaXplZCB2aWEgYHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKClgLCBhbmQgdXNlZCBpbiBgcmVhZF9tZW1zX2FsbG93ZWRfcmV0cnkoKWAuIFRoYXQmIzM5O3Mgc3RhbmRhcmQgY3B1c2V0IGFjY2VzcywgYW5kIGl0IGxvb2tzIHNvdW5kLgoKVGhlcmUgZG9lc24mIzM5O3QgYXBwZWFyIHRvIGJlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgZXhwb3NlZCB0byB1c2Vyc3BhY2UsIGFuZCBubyBjb250cm9sIGZsb3cgZGVwZW5kcyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhpcyBpcyBnb29kLiBUaGUgcGF0Y2ggY2hhbmdlcyBob3cgbm9kZSBzZWxlY3Rpb24gd29ya3Mgd2l0aCBjcHVzZXRzLCBidXQgdGhlIHJlbGV2YW50IGRhdGEgc3RydWN0dXJlcyAoYGxvY2FsX25vZGVfbWFza2AgYW5kIGBjcHVzZXRfbWVtc19jb29raWVgKSBhcmUgY29ycmVjdGx5IGFuZCBjb21wbGV0ZWx5IGluaXRpYWxpemVkIGJlZm9yZSB1c2UuCgpUaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgdGhhdCB0aGUgcHJpbWFyeSByaXNrcyB3b3VsZCBiZSByZWxhdGVkIHRvIGluY29ycmVjdCBub2RlIHNlbGVjdGlvbiAocG90ZW50aWFsbHkgbGVhZGluZyB0byBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucyBvciBmYWlsdXJlcyksIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlmIHRoZXJlJiMzOTtzIGEgYnVnIGluIGhvdyB0aGUgbm9kZW1hc2sgaXMgdXNlZCBpbiBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCwgb3IgY29uY3VycmVuY3kgaXNzdWVzLiBUaGVzZSBhcmUgYWxyZWFkeSB3ZWxsLWNvdmVyZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMsIHdoaWNoIHNob3VsZCBmbGFnIGFueSBwcm9ibGVtcy4gVGhlcmVmb3JlLCBJIGRvbiYjMzk7dCBzZWUgYW55IG5lZWQgZm9yIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBmb3IgdGhpcyBwYXJ0aWN1bGFyIHBhdGNoIHRvIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgYnVncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5vZGUgc2VsZWN0aW9uIGxvZ2ljIGluIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIHRvIHJlc3BlY3QgY3B1c2V0IG1lbW9yeSBwbGFjZW1lbnQgcnVsZXMuIEl0IGludHJvZHVjZXMgYSBsb2NhbCBgbm9kZW1hc2tfdCBsb2NhbF9ub2RlX21hc2tgIHdoaWNoIGlzIGZ1bGx5IGluaXRpYWxpemVkIGJ5IGFzc2lnbm1lbnQgZnJvbSBgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkYCB3aGVuIHRoZSBwcm92aWRlZCBgbm9kZW1hc2tgIGlzIE5VTEwuIFRoZSBgY3B1c2V0X21lbXNfY29va2llYCBpcyBhbHNvIHByb3Blcmx5IGluaXRpYWxpemVkIHZpYSBgcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKWAuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBleHBvc2VkIHRvIHVzZXIgc3BhY2UsIG5vIGNvbXBsZXggYWxsb2NhdGlvbnMgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcywgYW5kIG5vIGNvbnRyb2wgZmxvdyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBpbmNvcnJlY3Qgbm9kZSBzZWxlY3Rpb24sIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBvciBjb25jdXJyZW5jeSBpc3N1ZXMsIHdoaWNoIGFyZSB3ZWxsIGNvdmVyZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBub2RlIHNlbGVjdGlvbiBsb2dpYyBpbiBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCB0byByZXNwZWN0IGNwdXNldCBtZW1vcnkgcGxhY2VtZW50IHJ1bGVzLiBJdCBpbnRyb2R1Y2VzIGEgbG9jYWwgYG5vZGVtYXNrX3QgbG9jYWxfbm9kZV9tYXNrYCB3aGljaCBpcyBmdWxseSBpbml0aWFsaXplZCBieSBhc3NpZ25tZW50IGZyb20gYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAgd2hlbiB0aGUgcHJvdmlkZWQgYG5vZGVtYXNrYCBpcyBOVUxMLiBUaGUgYGNwdXNldF9tZW1zX2Nvb2tpZWAgaXMgYWxzbyBwcm9wZXJseSBpbml0aWFsaXplZCB2aWEgYHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKClgLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLCBubyBjb21wbGV4IGFsbG9jYXRpb25zIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMsIGFuZCBubyBjb250cm9sIGZsb3cgZGVwZW5kaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIHdvdWxkIGJlIHJlbGF0ZWQgdG8gaW5jb3JyZWN0IG5vZGUgc2VsZWN0aW9uLCBvdXQtb2YtYm91bmRzIGFjY2Vzcywgb3IgY29uY3VycmVuY3kgaXNzdWVzLCB3aGljaCBhcmUgd2VsbCBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ2OjM3Ljk1MTU4MTU0N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjE0MTU3MTg5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIVUdFVExCRlNcIixcbiAgICBcIkNNQVwiLFxuICAgIFwiQ1BVU0VUU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5vZGUgc2VsZWN0aW9uIGxvZ2ljIGluIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIHRvIHJlc3BlY3QgY3B1c2V0IG1lbW9yeSBwbGFjZW1lbnQgcnVsZXMuIEl0IGludHJvZHVjZXMgYSBsb2NhbCBgbm9kZW1hc2tfdCBsb2NhbF9ub2RlX21hc2tgIHdoaWNoIGlzIGZ1bGx5IGluaXRpYWxpemVkIGJ5IGFzc2lnbm1lbnQgZnJvbSBgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkYCB3aGVuIHRoZSBwcm92aWRlZCBgbm9kZW1hc2tgIGlzIE5VTEwuIFRoZSBgY3B1c2V0X21lbXNfY29va2llYCBpcyBhbHNvIHByb3Blcmx5IGluaXRpYWxpemVkIHZpYSBgcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKWAuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBleHBvc2VkIHRvIHVzZXIgc3BhY2UsIG5vIGNvbXBsZXggYWxsb2NhdGlvbnMgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcywgYW5kIG5vIGNvbnRyb2wgZmxvdyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBpbmNvcnJlY3Qgbm9kZSBzZWxlY3Rpb24sIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBvciBjb25jdXJyZW5jeSBpc3N1ZXMsIHdoaWNoIGFyZSB3ZWxsIGNvdmVyZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCB0byByZXNwZWN0IGNwdXNldCBtZW1vcnkgYWxsb3dlZCBub2RlcyB3aGVuIGBub2RlbWFza2AgaXMgTlVMTC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0gKEh1Z2VUTEIgQ01BKSB0aGF0IGFmZmVjdHMgbWVtb3J5IGFsbG9jYXRpb24gYmVoYXZpb3IuIEl0IGlzIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDY6MzcuOTUxNTg3MDQ3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODQxNDcyNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5M2VlYmZiZGNhZTRkNjAxNjNjZjAyNjMxNGExZDhmYWYzMWMwNjk4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDExIDAwOjQ2OjM3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21tL2h1Z2V0bGJfY21hLmMgYi9tbS9odWdldGxiX2NtYS5jXFxuaW5kZXggMzkzNDRkNmM3OGQ4NC4uOWRlYmYwMzNkNGZkNyAxMDA2NDRcXG4tLS0gYS9tbS9odWdldGxiX2NtYS5jXFxuKysrIGIvbW0vaHVnZXRsYl9jbWEuY1xcbkBAIC0zLDYgKzMsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbW0uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NtYS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvY29tcGlsZXIuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NwdXNldC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbW1faW5saW5lLmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL3BhZ2UuaFxcdTAwM2VcXG5AQCAtMzAsMTUgKzMxLDI3IEBAIHN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXFxuIFxcdGludCBub2RlO1xcbiBcXHRzdHJ1Y3QgZm9saW8gKmZvbGlvO1xcbiBcXHRzdHJ1Y3QgcGFnZSAqcGFnZSA9IE5VTEw7XFxuK1xcdGNvbnN0IG5vZGVtYXNrX3QgKm5tYXNrO1xcbitcXHRub2RlbWFza190IGxvY2FsX25vZGVfbWFzaztcXG4rXFx0dW5zaWduZWQgaW50IGNwdXNldF9tZW1zX2Nvb2tpZTtcXG4gXFxuIFxcdGlmICghaHVnZXRsYl9jbWFfc2l6ZSlcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbi1cXHRpZiAoaHVnZXRsYl9jbWFbbmlkXSlcXG4rcmV0cnlfY3B1c2V0OlxcbitcXHRpZiAoIW5vZGVtYXNrKSB7XFxuK1xcdFxcdGNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7XFxuK1xcdFxcdGxvY2FsX25vZGVfbWFzayA9IGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZDtcXG4rXFx0XFx0bm1hc2sgPSBcXHUwMDI2bG9jYWxfbm9kZV9tYXNrO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRubWFzayA9IG5vZGVtYXNrO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoaHVnZXRsYl9jbWFbbmlkXSBcXHUwMDI2XFx1MDAyNiBub2RlX2lzc2V0KG5pZCwgKm5tYXNrKSlcXG4gXFx0XFx0cGFnZSA9IGNtYV9hbGxvY19mcm96ZW5fY29tcG91bmQoaHVnZXRsYl9jbWFbbmlkXSwgb3JkZXIpO1xcbiBcXG4gXFx0aWYgKCFwYWdlIFxcdTAwMjZcXHUwMDI2ICEoZ2ZwX21hc2sgXFx1MDAyNiBfX0dGUF9USElTTk9ERSkpIHtcXG4tXFx0XFx0Zm9yX2VhY2hfbm9kZV9tYXNrKG5vZGUsICpub2RlbWFzaykge1xcbitcXHRcXHRmb3JfZWFjaF9ub2RlX21hc2sobm9kZSwgKm5tYXNrKSB7XFxuIFxcdFxcdFxcdGlmIChub2RlID09IG5pZCB8fCAhaHVnZXRsYl9jbWFbbm9kZV0pXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG5AQCAtNDgsOCArNjEsMTIgQEAgc3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbi1cXHRpZiAoIXBhZ2UpXFxuK1xcdGlmICghcGFnZSkge1xcbitcXHRcXHRpZiAoIW5vZGVtYXNrIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICB1bmxpa2VseShyZWFkX21lbXNfYWxsb3dlZF9yZXRyeShjcHVzZXRfbWVtc19jb29raWUpKSlcXG4rXFx0XFx0XFx0Z290byByZXRyeV9jcHVzZXQ7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHRmb2xpbyA9IHBhZ2VfZm9saW8ocGFnZSk7XFxuIFxcdGZvbGlvX3NldF9odWdldGxiX2NtYShmb2xpbyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ2OjM4LjQzNjM1MzczMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEwMDUxOTA0MjczOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIVUdFVExCRlNcIixcbiAgICBcIkNNQVwiLFxuICAgIFwiQ1BVU0VUU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIHRvIHJlc3BlY3QgY3B1c2V0IG1lbW9yeSBhbGxvd2VkIG5vZGVzIHdoZW4gYG5vZGVtYXNrYCBpcyBOVUxMLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSAoSHVnZVRMQiBDTUEpIHRoYXQgYWZmZWN0cyBtZW1vcnkgYWxsb2NhdGlvbiBiZWhhdmlvci4gSXQgaXMgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5M2VlYmZiZGNhZTRkNjAxNjNjZjAyNjMxNGExZDhmYWYzMWMwNjk4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTEgMDA6NDY6MzcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9odWdldGxiX2NtYS5jIGIvbW0vaHVnZXRsYl9jbWEuY1xuaW5kZXggMzkzNDRkNmM3OGQ4NC4uOWRlYmYwMzNkNGZkNyAxMDA2NDRcbi0tLSBhL21tL2h1Z2V0bGJfY21hLmNcbisrKyBiL21tL2h1Z2V0bGJfY21hLmNcbkBAIC0zLDYgKzMsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21tLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jbWEuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBpbGVyLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9jcHVzZXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21tX2lubGluZS5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXHUwMDNjYXNtL3BhZ2UuaFx1MDAzZVxuQEAgLTMwLDE1ICszMSwyNyBAQCBzdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxuIFx0aW50IG5vZGU7XG4gXHRzdHJ1Y3QgZm9saW8gKmZvbGlvO1xuIFx0c3RydWN0IHBhZ2UgKnBhZ2UgPSBOVUxMO1xuK1x0Y29uc3Qgbm9kZW1hc2tfdCAqbm1hc2s7XG4rXHRub2RlbWFza190IGxvY2FsX25vZGVfbWFzaztcbitcdHVuc2lnbmVkIGludCBjcHVzZXRfbWVtc19jb29raWU7XG4gXG4gXHRpZiAoIWh1Z2V0bGJfY21hX3NpemUpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuLVx0aWYgKGh1Z2V0bGJfY21hW25pZF0pXG4rcmV0cnlfY3B1c2V0OlxuK1x0aWYgKCFub2RlbWFzaykge1xuK1x0XHRjcHVzZXRfbWVtc19jb29raWUgPSByZWFkX21lbXNfYWxsb3dlZF9iZWdpbigpO1xuK1x0XHRsb2NhbF9ub2RlX21hc2sgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XG4rXHRcdG5tYXNrID0gXHUwMDI2bG9jYWxfbm9kZV9tYXNrO1xuK1x0fSBlbHNlIHtcbitcdFx0bm1hc2sgPSBub2RlbWFzaztcbitcdH1cbitcbitcdGlmIChodWdldGxiX2NtYVtuaWRdIFx1MDAyNlx1MDAyNiBub2RlX2lzc2V0KG5pZCwgKm5tYXNrKSlcbiBcdFx0cGFnZSA9IGNtYV9hbGxvY19mcm96ZW5fY29tcG91bmQoaHVnZXRsYl9jbWFbbmlkXSwgb3JkZXIpO1xuIFxuIFx0aWYgKCFwYWdlIFx1MDAyNlx1MDAyNiAhKGdmcF9tYXNrIFx1MDAyNiBfX0dGUF9USElTTk9ERSkpIHtcbi1cdFx0Zm9yX2VhY2hfbm9kZV9tYXNrKG5vZGUsICpub2RlbWFzaykge1xuK1x0XHRmb3JfZWFjaF9ub2RlX21hc2sobm9kZSwgKm5tYXNrKSB7XG4gXHRcdFx0aWYgKG5vZGUgPT0gbmlkIHx8ICFodWdldGxiX2NtYVtub2RlXSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuQEAgLTQ4LDggKzYxLDEyIEBAIHN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXG4gXHRcdH1cbiBcdH1cbiBcbi1cdGlmICghcGFnZSlcbitcdGlmICghcGFnZSkge1xuK1x0XHRpZiAoIW5vZGVtYXNrIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgdW5saWtlbHkocmVhZF9tZW1zX2FsbG93ZWRfcmV0cnkoY3B1c2V0X21lbXNfY29va2llKSkpXG4rXHRcdFx0Z290byByZXRyeV9jcHVzZXQ7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0Zm9saW8gPSBwYWdlX2ZvbGlvKHBhZ2UpO1xuIFx0Zm9saW9fc2V0X2h1Z2V0bGJfY21hKGZvbGlvKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ2OjM4LjQzNjM1NDc5MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MjYxMDg3NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgSHVnZVRMQiBDTUEgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIHR3ZWFraW5nIGBtbS9odWdldGxiX2NtYS5jYC4gU3BlY2lmaWNhbGx5LCBpdCdzIG1vZGlmeWluZyB0aGUgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AgZnVuY3Rpb24uIEkgc2VlIGl0J3MgYWRkaW5nIHRoZXNlIGNwdXNldCBtZW1vcnkgYWxsb3dlZCBjaGVja3MsIGJ1dCBvbmx5IHdoZW4gYG5vZGVtYXNrYCBpcyBOVUxMLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIEh1Z2VUTEIgQ01BIHN1YnN5c3RlbS4gVGhhdCdzIG1lbW9yeSBtYW5hZ2VtZW50LCBzbyBhbnkgY2hhbmdlIHRoZXJlIG5lZWRzIGNhcmVmdWwgc2NydXRpbnkuIEknbSBnb2luZyB0byB3YW50IHRvIHVuZGVyc3RhbmQgdGhlICp3aHkqIGJlaGluZCB0aGlzIGNvbmRpdGlvbmFsIGNoZWNrLlxuXG5NeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byB0aG9yb3VnaGx5IHJldmlldyB0aGUgdXNhZ2VzIG9mIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gLiBJIHdhbnQgdG8gc2VlIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkIGZyb20sIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgaW4gd2hpY2ggaXQncyBiZWluZyB1c2VkLCBhbmQgd2hhdCBzY2VuYXJpb3MgdHJpZ2dlciB0aGUgTlVMTCBgbm9kZW1hc2tgLiBLbm93aW5nIHRoZSBjYWxsZXJzIHdpbGwgY2xhcmlmeSB0aGUgcG9zc2libGUgaW1wYWN0IG9mIHRoaXMgY3B1c2V0IGNoZWNrLiBJJ2xsIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhhdCBhbGwgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGluIGBtbS9odWdldGxiX2NtYS5jYCBoYXZlbid0IGJlZW4gYWZmZWN0ZWQgb3IgbWFkZSByZWR1bmRhbnQgYXMgYSByZXN1bHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NjQsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMDo0Njo0Mi4wNjI0NjYxMjVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2MTgzMjkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZXRsYi5jPTEzNjA9c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfZ2lnYW50aWNfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXFxuLS1cXG5tbS9odWdldGxiLmMtMTM2NC1cXG5tbS9odWdldGxiLmM6MTM2NTpcXHRmb2xpbyA9IGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhvcmRlciwgZ2ZwX21hc2ssIG5pZCwgbm9kZW1hc2spO1xcbm1tL2h1Z2V0bGIuYy0xMzY2LVxcdGlmIChmb2xpbylcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmM9MjI9dm9pZCBodWdldGxiX2NtYV9mcmVlX2Zyb3plbl9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxubW0vaHVnZXRsYl9jbWEuYy0yNy1cXG5tbS9odWdldGxiX2NtYS5jOjI4OnN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXFxubW0vaHVnZXRsYl9jbWEuYy0yOS1cXHRcXHRpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzaylcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmg9Nj12b2lkIGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbm1tL2h1Z2V0bGJfY21hLmg6NzpzdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxcbm1tL2h1Z2V0bGJfY21hLmgtOC1cXHRcXHRcXHRcXHQgICAgICBpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzayk7XFxuLS1cXG5tbS9odWdldGxiX2NtYS5oPTE2PXN0YXRpYyBpbmxpbmUgdm9pZCBodWdldGxiX2NtYV9mcmVlX2Zyb3plbl9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxubW0vaHVnZXRsYl9jbWEuaC0xOS1cXG5tbS9odWdldGxiX2NtYS5oOjIwOnN0YXRpYyBpbmxpbmUgc3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLFxcbm1tL2h1Z2V0bGJfY21hLmgtMjEtXFx0XFx0Z2ZwX3QgZ2ZwX21hc2ssXFx0aW50IG5pZCwgbm9kZW1hc2tfdCAqbm9kZW1hc2spXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ2OjQ0LjEyNDMwMzczNVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2Mzc0NjkyNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBBbGxvY2F0aW9uIFBhdGgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIGZ1bmN0aW9uLiBUaGUgY2FsbCBzdGFjayB0ZWxscyBtZSBpdCBvcmlnaW5hdGVzIGZyb20gYGFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpb2Agd2l0aGluIGBtbS9odWdldGxiLmNgLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50IEkgbmVlZCB0byBmb2N1cyBvbi4gTXkgbmV4dCB0aG91Z2h0IGlzLCBJIG5lZWQgdG8ga25vdyB1bmRlciB3aGF0IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgYG1tL2h1Z2V0bGJfY21hLmNgIGlzIGV2ZW4gZW5hYmxlZC4gVGhhdCB3aWxsIGdpdmUgbWUgY29udGV4dCBvbiB0aGUgc2NlbmFyaW9zIHdoZXJlIEknZCBlbmNvdW50ZXIgdGhpcyBwYXRoIGFuZCBoZWxwcyBtZSB1bmRlcnN0YW5kIHRoZSBzeXN0ZW0gZGVzaWduIGdvYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzMxLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDY6NDYuNzYxNzc1MDk3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNjA4NTg1NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaHVnZXRsYl9jbWFcXFxcLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vTWFrZWZpbGU9ODI9aWZkZWYgQ09ORklHX0NNQVxcbm1tL01ha2VmaWxlOjgzOm9iai0kKENPTkZJR19IVUdFVExCRlMpXFx0Kz0gaHVnZXRsYl9jbWEub1xcbm1tL01ha2VmaWxlLTg0LWVuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ2OjQ5LjAyMjYzODYyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI4OTkzODEyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIE1lbW9yeSBNYW5hZ2VtZW50KipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCBJIG5lZWQgdG8gZ2V0IHRoaXMgbWVtb3J5IG1hbmFnZW1lbnQgc3lzdGVtIHNldCB1cCBjb3JyZWN0bHkuIFJpZ2h0LCBzbyBJIG5lZWQgYm90aCBgQ09ORklHX0NNQWAgYW5kIGBDT05GSUdfSFVHRVRMQkZTYCBlbmFibGVkLCB0aGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBIb2xkIG9uIGEgc2Vjb25kIHRob3VnaCwgYENPTkZJR19DTUFgIGlzIGFuIGlmZGVmLCBtZWFuaW5nIGl0J3MgY29uZGl0aW9uYWwsIGFuZCBgQ09ORklHX0hVR0VUTEJGU2AgaXMgYWN0dWFsbHkgdGhlIG9iamVjdCBJJ20gYWltaW5nIGZvci4gTm93IHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBpcyBpdCBgQ09ORklHX0hVR0VUTEJfUEFHRWAgb3IgYENPTkZJR19IVUdFVExCRlNgPyBJJ20gZ2V0dGluZyBhIGxpdHRsZSB0dXJuZWQgYXJvdW5kLCBiZXR0ZXIgdG8gdmVyaWZ5LiBMZXQgbWUganVzdCB0YWtlIGEgcXVpY2sgcGVlayBhdCB0aGUgYG1tL01ha2VmaWxlYCB0byBtYWtlIHN1cmUgSSBnZXQgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb25zIGVuYWJsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MDAsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMDo0Njo1Mi4zMTI1NzkwMTRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMzMTYxODgwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvYmotXFxcXCRcXFxcKENPTkZJR19IVUdFVExCRlNcXFxcKVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9NYWtlZmlsZT03Mj1vYmoteVxcdFxcdFxcdFxcdCs9IHJhbWZzL1xcbmZzL01ha2VmaWxlOjczOm9iai0kKENPTkZJR19IVUdFVExCRlMpXFx0XFx0Kz0gaHVnZXRsYmZzL1xcbmZzL01ha2VmaWxlLTc0LW9iai0kKENPTkZJR19DT0RBX0ZTKVxcdFxcdCs9IGNvZGEvXFxuLS1cXG5mcy9odWdldGxiZnMvTWFrZWZpbGUtNS1cXG5mcy9odWdldGxiZnMvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfSFVHRVRMQkZTKSArPSBodWdldGxiZnMub1xcbmZzL2h1Z2V0bGJmcy9NYWtlZmlsZS03LVxcbi0tXFxubW0vTWFrZWZpbGU9ODA9b2JqLSQoQ09ORklHX0hBU19ETUEpXFx0Kz0gZG1hcG9vbC5vXFxubW0vTWFrZWZpbGU6ODE6b2JqLSQoQ09ORklHX0hVR0VUTEJGUylcXHQrPSBodWdldGxiLm8gaHVnZXRsYl9zeXNmcy5vIGh1Z2V0bGJfc3lzY3RsLm9cXG5tbS9NYWtlZmlsZS04Mi1pZmRlZiBDT05GSUdfQ01BXFxubW0vTWFrZWZpbGU6ODM6b2JqLSQoQ09ORklHX0hVR0VUTEJGUylcXHQrPSBodWdldGxiX2NtYS5vXFxubW0vTWFrZWZpbGUtODQtZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDY6NTQuNjQ0MjA2NTI1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc3NDk4MjkyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgTGFyZ2UgTWVtb3J5IEFsbG9jYXRpb25zKipcblxuUmlnaHQsIGxldCdzIHNlZS4uLiB0aGUgc3lzdGVtIHNlZW1zIHRvIGJlIGNvbmZpZ3VyZWQgZm9yIEh1Z2VUTEJGUyBhbmQgQ29udGlndW91cyBNZW1vcnkgQWxsb2NhdGlvbiAoQ01BKS4gRXhjZWxsZW50LiBHaXZlbiB0aGF0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHBvdGVudGlhbCB1c2VzIG9mIGBhbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW9gLiBUaGF0IGZ1bmN0aW9uIGlzIGNyaXRpY2FsIGluIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgdGhlc2UgdmVyeSBsYXJnZSBtZW1vcnkgcmVxdWVzdHMuIEkgd2FudCB0byBzZWUgaG93IGFuZCB3aGVyZSBpdCdzIGJlaW5nIGVtcGxveWVkIGluIHRoaXMgc3BlY2lmaWMgY29udGV4dCwgaG93IHdlbGwgaXQncyB3b3JraW5nLCBhbmQgbG9vayBvdXQgZm9yIGFueXRoaW5nIHVudXN1YWwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvciB0aG9yb3VnaGx5IHRvIGlkZW50aWZ5IHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBvciBtZW1vcnkgZnJhZ21lbnRhdGlvbiBpc3N1ZXMsIGVzcGVjaWFsbHkgaW4gcmVsYXRpb24gdG8gdGhlIGludGVycGxheSBiZXR3ZWVuIEh1Z2VUTEJGUyBhbmQgQ01BLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIG9mIG15IGN1cnJlbnQgZm9jdXMgbGllcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEzMCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ2OjU3LjQxOTE5MTM4M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgyNjUxMDUzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZXRsYi5jPTEzMjA9c3RhdGljIHN0cnVjdCBmb2xpbyAqZGVxdWV1ZV9odWdldGxiX2ZvbGlvX3ZtYShzdHJ1Y3QgaHN0YXRlICpoLFxcbi0tXFxubW0vaHVnZXRsYi5jLTEzNTktI2lmIGRlZmluZWQoQ09ORklHX0FSQ0hfSEFTX0dJR0FOVElDX1BBR0UpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0NPTlRJR19BTExPQylcXG5tbS9odWdldGxiLmM6MTM2MDpzdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcXG5tbS9odWdldGxiLmMtMTM2MS1cXHRcXHRpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzaylcXG4tLVxcbm1tL2h1Z2V0bGIuYy0xMzc2LSNlbHNlIC8qICFDT05GSUdfQVJDSF9IQVNfR0lHQU5USUNfUEFHRSB8fCAhQ09ORklHX0NPTlRJR19BTExPQyAqL1xcbm1tL2h1Z2V0bGIuYzoxMzc3OnN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLCBpbnQgbmlkLFxcbm1tL2h1Z2V0bGIuYy0xMzc4LVxcdFxcdFxcdFxcdFxcdCAgbm9kZW1hc2tfdCAqbm9kZW1hc2spXFxuLS1cXG5tbS9odWdldGxiLmM9MTgzNj1zdGF0aWMgc3RydWN0IGZvbGlvICpvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcXG4tLVxcbm1tL2h1Z2V0bGIuYy0xODQ2LVxcdGlmIChvcmRlcl9pc19naWdhbnRpYyhvcmRlcikpXFxubW0vaHVnZXRsYi5jOjE4NDc6XFx0XFx0Zm9saW8gPSBhbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW8ob3JkZXIsIGdmcF9tYXNrLCBuaWQsIG5tYXNrKTtcXG5tbS9odWdldGxiLmMtMTg0OC1cXHRlbHNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ2OjU5LjI0NTcwNzY3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDIxMzYzMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkRpdmluZyBpbnRvIEh1Z2VUTEIgQWxsb2NhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW9gLi4uIFJpZ2h0LCBpdCBzZWVtcyBsaWtlIHRoYXQgZnVuY3Rpb24gdWx0aW1hdGVseSBjYWxscyBgYWxsb2NfZ2lnYW50aWNfZnJvemVuX2ZvbGlvYC4gVGhhdCBtYWtlcyBzZW5zZTsgd2UncmUgZGVhbGluZyB3aXRoIEh1Z2VUTEIgcGFnZXMsIHNvIHdlJ3JlIHRhbGtpbmcgYWJvdXQgZ2lnYW50aWMsIHByZS1mcm96ZW4gZm9saW9zIGhlcmUuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgXCJXaHkgdGhlIGV4dHJhIGxheWVyP1wiIFdoYXQncyB0aGUgc3BlY2lmaWMgcm9sZSBvZiBgb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvYCBpbiB0aGlzIGFsbG9jYXRpb24gcHJvY2Vzcz8gSXMgaXQgaGFuZGxpbmcgc29tZSBzcGVjaWZpYyBIdWdlVExCIGluaXRpYWxpemF0aW9uIG9yIHZhbGlkYXRpb24gdGhhdCBgYWxsb2NfZ2lnYW50aWNfZnJvemVuX2ZvbGlvYCBkb2Vzbid0PyBMZXQncyB0cmFjZSBgb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvYCBhbmQgc2VlIHdoYXQncyBnb2luZyBvbi4uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IGFuZCBwb3RlbnRpYWwgY2hlY2tzIG9yIGFjdGlvbnMgdGFrZW4gYmVmb3JlIHRoZSBhY3R1YWwgZ2lnYW50aWMgZm9saW8gYWxsb2NhdGlvbiBoYXBwZW5zLiBMZXQncyBzZWUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDczMSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ3OjAyLjk4Nzg0Nzg1OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA0NzkyNzA2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZXRsYi5jPTE3OTE9c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfYnVkZHlfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXFxuLS1cXG5tbS9odWdldGxiLmMtMTgzNS1cXG5tbS9odWdldGxiLmM6MTgzNjpzdGF0aWMgc3RydWN0IGZvbGlvICpvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcXG5tbS9odWdldGxiLmMtMTgzNy1cXHRcXHRnZnBfdCBnZnBfbWFzaywgaW50IG5pZCwgbm9kZW1hc2tfdCAqbm1hc2ssXFxuLS1cXG5tbS9odWdldGxiLmM9MTg2Mz1zdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXFxuLS1cXG5tbS9odWdldGxiLmMtMTg2Ny1cXG5tbS9odWdldGxiLmM6MTg2ODpcXHRmb2xpbyA9IG9ubHlfYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhoLCBnZnBfbWFzaywgbmlkLCBubWFzaywgTlVMTCk7XFxubW0vaHVnZXRsYi5jLTE4NjktXFx0aWYgKGZvbGlvKVxcbi0tXFxubW0vaHVnZXRsYi5jPTE4OTY9c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfcG9vbF9odWdlX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXFxuLS1cXG5tbS9odWdldGxiLmMtMTkwNi1cXG5tbS9odWdldGxiLmM6MTkwNzpcXHRcXHRmb2xpbyA9IG9ubHlfYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhoLCBnZnBfbWFzaywgbm9kZSxcXG5tbS9odWdldGxiLmMtMTkwOC1cXHRcXHRcXHRcXHRcXHRub2Rlc19hbGxvd2VkLCBub2RlX2FsbG9jX25vcmV0cnkpO1xcbi0tXFxubW0vaHVnZXRsYi5jPTMzNzI9c3RhdGljIHZvaWQgX19pbml0IGh1Z2V0bGJfaHN0YXRlX2FsbG9jX3BhZ2VzX29uZW5vZGUoc3RydWN0IGhzdGF0ZSAqaCwgaW50IG5pZClcXG4tLVxcbm1tL2h1Z2V0bGIuYy0zMzg1LVxcbm1tL2h1Z2V0bGIuYzozMzg2OlxcdFxcdFxcdGZvbGlvID0gb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsXFxubW0vaHVnZXRsYi5jLTMzODctXFx0XFx0XFx0XFx0XFx0XFx1MDAyNm5vZGVfc3RhdGVzW05fTUVNT1JZXSwgTlVMTCk7XFxuLS1cXG5tbS9odWdldGxiLmMtMzM5MS1cXHRcXHRcXHRcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2Zm9saW9fbGlzdCk7XFxubW0vaHVnZXRsYi5jOjMzOTI6XFx0XFx0XFx0XFx0Zm9saW8gPSBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oaCwgZ2ZwX21hc2ssIG5pZCxcXG5tbS9odWdldGxiLmMtMzM5My1cXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2bm9kZV9zdGF0ZXNbTl9NRU1PUlldLCBOVUxMKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDc6MDUuMDM1NzgwODM5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNzA0MDc2MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBIdWdldGxiIEZvbGlvIEFsbG9jYXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCBhbGxvY2F0aW5nIG5ldyBodWdldGxiIGZvbGlvcywgd2hpY2ggaXMgc29tZXRoaW5nIEkgZGVhbCB3aXRoIGZyZXF1ZW50bHkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0J3MgaW50cm9kdWNpbmcgc29tZSBpbnRlcmVzdGluZyBjaGFuZ2VzLiBTcGVjaWZpY2FsbHksIGl0J3MgYWRkaW5nIGBjcHVzZXRfbWVtc19jb29raWUgPSByZWFkX21lbXNfYWxsb3dlZF9iZWdpbigpO2AgYW5kIHRoZW4gdXNpbmcgYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAgaWYgdGhlIGBub2RlbWFza2AgaXMgbnVsbC4gUmlnaHQgYXdheSwgSSBzZWUgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCdzIHJlc3RyaWN0aW5nIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiB0byB0aGUgbm9kZXMgY3VycmVudGx5IGFsbG93ZWQgYnkgdGhlIGNwdXNldC5cblxuVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogaXMgdGhpcyBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyBmdXp6aW5nPyBBYnNvbHV0ZWx5LCB5ZXMuIEFueSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBtZW1vcnkgbWFuYWdlbWVudCBpcyBwcmltZSB0ZXJyaXRvcnkgZm9yIGZ1enppbmcsIGVzcGVjaWFsbHkgc29tZXRoaW5nIHRoYXQgYWx0ZXJzIGFsbG93ZWQgbm9kZSBiZWhhdmlvciBsaWtlIHRoaXMuIEl0IGNvdWxkIHVuY292ZXIgc3VidGxlIGVkZ2UgY2FzZXMgb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIG1lbW9yeSBpc29sYXRpb24gb3IgY29udGVudGlvbi5cblxuV2FpdCBhIHNlY29uZOKApiBgcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW5gIGFuZCBgcmVhZF9tZW1zX2FsbG93ZWRfcmV0cnlgIOKAkyB0aG9zZSBhcmUgaW4gYGxpbnV4L2NwdXNldC5oYC4gTWFrZXMgc2Vuc2UsIGNvbnNpZGVyaW5nIHdoYXQgdGhlIHBhdGNoIGlzIGRvaW5nLlxuXG5Ob3csIGxldCBtZSBqdXN0IGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkLiBJIGV4cGVjdCBgQ09ORklHX0hVR0VUTEJGU2AsIG9idmlvdXNseSwgYW5kIGxpa2VseSBgQ09ORklHX0NNQWAgc2luY2Ugd2UncmUgZGVhbGluZyB3aXRoIGNvbnRpZ3VvdXMgbWVtb3J5IGFsbG9jYXRpb24uIEFuZCwgb2YgY291cnNlLCBgQ09ORklHX0NQVVNFVFNgIGlzIGEgZ2l2ZW4uIFRob3VnaCBJIHNob3VsZCBkb3VibGUgY2hlY2sgdGhhdCBsYXN0IG9uZSwganVzdCB0byBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU5MCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMDo0NzowOS40MDYxOTA3OVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg2MjI5NzAzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZWFkX21lbXNfYWxsb3dlZF9iZWdpblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2NwdXNldC5oPTIxPWV4dGVybiBib29sIGxvY2tkZXBfaXNfY3B1c2V0X2hlbGQodm9pZCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTI2LSAqIFN0YXRpYyBicmFuY2ggcmV3cml0ZXMgY2FuIGhhcHBlbiBpbiBhbiBhcmJpdHJhcnkgb3JkZXIgZm9yIGEgZ2l2ZW5cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oOjI3OiAqIGtleS4gSW4gY29kZSBwYXRocyB3aGVyZSB3ZSBuZWVkIHRvIGxvb3Agd2l0aCByZWFkX21lbXNfYWxsb3dlZF9iZWdpbigpIGFuZFxcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMjgtICogcmVhZF9tZW1zX2FsbG93ZWRfcmV0cnkoKSB0byBnZXQgYSBjb25zaXN0ZW50IHZpZXcgb2YgbWVtc19hbGxvd2VkLCB3ZSBuZWVkXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oPTEzNT1leHRlcm4gdm9pZCBjcHVzZXRfcmVzZXRfc2NoZWRfZG9tYWlucyh2b2lkKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMTM3LS8qXFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaDoxMzg6ICogcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4gaXMgcmVxdWlyZWQgd2hlbiBtYWtpbmcgZGVjaXNpb25zIGludm9sdmluZ1xcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMTM5LSAqIG1lbXNfYWxsb3dlZCBzdWNoIGFzIGR1cmluZyBwYWdlIGFsbG9jYXRpb24uIG1lbXNfYWxsb3dlZCBjYW4gYmUgdXBkYXRlZCBpblxcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMTQwLSAqIHBhcmFsbGVsIGFuZCBkZXBlbmRpbmcgb24gdGhlIG5ldyB2YWx1ZSBhbiBvcGVyYXRpb24gY2FuIGZhaWwgcG90ZW50aWFsbHlcXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oOjE0MTogKiBjYXVzaW5nIHByb2Nlc3MgZmFpbHVyZS4gQSByZXRyeSBsb29wIHdpdGggcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4gYW5kXFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaC0xNDItICogcmVhZF9tZW1zX2FsbG93ZWRfcmV0cnkgcHJldmVudHMgdGhlc2UgYXJ0aWZpY2lhbCBmYWlsdXJlcy5cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTE0My0gKi9cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oOjE0NDpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCByZWFkX21lbXNfYWxsb3dlZF9iZWdpbih2b2lkKVxcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMTQ1LXtcXG4tLVxcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMTUzLSAqIElmIHRoaXMgcmV0dXJucyB0cnVlLCB0aGUgb3BlcmF0aW9uIHRoYXQgdG9vayBwbGFjZSBhZnRlclxcbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg6MTU0OiAqIHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luIG1heSBoYXZlIGZhaWxlZCBhcnRpZmljaWFsbHkgZHVlIHRvIGEgY29uY3VycmVudFxcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMTU1LSAqIHVwZGF0ZSBvZiBtZW1zX2FsbG93ZWQuIEl0IGlzIHVwIHRvIHRoZSBjYWxsZXIgdG8gcmV0cnkgdGhlIG9wZXJhdGlvbiBpZlxcbi0tXFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaD0yODg9c3RhdGljIGlubGluZSB2b2lkIHNldF9tZW1zX2FsbG93ZWQobm9kZW1hc2tfdCBub2RlbWFzaylcXG4tLVxcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMjkxLVxcbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg6MjkyOnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKHZvaWQpXFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaC0yOTMte1xcbi0tXFxubW0vZmlsZW1hcC5jPTk5OT1zdHJ1Y3QgZm9saW8gKmZpbGVtYXBfYWxsb2NfZm9saW9fbm9wcm9mKGdmcF90IGdmcCwgdW5zaWduZWQgaW50IG9yZGVyLFxcbi0tXFxubW0vZmlsZW1hcC5jLTEwMTEtXFx0XFx0ZG8ge1xcbm1tL2ZpbGVtYXAuYzoxMDEyOlxcdFxcdFxcdGNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7XFxubW0vZmlsZW1hcC5jLTEwMTMtXFx0XFx0XFx0biA9IGNwdXNldF9tZW1fc3ByZWFkX25vZGUoKTtcXG4tLVxcbm1tL2h1Z2V0bGIuYz0xMjc1PXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmRlcXVldWVfaHVnZXRsYl9mb2xpb19ub2RlbWFzayhzdHJ1Y3QgaHN0YXRlICpoLCBnZnBfdCBnZnBfbWFzayxcXG4tLVxcbm1tL2h1Z2V0bGIuYy0xMjkwLXJldHJ5X2NwdXNldDpcXG5tbS9odWdldGxiLmM6MTI5MTpcXHRjcHVzZXRfbWVtc19jb29raWUgPSByZWFkX21lbXNfYWxsb3dlZF9iZWdpbigpO1xcbm1tL2h1Z2V0bGIuYy0xMjkyLVxcdGZvcl9lYWNoX3pvbmVfem9uZWxpc3Rfbm9kZW1hc2soem9uZSwgeiwgem9uZWxpc3QsIGdmcF96b25lKGdmcF9tYXNrKSwgbm1hc2spIHtcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmM9Mjg9c3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmMtNDItXFx0aWYgKCFub2RlbWFzaykge1xcbm1tL2h1Z2V0bGJfY21hLmM6NDM6XFx0XFx0Y3B1c2V0X21lbXNfY29va2llID0gcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKTtcXG5tbS9odWdldGxiX2NtYS5jLTQ0LVxcdFxcdGxvY2FsX25vZGVfbWFzayA9IGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZDtcXG4tLVxcbm1tL21lbXBvbGljeS5jPTIxMDA9c3RhdGljIHVuc2lnbmVkIGludCB3ZWlnaHRlZF9pbnRlcmxlYXZlX25vZGVzKHN0cnVjdCBtZW1wb2xpY3kgKnBvbGljeSlcXG4tLVxcbm1tL21lbXBvbGljeS5jLTIxMDYtXFx0LyogdG8gcHJldmVudCBtaXNjb3VudCB1c2UgdHNrLVxcdTAwM2VtZW1zX2FsbG93ZWRfc2VxIHRvIGRldGVjdCByZWJpbmQgKi9cXG5tbS9tZW1wb2xpY3kuYzoyMTA3OlxcdGNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7XFxubW0vbWVtcG9saWN5LmMtMjEwOC1cXHRub2RlID0gY3VycmVudC1cXHUwMDNlaWxfcHJldjtcXG4tLVxcbm1tL21lbXBvbGljeS5jPTIxMjM9c3RhdGljIHVuc2lnbmVkIGludCBpbnRlcmxlYXZlX25vZGVzKHN0cnVjdCBtZW1wb2xpY3kgKnBvbGljeSlcXG4tLVxcbm1tL21lbXBvbGljeS5jLTIxMjktXFx0ZG8ge1xcbm1tL21lbXBvbGljeS5jOjIxMzA6XFx0XFx0Y3B1c2V0X21lbXNfY29va2llID0gcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKTtcXG5tbS9tZW1wb2xpY3kuYy0yMTMxLVxcdFxcdG5pZCA9IG5leHRfbm9kZV9pbihjdXJyZW50LVxcdTAwM2VpbF9wcmV2LCBwb2xpY3ktXFx1MDAzZW5vZGVzKTtcXG4tLVxcbm1tL21lbXBvbGljeS5jPTI2MzA9c3RhdGljIHVuc2lnbmVkIGxvbmcgYWxsb2NfcGFnZXNfYnVsa193ZWlnaHRlZF9pbnRlcmxlYXZlKGdmcF90IGdmcCxcXG4tLVxcbm1tL21lbXBvbGljeS5jLTI2NTUtXFx0ZG8ge1xcbm1tL21lbXBvbGljeS5jOjI2NTY6XFx0XFx0Y3B1c2V0X21lbXNfY29va2llID0gcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKTtcXG5tbS9tZW1wb2xpY3kuYy0yNjU3LVxcdFxcdG5ub2RlcyA9IHJlYWRfb25jZV9wb2xpY3lfbm9kZW1hc2socG9sLCBcXHUwMDI2bm9kZXMpO1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTQ3MjU9X19hbGxvY19wYWdlc19zbG93cGF0aChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTQ3NjQtXFx0Y29tcGFjdF9wcmlvcml0eSA9IERFRl9DT01QQUNUX1BSSU9SSVRZO1xcbm1tL3BhZ2VfYWxsb2MuYzo0NzY1OlxcdGNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7XFxubW0vcGFnZV9hbGxvYy5jLTQ3NjYtXFx0em9uZWxpc3RfaXRlcl9jb29raWUgPSB6b25lbGlzdF9pdGVyX2JlZ2luKCk7XFxuLS1cXG5tbS9zaG93X21lbS5jPTExOT1zdGF0aWMgYm9vbCBzaG93X21lbV9ub2RlX3NraXAodW5zaWduZWQgaW50IGZsYWdzLCBpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzaylcXG4tLVxcbm1tL3Nob3dfbWVtLmMtMTI1LVxcdCAqIG5vIG5vZGUgbWFzayAtIGFrYSBpbXBsaWNpdCBtZW1vcnkgbnVtYSBwb2xpY3kuIERvIG5vdCBib3RoZXIgd2l0aFxcbm1tL3Nob3dfbWVtLmM6MTI2OlxcdCAqIHRoZSBzeW5jaHJvbml6YXRpb24gLSByZWFkX21lbXNfYWxsb3dlZF9iZWdpbiAtIGJlY2F1c2Ugd2UgZG8gbm90XFxubW0vc2hvd19tZW0uYy0xMjctXFx0ICogaGF2ZSB0byBiZSBwcmVjaXNlIGhlcmUuXFxuLS1cXG5tbS9zbHViLmM9Mzg2Mz1zdGF0aWMgdm9pZCAqZ2V0X2Zyb21fYW55X3BhcnRpYWwoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcF9mbGFncyxcXG4tLVxcbm1tL3NsdWIuYy0zODk3LVxcdFxcdC8qXFxubW0vc2x1Yi5jOjM4OTg6XFx0XFx0ICogcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKSBhY2Nlc3NlcyBjdXJyZW50LVxcdTAwM2VtZW1zX2FsbG93ZWRfc2VxLFxcbm1tL3NsdWIuYy0zODk5LVxcdFxcdCAqIGEgc2VxY291bnRfc3BpbmxvY2tfdCB0aGF0IGlzIG5vdCBOTUktc2FmZS4gRG8gbm90IGFjY2Vzc1xcbi0tXFxubW0vc2x1Yi5jLTM5MDMtXFx0XFx0aWYgKGFsbG93X3NwaW4pXFxubW0vc2x1Yi5jOjM5MDQ6XFx0XFx0XFx0Y3B1c2V0X21lbXNfY29va2llID0gcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKTtcXG5tbS9zbHViLmMtMzkwNS1cXG4tLVxcbm1tL3NsdWIuYz03MjMxPV9fcmVmaWxsX29iamVjdHNfYW55KHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICoqcCwgZ2ZwX3QgZ2ZwLCB1bnNpZ25lZCBpbnQgbWluLFxcbi0tXFxubW0vc2x1Yi5jLTcyNDYtXFx0ZG8ge1xcbm1tL3NsdWIuYzo3MjQ3OlxcdFxcdGNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7XFxubW0vc2x1Yi5jLTcyNDgtXFx0XFx0em9uZWxpc3QgPSBub2RlX3pvbmVsaXN0KG1lbXBvbGljeV9zbGFiX25vZGUoKSwgZ2ZwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDc6MTEuMjY4NDkyNDI1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMzM5MzgxNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGByZWFkX21lbXNfYWxsb3dlZF9iZWdpbmAgYW5kIENQVVNldHMqKlxuXG5Pa2F5LCBzbyBgcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW5gIGlzIGRlZmluZWQgaW4gYGluY2x1ZGUvbGludXgvY3B1c2V0LmhgLiBUaGF0IG1ha2VzIHNlbnNlLCBidXQgaXQncyBpbnRlcmVzdGluZyB0aGF0IGl0J3MgcHJlc2VudCBldmVuIHdoZW4gYENPTkZJR19DUFVTRVRTYCBpc24ndCBlbmFibGVkLiBDbGVhcmx5LCB0aGVyZSdzIGEgZHVtbXkgaW1wbGVtZW50YXRpb24gaW4gcGxhY2UgdG8gaGFuZGxlIHRoZSBzY2VuYXJpbyB3aGVyZSBjcHVzZXRzIGFyZSBkaXNhYmxlZC4gSG93ZXZlciwgaWYgSSByZWFsbHkgd2FudCB0byBkaXZlIGRlZXAgaW50byB0aGUgbG9naWMgYW5kIHRlc3QgdGhlIGZ1bmN0aW9uYWxpdHkgcHJvcGVybHksIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGlmIGBDT05GSUdfQ1BVU0VUU2AgaXMgYWN0dWFsbHkgY29uZmlndXJlZC4gQmVzdCB0byB2ZXJpZnkgdGhlIHJlYWwgaW1wbGVtZW50YXRpb24sIHNvIEknbGwgZ28gYWhlYWQgYW5kIHRha2UgYSBsb29rIGF0IGBpbmNsdWRlL2xpbnV4L2NwdXNldC5oYCBhZ2Fpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzk4NCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ3OjE0LjQwMjQzMjQyMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg0ODc1MzIxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfQ1BVU0VUU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2NwdS1pc29sYXRpb24ucnN0PTk4PVJlcXVpcmVtZW50c1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jcHUtaXNvbGF0aW9uLnJzdC0xMDAtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jcHUtaXNvbGF0aW9uLnJzdDoxMDE6LSBDT05GSUdfQ1BVU0VUUz15IGZvciB0aGUgY3B1c2V0cy1iYXNlZCBpbnRlcmZhY2VcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2NwdS1pc29sYXRpb24ucnN0LTEwMi1cXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2LXRvb2xzL2dwaW8tc2xvcHB5LWxvZ2ljLWFuYWx5emVyLnJzdD0zNT1TZXR1cFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMvZ3Bpby1zbG9wcHktbG9naWMtYW5hbHl6ZXIucnN0LTM3LVxcbkRvY3VtZW50YXRpb24vZGV2LXRvb2xzL2dwaW8tc2xvcHB5LWxvZ2ljLWFuYWx5emVyLnJzdDozODpZb3VyIGtlcm5lbCBtdXN0IGhhdmUgQ09ORklHX0RFQlVHX0ZTIGFuZCBDT05GSUdfQ1BVU0VUUyBlbmFibGVkLiBJZGVhbGx5LCB5b3VyXFxuRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMvZ3Bpby1zbG9wcHktbG9naWMtYW5hbHl6ZXIucnN0LTM5LXJ1bnRpbWUgZW52aXJvbm1lbnQgZG9lcyBub3QgdXRpbGl6ZSBjcHVzZXRzIG90aGVyd2lzZSwgdGhlbiBpc29sYXRpb24gb2YgYSBDUFVcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvYmNtMjgzNV9kZWZjb25maWc9MTA9Q09ORklHX0NHUk9VUF9GUkVFWkVSPXlcXG5hcmNoL2FybS9jb25maWdzL2JjbTI4MzVfZGVmY29uZmlnOjExOkNPTkZJR19DUFVTRVRTPXlcXG5hcmNoL2FybS9jb25maWdzL2JjbTI4MzVfZGVmY29uZmlnLTEyLUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZz0xNj1DT05GSUdfQ0dST1VQX0ZSRUVaRVI9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZzoxNzpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnLTE4LUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc29jZnBnYV9kZWZjb25maWc9Nj1DT05GSUdfQ0dST1VQUz15XFxuYXJjaC9hcm0vY29uZmlncy9zb2NmcGdhX2RlZmNvbmZpZzo3OkNPTkZJR19DUFVTRVRTPXlcXG5hcmNoL2FybS9jb25maWdzL3NvY2ZwZ2FfZGVmY29uZmlnLTgtQ09ORklHX05BTUVTUEFDRVM9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy92ZXhwcmVzc19kZWZjb25maWc9OD1DT05GSUdfQ0dST1VQUz15XFxuYXJjaC9hcm0vY29uZmlncy92ZXhwcmVzc19kZWZjb25maWc6OTpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC9hcm0vY29uZmlncy92ZXhwcmVzc19kZWZjb25maWctMTAtIyBDT05GSUdfVVRTX05TIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc9MjI9Q09ORklHX0NHUk9VUF9IVUdFVExCPXlcXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjIzOkNPTkZJR19DUFVTRVRTPXlcXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTI0LUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc9Mjc9Q09ORklHX0NHUk9VUF9GUkVFWkVSPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnOjI4OkNPTkZJR19DUFVTRVRTPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTI5LUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9MzE9Q09ORklHX0NHUk9VUF9IVUdFVExCPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnOjMyOkNPTkZJR19DUFVTRVRTPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTMzLUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE1X2RlZmNvbmZpZz0xMj1DT05GSUdfQ0dST1VQX0ZSRUVaRVI9eVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE1X2RlZmNvbmZpZzoxMzpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnLTE0LUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2X2RlZmNvbmZpZz0xMz1DT05GSUdfQ0dST1VQX0ZSRUVaRVI9eVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2X2RlZmNvbmZpZzoxNDpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZfZGVmY29uZmlnLTE1LUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2bHBsdXNfZGVmY29uZmlnPTEzPUNPTkZJR19DR1JPVVBfRlJFRVpFUj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZscGx1c19kZWZjb25maWc6MTQ6Q09ORklHX0NQVVNFVFM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2bHBsdXNfZGVmY29uZmlnLTE1LUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2dlbmVyaWNfZGVmY29uZmlnPTk9Q09ORklHX0NHUk9VUF9GUkVFWkVSPXlcXG5hcmNoL21pcHMvY29uZmlncy9nZW5lcmljX2RlZmNvbmZpZzoxMDpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZ2VuZXJpY19kZWZjb25maWctMTEtQ09ORklHX0NHUk9VUF9ERVZJQ0U9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWc9OD1DT05GSUdfQ0dST1VQUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWc6OTpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWctMTAtQ09ORklHX1JFTEFZPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnPTg9Q09ORklHX0NHUk9VUFM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnOjk6Q09ORklHX0NQVVNFVFM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnLTEwLUNPTkZJR19SRUxBWT15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnPTIwPUNPTkZJR19DR1JPVVBfRlJFRVpFUj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZzoyMTpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZy0yMi1DT05GSUdfQ0dST1VQX0RFVklDRT15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9zYjEyNTBfc3dhcm1fZGVmY29uZmlnPTQ9Q09ORklHX0NHUk9VUFM9eVxcbmFyY2gvbWlwcy9jb25maWdzL3NiMTI1MF9zd2FybV9kZWZjb25maWc6NTpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC9taXBzL2NvbmZpZ3Mvc2IxMjUwX3N3YXJtX2RlZmNvbmZpZy02LSMgQ09ORklHX1BST0NfUElEX0NQVVNFVCBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnPTE3PUNPTkZJR19DR1JPVVBfUElEUz15XFxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZzoxODpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZy0xOS1DT05GSUdfVVNFUl9OUz15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9jZWxsX2RlZmNvbmZpZz0xMj1DT05GSUdfQ0dST1VQUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvY2VsbF9kZWZjb25maWc6MTM6Q09ORklHX0NQVVNFVFM9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2NlbGxfZGVmY29uZmlnLTE0LUNPTkZJR19CTEtfREVWX0lOSVRSRD15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9mc2wtZW1iLW5vbmh3LmNvbmZpZz0xNj1DT05GSUdfQ0dST1VQUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZnNsLWVtYi1ub25ody5jb25maWctMTctIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2ZzbC1lbWItbm9uaHcuY29uZmlnOjE4OkNPTkZJR19DUFVTRVRTPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9mc2wtZW1iLW5vbmh3LmNvbmZpZy0xOS1DT05GSUdfQ1JBTUZTPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnPTIxPUNPTkZJR19DR1JPVVBfRlJFRVpFUj15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6MjI6Q09ORklHX0NQVVNFVFM9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnLTIzLUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZz0yOD1DT05GSUdfQ0dST1VQX0hVR0VUTEI9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZzoyOTpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnLTMwLUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0ZV9kZWZjb25maWc9MTI9Q09ORklHX0NHUk9VUFM9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0ZV9kZWZjb25maWc6MTM6Q09ORklHX0NQVVNFVFM9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0ZV9kZWZjb25maWctMTQtQ09ORklHX0JMS19ERVZfSU5JVFJEPXlcXG4tLVxcbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWc9MTU9Q09ORklHX0NHUk9VUF9IVUdFVExCPXlcXG5hcmNoL3Jpc2N2L2NvbmZpZ3MvZGVmY29uZmlnOjE2OkNPTkZJR19DUFVTRVRTPXlcXG5hcmNoL3Jpc2N2L2NvbmZpZ3MvZGVmY29uZmlnLTE3LUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz0zMT1DT05GSUdfQ0dST1VQX0hVR0VUTEI9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzozMjpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTMzLUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0yOT1DT05GSUdfQ0dST1VQX0hVR0VUTEI9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzozMDpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTMxLUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gvc2gvY29uZmlncy9zZGs3Nzg2X2RlZmNvbmZpZz0xND1DT05GSUdfQ0dST1VQX0RFVklDRT15XFxuYXJjaC9zaC9jb25maWdzL3Nkazc3ODZfZGVmY29uZmlnOjE1OkNPTkZJR19DUFVTRVRTPXlcXG5hcmNoL3NoL2NvbmZpZ3Mvc2RrNzc4Nl9kZWZjb25maWctMTYtIyBDT05GSUdfUFJPQ19QSURfQ1BVU0VUIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvc2gvY29uZmlncy91cnF1ZWxsX2RlZmNvbmZpZz0xMj1DT05GSUdfQ0dST1VQX0RFVklDRT15XFxuYXJjaC9zaC9jb25maWdzL3VycXVlbGxfZGVmY29uZmlnOjEzOkNPTkZJR19DUFVTRVRTPXlcXG5hcmNoL3NoL2NvbmZpZ3MvdXJxdWVsbF9kZWZjb25maWctMTQtIyBDT05GSUdfUFJPQ19QSURfQ1BVU0VUIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvdW0vY29uZmlncy9pMzg2X2RlZmNvbmZpZz0xNj1DT05GSUdfQ0dST1VQX0RFVklDRT15XFxuYXJjaC91bS9jb25maWdzL2kzODZfZGVmY29uZmlnOjE3OkNPTkZJR19DUFVTRVRTPXlcXG5hcmNoL3VtL2NvbmZpZ3MvaTM4Nl9kZWZjb25maWctMTgtQ09ORklHX0NHUk9VUF9DUFVBQ0NUPXlcXG4tLVxcbmFyY2gvdW0vY29uZmlncy94ODZfNjRfZGVmY29uZmlnPTE1PUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG5hcmNoL3VtL2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZzoxNjpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC91bS9jb25maWdzL3g4Nl82NF9kZWZjb25maWctMTctQ09ORklHX0NHUk9VUF9DUFVBQ0NUPXlcXG4tLVxcbmFyY2gveDg2L2NvbmZpZ3MvaTM4Nl9kZWZjb25maWc9MjA9Q09ORklHX0NHUk9VUF9IVUdFVExCPXlcXG5hcmNoL3g4Ni9jb25maWdzL2kzODZfZGVmY29uZmlnOjIxOkNPTkZJR19DUFVTRVRTPXlcXG5hcmNoL3g4Ni9jb25maWdzL2kzODZfZGVmY29uZmlnLTIyLUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gveDg2L2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZz0yMD1DT05GSUdfQ0dST1VQX0hVR0VUTEI9eVxcbmFyY2gveDg2L2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZzoyMTpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnLTIyLUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MvYXVkaW9fa2M3MDVfZGVmY29uZmlnPTEwPUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG5hcmNoL3h0ZW5zYS9jb25maWdzL2F1ZGlvX2tjNzA1X2RlZmNvbmZpZzoxMTpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC94dGVuc2EvY29uZmlncy9hdWRpb19rYzcwNV9kZWZjb25maWctMTItQ09ORklHX0NHUk9VUF9DUFVBQ0NUPXlcXG4tLVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MvY2FkZW5jZV9jc3BfZGVmY29uZmlnPTc9Q09ORklHX0NHUk9VUF9GUkVFWkVSPXlcXG5hcmNoL3h0ZW5zYS9jb25maWdzL2NhZGVuY2VfY3NwX2RlZmNvbmZpZzo4OkNPTkZJR19DUFVTRVRTPXlcXG5hcmNoL3h0ZW5zYS9jb25maWdzL2NhZGVuY2VfY3NwX2RlZmNvbmZpZy05LUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MvZ2VuZXJpY19rYzcwNV9kZWZjb25maWc9MTA9Q09ORklHX0NHUk9VUF9ERVZJQ0U9eVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MvZ2VuZXJpY19rYzcwNV9kZWZjb25maWc6MTE6Q09ORklHX0NQVVNFVFM9eVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MvZ2VuZXJpY19rYzcwNV9kZWZjb25maWctMTItQ09ORklHX0NHUk9VUF9DUFVBQ0NUPXlcXG4tLVxcbmFyY2gveHRlbnNhL2NvbmZpZ3Mvbm9tbXVfa2M3MDVfZGVmY29uZmlnPTEwPUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG5hcmNoL3h0ZW5zYS9jb25maWdzL25vbW11X2tjNzA1X2RlZmNvbmZpZzoxMTpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC94dGVuc2EvY29uZmlncy9ub21tdV9rYzcwNV9kZWZjb25maWctMTItQ09ORklHX0NHUk9VUF9DUFVBQ0NUPXlcXG4tLVxcbmFyY2gveHRlbnNhL2NvbmZpZ3Mvc21wX2x4MjAwX2RlZmNvbmZpZz0xMD1DT05GSUdfQ0dST1VQX0RFVklDRT15XFxuYXJjaC94dGVuc2EvY29uZmlncy9zbXBfbHgyMDBfZGVmY29uZmlnOjExOkNPTkZJR19DUFVTRVRTPXlcXG5hcmNoL3h0ZW5zYS9jb25maWdzL3NtcF9seDIwMF9kZWZjb25maWctMTItQ09ORklHX0NHUk9VUF9DUFVBQ0NUPXlcXG4tLVxcbmluY2x1ZGUvbGludXgvY2dyb3VwX3N1YnN5cy5oLTExLVxcbmluY2x1ZGUvbGludXgvY2dyb3VwX3N1YnN5cy5oOjEyOiNpZiBJU19FTkFCTEVEKENPTkZJR19DUFVTRVRTKVxcbmluY2x1ZGUvbGludXgvY2dyb3VwX3N1YnN5cy5oLTEzLVNVQlNZUyhjcHVzZXQpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oPTIxPWV4dGVybiBib29sIGxvY2tkZXBfaXNfY3B1c2V0X2hlbGQodm9pZCk7XFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaC0yMi1cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oOjIzOiNpZmRlZiBDT05GSUdfQ1BVU0VUU1xcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMjQtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oPTEwMj1leHRlcm4gaW50IGNwdXNldF9tZW1zX2FsbG93ZWRfaW50ZXJzZWN0cyhjb25zdCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzazEsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTEwNC1cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oOjEwNTojaWZkZWYgQ09ORklHX0NQVVNFVFNfVjFcXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTEwNi0jZGVmaW5lIGNwdXNldF9tZW1vcnlfcHJlc3N1cmVfYnVtcCgpIFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg9MTc5PWV4dGVybiB2b2lkIGNwdXNldF9ub2Rlc19hbGxvd2VkKHN0cnVjdCBjZ3JvdXAgKmNncm91cCwgbm9kZW1hc2tfdCAqbWFzayk7XFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaDoxODA6I2Vsc2UgLyogIUNPTkZJR19DUFVTRVRTICovXFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaC0xODEtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oPTMwMj1zdGF0aWMgaW5saW5lIHZvaWQgY3B1c2V0X25vZGVzX2FsbG93ZWQoc3RydWN0IGNncm91cCAqY2dyb3VwLCBub2RlbWFza190ICptYXNrKVxcbi0tXFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaC0zMDUtfVxcbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg6MzA2OiNlbmRpZiAvKiAhQ09ORklHX0NQVVNFVFMgKi9cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTMwNy1cXG4tLVxcbmluY2x1ZGUvbGludXgvc2NoZWQuaD04MjY9c3RydWN0IHRhc2tfc3RydWN0IHtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2NoZWQuaC0xMzMxLSNlbmRpZlxcbmluY2x1ZGUvbGludXgvc2NoZWQuaDoxMzMyOiNpZmRlZiBDT05GSUdfQ1BVU0VUU1xcbmluY2x1ZGUvbGludXgvc2NoZWQuaC0xMzMzLVxcdC8qIFByb3RlY3RlZCBieSAtXFx1MDAzZWFsbG9jX2xvY2s6ICovXFxuLS1cXG5pbml0L2luaXRfdGFzay5jPTEwNT1zdHJ1Y3QgdGFza19zdHJ1Y3QgaW5pdF90YXNrIF9fYWxpZ25lZChMMV9DQUNIRV9CWVRFUykgPSB7XFxuLS1cXG5pbml0L2luaXRfdGFzay5jLTIwOC0jZW5kaWZcXG5pbml0L2luaXRfdGFzay5jOjIwOTojaWZkZWYgQ09ORklHX0NQVVNFVFNcXG5pbml0L2luaXRfdGFzay5jLTIxMC1cXHQubWVtc19hbGxvd2VkX3NlcSA9IFNFUUNOVF9TUElOTE9DS19aRVJPKGluaXRfdGFzay5tZW1zX2FsbG93ZWRfc2VxLFxcbi0tXFxua2VybmVsL2Nncm91cC9NYWtlZmlsZT02PW9iai0kKENPTkZJR19DR1JPVVBfUkRNQSkgKz0gcmRtYS5vXFxua2VybmVsL2Nncm91cC9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19DUFVTRVRTKSArPSBjcHVzZXQub1xcbmtlcm5lbC9jZ3JvdXAvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfQ1BVU0VUU19WMSkgKz0gY3B1c2V0LXYxLm9cXG5rZXJuZWwvY2dyb3VwL01ha2VmaWxlLTktb2JqLSQoQ09ORklHX0NHUk9VUF9NSVNDKSArPSBtaXNjLm9cXG4tLVxcbmtlcm5lbC9jZ3JvdXAvY2dyb3VwLXYxLmM9MTAzNz1zdGF0aWMgaW50IGNoZWNrX2Nncm91cGZzX29wdGlvbnMoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbi0tXFxua2VybmVsL2Nncm91cC9jZ3JvdXAtdjEuYy0xMDQ0LVxcbmtlcm5lbC9jZ3JvdXAvY2dyb3VwLXYxLmM6MTA0NTojaWZkZWYgQ09ORklHX0NQVVNFVFNcXG5rZXJuZWwvY2dyb3VwL2Nncm91cC12MS5jLTEwNDYtXFx0bWFzayA9IH4oKHUzMikxIFxcdTAwM2NcXHUwMDNjIGNwdXNldF9jZ3JwX2lkKTtcXG4tLVxcbmtlcm5lbC9jZ3JvdXAvY2dyb3VwLmM9MjM5Nj1zdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgY2dyb3VwMl9mc190eXBlID0ge1xcbi0tXFxua2VybmVsL2Nncm91cC9jZ3JvdXAuYy0yNDAzLVxcbmtlcm5lbC9jZ3JvdXAvY2dyb3VwLmM6MjQwNDojaWZkZWYgQ09ORklHX0NQVVNFVFNfVjFcXG5rZXJuZWwvY2dyb3VwL2Nncm91cC5jLTI0MDUtZW51bSBjcHVzZXRfcGFyYW0ge1xcbi0tXFxua2VybmVsL2Nncm91cC9jZ3JvdXAuYz02NDIzPWludCBfX2luaXQgY2dyb3VwX2luaXQodm9pZClcXG4tLVxcbmtlcm5lbC9jZ3JvdXAvY2dyb3VwLmMtNjUxNi1cXHRXQVJOX09OKCFwcm9jX2NyZWF0ZV9zaW5nbGUoXFxcImNncm91cHNcXFwiLCAwLCBOVUxMLCBwcm9jX2Nncm91cHN0YXRzX3Nob3cpKTtcXG5rZXJuZWwvY2dyb3VwL2Nncm91cC5jOjY1MTc6I2lmZGVmIENPTkZJR19DUFVTRVRTX1YxXFxua2VybmVsL2Nncm91cC9jZ3JvdXAuYy02NTE4LVxcdFdBUk5fT04ocmVnaXN0ZXJfZmlsZXN5c3RlbShcXHUwMDI2Y3B1c2V0X2ZzX3R5cGUpKTtcXG4tLVxcbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmg9NzU9c3RydWN0IGNwdXNldCB7XFxuLS1cXG5rZXJuZWwvY2dyb3VwL2NwdXNldC1pbnRlcm5hbC5oLTE4My1cXG5rZXJuZWwvY2dyb3VwL2NwdXNldC1pbnRlcm5hbC5oOjE4NDojaWZkZWYgQ09ORklHX0NQVVNFVFNfVjFcXG5rZXJuZWwvY2dyb3VwL2NwdXNldC1pbnRlcm5hbC5oLTE4NS1cXHRzdHJ1Y3QgZm1ldGVyIGZtZXRlcjtcXHRcXHQvKiBtZW1vcnlfcHJlc3N1cmUgZmlsdGVyICovXFxuLS1cXG5rZXJuZWwvY2dyb3VwL2NwdXNldC1pbnRlcm5hbC5oPTMxNj12b2lkIGNwdXNldF9mdWxsX3VubG9jayh2b2lkKTtcXG4tLVxcbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmgtMzIwLSAqL1xcbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmg6MzIxOiNpZmRlZiBDT05GSUdfQ1BVU0VUU19WMVxcbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmgtMzIyLWV4dGVybiBzdHJ1Y3QgY2Z0eXBlIGNwdXNldDFfZmlsZXNbXTtcXG4tLVxcbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmg9MzQ5PXN0YXRpYyBpbmxpbmUgaW50IGNwdXNldDFfZ2VuZXJhdGVfc2NoZWRfZG9tYWlucyhjcHVtYXNrX3Zhcl90ICoqZG9tYWlucyxcXG4tLVxcbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmgtMzUxLVxcbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmg6MzUyOiNlbmRpZiAvKiBDT05GSUdfQ1BVU0VUU19WMSAqL1xcbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmgtMzUzLVxcbi0tXFxua2VybmVsL2Nncm91cC9jcHVzZXQuYz0zOTA9c3RhdGljIGlubGluZSBib29sIGNwdXNldF92Mih2b2lkKVxcbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LmMtMzkxLXtcXG5rZXJuZWwvY2dyb3VwL2NwdXNldC5jOjM5MjpcXHRyZXR1cm4gIUlTX0VOQUJMRUQoQ09ORklHX0NQVVNFVFNfVjEpIHx8XFxua2VybmVsL2Nncm91cC9jcHVzZXQuYy0zOTMtXFx0XFx0Y2dyb3VwX3N1YnN5c19vbl9kZmwoY3B1c2V0X2NncnBfc3Vic3lzKTtcXG4tLVxcbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LmM9MzY2NT1zdHJ1Y3QgY2dyb3VwX3N1YnN5cyBjcHVzZXRfY2dycF9zdWJzeXMgPSB7XFxuLS1cXG5rZXJuZWwvY2dyb3VwL2NwdXNldC5jLTM2NzctXFx0LmZvcmtcXHRcXHQ9IGNwdXNldF9mb3JrLFxcbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LmM6MzY3ODojaWZkZWYgQ09ORklHX0NQVVNFVFNfVjFcXG5rZXJuZWwvY2dyb3VwL2NwdXNldC5jLTM2NzktXFx0LmxlZ2FjeV9jZnR5cGVzXFx0PSBjcHVzZXQxX2ZpbGVzLFxcbi0tXFxua2VybmVsL2ZvcmsuYz0xOTk0PV9fbGF0ZW50X2VudHJvcHkgc3RydWN0IHRhc2tfc3RydWN0ICpjb3B5X3Byb2Nlc3MoXFxuLS1cXG5rZXJuZWwvZm9yay5jLTIyMzEtI2VuZGlmXFxua2VybmVsL2ZvcmsuYzoyMjMyOiNpZmRlZiBDT05GSUdfQ1BVU0VUU1xcbmtlcm5lbC9mb3JrLmMtMjIzMy1cXHRwLVxcdTAwM2VjcHVzZXRfbWVtX3NwcmVhZF9yb3RvciA9IE5VTUFfTk9fTk9ERTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9pc29sYXRpb24uYz0zNz1zdGF0aWMgYm9vbCBob3VzZWtlZXBpbmdfZGVyZWZlcmVuY2VfY2hlY2soZW51bSBoa190eXBlIHR5cGUpXFxuLS1cXG5rZXJuZWwvc2NoZWQvaXNvbGF0aW9uLmMtNDgtXFx0XFx0LyogQ3B1c2V0IGxvY2sgaGVsZCwgcGFydGl0aW9ucyBub3Qgd3JpdGFibGUgKi9cXG5rZXJuZWwvc2NoZWQvaXNvbGF0aW9uLmM6NDk6XFx0XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0NQVVNFVFMpIFxcdTAwMjZcXHUwMDI2IGxvY2tkZXBfaXNfY3B1c2V0X2hlbGQoKSlcXG5rZXJuZWwvc2NoZWQvaXNvbGF0aW9uLmMtNTAtXFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLmFhcmNoNjQ9MzA9Q09ORklHX0NPTVBBVD15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0OjMxOkNPTkZJR19DUFVTRVRTPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLmFhcmNoNjQtMzItQ09ORklHX0NSQVNIX0RVTVA9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5wcGM2NGVsPTIxPUNPTkZJR19DUFVfTElUVExFX0VORElBTj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5wcGM2NGVsOjIyOkNPTkZJR19DUFVTRVRTPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWwtMjMtQ09ORklHX0RFQlVHX0FUT01JQ19TTEVFUD15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnJpc2N2NjQ9MTc9Q09ORklHX0NHUk9VUF9TQ0hFRD15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0OjE4OkNPTkZJR19DUFVTRVRTPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnJpc2N2NjQtMTktQ09ORklHX0RFQlVHX0FUT01JQ19TTEVFUD15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnMzOTB4PTIxPUNPTkZJR19DSEVDS1BPSU5UX1JFU1RPUkU9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuczM5MHg6MjI6Q09ORklHX0NQVVNFVFM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuczM5MHgtMjMtQ09ORklHX0NSQVNIX0RVTVA9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQ9NDA9Q09ORklHX0NQVV9JRExFX0dPVl9MQURERVI9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0OjQxOkNPTkZJR19DUFVTRVRTPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLng4Nl82NC00Mi1DT05GSUdfQ1JZUFRPX0JMQUtFMkI9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2NvbmZpZy5jb21tb249NDA9Q09ORklHX0NQVV9JRExFX0dPVl9MQURERVI9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uOjQxOkNPTkZJR19DUFVTRVRTPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnLmNvbW1vbi00Mi1DT05GSUdfQ1JZUFRPX0JMQUtFMkI9eVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMDo0NzoxNi4yNTExOTA5MjhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU0Mjc3MTk5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi5cblxuKipVbmRlcnN0YW5kaW5nIGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZCoqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZywgXCJZZWFoLCBgQ09ORklHX0NQVVNFVFNgIGlzIGFic29sdXRlbHkgY3J1Y2lhbCBoZXJlLlwiIFdpdGhvdXQgaXQsIGBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWRgIGlzIGJhc2ljYWxseSBqdXN0IGFsaWFzZWQgdG8gYG5vZGVfc3RhdGVzW05fTUVNT1JZXWAsIHdoaWNoIGRvZXNuJ3QgZ2l2ZSBtZSB0aGUgZmluZS1ncmFpbmVkIGNvbnRyb2wgSSdtIGxvb2tpbmcgZm9yLiBJdCdzIGxpa2UgaGF2aW5nIGEgZmFuY3kgdG9vbCBhbmQgdGhlbiBub3QgdHVybmluZyBpdCBvbi4gV2hhdCdzIHRoZSBwb2ludD8gSSBuZWVkIGBDT05GSUdfQ1BVU0VUU2AgZW5hYmxlZCB0byBhY3R1YWxseSAqdXNlKiB0aGlzIHRoaW5nIHRvIHBhcnRpdGlvbiBtZW1vcnkgZWZmZWN0aXZlbHkuIFxuXG5IbW0sIHJpZ2h0LCBub3cgd2hlcmUgKmlzKiBgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkYCBhY3R1YWxseSBkZWZpbmVkPyBPaCwgeWVzLCBvZiBjb3Vyc2UsIGl0J3MgaGlkaW5nIGluIGBpbmNsdWRlL2xpbnV4L2NwdXNldC5oYC4gVGltZSB0byBkaXZlIGludG8gdGhlIHNvdXJjZSBhbmQgc2VlIGV4YWN0bHkgaG93IGl0J3MgaW1wbGVtZW50ZWQgYW5kIHdoYXQgaXQgZGVwZW5kcyBvbi4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGRlZmluaXRpb24gdG8gYmUgZW50aXJlbHkgc3VyZS4gR290dGEgYmUgdGhvcm91Z2guIExldCdzIHNlZSB3aGF0IHRoYXQgaGVhZGVyIGZpbGUgc2F5cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM3OTUsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMDo0NzoxOS43OTM5NjU4NTNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MzkzNzcwNTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvY3B1c2V0Lmg9ODM9ZXh0ZXJuIG5vZGVtYXNrX3QgY3B1c2V0X21lbXNfYWxsb3dlZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApO1xcbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg6ODQ6I2RlZmluZSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQgKGN1cnJlbnQtXFx1MDAzZW1lbXNfYWxsb3dlZClcXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTg1LXZvaWQgY3B1c2V0X2luaXRfY3VycmVudF9tZW1zX2FsbG93ZWQodm9pZCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oPTIxOT1zdGF0aWMgaW5saW5lIG5vZGVtYXNrX3QgY3B1c2V0X21lbXNfYWxsb3dlZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTIyMy1cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oOjIyNDojZGVmaW5lIGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZCAobm9kZV9zdGF0ZXNbTl9NRU1PUlldKVxcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMjI1LXN0YXRpYyBpbmxpbmUgdm9pZCBjcHVzZXRfaW5pdF9jdXJyZW50X21lbXNfYWxsb3dlZCh2b2lkKSB7fVxcbi0tXFxua2VybmVsL3NjaGVkL2ZhaXIuYz00MDc2PXN0YXRpYyB2b2lkIHRhc2tfbnVtYV93b3JrKHN0cnVjdCBjYWxsYmFja19oZWFkICp3b3JrKVxcbi0tXFxua2VybmVsL3NjaGVkL2ZhaXIuYy00MTA3LVxcdCAqL1xcbmtlcm5lbC9zY2hlZC9mYWlyLmM6NDEwODpcXHRpZiAoY3B1c2V0c19lbmFibGVkKCkgXFx1MDAyNlxcdTAwMjYgbm9kZXNfd2VpZ2h0KGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZCkgPT0gMSkge1xcbmtlcm5lbC9zY2hlZC9mYWlyLmM6NDEwOTpcXHRcXHR0cmFjZV9zY2hlZF9za2lwX2NwdXNldF9udW1hKGN1cnJlbnQsIFxcdTAwMjZjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQpO1xcbmtlcm5lbC9zY2hlZC9mYWlyLmMtNDExMC1cXHRcXHRyZXR1cm47XFxuLS1cXG5tbS9odWdldGxiLmM9MjI0NT1zdGF0aWMgaW50IGdhdGhlcl9zdXJwbHVzX3BhZ2VzKHN0cnVjdCBoc3RhdGUgKmgsIGxvbmcgZGVsdGEpXFxuLS1cXG5tbS9odWdldGxiLmMtMjI1Ny1cXHRpZiAobWJpbmRfbm9kZW1hc2spXFxubW0vaHVnZXRsYi5jOjIyNTg6XFx0XFx0bm9kZXNfYW5kKGFsbG9jX25vZGVtYXNrLCAqbWJpbmRfbm9kZW1hc2ssIGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZCk7XFxubW0vaHVnZXRsYi5jLTIyNTktXFx0ZWxzZVxcbm1tL2h1Z2V0bGIuYzoyMjYwOlxcdFxcdGFsbG9jX25vZGVtYXNrID0gY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkO1xcbm1tL2h1Z2V0bGIuYy0yMjYxLVxcbi0tXFxubW0vaHVnZXRsYi5jPTQ1MDA9c3RhdGljIHVuc2lnbmVkIGludCBhbGxvd2VkX21lbXNfbnIoc3RydWN0IGhzdGF0ZSAqaClcXG4tLVxcbm1tL2h1Z2V0bGIuYy00NTA4LVxcdG1iaW5kX25vZGVtYXNrID0gcG9saWN5X21iaW5kX25vZGVtYXNrKGdmcF9tYXNrKTtcXG5tbS9odWdldGxiLmM6NDUwOTpcXHRmb3JfZWFjaF9ub2RlX21hc2sobm9kZSwgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkKSB7XFxubW0vaHVnZXRsYi5jLTQ1MTAtXFx0XFx0aWYgKCFtYmluZF9ub2RlbWFzayB8fCBub2RlX2lzc2V0KG5vZGUsICptYmluZF9ub2RlbWFzaykpXFxuLS1cXG5tbS9odWdldGxiX2NtYS5jPTI4PXN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXFxuLS1cXG5tbS9odWdldGxiX2NtYS5jLTQzLVxcdFxcdGNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7XFxubW0vaHVnZXRsYl9jbWEuYzo0NDpcXHRcXHRsb2NhbF9ub2RlX21hc2sgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XFxubW0vaHVnZXRsYl9jbWEuYy00NS1cXHRcXHRubWFzayA9IFxcdTAwMjZsb2NhbF9ub2RlX21hc2s7XFxuLS1cXG5tbS9tZW1wb2xpY3kuYz00MDQ9c3RhdGljIGludCBtcG9sX3NldF9ub2RlbWFzayhzdHJ1Y3QgbWVtcG9saWN5ICpwb2wsXFxuLS1cXG5tbS9tZW1wb2xpY3kuYy00MTgtXFx0bm9kZXNfYW5kKG5zYy1cXHUwMDNlbWFzazEsXFxubW0vbWVtcG9saWN5LmM6NDE5OlxcdFxcdCAgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkLCBub2RlX3N0YXRlc1tOX01FTU9SWV0pO1xcbm1tL21lbXBvbGljeS5jLTQyMC1cXG4tLVxcbm1tL21lbXBvbGljeS5jLTQzMC1cXHRlbHNlXFxubW0vbWVtcG9saWN5LmM6NDMxOlxcdFxcdHBvbC1cXHUwMDNldy5jcHVzZXRfbWVtc19hbGxvd2VkID0gY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkO1xcbm1tL21lbXBvbGljeS5jLTQzMi1cXG4tLVxcbm1tL21lbXBvbGljeS5jPTExNDc9c3RhdGljIGxvbmcgZG9fZ2V0X21lbXBvbGljeShpbnQgKnBvbGljeSwgbm9kZW1hc2tfdCAqbm1hc2ssXFxuLS1cXG5tbS9tZW1wb2xpY3kuYy0xMTYzLVxcdFxcdHRhc2tfbG9jayhjdXJyZW50KTtcXG5tbS9tZW1wb2xpY3kuYzoxMTY0OlxcdFxcdCpubWFzayAgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XFxubW0vbWVtcG9saWN5LmMtMTE2NS1cXHRcXHR0YXNrX3VubG9jayhjdXJyZW50KTtcXG4tLVxcbm1tL29vbV9raWxsLmM9MjQ5PXN0YXRpYyBlbnVtIG9vbV9jb25zdHJhaW50IGNvbnN0cmFpbmVkX2FsbG9jKHN0cnVjdCBvb21fY29udHJvbCAqb2MpXFxuLS1cXG5tbS9vb21fa2lsbC5jLTI5OC1cXHRcXHRvYy1cXHUwMDNldG90YWxwYWdlcyA9IHRvdGFsX3N3YXBfcGFnZXM7XFxubW0vb29tX2tpbGwuYzoyOTk6XFx0XFx0Zm9yX2VhY2hfbm9kZV9tYXNrKG5pZCwgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkKVxcbm1tL29vbV9raWxsLmMtMzAwLVxcdFxcdFxcdG9jLVxcdTAwM2V0b3RhbHBhZ2VzICs9IG5vZGVfcHJlc2VudF9wYWdlcyhuaWQpO1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTQ3MjU9X19hbGxvY19wYWdlc19zbG93cGF0aChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTQ4MDYtXFx0XFx0XFx0XFx0XFx0YWMtXFx1MDAzZWhpZ2hlc3Rfem9uZWlkeCxcXG5tbS9wYWdlX2FsbG9jLmM6NDgwNzpcXHRcXHRcXHRcXHRcXHRcXHUwMDI2Y3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkKTtcXG5tbS9wYWdlX2FsbG9jLmMtNDgwOC1cXHRcXHRpZiAoIXpvbmVsaXN0X3pvbmUoeikpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9NTAyNj1zdGF0aWMgaW5saW5lIGJvb2wgcHJlcGFyZV9hbGxvY19wYWdlcyhnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTUwNDItXFx0XFx0aWYgKGluX3Rhc2soKSBcXHUwMDI2XFx1MDAyNiAhYWMtXFx1MDAzZW5vZGVtYXNrKVxcbm1tL3BhZ2VfYWxsb2MuYzo1MDQzOlxcdFxcdFxcdGFjLVxcdTAwM2Vub2RlbWFzayA9IFxcdTAwMjZjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XFxubW0vcGFnZV9hbGxvYy5jLTUwNDQtXFx0XFx0ZWxzZVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTUyNjg9c3RydWN0IHBhZ2UgKl9fYWxsb2NfZnJvemVuX3BhZ2VzX25vcHJvZihnZnBfdCBnZnAsIHVuc2lnbmVkIGludCBvcmRlcixcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy01MzEyLVxcdCAqIFJlc3RvcmUgdGhlIG9yaWdpbmFsIG5vZGVtYXNrIGlmIGl0IHdhcyBwb3RlbnRpYWxseSByZXBsYWNlZCB3aXRoXFxubW0vcGFnZV9hbGxvYy5jOjUzMTM6XFx0ICogXFx1MDAyNmNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZCB0byBvcHRpbWl6ZSB0aGUgZmFzdC1wYXRoIGF0dGVtcHQuXFxubW0vcGFnZV9hbGxvYy5jLTUzMTQtXFx0ICovXFxuLS1cXG5tbS9zaG93X21lbS5jPTExOT1zdGF0aWMgYm9vbCBzaG93X21lbV9ub2RlX3NraXAodW5zaWduZWQgaW50IGZsYWdzLCBpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzaylcXG4tLVxcbm1tL3Nob3dfbWVtLmMtMTI5LVxcdGlmICghbm9kZW1hc2spXFxubW0vc2hvd19tZW0uYzoxMzA6XFx0XFx0bm9kZW1hc2sgPSBcXHUwMDI2Y3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkO1xcbm1tL3Nob3dfbWVtLmMtMTMxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMDo0NzoyMS42MzMzNDg2MVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzY2Mjk3MzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuXG5cbioqRGV0ZXJtaW5pbmcgdGhlIERlcGVuZGVuY2llcyBvZiBgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkYCoqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoYXQncyByZXF1aXJlZCBmb3IgYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAgdG8gYmVoYXZlIGFzIGV4cGVjdGVkLCBzcGVjaWZpY2FsbHksIGZvciBpdCB0byByZXNvbHZlIHRvIGBjdXJyZW50LVx1MDAzZW1lbXNfYWxsb3dlZGAuIFRoYXQgbWVhbnMgYENPTkZJR19DUFVTRVRTYCBpcyBhIGRlZmluaXRlIHJlcXVpcmVtZW50LiBXaXRob3V0IGl0LCB0aGUgZnVuY3Rpb24gcmV2ZXJ0cyB0byB1c2luZyBgbm9kZV9zdGF0ZXNbTl9NRU1PUlldYCwgd2hpY2ggaXNuJ3QgdGhlIGludGVuZGVkIGJlaGF2aW9yLiBTbywgYENPTkZJR19DUFVTRVRTYCBpcyB0aGUgc3RhcnRpbmcgcG9pbnQuXG5cbkJ1dCBob2xkIG9uLCB0aGVyZSdzIG1vcmUgdG8gY29uc2lkZXIgaGVyZS4gSSBhbHNvIHNlZW0gdG8gcmVjYWxsIHRoYXQgYm90aCBgQ09ORklHX0hVR0VUTEJGU2AgYW5kIGBDT05GSUdfQ01BYCBoYXZlIHNvbWUgY29ubmVjdGlvbiB0byB0aGlzIGFyZWEuIExldCBtZSBwYXVzZSBhbmQgZGVsdmUgZGVlcGVyIGludG8gdGhlIGRlcGVuZGVuY3kgdHJlZSBvZiBgQ09ORklHX0NNQWAuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhIGNydWNpYWwgbGluayBpbiB0aGlzIGNoYWluLiBMZXQgbWUgc2VlIHdoZXJlIHRoYXQgdGFrZXMgbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1Nzk1LCJPdXRwdXRUb2tlbnMiOjE2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDc6MjQuOTk5NjUwODdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NDQyNDgwNjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENNQVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvZG1hL0tjb25maWc9MTczPWNvbmZpZyBETUFfTlVNQV9DTUFcXG4tLVxcbmtlcm5lbC9kbWEvS2NvbmZpZy0xODUtXFxua2VybmVsL2RtYS9LY29uZmlnOjE4Njpjb25maWcgQ01BX1NJWkVfUEVSTlVNQVxcbmtlcm5lbC9kbWEvS2NvbmZpZy0xODctXFx0Ym9vbCBcXFwiRGVmYXVsdCBDTUEgYXJlYSBwZXIgTlVNQSBub2RlXFxcIlxcbi0tXFxua2VybmVsL2RtYS9LY29uZmlnPTE5Nj1jb21tZW50IFxcXCJEZWZhdWx0IGNvbnRpZ3VvdXMgbWVtb3J5IGFyZWEgc2l6ZTpcXFwiXFxua2VybmVsL2RtYS9LY29uZmlnLTE5Ny1cXG5rZXJuZWwvZG1hL0tjb25maWc6MTk4OmNvbmZpZyBDTUFfU0laRV9NQllURVNcXG5rZXJuZWwvZG1hL0tjb25maWctMTk5LVxcdGludCBcXFwiU2l6ZSBpbiBNZWdhIEJ5dGVzXFxcIlxcbi0tXFxua2VybmVsL2RtYS9LY29uZmlnLTIwOC1cXG5rZXJuZWwvZG1hL0tjb25maWc6MjA5OmNvbmZpZyBDTUFfU0laRV9QRVJDRU5UQUdFXFxua2VybmVsL2RtYS9LY29uZmlnLTIxMC1cXHRpbnQgXFxcIlBlcmNlbnRhZ2Ugb2YgdG90YWwgbWVtb3J5XFxcIlxcbi0tXFxua2VybmVsL2RtYS9LY29uZmlnPTIyMD1jaG9pY2VcXG4tLVxcbmtlcm5lbC9kbWEvS2NvbmZpZy0yMjMtXFxua2VybmVsL2RtYS9LY29uZmlnOjIyNDpjb25maWcgQ01BX1NJWkVfU0VMX01CWVRFU1xcbmtlcm5lbC9kbWEvS2NvbmZpZy0yMjUtXFx0Ym9vbCBcXFwiVXNlIG1lZ2EgYnl0ZXMgdmFsdWUgb25seVxcXCJcXG5rZXJuZWwvZG1hL0tjb25maWctMjI2LVxcbmtlcm5lbC9kbWEvS2NvbmZpZzoyMjc6Y29uZmlnIENNQV9TSVpFX1NFTF9QRVJDRU5UQUdFXFxua2VybmVsL2RtYS9LY29uZmlnLTIyOC1cXHRib29sIFxcXCJVc2UgcGVyY2VudGFnZSB2YWx1ZSBvbmx5XFxcIlxcbmtlcm5lbC9kbWEvS2NvbmZpZy0yMjktXFxua2VybmVsL2RtYS9LY29uZmlnOjIzMDpjb25maWcgQ01BX1NJWkVfU0VMX01JTlxcbmtlcm5lbC9kbWEvS2NvbmZpZy0yMzEtXFx0Ym9vbCBcXFwiVXNlIGxvd2VyIHZhbHVlIChtaW5pbXVtKVxcXCJcXG5rZXJuZWwvZG1hL0tjb25maWctMjMyLVxcbmtlcm5lbC9kbWEvS2NvbmZpZzoyMzM6Y29uZmlnIENNQV9TSVpFX1NFTF9NQVhcXG5rZXJuZWwvZG1hL0tjb25maWctMjM0LVxcdGJvb2wgXFxcIlVzZSBoaWdoZXIgdmFsdWUgKG1heGltdW0pXFxcIlxcbi0tXFxua2VybmVsL2RtYS9LY29uZmlnPTIzNj1lbmRjaG9pY2VcXG5rZXJuZWwvZG1hL0tjb25maWctMjM3LVxcbmtlcm5lbC9kbWEvS2NvbmZpZzoyMzg6Y29uZmlnIENNQV9BTElHTk1FTlRcXG5rZXJuZWwvZG1hL0tjb25maWctMjM5LVxcdGludCBcXFwiTWF4aW11bSBQQUdFX1NJWkUgb3JkZXIgb2YgYWxpZ25tZW50IGZvciBjb250aWd1b3VzIGJ1ZmZlcnNcXFwiXFxuLS1cXG5tbS9LY29uZmlnPTEwNjQ9Y29uZmlnIEhBVkVfU0VUVVBfUEVSX0NQVV9BUkVBXFxuLS1cXG5tbS9LY29uZmlnLTEwNjYtXFxubW0vS2NvbmZpZzoxMDY3OmNvbmZpZyBDTUFcXG5tbS9LY29uZmlnLTEwNjgtXFx0Ym9vbCBcXFwiQ29udGlndW91cyBNZW1vcnkgQWxsb2NhdG9yXFxcIlxcbi0tXFxubW0vS2NvbmZpZy0xMDgxLVxcbm1tL0tjb25maWc6MTA4Mjpjb25maWcgQ01BX0RFQlVHRlNcXG5tbS9LY29uZmlnLTEwODMtXFx0Ym9vbCBcXFwiQ01BIGRlYnVnZnMgaW50ZXJmYWNlXFxcIlxcbi0tXFxubW0vS2NvbmZpZy0xMDg3LVxcbm1tL0tjb25maWc6MTA4ODpjb25maWcgQ01BX1NZU0ZTXFxubW0vS2NvbmZpZy0xMDg5LVxcdGJvb2wgXFxcIkNNQSBpbmZvcm1hdGlvbiB0aHJvdWdoIHN5c2ZzIGludGVyZmFjZVxcXCJcXG4tLVxcbm1tL0tjb25maWctMTA5NC1cXG5tbS9LY29uZmlnOjEwOTU6Y29uZmlnIENNQV9BUkVBU1xcbm1tL0tjb25maWctMTA5Ni1cXHRpbnQgXFxcIk1heGltdW0gY291bnQgb2YgdGhlIENNQSBhcmVhc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDc6MjYuODQzOTA1Mzg2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NDkwMTMxMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgTWVtb3J5IE1hbmFnZW1lbnQgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgc28gYENPTkZJR19DTUFgLCB0aGF0J3MgY2xlYXJseSBkZWZpbmVkIGluIGBtbS9LY29uZmlnYC4gR29vZCwgdGhhdCdzIHdoZXJlIEkgZXhwZWN0ZWQgdG8gZmluZCBpdC4gTm93LCBnaXZlbiBteSBjdXJyZW50IGZvY3VzLCBJIHNob3VsZCBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzLiBMZXQncyBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBgQ09ORklHX0hVR0VUTEJGU2AuIEkgd2FudCB0byBzZWUgaWYgZW5hYmxpbmcgb25lIGltcGFjdHMgdGhlIG90aGVyLCBvciBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBpbnRlcmFjdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBHb3R0YSB0cmFjayB0aGVzZSBkZXBlbmRlbmNpZXMgY2xvc2VseS4gTGV0J3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgdGVsbHMgdXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2ODgzLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDc6MjkuNjkyOTIxMDQyWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODU5MzE4NTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBIVUdFVExCRlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvS2NvbmZpZz0yNDc9Y29uZmlnIEFSQ0hfU1VQUE9SVFNfSFVHRVRMQkZTXFxuLS1cXG5mcy9LY29uZmlnLTI0OS1cXG5mcy9LY29uZmlnOjI1MDptZW51Y29uZmlnIEhVR0VUTEJGU1xcbmZzL0tjb25maWctMjUxLVxcdGJvb2wgXFxcIkh1Z2VUTEIgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDc6MzEuNTUyMjQ4MDY3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MTkxMDE5MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyBLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQgbWUgc2VlLi4uIEknbSBsb29raW5nIGF0IGEgcGFydGljdWxhciBzdWJzeXN0ZW0gb3IgZmVhdHVyZSB3aXRoaW4gdGhlIGtlcm5lbCwgYW5kIGl0IHNlZW1zIHByZXR0eSBjbGVhciB0aGF0IGBDT05GSUdfSFVHRVRMQkZTYCBpcyBhIHByZXJlcXVpc2l0ZS4gVGhhdCdzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCdzIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBjb25maWcuXG5cbkhtbS4uLiBidXQgaG9sZCBvbiBhIHNlY29uZC4gSSdtIGFsc28gZ2xhbmNpbmcgYXQgdGhlIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgb2YgdGhlIG1vZHVsZSwgYW5kIHNvbWV0aGluZyB0ZWxscyBtZSBJIG1pZ2h0IGFsc28gbmVlZCB0byBjb25zaWRlciBgQ09ORklHX0hVR0VUTEJfUEFHRWAsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhhdCBgbW0vaHVnZXRsYi5jYCBpcyBpbnZvbHZlZC4gSSBrbm93IHRoYXQgZmlsZSBoYW5kbGVzIEh1Z2VUTEItc3BlY2lmaWMgbWVtb3J5IG1hbmFnZW1lbnQuIFNvIHdoaWxlIGBDT05GSUdfSFVHRVRMQkZTYCBzZXRzIHVwIHRoZSBmaWxlc3lzdGVtLCBpdCBsb29rcyBsaWtlIGBDT05GSUdfSFVHRVRMQl9QQUdFYCBtaWdodCBiZSBhIG1vcmUgZmluZS1ncmFpbmVkIGNvbmZpZ3VyYXRpb24gY2hvaWNlIHdoaWNoIGhlbHBzIGRlZmluZXMgaG93IHRoZSBwYWdlcyB3aWxsIGJlIGhhbmRsZWQsIHdoaWNoIEkgbWlnaHQgbmVlZCB0byBleHBsaWNpdGx5IHNlbGVjdCBpZiBJIHdhbnQgdG8gbWF4aW1pemUgcGVyZm9ybWFuY2UuIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBkb2N1bWVudGF0aW9uIGZvciBib3RoIHRvIGJlIGNlcnRhaW4uIEkgbmVlZCB0byB0aGluayB0aHJvdWdoIGhvdyB0aGVzZSByZWxhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MTQ1LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDc6MzUuMDcxMzUyOTYzWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODk0MDI1MDczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBIVUdFVExCX1BBR0VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zaC9tbS9LY29uZmlnPTE1OD1jaG9pY2VcXG4tLVxcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNjMtXFxuYXJjaC9zaC9tbS9LY29uZmlnOjE2NDpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfNjRLXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE2NS1cXHRib29sIFxcXCI2NGtCXFxcIlxcbi0tXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE2Ny1cXG5hcmNoL3NoL21tL0tjb25maWc6MTY4OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV8yNTZLXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE2OS1cXHRib29sIFxcXCIyNTZrQlxcXCJcXG4tLVxcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzEtXFxuYXJjaC9zaC9tbS9LY29uZmlnOjE3Mjpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfMU1CXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE3My1cXHRib29sIFxcXCIxTUJcXFwiXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE3NC1cXG5hcmNoL3NoL21tL0tjb25maWc6MTc1OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV80TUJcXG5hcmNoL3NoL21tL0tjb25maWctMTc2LVxcdGJvb2wgXFxcIjRNQlxcXCJcXG4tLVxcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzgtXFxuYXJjaC9zaC9tbS9LY29uZmlnOjE3OTpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfNjRNQlxcbmFyY2gvc2gvbW0vS2NvbmZpZy0xODAtXFx0Ym9vbCBcXFwiNjRNQlxcXCJcXG4tLVxcbmZzL0tjb25maWc9MjYyPWlmIEhVR0VUTEJGU1xcbmZzL0tjb25maWc6MjYzOmNvbmZpZyBIVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUF9ERUZBVUxUX09OXFxuZnMvS2NvbmZpZy0yNjQtXFx0Ym9vbCBcXFwiSHVnZVRMQiBWbWVtbWFwIE9wdGltaXphdGlvbiAoSFZPKSBkZWZhdWx0cyB0byBvblxcXCJcXG4tLVxcbmZzL0tjb25maWc9MjcxPWVuZGlmICMgSFVHRVRMQkZTXFxuZnMvS2NvbmZpZy0yNzItXFxuZnMvS2NvbmZpZzoyNzM6Y29uZmlnIEhVR0VUTEJfUEFHRVxcbmZzL0tjb25maWctMjc0LVxcdGRlZl9ib29sIEhVR0VUTEJGU1xcbi0tXFxuZnMvS2NvbmZpZy0yNzYtXFxuZnMvS2NvbmZpZzoyNzc6Y29uZmlnIEhVR0VUTEJfUEFHRV9PUFRJTUlaRV9WTUVNTUFQXFxuZnMvS2NvbmZpZy0yNzgtXFx0ZGVmX2Jvb2wgSFVHRVRMQl9QQUdFXFxuLS1cXG5tbS9LY29uZmlnPTcwNj1jb25maWcgQVJDSF9FTkFCTEVfVEhQX01JR1JBVElPTlxcbi0tXFxubW0vS2NvbmZpZy03MDgtXFxubW0vS2NvbmZpZzo3MDk6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFX1ZBUklBQkxFXFxubW0vS2NvbmZpZy03MTAtXFx0ZGVmX2Jvb2wgblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMDo0NzozNi45NjUzODM3OThaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQxMzczNjgwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDdXJyZW50IEtlcm5lbCBDb25maWd1cmF0aW9uIFRob3VnaHRzKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGUga2VybmVsIGNvbmZpZyBvcHRpb25zLCBgQ09ORklHX0hVR0VUTEJfUEFHRWAgZGVmYXVsdHMgdG8gdXNpbmcgYEhVR0VUTEJGU2AuIFRoYXQgc2ltcGxpZmllcyB0aGluZ3MuIFdoaWNoIG1lYW5zIEkgc2hvdWxkIHJlYWxseSBqdXN0IGJlIGNvbmNlcm5lZCBhYm91dCBgQ09ORklHX0hVR0VUTEJGU2AgZm9yIG5vdy4gSGFuZyBvbiwgdGhvdWdoLi4uIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBUaGF0IGBhbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW9gIGZ1bmN0aW9u4oCmIGl0J3Mgb25seSBkZWZpbmVkIGlmIHdlIGhhdmUgYm90aCBgQ09ORklHX0FSQ0hfSEFTX0dJR0FOVElDX1BBR0VgICphbmQqIGBDT05GSUdfQ09OVElHX0FMTE9DYCBlbmFibGVkLiBSaWdodC4gT2theSwgbGV0IG1lIGdvIGJhY2sgYW5kIGdpdmUgYG1tL2h1Z2V0bGIuY2AgYW5vdGhlciBsb29rIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIGNydWNpYWwuIEdvdHRhIGdldCB0aGlzIHJpZ2h0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODA0MywiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ3OjQwLjM3OTEyMzU3N1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg3ODI0NzA4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfQVJDSF9IQVNfR0lHQU5USUNfUEFHRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2FzbS1nZW5lcmljL2h1Z2V0bGIuaD0xMjU9c3RhdGljIGlubGluZSBib29sIGdpZ2FudGljX3BhZ2VfcnVudGltZV9zdXBwb3J0ZWQodm9pZClcXG5pbmNsdWRlL2FzbS1nZW5lcmljL2h1Z2V0bGIuaC0xMjYte1xcbmluY2x1ZGUvYXNtLWdlbmVyaWMvaHVnZXRsYi5oOjEyNzpcXHRyZXR1cm4gSVNfRU5BQkxFRChDT05GSUdfQVJDSF9IQVNfR0lHQU5USUNfUEFHRSk7XFxuaW5jbHVkZS9hc20tZ2VuZXJpYy9odWdldGxiLmgtMTI4LX1cXG4tLVxcbm1tL2h1Z2V0bGIuYz0xMzIwPXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmRlcXVldWVfaHVnZXRsYl9mb2xpb192bWEoc3RydWN0IGhzdGF0ZSAqaCxcXG4tLVxcbm1tL2h1Z2V0bGIuYy0xMzU4LVxcbm1tL2h1Z2V0bGIuYzoxMzU5OiNpZiBkZWZpbmVkKENPTkZJR19BUkNIX0hBU19HSUdBTlRJQ19QQUdFKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19DT05USUdfQUxMT0MpXFxubW0vaHVnZXRsYi5jLTEzNjAtc3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfZ2lnYW50aWNfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXFxuLS1cXG5tbS9odWdldGxiLmMtMTM3NS19XFxubW0vaHVnZXRsYi5jOjEzNzY6I2Vsc2UgLyogIUNPTkZJR19BUkNIX0hBU19HSUdBTlRJQ19QQUdFIHx8ICFDT05GSUdfQ09OVElHX0FMTE9DICovXFxubW0vaHVnZXRsYi5jLTEzNzctc3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfZ2lnYW50aWNfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssIGludCBuaWQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ3OjQyLjI1NzM3NjQ5MloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjMzMTY3MDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBkZWVwIGluIHRoZSB3ZWVkcyBvZiBrZXJuZWwgY29uZmlndXJhdGlvbjpcblxuKipOYXZpZ2F0aW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGl0IGxvb2tzIGxpa2UgSSBuZWVkIHRvIGVuYWJsZSBgQ09ORklHX0FSQ0hfSEFTX0dJR0FOVElDX1BBR0VgIHRvIGdldCB0aGlzIHRoaW5nIHdvcmtpbmcuIEJ1dCBob2xkIG9uLCB0aGUgYnVpbGQgcHJvY2VzcyBpcyBmbGFnZ2luZyBzb21ldGhpbmcgZWxzZSDigJMgYENPTkZJR19DT05USUdfQUxMT0NgLiBMZXQgbWUganVzdCBwYXVzZSBoZXJlLiBCZWZvcmUgSSBjb21taXQgdG8gYW55dGhpbmcsIEkgc2hvdWxkIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3by4gSSBuZWVkIHRvIGRpZyBpbnRvIGBDT05GSUdfQ09OVElHX0FMTE9DYC4gVGhpcyBpcyB3aGVyZSBJIHN0YXJ0IGludmVzdGlnYXRpbmcgdGhlIGRlcGVuZGVuY2llcyBhbmQgaW50ZXJhY3Rpb25zIGJldHdlZW4gdGhlc2UgY29uZmlndXJhdGlvbnMuIEl04oCZcyBiZXN0IHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBiZWZvcmUgSSBnbyBhbmQgYnJlYWsgc29tZXRoaW5nIGVsc2UhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NjQ5LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDc6NDUuNDkwNTQ3NTY3WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODMyMTc2NTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDT05USUdfQUxMT0NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz03MDk9Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFX1ZBUklBQkxFXFxuLS1cXG5tbS9LY29uZmlnLTcxOC1cXG5tbS9LY29uZmlnOjcxOTpjb25maWcgQ09OVElHX0FMTE9DXFxubW0vS2NvbmZpZy03MjAtXFx0ZGVmX2Jvb2wgKE1FTU9SWV9JU09MQVRJT04gXFx1MDAyNlxcdTAwMjYgQ09NUEFDVElPTikgfHwgQ01BXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ3OjQ3LjMyMjcyOTMyM1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTAyNzY2NDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBNZW1vcnkgQWxsb2NhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gU28sIGBDT05USUdfQUxMT0NgIGJ5IGRlZmF1bHQgaXMgc2V0IHVwIHRvIHVzZSBgQ01BYCDigJMgdGhhdCdzIHRoZSBDb250aW51b3VzIE1lbW9yeSBBbGxvY2F0b3Ig4oCTIGFuZCB0aGF0IG1lYW5zIGlmIGBDT05GSUdfQ01BYCBpcyBlbmFibGVkLCB0aGVuIHdlJ3JlIGdvb2QgdG8gZ28uIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZC4gQnV0LCBob2xkIG9uIGEgc2VjLi4uIFdoYXQgYWJvdXQgdGhhdCBvdGhlciBwYXJhbWV0ZXIgYENPTkZJR19BUkNIX0hBU19HSUdBTlRJQ19QQUdFYD8gVGhhdCBkZWZpbml0ZWx5IHBsYXlzIGEgcm9sZSBpbiBob3cgbWVtb3J5IGlzIGhhbmRsZWQsIHNwZWNpZmljYWxseSB3aXRoIGxhcmdlIHBhZ2VzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aG9zZSBzZXR0aW5ncy4gSXQncyBpbXBvcnRhbnQgdG8gY29uc2lkZXIgaWYgZW5hYmxpbmcgYENNQWAgaGFzIGFueSBpbXBsaWNhdGlvbiBpbiB0aGUgdXNlLCBvciBwZXJmb3JtYW5jZSwgb2YgbGFyZ2UgcGFnZXMuIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgYW5kIGltcGxpY2F0aW9ucyBvZiB0aG9zZSB0d28gcGFyYW1ldGVycy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg5NDcsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMDo0Nzo1MC40MjU0OTgyNDJaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5ODQxMTU1MDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFSQ0hfSEFTX0dJR0FOVElDX1BBR0VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvS2NvbmZpZz0yODM9Y29uZmlnIEhVR0VUTEJfUE1EX1BBR0VfVEFCTEVfU0hBUklOR1xcbi0tXFxuZnMvS2NvbmZpZy0yODYtXFxuZnMvS2NvbmZpZzoyODc6Y29uZmlnIEFSQ0hfSEFTX0dJR0FOVElDX1BBR0VcXG5mcy9LY29uZmlnLTI4OC1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ3OjUyLjQwOTYxOTA5M1oiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTI1ODk0ODc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgQXJjaGl0ZWN0dXJhbCBEZXBlbmRlbmN5KipcblxuUmlnaHQsIHNvIHdlJ3ZlIGdvdCB0aGlzIGVsZW1lbnQsIGFuZCBteSBpbW1lZGlhdGUgY29uY2VybiBpcyBpdHMgZGVwZW5kZW5jeSBwcm9maWxlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aGljaCogYXJjaGl0ZWN0dXJlcyBhcmUgZXZlbiBib3RoZXJpbmcgdG8gdXNlIGl0LiBUaGlzIGlzbid0IGp1c3QgYWJvdXQgZ2VuZXJhbCBhd2FyZW5lc3MsIEkgbmVlZCB0byBrbm93IHRoZSBkaXJlY3QgY29ubmVjdGlvbnMuIE5vIHBvaW50IGluIG9wdGltaXppbmcgaXQsIGltcHJvdmluZyBpdHMgaW50ZXJmYWNlLCBvciBldmVuIHdvcnJ5aW5nIGFib3V0IGl0cyBsaWZlY3ljbGUgaWYgaXQncyBub3QgYWN0dWFsbHkgKnNlbGVjdGVkKiBhbmQgaW5jb3Jwb3JhdGVkIGludG8gYW55IG1lYW5pbmdmdWwgYXJjaGl0ZWN0dXJhbCBwYXR0ZXJucy4gTGV04oCZcyBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIGFyY2hpdGVjdHVyZSBsYW5kc2NhcGUgYW5kIHRyYWNlIGl0cyB1c2FnZS4gVGltZSB0byBnZXQgc29tZSBhbnN3ZXJzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTI3NiwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ3OjU1LjMzNTUxNzExN1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg4NjA2MTY4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgQVJDSF9IQVNfR0lHQU5USUNfUEFHRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L0tjb25maWc9Mj1jb25maWcgQVJNNjRcXG4tLVxcbmFyY2gvYXJtNjQvS2NvbmZpZy0zMi1cXHRzZWxlY3QgQVJDSF9IQVNfR0NPVl9QUk9GSUxFX0FMTFxcbmFyY2gvYXJtNjQvS2NvbmZpZzozMzpcXHRzZWxlY3QgQVJDSF9IQVNfR0lHQU5USUNfUEFHRVxcbmFyY2gvYXJtNjQvS2NvbmZpZy0zNC1cXHRzZWxlY3QgQVJDSF9IQVNfS0NPVlxcbi0tXFxuYXJjaC9wb3dlcnBjL0tjb25maWc9MTE4PWNvbmZpZyBQUENcXG4tLVxcbmFyY2gvcG93ZXJwYy9LY29uZmlnLTEzOC1cXHRzZWxlY3QgQVJDSF9IQVNfR0NPVl9QUk9GSUxFX0FMTFxcbmFyY2gvcG93ZXJwYy9LY29uZmlnOjEzOTpcXHRzZWxlY3QgQVJDSF9IQVNfR0lHQU5USUNfUEFHRVxcdFxcdGlmIEFSQ0hfU1VQUE9SVFNfSFVHRVRMQkZTXFxuYXJjaC9wb3dlcnBjL0tjb25maWctMTQwLVxcdHNlbGVjdCBBUkNIX0hBU19LQ09WXFxuLS1cXG5hcmNoL3Jpc2N2L0tjb25maWc9MTM9Y29uZmlnIFJJU0NWXFxuLS1cXG5hcmNoL3Jpc2N2L0tjb25maWctMzUtXFx0c2VsZWN0IEFSQ0hfSEFTX0dDT1ZfUFJPRklMRV9BTExcXG5hcmNoL3Jpc2N2L0tjb25maWc6MzY6XFx0c2VsZWN0IEFSQ0hfSEFTX0dJR0FOVElDX1BBR0VcXG5hcmNoL3Jpc2N2L0tjb25maWctMzctXFx0c2VsZWN0IEFSQ0hfSEFTX0hXX1BURV9ZT1VOR1xcbi0tXFxuYXJjaC9zMzkwL0tjb25maWc9NzU9Y29uZmlnIFMzOTBcXG4tLVxcbmFyY2gvczM5MC9LY29uZmlnLTk3LVxcdHNlbGVjdCBBUkNIX0hBU19HQ09WX1BST0ZJTEVfQUxMXFxuYXJjaC9zMzkwL0tjb25maWc6OTg6XFx0c2VsZWN0IEFSQ0hfSEFTX0dJR0FOVElDX1BBR0VcXG5hcmNoL3MzOTAvS2NvbmZpZy05OS1cXHRzZWxlY3QgQVJDSF9IQVNfS0NPVlxcbi0tXFxuYXJjaC9zaC9LY29uZmlnPTI9Y29uZmlnIFNVUEVSSFxcbi0tXFxuYXJjaC9zaC9LY29uZmlnLTktXFx0c2VsZWN0IEFSQ0hfSEFTX0NVUlJFTlRfU1RBQ0tfUE9JTlRFUlxcbmFyY2gvc2gvS2NvbmZpZzoxMDpcXHRzZWxlY3QgQVJDSF9IQVNfR0lHQU5USUNfUEFHRVxcbmFyY2gvc2gvS2NvbmZpZy0xMS1cXHRzZWxlY3QgQVJDSF9IQVNfR0NPVl9QUk9GSUxFX0FMTFxcbi0tXFxuYXJjaC9zcGFyYy9LY29uZmlnPTcwPWNvbmZpZyBTUEFSQzY0XFxuLS1cXG5hcmNoL3NwYXJjL0tjb25maWctMTA3LVxcdHNlbGVjdCBQQ0lfRE9NQUlOUyBpZiBQQ0lcXG5hcmNoL3NwYXJjL0tjb25maWc6MTA4OlxcdHNlbGVjdCBBUkNIX0hBU19HSUdBTlRJQ19QQUdFXFxuYXJjaC9zcGFyYy9LY29uZmlnLTEwOS1cXHRzZWxlY3QgSEFWRV9TT0ZUSVJRX09OX09XTl9TVEFDS1xcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0yMz1jb25maWcgWDg2XzY0XFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTI2LVxcdCMgT3B0aW9ucyB0aGF0IGFyZSBpbmhlcmVudGx5IDY0LWJpdCBrZXJuZWwgb25seTpcXG5hcmNoL3g4Ni9LY29uZmlnOjI3OlxcdHNlbGVjdCBBUkNIX0hBU19HSUdBTlRJQ19QQUdFXFxuYXJjaC94ODYvS2NvbmZpZy0yOC1cXHRzZWxlY3QgQVJDSF9TVVBQT1JUU19NU0VBTF9TWVNURU1fTUFQUElOR1NcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDc6NTcuMjIxNTgzNTAyWiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4OTAwNzE4MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIENvZGUncyBDb25maWd1cmF0aW9uIGFuZCBLZXkgRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBmaWd1cmluZyBvdXQgdGhlIGNyaXRpY2FsIGNvbXBvbmVudHMuIEl0IGxvb2tzIGxpa2UgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmVzIGFyZSBwcmV0dHkgYnJvYWQgLSBgWDg2XzY0YCwgYEFSTTY0YCwgYFJJU0NWYCwgYFMzOTBgLCBgU1BBUkM2NGAsIGBTVVBFUkhgLCBhbmQgYFBQQ2AuIE5vIG5lZWQgdG8gc3BlY2lmeSB0aGVtLCB0aGUgY29kZSBoYW5kbGVzIGEgZ29vZCByYW5nZS5cblxuVGhlIGNvbmZpZ3MgSSBuZWVkIHRvIHBheSBhdHRlbnRpb24gdG8gYXJlIGBIVUdFVExCRlNgLCBgQ01BYCwgYW5kIGBDUFVTRVRTYC4gSSB0aGluayBJIHJlY2FsbCB0aGF0IGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIGlzIG9ubHkgY29tcGlsZWQgaWYgYm90aCBgQ09ORklHX0NNQWAgYW5kIGBDT05GSUdfSFVHRVRMQkZTYCBhcmUgc2V0LiBBbmQgYENQVVNFVFNgIGlzIGtleSwgYmVjYXVzZSBJJ2xsIG5lZWQgdG8gdXNlIGl0IHRvIHRlc3QgY3B1c2V0IGxvZ2ljLlxuXG5MZXQncyBzZWUgd2hhdCBmdW5jdGlvbnMgYXJlIG9mIGludGVyZXN0LiBJIG5lZWQgdG8gZm9jdXMgb246IGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIGFuZCB0aGVuIGBhbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW9gICh3aGljaCBpcyBtYXJrZWQgYXMgc3RhdGljLCBzbyBtaWdodCBiZSBpbmxpbmVkKS4gSG93ZXZlciwgdGhlIHJlYWxseSBpbXBvcnRhbnQgZnVuY3Rpb24gaXMgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2Agc2luY2UgaXQncyBnbG9iYWwuXG5cbkhvbGQgb24sIEkgZ290IHRoYXQgc2xpZ2h0bHkgd3JvbmcuIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIGlzbid0IHN0YXRpYy4gSXQncyBkZWZpbmVkIGluIGBtbS9odWdldGxiX2NtYS5jYCwgYW5kIGl0IGlzIG5vdCBleHBsaWNpdGx5IGV4cG9ydGVkLCBidXQgaXMgYSBnbG9iYWwgZnVuY3Rpb24uIFNvLCBJIG5lZWQgdG8gY2hlY2sgYG1tL2h1Z2V0bGJfY21hLmNgIHRvIHNlZSBob3cgaXQgd29ya3MgYW5kIHdoYXQgaXQgZG9lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAxMjQsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDg6MDMuMTExNjU4ODk4WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDQ4MjYzMTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9odWdldGxiLmM9MTM2MD1zdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcXG4tLVxcbm1tL2h1Z2V0bGIuYy0xMzY0LVxcbm1tL2h1Z2V0bGIuYzoxMzY1OlxcdGZvbGlvID0gaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKG9yZGVyLCBnZnBfbWFzaywgbmlkLCBub2RlbWFzayk7XFxubW0vaHVnZXRsYi5jLTEzNjYtXFx0aWYgKGZvbGlvKVxcbi0tXFxubW0vaHVnZXRsYl9jbWEuYz0yMj12b2lkIGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS9odWdldGxiX2NtYS5jLTI3LVxcbm1tL2h1Z2V0bGJfY21hLmM6Mjg6c3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcXG5tbS9odWdldGxiX2NtYS5jLTI5LVxcdFxcdGludCBuaWQsIG5vZGVtYXNrX3QgKm5vZGVtYXNrKVxcbi0tXFxubW0vaHVnZXRsYl9jbWEuaD02PXZvaWQgaHVnZXRsYl9jbWFfZnJlZV9mcm96ZW5fZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbyk7XFxubW0vaHVnZXRsYl9jbWEuaDo3OnN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXFxubW0vaHVnZXRsYl9jbWEuaC04LVxcdFxcdFxcdFxcdCAgICAgIGludCBuaWQsIG5vZGVtYXNrX3QgKm5vZGVtYXNrKTtcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmg9MTY9c3RhdGljIGlubGluZSB2b2lkIGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS9odWdldGxiX2NtYS5oLTE5LVxcbm1tL2h1Z2V0bGJfY21hLmg6MjA6c3RhdGljIGlubGluZSBzdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsXFxubW0vaHVnZXRsYl9jbWEuaC0yMS1cXHRcXHRnZnBfdCBnZnBfbWFzayxcXHRpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzaylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDg6MDUuMTU5OTMxNDc4WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMTAyODAwNzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipBbmFseXppbmcgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AgYW5kIGl0cyBDYWxsZXJzKipcblxuQWxyaWdodCwgc28gYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AgaXMgYSBnbG9iYWwgZnVuY3Rpb24sIGFuZCB0aGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIGl0J3MgYSBjcml0aWNhbCBwb2ludCB0byBpbnZlc3RpZ2F0ZS4gR2l2ZW4gdGhhdCBpdCdzIGdsb2JhbCwgdW5kZXJzdGFuZGluZyBpdHMgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIGlzIHBhcmFtb3VudC4gSSBzaG91bGQgZGVmaW5pdGVseSBmb2N1cyBteSBhbmFseXNpcyBvbiB0aGF0IGZ1bmN0aW9uLiBTaW5jZSBJIGhhdmUgYSBnbG9iYWwgZnVuY3Rpb24gSSBzaG91bGQgY2hlY2sgaXRzIGNhbGxlcnMuIEJhc2VkIG9uIHdoYXQgSSBzZWUgaGVyZSwgdGhlIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdCBhcmUgYG9ubHlfYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2Agb3IgdGhlIHZlcnkgc2ltaWxhciBzb3VuZGluZyBgYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2AuIExldCBtZSBzdGFydCBieSBsb29raW5nIGludG8gYGFsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW9gIGFuZCBzZWUgd2hhdCB0aGF0IGNhbiB0ZWxsIG1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTI3OSwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ4OjA5LjQ3MDIxMzk2MVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg2MTMyODg1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2h1Z2V0bGIuYz0xNzkxPXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2J1ZGR5X2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxcbi0tXFxubW0vaHVnZXRsYi5jLTE4MzUtXFxubW0vaHVnZXRsYi5jOjE4MzY6c3RhdGljIHN0cnVjdCBmb2xpbyAqb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXFxubW0vaHVnZXRsYi5jLTE4MzctXFx0XFx0Z2ZwX3QgZ2ZwX21hc2ssIGludCBuaWQsIG5vZGVtYXNrX3QgKm5tYXNrLFxcbi0tXFxubW0vaHVnZXRsYi5jLTE4NjItICovXFxubW0vaHVnZXRsYi5jOjE4NjM6c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxcbm1tL2h1Z2V0bGIuYy0xODY0LVxcdFxcdGdmcF90IGdmcF9tYXNrLCBpbnQgbmlkLCBub2RlbWFza190ICpubWFzaylcXG4tLVxcbm1tL2h1Z2V0bGIuYy0xODY3LVxcbm1tL2h1Z2V0bGIuYzoxODY4OlxcdGZvbGlvID0gb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsIG5tYXNrLCBOVUxMKTtcXG5tbS9odWdldGxiLmMtMTg2OS1cXHRpZiAoZm9saW8pXFxuLS1cXG5tbS9odWdldGxiLmM9MTg5Nj1zdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19wb29sX2h1Z2VfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcXG4tLVxcbm1tL2h1Z2V0bGIuYy0xOTA2LVxcbm1tL2h1Z2V0bGIuYzoxOTA3OlxcdFxcdGZvbGlvID0gb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBub2RlLFxcbm1tL2h1Z2V0bGIuYy0xOTA4LVxcdFxcdFxcdFxcdFxcdG5vZGVzX2FsbG93ZWQsIG5vZGVfYWxsb2Nfbm9yZXRyeSk7XFxuLS1cXG5tbS9odWdldGxiLmM9MjA3Nj1zdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19zdXJwbHVzX2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcXG4tLVxcbm1tL2h1Z2V0bGIuYy0yMDg4LVxcbm1tL2h1Z2V0bGIuYzoyMDg5OlxcdGZvbGlvID0gYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhoLCBnZnBfbWFzaywgbmlkLCBubWFzayk7XFxubW0vaHVnZXRsYi5jLTIwOTAtXFx0aWYgKCFmb2xpbylcXG4tLVxcbm1tL2h1Z2V0bGIuYz0yMTI0PXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX21pZ3JhdGVfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLCBnZnBfdCBnZnBfbWFzayxcXG4tLVxcbm1tL2h1Z2V0bGIuYy0yMTMxLVxcbm1tL2h1Z2V0bGIuYzoyMTMyOlxcdGZvbGlvID0gYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhoLCBnZnBfbWFzaywgbmlkLCBubWFzayk7XFxubW0vaHVnZXRsYi5jLTIxMzMtXFx0aWYgKCFmb2xpbylcXG4tLVxcbm1tL2h1Z2V0bGIuYz0yNjQxPXN0YXRpYyBpbnQgYWxsb2NfYW5kX2Rpc3NvbHZlX2h1Z2V0bGJfZm9saW8oc3RydWN0IGZvbGlvICpvbGRfZm9saW8sXFxuLS1cXG5tbS9odWdldGxiLmMtMjY4Ni1cXHRcXHRcXHRnZnBfbWFzayA9IGh0bGJfYWxsb2NfbWFzayhoKSB8IF9fR0ZQX1RISVNOT0RFO1xcbm1tL2h1Z2V0bGIuYzoyNjg3OlxcdFxcdFxcdG5ld19mb2xpbyA9IGFsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oaCwgZ2ZwX21hc2ssXFxubW0vaHVnZXRsYi5jLTI2ODgtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgbmlkLCBOVUxMKTtcXG4tLVxcbm1tL2h1Z2V0bGIuYz0zMzcyPXN0YXRpYyB2b2lkIF9faW5pdCBodWdldGxiX2hzdGF0ZV9hbGxvY19wYWdlc19vbmVub2RlKHN0cnVjdCBoc3RhdGUgKmgsIGludCBuaWQpXFxuLS1cXG5tbS9odWdldGxiLmMtMzM4NS1cXG5tbS9odWdldGxiLmM6MzM4NjpcXHRcXHRcXHRmb2xpbyA9IG9ubHlfYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhoLCBnZnBfbWFzaywgbmlkLFxcbm1tL2h1Z2V0bGIuYy0zMzg3LVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZub2RlX3N0YXRlc1tOX01FTU9SWV0sIE5VTEwpO1xcbi0tXFxubW0vaHVnZXRsYi5jLTMzOTEtXFx0XFx0XFx0XFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmZvbGlvX2xpc3QpO1xcbm1tL2h1Z2V0bGIuYzozMzkyOlxcdFxcdFxcdFxcdGZvbGlvID0gb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsXFxubW0vaHVnZXRsYi5jLTMzOTMtXFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNm5vZGVfc3RhdGVzW05fTUVNT1JZXSwgTlVMTCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ4OjExLjMzMTU0ODU2NloiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NTUwNDQyNTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzIGZvciBIdWdlVExCIENNQSBNZW1vcnkgQWxsb2NhdGlvbioqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHBvdGVudGlhbCB0YXJnZXRzIGZvciBmdXp6aW5nIHdpdGhpbiB0aGUgSHVnZVRMQiBDTUEgbWVtb3J5IGFsbG9jYXRpb24gY29kZS4gSW5pdGlhbGx5LCBJIGNvbnNpZGVyZWQgYGFsbG9jX3Bvb2xfaHVnZV9mb2xpb2AsIGBhbGxvY19zdXJwbHVzX2h1Z2V0bGJfZm9saW9gLCBgYWxsb2NfbWlncmF0ZV9odWdldGxiX2ZvbGlvYCwgYW5kIGBhbGxvY19hbmRfZGlzc29sdmVfaHVnZXRsYl9mb2xpb2AgYXMgcHJvbWlzaW5nIGNhbmRpZGF0ZXMuIEJ1dCwgYWZ0ZXIgYSBjbG9zZXIgbG9vaywgaXQncyBjbGVhciB0aGF0IHRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgbW9kaWZpZXMgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AuIFRoYXQncyB0aGUga2V5IGZ1bmN0aW9uIHdlIG5lZWQgdG8gZm9jdXMgb24uIFNvLCB0aGF0J3MgZGVmaW5pdGVseSBnb2luZyBpbnRvIGBGb2N1c1N5bWJvbHNgLlxuXG5Ob3csIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJ3ZlIGdvdCBgQ09ORklHX0hVR0VUTEJGU2AsIGBDT05GSUdfQ01BYCwgYW5kIGBDT05GSUdfQ1BVU0VUU2AgaW4gbWluZC4gTGV0J3MganVzdCBjb25maXJtIHRoYXQgYENPTkZJR19IVUdFVExCRlNgIGFjdHVhbGx5IGVuYWJsZXMgdGhlIHJlbGV2YW50IGBtbS9odWdldGxiLmNgIGNvZGUuIE9rYXksIHRoZSBgbW0vTWFrZWZpbGVgIGNvbmZpcm1zIGl0OiBgb2JqLSQoQ09ORklHX0hVR0VUTEJGUykgKz0gaHVnZXRsYi5vIGh1Z2V0bGJfc3lzZnMubyBodWdldGxiX3N5c2N0bC5vYC4gQW5kLCBhcyBleHBlY3RlZCwgYG9iai0kKENPTkZJR19IVUdFVExCRlMpICs9IGh1Z2V0bGJfY21hLm9gIGlzIGFsc28gaW5jbHVkZWQgd2hlbiBgQ09ORklHX0NNQWAgaXMgZGVmaW5lZC5cblxuU28sIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgd2UgbmVlZCB0byBjb25zaWRlciBhcmU6XG5cbiogICBgSFVHRVRMQkZTYFxuKiAgIGBDTUFgXG4qICAgYENQVVNFVFNgXG5cbkFuZCB0aGUga2V5IGZvY3VzIHN5bWJvbCBpcyBkZWZpbml0ZWx5OlxuXG4qICAgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2BcblxuQWxyaWdodCwgbGV0J3MgY29uc2lkZXIgd2h5IHdlIGFyZSBmb2N1c2VkIG9uIHRoaXMgZnVuY3Rpb246IHRoZSBwYXRjaCBtb2RpZmllcyBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCB0byByZXNwZWN0IGNwdXNldCBtZW1vcnkgYWxsb3dlZCBub2RlcyB3aGVuIGBub2RlbWFza2AgaXMgTlVMTC4gVGhpcyBpcyBhIGNsZWFyLCBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IHRoZSBIdWdlVExCIENNQSBwb3J0aW9uLiBJdCB3aWxsIGRpcmVjdGx5IGFmZmVjdCBtZW1vcnkgYWxsb2NhdGlvbiBiZWhhdmlvci4gVGhlIGNvZGUgaXMgZGVmaW5pdGVseSByZWFjaGFibGUsIGFuZCB0aGF0IG1ha2VzIGl0IHdvcnRoIGZ1enppbmcuXG5cbkp1c3QgYSBxdWljayBzYW5pdHkgY2hlY2s6IGxldCdzIHZlcmlmeSB0aGF0IGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIGlzbid0IGEgc3RhdGljIGZ1bmN0aW9uLiBBIHF1aWNrIGxvb2sgYXQgaXRzIGRlZmluaXRpb24gaW4gYG1tL2h1Z2V0bGJfY21hLmNgOlxuXG5gYGBjXG5zdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxuXHRcdGludCBuaWQsIG5vZGVtYXNrX3QgKm5vZGVtYXNrKVxuYGBgXG5cbk5vLCBpdCdzIG5vdCBzdGF0aWMuIEdvb2QuXG5cbkknbSByZWFkeSB0byBgc2V0LXJlc3VsdHNgIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI1NTksIk91dHB1dFRva2VucyI6MTI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ4OjE4Ljg4MTk5MzMyM1oiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczNDAwNDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIVUdFVExCRlNcIixcbiAgICBcIkNNQVwiLFxuICAgIFwiQ1BVU0VUU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIHRvIHJlc3BlY3QgY3B1c2V0IG1lbW9yeSBhbGxvd2VkIG5vZGVzIHdoZW4gYG5vZGVtYXNrYCBpcyBOVUxMLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSAoSHVnZVRMQiBDTUEpIHRoYXQgYWZmZWN0cyBtZW1vcnkgYWxsb2NhdGlvbiBiZWhhdmlvci4gSXQgaXMgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhVR0VUTEJGU1wiLFxuICAgIFwiQ01BXCIsXG4gICAgXCJDUFVTRVRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AgdG8gcmVzcGVjdCBjcHVzZXQgbWVtb3J5IGFsbG93ZWQgbm9kZXMgd2hlbiBgbm9kZW1hc2tgIGlzIE5VTEwuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIChIdWdlVExCIENNQSkgdGhhdCBhZmZlY3RzIG1lbW9yeSBhbGxvY2F0aW9uIGJlaGF2aW9yLiBJdCBpcyByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ4OjE4Ljk1NTQwMDgyMVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExMzc3NDM0MjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMDo0ODoxOC45NTU5NDAxMjFaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTExMzcyMDAzMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBub2RlIHNlbGVjdGlvbiBsb2dpYyBpbiBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCB0byByZXNwZWN0IGNwdXNldCBtZW1vcnkgcGxhY2VtZW50IHJ1bGVzLiBJdCBpbnRyb2R1Y2VzIGEgbG9jYWwgYG5vZGVtYXNrX3QgbG9jYWxfbm9kZV9tYXNrYCB3aGljaCBpcyBmdWxseSBpbml0aWFsaXplZCBieSBhc3NpZ25tZW50IGZyb20gYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAgd2hlbiB0aGUgcHJvdmlkZWQgYG5vZGVtYXNrYCBpcyBOVUxMLiBUaGUgYGNwdXNldF9tZW1zX2Nvb2tpZWAgaXMgYWxzbyBwcm9wZXJseSBpbml0aWFsaXplZCB2aWEgYHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKClgLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLCBubyBjb21wbGV4IGFsbG9jYXRpb25zIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMsIGFuZCBubyBjb250cm9sIGZsb3cgZGVwZW5kaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIHdvdWxkIGJlIHJlbGF0ZWQgdG8gaW5jb3JyZWN0IG5vZGUgc2VsZWN0aW9uLCBvdXQtb2YtYm91bmRzIGFjY2Vzcywgb3IgY29uY3VycmVuY3kgaXNzdWVzLCB3aGljaCBhcmUgd2VsbCBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTNlZWJmYmRjYWU0ZDYwMTYzY2YwMjYzMTRhMWQ4ZmFmMzFjMDY5OFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDAwOjQ2OjM3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vaHVnZXRsYl9jbWEuYyBiL21tL2h1Z2V0bGJfY21hLmNcbmluZGV4IDM5MzQ0ZDZjNzhkODQuLjlkZWJmMDMzZDRmZDcgMTAwNjQ0XG4tLS0gYS9tbS9odWdldGxiX2NtYS5jXG4rKysgYi9tbS9odWdldGxiX2NtYS5jXG5AQCAtMyw2ICszLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tbS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY21hLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jb21waWxlci5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvY3B1c2V0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tbV9pbmxpbmUuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFx1MDAzY2FzbS9wYWdlLmhcdTAwM2VcbkBAIC0zMCwxNSArMzEsMjcgQEAgc3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcbiBcdGludCBub2RlO1xuIFx0c3RydWN0IGZvbGlvICpmb2xpbztcbiBcdHN0cnVjdCBwYWdlICpwYWdlID0gTlVMTDtcbitcdGNvbnN0IG5vZGVtYXNrX3QgKm5tYXNrO1xuK1x0bm9kZW1hc2tfdCBsb2NhbF9ub2RlX21hc2s7XG4rXHR1bnNpZ25lZCBpbnQgY3B1c2V0X21lbXNfY29va2llO1xuIFxuIFx0aWYgKCFodWdldGxiX2NtYV9zaXplKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbi1cdGlmIChodWdldGxiX2NtYVtuaWRdKVxuK3JldHJ5X2NwdXNldDpcbitcdGlmICghbm9kZW1hc2spIHtcbitcdFx0Y3B1c2V0X21lbXNfY29va2llID0gcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKTtcbitcdFx0bG9jYWxfbm9kZV9tYXNrID0gY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkO1xuK1x0XHRubWFzayA9IFx1MDAyNmxvY2FsX25vZGVfbWFzaztcbitcdH0gZWxzZSB7XG4rXHRcdG5tYXNrID0gbm9kZW1hc2s7XG4rXHR9XG4rXG4rXHRpZiAoaHVnZXRsYl9jbWFbbmlkXSBcdTAwMjZcdTAwMjYgbm9kZV9pc3NldChuaWQsICpubWFzaykpXG4gXHRcdHBhZ2UgPSBjbWFfYWxsb2NfZnJvemVuX2NvbXBvdW5kKGh1Z2V0bGJfY21hW25pZF0sIG9yZGVyKTtcbiBcbiBcdGlmICghcGFnZSBcdTAwMjZcdTAwMjYgIShnZnBfbWFzayBcdTAwMjYgX19HRlBfVEhJU05PREUpKSB7XG4tXHRcdGZvcl9lYWNoX25vZGVfbWFzayhub2RlLCAqbm9kZW1hc2spIHtcbitcdFx0Zm9yX2VhY2hfbm9kZV9tYXNrKG5vZGUsICpubWFzaykge1xuIFx0XHRcdGlmIChub2RlID09IG5pZCB8fCAhaHVnZXRsYl9jbWFbbm9kZV0pXG4gXHRcdFx0XHRjb250aW51ZTtcbiBcbkBAIC00OCw4ICs2MSwxMiBAQCBzdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxuIFx0XHR9XG4gXHR9XG4gXG4tXHRpZiAoIXBhZ2UpXG4rXHRpZiAoIXBhZ2UpIHtcbitcdFx0aWYgKCFub2RlbWFzayBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIHVubGlrZWx5KHJlYWRfbWVtc19hbGxvd2VkX3JldHJ5KGNwdXNldF9tZW1zX2Nvb2tpZSkpKVxuK1x0XHRcdGdvdG8gcmV0cnlfY3B1c2V0O1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdGZvbGlvID0gcGFnZV9mb2xpbyhwYWdlKTtcbiBcdGZvbGlvX3NldF9odWdldGxiX2NtYShmb2xpbyk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMDo0ODoxOC45NTU5NDEwMTFaIiwiU2VxIjo0MSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTExMzcxNzYyMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgZm9yIFVuaW5pdGlhbGl6ZWQgTWVtb3J5IFVzYWdlIGluIFRoaXMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIGluIGBtbS9odWdldGxiX2NtYS5jYCwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGNwdXNldC1hd2FyZSBub2RlIHNlbGVjdGlvbi4gTXkgZmlyc3QgdGhvdWdodCBpczogYXJlIHRoZXJlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgdnVsbmVyYWJpbGl0aWVzIGJlaW5nIGludHJvZHVjZWQgaGVyZT8gVGhlIHBhdGNoIGludHJvZHVjZXMgYG5vZGVtYXNrX3QgbG9jYWxfbm9kZV9tYXNrYCBhbmQgYHVuc2lnbmVkIGludCBjcHVzZXRfbWVtc19jb29raWVgLCBzbyB0aGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzLlxuXG5JIHNlZSBgbG9jYWxfbm9kZV9tYXNrYCBpcyBpbml0aWFsaXplZCB3aXRoIGBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWRgLCB3aGljaCBpcyBnb29kLiBCdXQgaXMgaXQgKmZ1bGx5KiBpbml0aWFsaXplZD8gIGBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWRgIGlzIGEgcGVyLXRhc2sgb3IgZ2xvYmFsIHZhcmlhYmxlLCBzbyBsZXQncyBtYWtlIHN1cmUgbm90aGluZyB3ZWlyZCBpcyBnb2luZyBvbiBpbiBob3cgaXQncyB1c2VkLiBTaW5jZSBgbG9jYWxfbm9kZV9tYXNrYCBpcyBhIGBub2RlbWFza190YCwgd2hpY2ggaXMgZGVmaW5lZCBhcyBlc3NlbnRpYWxseSBhbiBhcnJheSBvZiB1bnNpZ25lZCBsb25ncyAoREVDTEFSRV9CSVRNQVApLCB0aGUgYXNzaWdubWVudCBgbG9jYWxfbm9kZV9tYXNrID0gY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkO2AgaXMgYSBzdHJhaWdodGZvcndhcmQgc3RydWN0IGNvcHkuICBJIGtub3cgYG5vZGVtYXNrX3RgIGlzIGEgYml0bWFwLCBhbmQgdGhlIHdob2xlIHN0cnVjdCB3aWxsIGJlIGNvcGllZCwgdGhlcmUncyBubyByaXNrIG9mIHBhZGRpbmcgb3IgdW5pbml0aWFsaXplZCBiaXRzIGNyZWVwaW5nIGluLlxuXG5JIHdhcyBhIGJpdCBjb25jZXJuZWQgaWYgYG5vZGVtYXNrYCB3YXMgTlVMTC4gQnV0IGVpdGhlciB3YXksIGBubWFza2Agd2lsbCBiZSBpbml0aWFsaXplZC4gU28gSSdtIGNvbmZpZGVudCBgbG9jYWxfbm9kZV9tYXNrYCBpcyBpbmRlZWQgZnVsbHkgaW5pdGlhbGl6ZWQuXG5cblRoZW4gSSBsb29rIGF0IHRoZSB1c2FnZSBvZiBgY3B1c2V0X21lbXNfY29va2llYCwgaW5pdGlhbGl6ZWQgdmlhIGByZWFkX21lbXNfYWxsb3dlZF9iZWdpbigpYCwgYW5kIHVzZWQgaW4gYHJlYWRfbWVtc19hbGxvd2VkX3JldHJ5KClgLiBUaGF0J3Mgc3RhbmRhcmQgY3B1c2V0IGFjY2VzcywgYW5kIGl0IGxvb2tzIHNvdW5kLlxuXG5UaGVyZSBkb2Vzbid0IGFwcGVhciB0byBiZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGV4cG9zZWQgdG8gdXNlcnNwYWNlLCBhbmQgbm8gY29udHJvbCBmbG93IGRlcGVuZHMgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoaXMgaXMgZ29vZC4gVGhlIHBhdGNoIGNoYW5nZXMgaG93IG5vZGUgc2VsZWN0aW9uIHdvcmtzIHdpdGggY3B1c2V0cywgYnV0IHRoZSByZWxldmFudCBkYXRhIHN0cnVjdHVyZXMgKGBsb2NhbF9ub2RlX21hc2tgIGFuZCBgY3B1c2V0X21lbXNfY29va2llYCkgYXJlIGNvcnJlY3RseSBhbmQgY29tcGxldGVseSBpbml0aWFsaXplZCBiZWZvcmUgdXNlLlxuXG5UaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgdGhhdCB0aGUgcHJpbWFyeSByaXNrcyB3b3VsZCBiZSByZWxhdGVkIHRvIGluY29ycmVjdCBub2RlIHNlbGVjdGlvbiAocG90ZW50aWFsbHkgbGVhZGluZyB0byBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucyBvciBmYWlsdXJlcyksIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlmIHRoZXJlJ3MgYSBidWcgaW4gaG93IHRoZSBub2RlbWFzayBpcyB1c2VkIGluIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gLCBvciBjb25jdXJyZW5jeSBpc3N1ZXMuIFRoZXNlIGFyZSBhbHJlYWR5IHdlbGwtY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scywgd2hpY2ggc2hvdWxkIGZsYWcgYW55IHByb2JsZW1zLiBUaGVyZWZvcmUsIEkgZG9uJ3Qgc2VlIGFueSBuZWVkIGZvciBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gZm9yIHRoaXMgcGFydGljdWxhciBwYXRjaCB0byBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJ1Z3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NjEsIk91dHB1dFRva2VucyI6MjA4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODE4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDg6MzAuMDkzMTIwNDYzWiIsIlNlcSI6NDIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbm9kZSBzZWxlY3Rpb24gbG9naWMgaW4gYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AgdG8gcmVzcGVjdCBjcHVzZXQgbWVtb3J5IHBsYWNlbWVudCBydWxlcy4gSXQgaW50cm9kdWNlcyBhIGxvY2FsIGBub2RlbWFza190IGxvY2FsX25vZGVfbWFza2Agd2hpY2ggaXMgZnVsbHkgaW5pdGlhbGl6ZWQgYnkgYXNzaWdubWVudCBmcm9tIGBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWRgIHdoZW4gdGhlIHByb3ZpZGVkIGBub2RlbWFza2AgaXMgTlVMTC4gVGhlIGBjcHVzZXRfbWVtc19jb29raWVgIGlzIGFsc28gcHJvcGVybHkgaW5pdGlhbGl6ZWQgdmlhIGByZWFkX21lbXNfYWxsb3dlZF9iZWdpbigpYC4gVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzIGV4cG9zZWQgdG8gdXNlciBzcGFjZSwgbm8gY29tcGxleCBhbGxvY2F0aW9ucyB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzLCBhbmQgbm8gY29udHJvbCBmbG93IGRlcGVuZGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCB3b3VsZCBiZSByZWxhdGVkIHRvIGluY29ycmVjdCBub2RlIHNlbGVjdGlvbiwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIG9yIGNvbmN1cnJlbmN5IGlzc3Vlcywgd2hpY2ggYXJlIHdlbGwgY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBub2RlIHNlbGVjdGlvbiBsb2dpYyBpbiBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCB0byByZXNwZWN0IGNwdXNldCBtZW1vcnkgcGxhY2VtZW50IHJ1bGVzLiBJdCBpbnRyb2R1Y2VzIGEgbG9jYWwgYG5vZGVtYXNrX3QgbG9jYWxfbm9kZV9tYXNrYCB3aGljaCBpcyBmdWxseSBpbml0aWFsaXplZCBieSBhc3NpZ25tZW50IGZyb20gYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAgd2hlbiB0aGUgcHJvdmlkZWQgYG5vZGVtYXNrYCBpcyBOVUxMLiBUaGUgYGNwdXNldF9tZW1zX2Nvb2tpZWAgaXMgYWxzbyBwcm9wZXJseSBpbml0aWFsaXplZCB2aWEgYHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKClgLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLCBubyBjb21wbGV4IGFsbG9jYXRpb25zIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMsIGFuZCBubyBjb250cm9sIGZsb3cgZGVwZW5kaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIHdvdWxkIGJlIHJlbGF0ZWQgdG8gaW5jb3JyZWN0IG5vZGUgc2VsZWN0aW9uLCBvdXQtb2YtYm91bmRzIGFjY2Vzcywgb3IgY29uY3VycmVuY3kgaXNzdWVzLCB3aGljaCBhcmUgd2VsbCBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow9p224[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-11 00:26:16 +0000 UTC FinishedAt: 2026-08-11 00:48:31 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HUGETLBFS", "CMA", "CPUSETS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HUGETLBFS", "CMA", "CPUSETS" ], "series_id": "4f335ea2-65da-4c04-925b-d90851d0157f" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "hugetlb_cma_alloc_frozen_folio" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hVR0VUTEJGUyYjMzQ7LAogICAgJiMzNDtDTUEmIzM0OywKICAgICYjMzQ7Q1BVU0VUUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2h1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBub2RlIHNlbGVjdGlvbiBsb2dpYyBpbiBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCB0byByZXNwZWN0IGNwdXNldCBtZW1vcnkgcGxhY2VtZW50IHJ1bGVzLiBJdCBpbnRyb2R1Y2VzIGEgbG9jYWwgYG5vZGVtYXNrX3QgbG9jYWxfbm9kZV9tYXNrYCB3aGljaCBpcyBmdWxseSBpbml0aWFsaXplZCBieSBhc3NpZ25tZW50IGZyb20gYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAgd2hlbiB0aGUgcHJvdmlkZWQgYG5vZGVtYXNrYCBpcyBOVUxMLiBUaGUgYGNwdXNldF9tZW1zX2Nvb2tpZWAgaXMgYWxzbyBwcm9wZXJseSBpbml0aWFsaXplZCB2aWEgYHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKClgLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLCBubyBjb21wbGV4IGFsbG9jYXRpb25zIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMsIGFuZCBubyBjb250cm9sIGZsb3cgZGVwZW5kaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIHdvdWxkIGJlIHJlbGF0ZWQgdG8gaW5jb3JyZWN0IG5vZGUgc2VsZWN0aW9uLCBvdXQtb2YtYm91bmRzIGFjY2Vzcywgb3IgY29uY3VycmVuY3kgaXNzdWVzLCB3aGljaCBhcmUgd2VsbCBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIHRvIHJlc3BlY3QgY3B1c2V0IG1lbW9yeSBhbGxvd2VkIG5vZGVzIHdoZW4gYG5vZGVtYXNrYCBpcyBOVUxMLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSAoSHVnZVRMQiBDTUEpIHRoYXQgYWZmZWN0cyBtZW1vcnkgYWxsb2NhdGlvbiBiZWhhdmlvci4gSXQgaXMgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOTNlZWJmYmRjYWU0ZDYwMTYzY2YwMjYzMTRhMWQ4ZmFmMzFjMDY5OFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDAwOjQ2OjM3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL2h1Z2V0bGJfY21hLmMgYi9tbS9odWdldGxiX2NtYS5jXG5pbmRleCAzOTM0NGQ2Yzc4ZDg0Li45ZGViZjAzM2Q0ZmQ3IDEwMDY0NFxuLS0tIGEvbW0vaHVnZXRsYl9jbWEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vaHVnZXRsYl9jbWEuY1xuQEAgLTMsNiAmIzQzOzMsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21tLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jbWEuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBpbGVyLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvY3B1c2V0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tbV9pbmxpbmUuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFx1MDAzY2FzbS9wYWdlLmhcdTAwM2VcbkBAIC0zMCwxNSAmIzQzOzMxLDI3IEBAIHN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXG4gXHRpbnQgbm9kZTtcbiBcdHN0cnVjdCBmb2xpbyAqZm9saW87XG4gXHRzdHJ1Y3QgcGFnZSAqcGFnZSA9IE5VTEw7XG4mIzQzO1x0Y29uc3Qgbm9kZW1hc2tfdCAqbm1hc2s7XG4mIzQzO1x0bm9kZW1hc2tfdCBsb2NhbF9ub2RlX21hc2s7XG4mIzQzO1x0dW5zaWduZWQgaW50IGNwdXNldF9tZW1zX2Nvb2tpZTtcbiBcbiBcdGlmICghaHVnZXRsYl9jbWFfc2l6ZSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4tXHRpZiAoaHVnZXRsYl9jbWFbbmlkXSlcbiYjNDM7cmV0cnlfY3B1c2V0OlxuJiM0MztcdGlmICghbm9kZW1hc2spIHtcbiYjNDM7XHRcdGNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7XG4mIzQzO1x0XHRsb2NhbF9ub2RlX21hc2sgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XG4mIzQzO1x0XHRubWFzayA9IFx1MDAyNmxvY2FsX25vZGVfbWFzaztcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0bm1hc2sgPSBub2RlbWFzaztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChodWdldGxiX2NtYVtuaWRdIFx1MDAyNlx1MDAyNiBub2RlX2lzc2V0KG5pZCwgKm5tYXNrKSlcbiBcdFx0cGFnZSA9IGNtYV9hbGxvY19mcm96ZW5fY29tcG91bmQoaHVnZXRsYl9jbWFbbmlkXSwgb3JkZXIpO1xuIFxuIFx0aWYgKCFwYWdlIFx1MDAyNlx1MDAyNiAhKGdmcF9tYXNrIFx1MDAyNiBfX0dGUF9USElTTk9ERSkpIHtcbi1cdFx0Zm9yX2VhY2hfbm9kZV9tYXNrKG5vZGUsICpub2RlbWFzaykge1xuJiM0MztcdFx0Zm9yX2VhY2hfbm9kZV9tYXNrKG5vZGUsICpubWFzaykge1xuIFx0XHRcdGlmIChub2RlID09IG5pZCB8fCAhaHVnZXRsYl9jbWFbbm9kZV0pXG4gXHRcdFx0XHRjb250aW51ZTtcbiBcbkBAIC00OCw4ICYjNDM7NjEsMTIgQEAgc3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcbiBcdFx0fVxuIFx0fVxuIFxuLVx0aWYgKCFwYWdlKVxuJiM0MztcdGlmICghcGFnZSkge1xuJiM0MztcdFx0aWYgKCFub2RlbWFzayBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICB1bmxpa2VseShyZWFkX21lbXNfYWxsb3dlZF9yZXRyeShjcHVzZXRfbWVtc19jb29raWUpKSlcbiYjNDM7XHRcdFx0Z290byByZXRyeV9jcHVzZXQ7XG4gXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdGZvbGlvID0gcGFnZV9mb2xpbyhwYWdlKTtcbiBcdGZvbGlvX3NldF9odWdldGxiX2NtYShmb2xpbyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hVR0VUTEJGUyYjMzQ7LAogICAgJiMzNDtDTUEmIzM0OywKICAgICYjMzQ7Q1BVU0VUUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2h1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCB0byByZXNwZWN0IGNwdXNldCBtZW1vcnkgYWxsb3dlZCBub2RlcyB3aGVuIGBub2RlbWFza2AgaXMgTlVMTC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0gKEh1Z2VUTEIgQ01BKSB0aGF0IGFmZmVjdHMgbWVtb3J5IGFsbG9jYXRpb24gYmVoYXZpb3IuIEl0IGlzIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDkzZWViZmJkY2FlNGQ2MDE2M2NmMDI2MzE0YTFkOGZhZjMxYzA2OTgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxMSAwMDo0NjozNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2h1Z2V0bGJfY21hLmMgYi9tbS9odWdldGxiX2NtYS5jCmluZGV4IDM5MzQ0ZDZjNzhkODQuLjlkZWJmMDMzZDRmZDcgMTAwNjQ0Ci0tLSBhL21tL2h1Z2V0bGJfY21hLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vaHVnZXRsYl9jbWEuYwpAQCAtMyw2ICYjNDM7Myw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvbW0uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9jbWEuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9jb21waWxlci5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9jcHVzZXQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9tbV9pbmxpbmUuaCZndDsKIAogI2luY2x1ZGUgJmx0O2FzbS9wYWdlLmgmZ3Q7CkBAIC0zMCwxNSAmIzQzOzMxLDI3IEBAIHN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssCiAJaW50IG5vZGU7CiAJc3RydWN0IGZvbGlvICpmb2xpbzsKIAlzdHJ1Y3QgcGFnZSAqcGFnZSA9IE5VTEw7CiYjNDM7CWNvbnN0IG5vZGVtYXNrX3QgKm5tYXNrOwomIzQzOwlub2RlbWFza190IGxvY2FsX25vZGVfbWFzazsKJiM0MzsJdW5zaWduZWQgaW50IGNwdXNldF9tZW1zX2Nvb2tpZTsKIAogCWlmICghaHVnZXRsYl9jbWFfc2l6ZSkKIAkJcmV0dXJuIE5VTEw7CiAKLQlpZiAoaHVnZXRsYl9jbWFbbmlkXSkKJiM0MztyZXRyeV9jcHVzZXQ6CiYjNDM7CWlmICghbm9kZW1hc2spIHsKJiM0MzsJCWNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7CiYjNDM7CQlsb2NhbF9ub2RlX21hc2sgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7CiYjNDM7CQlubWFzayA9ICZhbXA7bG9jYWxfbm9kZV9tYXNrOwomIzQzOwl9IGVsc2UgewomIzQzOwkJbm1hc2sgPSBub2RlbWFzazsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoaHVnZXRsYl9jbWFbbmlkXSAmYW1wOyZhbXA7IG5vZGVfaXNzZXQobmlkLCAqbm1hc2spKQogCQlwYWdlID0gY21hX2FsbG9jX2Zyb3plbl9jb21wb3VuZChodWdldGxiX2NtYVtuaWRdLCBvcmRlcik7CiAKIAlpZiAoIXBhZ2UgJmFtcDsmYW1wOyAhKGdmcF9tYXNrICZhbXA7IF9fR0ZQX1RISVNOT0RFKSkgewotCQlmb3JfZWFjaF9ub2RlX21hc2sobm9kZSwgKm5vZGVtYXNrKSB7CiYjNDM7CQlmb3JfZWFjaF9ub2RlX21hc2sobm9kZSwgKm5tYXNrKSB7CiAJCQlpZiAobm9kZSA9PSBuaWQgfHwgIWh1Z2V0bGJfY21hW25vZGVdKQogCQkJCWNvbnRpbnVlOwogCkBAIC00OCw4ICYjNDM7NjEsMTIgQEAgc3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzaywKIAkJfQogCX0KIAotCWlmICghcGFnZSkKJiM0MzsJaWYgKCFwYWdlKSB7CiYjNDM7CQlpZiAoIW5vZGVtYXNrICZhbXA7JmFtcDsKJiM0MzsJCSAgICB1bmxpa2VseShyZWFkX21lbXNfYWxsb3dlZF9yZXRyeShjcHVzZXRfbWVtc19jb29raWUpKSkKJiM0MzsJCQlnb3RvIHJldHJ5X2NwdXNldDsKIAkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCWZvbGlvID0gcGFnZV9mb2xpbyhwYWdlKTsKIAlmb2xpb19zZXRfaHVnZXRsYl9jbWEoZm9saW8pOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDY0CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEh1Z2VUTEIgQ01BIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0d2Vha2luZyBgbW0vaHVnZXRsYl9jbWEuY2AuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgbW9kaWZ5aW5nIHRoZSBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCBmdW5jdGlvbi4gSSBzZWUgaXQmIzM5O3MgYWRkaW5nIHRoZXNlIGNwdXNldCBtZW1vcnkgYWxsb3dlZCBjaGVja3MsIGJ1dCBvbmx5IHdoZW4gYG5vZGVtYXNrYCBpcyBOVUxMLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIEh1Z2VUTEIgQ01BIHN1YnN5c3RlbS4gVGhhdCYjMzk7cyBtZW1vcnkgbWFuYWdlbWVudCwgc28gYW55IGNoYW5nZSB0aGVyZSBuZWVkcyBjYXJlZnVsIHNjcnV0aW55LiBJJiMzOTttIGdvaW5nIHRvIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgKndoeSogYmVoaW5kIHRoaXMgY29uZGl0aW9uYWwgY2hlY2suCgpNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byB0aG9yb3VnaGx5IHJldmlldyB0aGUgdXNhZ2VzIG9mIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gLiBJIHdhbnQgdG8gc2VlIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkIGZyb20sIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgaW4gd2hpY2ggaXQmIzM5O3MgYmVpbmcgdXNlZCwgYW5kIHdoYXQgc2NlbmFyaW9zIHRyaWdnZXIgdGhlIE5VTEwgYG5vZGVtYXNrYC4gS25vd2luZyB0aGUgY2FsbGVycyB3aWxsIGNsYXJpZnkgdGhlIHBvc3NpYmxlIGltcGFjdCBvZiB0aGlzIGNwdXNldCBjaGVjay4gSSYjMzk7bGwgYWxzbyBuZWVkIHRvIHZlcmlmeSB0aGF0IGFsbCByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gYG1tL2h1Z2V0bGJfY21hLmNgIGhhdmVuJiMzOTt0IGJlZW4gYWZmZWN0ZWQgb3IgbWFkZSByZWR1bmRhbnQgYXMgYSByZXN1bHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2h1Z2V0bGIuYz0xMzYwPXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxuLS1cbm1tL2h1Z2V0bGIuYy0xMzY0LVxubW0vaHVnZXRsYi5jOjEzNjU6XHRmb2xpbyA9IGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhvcmRlciwgZ2ZwX21hc2ssIG5pZCwgbm9kZW1hc2spO1xubW0vaHVnZXRsYi5jLTEzNjYtXHRpZiAoZm9saW8pXG4tLVxubW0vaHVnZXRsYl9jbWEuYz0yMj12b2lkIGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0vaHVnZXRsYl9jbWEuYy0yNy1cbm1tL2h1Z2V0bGJfY21hLmM6Mjg6c3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcbm1tL2h1Z2V0bGJfY21hLmMtMjktXHRcdGludCBuaWQsIG5vZGVtYXNrX3QgKm5vZGVtYXNrKVxuLS1cbm1tL2h1Z2V0bGJfY21hLmg9Nj12b2lkIGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xubW0vaHVnZXRsYl9jbWEuaDo3OnN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXG5tbS9odWdldGxiX2NtYS5oLTgtXHRcdFx0XHQgICAgICBpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzayk7XG4tLVxubW0vaHVnZXRsYl9jbWEuaD0xNj1zdGF0aWMgaW5saW5lIHZvaWQgaHVnZXRsYl9jbWFfZnJlZV9mcm96ZW5fZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS9odWdldGxiX2NtYS5oLTE5LVxubW0vaHVnZXRsYl9jbWEuaDoyMDpzdGF0aWMgaW5saW5lIHN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlcixcbm1tL2h1Z2V0bGJfY21hLmgtMjEtXHRcdGdmcF90IGdmcF9tYXNrLFx0aW50IG5pZCwgbm9kZW1hc2tfdCAqbm9kZW1hc2spXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMzMQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQWxsb2NhdGlvbiBQYXRoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIGZ1bmN0aW9uLiBUaGUgY2FsbCBzdGFjayB0ZWxscyBtZSBpdCBvcmlnaW5hdGVzIGZyb20gYGFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpb2Agd2l0aGluIGBtbS9odWdldGxiLmNgLiBUaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludCBJIG5lZWQgdG8gZm9jdXMgb24uIE15IG5leHQgdGhvdWdodCBpcywgSSBuZWVkIHRvIGtub3cgdW5kZXIgd2hhdCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGBtbS9odWdldGxiX2NtYS5jYCBpcyBldmVuIGVuYWJsZWQuIFRoYXQgd2lsbCBnaXZlIG1lIGNvbnRleHQgb24gdGhlIHNjZW5hcmlvcyB3aGVyZSBJJiMzOTtkIGVuY291bnRlciB0aGlzIHBhdGggYW5kIGhlbHBzIG1lIHVuZGVyc3RhbmQgdGhlIHN5c3RlbSBkZXNpZ24gZ29hbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aHVnZXRsYl9jbWFcXC5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlPTgyPWlmZGVmIENPTkZJR19DTUFcbm1tL01ha2VmaWxlOjgzOm9iai0kKENPTkZJR19IVUdFVExCRlMpXHQmIzQzOz0gaHVnZXRsYl9jbWEub1xubW0vTWFrZWZpbGUtODQtZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjAwCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFraW5nIG9uIHRoZSBwZXJzb25hIHlvdSByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIE1lbW9yeSBNYW5hZ2VtZW50KioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIEkgbmVlZCB0byBnZXQgdGhpcyBtZW1vcnkgbWFuYWdlbWVudCBzeXN0ZW0gc2V0IHVwIGNvcnJlY3RseS4gUmlnaHQsIHNvIEkgbmVlZCBib3RoIGBDT05GSUdfQ01BYCBhbmQgYENPTkZJR19IVUdFVExCRlNgIGVuYWJsZWQsIHRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBIb2xkIG9uIGEgc2Vjb25kIHRob3VnaCwgYENPTkZJR19DTUFgIGlzIGFuIGlmZGVmLCBtZWFuaW5nIGl0JiMzOTtzIGNvbmRpdGlvbmFsLCBhbmQgYENPTkZJR19IVUdFVExCRlNgIGlzIGFjdHVhbGx5IHRoZSBvYmplY3QgSSYjMzk7bSBhaW1pbmcgZm9yLiBOb3cgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGlzIGl0IGBDT05GSUdfSFVHRVRMQl9QQUdFYCBvciBgQ09ORklHX0hVR0VUTEJGU2A/IEkmIzM5O20gZ2V0dGluZyBhIGxpdHRsZSB0dXJuZWQgYXJvdW5kLCBiZXR0ZXIgdG8gdmVyaWZ5LiBMZXQgbWUganVzdCB0YWtlIGEgcXVpY2sgcGVlayBhdCB0aGUgYG1tL01ha2VmaWxlYCB0byBtYWtlIHN1cmUgSSBnZXQgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb25zIGVuYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2JqLVxcJFxcKENPTkZJR19IVUdFVExCRlNcXCkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvTWFrZWZpbGU9NzI9b2JqLXlcdFx0XHRcdCYjNDM7PSByYW1mcy9cbmZzL01ha2VmaWxlOjczOm9iai0kKENPTkZJR19IVUdFVExCRlMpXHRcdCYjNDM7PSBodWdldGxiZnMvXG5mcy9NYWtlZmlsZS03NC1vYmotJChDT05GSUdfQ09EQV9GUylcdFx0JiM0Mzs9IGNvZGEvXG4tLVxuZnMvaHVnZXRsYmZzL01ha2VmaWxlLTUtXG5mcy9odWdldGxiZnMvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfSFVHRVRMQkZTKSAmIzQzOz0gaHVnZXRsYmZzLm9cbmZzL2h1Z2V0bGJmcy9NYWtlZmlsZS03LVxuLS1cbm1tL01ha2VmaWxlPTgwPW9iai0kKENPTkZJR19IQVNfRE1BKVx0JiM0Mzs9IGRtYXBvb2wub1xubW0vTWFrZWZpbGU6ODE6b2JqLSQoQ09ORklHX0hVR0VUTEJGUylcdCYjNDM7PSBodWdldGxiLm8gaHVnZXRsYl9zeXNmcy5vIGh1Z2V0bGJfc3lzY3RsLm9cbm1tL01ha2VmaWxlLTgyLWlmZGVmIENPTkZJR19DTUFcbm1tL01ha2VmaWxlOjgzOm9iai0kKENPTkZJR19IVUdFVExCRlMpXHQmIzQzOz0gaHVnZXRsYl9jbWEub1xubW0vTWFrZWZpbGUtODQtZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTMwCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgTGFyZ2UgTWVtb3J5IEFsbG9jYXRpb25zKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uIHRoZSBzeXN0ZW0gc2VlbXMgdG8gYmUgY29uZmlndXJlZCBmb3IgSHVnZVRMQkZTIGFuZCBDb250aWd1b3VzIE1lbW9yeSBBbGxvY2F0aW9uIChDTUEpLiBFeGNlbGxlbnQuIEdpdmVuIHRoYXQsIEkgbmVlZCB0byBjaGVjayB0aGUgcG90ZW50aWFsIHVzZXMgb2YgYGFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpb2AuIFRoYXQgZnVuY3Rpb24gaXMgY3JpdGljYWwgaW4gaG93IHRoZSBrZXJuZWwgaGFuZGxlcyB0aGVzZSB2ZXJ5IGxhcmdlIG1lbW9yeSByZXF1ZXN0cy4gSSB3YW50IHRvIHNlZSBob3cgYW5kIHdoZXJlIGl0JiMzOTtzIGJlaW5nIGVtcGxveWVkIGluIHRoaXMgc3BlY2lmaWMgY29udGV4dCwgaG93IHdlbGwgaXQmIzM5O3Mgd29ya2luZywgYW5kIGxvb2sgb3V0IGZvciBhbnl0aGluZyB1bnVzdWFsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgdGhvcm91Z2hseSB0byBpZGVudGlmeSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgb3IgbWVtb3J5IGZyYWdtZW50YXRpb24gaXNzdWVzLCBlc3BlY2lhbGx5IGluIHJlbGF0aW9uIHRvIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiBIdWdlVExCRlMgYW5kIENNQS4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBvZiBteSBjdXJyZW50IGZvY3VzIGxpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpbyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9odWdldGxiLmM9MTMyMD1zdGF0aWMgc3RydWN0IGZvbGlvICpkZXF1ZXVlX2h1Z2V0bGJfZm9saW9fdm1hKHN0cnVjdCBoc3RhdGUgKmgsXG4tLVxubW0vaHVnZXRsYi5jLTEzNTktI2lmIGRlZmluZWQoQ09ORklHX0FSQ0hfSEFTX0dJR0FOVElDX1BBR0UpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19DT05USUdfQUxMT0MpXG5tbS9odWdldGxiLmM6MTM2MDpzdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcbm1tL2h1Z2V0bGIuYy0xMzYxLVx0XHRpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzaylcbi0tXG5tbS9odWdldGxiLmMtMTM3Ni0jZWxzZSAvKiAhQ09ORklHX0FSQ0hfSEFTX0dJR0FOVElDX1BBR0UgfHwgIUNPTkZJR19DT05USUdfQUxMT0MgKi9cbm1tL2h1Z2V0bGIuYzoxMzc3OnN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLCBpbnQgbmlkLFxubW0vaHVnZXRsYi5jLTEzNzgtXHRcdFx0XHRcdCAgbm9kZW1hc2tfdCAqbm9kZW1hc2spXG4tLVxubW0vaHVnZXRsYi5jPTE4MzY9c3RhdGljIHN0cnVjdCBmb2xpbyAqb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXG4tLVxubW0vaHVnZXRsYi5jLTE4NDYtXHRpZiAob3JkZXJfaXNfZ2lnYW50aWMob3JkZXIpKVxubW0vaHVnZXRsYi5jOjE4NDc6XHRcdGZvbGlvID0gYWxsb2NfZ2lnYW50aWNfZnJvemVuX2ZvbGlvKG9yZGVyLCBnZnBfbWFzaywgbmlkLCBubWFzayk7XG5tbS9odWdldGxiLmMtMTg0OC1cdGVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDczMQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkRpdmluZyBpbnRvIEh1Z2VUTEIgQWxsb2NhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYG9ubHlfYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2AuLi4gUmlnaHQsIGl0IHNlZW1zIGxpa2UgdGhhdCBmdW5jdGlvbiB1bHRpbWF0ZWx5IGNhbGxzIGBhbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW9gLiBUaGF0IG1ha2VzIHNlbnNlOyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIEh1Z2VUTEIgcGFnZXMsIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGdpZ2FudGljLCBwcmUtZnJvemVuIGZvbGlvcyBoZXJlLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsICYjMzQ7V2h5IHRoZSBleHRyYSBsYXllcj8mIzM0OyBXaGF0JiMzOTtzIHRoZSBzcGVjaWZpYyByb2xlIG9mIGBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW9gIGluIHRoaXMgYWxsb2NhdGlvbiBwcm9jZXNzPyBJcyBpdCBoYW5kbGluZyBzb21lIHNwZWNpZmljIEh1Z2VUTEIgaW5pdGlhbGl6YXRpb24gb3IgdmFsaWRhdGlvbiB0aGF0IGBhbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW9gIGRvZXNuJiMzOTt0PyBMZXQmIzM5O3MgdHJhY2UgYG9ubHlfYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2AgYW5kIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uLi4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgYW5kIHBvdGVudGlhbCBjaGVja3Mgb3IgYWN0aW9ucyB0YWtlbiBiZWZvcmUgdGhlIGFjdHVhbCBnaWdhbnRpYyBmb2xpbyBhbGxvY2F0aW9uIGhhcHBlbnMuIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2h1Z2V0bGIuYz0xNzkxPXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2J1ZGR5X2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxuLS1cbm1tL2h1Z2V0bGIuYy0xODM1LVxubW0vaHVnZXRsYi5jOjE4MzY6c3RhdGljIHN0cnVjdCBmb2xpbyAqb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXG5tbS9odWdldGxiLmMtMTgzNy1cdFx0Z2ZwX3QgZ2ZwX21hc2ssIGludCBuaWQsIG5vZGVtYXNrX3QgKm5tYXNrLFxuLS1cbm1tL2h1Z2V0bGIuYz0xODYzPXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcbi0tXG5tbS9odWdldGxiLmMtMTg2Ny1cbm1tL2h1Z2V0bGIuYzoxODY4Olx0Zm9saW8gPSBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oaCwgZ2ZwX21hc2ssIG5pZCwgbm1hc2ssIE5VTEwpO1xubW0vaHVnZXRsYi5jLTE4NjktXHRpZiAoZm9saW8pXG4tLVxubW0vaHVnZXRsYi5jPTE4OTY9c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfcG9vbF9odWdlX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXG4tLVxubW0vaHVnZXRsYi5jLTE5MDYtXG5tbS9odWdldGxiLmM6MTkwNzpcdFx0Zm9saW8gPSBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oaCwgZ2ZwX21hc2ssIG5vZGUsXG5tbS9odWdldGxiLmMtMTkwOC1cdFx0XHRcdFx0bm9kZXNfYWxsb3dlZCwgbm9kZV9hbGxvY19ub3JldHJ5KTtcbi0tXG5tbS9odWdldGxiLmM9MzM3Mj1zdGF0aWMgdm9pZCBfX2luaXQgaHVnZXRsYl9oc3RhdGVfYWxsb2NfcGFnZXNfb25lbm9kZShzdHJ1Y3QgaHN0YXRlICpoLCBpbnQgbmlkKVxuLS1cbm1tL2h1Z2V0bGIuYy0zMzg1LVxubW0vaHVnZXRsYi5jOjMzODY6XHRcdFx0Zm9saW8gPSBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oaCwgZ2ZwX21hc2ssIG5pZCxcbm1tL2h1Z2V0bGIuYy0zMzg3LVx0XHRcdFx0XHRcdTAwMjZub2RlX3N0YXRlc1tOX01FTU9SWV0sIE5VTEwpO1xuLS1cbm1tL2h1Z2V0bGIuYy0zMzkxLVx0XHRcdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Zm9saW9fbGlzdCk7XG5tbS9odWdldGxiLmM6MzM5MjpcdFx0XHRcdGZvbGlvID0gb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsXG5tbS9odWdldGxiLmMtMzM5My1cdFx0XHRcdFx0XHRcdTAwMjZub2RlX3N0YXRlc1tOX01FTU9SWV0sIE5VTEwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTkwCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSHVnZXRsYiBGb2xpbyBBbGxvY2F0aW9uIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IGFsbG9jYXRpbmcgbmV3IGh1Z2V0bGIgZm9saW9zLCB3aGljaCBpcyBzb21ldGhpbmcgSSBkZWFsIHdpdGggZnJlcXVlbnRseS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgaW50cm9kdWNpbmcgc29tZSBpbnRlcmVzdGluZyBjaGFuZ2VzLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGFkZGluZyBgY3B1c2V0X21lbXNfY29va2llID0gcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKTtgIGFuZCB0aGVuIHVzaW5nIGBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWRgIGlmIHRoZSBgbm9kZW1hc2tgIGlzIG51bGwuIFJpZ2h0IGF3YXksIEkgc2VlIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQmIzM5O3MgcmVzdHJpY3RpbmcgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIHRvIHRoZSBub2RlcyBjdXJyZW50bHkgYWxsb3dlZCBieSB0aGUgY3B1c2V0LgoKVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogaXMgdGhpcyBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyBmdXp6aW5nPyBBYnNvbHV0ZWx5LCB5ZXMuIEFueSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBtZW1vcnkgbWFuYWdlbWVudCBpcyBwcmltZSB0ZXJyaXRvcnkgZm9yIGZ1enppbmcsIGVzcGVjaWFsbHkgc29tZXRoaW5nIHRoYXQgYWx0ZXJzIGFsbG93ZWQgbm9kZSBiZWhhdmlvciBsaWtlIHRoaXMuIEl0IGNvdWxkIHVuY292ZXIgc3VidGxlIGVkZ2UgY2FzZXMgb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIG1lbW9yeSBpc29sYXRpb24gb3IgY29udGVudGlvbi4KCldhaXQgYSBzZWNvbmTigKYgYHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luYCBhbmQgYHJlYWRfbWVtc19hbGxvd2VkX3JldHJ5YCDigJMgdGhvc2UgYXJlIGluIGBsaW51eC9jcHVzZXQuaGAuIE1ha2VzIHNlbnNlLCBjb25zaWRlcmluZyB3aGF0IHRoZSBwYXRjaCBpcyBkb2luZy4KCk5vdywgbGV0IG1lIGp1c3QgY29uZmlybSB0aGUgY29uZmlndXJhdGlvbnMgaW52b2x2ZWQuIEkgZXhwZWN0IGBDT05GSUdfSFVHRVRMQkZTYCwgb2J2aW91c2x5LCBhbmQgbGlrZWx5IGBDT05GSUdfQ01BYCBzaW5jZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGNvbnRpZ3VvdXMgbWVtb3J5IGFsbG9jYXRpb24uIEFuZCwgb2YgY291cnNlLCBgQ09ORklHX0NQVVNFVFNgIGlzIGEgZ2l2ZW4uIFRob3VnaCBJIHNob3VsZCBkb3VibGUgY2hlY2sgdGhhdCBsYXN0IG9uZSwganVzdCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9jcHVzZXQuaD0yMT1leHRlcm4gYm9vbCBsb2NrZGVwX2lzX2NwdXNldF9oZWxkKHZvaWQpO1xuLS1cbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMjYtICogU3RhdGljIGJyYW5jaCByZXdyaXRlcyBjYW4gaGFwcGVuIGluIGFuIGFyYml0cmFyeSBvcmRlciBmb3IgYSBnaXZlblxuaW5jbHVkZS9saW51eC9jcHVzZXQuaDoyNzogKiBrZXkuIEluIGNvZGUgcGF0aHMgd2hlcmUgd2UgbmVlZCB0byBsb29wIHdpdGggcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKSBhbmRcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMjgtICogcmVhZF9tZW1zX2FsbG93ZWRfcmV0cnkoKSB0byBnZXQgYSBjb25zaXN0ZW50IHZpZXcgb2YgbWVtc19hbGxvd2VkLCB3ZSBuZWVkXG4tLVxuaW5jbHVkZS9saW51eC9jcHVzZXQuaD0xMzU9ZXh0ZXJuIHZvaWQgY3B1c2V0X3Jlc2V0X3NjaGVkX2RvbWFpbnModm9pZCk7XG4tLVxuaW5jbHVkZS9saW51eC9jcHVzZXQuaC0xMzctLypcbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg6MTM4OiAqIHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luIGlzIHJlcXVpcmVkIHdoZW4gbWFraW5nIGRlY2lzaW9ucyBpbnZvbHZpbmdcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMTM5LSAqIG1lbXNfYWxsb3dlZCBzdWNoIGFzIGR1cmluZyBwYWdlIGFsbG9jYXRpb24uIG1lbXNfYWxsb3dlZCBjYW4gYmUgdXBkYXRlZCBpblxuaW5jbHVkZS9saW51eC9jcHVzZXQuaC0xNDAtICogcGFyYWxsZWwgYW5kIGRlcGVuZGluZyBvbiB0aGUgbmV3IHZhbHVlIGFuIG9wZXJhdGlvbiBjYW4gZmFpbCBwb3RlbnRpYWxseVxuaW5jbHVkZS9saW51eC9jcHVzZXQuaDoxNDE6ICogY2F1c2luZyBwcm9jZXNzIGZhaWx1cmUuIEEgcmV0cnkgbG9vcCB3aXRoIHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luIGFuZFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaC0xNDItICogcmVhZF9tZW1zX2FsbG93ZWRfcmV0cnkgcHJldmVudHMgdGhlc2UgYXJ0aWZpY2lhbCBmYWlsdXJlcy5cbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMTQzLSAqL1xuaW5jbHVkZS9saW51eC9jcHVzZXQuaDoxNDQ6c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4odm9pZClcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMTQ1LXtcbi0tXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTE1My0gKiBJZiB0aGlzIHJldHVybnMgdHJ1ZSwgdGhlIG9wZXJhdGlvbiB0aGF0IHRvb2sgcGxhY2UgYWZ0ZXJcbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg6MTU0OiAqIHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luIG1heSBoYXZlIGZhaWxlZCBhcnRpZmljaWFsbHkgZHVlIHRvIGEgY29uY3VycmVudFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaC0xNTUtICogdXBkYXRlIG9mIG1lbXNfYWxsb3dlZC4gSXQgaXMgdXAgdG8gdGhlIGNhbGxlciB0byByZXRyeSB0aGUgb3BlcmF0aW9uIGlmXG4tLVxuaW5jbHVkZS9saW51eC9jcHVzZXQuaD0yODg9c3RhdGljIGlubGluZSB2b2lkIHNldF9tZW1zX2FsbG93ZWQobm9kZW1hc2tfdCBub2RlbWFzaylcbi0tXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTI5MS1cbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg6MjkyOnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKHZvaWQpXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTI5My17XG4tLVxubW0vZmlsZW1hcC5jPTk5OT1zdHJ1Y3QgZm9saW8gKmZpbGVtYXBfYWxsb2NfZm9saW9fbm9wcm9mKGdmcF90IGdmcCwgdW5zaWduZWQgaW50IG9yZGVyLFxuLS1cbm1tL2ZpbGVtYXAuYy0xMDExLVx0XHRkbyB7XG5tbS9maWxlbWFwLmM6MTAxMjpcdFx0XHRjcHVzZXRfbWVtc19jb29raWUgPSByZWFkX21lbXNfYWxsb3dlZF9iZWdpbigpO1xubW0vZmlsZW1hcC5jLTEwMTMtXHRcdFx0biA9IGNwdXNldF9tZW1fc3ByZWFkX25vZGUoKTtcbi0tXG5tbS9odWdldGxiLmM9MTI3NT1zdGF0aWMgc3RydWN0IGZvbGlvICpkZXF1ZXVlX2h1Z2V0bGJfZm9saW9fbm9kZW1hc2soc3RydWN0IGhzdGF0ZSAqaCwgZ2ZwX3QgZ2ZwX21hc2ssXG4tLVxubW0vaHVnZXRsYi5jLTEyOTAtcmV0cnlfY3B1c2V0OlxubW0vaHVnZXRsYi5jOjEyOTE6XHRjcHVzZXRfbWVtc19jb29raWUgPSByZWFkX21lbXNfYWxsb3dlZF9iZWdpbigpO1xubW0vaHVnZXRsYi5jLTEyOTItXHRmb3JfZWFjaF96b25lX3pvbmVsaXN0X25vZGVtYXNrKHpvbmUsIHosIHpvbmVsaXN0LCBnZnBfem9uZShnZnBfbWFzayksIG5tYXNrKSB7XG4tLVxubW0vaHVnZXRsYl9jbWEuYz0yOD1zdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxuLS1cbm1tL2h1Z2V0bGJfY21hLmMtNDItXHRpZiAoIW5vZGVtYXNrKSB7XG5tbS9odWdldGxiX2NtYS5jOjQzOlx0XHRjcHVzZXRfbWVtc19jb29raWUgPSByZWFkX21lbXNfYWxsb3dlZF9iZWdpbigpO1xubW0vaHVnZXRsYl9jbWEuYy00NC1cdFx0bG9jYWxfbm9kZV9tYXNrID0gY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkO1xuLS1cbm1tL21lbXBvbGljeS5jPTIxMDA9c3RhdGljIHVuc2lnbmVkIGludCB3ZWlnaHRlZF9pbnRlcmxlYXZlX25vZGVzKHN0cnVjdCBtZW1wb2xpY3kgKnBvbGljeSlcbi0tXG5tbS9tZW1wb2xpY3kuYy0yMTA2LVx0LyogdG8gcHJldmVudCBtaXNjb3VudCB1c2UgdHNrLVx1MDAzZW1lbXNfYWxsb3dlZF9zZXEgdG8gZGV0ZWN0IHJlYmluZCAqL1xubW0vbWVtcG9saWN5LmM6MjEwNzpcdGNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7XG5tbS9tZW1wb2xpY3kuYy0yMTA4LVx0bm9kZSA9IGN1cnJlbnQtXHUwMDNlaWxfcHJldjtcbi0tXG5tbS9tZW1wb2xpY3kuYz0yMTIzPXN0YXRpYyB1bnNpZ25lZCBpbnQgaW50ZXJsZWF2ZV9ub2RlcyhzdHJ1Y3QgbWVtcG9saWN5ICpwb2xpY3kpXG4tLVxubW0vbWVtcG9saWN5LmMtMjEyOS1cdGRvIHtcbm1tL21lbXBvbGljeS5jOjIxMzA6XHRcdGNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7XG5tbS9tZW1wb2xpY3kuYy0yMTMxLVx0XHRuaWQgPSBuZXh0X25vZGVfaW4oY3VycmVudC1cdTAwM2VpbF9wcmV2LCBwb2xpY3ktXHUwMDNlbm9kZXMpO1xuLS1cbm1tL21lbXBvbGljeS5jPTI2MzA9c3RhdGljIHVuc2lnbmVkIGxvbmcgYWxsb2NfcGFnZXNfYnVsa193ZWlnaHRlZF9pbnRlcmxlYXZlKGdmcF90IGdmcCxcbi0tXG5tbS9tZW1wb2xpY3kuYy0yNjU1LVx0ZG8ge1xubW0vbWVtcG9saWN5LmM6MjY1NjpcdFx0Y3B1c2V0X21lbXNfY29va2llID0gcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKTtcbm1tL21lbXBvbGljeS5jLTI2NTctXHRcdG5ub2RlcyA9IHJlYWRfb25jZV9wb2xpY3lfbm9kZW1hc2socG9sLCBcdTAwMjZub2Rlcyk7XG4tLVxubW0vcGFnZV9hbGxvYy5jPTQ3MjU9X19hbGxvY19wYWdlc19zbG93cGF0aChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy00NzY0LVx0Y29tcGFjdF9wcmlvcml0eSA9IERFRl9DT01QQUNUX1BSSU9SSVRZO1xubW0vcGFnZV9hbGxvYy5jOjQ3NjU6XHRjcHVzZXRfbWVtc19jb29raWUgPSByZWFkX21lbXNfYWxsb3dlZF9iZWdpbigpO1xubW0vcGFnZV9hbGxvYy5jLTQ3NjYtXHR6b25lbGlzdF9pdGVyX2Nvb2tpZSA9IHpvbmVsaXN0X2l0ZXJfYmVnaW4oKTtcbi0tXG5tbS9zaG93X21lbS5jPTExOT1zdGF0aWMgYm9vbCBzaG93X21lbV9ub2RlX3NraXAodW5zaWduZWQgaW50IGZsYWdzLCBpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzaylcbi0tXG5tbS9zaG93X21lbS5jLTEyNS1cdCAqIG5vIG5vZGUgbWFzayAtIGFrYSBpbXBsaWNpdCBtZW1vcnkgbnVtYSBwb2xpY3kuIERvIG5vdCBib3RoZXIgd2l0aFxubW0vc2hvd19tZW0uYzoxMjY6XHQgKiB0aGUgc3luY2hyb25pemF0aW9uIC0gcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4gLSBiZWNhdXNlIHdlIGRvIG5vdFxubW0vc2hvd19tZW0uYy0xMjctXHQgKiBoYXZlIHRvIGJlIHByZWNpc2UgaGVyZS5cbi0tXG5tbS9zbHViLmM9Mzg2Mz1zdGF0aWMgdm9pZCAqZ2V0X2Zyb21fYW55X3BhcnRpYWwoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcF9mbGFncyxcbi0tXG5tbS9zbHViLmMtMzg5Ny1cdFx0Lypcbm1tL3NsdWIuYzozODk4Olx0XHQgKiByZWFkX21lbXNfYWxsb3dlZF9iZWdpbigpIGFjY2Vzc2VzIGN1cnJlbnQtXHUwMDNlbWVtc19hbGxvd2VkX3NlcSxcbm1tL3NsdWIuYy0zODk5LVx0XHQgKiBhIHNlcWNvdW50X3NwaW5sb2NrX3QgdGhhdCBpcyBub3QgTk1JLXNhZmUuIERvIG5vdCBhY2Nlc3Ncbi0tXG5tbS9zbHViLmMtMzkwMy1cdFx0aWYgKGFsbG93X3NwaW4pXG5tbS9zbHViLmM6MzkwNDpcdFx0XHRjcHVzZXRfbWVtc19jb29raWUgPSByZWFkX21lbXNfYWxsb3dlZF9iZWdpbigpO1xubW0vc2x1Yi5jLTM5MDUtXG4tLVxubW0vc2x1Yi5jPTcyMzE9X19yZWZpbGxfb2JqZWN0c19hbnkoc3RydWN0IGttZW1fY2FjaGUgKnMsIHZvaWQgKipwLCBnZnBfdCBnZnAsIHVuc2lnbmVkIGludCBtaW4sXG4tLVxubW0vc2x1Yi5jLTcyNDYtXHRkbyB7XG5tbS9zbHViLmM6NzI0NzpcdFx0Y3B1c2V0X21lbXNfY29va2llID0gcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKTtcbm1tL3NsdWIuYy03MjQ4LVx0XHR6b25lbGlzdCA9IG5vZGVfem9uZWxpc3QobWVtcG9saWN5X3NsYWJfbm9kZSgpLCBnZnApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTg0CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGByZWFkX21lbXNfYWxsb3dlZF9iZWdpbmAgYW5kIENQVVNldHMqKgoKT2theSwgc28gYHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luYCBpcyBkZWZpbmVkIGluIGBpbmNsdWRlL2xpbnV4L2NwdXNldC5oYC4gVGhhdCBtYWtlcyBzZW5zZSwgYnV0IGl0JiMzOTtzIGludGVyZXN0aW5nIHRoYXQgaXQmIzM5O3MgcHJlc2VudCBldmVuIHdoZW4gYENPTkZJR19DUFVTRVRTYCBpc24mIzM5O3QgZW5hYmxlZC4gQ2xlYXJseSwgdGhlcmUmIzM5O3MgYSBkdW1teSBpbXBsZW1lbnRhdGlvbiBpbiBwbGFjZSB0byBoYW5kbGUgdGhlIHNjZW5hcmlvIHdoZXJlIGNwdXNldHMgYXJlIGRpc2FibGVkLiBIb3dldmVyLCBpZiBJIHJlYWxseSB3YW50IHRvIGRpdmUgZGVlcCBpbnRvIHRoZSBsb2dpYyBhbmQgdGVzdCB0aGUgZnVuY3Rpb25hbGl0eSBwcm9wZXJseSwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgaWYgYENPTkZJR19DUFVTRVRTYCBpcyBhY3R1YWxseSBjb25maWd1cmVkLiBCZXN0IHRvIHZlcmlmeSB0aGUgcmVhbCBpbXBsZW1lbnRhdGlvbiwgc28gSSYjMzk7bGwgZ28gYWhlYWQgYW5kIHRha2UgYSBsb29rIGF0IGBpbmNsdWRlL2xpbnV4L2NwdXNldC5oYCBhZ2Fpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0NQVVNFVFMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jcHUtaXNvbGF0aW9uLnJzdD05OD1SZXF1aXJlbWVudHNcbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2NwdS1pc29sYXRpb24ucnN0LTEwMC1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvY3B1LWlzb2xhdGlvbi5yc3Q6MTAxOi0gQ09ORklHX0NQVVNFVFM9eSBmb3IgdGhlIGNwdXNldHMtYmFzZWQgaW50ZXJmYWNlXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2NwdS1pc29sYXRpb24ucnN0LTEwMi1cbi0tXG5Eb2N1bWVudGF0aW9uL2Rldi10b29scy9ncGlvLXNsb3BweS1sb2dpYy1hbmFseXplci5yc3Q9MzU9U2V0dXBcbi0tXG5Eb2N1bWVudGF0aW9uL2Rldi10b29scy9ncGlvLXNsb3BweS1sb2dpYy1hbmFseXplci5yc3QtMzctXG5Eb2N1bWVudGF0aW9uL2Rldi10b29scy9ncGlvLXNsb3BweS1sb2dpYy1hbmFseXplci5yc3Q6Mzg6WW91ciBrZXJuZWwgbXVzdCBoYXZlIENPTkZJR19ERUJVR19GUyBhbmQgQ09ORklHX0NQVVNFVFMgZW5hYmxlZC4gSWRlYWxseSwgeW91clxuRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMvZ3Bpby1zbG9wcHktbG9naWMtYW5hbHl6ZXIucnN0LTM5LXJ1bnRpbWUgZW52aXJvbm1lbnQgZG9lcyBub3QgdXRpbGl6ZSBjcHVzZXRzIG90aGVyd2lzZSwgdGhlbiBpc29sYXRpb24gb2YgYSBDUFVcbi0tXG5hcmNoL2FybS9jb25maWdzL2JjbTI4MzVfZGVmY29uZmlnPTEwPUNPTkZJR19DR1JPVVBfRlJFRVpFUj15XG5hcmNoL2FybS9jb25maWdzL2JjbTI4MzVfZGVmY29uZmlnOjExOkNPTkZJR19DUFVTRVRTPXlcbmFyY2gvYXJtL2NvbmZpZ3MvYmNtMjgzNV9kZWZjb25maWctMTItQ09ORklHX0NHUk9VUF9ERVZJQ0U9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZz0xNj1DT05GSUdfQ0dST1VQX0ZSRUVaRVI9eVxuYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnOjE3OkNPTkZJR19DUFVTRVRTPXlcbmFyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZy0xOC1DT05GSUdfQ0dST1VQX0RFVklDRT15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9zb2NmcGdhX2RlZmNvbmZpZz02PUNPTkZJR19DR1JPVVBTPXlcbmFyY2gvYXJtL2NvbmZpZ3Mvc29jZnBnYV9kZWZjb25maWc6NzpDT05GSUdfQ1BVU0VUUz15XG5hcmNoL2FybS9jb25maWdzL3NvY2ZwZ2FfZGVmY29uZmlnLTgtQ09ORklHX05BTUVTUEFDRVM9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvdmV4cHJlc3NfZGVmY29uZmlnPTg9Q09ORklHX0NHUk9VUFM9eVxuYXJjaC9hcm0vY29uZmlncy92ZXhwcmVzc19kZWZjb25maWc6OTpDT05GSUdfQ1BVU0VUUz15XG5hcmNoL2FybS9jb25maWdzL3ZleHByZXNzX2RlZmNvbmZpZy0xMC0jIENPTkZJR19VVFNfTlMgaXMgbm90IHNldFxuLS1cbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc9MjI9Q09ORklHX0NHUk9VUF9IVUdFVExCPXlcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc6MjM6Q09ORklHX0NQVVNFVFM9eVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy0yNC1DT05GSUdfQ0dST1VQX0RFVklDRT15XG4tLVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz0yNz1DT05GSUdfQ0dST1VQX0ZSRUVaRVI9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzoyODpDT05GSUdfQ1BVU0VUUz15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTI5LUNPTkZJR19DR1JPVVBfREVWSUNFPXlcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTMxPUNPTkZJR19DR1JPVVBfSFVHRVRMQj15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnOjMyOkNPTkZJR19DUFVTRVRTPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMzMtQ09ORklHX0NHUk9VUF9ERVZJQ0U9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE1X2RlZmNvbmZpZz0xMj1DT05GSUdfQ0dST1VQX0ZSRUVaRVI9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnOjEzOkNPTkZJR19DUFVTRVRTPXlcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE1X2RlZmNvbmZpZy0xNC1DT05GSUdfQ0dST1VQX0RFVklDRT15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZfZGVmY29uZmlnPTEzPUNPTkZJR19DR1JPVVBfRlJFRVpFUj15XG5hcmNoL21pcHMvY29uZmlncy9leWVxNl9kZWZjb25maWc6MTQ6Q09ORklHX0NQVVNFVFM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZfZGVmY29uZmlnLTE1LUNPTkZJR19DR1JPVVBfREVWSUNFPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9leWVxNmxwbHVzX2RlZmNvbmZpZz0xMz1DT05GSUdfQ0dST1VQX0ZSRUVaRVI9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZscGx1c19kZWZjb25maWc6MTQ6Q09ORklHX0NQVVNFVFM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZscGx1c19kZWZjb25maWctMTUtQ09ORklHX0NHUk9VUF9ERVZJQ0U9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2dlbmVyaWNfZGVmY29uZmlnPTk9Q09ORklHX0NHUk9VUF9GUkVFWkVSPXlcbmFyY2gvbWlwcy9jb25maWdzL2dlbmVyaWNfZGVmY29uZmlnOjEwOkNPTkZJR19DUFVTRVRTPXlcbmFyY2gvbWlwcy9jb25maWdzL2dlbmVyaWNfZGVmY29uZmlnLTExLUNPTkZJR19DR1JPVVBfREVWSUNFPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZz04PUNPTkZJR19DR1JPVVBTPXlcbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnOjk6Q09ORklHX0NQVVNFVFM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWctMTAtQ09ORklHX1JFTEFZPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZz04PUNPTkZJR19DR1JPVVBTPXlcbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnOjk6Q09ORklHX0NQVVNFVFM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWctMTAtQ09ORklHX1JFTEFZPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnPTIwPUNPTkZJR19DR1JPVVBfRlJFRVpFUj15XG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnOjIxOkNPTkZJR19DUFVTRVRTPXlcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWctMjItQ09ORklHX0NHUk9VUF9ERVZJQ0U9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL3NiMTI1MF9zd2FybV9kZWZjb25maWc9ND1DT05GSUdfQ0dST1VQUz15XG5hcmNoL21pcHMvY29uZmlncy9zYjEyNTBfc3dhcm1fZGVmY29uZmlnOjU6Q09ORklHX0NQVVNFVFM9eVxuYXJjaC9taXBzL2NvbmZpZ3Mvc2IxMjUwX3N3YXJtX2RlZmNvbmZpZy02LSMgQ09ORklHX1BST0NfUElEX0NQVVNFVCBpcyBub3Qgc2V0XG4tLVxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZz0xNz1DT05GSUdfQ0dST1VQX1BJRFM9eVxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZzoxODpDT05GSUdfQ1BVU0VUUz15XG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnLTE5LUNPTkZJR19VU0VSX05TPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9jZWxsX2RlZmNvbmZpZz0xMj1DT05GSUdfQ0dST1VQUz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9jZWxsX2RlZmNvbmZpZzoxMzpDT05GSUdfQ1BVU0VUUz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9jZWxsX2RlZmNvbmZpZy0xNC1DT05GSUdfQkxLX0RFVl9JTklUUkQ9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL2ZzbC1lbWItbm9uaHcuY29uZmlnPTE2PUNPTkZJR19DR1JPVVBTPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL2ZzbC1lbWItbm9uaHcuY29uZmlnLTE3LSMgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTIGlzIG5vdCBzZXRcbmFyY2gvcG93ZXJwYy9jb25maWdzL2ZzbC1lbWItbm9uaHcuY29uZmlnOjE4OkNPTkZJR19DUFVTRVRTPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL2ZzbC1lbWItbm9uaHcuY29uZmlnLTE5LUNPTkZJR19DUkFNRlM9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnPTIxPUNPTkZJR19DR1JPVVBfRlJFRVpFUj15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZzoyMjpDT05GSUdfQ1BVU0VUUz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZy0yMy1DT05GSUdfQ0dST1VQX0RFVklDRT15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnPTI4PUNPTkZJR19DR1JPVVBfSFVHRVRMQj15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc6Mjk6Q09ORklHX0NQVVNFVFM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnLTMwLUNPTkZJR19DR1JPVVBfREVWSUNFPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NGVfZGVmY29uZmlnPTEyPUNPTkZJR19DR1JPVVBTPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0ZV9kZWZjb25maWc6MTM6Q09ORklHX0NQVVNFVFM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRlX2RlZmNvbmZpZy0xNC1DT05GSUdfQkxLX0RFVl9JTklUUkQ9eVxuLS1cbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWc9MTU9Q09ORklHX0NHUk9VUF9IVUdFVExCPXlcbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWc6MTY6Q09ORklHX0NQVVNFVFM9eVxuYXJjaC9yaXNjdi9jb25maWdzL2RlZmNvbmZpZy0xNy1DT05GSUdfQ0dST1VQX0RFVklDRT15XG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTMxPUNPTkZJR19DR1JPVVBfSFVHRVRMQj15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6MzI6Q09ORklHX0NQVVNFVFM9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTMzLUNPTkZJR19DR1JPVVBfREVWSUNFPXlcbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9Mjk9Q09ORklHX0NHUk9VUF9IVUdFVExCPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzozMDpDT05GSUdfQ1BVU0VUUz15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMzEtQ09ORklHX0NHUk9VUF9ERVZJQ0U9eVxuLS1cbmFyY2gvc2gvY29uZmlncy9zZGs3Nzg2X2RlZmNvbmZpZz0xND1DT05GSUdfQ0dST1VQX0RFVklDRT15XG5hcmNoL3NoL2NvbmZpZ3Mvc2RrNzc4Nl9kZWZjb25maWc6MTU6Q09ORklHX0NQVVNFVFM9eVxuYXJjaC9zaC9jb25maWdzL3Nkazc3ODZfZGVmY29uZmlnLTE2LSMgQ09ORklHX1BST0NfUElEX0NQVVNFVCBpcyBub3Qgc2V0XG4tLVxuYXJjaC9zaC9jb25maWdzL3VycXVlbGxfZGVmY29uZmlnPTEyPUNPTkZJR19DR1JPVVBfREVWSUNFPXlcbmFyY2gvc2gvY29uZmlncy91cnF1ZWxsX2RlZmNvbmZpZzoxMzpDT05GSUdfQ1BVU0VUUz15XG5hcmNoL3NoL2NvbmZpZ3MvdXJxdWVsbF9kZWZjb25maWctMTQtIyBDT05GSUdfUFJPQ19QSURfQ1BVU0VUIGlzIG5vdCBzZXRcbi0tXG5hcmNoL3VtL2NvbmZpZ3MvaTM4Nl9kZWZjb25maWc9MTY9Q09ORklHX0NHUk9VUF9ERVZJQ0U9eVxuYXJjaC91bS9jb25maWdzL2kzODZfZGVmY29uZmlnOjE3OkNPTkZJR19DUFVTRVRTPXlcbmFyY2gvdW0vY29uZmlncy9pMzg2X2RlZmNvbmZpZy0xOC1DT05GSUdfQ0dST1VQX0NQVUFDQ1Q9eVxuLS1cbmFyY2gvdW0vY29uZmlncy94ODZfNjRfZGVmY29uZmlnPTE1PUNPTkZJR19DR1JPVVBfREVWSUNFPXlcbmFyY2gvdW0vY29uZmlncy94ODZfNjRfZGVmY29uZmlnOjE2OkNPTkZJR19DUFVTRVRTPXlcbmFyY2gvdW0vY29uZmlncy94ODZfNjRfZGVmY29uZmlnLTE3LUNPTkZJR19DR1JPVVBfQ1BVQUNDVD15XG4tLVxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZz0yMD1DT05GSUdfQ0dST1VQX0hVR0VUTEI9eVxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZzoyMTpDT05GSUdfQ1BVU0VUUz15XG5hcmNoL3g4Ni9jb25maWdzL2kzODZfZGVmY29uZmlnLTIyLUNPTkZJR19DR1JPVVBfREVWSUNFPXlcbi0tXG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWc9MjA9Q09ORklHX0NHUk9VUF9IVUdFVExCPXlcbmFyY2gveDg2L2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZzoyMTpDT05GSUdfQ1BVU0VUUz15XG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWctMjItQ09ORklHX0NHUk9VUF9ERVZJQ0U9eVxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3MvYXVkaW9fa2M3MDVfZGVmY29uZmlnPTEwPUNPTkZJR19DR1JPVVBfREVWSUNFPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3MvYXVkaW9fa2M3MDVfZGVmY29uZmlnOjExOkNPTkZJR19DUFVTRVRTPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3MvYXVkaW9fa2M3MDVfZGVmY29uZmlnLTEyLUNPTkZJR19DR1JPVVBfQ1BVQUNDVD15XG4tLVxuYXJjaC94dGVuc2EvY29uZmlncy9jYWRlbmNlX2NzcF9kZWZjb25maWc9Nz1DT05GSUdfQ0dST1VQX0ZSRUVaRVI9eVxuYXJjaC94dGVuc2EvY29uZmlncy9jYWRlbmNlX2NzcF9kZWZjb25maWc6ODpDT05GSUdfQ1BVU0VUUz15XG5hcmNoL3h0ZW5zYS9jb25maWdzL2NhZGVuY2VfY3NwX2RlZmNvbmZpZy05LUNPTkZJR19DR1JPVVBfREVWSUNFPXlcbi0tXG5hcmNoL3h0ZW5zYS9jb25maWdzL2dlbmVyaWNfa2M3MDVfZGVmY29uZmlnPTEwPUNPTkZJR19DR1JPVVBfREVWSUNFPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3MvZ2VuZXJpY19rYzcwNV9kZWZjb25maWc6MTE6Q09ORklHX0NQVVNFVFM9eVxuYXJjaC94dGVuc2EvY29uZmlncy9nZW5lcmljX2tjNzA1X2RlZmNvbmZpZy0xMi1DT05GSUdfQ0dST1VQX0NQVUFDQ1Q9eVxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3Mvbm9tbXVfa2M3MDVfZGVmY29uZmlnPTEwPUNPTkZJR19DR1JPVVBfREVWSUNFPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3Mvbm9tbXVfa2M3MDVfZGVmY29uZmlnOjExOkNPTkZJR19DUFVTRVRTPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3Mvbm9tbXVfa2M3MDVfZGVmY29uZmlnLTEyLUNPTkZJR19DR1JPVVBfQ1BVQUNDVD15XG4tLVxuYXJjaC94dGVuc2EvY29uZmlncy9zbXBfbHgyMDBfZGVmY29uZmlnPTEwPUNPTkZJR19DR1JPVVBfREVWSUNFPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3Mvc21wX2x4MjAwX2RlZmNvbmZpZzoxMTpDT05GSUdfQ1BVU0VUUz15XG5hcmNoL3h0ZW5zYS9jb25maWdzL3NtcF9seDIwMF9kZWZjb25maWctMTItQ09ORklHX0NHUk9VUF9DUFVBQ0NUPXlcbi0tXG5pbmNsdWRlL2xpbnV4L2Nncm91cF9zdWJzeXMuaC0xMS1cbmluY2x1ZGUvbGludXgvY2dyb3VwX3N1YnN5cy5oOjEyOiNpZiBJU19FTkFCTEVEKENPTkZJR19DUFVTRVRTKVxuaW5jbHVkZS9saW51eC9jZ3JvdXBfc3Vic3lzLmgtMTMtU1VCU1lTKGNwdXNldClcbi0tXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oPTIxPWV4dGVybiBib29sIGxvY2tkZXBfaXNfY3B1c2V0X2hlbGQodm9pZCk7XG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTIyLVxuaW5jbHVkZS9saW51eC9jcHVzZXQuaDoyMzojaWZkZWYgQ09ORklHX0NQVVNFVFNcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMjQtXG4tLVxuaW5jbHVkZS9saW51eC9jcHVzZXQuaD0xMDI9ZXh0ZXJuIGludCBjcHVzZXRfbWVtc19hbGxvd2VkX2ludGVyc2VjdHMoY29uc3Qgc3RydWN0IHRhc2tfc3RydWN0ICp0c2sxLFxuLS1cbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMTA0LVxuaW5jbHVkZS9saW51eC9jcHVzZXQuaDoxMDU6I2lmZGVmIENPTkZJR19DUFVTRVRTX1YxXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTEwNi0jZGVmaW5lIGNwdXNldF9tZW1vcnlfcHJlc3N1cmVfYnVtcCgpIFx0XHRcdFx0XFxcbi0tXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oPTE3OT1leHRlcm4gdm9pZCBjcHVzZXRfbm9kZXNfYWxsb3dlZChzdHJ1Y3QgY2dyb3VwICpjZ3JvdXAsIG5vZGVtYXNrX3QgKm1hc2spO1xuaW5jbHVkZS9saW51eC9jcHVzZXQuaDoxODA6I2Vsc2UgLyogIUNPTkZJR19DUFVTRVRTICovXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTE4MS1cbi0tXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oPTMwMj1zdGF0aWMgaW5saW5lIHZvaWQgY3B1c2V0X25vZGVzX2FsbG93ZWQoc3RydWN0IGNncm91cCAqY2dyb3VwLCBub2RlbWFza190ICptYXNrKVxuLS1cbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMzA1LX1cbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg6MzA2OiNlbmRpZiAvKiAhQ09ORklHX0NQVVNFVFMgKi9cbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMzA3LVxuLS1cbmluY2x1ZGUvbGludXgvc2NoZWQuaD04MjY9c3RydWN0IHRhc2tfc3RydWN0IHtcbi0tXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtMTMzMS0jZW5kaWZcbmluY2x1ZGUvbGludXgvc2NoZWQuaDoxMzMyOiNpZmRlZiBDT05GSUdfQ1BVU0VUU1xuaW5jbHVkZS9saW51eC9zY2hlZC5oLTEzMzMtXHQvKiBQcm90ZWN0ZWQgYnkgLVx1MDAzZWFsbG9jX2xvY2s6ICovXG4tLVxuaW5pdC9pbml0X3Rhc2suYz0xMDU9c3RydWN0IHRhc2tfc3RydWN0IGluaXRfdGFzayBfX2FsaWduZWQoTDFfQ0FDSEVfQllURVMpID0ge1xuLS1cbmluaXQvaW5pdF90YXNrLmMtMjA4LSNlbmRpZlxuaW5pdC9pbml0X3Rhc2suYzoyMDk6I2lmZGVmIENPTkZJR19DUFVTRVRTXG5pbml0L2luaXRfdGFzay5jLTIxMC1cdC5tZW1zX2FsbG93ZWRfc2VxID0gU0VRQ05UX1NQSU5MT0NLX1pFUk8oaW5pdF90YXNrLm1lbXNfYWxsb3dlZF9zZXEsXG4tLVxua2VybmVsL2Nncm91cC9NYWtlZmlsZT02PW9iai0kKENPTkZJR19DR1JPVVBfUkRNQSkgJiM0Mzs9IHJkbWEub1xua2VybmVsL2Nncm91cC9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19DUFVTRVRTKSAmIzQzOz0gY3B1c2V0Lm9cbmtlcm5lbC9jZ3JvdXAvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfQ1BVU0VUU19WMSkgJiM0Mzs9IGNwdXNldC12MS5vXG5rZXJuZWwvY2dyb3VwL01ha2VmaWxlLTktb2JqLSQoQ09ORklHX0NHUk9VUF9NSVNDKSAmIzQzOz0gbWlzYy5vXG4tLVxua2VybmVsL2Nncm91cC9jZ3JvdXAtdjEuYz0xMDM3PXN0YXRpYyBpbnQgY2hlY2tfY2dyb3VwZnNfb3B0aW9ucyhzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4tLVxua2VybmVsL2Nncm91cC9jZ3JvdXAtdjEuYy0xMDQ0LVxua2VybmVsL2Nncm91cC9jZ3JvdXAtdjEuYzoxMDQ1OiNpZmRlZiBDT05GSUdfQ1BVU0VUU1xua2VybmVsL2Nncm91cC9jZ3JvdXAtdjEuYy0xMDQ2LVx0bWFzayA9IH4oKHUzMikxIFx1MDAzY1x1MDAzYyBjcHVzZXRfY2dycF9pZCk7XG4tLVxua2VybmVsL2Nncm91cC9jZ3JvdXAuYz0yMzk2PXN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBjZ3JvdXAyX2ZzX3R5cGUgPSB7XG4tLVxua2VybmVsL2Nncm91cC9jZ3JvdXAuYy0yNDAzLVxua2VybmVsL2Nncm91cC9jZ3JvdXAuYzoyNDA0OiNpZmRlZiBDT05GSUdfQ1BVU0VUU19WMVxua2VybmVsL2Nncm91cC9jZ3JvdXAuYy0yNDA1LWVudW0gY3B1c2V0X3BhcmFtIHtcbi0tXG5rZXJuZWwvY2dyb3VwL2Nncm91cC5jPTY0MjM9aW50IF9faW5pdCBjZ3JvdXBfaW5pdCh2b2lkKVxuLS1cbmtlcm5lbC9jZ3JvdXAvY2dyb3VwLmMtNjUxNi1cdFdBUk5fT04oIXByb2NfY3JlYXRlX3NpbmdsZShcJiMzNDtjZ3JvdXBzXCYjMzQ7LCAwLCBOVUxMLCBwcm9jX2Nncm91cHN0YXRzX3Nob3cpKTtcbmtlcm5lbC9jZ3JvdXAvY2dyb3VwLmM6NjUxNzojaWZkZWYgQ09ORklHX0NQVVNFVFNfVjFcbmtlcm5lbC9jZ3JvdXAvY2dyb3VwLmMtNjUxOC1cdFdBUk5fT04ocmVnaXN0ZXJfZmlsZXN5c3RlbShcdTAwMjZjcHVzZXRfZnNfdHlwZSkpO1xuLS1cbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmg9NzU9c3RydWN0IGNwdXNldCB7XG4tLVxua2VybmVsL2Nncm91cC9jcHVzZXQtaW50ZXJuYWwuaC0xODMtXG5rZXJuZWwvY2dyb3VwL2NwdXNldC1pbnRlcm5hbC5oOjE4NDojaWZkZWYgQ09ORklHX0NQVVNFVFNfVjFcbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmgtMTg1LVx0c3RydWN0IGZtZXRlciBmbWV0ZXI7XHRcdC8qIG1lbW9yeV9wcmVzc3VyZSBmaWx0ZXIgKi9cbi0tXG5rZXJuZWwvY2dyb3VwL2NwdXNldC1pbnRlcm5hbC5oPTMxNj12b2lkIGNwdXNldF9mdWxsX3VubG9jayh2b2lkKTtcbi0tXG5rZXJuZWwvY2dyb3VwL2NwdXNldC1pbnRlcm5hbC5oLTMyMC0gKi9cbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmg6MzIxOiNpZmRlZiBDT05GSUdfQ1BVU0VUU19WMVxua2VybmVsL2Nncm91cC9jcHVzZXQtaW50ZXJuYWwuaC0zMjItZXh0ZXJuIHN0cnVjdCBjZnR5cGUgY3B1c2V0MV9maWxlc1tdO1xuLS1cbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmg9MzQ5PXN0YXRpYyBpbmxpbmUgaW50IGNwdXNldDFfZ2VuZXJhdGVfc2NoZWRfZG9tYWlucyhjcHVtYXNrX3Zhcl90ICoqZG9tYWlucyxcbi0tXG5rZXJuZWwvY2dyb3VwL2NwdXNldC1pbnRlcm5hbC5oLTM1MS1cbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmg6MzUyOiNlbmRpZiAvKiBDT05GSUdfQ1BVU0VUU19WMSAqL1xua2VybmVsL2Nncm91cC9jcHVzZXQtaW50ZXJuYWwuaC0zNTMtXG4tLVxua2VybmVsL2Nncm91cC9jcHVzZXQuYz0zOTA9c3RhdGljIGlubGluZSBib29sIGNwdXNldF92Mih2b2lkKVxua2VybmVsL2Nncm91cC9jcHVzZXQuYy0zOTEte1xua2VybmVsL2Nncm91cC9jcHVzZXQuYzozOTI6XHRyZXR1cm4gIUlTX0VOQUJMRUQoQ09ORklHX0NQVVNFVFNfVjEpIHx8XG5rZXJuZWwvY2dyb3VwL2NwdXNldC5jLTM5My1cdFx0Y2dyb3VwX3N1YnN5c19vbl9kZmwoY3B1c2V0X2NncnBfc3Vic3lzKTtcbi0tXG5rZXJuZWwvY2dyb3VwL2NwdXNldC5jPTM2NjU9c3RydWN0IGNncm91cF9zdWJzeXMgY3B1c2V0X2NncnBfc3Vic3lzID0ge1xuLS1cbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LmMtMzY3Ny1cdC5mb3JrXHRcdD0gY3B1c2V0X2ZvcmssXG5rZXJuZWwvY2dyb3VwL2NwdXNldC5jOjM2Nzg6I2lmZGVmIENPTkZJR19DUFVTRVRTX1YxXG5rZXJuZWwvY2dyb3VwL2NwdXNldC5jLTM2NzktXHQubGVnYWN5X2NmdHlwZXNcdD0gY3B1c2V0MV9maWxlcyxcbi0tXG5rZXJuZWwvZm9yay5jPTE5OTQ9X19sYXRlbnRfZW50cm9weSBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmNvcHlfcHJvY2Vzcyhcbi0tXG5rZXJuZWwvZm9yay5jLTIyMzEtI2VuZGlmXG5rZXJuZWwvZm9yay5jOjIyMzI6I2lmZGVmIENPTkZJR19DUFVTRVRTXG5rZXJuZWwvZm9yay5jLTIyMzMtXHRwLVx1MDAzZWNwdXNldF9tZW1fc3ByZWFkX3JvdG9yID0gTlVNQV9OT19OT0RFO1xuLS1cbmtlcm5lbC9zY2hlZC9pc29sYXRpb24uYz0zNz1zdGF0aWMgYm9vbCBob3VzZWtlZXBpbmdfZGVyZWZlcmVuY2VfY2hlY2soZW51bSBoa190eXBlIHR5cGUpXG4tLVxua2VybmVsL3NjaGVkL2lzb2xhdGlvbi5jLTQ4LVx0XHQvKiBDcHVzZXQgbG9jayBoZWxkLCBwYXJ0aXRpb25zIG5vdCB3cml0YWJsZSAqL1xua2VybmVsL3NjaGVkL2lzb2xhdGlvbi5jOjQ5Olx0XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfQ1BVU0VUUykgXHUwMDI2XHUwMDI2IGxvY2tkZXBfaXNfY3B1c2V0X2hlbGQoKSlcbmtlcm5lbC9zY2hlZC9pc29sYXRpb24uYy01MC1cdFx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLmFhcmNoNjQ9MzA9Q09ORklHX0NPTVBBVD15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLmFhcmNoNjQ6MzE6Q09ORklHX0NQVVNFVFM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0LTMyLUNPTkZJR19DUkFTSF9EVU1QPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWw9MjE9Q09ORklHX0NQVV9MSVRUTEVfRU5ESUFOPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcucHBjNjRlbDoyMjpDT05GSUdfQ1BVU0VUUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWwtMjMtQ09ORklHX0RFQlVHX0FUT01JQ19TTEVFUD15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0PTE3PUNPTkZJR19DR1JPVVBfU0NIRUQ9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0OjE4OkNPTkZJR19DUFVTRVRTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcucmlzY3Y2NC0xOS1DT05GSUdfREVCVUdfQVRPTUlDX1NMRUVQPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnMzOTB4PTIxPUNPTkZJR19DSEVDS1BPSU5UX1JFU1RPUkU9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweDoyMjpDT05GSUdfQ1BVU0VUUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnMzOTB4LTIzLUNPTkZJR19DUkFTSF9EVU1QPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLng4Nl82ND00MD1DT05GSUdfQ1BVX0lETEVfR09WX0xBRERFUj15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLng4Nl82NDo0MTpDT05GSUdfQ1BVU0VUUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLng4Nl82NC00Mi1DT05GSUdfQ1JZUFRPX0JMQUtFMkI9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uPTQwPUNPTkZJR19DUFVfSURMRV9HT1ZfTEFEREVSPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uOjQxOkNPTkZJR19DUFVTRVRTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uLTQyLUNPTkZJR19DUllQVE9fQkxBS0UyQj15XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNzk1CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uCgoqKlVuZGVyc3RhbmRpbmcgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkKioKCkFscmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7WWVhaCwgYENPTkZJR19DUFVTRVRTYCBpcyBhYnNvbHV0ZWx5IGNydWNpYWwgaGVyZS4mIzM0OyBXaXRob3V0IGl0LCBgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkYCBpcyBiYXNpY2FsbHkganVzdCBhbGlhc2VkIHRvIGBub2RlX3N0YXRlc1tOX01FTU9SWV1gLCB3aGljaCBkb2VzbiYjMzk7dCBnaXZlIG1lIHRoZSBmaW5lLWdyYWluZWQgY29udHJvbCBJJiMzOTttIGxvb2tpbmcgZm9yLiBJdCYjMzk7cyBsaWtlIGhhdmluZyBhIGZhbmN5IHRvb2wgYW5kIHRoZW4gbm90IHR1cm5pbmcgaXQgb24uIFdoYXQmIzM5O3MgdGhlIHBvaW50PyBJIG5lZWQgYENPTkZJR19DUFVTRVRTYCBlbmFibGVkIHRvIGFjdHVhbGx5ICp1c2UqIHRoaXMgdGhpbmcgdG8gcGFydGl0aW9uIG1lbW9yeSBlZmZlY3RpdmVseS4gCgpIbW0sIHJpZ2h0LCBub3cgd2hlcmUgKmlzKiBgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkYCBhY3R1YWxseSBkZWZpbmVkPyBPaCwgeWVzLCBvZiBjb3Vyc2UsIGl0JiMzOTtzIGhpZGluZyBpbiBgaW5jbHVkZS9saW51eC9jcHVzZXQuaGAuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBzb3VyY2UgYW5kIHNlZSBleGFjdGx5IGhvdyBpdCYjMzk7cyBpbXBsZW1lbnRlZCBhbmQgd2hhdCBpdCBkZXBlbmRzIG9uLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGRlZmluaXRpb24gdG8gYmUgZW50aXJlbHkgc3VyZS4gR290dGEgYmUgdGhvcm91Z2guIExldCYjMzk7cyBzZWUgd2hhdCB0aGF0IGhlYWRlciBmaWxlIHNheXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2NwdXNldC5oPTgzPWV4dGVybiBub2RlbWFza190IGNwdXNldF9tZW1zX2FsbG93ZWQoc3RydWN0IHRhc2tfc3RydWN0ICpwKTtcbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg6ODQ6I2RlZmluZSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQgKGN1cnJlbnQtXHUwMDNlbWVtc19hbGxvd2VkKVxuaW5jbHVkZS9saW51eC9jcHVzZXQuaC04NS12b2lkIGNwdXNldF9pbml0X2N1cnJlbnRfbWVtc19hbGxvd2VkKHZvaWQpO1xuLS1cbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg9MjE5PXN0YXRpYyBpbmxpbmUgbm9kZW1hc2tfdCBjcHVzZXRfbWVtc19hbGxvd2VkKHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbi0tXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTIyMy1cbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg6MjI0OiNkZWZpbmUgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkIChub2RlX3N0YXRlc1tOX01FTU9SWV0pXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTIyNS1zdGF0aWMgaW5saW5lIHZvaWQgY3B1c2V0X2luaXRfY3VycmVudF9tZW1zX2FsbG93ZWQodm9pZCkge31cbi0tXG5rZXJuZWwvc2NoZWQvZmFpci5jPTQwNzY9c3RhdGljIHZvaWQgdGFza19udW1hX3dvcmsoc3RydWN0IGNhbGxiYWNrX2hlYWQgKndvcmspXG4tLVxua2VybmVsL3NjaGVkL2ZhaXIuYy00MTA3LVx0ICovXG5rZXJuZWwvc2NoZWQvZmFpci5jOjQxMDg6XHRpZiAoY3B1c2V0c19lbmFibGVkKCkgXHUwMDI2XHUwMDI2IG5vZGVzX3dlaWdodChjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQpID09IDEpIHtcbmtlcm5lbC9zY2hlZC9mYWlyLmM6NDEwOTpcdFx0dHJhY2Vfc2NoZWRfc2tpcF9jcHVzZXRfbnVtYShjdXJyZW50LCBcdTAwMjZjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQpO1xua2VybmVsL3NjaGVkL2ZhaXIuYy00MTEwLVx0XHRyZXR1cm47XG4tLVxubW0vaHVnZXRsYi5jPTIyNDU9c3RhdGljIGludCBnYXRoZXJfc3VycGx1c19wYWdlcyhzdHJ1Y3QgaHN0YXRlICpoLCBsb25nIGRlbHRhKVxuLS1cbm1tL2h1Z2V0bGIuYy0yMjU3LVx0aWYgKG1iaW5kX25vZGVtYXNrKVxubW0vaHVnZXRsYi5jOjIyNTg6XHRcdG5vZGVzX2FuZChhbGxvY19ub2RlbWFzaywgKm1iaW5kX25vZGVtYXNrLCBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQpO1xubW0vaHVnZXRsYi5jLTIyNTktXHRlbHNlXG5tbS9odWdldGxiLmM6MjI2MDpcdFx0YWxsb2Nfbm9kZW1hc2sgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XG5tbS9odWdldGxiLmMtMjI2MS1cbi0tXG5tbS9odWdldGxiLmM9NDUwMD1zdGF0aWMgdW5zaWduZWQgaW50IGFsbG93ZWRfbWVtc19ucihzdHJ1Y3QgaHN0YXRlICpoKVxuLS1cbm1tL2h1Z2V0bGIuYy00NTA4LVx0bWJpbmRfbm9kZW1hc2sgPSBwb2xpY3lfbWJpbmRfbm9kZW1hc2soZ2ZwX21hc2spO1xubW0vaHVnZXRsYi5jOjQ1MDk6XHRmb3JfZWFjaF9ub2RlX21hc2sobm9kZSwgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkKSB7XG5tbS9odWdldGxiLmMtNDUxMC1cdFx0aWYgKCFtYmluZF9ub2RlbWFzayB8fCBub2RlX2lzc2V0KG5vZGUsICptYmluZF9ub2RlbWFzaykpXG4tLVxubW0vaHVnZXRsYl9jbWEuYz0yOD1zdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxuLS1cbm1tL2h1Z2V0bGJfY21hLmMtNDMtXHRcdGNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7XG5tbS9odWdldGxiX2NtYS5jOjQ0Olx0XHRsb2NhbF9ub2RlX21hc2sgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XG5tbS9odWdldGxiX2NtYS5jLTQ1LVx0XHRubWFzayA9IFx1MDAyNmxvY2FsX25vZGVfbWFzaztcbi0tXG5tbS9tZW1wb2xpY3kuYz00MDQ9c3RhdGljIGludCBtcG9sX3NldF9ub2RlbWFzayhzdHJ1Y3QgbWVtcG9saWN5ICpwb2wsXG4tLVxubW0vbWVtcG9saWN5LmMtNDE4LVx0bm9kZXNfYW5kKG5zYy1cdTAwM2VtYXNrMSxcbm1tL21lbXBvbGljeS5jOjQxOTpcdFx0ICBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQsIG5vZGVfc3RhdGVzW05fTUVNT1JZXSk7XG5tbS9tZW1wb2xpY3kuYy00MjAtXG4tLVxubW0vbWVtcG9saWN5LmMtNDMwLVx0ZWxzZVxubW0vbWVtcG9saWN5LmM6NDMxOlx0XHRwb2wtXHUwMDNldy5jcHVzZXRfbWVtc19hbGxvd2VkID0gY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkO1xubW0vbWVtcG9saWN5LmMtNDMyLVxuLS1cbm1tL21lbXBvbGljeS5jPTExNDc9c3RhdGljIGxvbmcgZG9fZ2V0X21lbXBvbGljeShpbnQgKnBvbGljeSwgbm9kZW1hc2tfdCAqbm1hc2ssXG4tLVxubW0vbWVtcG9saWN5LmMtMTE2My1cdFx0dGFza19sb2NrKGN1cnJlbnQpO1xubW0vbWVtcG9saWN5LmM6MTE2NDpcdFx0Km5tYXNrICA9IGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZDtcbm1tL21lbXBvbGljeS5jLTExNjUtXHRcdHRhc2tfdW5sb2NrKGN1cnJlbnQpO1xuLS1cbm1tL29vbV9raWxsLmM9MjQ5PXN0YXRpYyBlbnVtIG9vbV9jb25zdHJhaW50IGNvbnN0cmFpbmVkX2FsbG9jKHN0cnVjdCBvb21fY29udHJvbCAqb2MpXG4tLVxubW0vb29tX2tpbGwuYy0yOTgtXHRcdG9jLVx1MDAzZXRvdGFscGFnZXMgPSB0b3RhbF9zd2FwX3BhZ2VzO1xubW0vb29tX2tpbGwuYzoyOTk6XHRcdGZvcl9lYWNoX25vZGVfbWFzayhuaWQsIGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZClcbm1tL29vbV9raWxsLmMtMzAwLVx0XHRcdG9jLVx1MDAzZXRvdGFscGFnZXMgJiM0Mzs9IG5vZGVfcHJlc2VudF9wYWdlcyhuaWQpO1xuLS1cbm1tL3BhZ2VfYWxsb2MuYz00NzI1PV9fYWxsb2NfcGFnZXNfc2xvd3BhdGgoZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcixcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNDgwNi1cdFx0XHRcdFx0YWMtXHUwMDNlaGlnaGVzdF96b25laWR4LFxubW0vcGFnZV9hbGxvYy5jOjQ4MDc6XHRcdFx0XHRcdFx1MDAyNmNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZCk7XG5tbS9wYWdlX2FsbG9jLmMtNDgwOC1cdFx0aWYgKCF6b25lbGlzdF96b25lKHopKVxuLS1cbm1tL3BhZ2VfYWxsb2MuYz01MDI2PXN0YXRpYyBpbmxpbmUgYm9vbCBwcmVwYXJlX2FsbG9jX3BhZ2VzKGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsXG4tLVxubW0vcGFnZV9hbGxvYy5jLTUwNDItXHRcdGlmIChpbl90YXNrKCkgXHUwMDI2XHUwMDI2ICFhYy1cdTAwM2Vub2RlbWFzaylcbm1tL3BhZ2VfYWxsb2MuYzo1MDQzOlx0XHRcdGFjLVx1MDAzZW5vZGVtYXNrID0gXHUwMDI2Y3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkO1xubW0vcGFnZV9hbGxvYy5jLTUwNDQtXHRcdGVsc2Vcbi0tXG5tbS9wYWdlX2FsbG9jLmM9NTI2OD1zdHJ1Y3QgcGFnZSAqX19hbGxvY19mcm96ZW5fcGFnZXNfbm9wcm9mKGdmcF90IGdmcCwgdW5zaWduZWQgaW50IG9yZGVyLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy01MzEyLVx0ICogUmVzdG9yZSB0aGUgb3JpZ2luYWwgbm9kZW1hc2sgaWYgaXQgd2FzIHBvdGVudGlhbGx5IHJlcGxhY2VkIHdpdGhcbm1tL3BhZ2VfYWxsb2MuYzo1MzEzOlx0ICogXHUwMDI2Y3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkIHRvIG9wdGltaXplIHRoZSBmYXN0LXBhdGggYXR0ZW1wdC5cbm1tL3BhZ2VfYWxsb2MuYy01MzE0LVx0ICovXG4tLVxubW0vc2hvd19tZW0uYz0xMTk9c3RhdGljIGJvb2wgc2hvd19tZW1fbm9kZV9za2lwKHVuc2lnbmVkIGludCBmbGFncywgaW50IG5pZCwgbm9kZW1hc2tfdCAqbm9kZW1hc2spXG4tLVxubW0vc2hvd19tZW0uYy0xMjktXHRpZiAoIW5vZGVtYXNrKVxubW0vc2hvd19tZW0uYzoxMzA6XHRcdG5vZGVtYXNrID0gXHUwMDI2Y3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkO1xubW0vc2hvd19tZW0uYy0xMzEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1Nzk1CgkJCQkJCQlvdXRwdXQ6IDE2CgkJCQkJCQl0aG91Z2h0czogOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuCgoqKkRldGVybWluaW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAqKgoKUmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCYjMzk7cyByZXF1aXJlZCBmb3IgYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAgdG8gYmVoYXZlIGFzIGV4cGVjdGVkLCBzcGVjaWZpY2FsbHksIGZvciBpdCB0byByZXNvbHZlIHRvIGBjdXJyZW50LSZndDttZW1zX2FsbG93ZWRgLiBUaGF0IG1lYW5zIGBDT05GSUdfQ1BVU0VUU2AgaXMgYSBkZWZpbml0ZSByZXF1aXJlbWVudC4gV2l0aG91dCBpdCwgdGhlIGZ1bmN0aW9uIHJldmVydHMgdG8gdXNpbmcgYG5vZGVfc3RhdGVzW05fTUVNT1JZXWAsIHdoaWNoIGlzbiYjMzk7dCB0aGUgaW50ZW5kZWQgYmVoYXZpb3IuIFNvLCBgQ09ORklHX0NQVVNFVFNgIGlzIHRoZSBzdGFydGluZyBwb2ludC4KCkJ1dCBob2xkIG9uLCB0aGVyZSYjMzk7cyBtb3JlIHRvIGNvbnNpZGVyIGhlcmUuIEkgYWxzbyBzZWVtIHRvIHJlY2FsbCB0aGF0IGJvdGggYENPTkZJR19IVUdFVExCRlNgIGFuZCBgQ09ORklHX0NNQWAgaGF2ZSBzb21lIGNvbm5lY3Rpb24gdG8gdGhpcyBhcmVhLiBMZXQgbWUgcGF1c2UgYW5kIGRlbHZlIGRlZXBlciBpbnRvIHRoZSBkZXBlbmRlbmN5IHRyZWUgb2YgYENPTkZJR19DTUFgLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGEgY3J1Y2lhbCBsaW5rIGluIHRoaXMgY2hhaW4uIExldCBtZSBzZWUgd2hlcmUgdGhhdCB0YWtlcyBtZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENNQSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvZG1hL0tjb25maWc9MTczPWNvbmZpZyBETUFfTlVNQV9DTUFcbi0tXG5rZXJuZWwvZG1hL0tjb25maWctMTg1LVxua2VybmVsL2RtYS9LY29uZmlnOjE4Njpjb25maWcgQ01BX1NJWkVfUEVSTlVNQVxua2VybmVsL2RtYS9LY29uZmlnLTE4Ny1cdGJvb2wgXCYjMzQ7RGVmYXVsdCBDTUEgYXJlYSBwZXIgTlVNQSBub2RlXCYjMzQ7XG4tLVxua2VybmVsL2RtYS9LY29uZmlnPTE5Nj1jb21tZW50IFwmIzM0O0RlZmF1bHQgY29udGlndW91cyBtZW1vcnkgYXJlYSBzaXplOlwmIzM0O1xua2VybmVsL2RtYS9LY29uZmlnLTE5Ny1cbmtlcm5lbC9kbWEvS2NvbmZpZzoxOTg6Y29uZmlnIENNQV9TSVpFX01CWVRFU1xua2VybmVsL2RtYS9LY29uZmlnLTE5OS1cdGludCBcJiMzNDtTaXplIGluIE1lZ2EgQnl0ZXNcJiMzNDtcbi0tXG5rZXJuZWwvZG1hL0tjb25maWctMjA4LVxua2VybmVsL2RtYS9LY29uZmlnOjIwOTpjb25maWcgQ01BX1NJWkVfUEVSQ0VOVEFHRVxua2VybmVsL2RtYS9LY29uZmlnLTIxMC1cdGludCBcJiMzNDtQZXJjZW50YWdlIG9mIHRvdGFsIG1lbW9yeVwmIzM0O1xuLS1cbmtlcm5lbC9kbWEvS2NvbmZpZz0yMjA9Y2hvaWNlXG4tLVxua2VybmVsL2RtYS9LY29uZmlnLTIyMy1cbmtlcm5lbC9kbWEvS2NvbmZpZzoyMjQ6Y29uZmlnIENNQV9TSVpFX1NFTF9NQllURVNcbmtlcm5lbC9kbWEvS2NvbmZpZy0yMjUtXHRib29sIFwmIzM0O1VzZSBtZWdhIGJ5dGVzIHZhbHVlIG9ubHlcJiMzNDtcbmtlcm5lbC9kbWEvS2NvbmZpZy0yMjYtXG5rZXJuZWwvZG1hL0tjb25maWc6MjI3OmNvbmZpZyBDTUFfU0laRV9TRUxfUEVSQ0VOVEFHRVxua2VybmVsL2RtYS9LY29uZmlnLTIyOC1cdGJvb2wgXCYjMzQ7VXNlIHBlcmNlbnRhZ2UgdmFsdWUgb25seVwmIzM0O1xua2VybmVsL2RtYS9LY29uZmlnLTIyOS1cbmtlcm5lbC9kbWEvS2NvbmZpZzoyMzA6Y29uZmlnIENNQV9TSVpFX1NFTF9NSU5cbmtlcm5lbC9kbWEvS2NvbmZpZy0yMzEtXHRib29sIFwmIzM0O1VzZSBsb3dlciB2YWx1ZSAobWluaW11bSlcJiMzNDtcbmtlcm5lbC9kbWEvS2NvbmZpZy0yMzItXG5rZXJuZWwvZG1hL0tjb25maWc6MjMzOmNvbmZpZyBDTUFfU0laRV9TRUxfTUFYXG5rZXJuZWwvZG1hL0tjb25maWctMjM0LVx0Ym9vbCBcJiMzNDtVc2UgaGlnaGVyIHZhbHVlIChtYXhpbXVtKVwmIzM0O1xuLS1cbmtlcm5lbC9kbWEvS2NvbmZpZz0yMzY9ZW5kY2hvaWNlXG5rZXJuZWwvZG1hL0tjb25maWctMjM3LVxua2VybmVsL2RtYS9LY29uZmlnOjIzODpjb25maWcgQ01BX0FMSUdOTUVOVFxua2VybmVsL2RtYS9LY29uZmlnLTIzOS1cdGludCBcJiMzNDtNYXhpbXVtIFBBR0VfU0laRSBvcmRlciBvZiBhbGlnbm1lbnQgZm9yIGNvbnRpZ3VvdXMgYnVmZmVyc1wmIzM0O1xuLS1cbm1tL0tjb25maWc9MTA2ND1jb25maWcgSEFWRV9TRVRVUF9QRVJfQ1BVX0FSRUFcbi0tXG5tbS9LY29uZmlnLTEwNjYtXG5tbS9LY29uZmlnOjEwNjc6Y29uZmlnIENNQVxubW0vS2NvbmZpZy0xMDY4LVx0Ym9vbCBcJiMzNDtDb250aWd1b3VzIE1lbW9yeSBBbGxvY2F0b3JcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTEwODEtXG5tbS9LY29uZmlnOjEwODI6Y29uZmlnIENNQV9ERUJVR0ZTXG5tbS9LY29uZmlnLTEwODMtXHRib29sIFwmIzM0O0NNQSBkZWJ1Z2ZzIGludGVyZmFjZVwmIzM0O1xuLS1cbm1tL0tjb25maWctMTA4Ny1cbm1tL0tjb25maWc6MTA4ODpjb25maWcgQ01BX1NZU0ZTXG5tbS9LY29uZmlnLTEwODktXHRib29sIFwmIzM0O0NNQSBpbmZvcm1hdGlvbiB0aHJvdWdoIHN5c2ZzIGludGVyZmFjZVwmIzM0O1xuLS1cbm1tL0tjb25maWctMTA5NC1cbm1tL0tjb25maWc6MTA5NTpjb25maWcgQ01BX0FSRUFTXG5tbS9LY29uZmlnLTEwOTYtXHRpbnQgXCYjMzQ7TWF4aW11bSBjb3VudCBvZiB0aGUgQ01BIGFyZWFzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2ODgzCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBNZW1vcnkgTWFuYWdlbWVudCBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgc28gYENPTkZJR19DTUFgLCB0aGF0JiMzOTtzIGNsZWFybHkgZGVmaW5lZCBpbiBgbW0vS2NvbmZpZ2AuIEdvb2QsIHRoYXQmIzM5O3Mgd2hlcmUgSSBleHBlY3RlZCB0byBmaW5kIGl0LiBOb3csIGdpdmVuIG15IGN1cnJlbnQgZm9jdXMsIEkgc2hvdWxkIGRpZyBpbnRvIHRoZSBkZXBlbmRlbmNpZXMuIExldCYjMzk7cyBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBgQ09ORklHX0hVR0VUTEJGU2AuIEkgd2FudCB0byBzZWUgaWYgZW5hYmxpbmcgb25lIGltcGFjdHMgdGhlIG90aGVyLCBvciBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBpbnRlcmFjdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBHb3R0YSB0cmFjayB0aGVzZSBkZXBlbmRlbmNpZXMgY2xvc2VseS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBLY29uZmlnIHRlbGxzIHVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSFVHRVRMQkZTJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL0tjb25maWc9MjQ3PWNvbmZpZyBBUkNIX1NVUFBPUlRTX0hVR0VUTEJGU1xuLS1cbmZzL0tjb25maWctMjQ5LVxuZnMvS2NvbmZpZzoyNTA6bWVudWNvbmZpZyBIVUdFVExCRlNcbmZzL0tjb25maWctMjUxLVx0Ym9vbCBcJiMzNDtIdWdlVExCIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcxNDUKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCBtZSBzZWUuLi4gSSYjMzk7bSBsb29raW5nIGF0IGEgcGFydGljdWxhciBzdWJzeXN0ZW0gb3IgZmVhdHVyZSB3aXRoaW4gdGhlIGtlcm5lbCwgYW5kIGl0IHNlZW1zIHByZXR0eSBjbGVhciB0aGF0IGBDT05GSUdfSFVHRVRMQkZTYCBpcyBhIHByZXJlcXVpc2l0ZS4gVGhhdCYjMzk7cyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQmIzM5O3MgZW5hYmxlZCBpbiB0aGUga2VybmVsIGNvbmZpZy4KCkhtbS4uLiBidXQgaG9sZCBvbiBhIHNlY29uZC4gSSYjMzk7bSBhbHNvIGdsYW5jaW5nIGF0IHRoZSBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzIG9mIHRoZSBtb2R1bGUsIGFuZCBzb21ldGhpbmcgdGVsbHMgbWUgSSBtaWdodCBhbHNvIG5lZWQgdG8gY29uc2lkZXIgYENPTkZJR19IVUdFVExCX1BBR0VgLCBlc3BlY2lhbGx5IGdpdmVuIHRoYXQgYG1tL2h1Z2V0bGIuY2AgaXMgaW52b2x2ZWQuIEkga25vdyB0aGF0IGZpbGUgaGFuZGxlcyBIdWdlVExCLXNwZWNpZmljIG1lbW9yeSBtYW5hZ2VtZW50LiBTbyB3aGlsZSBgQ09ORklHX0hVR0VUTEJGU2Agc2V0cyB1cCB0aGUgZmlsZXN5c3RlbSwgaXQgbG9va3MgbGlrZSBgQ09ORklHX0hVR0VUTEJfUEFHRWAgbWlnaHQgYmUgYSBtb3JlIGZpbmUtZ3JhaW5lZCBjb25maWd1cmF0aW9uIGNob2ljZSB3aGljaCBoZWxwcyBkZWZpbmVzIGhvdyB0aGUgcGFnZXMgd2lsbCBiZSBoYW5kbGVkLCB3aGljaCBJIG1pZ2h0IG5lZWQgdG8gZXhwbGljaXRseSBzZWxlY3QgaWYgSSB3YW50IHRvIG1heGltaXplIHBlcmZvcm1hbmNlLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgZG9jdW1lbnRhdGlvbiBmb3IgYm90aCB0byBiZSBjZXJ0YWluLiBJIG5lZWQgdG8gdGhpbmsgdGhyb3VnaCBob3cgdGhlc2UgcmVsYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSFVHRVRMQl9QQUdFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvc2gvbW0vS2NvbmZpZz0xNTg9Y2hvaWNlXG4tLVxuYXJjaC9zaC9tbS9LY29uZmlnLTE2My1cbmFyY2gvc2gvbW0vS2NvbmZpZzoxNjQ6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFXzY0S1xuYXJjaC9zaC9tbS9LY29uZmlnLTE2NS1cdGJvb2wgXCYjMzQ7NjRrQlwmIzM0O1xuLS1cbmFyY2gvc2gvbW0vS2NvbmZpZy0xNjctXG5hcmNoL3NoL21tL0tjb25maWc6MTY4OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV8yNTZLXG5hcmNoL3NoL21tL0tjb25maWctMTY5LVx0Ym9vbCBcJiMzNDsyNTZrQlwmIzM0O1xuLS1cbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzEtXG5hcmNoL3NoL21tL0tjb25maWc6MTcyOmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV8xTUJcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzMtXHRib29sIFwmIzM0OzFNQlwmIzM0O1xuYXJjaC9zaC9tbS9LY29uZmlnLTE3NC1cbmFyY2gvc2gvbW0vS2NvbmZpZzoxNzU6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFXzRNQlxuYXJjaC9zaC9tbS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7NE1CXCYjMzQ7XG4tLVxuYXJjaC9zaC9tbS9LY29uZmlnLTE3OC1cbmFyY2gvc2gvbW0vS2NvbmZpZzoxNzk6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFXzY0TUJcbmFyY2gvc2gvbW0vS2NvbmZpZy0xODAtXHRib29sIFwmIzM0OzY0TUJcJiMzNDtcbi0tXG5mcy9LY29uZmlnPTI2Mj1pZiBIVUdFVExCRlNcbmZzL0tjb25maWc6MjYzOmNvbmZpZyBIVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUF9ERUZBVUxUX09OXG5mcy9LY29uZmlnLTI2NC1cdGJvb2wgXCYjMzQ7SHVnZVRMQiBWbWVtbWFwIE9wdGltaXphdGlvbiAoSFZPKSBkZWZhdWx0cyB0byBvblwmIzM0O1xuLS1cbmZzL0tjb25maWc9MjcxPWVuZGlmICMgSFVHRVRMQkZTXG5mcy9LY29uZmlnLTI3Mi1cbmZzL0tjb25maWc6MjczOmNvbmZpZyBIVUdFVExCX1BBR0VcbmZzL0tjb25maWctMjc0LVx0ZGVmX2Jvb2wgSFVHRVRMQkZTXG4tLVxuZnMvS2NvbmZpZy0yNzYtXG5mcy9LY29uZmlnOjI3Nzpjb25maWcgSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBcbmZzL0tjb25maWctMjc4LVx0ZGVmX2Jvb2wgSFVHRVRMQl9QQUdFXG4tLVxubW0vS2NvbmZpZz03MDY9Y29uZmlnIEFSQ0hfRU5BQkxFX1RIUF9NSUdSQVRJT05cbi0tXG5tbS9LY29uZmlnLTcwOC1cbm1tL0tjb25maWc6NzA5OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV9WQVJJQUJMRVxubW0vS2NvbmZpZy03MTAtXHRkZWZfYm9vbCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MDQzCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBLZXJuZWwgQ29uZmlndXJhdGlvbiBUaG91Z2h0cyoqCgpPa2F5LCBzbyBsb29raW5nIGF0IHRoZSBrZXJuZWwgY29uZmlnIG9wdGlvbnMsIGBDT05GSUdfSFVHRVRMQl9QQUdFYCBkZWZhdWx0cyB0byB1c2luZyBgSFVHRVRMQkZTYC4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncy4gV2hpY2ggbWVhbnMgSSBzaG91bGQgcmVhbGx5IGp1c3QgYmUgY29uY2VybmVkIGFib3V0IGBDT05GSUdfSFVHRVRMQkZTYCBmb3Igbm93LiBIYW5nIG9uLCB0aG91Z2guLi4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcuIFRoYXQgYGFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpb2AgZnVuY3Rpb27igKYgaXQmIzM5O3Mgb25seSBkZWZpbmVkIGlmIHdlIGhhdmUgYm90aCBgQ09ORklHX0FSQ0hfSEFTX0dJR0FOVElDX1BBR0VgICphbmQqIGBDT05GSUdfQ09OVElHX0FMTE9DYCBlbmFibGVkLiBSaWdodC4gT2theSwgbGV0IG1lIGdvIGJhY2sgYW5kIGdpdmUgYG1tL2h1Z2V0bGIuY2AgYW5vdGhlciBsb29rIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsLiBHb3R0YSBnZXQgdGhpcyByaWdodC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0FSQ0hfSEFTX0dJR0FOVElDX1BBR0UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9hc20tZ2VuZXJpYy9odWdldGxiLmg9MTI1PXN0YXRpYyBpbmxpbmUgYm9vbCBnaWdhbnRpY19wYWdlX3J1bnRpbWVfc3VwcG9ydGVkKHZvaWQpXG5pbmNsdWRlL2FzbS1nZW5lcmljL2h1Z2V0bGIuaC0xMjYte1xuaW5jbHVkZS9hc20tZ2VuZXJpYy9odWdldGxiLmg6MTI3Olx0cmV0dXJuIElTX0VOQUJMRUQoQ09ORklHX0FSQ0hfSEFTX0dJR0FOVElDX1BBR0UpO1xuaW5jbHVkZS9hc20tZ2VuZXJpYy9odWdldGxiLmgtMTI4LX1cbi0tXG5tbS9odWdldGxiLmM9MTMyMD1zdGF0aWMgc3RydWN0IGZvbGlvICpkZXF1ZXVlX2h1Z2V0bGJfZm9saW9fdm1hKHN0cnVjdCBoc3RhdGUgKmgsXG4tLVxubW0vaHVnZXRsYi5jLTEzNTgtXG5tbS9odWdldGxiLmM6MTM1OTojaWYgZGVmaW5lZChDT05GSUdfQVJDSF9IQVNfR0lHQU5USUNfUEFHRSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0NPTlRJR19BTExPQylcbm1tL2h1Z2V0bGIuYy0xMzYwLXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxuLS1cbm1tL2h1Z2V0bGIuYy0xMzc1LX1cbm1tL2h1Z2V0bGIuYzoxMzc2OiNlbHNlIC8qICFDT05GSUdfQVJDSF9IQVNfR0lHQU5USUNfUEFHRSB8fCAhQ09ORklHX0NPTlRJR19BTExPQyAqL1xubW0vaHVnZXRsYi5jLTEzNzctc3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfZ2lnYW50aWNfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssIGludCBuaWQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NjQ5CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gZGVlcCBpbiB0aGUgd2VlZHMgb2Yga2VybmVsIGNvbmZpZ3VyYXRpb246CgoqKk5hdmlnYXRpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGl0IGxvb2tzIGxpa2UgSSBuZWVkIHRvIGVuYWJsZSBgQ09ORklHX0FSQ0hfSEFTX0dJR0FOVElDX1BBR0VgIHRvIGdldCB0aGlzIHRoaW5nIHdvcmtpbmcuIEJ1dCBob2xkIG9uLCB0aGUgYnVpbGQgcHJvY2VzcyBpcyBmbGFnZ2luZyBzb21ldGhpbmcgZWxzZSDigJMgYENPTkZJR19DT05USUdfQUxMT0NgLiBMZXQgbWUganVzdCBwYXVzZSBoZXJlLiBCZWZvcmUgSSBjb21taXQgdG8gYW55dGhpbmcsIEkgc2hvdWxkIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3by4gSSBuZWVkIHRvIGRpZyBpbnRvIGBDT05GSUdfQ09OVElHX0FMTE9DYC4gVGhpcyBpcyB3aGVyZSBJIHN0YXJ0IGludmVzdGlnYXRpbmcgdGhlIGRlcGVuZGVuY2llcyBhbmQgaW50ZXJhY3Rpb25zIGJldHdlZW4gdGhlc2UgY29uZmlndXJhdGlvbnMuIEl04oCZcyBiZXN0IHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBiZWZvcmUgSSBnbyBhbmQgYnJlYWsgc29tZXRoaW5nIGVsc2UhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDT05USUdfQUxMT0MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz03MDk9Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFX1ZBUklBQkxFXG4tLVxubW0vS2NvbmZpZy03MTgtXG5tbS9LY29uZmlnOjcxOTpjb25maWcgQ09OVElHX0FMTE9DXG5tbS9LY29uZmlnLTcyMC1cdGRlZl9ib29sIChNRU1PUllfSVNPTEFUSU9OIFx1MDAyNlx1MDAyNiBDT01QQUNUSU9OKSB8fCBDTUFcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg5NDcKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBNZW1vcnkgQWxsb2NhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4uLiBTbywgYENPTlRJR19BTExPQ2AgYnkgZGVmYXVsdCBpcyBzZXQgdXAgdG8gdXNlIGBDTUFgIOKAkyB0aGF0JiMzOTtzIHRoZSBDb250aW51b3VzIE1lbW9yeSBBbGxvY2F0b3Ig4oCTIGFuZCB0aGF0IG1lYW5zIGlmIGBDT05GSUdfQ01BYCBpcyBlbmFibGVkLCB0aGVuIHdlJiMzOTtyZSBnb29kIHRvIGdvLiBTZWVtcyBzdHJhaWdodGZvcndhcmQuIEJ1dCwgaG9sZCBvbiBhIHNlYy4uLiBXaGF0IGFib3V0IHRoYXQgb3RoZXIgcGFyYW1ldGVyIGBDT05GSUdfQVJDSF9IQVNfR0lHQU5USUNfUEFHRWA/IFRoYXQgZGVmaW5pdGVseSBwbGF5cyBhIHJvbGUgaW4gaG93IG1lbW9yeSBpcyBoYW5kbGVkLCBzcGVjaWZpY2FsbHkgd2l0aCBsYXJnZSBwYWdlcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhvc2Ugc2V0dGluZ3MuIEl0JiMzOTtzIGltcG9ydGFudCB0byBjb25zaWRlciBpZiBlbmFibGluZyBgQ01BYCBoYXMgYW55IGltcGxpY2F0aW9uIGluIHRoZSB1c2UsIG9yIHBlcmZvcm1hbmNlLCBvZiBsYXJnZSBwYWdlcy4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBhbmQgaW1wbGljYXRpb25zIG9mIHRob3NlIHR3byBwYXJhbWV0ZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVJDSF9IQVNfR0lHQU5USUNfUEFHRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9LY29uZmlnPTI4Mz1jb25maWcgSFVHRVRMQl9QTURfUEFHRV9UQUJMRV9TSEFSSU5HXG4tLVxuZnMvS2NvbmZpZy0yODYtXG5mcy9LY29uZmlnOjI4Nzpjb25maWcgQVJDSF9IQVNfR0lHQU5USUNfUEFHRVxuZnMvS2NvbmZpZy0yODgtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5Mjc2CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIEFyY2hpdGVjdHVyYWwgRGVwZW5kZW5jeSoqCgpSaWdodCwgc28gd2UmIzM5O3ZlIGdvdCB0aGlzIGVsZW1lbnQsIGFuZCBteSBpbW1lZGlhdGUgY29uY2VybiBpcyBpdHMgZGVwZW5kZW5jeSBwcm9maWxlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aGljaCogYXJjaGl0ZWN0dXJlcyBhcmUgZXZlbiBib3RoZXJpbmcgdG8gdXNlIGl0LiBUaGlzIGlzbiYjMzk7dCBqdXN0IGFib3V0IGdlbmVyYWwgYXdhcmVuZXNzLCBJIG5lZWQgdG8ga25vdyB0aGUgZGlyZWN0IGNvbm5lY3Rpb25zLiBObyBwb2ludCBpbiBvcHRpbWl6aW5nIGl0LCBpbXByb3ZpbmcgaXRzIGludGVyZmFjZSwgb3IgZXZlbiB3b3JyeWluZyBhYm91dCBpdHMgbGlmZWN5Y2xlIGlmIGl0JiMzOTtzIG5vdCBhY3R1YWxseSAqc2VsZWN0ZWQqIGFuZCBpbmNvcnBvcmF0ZWQgaW50byBhbnkgbWVhbmluZ2Z1bCBhcmNoaXRlY3R1cmFsIHBhdHRlcm5zLiBMZXTigJlzIGRpdmUgc3RyYWlnaHQgaW50byB0aGUgYXJjaGl0ZWN0dXJlIGxhbmRzY2FwZSBhbmQgdHJhY2UgaXRzIHVzYWdlLiBUaW1lIHRvIGdldCBzb21lIGFuc3dlcnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBBUkNIX0hBU19HSUdBTlRJQ19QQUdFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQvS2NvbmZpZz0yPWNvbmZpZyBBUk02NFxuLS1cbmFyY2gvYXJtNjQvS2NvbmZpZy0zMi1cdHNlbGVjdCBBUkNIX0hBU19HQ09WX1BST0ZJTEVfQUxMXG5hcmNoL2FybTY0L0tjb25maWc6MzM6XHRzZWxlY3QgQVJDSF9IQVNfR0lHQU5USUNfUEFHRVxuYXJjaC9hcm02NC9LY29uZmlnLTM0LVx0c2VsZWN0IEFSQ0hfSEFTX0tDT1Zcbi0tXG5hcmNoL3Bvd2VycGMvS2NvbmZpZz0xMTg9Y29uZmlnIFBQQ1xuLS1cbmFyY2gvcG93ZXJwYy9LY29uZmlnLTEzOC1cdHNlbGVjdCBBUkNIX0hBU19HQ09WX1BST0ZJTEVfQUxMXG5hcmNoL3Bvd2VycGMvS2NvbmZpZzoxMzk6XHRzZWxlY3QgQVJDSF9IQVNfR0lHQU5USUNfUEFHRVx0XHRpZiBBUkNIX1NVUFBPUlRTX0hVR0VUTEJGU1xuYXJjaC9wb3dlcnBjL0tjb25maWctMTQwLVx0c2VsZWN0IEFSQ0hfSEFTX0tDT1Zcbi0tXG5hcmNoL3Jpc2N2L0tjb25maWc9MTM9Y29uZmlnIFJJU0NWXG4tLVxuYXJjaC9yaXNjdi9LY29uZmlnLTM1LVx0c2VsZWN0IEFSQ0hfSEFTX0dDT1ZfUFJPRklMRV9BTExcbmFyY2gvcmlzY3YvS2NvbmZpZzozNjpcdHNlbGVjdCBBUkNIX0hBU19HSUdBTlRJQ19QQUdFXG5hcmNoL3Jpc2N2L0tjb25maWctMzctXHRzZWxlY3QgQVJDSF9IQVNfSFdfUFRFX1lPVU5HXG4tLVxuYXJjaC9zMzkwL0tjb25maWc9NzU9Y29uZmlnIFMzOTBcbi0tXG5hcmNoL3MzOTAvS2NvbmZpZy05Ny1cdHNlbGVjdCBBUkNIX0hBU19HQ09WX1BST0ZJTEVfQUxMXG5hcmNoL3MzOTAvS2NvbmZpZzo5ODpcdHNlbGVjdCBBUkNIX0hBU19HSUdBTlRJQ19QQUdFXG5hcmNoL3MzOTAvS2NvbmZpZy05OS1cdHNlbGVjdCBBUkNIX0hBU19LQ09WXG4tLVxuYXJjaC9zaC9LY29uZmlnPTI9Y29uZmlnIFNVUEVSSFxuLS1cbmFyY2gvc2gvS2NvbmZpZy05LVx0c2VsZWN0IEFSQ0hfSEFTX0NVUlJFTlRfU1RBQ0tfUE9JTlRFUlxuYXJjaC9zaC9LY29uZmlnOjEwOlx0c2VsZWN0IEFSQ0hfSEFTX0dJR0FOVElDX1BBR0VcbmFyY2gvc2gvS2NvbmZpZy0xMS1cdHNlbGVjdCBBUkNIX0hBU19HQ09WX1BST0ZJTEVfQUxMXG4tLVxuYXJjaC9zcGFyYy9LY29uZmlnPTcwPWNvbmZpZyBTUEFSQzY0XG4tLVxuYXJjaC9zcGFyYy9LY29uZmlnLTEwNy1cdHNlbGVjdCBQQ0lfRE9NQUlOUyBpZiBQQ0lcbmFyY2gvc3BhcmMvS2NvbmZpZzoxMDg6XHRzZWxlY3QgQVJDSF9IQVNfR0lHQU5USUNfUEFHRVxuYXJjaC9zcGFyYy9LY29uZmlnLTEwOS1cdHNlbGVjdCBIQVZFX1NPRlRJUlFfT05fT1dOX1NUQUNLXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0yMz1jb25maWcgWDg2XzY0XG4tLVxuYXJjaC94ODYvS2NvbmZpZy0yNi1cdCMgT3B0aW9ucyB0aGF0IGFyZSBpbmhlcmVudGx5IDY0LWJpdCBrZXJuZWwgb25seTpcbmFyY2gveDg2L0tjb25maWc6Mjc6XHRzZWxlY3QgQVJDSF9IQVNfR0lHQU5USUNfUEFHRVxuYXJjaC94ODYvS2NvbmZpZy0yOC1cdHNlbGVjdCBBUkNIX1NVUFBPUlRTX01TRUFMX1NZU1RFTV9NQVBQSU5HU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDEyNAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDI4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgQ29kZSYjMzk7cyBDb25maWd1cmF0aW9uIGFuZCBLZXkgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGZpZ3VyaW5nIG91dCB0aGUgY3JpdGljYWwgY29tcG9uZW50cy4gSXQgbG9va3MgbGlrZSB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZXMgYXJlIHByZXR0eSBicm9hZCAtIGBYODZfNjRgLCBgQVJNNjRgLCBgUklTQ1ZgLCBgUzM5MGAsIGBTUEFSQzY0YCwgYFNVUEVSSGAsIGFuZCBgUFBDYC4gTm8gbmVlZCB0byBzcGVjaWZ5IHRoZW0sIHRoZSBjb2RlIGhhbmRsZXMgYSBnb29kIHJhbmdlLgoKVGhlIGNvbmZpZ3MgSSBuZWVkIHRvIHBheSBhdHRlbnRpb24gdG8gYXJlIGBIVUdFVExCRlNgLCBgQ01BYCwgYW5kIGBDUFVTRVRTYC4gSSB0aGluayBJIHJlY2FsbCB0aGF0IGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIGlzIG9ubHkgY29tcGlsZWQgaWYgYm90aCBgQ09ORklHX0NNQWAgYW5kIGBDT05GSUdfSFVHRVRMQkZTYCBhcmUgc2V0LiBBbmQgYENQVVNFVFNgIGlzIGtleSwgYmVjYXVzZSBJJiMzOTtsbCBuZWVkIHRvIHVzZSBpdCB0byB0ZXN0IGNwdXNldCBsb2dpYy4KCkxldCYjMzk7cyBzZWUgd2hhdCBmdW5jdGlvbnMgYXJlIG9mIGludGVyZXN0LiBJIG5lZWQgdG8gZm9jdXMgb246IGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIGFuZCB0aGVuIGBhbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW9gICh3aGljaCBpcyBtYXJrZWQgYXMgc3RhdGljLCBzbyBtaWdodCBiZSBpbmxpbmVkKS4gSG93ZXZlciwgdGhlIHJlYWxseSBpbXBvcnRhbnQgZnVuY3Rpb24gaXMgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2Agc2luY2UgaXQmIzM5O3MgZ2xvYmFsLgoKSG9sZCBvbiwgSSBnb3QgdGhhdCBzbGlnaHRseSB3cm9uZy4gYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AgaXNuJiMzOTt0IHN0YXRpYy4gSXQmIzM5O3MgZGVmaW5lZCBpbiBgbW0vaHVnZXRsYl9jbWEuY2AsIGFuZCBpdCBpcyBub3QgZXhwbGljaXRseSBleHBvcnRlZCwgYnV0IGlzIGEgZ2xvYmFsIGZ1bmN0aW9uLiBTbywgSSBuZWVkIHRvIGNoZWNrIGBtbS9odWdldGxiX2NtYS5jYCB0byBzZWUgaG93IGl0IHdvcmtzIGFuZCB3aGF0IGl0IGRvZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2h1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9odWdldGxiLmM9MTM2MD1zdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcbi0tXG5tbS9odWdldGxiLmMtMTM2NC1cbm1tL2h1Z2V0bGIuYzoxMzY1Olx0Zm9saW8gPSBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8ob3JkZXIsIGdmcF9tYXNrLCBuaWQsIG5vZGVtYXNrKTtcbm1tL2h1Z2V0bGIuYy0xMzY2LVx0aWYgKGZvbGlvKVxuLS1cbm1tL2h1Z2V0bGJfY21hLmM9MjI9dm9pZCBodWdldGxiX2NtYV9mcmVlX2Zyb3plbl9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuLS1cbm1tL2h1Z2V0bGJfY21hLmMtMjctXG5tbS9odWdldGxiX2NtYS5jOjI4OnN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXG5tbS9odWdldGxiX2NtYS5jLTI5LVx0XHRpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzaylcbi0tXG5tbS9odWdldGxiX2NtYS5oPTY9dm9pZCBodWdldGxiX2NtYV9mcmVlX2Zyb3plbl9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcbm1tL2h1Z2V0bGJfY21hLmg6NzpzdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxubW0vaHVnZXRsYl9jbWEuaC04LVx0XHRcdFx0ICAgICAgaW50IG5pZCwgbm9kZW1hc2tfdCAqbm9kZW1hc2spO1xuLS1cbm1tL2h1Z2V0bGJfY21hLmg9MTY9c3RhdGljIGlubGluZSB2b2lkIGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0vaHVnZXRsYl9jbWEuaC0xOS1cbm1tL2h1Z2V0bGJfY21hLmg6MjA6c3RhdGljIGlubGluZSBzdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsXG5tbS9odWdldGxiX2NtYS5oLTIxLVx0XHRnZnBfdCBnZnBfbWFzayxcdGludCBuaWQsIG5vZGVtYXNrX3QgKm5vZGVtYXNrKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTI3OQoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipBbmFseXppbmcgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AgYW5kIGl0cyBDYWxsZXJzKioKCkFscmlnaHQsIHNvIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIGlzIGEgZ2xvYmFsIGZ1bmN0aW9uLCBhbmQgdGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCYjMzk7cyBhIGNyaXRpY2FsIHBvaW50IHRvIGludmVzdGlnYXRlLiBHaXZlbiB0aGF0IGl0JiMzOTtzIGdsb2JhbCwgdW5kZXJzdGFuZGluZyBpdHMgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIGlzIHBhcmFtb3VudC4gSSBzaG91bGQgZGVmaW5pdGVseSBmb2N1cyBteSBhbmFseXNpcyBvbiB0aGF0IGZ1bmN0aW9uLiBTaW5jZSBJIGhhdmUgYSBnbG9iYWwgZnVuY3Rpb24gSSBzaG91bGQgY2hlY2sgaXRzIGNhbGxlcnMuIEJhc2VkIG9uIHdoYXQgSSBzZWUgaGVyZSwgdGhlIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdCBhcmUgYG9ubHlfYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2Agb3IgdGhlIHZlcnkgc2ltaWxhciBzb3VuZGluZyBgYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2AuIExldCBtZSBzdGFydCBieSBsb29raW5nIGludG8gYGFsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW9gIGFuZCBzZWUgd2hhdCB0aGF0IGNhbiB0ZWxsIG1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2h1Z2V0bGIuYz0xNzkxPXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2J1ZGR5X2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxuLS1cbm1tL2h1Z2V0bGIuYy0xODM1LVxubW0vaHVnZXRsYi5jOjE4MzY6c3RhdGljIHN0cnVjdCBmb2xpbyAqb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXG5tbS9odWdldGxiLmMtMTgzNy1cdFx0Z2ZwX3QgZ2ZwX21hc2ssIGludCBuaWQsIG5vZGVtYXNrX3QgKm5tYXNrLFxuLS1cbm1tL2h1Z2V0bGIuYy0xODYyLSAqL1xubW0vaHVnZXRsYi5jOjE4NjM6c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxubW0vaHVnZXRsYi5jLTE4NjQtXHRcdGdmcF90IGdmcF9tYXNrLCBpbnQgbmlkLCBub2RlbWFza190ICpubWFzaylcbi0tXG5tbS9odWdldGxiLmMtMTg2Ny1cbm1tL2h1Z2V0bGIuYzoxODY4Olx0Zm9saW8gPSBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oaCwgZ2ZwX21hc2ssIG5pZCwgbm1hc2ssIE5VTEwpO1xubW0vaHVnZXRsYi5jLTE4NjktXHRpZiAoZm9saW8pXG4tLVxubW0vaHVnZXRsYi5jPTE4OTY9c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfcG9vbF9odWdlX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXG4tLVxubW0vaHVnZXRsYi5jLTE5MDYtXG5tbS9odWdldGxiLmM6MTkwNzpcdFx0Zm9saW8gPSBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oaCwgZ2ZwX21hc2ssIG5vZGUsXG5tbS9odWdldGxiLmMtMTkwOC1cdFx0XHRcdFx0bm9kZXNfYWxsb3dlZCwgbm9kZV9hbGxvY19ub3JldHJ5KTtcbi0tXG5tbS9odWdldGxiLmM9MjA3Nj1zdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19zdXJwbHVzX2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcbi0tXG5tbS9odWdldGxiLmMtMjA4OC1cbm1tL2h1Z2V0bGIuYzoyMDg5Olx0Zm9saW8gPSBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsIG5tYXNrKTtcbm1tL2h1Z2V0bGIuYy0yMDkwLVx0aWYgKCFmb2xpbylcbi0tXG5tbS9odWdldGxiLmM9MjEyND1zdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19taWdyYXRlX2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCwgZ2ZwX3QgZ2ZwX21hc2ssXG4tLVxubW0vaHVnZXRsYi5jLTIxMzEtXG5tbS9odWdldGxiLmM6MjEzMjpcdGZvbGlvID0gYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhoLCBnZnBfbWFzaywgbmlkLCBubWFzayk7XG5tbS9odWdldGxiLmMtMjEzMy1cdGlmICghZm9saW8pXG4tLVxubW0vaHVnZXRsYi5jPTI2NDE9c3RhdGljIGludCBhbGxvY19hbmRfZGlzc29sdmVfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgZm9saW8gKm9sZF9mb2xpbyxcbi0tXG5tbS9odWdldGxiLmMtMjY4Ni1cdFx0XHRnZnBfbWFzayA9IGh0bGJfYWxsb2NfbWFzayhoKSB8IF9fR0ZQX1RISVNOT0RFO1xubW0vaHVnZXRsYi5jOjI2ODc6XHRcdFx0bmV3X2ZvbGlvID0gYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhoLCBnZnBfbWFzayxcbm1tL2h1Z2V0bGIuYy0yNjg4LVx0XHRcdFx0XHRcdFx0ICAgICAgbmlkLCBOVUxMKTtcbi0tXG5tbS9odWdldGxiLmM9MzM3Mj1zdGF0aWMgdm9pZCBfX2luaXQgaHVnZXRsYl9oc3RhdGVfYWxsb2NfcGFnZXNfb25lbm9kZShzdHJ1Y3QgaHN0YXRlICpoLCBpbnQgbmlkKVxuLS1cbm1tL2h1Z2V0bGIuYy0zMzg1LVxubW0vaHVnZXRsYi5jOjMzODY6XHRcdFx0Zm9saW8gPSBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oaCwgZ2ZwX21hc2ssIG5pZCxcbm1tL2h1Z2V0bGIuYy0zMzg3LVx0XHRcdFx0XHRcdTAwMjZub2RlX3N0YXRlc1tOX01FTU9SWV0sIE5VTEwpO1xuLS1cbm1tL2h1Z2V0bGIuYy0zMzkxLVx0XHRcdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Zm9saW9fbGlzdCk7XG5tbS9odWdldGxiLmM6MzM5MjpcdFx0XHRcdGZvbGlvID0gb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsXG5tbS9odWdldGxiLmMtMzM5My1cdFx0XHRcdFx0XHRcdTAwMjZub2RlX3N0YXRlc1tOX01FTU9SWV0sIE5VTEwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjU1OQoJCQkJCQkJb3V0cHV0OiAxMjUKCQkJCQkJCXRob3VnaHRzOiA0NjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMgZm9yIEh1Z2VUTEIgQ01BIE1lbW9yeSBBbGxvY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCBwb3RlbnRpYWwgdGFyZ2V0cyBmb3IgZnV6emluZyB3aXRoaW4gdGhlIEh1Z2VUTEIgQ01BIG1lbW9yeSBhbGxvY2F0aW9uIGNvZGUuIEluaXRpYWxseSwgSSBjb25zaWRlcmVkIGBhbGxvY19wb29sX2h1Z2VfZm9saW9gLCBgYWxsb2Nfc3VycGx1c19odWdldGxiX2ZvbGlvYCwgYGFsbG9jX21pZ3JhdGVfaHVnZXRsYl9mb2xpb2AsIGFuZCBgYWxsb2NfYW5kX2Rpc3NvbHZlX2h1Z2V0bGJfZm9saW9gIGFzIHByb21pc2luZyBjYW5kaWRhdGVzLiBCdXQsIGFmdGVyIGEgY2xvc2VyIGxvb2ssIGl0JiMzOTtzIGNsZWFyIHRoYXQgdGhlIHBhdGNoIHNwZWNpZmljYWxseSBtb2RpZmllcyBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYC4gVGhhdCYjMzk7cyB0aGUga2V5IGZ1bmN0aW9uIHdlIG5lZWQgdG8gZm9jdXMgb24uIFNvLCB0aGF0JiMzOTtzIGRlZmluaXRlbHkgZ29pbmcgaW50byBgRm9jdXNTeW1ib2xzYC4KCk5vdywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJiMzOTt2ZSBnb3QgYENPTkZJR19IVUdFVExCRlNgLCBgQ09ORklHX0NNQWAsIGFuZCBgQ09ORklHX0NQVVNFVFNgIGluIG1pbmQuIExldCYjMzk7cyBqdXN0IGNvbmZpcm0gdGhhdCBgQ09ORklHX0hVR0VUTEJGU2AgYWN0dWFsbHkgZW5hYmxlcyB0aGUgcmVsZXZhbnQgYG1tL2h1Z2V0bGIuY2AgY29kZS4gT2theSwgdGhlIGBtbS9NYWtlZmlsZWAgY29uZmlybXMgaXQ6IGBvYmotJChDT05GSUdfSFVHRVRMQkZTKSAmIzQzOz0gaHVnZXRsYi5vIGh1Z2V0bGJfc3lzZnMubyBodWdldGxiX3N5c2N0bC5vYC4gQW5kLCBhcyBleHBlY3RlZCwgYG9iai0kKENPTkZJR19IVUdFVExCRlMpICYjNDM7PSBodWdldGxiX2NtYS5vYCBpcyBhbHNvIGluY2x1ZGVkIHdoZW4gYENPTkZJR19DTUFgIGlzIGRlZmluZWQuCgpTbywgdGhlIGtleSBjb25maWd1cmF0aW9ucyB3ZSBuZWVkIHRvIGNvbnNpZGVyIGFyZToKCiogICBgSFVHRVRMQkZTYAoqICAgYENNQWAKKiAgIGBDUFVTRVRTYAoKQW5kIHRoZSBrZXkgZm9jdXMgc3ltYm9sIGlzIGRlZmluaXRlbHk6CgoqICAgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AKCkFscmlnaHQsIGxldCYjMzk7cyBjb25zaWRlciB3aHkgd2UgYXJlIGZvY3VzZWQgb24gdGhpcyBmdW5jdGlvbjogdGhlIHBhdGNoIG1vZGlmaWVzIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIHRvIHJlc3BlY3QgY3B1c2V0IG1lbW9yeSBhbGxvd2VkIG5vZGVzIHdoZW4gYG5vZGVtYXNrYCBpcyBOVUxMLiBUaGlzIGlzIGEgY2xlYXIsIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgdGhlIEh1Z2VUTEIgQ01BIHBvcnRpb24uIEl0IHdpbGwgZGlyZWN0bHkgYWZmZWN0IG1lbW9yeSBhbGxvY2F0aW9uIGJlaGF2aW9yLiBUaGUgY29kZSBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSwgYW5kIHRoYXQgbWFrZXMgaXQgd29ydGggZnV6emluZy4KCkp1c3QgYSBxdWljayBzYW5pdHkgY2hlY2s6IGxldCYjMzk7cyB2ZXJpZnkgdGhhdCBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCBpc24mIzM5O3QgYSBzdGF0aWMgZnVuY3Rpb24uIEEgcXVpY2sgbG9vayBhdCBpdHMgZGVmaW5pdGlvbiBpbiBgbW0vaHVnZXRsYl9jbWEuY2A6CgpgYGBjCnN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssCgkJaW50IG5pZCwgbm9kZW1hc2tfdCAqbm9kZW1hc2spCmBgYAoKTm8sIGl0JiMzOTtzIG5vdCBzdGF0aWMuIEdvb2QuCgpJJiMzOTttIHJlYWR5IHRvIGBzZXQtcmVzdWx0c2Agbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SFVHRVRMQkZTJiMzNDssCiAgICAmIzM0O0NNQSYjMzQ7LAogICAgJiMzNDtDUFVTRVRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIHRvIHJlc3BlY3QgY3B1c2V0IG1lbW9yeSBhbGxvd2VkIG5vZGVzIHdoZW4gYG5vZGVtYXNrYCBpcyBOVUxMLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSAoSHVnZVRMQiBDTUEpIHRoYXQgYWZmZWN0cyBtZW1vcnkgYWxsb2NhdGlvbiBiZWhhdmlvci4gSXQgaXMgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtIVUdFVExCRlMmIzM0OywKICAgICYjMzQ7Q01BJiMzNDssCiAgICAmIzM0O0NQVVNFVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AgdG8gcmVzcGVjdCBjcHVzZXQgbWVtb3J5IGFsbG93ZWQgbm9kZXMgd2hlbiBgbm9kZW1hc2tgIGlzIE5VTEwuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIChIdWdlVExCIENNQSkgdGhhdCBhZmZlY3RzIG1lbW9yeSBhbGxvY2F0aW9uIGJlaGF2aW9yLiBJdCBpcyByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDAwOjQ4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5vZGUgc2VsZWN0aW9uIGxvZ2ljIGluIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIHRvIHJlc3BlY3QgY3B1c2V0IG1lbW9yeSBwbGFjZW1lbnQgcnVsZXMuIEl0IGludHJvZHVjZXMgYSBsb2NhbCBgbm9kZW1hc2tfdCBsb2NhbF9ub2RlX21hc2tgIHdoaWNoIGlzIGZ1bGx5IGluaXRpYWxpemVkIGJ5IGFzc2lnbm1lbnQgZnJvbSBgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkYCB3aGVuIHRoZSBwcm92aWRlZCBgbm9kZW1hc2tgIGlzIE5VTEwuIFRoZSBgY3B1c2V0X21lbXNfY29va2llYCBpcyBhbHNvIHByb3Blcmx5IGluaXRpYWxpemVkIHZpYSBgcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKWAuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBleHBvc2VkIHRvIHVzZXIgc3BhY2UsIG5vIGNvbXBsZXggYWxsb2NhdGlvbnMgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcywgYW5kIG5vIGNvbnRyb2wgZmxvdyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBpbmNvcnJlY3Qgbm9kZSBzZWxlY3Rpb24sIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBvciBjb25jdXJyZW5jeSBpc3N1ZXMsIHdoaWNoIGFyZSB3ZWxsIGNvdmVyZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTNlZWJmYmRjYWU0ZDYwMTYzY2YwMjYzMTRhMWQ4ZmFmMzFjMDY5OApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDExIDAwOjQ2OjM3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vaHVnZXRsYl9jbWEuYyBiL21tL2h1Z2V0bGJfY21hLmMKaW5kZXggMzkzNDRkNmM3OGQ4NC4uOWRlYmYwMzNkNGZkNyAxMDA2NDQKLS0tIGEvbW0vaHVnZXRsYl9jbWEuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9odWdldGxiX2NtYS5jCkBAIC0zLDYgJiM0MzszLDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9tbS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2NtYS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2NvbXBpbGVyLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2NwdXNldC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21tX2lubGluZS5oJmd0OwogCiAjaW5jbHVkZSAmbHQ7YXNtL3BhZ2UuaCZndDsKQEAgLTMwLDE1ICYjNDM7MzEsMjcgQEAgc3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzaywKIAlpbnQgbm9kZTsKIAlzdHJ1Y3QgZm9saW8gKmZvbGlvOwogCXN0cnVjdCBwYWdlICpwYWdlID0gTlVMTDsKJiM0MzsJY29uc3Qgbm9kZW1hc2tfdCAqbm1hc2s7CiYjNDM7CW5vZGVtYXNrX3QgbG9jYWxfbm9kZV9tYXNrOwomIzQzOwl1bnNpZ25lZCBpbnQgY3B1c2V0X21lbXNfY29va2llOwogCiAJaWYgKCFodWdldGxiX2NtYV9zaXplKQogCQlyZXR1cm4gTlVMTDsKIAotCWlmIChodWdldGxiX2NtYVtuaWRdKQomIzQzO3JldHJ5X2NwdXNldDoKJiM0MzsJaWYgKCFub2RlbWFzaykgewomIzQzOwkJY3B1c2V0X21lbXNfY29va2llID0gcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKTsKJiM0MzsJCWxvY2FsX25vZGVfbWFzayA9IGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZDsKJiM0MzsJCW5tYXNrID0gJmFtcDtsb2NhbF9ub2RlX21hc2s7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlubWFzayA9IG5vZGVtYXNrOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChodWdldGxiX2NtYVtuaWRdICZhbXA7JmFtcDsgbm9kZV9pc3NldChuaWQsICpubWFzaykpCiAJCXBhZ2UgPSBjbWFfYWxsb2NfZnJvemVuX2NvbXBvdW5kKGh1Z2V0bGJfY21hW25pZF0sIG9yZGVyKTsKIAogCWlmICghcGFnZSAmYW1wOyZhbXA7ICEoZ2ZwX21hc2sgJmFtcDsgX19HRlBfVEhJU05PREUpKSB7Ci0JCWZvcl9lYWNoX25vZGVfbWFzayhub2RlLCAqbm9kZW1hc2spIHsKJiM0MzsJCWZvcl9lYWNoX25vZGVfbWFzayhub2RlLCAqbm1hc2spIHsKIAkJCWlmIChub2RlID09IG5pZCB8fCAhaHVnZXRsYl9jbWFbbm9kZV0pCiAJCQkJY29udGludWU7CiAKQEAgLTQ4LDggJiM0Mzs2MSwxMiBAQCBzdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLAogCQl9CiAJfQogCi0JaWYgKCFwYWdlKQomIzQzOwlpZiAoIXBhZ2UpIHsKJiM0MzsJCWlmICghbm9kZW1hc2sgJmFtcDsmYW1wOwomIzQzOwkJICAgIHVubGlrZWx5KHJlYWRfbWVtc19hbGxvd2VkX3JldHJ5KGNwdXNldF9tZW1zX2Nvb2tpZSkpKQomIzQzOwkJCWdvdG8gcmV0cnlfY3B1c2V0OwogCQlyZXR1cm4gTlVMTDsKJiM0MzsJfQogCiAJZm9saW8gPSBwYWdlX2ZvbGlvKHBhZ2UpOwogCWZvbGlvX3NldF9odWdldGxiX2NtYShmb2xpbyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwMDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDYxCgkJCQkJCQlvdXRwdXQ6IDIwOAoJCQkJCQkJdGhvdWdodHM6IDgxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgVW5pbml0aWFsaXplZCBNZW1vcnkgVXNhZ2UgaW4gVGhpcyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIGluIGBtbS9odWdldGxiX2NtYS5jYCwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGNwdXNldC1hd2FyZSBub2RlIHNlbGVjdGlvbi4gTXkgZmlyc3QgdGhvdWdodCBpczogYXJlIHRoZXJlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgdnVsbmVyYWJpbGl0aWVzIGJlaW5nIGludHJvZHVjZWQgaGVyZT8gVGhlIHBhdGNoIGludHJvZHVjZXMgYG5vZGVtYXNrX3QgbG9jYWxfbm9kZV9tYXNrYCBhbmQgYHVuc2lnbmVkIGludCBjcHVzZXRfbWVtc19jb29raWVgLCBzbyB0aGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBmb2N1cy4KCkkgc2VlIGBsb2NhbF9ub2RlX21hc2tgIGlzIGluaXRpYWxpemVkIHdpdGggYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAsIHdoaWNoIGlzIGdvb2QuIEJ1dCBpcyBpdCAqZnVsbHkqIGluaXRpYWxpemVkPyAgYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAgaXMgYSBwZXItdGFzayBvciBnbG9iYWwgdmFyaWFibGUsIHNvIGxldCYjMzk7cyBtYWtlIHN1cmUgbm90aGluZyB3ZWlyZCBpcyBnb2luZyBvbiBpbiBob3cgaXQmIzM5O3MgdXNlZC4gU2luY2UgYGxvY2FsX25vZGVfbWFza2AgaXMgYSBgbm9kZW1hc2tfdGAsIHdoaWNoIGlzIGRlZmluZWQgYXMgZXNzZW50aWFsbHkgYW4gYXJyYXkgb2YgdW5zaWduZWQgbG9uZ3MgKERFQ0xBUkVfQklUTUFQKSwgdGhlIGFzc2lnbm1lbnQgYGxvY2FsX25vZGVfbWFzayA9IGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZDtgIGlzIGEgc3RyYWlnaHRmb3J3YXJkIHN0cnVjdCBjb3B5LiAgSSBrbm93IGBub2RlbWFza190YCBpcyBhIGJpdG1hcCwgYW5kIHRoZSB3aG9sZSBzdHJ1Y3Qgd2lsbCBiZSBjb3BpZWQsIHRoZXJlJiMzOTtzIG5vIHJpc2sgb2YgcGFkZGluZyBvciB1bmluaXRpYWxpemVkIGJpdHMgY3JlZXBpbmcgaW4uCgpJIHdhcyBhIGJpdCBjb25jZXJuZWQgaWYgYG5vZGVtYXNrYCB3YXMgTlVMTC4gQnV0IGVpdGhlciB3YXksIGBubWFza2Agd2lsbCBiZSBpbml0aWFsaXplZC4gU28gSSYjMzk7bSBjb25maWRlbnQgYGxvY2FsX25vZGVfbWFza2AgaXMgaW5kZWVkIGZ1bGx5IGluaXRpYWxpemVkLgoKVGhlbiBJIGxvb2sgYXQgdGhlIHVzYWdlIG9mIGBjcHVzZXRfbWVtc19jb29raWVgLCBpbml0aWFsaXplZCB2aWEgYHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKClgLCBhbmQgdXNlZCBpbiBgcmVhZF9tZW1zX2FsbG93ZWRfcmV0cnkoKWAuIFRoYXQmIzM5O3Mgc3RhbmRhcmQgY3B1c2V0IGFjY2VzcywgYW5kIGl0IGxvb2tzIHNvdW5kLgoKVGhlcmUgZG9lc24mIzM5O3QgYXBwZWFyIHRvIGJlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgZXhwb3NlZCB0byB1c2Vyc3BhY2UsIGFuZCBubyBjb250cm9sIGZsb3cgZGVwZW5kcyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhpcyBpcyBnb29kLiBUaGUgcGF0Y2ggY2hhbmdlcyBob3cgbm9kZSBzZWxlY3Rpb24gd29ya3Mgd2l0aCBjcHVzZXRzLCBidXQgdGhlIHJlbGV2YW50IGRhdGEgc3RydWN0dXJlcyAoYGxvY2FsX25vZGVfbWFza2AgYW5kIGBjcHVzZXRfbWVtc19jb29raWVgKSBhcmUgY29ycmVjdGx5IGFuZCBjb21wbGV0ZWx5IGluaXRpYWxpemVkIGJlZm9yZSB1c2UuCgpUaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgdGhhdCB0aGUgcHJpbWFyeSByaXNrcyB3b3VsZCBiZSByZWxhdGVkIHRvIGluY29ycmVjdCBub2RlIHNlbGVjdGlvbiAocG90ZW50aWFsbHkgbGVhZGluZyB0byBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucyBvciBmYWlsdXJlcyksIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlmIHRoZXJlJiMzOTtzIGEgYnVnIGluIGhvdyB0aGUgbm9kZW1hc2sgaXMgdXNlZCBpbiBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCwgb3IgY29uY3VycmVuY3kgaXNzdWVzLiBUaGVzZSBhcmUgYWxyZWFkeSB3ZWxsLWNvdmVyZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMsIHdoaWNoIHNob3VsZCBmbGFnIGFueSBwcm9ibGVtcy4gVGhlcmVmb3JlLCBJIGRvbiYjMzk7dCBzZWUgYW55IG5lZWQgZm9yIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBmb3IgdGhpcyBwYXJ0aWN1bGFyIHBhdGNoIHRvIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgYnVncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDA6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5vZGUgc2VsZWN0aW9uIGxvZ2ljIGluIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIHRvIHJlc3BlY3QgY3B1c2V0IG1lbW9yeSBwbGFjZW1lbnQgcnVsZXMuIEl0IGludHJvZHVjZXMgYSBsb2NhbCBgbm9kZW1hc2tfdCBsb2NhbF9ub2RlX21hc2tgIHdoaWNoIGlzIGZ1bGx5IGluaXRpYWxpemVkIGJ5IGFzc2lnbm1lbnQgZnJvbSBgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkYCB3aGVuIHRoZSBwcm92aWRlZCBgbm9kZW1hc2tgIGlzIE5VTEwuIFRoZSBgY3B1c2V0X21lbXNfY29va2llYCBpcyBhbHNvIHByb3Blcmx5IGluaXRpYWxpemVkIHZpYSBgcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKWAuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBleHBvc2VkIHRvIHVzZXIgc3BhY2UsIG5vIGNvbXBsZXggYWxsb2NhdGlvbnMgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcywgYW5kIG5vIGNvbnRyb2wgZmxvdyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBpbmNvcnJlY3Qgbm9kZSBzZWxlY3Rpb24sIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBvciBjb25jdXJyZW5jeSBpc3N1ZXMsIHdoaWNoIGFyZSB3ZWxsIGNvdmVyZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBub2RlIHNlbGVjdGlvbiBsb2dpYyBpbiBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCB0byByZXNwZWN0IGNwdXNldCBtZW1vcnkgcGxhY2VtZW50IHJ1bGVzLiBJdCBpbnRyb2R1Y2VzIGEgbG9jYWwgYG5vZGVtYXNrX3QgbG9jYWxfbm9kZV9tYXNrYCB3aGljaCBpcyBmdWxseSBpbml0aWFsaXplZCBieSBhc3NpZ25tZW50IGZyb20gYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAgd2hlbiB0aGUgcHJvdmlkZWQgYG5vZGVtYXNrYCBpcyBOVUxMLiBUaGUgYGNwdXNldF9tZW1zX2Nvb2tpZWAgaXMgYWxzbyBwcm9wZXJseSBpbml0aWFsaXplZCB2aWEgYHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKClgLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLCBubyBjb21wbGV4IGFsbG9jYXRpb25zIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMsIGFuZCBubyBjb250cm9sIGZsb3cgZGVwZW5kaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIHdvdWxkIGJlIHJlbGF0ZWQgdG8gaW5jb3JyZWN0IG5vZGUgc2VsZWN0aW9uLCBvdXQtb2YtYm91bmRzIGFjY2Vzcywgb3IgY29uY3VycmVuY3kgaXNzdWVzLCB3aGljaCBhcmUgd2VsbCBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ2OjM3Ljk1MTU4MTU0N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjE0MTU3MTg5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIVUdFVExCRlNcIixcbiAgICBcIkNNQVwiLFxuICAgIFwiQ1BVU0VUU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5vZGUgc2VsZWN0aW9uIGxvZ2ljIGluIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIHRvIHJlc3BlY3QgY3B1c2V0IG1lbW9yeSBwbGFjZW1lbnQgcnVsZXMuIEl0IGludHJvZHVjZXMgYSBsb2NhbCBgbm9kZW1hc2tfdCBsb2NhbF9ub2RlX21hc2tgIHdoaWNoIGlzIGZ1bGx5IGluaXRpYWxpemVkIGJ5IGFzc2lnbm1lbnQgZnJvbSBgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkYCB3aGVuIHRoZSBwcm92aWRlZCBgbm9kZW1hc2tgIGlzIE5VTEwuIFRoZSBgY3B1c2V0X21lbXNfY29va2llYCBpcyBhbHNvIHByb3Blcmx5IGluaXRpYWxpemVkIHZpYSBgcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKWAuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBleHBvc2VkIHRvIHVzZXIgc3BhY2UsIG5vIGNvbXBsZXggYWxsb2NhdGlvbnMgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcywgYW5kIG5vIGNvbnRyb2wgZmxvdyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBpbmNvcnJlY3Qgbm9kZSBzZWxlY3Rpb24sIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBvciBjb25jdXJyZW5jeSBpc3N1ZXMsIHdoaWNoIGFyZSB3ZWxsIGNvdmVyZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCB0byByZXNwZWN0IGNwdXNldCBtZW1vcnkgYWxsb3dlZCBub2RlcyB3aGVuIGBub2RlbWFza2AgaXMgTlVMTC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0gKEh1Z2VUTEIgQ01BKSB0aGF0IGFmZmVjdHMgbWVtb3J5IGFsbG9jYXRpb24gYmVoYXZpb3IuIEl0IGlzIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDY6MzcuOTUxNTg3MDQ3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODQxNDcyNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5M2VlYmZiZGNhZTRkNjAxNjNjZjAyNjMxNGExZDhmYWYzMWMwNjk4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDExIDAwOjQ2OjM3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21tL2h1Z2V0bGJfY21hLmMgYi9tbS9odWdldGxiX2NtYS5jXFxuaW5kZXggMzkzNDRkNmM3OGQ4NC4uOWRlYmYwMzNkNGZkNyAxMDA2NDRcXG4tLS0gYS9tbS9odWdldGxiX2NtYS5jXFxuKysrIGIvbW0vaHVnZXRsYl9jbWEuY1xcbkBAIC0zLDYgKzMsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbW0uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NtYS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvY29tcGlsZXIuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NwdXNldC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbW1faW5saW5lLmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL3BhZ2UuaFxcdTAwM2VcXG5AQCAtMzAsMTUgKzMxLDI3IEBAIHN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXFxuIFxcdGludCBub2RlO1xcbiBcXHRzdHJ1Y3QgZm9saW8gKmZvbGlvO1xcbiBcXHRzdHJ1Y3QgcGFnZSAqcGFnZSA9IE5VTEw7XFxuK1xcdGNvbnN0IG5vZGVtYXNrX3QgKm5tYXNrO1xcbitcXHRub2RlbWFza190IGxvY2FsX25vZGVfbWFzaztcXG4rXFx0dW5zaWduZWQgaW50IGNwdXNldF9tZW1zX2Nvb2tpZTtcXG4gXFxuIFxcdGlmICghaHVnZXRsYl9jbWFfc2l6ZSlcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbi1cXHRpZiAoaHVnZXRsYl9jbWFbbmlkXSlcXG4rcmV0cnlfY3B1c2V0OlxcbitcXHRpZiAoIW5vZGVtYXNrKSB7XFxuK1xcdFxcdGNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7XFxuK1xcdFxcdGxvY2FsX25vZGVfbWFzayA9IGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZDtcXG4rXFx0XFx0bm1hc2sgPSBcXHUwMDI2bG9jYWxfbm9kZV9tYXNrO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRubWFzayA9IG5vZGVtYXNrO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoaHVnZXRsYl9jbWFbbmlkXSBcXHUwMDI2XFx1MDAyNiBub2RlX2lzc2V0KG5pZCwgKm5tYXNrKSlcXG4gXFx0XFx0cGFnZSA9IGNtYV9hbGxvY19mcm96ZW5fY29tcG91bmQoaHVnZXRsYl9jbWFbbmlkXSwgb3JkZXIpO1xcbiBcXG4gXFx0aWYgKCFwYWdlIFxcdTAwMjZcXHUwMDI2ICEoZ2ZwX21hc2sgXFx1MDAyNiBfX0dGUF9USElTTk9ERSkpIHtcXG4tXFx0XFx0Zm9yX2VhY2hfbm9kZV9tYXNrKG5vZGUsICpub2RlbWFzaykge1xcbitcXHRcXHRmb3JfZWFjaF9ub2RlX21hc2sobm9kZSwgKm5tYXNrKSB7XFxuIFxcdFxcdFxcdGlmIChub2RlID09IG5pZCB8fCAhaHVnZXRsYl9jbWFbbm9kZV0pXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG5AQCAtNDgsOCArNjEsMTIgQEAgc3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbi1cXHRpZiAoIXBhZ2UpXFxuK1xcdGlmICghcGFnZSkge1xcbitcXHRcXHRpZiAoIW5vZGVtYXNrIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICB1bmxpa2VseShyZWFkX21lbXNfYWxsb3dlZF9yZXRyeShjcHVzZXRfbWVtc19jb29raWUpKSlcXG4rXFx0XFx0XFx0Z290byByZXRyeV9jcHVzZXQ7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHRmb2xpbyA9IHBhZ2VfZm9saW8ocGFnZSk7XFxuIFxcdGZvbGlvX3NldF9odWdldGxiX2NtYShmb2xpbyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ2OjM4LjQzNjM1MzczMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEwMDUxOTA0MjczOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIVUdFVExCRlNcIixcbiAgICBcIkNNQVwiLFxuICAgIFwiQ1BVU0VUU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIHRvIHJlc3BlY3QgY3B1c2V0IG1lbW9yeSBhbGxvd2VkIG5vZGVzIHdoZW4gYG5vZGVtYXNrYCBpcyBOVUxMLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSAoSHVnZVRMQiBDTUEpIHRoYXQgYWZmZWN0cyBtZW1vcnkgYWxsb2NhdGlvbiBiZWhhdmlvci4gSXQgaXMgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5M2VlYmZiZGNhZTRkNjAxNjNjZjAyNjMxNGExZDhmYWYzMWMwNjk4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTEgMDA6NDY6MzcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9odWdldGxiX2NtYS5jIGIvbW0vaHVnZXRsYl9jbWEuY1xuaW5kZXggMzkzNDRkNmM3OGQ4NC4uOWRlYmYwMzNkNGZkNyAxMDA2NDRcbi0tLSBhL21tL2h1Z2V0bGJfY21hLmNcbisrKyBiL21tL2h1Z2V0bGJfY21hLmNcbkBAIC0zLDYgKzMsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21tLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jbWEuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBpbGVyLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9jcHVzZXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21tX2lubGluZS5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXHUwMDNjYXNtL3BhZ2UuaFx1MDAzZVxuQEAgLTMwLDE1ICszMSwyNyBAQCBzdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxuIFx0aW50IG5vZGU7XG4gXHRzdHJ1Y3QgZm9saW8gKmZvbGlvO1xuIFx0c3RydWN0IHBhZ2UgKnBhZ2UgPSBOVUxMO1xuK1x0Y29uc3Qgbm9kZW1hc2tfdCAqbm1hc2s7XG4rXHRub2RlbWFza190IGxvY2FsX25vZGVfbWFzaztcbitcdHVuc2lnbmVkIGludCBjcHVzZXRfbWVtc19jb29raWU7XG4gXG4gXHRpZiAoIWh1Z2V0bGJfY21hX3NpemUpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuLVx0aWYgKGh1Z2V0bGJfY21hW25pZF0pXG4rcmV0cnlfY3B1c2V0OlxuK1x0aWYgKCFub2RlbWFzaykge1xuK1x0XHRjcHVzZXRfbWVtc19jb29raWUgPSByZWFkX21lbXNfYWxsb3dlZF9iZWdpbigpO1xuK1x0XHRsb2NhbF9ub2RlX21hc2sgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XG4rXHRcdG5tYXNrID0gXHUwMDI2bG9jYWxfbm9kZV9tYXNrO1xuK1x0fSBlbHNlIHtcbitcdFx0bm1hc2sgPSBub2RlbWFzaztcbitcdH1cbitcbitcdGlmIChodWdldGxiX2NtYVtuaWRdIFx1MDAyNlx1MDAyNiBub2RlX2lzc2V0KG5pZCwgKm5tYXNrKSlcbiBcdFx0cGFnZSA9IGNtYV9hbGxvY19mcm96ZW5fY29tcG91bmQoaHVnZXRsYl9jbWFbbmlkXSwgb3JkZXIpO1xuIFxuIFx0aWYgKCFwYWdlIFx1MDAyNlx1MDAyNiAhKGdmcF9tYXNrIFx1MDAyNiBfX0dGUF9USElTTk9ERSkpIHtcbi1cdFx0Zm9yX2VhY2hfbm9kZV9tYXNrKG5vZGUsICpub2RlbWFzaykge1xuK1x0XHRmb3JfZWFjaF9ub2RlX21hc2sobm9kZSwgKm5tYXNrKSB7XG4gXHRcdFx0aWYgKG5vZGUgPT0gbmlkIHx8ICFodWdldGxiX2NtYVtub2RlXSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuQEAgLTQ4LDggKzYxLDEyIEBAIHN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXG4gXHRcdH1cbiBcdH1cbiBcbi1cdGlmICghcGFnZSlcbitcdGlmICghcGFnZSkge1xuK1x0XHRpZiAoIW5vZGVtYXNrIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgdW5saWtlbHkocmVhZF9tZW1zX2FsbG93ZWRfcmV0cnkoY3B1c2V0X21lbXNfY29va2llKSkpXG4rXHRcdFx0Z290byByZXRyeV9jcHVzZXQ7XG4gXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0Zm9saW8gPSBwYWdlX2ZvbGlvKHBhZ2UpO1xuIFx0Zm9saW9fc2V0X2h1Z2V0bGJfY21hKGZvbGlvKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ2OjM4LjQzNjM1NDc5MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MjYxMDg3NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgSHVnZVRMQiBDTUEgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIHR3ZWFraW5nIGBtbS9odWdldGxiX2NtYS5jYC4gU3BlY2lmaWNhbGx5LCBpdCdzIG1vZGlmeWluZyB0aGUgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AgZnVuY3Rpb24uIEkgc2VlIGl0J3MgYWRkaW5nIHRoZXNlIGNwdXNldCBtZW1vcnkgYWxsb3dlZCBjaGVja3MsIGJ1dCBvbmx5IHdoZW4gYG5vZGVtYXNrYCBpcyBOVUxMLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIEh1Z2VUTEIgQ01BIHN1YnN5c3RlbS4gVGhhdCdzIG1lbW9yeSBtYW5hZ2VtZW50LCBzbyBhbnkgY2hhbmdlIHRoZXJlIG5lZWRzIGNhcmVmdWwgc2NydXRpbnkuIEknbSBnb2luZyB0byB3YW50IHRvIHVuZGVyc3RhbmQgdGhlICp3aHkqIGJlaGluZCB0aGlzIGNvbmRpdGlvbmFsIGNoZWNrLlxuXG5NeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byB0aG9yb3VnaGx5IHJldmlldyB0aGUgdXNhZ2VzIG9mIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gLiBJIHdhbnQgdG8gc2VlIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkIGZyb20sIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgaW4gd2hpY2ggaXQncyBiZWluZyB1c2VkLCBhbmQgd2hhdCBzY2VuYXJpb3MgdHJpZ2dlciB0aGUgTlVMTCBgbm9kZW1hc2tgLiBLbm93aW5nIHRoZSBjYWxsZXJzIHdpbGwgY2xhcmlmeSB0aGUgcG9zc2libGUgaW1wYWN0IG9mIHRoaXMgY3B1c2V0IGNoZWNrLiBJJ2xsIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhhdCBhbGwgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGluIGBtbS9odWdldGxiX2NtYS5jYCBoYXZlbid0IGJlZW4gYWZmZWN0ZWQgb3IgbWFkZSByZWR1bmRhbnQgYXMgYSByZXN1bHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NjQsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMDo0Njo0Mi4wNjI0NjYxMjVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2MTgzMjkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZXRsYi5jPTEzNjA9c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfZ2lnYW50aWNfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXFxuLS1cXG5tbS9odWdldGxiLmMtMTM2NC1cXG5tbS9odWdldGxiLmM6MTM2NTpcXHRmb2xpbyA9IGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhvcmRlciwgZ2ZwX21hc2ssIG5pZCwgbm9kZW1hc2spO1xcbm1tL2h1Z2V0bGIuYy0xMzY2LVxcdGlmIChmb2xpbylcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmM9MjI9dm9pZCBodWdldGxiX2NtYV9mcmVlX2Zyb3plbl9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxubW0vaHVnZXRsYl9jbWEuYy0yNy1cXG5tbS9odWdldGxiX2NtYS5jOjI4OnN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXFxubW0vaHVnZXRsYl9jbWEuYy0yOS1cXHRcXHRpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzaylcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmg9Nj12b2lkIGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbm1tL2h1Z2V0bGJfY21hLmg6NzpzdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxcbm1tL2h1Z2V0bGJfY21hLmgtOC1cXHRcXHRcXHRcXHQgICAgICBpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzayk7XFxuLS1cXG5tbS9odWdldGxiX2NtYS5oPTE2PXN0YXRpYyBpbmxpbmUgdm9pZCBodWdldGxiX2NtYV9mcmVlX2Zyb3plbl9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxubW0vaHVnZXRsYl9jbWEuaC0xOS1cXG5tbS9odWdldGxiX2NtYS5oOjIwOnN0YXRpYyBpbmxpbmUgc3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLFxcbm1tL2h1Z2V0bGJfY21hLmgtMjEtXFx0XFx0Z2ZwX3QgZ2ZwX21hc2ssXFx0aW50IG5pZCwgbm9kZW1hc2tfdCAqbm9kZW1hc2spXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ2OjQ0LjEyNDMwMzczNVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2Mzc0NjkyNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBBbGxvY2F0aW9uIFBhdGgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIGZ1bmN0aW9uLiBUaGUgY2FsbCBzdGFjayB0ZWxscyBtZSBpdCBvcmlnaW5hdGVzIGZyb20gYGFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpb2Agd2l0aGluIGBtbS9odWdldGxiLmNgLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50IEkgbmVlZCB0byBmb2N1cyBvbi4gTXkgbmV4dCB0aG91Z2h0IGlzLCBJIG5lZWQgdG8ga25vdyB1bmRlciB3aGF0IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgYG1tL2h1Z2V0bGJfY21hLmNgIGlzIGV2ZW4gZW5hYmxlZC4gVGhhdCB3aWxsIGdpdmUgbWUgY29udGV4dCBvbiB0aGUgc2NlbmFyaW9zIHdoZXJlIEknZCBlbmNvdW50ZXIgdGhpcyBwYXRoIGFuZCBoZWxwcyBtZSB1bmRlcnN0YW5kIHRoZSBzeXN0ZW0gZGVzaWduIGdvYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzMxLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDY6NDYuNzYxNzc1MDk3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNjA4NTg1NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaHVnZXRsYl9jbWFcXFxcLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vTWFrZWZpbGU9ODI9aWZkZWYgQ09ORklHX0NNQVxcbm1tL01ha2VmaWxlOjgzOm9iai0kKENPTkZJR19IVUdFVExCRlMpXFx0Kz0gaHVnZXRsYl9jbWEub1xcbm1tL01ha2VmaWxlLTg0LWVuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ2OjQ5LjAyMjYzODYyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI4OTkzODEyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIE1lbW9yeSBNYW5hZ2VtZW50KipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCBJIG5lZWQgdG8gZ2V0IHRoaXMgbWVtb3J5IG1hbmFnZW1lbnQgc3lzdGVtIHNldCB1cCBjb3JyZWN0bHkuIFJpZ2h0LCBzbyBJIG5lZWQgYm90aCBgQ09ORklHX0NNQWAgYW5kIGBDT05GSUdfSFVHRVRMQkZTYCBlbmFibGVkLCB0aGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBIb2xkIG9uIGEgc2Vjb25kIHRob3VnaCwgYENPTkZJR19DTUFgIGlzIGFuIGlmZGVmLCBtZWFuaW5nIGl0J3MgY29uZGl0aW9uYWwsIGFuZCBgQ09ORklHX0hVR0VUTEJGU2AgaXMgYWN0dWFsbHkgdGhlIG9iamVjdCBJJ20gYWltaW5nIGZvci4gTm93IHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBpcyBpdCBgQ09ORklHX0hVR0VUTEJfUEFHRWAgb3IgYENPTkZJR19IVUdFVExCRlNgPyBJJ20gZ2V0dGluZyBhIGxpdHRsZSB0dXJuZWQgYXJvdW5kLCBiZXR0ZXIgdG8gdmVyaWZ5LiBMZXQgbWUganVzdCB0YWtlIGEgcXVpY2sgcGVlayBhdCB0aGUgYG1tL01ha2VmaWxlYCB0byBtYWtlIHN1cmUgSSBnZXQgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb25zIGVuYWJsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MDAsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMDo0Njo1Mi4zMTI1NzkwMTRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMzMTYxODgwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvYmotXFxcXCRcXFxcKENPTkZJR19IVUdFVExCRlNcXFxcKVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9NYWtlZmlsZT03Mj1vYmoteVxcdFxcdFxcdFxcdCs9IHJhbWZzL1xcbmZzL01ha2VmaWxlOjczOm9iai0kKENPTkZJR19IVUdFVExCRlMpXFx0XFx0Kz0gaHVnZXRsYmZzL1xcbmZzL01ha2VmaWxlLTc0LW9iai0kKENPTkZJR19DT0RBX0ZTKVxcdFxcdCs9IGNvZGEvXFxuLS1cXG5mcy9odWdldGxiZnMvTWFrZWZpbGUtNS1cXG5mcy9odWdldGxiZnMvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfSFVHRVRMQkZTKSArPSBodWdldGxiZnMub1xcbmZzL2h1Z2V0bGJmcy9NYWtlZmlsZS03LVxcbi0tXFxubW0vTWFrZWZpbGU9ODA9b2JqLSQoQ09ORklHX0hBU19ETUEpXFx0Kz0gZG1hcG9vbC5vXFxubW0vTWFrZWZpbGU6ODE6b2JqLSQoQ09ORklHX0hVR0VUTEJGUylcXHQrPSBodWdldGxiLm8gaHVnZXRsYl9zeXNmcy5vIGh1Z2V0bGJfc3lzY3RsLm9cXG5tbS9NYWtlZmlsZS04Mi1pZmRlZiBDT05GSUdfQ01BXFxubW0vTWFrZWZpbGU6ODM6b2JqLSQoQ09ORklHX0hVR0VUTEJGUylcXHQrPSBodWdldGxiX2NtYS5vXFxubW0vTWFrZWZpbGUtODQtZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDY6NTQuNjQ0MjA2NTI1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc3NDk4MjkyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgTGFyZ2UgTWVtb3J5IEFsbG9jYXRpb25zKipcblxuUmlnaHQsIGxldCdzIHNlZS4uLiB0aGUgc3lzdGVtIHNlZW1zIHRvIGJlIGNvbmZpZ3VyZWQgZm9yIEh1Z2VUTEJGUyBhbmQgQ29udGlndW91cyBNZW1vcnkgQWxsb2NhdGlvbiAoQ01BKS4gRXhjZWxsZW50LiBHaXZlbiB0aGF0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHBvdGVudGlhbCB1c2VzIG9mIGBhbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW9gLiBUaGF0IGZ1bmN0aW9uIGlzIGNyaXRpY2FsIGluIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgdGhlc2UgdmVyeSBsYXJnZSBtZW1vcnkgcmVxdWVzdHMuIEkgd2FudCB0byBzZWUgaG93IGFuZCB3aGVyZSBpdCdzIGJlaW5nIGVtcGxveWVkIGluIHRoaXMgc3BlY2lmaWMgY29udGV4dCwgaG93IHdlbGwgaXQncyB3b3JraW5nLCBhbmQgbG9vayBvdXQgZm9yIGFueXRoaW5nIHVudXN1YWwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvciB0aG9yb3VnaGx5IHRvIGlkZW50aWZ5IHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBvciBtZW1vcnkgZnJhZ21lbnRhdGlvbiBpc3N1ZXMsIGVzcGVjaWFsbHkgaW4gcmVsYXRpb24gdG8gdGhlIGludGVycGxheSBiZXR3ZWVuIEh1Z2VUTEJGUyBhbmQgQ01BLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIG9mIG15IGN1cnJlbnQgZm9jdXMgbGllcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEzMCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ2OjU3LjQxOTE5MTM4M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgyNjUxMDUzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZXRsYi5jPTEzMjA9c3RhdGljIHN0cnVjdCBmb2xpbyAqZGVxdWV1ZV9odWdldGxiX2ZvbGlvX3ZtYShzdHJ1Y3QgaHN0YXRlICpoLFxcbi0tXFxubW0vaHVnZXRsYi5jLTEzNTktI2lmIGRlZmluZWQoQ09ORklHX0FSQ0hfSEFTX0dJR0FOVElDX1BBR0UpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0NPTlRJR19BTExPQylcXG5tbS9odWdldGxiLmM6MTM2MDpzdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcXG5tbS9odWdldGxiLmMtMTM2MS1cXHRcXHRpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzaylcXG4tLVxcbm1tL2h1Z2V0bGIuYy0xMzc2LSNlbHNlIC8qICFDT05GSUdfQVJDSF9IQVNfR0lHQU5USUNfUEFHRSB8fCAhQ09ORklHX0NPTlRJR19BTExPQyAqL1xcbm1tL2h1Z2V0bGIuYzoxMzc3OnN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLCBpbnQgbmlkLFxcbm1tL2h1Z2V0bGIuYy0xMzc4LVxcdFxcdFxcdFxcdFxcdCAgbm9kZW1hc2tfdCAqbm9kZW1hc2spXFxuLS1cXG5tbS9odWdldGxiLmM9MTgzNj1zdGF0aWMgc3RydWN0IGZvbGlvICpvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcXG4tLVxcbm1tL2h1Z2V0bGIuYy0xODQ2LVxcdGlmIChvcmRlcl9pc19naWdhbnRpYyhvcmRlcikpXFxubW0vaHVnZXRsYi5jOjE4NDc6XFx0XFx0Zm9saW8gPSBhbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW8ob3JkZXIsIGdmcF9tYXNrLCBuaWQsIG5tYXNrKTtcXG5tbS9odWdldGxiLmMtMTg0OC1cXHRlbHNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ2OjU5LjI0NTcwNzY3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDIxMzYzMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkRpdmluZyBpbnRvIEh1Z2VUTEIgQWxsb2NhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW9gLi4uIFJpZ2h0LCBpdCBzZWVtcyBsaWtlIHRoYXQgZnVuY3Rpb24gdWx0aW1hdGVseSBjYWxscyBgYWxsb2NfZ2lnYW50aWNfZnJvemVuX2ZvbGlvYC4gVGhhdCBtYWtlcyBzZW5zZTsgd2UncmUgZGVhbGluZyB3aXRoIEh1Z2VUTEIgcGFnZXMsIHNvIHdlJ3JlIHRhbGtpbmcgYWJvdXQgZ2lnYW50aWMsIHByZS1mcm96ZW4gZm9saW9zIGhlcmUuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgXCJXaHkgdGhlIGV4dHJhIGxheWVyP1wiIFdoYXQncyB0aGUgc3BlY2lmaWMgcm9sZSBvZiBgb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvYCBpbiB0aGlzIGFsbG9jYXRpb24gcHJvY2Vzcz8gSXMgaXQgaGFuZGxpbmcgc29tZSBzcGVjaWZpYyBIdWdlVExCIGluaXRpYWxpemF0aW9uIG9yIHZhbGlkYXRpb24gdGhhdCBgYWxsb2NfZ2lnYW50aWNfZnJvemVuX2ZvbGlvYCBkb2Vzbid0PyBMZXQncyB0cmFjZSBgb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvYCBhbmQgc2VlIHdoYXQncyBnb2luZyBvbi4uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IGFuZCBwb3RlbnRpYWwgY2hlY2tzIG9yIGFjdGlvbnMgdGFrZW4gYmVmb3JlIHRoZSBhY3R1YWwgZ2lnYW50aWMgZm9saW8gYWxsb2NhdGlvbiBoYXBwZW5zLiBMZXQncyBzZWUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDczMSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ3OjAyLjk4Nzg0Nzg1OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA0NzkyNzA2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZXRsYi5jPTE3OTE9c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfYnVkZHlfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXFxuLS1cXG5tbS9odWdldGxiLmMtMTgzNS1cXG5tbS9odWdldGxiLmM6MTgzNjpzdGF0aWMgc3RydWN0IGZvbGlvICpvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcXG5tbS9odWdldGxiLmMtMTgzNy1cXHRcXHRnZnBfdCBnZnBfbWFzaywgaW50IG5pZCwgbm9kZW1hc2tfdCAqbm1hc2ssXFxuLS1cXG5tbS9odWdldGxiLmM9MTg2Mz1zdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXFxuLS1cXG5tbS9odWdldGxiLmMtMTg2Ny1cXG5tbS9odWdldGxiLmM6MTg2ODpcXHRmb2xpbyA9IG9ubHlfYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhoLCBnZnBfbWFzaywgbmlkLCBubWFzaywgTlVMTCk7XFxubW0vaHVnZXRsYi5jLTE4NjktXFx0aWYgKGZvbGlvKVxcbi0tXFxubW0vaHVnZXRsYi5jPTE4OTY9c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfcG9vbF9odWdlX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXFxuLS1cXG5tbS9odWdldGxiLmMtMTkwNi1cXG5tbS9odWdldGxiLmM6MTkwNzpcXHRcXHRmb2xpbyA9IG9ubHlfYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhoLCBnZnBfbWFzaywgbm9kZSxcXG5tbS9odWdldGxiLmMtMTkwOC1cXHRcXHRcXHRcXHRcXHRub2Rlc19hbGxvd2VkLCBub2RlX2FsbG9jX25vcmV0cnkpO1xcbi0tXFxubW0vaHVnZXRsYi5jPTMzNzI9c3RhdGljIHZvaWQgX19pbml0IGh1Z2V0bGJfaHN0YXRlX2FsbG9jX3BhZ2VzX29uZW5vZGUoc3RydWN0IGhzdGF0ZSAqaCwgaW50IG5pZClcXG4tLVxcbm1tL2h1Z2V0bGIuYy0zMzg1LVxcbm1tL2h1Z2V0bGIuYzozMzg2OlxcdFxcdFxcdGZvbGlvID0gb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsXFxubW0vaHVnZXRsYi5jLTMzODctXFx0XFx0XFx0XFx0XFx0XFx1MDAyNm5vZGVfc3RhdGVzW05fTUVNT1JZXSwgTlVMTCk7XFxuLS1cXG5tbS9odWdldGxiLmMtMzM5MS1cXHRcXHRcXHRcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2Zm9saW9fbGlzdCk7XFxubW0vaHVnZXRsYi5jOjMzOTI6XFx0XFx0XFx0XFx0Zm9saW8gPSBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oaCwgZ2ZwX21hc2ssIG5pZCxcXG5tbS9odWdldGxiLmMtMzM5My1cXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2bm9kZV9zdGF0ZXNbTl9NRU1PUlldLCBOVUxMKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDc6MDUuMDM1NzgwODM5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNzA0MDc2MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBIdWdldGxiIEZvbGlvIEFsbG9jYXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCBhbGxvY2F0aW5nIG5ldyBodWdldGxiIGZvbGlvcywgd2hpY2ggaXMgc29tZXRoaW5nIEkgZGVhbCB3aXRoIGZyZXF1ZW50bHkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0J3MgaW50cm9kdWNpbmcgc29tZSBpbnRlcmVzdGluZyBjaGFuZ2VzLiBTcGVjaWZpY2FsbHksIGl0J3MgYWRkaW5nIGBjcHVzZXRfbWVtc19jb29raWUgPSByZWFkX21lbXNfYWxsb3dlZF9iZWdpbigpO2AgYW5kIHRoZW4gdXNpbmcgYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAgaWYgdGhlIGBub2RlbWFza2AgaXMgbnVsbC4gUmlnaHQgYXdheSwgSSBzZWUgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCdzIHJlc3RyaWN0aW5nIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiB0byB0aGUgbm9kZXMgY3VycmVudGx5IGFsbG93ZWQgYnkgdGhlIGNwdXNldC5cblxuVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogaXMgdGhpcyBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyBmdXp6aW5nPyBBYnNvbHV0ZWx5LCB5ZXMuIEFueSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBtZW1vcnkgbWFuYWdlbWVudCBpcyBwcmltZSB0ZXJyaXRvcnkgZm9yIGZ1enppbmcsIGVzcGVjaWFsbHkgc29tZXRoaW5nIHRoYXQgYWx0ZXJzIGFsbG93ZWQgbm9kZSBiZWhhdmlvciBsaWtlIHRoaXMuIEl0IGNvdWxkIHVuY292ZXIgc3VidGxlIGVkZ2UgY2FzZXMgb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIG1lbW9yeSBpc29sYXRpb24gb3IgY29udGVudGlvbi5cblxuV2FpdCBhIHNlY29uZOKApiBgcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW5gIGFuZCBgcmVhZF9tZW1zX2FsbG93ZWRfcmV0cnlgIOKAkyB0aG9zZSBhcmUgaW4gYGxpbnV4L2NwdXNldC5oYC4gTWFrZXMgc2Vuc2UsIGNvbnNpZGVyaW5nIHdoYXQgdGhlIHBhdGNoIGlzIGRvaW5nLlxuXG5Ob3csIGxldCBtZSBqdXN0IGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkLiBJIGV4cGVjdCBgQ09ORklHX0hVR0VUTEJGU2AsIG9idmlvdXNseSwgYW5kIGxpa2VseSBgQ09ORklHX0NNQWAgc2luY2Ugd2UncmUgZGVhbGluZyB3aXRoIGNvbnRpZ3VvdXMgbWVtb3J5IGFsbG9jYXRpb24uIEFuZCwgb2YgY291cnNlLCBgQ09ORklHX0NQVVNFVFNgIGlzIGEgZ2l2ZW4uIFRob3VnaCBJIHNob3VsZCBkb3VibGUgY2hlY2sgdGhhdCBsYXN0IG9uZSwganVzdCB0byBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU5MCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMDo0NzowOS40MDYxOTA3OVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg2MjI5NzAzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZWFkX21lbXNfYWxsb3dlZF9iZWdpblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2NwdXNldC5oPTIxPWV4dGVybiBib29sIGxvY2tkZXBfaXNfY3B1c2V0X2hlbGQodm9pZCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTI2LSAqIFN0YXRpYyBicmFuY2ggcmV3cml0ZXMgY2FuIGhhcHBlbiBpbiBhbiBhcmJpdHJhcnkgb3JkZXIgZm9yIGEgZ2l2ZW5cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oOjI3OiAqIGtleS4gSW4gY29kZSBwYXRocyB3aGVyZSB3ZSBuZWVkIHRvIGxvb3Agd2l0aCByZWFkX21lbXNfYWxsb3dlZF9iZWdpbigpIGFuZFxcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMjgtICogcmVhZF9tZW1zX2FsbG93ZWRfcmV0cnkoKSB0byBnZXQgYSBjb25zaXN0ZW50IHZpZXcgb2YgbWVtc19hbGxvd2VkLCB3ZSBuZWVkXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oPTEzNT1leHRlcm4gdm9pZCBjcHVzZXRfcmVzZXRfc2NoZWRfZG9tYWlucyh2b2lkKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMTM3LS8qXFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaDoxMzg6ICogcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4gaXMgcmVxdWlyZWQgd2hlbiBtYWtpbmcgZGVjaXNpb25zIGludm9sdmluZ1xcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMTM5LSAqIG1lbXNfYWxsb3dlZCBzdWNoIGFzIGR1cmluZyBwYWdlIGFsbG9jYXRpb24uIG1lbXNfYWxsb3dlZCBjYW4gYmUgdXBkYXRlZCBpblxcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMTQwLSAqIHBhcmFsbGVsIGFuZCBkZXBlbmRpbmcgb24gdGhlIG5ldyB2YWx1ZSBhbiBvcGVyYXRpb24gY2FuIGZhaWwgcG90ZW50aWFsbHlcXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oOjE0MTogKiBjYXVzaW5nIHByb2Nlc3MgZmFpbHVyZS4gQSByZXRyeSBsb29wIHdpdGggcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4gYW5kXFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaC0xNDItICogcmVhZF9tZW1zX2FsbG93ZWRfcmV0cnkgcHJldmVudHMgdGhlc2UgYXJ0aWZpY2lhbCBmYWlsdXJlcy5cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTE0My0gKi9cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oOjE0NDpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCByZWFkX21lbXNfYWxsb3dlZF9iZWdpbih2b2lkKVxcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMTQ1LXtcXG4tLVxcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMTUzLSAqIElmIHRoaXMgcmV0dXJucyB0cnVlLCB0aGUgb3BlcmF0aW9uIHRoYXQgdG9vayBwbGFjZSBhZnRlclxcbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg6MTU0OiAqIHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luIG1heSBoYXZlIGZhaWxlZCBhcnRpZmljaWFsbHkgZHVlIHRvIGEgY29uY3VycmVudFxcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMTU1LSAqIHVwZGF0ZSBvZiBtZW1zX2FsbG93ZWQuIEl0IGlzIHVwIHRvIHRoZSBjYWxsZXIgdG8gcmV0cnkgdGhlIG9wZXJhdGlvbiBpZlxcbi0tXFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaD0yODg9c3RhdGljIGlubGluZSB2b2lkIHNldF9tZW1zX2FsbG93ZWQobm9kZW1hc2tfdCBub2RlbWFzaylcXG4tLVxcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMjkxLVxcbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg6MjkyOnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKHZvaWQpXFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaC0yOTMte1xcbi0tXFxubW0vZmlsZW1hcC5jPTk5OT1zdHJ1Y3QgZm9saW8gKmZpbGVtYXBfYWxsb2NfZm9saW9fbm9wcm9mKGdmcF90IGdmcCwgdW5zaWduZWQgaW50IG9yZGVyLFxcbi0tXFxubW0vZmlsZW1hcC5jLTEwMTEtXFx0XFx0ZG8ge1xcbm1tL2ZpbGVtYXAuYzoxMDEyOlxcdFxcdFxcdGNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7XFxubW0vZmlsZW1hcC5jLTEwMTMtXFx0XFx0XFx0biA9IGNwdXNldF9tZW1fc3ByZWFkX25vZGUoKTtcXG4tLVxcbm1tL2h1Z2V0bGIuYz0xMjc1PXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmRlcXVldWVfaHVnZXRsYl9mb2xpb19ub2RlbWFzayhzdHJ1Y3QgaHN0YXRlICpoLCBnZnBfdCBnZnBfbWFzayxcXG4tLVxcbm1tL2h1Z2V0bGIuYy0xMjkwLXJldHJ5X2NwdXNldDpcXG5tbS9odWdldGxiLmM6MTI5MTpcXHRjcHVzZXRfbWVtc19jb29raWUgPSByZWFkX21lbXNfYWxsb3dlZF9iZWdpbigpO1xcbm1tL2h1Z2V0bGIuYy0xMjkyLVxcdGZvcl9lYWNoX3pvbmVfem9uZWxpc3Rfbm9kZW1hc2soem9uZSwgeiwgem9uZWxpc3QsIGdmcF96b25lKGdmcF9tYXNrKSwgbm1hc2spIHtcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmM9Mjg9c3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmMtNDItXFx0aWYgKCFub2RlbWFzaykge1xcbm1tL2h1Z2V0bGJfY21hLmM6NDM6XFx0XFx0Y3B1c2V0X21lbXNfY29va2llID0gcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKTtcXG5tbS9odWdldGxiX2NtYS5jLTQ0LVxcdFxcdGxvY2FsX25vZGVfbWFzayA9IGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZDtcXG4tLVxcbm1tL21lbXBvbGljeS5jPTIxMDA9c3RhdGljIHVuc2lnbmVkIGludCB3ZWlnaHRlZF9pbnRlcmxlYXZlX25vZGVzKHN0cnVjdCBtZW1wb2xpY3kgKnBvbGljeSlcXG4tLVxcbm1tL21lbXBvbGljeS5jLTIxMDYtXFx0LyogdG8gcHJldmVudCBtaXNjb3VudCB1c2UgdHNrLVxcdTAwM2VtZW1zX2FsbG93ZWRfc2VxIHRvIGRldGVjdCByZWJpbmQgKi9cXG5tbS9tZW1wb2xpY3kuYzoyMTA3OlxcdGNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7XFxubW0vbWVtcG9saWN5LmMtMjEwOC1cXHRub2RlID0gY3VycmVudC1cXHUwMDNlaWxfcHJldjtcXG4tLVxcbm1tL21lbXBvbGljeS5jPTIxMjM9c3RhdGljIHVuc2lnbmVkIGludCBpbnRlcmxlYXZlX25vZGVzKHN0cnVjdCBtZW1wb2xpY3kgKnBvbGljeSlcXG4tLVxcbm1tL21lbXBvbGljeS5jLTIxMjktXFx0ZG8ge1xcbm1tL21lbXBvbGljeS5jOjIxMzA6XFx0XFx0Y3B1c2V0X21lbXNfY29va2llID0gcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKTtcXG5tbS9tZW1wb2xpY3kuYy0yMTMxLVxcdFxcdG5pZCA9IG5leHRfbm9kZV9pbihjdXJyZW50LVxcdTAwM2VpbF9wcmV2LCBwb2xpY3ktXFx1MDAzZW5vZGVzKTtcXG4tLVxcbm1tL21lbXBvbGljeS5jPTI2MzA9c3RhdGljIHVuc2lnbmVkIGxvbmcgYWxsb2NfcGFnZXNfYnVsa193ZWlnaHRlZF9pbnRlcmxlYXZlKGdmcF90IGdmcCxcXG4tLVxcbm1tL21lbXBvbGljeS5jLTI2NTUtXFx0ZG8ge1xcbm1tL21lbXBvbGljeS5jOjI2NTY6XFx0XFx0Y3B1c2V0X21lbXNfY29va2llID0gcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKTtcXG5tbS9tZW1wb2xpY3kuYy0yNjU3LVxcdFxcdG5ub2RlcyA9IHJlYWRfb25jZV9wb2xpY3lfbm9kZW1hc2socG9sLCBcXHUwMDI2bm9kZXMpO1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTQ3MjU9X19hbGxvY19wYWdlc19zbG93cGF0aChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTQ3NjQtXFx0Y29tcGFjdF9wcmlvcml0eSA9IERFRl9DT01QQUNUX1BSSU9SSVRZO1xcbm1tL3BhZ2VfYWxsb2MuYzo0NzY1OlxcdGNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7XFxubW0vcGFnZV9hbGxvYy5jLTQ3NjYtXFx0em9uZWxpc3RfaXRlcl9jb29raWUgPSB6b25lbGlzdF9pdGVyX2JlZ2luKCk7XFxuLS1cXG5tbS9zaG93X21lbS5jPTExOT1zdGF0aWMgYm9vbCBzaG93X21lbV9ub2RlX3NraXAodW5zaWduZWQgaW50IGZsYWdzLCBpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzaylcXG4tLVxcbm1tL3Nob3dfbWVtLmMtMTI1LVxcdCAqIG5vIG5vZGUgbWFzayAtIGFrYSBpbXBsaWNpdCBtZW1vcnkgbnVtYSBwb2xpY3kuIERvIG5vdCBib3RoZXIgd2l0aFxcbm1tL3Nob3dfbWVtLmM6MTI2OlxcdCAqIHRoZSBzeW5jaHJvbml6YXRpb24gLSByZWFkX21lbXNfYWxsb3dlZF9iZWdpbiAtIGJlY2F1c2Ugd2UgZG8gbm90XFxubW0vc2hvd19tZW0uYy0xMjctXFx0ICogaGF2ZSB0byBiZSBwcmVjaXNlIGhlcmUuXFxuLS1cXG5tbS9zbHViLmM9Mzg2Mz1zdGF0aWMgdm9pZCAqZ2V0X2Zyb21fYW55X3BhcnRpYWwoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcF9mbGFncyxcXG4tLVxcbm1tL3NsdWIuYy0zODk3LVxcdFxcdC8qXFxubW0vc2x1Yi5jOjM4OTg6XFx0XFx0ICogcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKSBhY2Nlc3NlcyBjdXJyZW50LVxcdTAwM2VtZW1zX2FsbG93ZWRfc2VxLFxcbm1tL3NsdWIuYy0zODk5LVxcdFxcdCAqIGEgc2VxY291bnRfc3BpbmxvY2tfdCB0aGF0IGlzIG5vdCBOTUktc2FmZS4gRG8gbm90IGFjY2Vzc1xcbi0tXFxubW0vc2x1Yi5jLTM5MDMtXFx0XFx0aWYgKGFsbG93X3NwaW4pXFxubW0vc2x1Yi5jOjM5MDQ6XFx0XFx0XFx0Y3B1c2V0X21lbXNfY29va2llID0gcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKTtcXG5tbS9zbHViLmMtMzkwNS1cXG4tLVxcbm1tL3NsdWIuYz03MjMxPV9fcmVmaWxsX29iamVjdHNfYW55KHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICoqcCwgZ2ZwX3QgZ2ZwLCB1bnNpZ25lZCBpbnQgbWluLFxcbi0tXFxubW0vc2x1Yi5jLTcyNDYtXFx0ZG8ge1xcbm1tL3NsdWIuYzo3MjQ3OlxcdFxcdGNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7XFxubW0vc2x1Yi5jLTcyNDgtXFx0XFx0em9uZWxpc3QgPSBub2RlX3pvbmVsaXN0KG1lbXBvbGljeV9zbGFiX25vZGUoKSwgZ2ZwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDc6MTEuMjY4NDkyNDI1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMzM5MzgxNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGByZWFkX21lbXNfYWxsb3dlZF9iZWdpbmAgYW5kIENQVVNldHMqKlxuXG5Pa2F5LCBzbyBgcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW5gIGlzIGRlZmluZWQgaW4gYGluY2x1ZGUvbGludXgvY3B1c2V0LmhgLiBUaGF0IG1ha2VzIHNlbnNlLCBidXQgaXQncyBpbnRlcmVzdGluZyB0aGF0IGl0J3MgcHJlc2VudCBldmVuIHdoZW4gYENPTkZJR19DUFVTRVRTYCBpc24ndCBlbmFibGVkLiBDbGVhcmx5LCB0aGVyZSdzIGEgZHVtbXkgaW1wbGVtZW50YXRpb24gaW4gcGxhY2UgdG8gaGFuZGxlIHRoZSBzY2VuYXJpbyB3aGVyZSBjcHVzZXRzIGFyZSBkaXNhYmxlZC4gSG93ZXZlciwgaWYgSSByZWFsbHkgd2FudCB0byBkaXZlIGRlZXAgaW50byB0aGUgbG9naWMgYW5kIHRlc3QgdGhlIGZ1bmN0aW9uYWxpdHkgcHJvcGVybHksIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGlmIGBDT05GSUdfQ1BVU0VUU2AgaXMgYWN0dWFsbHkgY29uZmlndXJlZC4gQmVzdCB0byB2ZXJpZnkgdGhlIHJlYWwgaW1wbGVtZW50YXRpb24sIHNvIEknbGwgZ28gYWhlYWQgYW5kIHRha2UgYSBsb29rIGF0IGBpbmNsdWRlL2xpbnV4L2NwdXNldC5oYCBhZ2Fpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzk4NCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ3OjE0LjQwMjQzMjQyMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg0ODc1MzIxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfQ1BVU0VUU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2NwdS1pc29sYXRpb24ucnN0PTk4PVJlcXVpcmVtZW50c1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jcHUtaXNvbGF0aW9uLnJzdC0xMDAtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jcHUtaXNvbGF0aW9uLnJzdDoxMDE6LSBDT05GSUdfQ1BVU0VUUz15IGZvciB0aGUgY3B1c2V0cy1iYXNlZCBpbnRlcmZhY2VcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2NwdS1pc29sYXRpb24ucnN0LTEwMi1cXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2LXRvb2xzL2dwaW8tc2xvcHB5LWxvZ2ljLWFuYWx5emVyLnJzdD0zNT1TZXR1cFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMvZ3Bpby1zbG9wcHktbG9naWMtYW5hbHl6ZXIucnN0LTM3LVxcbkRvY3VtZW50YXRpb24vZGV2LXRvb2xzL2dwaW8tc2xvcHB5LWxvZ2ljLWFuYWx5emVyLnJzdDozODpZb3VyIGtlcm5lbCBtdXN0IGhhdmUgQ09ORklHX0RFQlVHX0ZTIGFuZCBDT05GSUdfQ1BVU0VUUyBlbmFibGVkLiBJZGVhbGx5LCB5b3VyXFxuRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMvZ3Bpby1zbG9wcHktbG9naWMtYW5hbHl6ZXIucnN0LTM5LXJ1bnRpbWUgZW52aXJvbm1lbnQgZG9lcyBub3QgdXRpbGl6ZSBjcHVzZXRzIG90aGVyd2lzZSwgdGhlbiBpc29sYXRpb24gb2YgYSBDUFVcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvYmNtMjgzNV9kZWZjb25maWc9MTA9Q09ORklHX0NHUk9VUF9GUkVFWkVSPXlcXG5hcmNoL2FybS9jb25maWdzL2JjbTI4MzVfZGVmY29uZmlnOjExOkNPTkZJR19DUFVTRVRTPXlcXG5hcmNoL2FybS9jb25maWdzL2JjbTI4MzVfZGVmY29uZmlnLTEyLUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZz0xNj1DT05GSUdfQ0dST1VQX0ZSRUVaRVI9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZzoxNzpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnLTE4LUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc29jZnBnYV9kZWZjb25maWc9Nj1DT05GSUdfQ0dST1VQUz15XFxuYXJjaC9hcm0vY29uZmlncy9zb2NmcGdhX2RlZmNvbmZpZzo3OkNPTkZJR19DUFVTRVRTPXlcXG5hcmNoL2FybS9jb25maWdzL3NvY2ZwZ2FfZGVmY29uZmlnLTgtQ09ORklHX05BTUVTUEFDRVM9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy92ZXhwcmVzc19kZWZjb25maWc9OD1DT05GSUdfQ0dST1VQUz15XFxuYXJjaC9hcm0vY29uZmlncy92ZXhwcmVzc19kZWZjb25maWc6OTpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC9hcm0vY29uZmlncy92ZXhwcmVzc19kZWZjb25maWctMTAtIyBDT05GSUdfVVRTX05TIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc9MjI9Q09ORklHX0NHUk9VUF9IVUdFVExCPXlcXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjIzOkNPTkZJR19DUFVTRVRTPXlcXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTI0LUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc9Mjc9Q09ORklHX0NHUk9VUF9GUkVFWkVSPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnOjI4OkNPTkZJR19DUFVTRVRTPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTI5LUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9MzE9Q09ORklHX0NHUk9VUF9IVUdFVExCPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnOjMyOkNPTkZJR19DUFVTRVRTPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTMzLUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE1X2RlZmNvbmZpZz0xMj1DT05GSUdfQ0dST1VQX0ZSRUVaRVI9eVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE1X2RlZmNvbmZpZzoxMzpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTVfZGVmY29uZmlnLTE0LUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2X2RlZmNvbmZpZz0xMz1DT05GSUdfQ0dST1VQX0ZSRUVaRVI9eVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2X2RlZmNvbmZpZzoxNDpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZfZGVmY29uZmlnLTE1LUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2bHBsdXNfZGVmY29uZmlnPTEzPUNPTkZJR19DR1JPVVBfRlJFRVpFUj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZXllcTZscGx1c19kZWZjb25maWc6MTQ6Q09ORklHX0NQVVNFVFM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2V5ZXE2bHBsdXNfZGVmY29uZmlnLTE1LUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2dlbmVyaWNfZGVmY29uZmlnPTk9Q09ORklHX0NHUk9VUF9GUkVFWkVSPXlcXG5hcmNoL21pcHMvY29uZmlncy9nZW5lcmljX2RlZmNvbmZpZzoxMDpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZ2VuZXJpY19kZWZjb25maWctMTEtQ09ORklHX0NHUk9VUF9ERVZJQ0U9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWc9OD1DT05GSUdfQ0dST1VQUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWc6OTpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWctMTAtQ09ORklHX1JFTEFZPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnPTg9Q09ORklHX0NHUk9VUFM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnOjk6Q09ORklHX0NQVVNFVFM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnLTEwLUNPTkZJR19SRUxBWT15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnPTIwPUNPTkZJR19DR1JPVVBfRlJFRVpFUj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZzoyMTpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZy0yMi1DT05GSUdfQ0dST1VQX0RFVklDRT15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9zYjEyNTBfc3dhcm1fZGVmY29uZmlnPTQ9Q09ORklHX0NHUk9VUFM9eVxcbmFyY2gvbWlwcy9jb25maWdzL3NiMTI1MF9zd2FybV9kZWZjb25maWc6NTpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC9taXBzL2NvbmZpZ3Mvc2IxMjUwX3N3YXJtX2RlZmNvbmZpZy02LSMgQ09ORklHX1BST0NfUElEX0NQVVNFVCBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnPTE3PUNPTkZJR19DR1JPVVBfUElEUz15XFxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZzoxODpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZy0xOS1DT05GSUdfVVNFUl9OUz15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9jZWxsX2RlZmNvbmZpZz0xMj1DT05GSUdfQ0dST1VQUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvY2VsbF9kZWZjb25maWc6MTM6Q09ORklHX0NQVVNFVFM9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2NlbGxfZGVmY29uZmlnLTE0LUNPTkZJR19CTEtfREVWX0lOSVRSRD15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9mc2wtZW1iLW5vbmh3LmNvbmZpZz0xNj1DT05GSUdfQ0dST1VQUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZnNsLWVtYi1ub25ody5jb25maWctMTctIyBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMgaXMgbm90IHNldFxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2ZzbC1lbWItbm9uaHcuY29uZmlnOjE4OkNPTkZJR19DUFVTRVRTPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9mc2wtZW1iLW5vbmh3LmNvbmZpZy0xOS1DT05GSUdfQ1JBTUZTPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnPTIxPUNPTkZJR19DR1JPVVBfRlJFRVpFUj15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6MjI6Q09ORklHX0NQVVNFVFM9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnLTIzLUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZz0yOD1DT05GSUdfQ0dST1VQX0hVR0VUTEI9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZzoyOTpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnLTMwLUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0ZV9kZWZjb25maWc9MTI9Q09ORklHX0NHUk9VUFM9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0ZV9kZWZjb25maWc6MTM6Q09ORklHX0NQVVNFVFM9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0ZV9kZWZjb25maWctMTQtQ09ORklHX0JMS19ERVZfSU5JVFJEPXlcXG4tLVxcbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWc9MTU9Q09ORklHX0NHUk9VUF9IVUdFVExCPXlcXG5hcmNoL3Jpc2N2L2NvbmZpZ3MvZGVmY29uZmlnOjE2OkNPTkZJR19DUFVTRVRTPXlcXG5hcmNoL3Jpc2N2L2NvbmZpZ3MvZGVmY29uZmlnLTE3LUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz0zMT1DT05GSUdfQ0dST1VQX0hVR0VUTEI9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzozMjpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTMzLUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0yOT1DT05GSUdfQ0dST1VQX0hVR0VUTEI9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzozMDpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTMxLUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gvc2gvY29uZmlncy9zZGs3Nzg2X2RlZmNvbmZpZz0xND1DT05GSUdfQ0dST1VQX0RFVklDRT15XFxuYXJjaC9zaC9jb25maWdzL3Nkazc3ODZfZGVmY29uZmlnOjE1OkNPTkZJR19DUFVTRVRTPXlcXG5hcmNoL3NoL2NvbmZpZ3Mvc2RrNzc4Nl9kZWZjb25maWctMTYtIyBDT05GSUdfUFJPQ19QSURfQ1BVU0VUIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvc2gvY29uZmlncy91cnF1ZWxsX2RlZmNvbmZpZz0xMj1DT05GSUdfQ0dST1VQX0RFVklDRT15XFxuYXJjaC9zaC9jb25maWdzL3VycXVlbGxfZGVmY29uZmlnOjEzOkNPTkZJR19DUFVTRVRTPXlcXG5hcmNoL3NoL2NvbmZpZ3MvdXJxdWVsbF9kZWZjb25maWctMTQtIyBDT05GSUdfUFJPQ19QSURfQ1BVU0VUIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvdW0vY29uZmlncy9pMzg2X2RlZmNvbmZpZz0xNj1DT05GSUdfQ0dST1VQX0RFVklDRT15XFxuYXJjaC91bS9jb25maWdzL2kzODZfZGVmY29uZmlnOjE3OkNPTkZJR19DUFVTRVRTPXlcXG5hcmNoL3VtL2NvbmZpZ3MvaTM4Nl9kZWZjb25maWctMTgtQ09ORklHX0NHUk9VUF9DUFVBQ0NUPXlcXG4tLVxcbmFyY2gvdW0vY29uZmlncy94ODZfNjRfZGVmY29uZmlnPTE1PUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG5hcmNoL3VtL2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZzoxNjpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC91bS9jb25maWdzL3g4Nl82NF9kZWZjb25maWctMTctQ09ORklHX0NHUk9VUF9DUFVBQ0NUPXlcXG4tLVxcbmFyY2gveDg2L2NvbmZpZ3MvaTM4Nl9kZWZjb25maWc9MjA9Q09ORklHX0NHUk9VUF9IVUdFVExCPXlcXG5hcmNoL3g4Ni9jb25maWdzL2kzODZfZGVmY29uZmlnOjIxOkNPTkZJR19DUFVTRVRTPXlcXG5hcmNoL3g4Ni9jb25maWdzL2kzODZfZGVmY29uZmlnLTIyLUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gveDg2L2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZz0yMD1DT05GSUdfQ0dST1VQX0hVR0VUTEI9eVxcbmFyY2gveDg2L2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZzoyMTpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnLTIyLUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MvYXVkaW9fa2M3MDVfZGVmY29uZmlnPTEwPUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG5hcmNoL3h0ZW5zYS9jb25maWdzL2F1ZGlvX2tjNzA1X2RlZmNvbmZpZzoxMTpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC94dGVuc2EvY29uZmlncy9hdWRpb19rYzcwNV9kZWZjb25maWctMTItQ09ORklHX0NHUk9VUF9DUFVBQ0NUPXlcXG4tLVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MvY2FkZW5jZV9jc3BfZGVmY29uZmlnPTc9Q09ORklHX0NHUk9VUF9GUkVFWkVSPXlcXG5hcmNoL3h0ZW5zYS9jb25maWdzL2NhZGVuY2VfY3NwX2RlZmNvbmZpZzo4OkNPTkZJR19DUFVTRVRTPXlcXG5hcmNoL3h0ZW5zYS9jb25maWdzL2NhZGVuY2VfY3NwX2RlZmNvbmZpZy05LUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG4tLVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MvZ2VuZXJpY19rYzcwNV9kZWZjb25maWc9MTA9Q09ORklHX0NHUk9VUF9ERVZJQ0U9eVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MvZ2VuZXJpY19rYzcwNV9kZWZjb25maWc6MTE6Q09ORklHX0NQVVNFVFM9eVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MvZ2VuZXJpY19rYzcwNV9kZWZjb25maWctMTItQ09ORklHX0NHUk9VUF9DUFVBQ0NUPXlcXG4tLVxcbmFyY2gveHRlbnNhL2NvbmZpZ3Mvbm9tbXVfa2M3MDVfZGVmY29uZmlnPTEwPUNPTkZJR19DR1JPVVBfREVWSUNFPXlcXG5hcmNoL3h0ZW5zYS9jb25maWdzL25vbW11X2tjNzA1X2RlZmNvbmZpZzoxMTpDT05GSUdfQ1BVU0VUUz15XFxuYXJjaC94dGVuc2EvY29uZmlncy9ub21tdV9rYzcwNV9kZWZjb25maWctMTItQ09ORklHX0NHUk9VUF9DUFVBQ0NUPXlcXG4tLVxcbmFyY2gveHRlbnNhL2NvbmZpZ3Mvc21wX2x4MjAwX2RlZmNvbmZpZz0xMD1DT05GSUdfQ0dST1VQX0RFVklDRT15XFxuYXJjaC94dGVuc2EvY29uZmlncy9zbXBfbHgyMDBfZGVmY29uZmlnOjExOkNPTkZJR19DUFVTRVRTPXlcXG5hcmNoL3h0ZW5zYS9jb25maWdzL3NtcF9seDIwMF9kZWZjb25maWctMTItQ09ORklHX0NHUk9VUF9DUFVBQ0NUPXlcXG4tLVxcbmluY2x1ZGUvbGludXgvY2dyb3VwX3N1YnN5cy5oLTExLVxcbmluY2x1ZGUvbGludXgvY2dyb3VwX3N1YnN5cy5oOjEyOiNpZiBJU19FTkFCTEVEKENPTkZJR19DUFVTRVRTKVxcbmluY2x1ZGUvbGludXgvY2dyb3VwX3N1YnN5cy5oLTEzLVNVQlNZUyhjcHVzZXQpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oPTIxPWV4dGVybiBib29sIGxvY2tkZXBfaXNfY3B1c2V0X2hlbGQodm9pZCk7XFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaC0yMi1cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oOjIzOiNpZmRlZiBDT05GSUdfQ1BVU0VUU1xcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMjQtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oPTEwMj1leHRlcm4gaW50IGNwdXNldF9tZW1zX2FsbG93ZWRfaW50ZXJzZWN0cyhjb25zdCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzazEsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTEwNC1cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oOjEwNTojaWZkZWYgQ09ORklHX0NQVVNFVFNfVjFcXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTEwNi0jZGVmaW5lIGNwdXNldF9tZW1vcnlfcHJlc3N1cmVfYnVtcCgpIFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg9MTc5PWV4dGVybiB2b2lkIGNwdXNldF9ub2Rlc19hbGxvd2VkKHN0cnVjdCBjZ3JvdXAgKmNncm91cCwgbm9kZW1hc2tfdCAqbWFzayk7XFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaDoxODA6I2Vsc2UgLyogIUNPTkZJR19DUFVTRVRTICovXFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaC0xODEtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oPTMwMj1zdGF0aWMgaW5saW5lIHZvaWQgY3B1c2V0X25vZGVzX2FsbG93ZWQoc3RydWN0IGNncm91cCAqY2dyb3VwLCBub2RlbWFza190ICptYXNrKVxcbi0tXFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaC0zMDUtfVxcbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg6MzA2OiNlbmRpZiAvKiAhQ09ORklHX0NQVVNFVFMgKi9cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTMwNy1cXG4tLVxcbmluY2x1ZGUvbGludXgvc2NoZWQuaD04MjY9c3RydWN0IHRhc2tfc3RydWN0IHtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2NoZWQuaC0xMzMxLSNlbmRpZlxcbmluY2x1ZGUvbGludXgvc2NoZWQuaDoxMzMyOiNpZmRlZiBDT05GSUdfQ1BVU0VUU1xcbmluY2x1ZGUvbGludXgvc2NoZWQuaC0xMzMzLVxcdC8qIFByb3RlY3RlZCBieSAtXFx1MDAzZWFsbG9jX2xvY2s6ICovXFxuLS1cXG5pbml0L2luaXRfdGFzay5jPTEwNT1zdHJ1Y3QgdGFza19zdHJ1Y3QgaW5pdF90YXNrIF9fYWxpZ25lZChMMV9DQUNIRV9CWVRFUykgPSB7XFxuLS1cXG5pbml0L2luaXRfdGFzay5jLTIwOC0jZW5kaWZcXG5pbml0L2luaXRfdGFzay5jOjIwOTojaWZkZWYgQ09ORklHX0NQVVNFVFNcXG5pbml0L2luaXRfdGFzay5jLTIxMC1cXHQubWVtc19hbGxvd2VkX3NlcSA9IFNFUUNOVF9TUElOTE9DS19aRVJPKGluaXRfdGFzay5tZW1zX2FsbG93ZWRfc2VxLFxcbi0tXFxua2VybmVsL2Nncm91cC9NYWtlZmlsZT02PW9iai0kKENPTkZJR19DR1JPVVBfUkRNQSkgKz0gcmRtYS5vXFxua2VybmVsL2Nncm91cC9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19DUFVTRVRTKSArPSBjcHVzZXQub1xcbmtlcm5lbC9jZ3JvdXAvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfQ1BVU0VUU19WMSkgKz0gY3B1c2V0LXYxLm9cXG5rZXJuZWwvY2dyb3VwL01ha2VmaWxlLTktb2JqLSQoQ09ORklHX0NHUk9VUF9NSVNDKSArPSBtaXNjLm9cXG4tLVxcbmtlcm5lbC9jZ3JvdXAvY2dyb3VwLXYxLmM9MTAzNz1zdGF0aWMgaW50IGNoZWNrX2Nncm91cGZzX29wdGlvbnMoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbi0tXFxua2VybmVsL2Nncm91cC9jZ3JvdXAtdjEuYy0xMDQ0LVxcbmtlcm5lbC9jZ3JvdXAvY2dyb3VwLXYxLmM6MTA0NTojaWZkZWYgQ09ORklHX0NQVVNFVFNcXG5rZXJuZWwvY2dyb3VwL2Nncm91cC12MS5jLTEwNDYtXFx0bWFzayA9IH4oKHUzMikxIFxcdTAwM2NcXHUwMDNjIGNwdXNldF9jZ3JwX2lkKTtcXG4tLVxcbmtlcm5lbC9jZ3JvdXAvY2dyb3VwLmM9MjM5Nj1zdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgY2dyb3VwMl9mc190eXBlID0ge1xcbi0tXFxua2VybmVsL2Nncm91cC9jZ3JvdXAuYy0yNDAzLVxcbmtlcm5lbC9jZ3JvdXAvY2dyb3VwLmM6MjQwNDojaWZkZWYgQ09ORklHX0NQVVNFVFNfVjFcXG5rZXJuZWwvY2dyb3VwL2Nncm91cC5jLTI0MDUtZW51bSBjcHVzZXRfcGFyYW0ge1xcbi0tXFxua2VybmVsL2Nncm91cC9jZ3JvdXAuYz02NDIzPWludCBfX2luaXQgY2dyb3VwX2luaXQodm9pZClcXG4tLVxcbmtlcm5lbC9jZ3JvdXAvY2dyb3VwLmMtNjUxNi1cXHRXQVJOX09OKCFwcm9jX2NyZWF0ZV9zaW5nbGUoXFxcImNncm91cHNcXFwiLCAwLCBOVUxMLCBwcm9jX2Nncm91cHN0YXRzX3Nob3cpKTtcXG5rZXJuZWwvY2dyb3VwL2Nncm91cC5jOjY1MTc6I2lmZGVmIENPTkZJR19DUFVTRVRTX1YxXFxua2VybmVsL2Nncm91cC9jZ3JvdXAuYy02NTE4LVxcdFdBUk5fT04ocmVnaXN0ZXJfZmlsZXN5c3RlbShcXHUwMDI2Y3B1c2V0X2ZzX3R5cGUpKTtcXG4tLVxcbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmg9NzU9c3RydWN0IGNwdXNldCB7XFxuLS1cXG5rZXJuZWwvY2dyb3VwL2NwdXNldC1pbnRlcm5hbC5oLTE4My1cXG5rZXJuZWwvY2dyb3VwL2NwdXNldC1pbnRlcm5hbC5oOjE4NDojaWZkZWYgQ09ORklHX0NQVVNFVFNfVjFcXG5rZXJuZWwvY2dyb3VwL2NwdXNldC1pbnRlcm5hbC5oLTE4NS1cXHRzdHJ1Y3QgZm1ldGVyIGZtZXRlcjtcXHRcXHQvKiBtZW1vcnlfcHJlc3N1cmUgZmlsdGVyICovXFxuLS1cXG5rZXJuZWwvY2dyb3VwL2NwdXNldC1pbnRlcm5hbC5oPTMxNj12b2lkIGNwdXNldF9mdWxsX3VubG9jayh2b2lkKTtcXG4tLVxcbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmgtMzIwLSAqL1xcbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmg6MzIxOiNpZmRlZiBDT05GSUdfQ1BVU0VUU19WMVxcbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmgtMzIyLWV4dGVybiBzdHJ1Y3QgY2Z0eXBlIGNwdXNldDFfZmlsZXNbXTtcXG4tLVxcbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmg9MzQ5PXN0YXRpYyBpbmxpbmUgaW50IGNwdXNldDFfZ2VuZXJhdGVfc2NoZWRfZG9tYWlucyhjcHVtYXNrX3Zhcl90ICoqZG9tYWlucyxcXG4tLVxcbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmgtMzUxLVxcbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmg6MzUyOiNlbmRpZiAvKiBDT05GSUdfQ1BVU0VUU19WMSAqL1xcbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmgtMzUzLVxcbi0tXFxua2VybmVsL2Nncm91cC9jcHVzZXQuYz0zOTA9c3RhdGljIGlubGluZSBib29sIGNwdXNldF92Mih2b2lkKVxcbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LmMtMzkxLXtcXG5rZXJuZWwvY2dyb3VwL2NwdXNldC5jOjM5MjpcXHRyZXR1cm4gIUlTX0VOQUJMRUQoQ09ORklHX0NQVVNFVFNfVjEpIHx8XFxua2VybmVsL2Nncm91cC9jcHVzZXQuYy0zOTMtXFx0XFx0Y2dyb3VwX3N1YnN5c19vbl9kZmwoY3B1c2V0X2NncnBfc3Vic3lzKTtcXG4tLVxcbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LmM9MzY2NT1zdHJ1Y3QgY2dyb3VwX3N1YnN5cyBjcHVzZXRfY2dycF9zdWJzeXMgPSB7XFxuLS1cXG5rZXJuZWwvY2dyb3VwL2NwdXNldC5jLTM2NzctXFx0LmZvcmtcXHRcXHQ9IGNwdXNldF9mb3JrLFxcbmtlcm5lbC9jZ3JvdXAvY3B1c2V0LmM6MzY3ODojaWZkZWYgQ09ORklHX0NQVVNFVFNfVjFcXG5rZXJuZWwvY2dyb3VwL2NwdXNldC5jLTM2NzktXFx0LmxlZ2FjeV9jZnR5cGVzXFx0PSBjcHVzZXQxX2ZpbGVzLFxcbi0tXFxua2VybmVsL2ZvcmsuYz0xOTk0PV9fbGF0ZW50X2VudHJvcHkgc3RydWN0IHRhc2tfc3RydWN0ICpjb3B5X3Byb2Nlc3MoXFxuLS1cXG5rZXJuZWwvZm9yay5jLTIyMzEtI2VuZGlmXFxua2VybmVsL2ZvcmsuYzoyMjMyOiNpZmRlZiBDT05GSUdfQ1BVU0VUU1xcbmtlcm5lbC9mb3JrLmMtMjIzMy1cXHRwLVxcdTAwM2VjcHVzZXRfbWVtX3NwcmVhZF9yb3RvciA9IE5VTUFfTk9fTk9ERTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9pc29sYXRpb24uYz0zNz1zdGF0aWMgYm9vbCBob3VzZWtlZXBpbmdfZGVyZWZlcmVuY2VfY2hlY2soZW51bSBoa190eXBlIHR5cGUpXFxuLS1cXG5rZXJuZWwvc2NoZWQvaXNvbGF0aW9uLmMtNDgtXFx0XFx0LyogQ3B1c2V0IGxvY2sgaGVsZCwgcGFydGl0aW9ucyBub3Qgd3JpdGFibGUgKi9cXG5rZXJuZWwvc2NoZWQvaXNvbGF0aW9uLmM6NDk6XFx0XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0NQVVNFVFMpIFxcdTAwMjZcXHUwMDI2IGxvY2tkZXBfaXNfY3B1c2V0X2hlbGQoKSlcXG5rZXJuZWwvc2NoZWQvaXNvbGF0aW9uLmMtNTAtXFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLmFhcmNoNjQ9MzA9Q09ORklHX0NPTVBBVD15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0OjMxOkNPTkZJR19DUFVTRVRTPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLmFhcmNoNjQtMzItQ09ORklHX0NSQVNIX0RVTVA9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5wcGM2NGVsPTIxPUNPTkZJR19DUFVfTElUVExFX0VORElBTj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5wcGM2NGVsOjIyOkNPTkZJR19DUFVTRVRTPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWwtMjMtQ09ORklHX0RFQlVHX0FUT01JQ19TTEVFUD15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnJpc2N2NjQ9MTc9Q09ORklHX0NHUk9VUF9TQ0hFRD15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0OjE4OkNPTkZJR19DUFVTRVRTPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnJpc2N2NjQtMTktQ09ORklHX0RFQlVHX0FUT01JQ19TTEVFUD15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnMzOTB4PTIxPUNPTkZJR19DSEVDS1BPSU5UX1JFU1RPUkU9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuczM5MHg6MjI6Q09ORklHX0NQVVNFVFM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuczM5MHgtMjMtQ09ORklHX0NSQVNIX0RVTVA9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQ9NDA9Q09ORklHX0NQVV9JRExFX0dPVl9MQURERVI9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0OjQxOkNPTkZJR19DUFVTRVRTPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLng4Nl82NC00Mi1DT05GSUdfQ1JZUFRPX0JMQUtFMkI9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2NvbmZpZy5jb21tb249NDA9Q09ORklHX0NQVV9JRExFX0dPVl9MQURERVI9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uOjQxOkNPTkZJR19DUFVTRVRTPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnLmNvbW1vbi00Mi1DT05GSUdfQ1JZUFRPX0JMQUtFMkI9eVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMDo0NzoxNi4yNTExOTA5MjhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU0Mjc3MTk5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi5cblxuKipVbmRlcnN0YW5kaW5nIGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZCoqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZywgXCJZZWFoLCBgQ09ORklHX0NQVVNFVFNgIGlzIGFic29sdXRlbHkgY3J1Y2lhbCBoZXJlLlwiIFdpdGhvdXQgaXQsIGBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWRgIGlzIGJhc2ljYWxseSBqdXN0IGFsaWFzZWQgdG8gYG5vZGVfc3RhdGVzW05fTUVNT1JZXWAsIHdoaWNoIGRvZXNuJ3QgZ2l2ZSBtZSB0aGUgZmluZS1ncmFpbmVkIGNvbnRyb2wgSSdtIGxvb2tpbmcgZm9yLiBJdCdzIGxpa2UgaGF2aW5nIGEgZmFuY3kgdG9vbCBhbmQgdGhlbiBub3QgdHVybmluZyBpdCBvbi4gV2hhdCdzIHRoZSBwb2ludD8gSSBuZWVkIGBDT05GSUdfQ1BVU0VUU2AgZW5hYmxlZCB0byBhY3R1YWxseSAqdXNlKiB0aGlzIHRoaW5nIHRvIHBhcnRpdGlvbiBtZW1vcnkgZWZmZWN0aXZlbHkuIFxuXG5IbW0sIHJpZ2h0LCBub3cgd2hlcmUgKmlzKiBgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkYCBhY3R1YWxseSBkZWZpbmVkPyBPaCwgeWVzLCBvZiBjb3Vyc2UsIGl0J3MgaGlkaW5nIGluIGBpbmNsdWRlL2xpbnV4L2NwdXNldC5oYC4gVGltZSB0byBkaXZlIGludG8gdGhlIHNvdXJjZSBhbmQgc2VlIGV4YWN0bHkgaG93IGl0J3MgaW1wbGVtZW50ZWQgYW5kIHdoYXQgaXQgZGVwZW5kcyBvbi4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGRlZmluaXRpb24gdG8gYmUgZW50aXJlbHkgc3VyZS4gR290dGEgYmUgdGhvcm91Z2guIExldCdzIHNlZSB3aGF0IHRoYXQgaGVhZGVyIGZpbGUgc2F5cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM3OTUsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMDo0NzoxOS43OTM5NjU4NTNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MzkzNzcwNTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvY3B1c2V0Lmg9ODM9ZXh0ZXJuIG5vZGVtYXNrX3QgY3B1c2V0X21lbXNfYWxsb3dlZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApO1xcbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg6ODQ6I2RlZmluZSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQgKGN1cnJlbnQtXFx1MDAzZW1lbXNfYWxsb3dlZClcXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTg1LXZvaWQgY3B1c2V0X2luaXRfY3VycmVudF9tZW1zX2FsbG93ZWQodm9pZCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oPTIxOT1zdGF0aWMgaW5saW5lIG5vZGVtYXNrX3QgY3B1c2V0X21lbXNfYWxsb3dlZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTIyMy1cXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oOjIyNDojZGVmaW5lIGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZCAobm9kZV9zdGF0ZXNbTl9NRU1PUlldKVxcbmluY2x1ZGUvbGludXgvY3B1c2V0LmgtMjI1LXN0YXRpYyBpbmxpbmUgdm9pZCBjcHVzZXRfaW5pdF9jdXJyZW50X21lbXNfYWxsb3dlZCh2b2lkKSB7fVxcbi0tXFxua2VybmVsL3NjaGVkL2ZhaXIuYz00MDc2PXN0YXRpYyB2b2lkIHRhc2tfbnVtYV93b3JrKHN0cnVjdCBjYWxsYmFja19oZWFkICp3b3JrKVxcbi0tXFxua2VybmVsL3NjaGVkL2ZhaXIuYy00MTA3LVxcdCAqL1xcbmtlcm5lbC9zY2hlZC9mYWlyLmM6NDEwODpcXHRpZiAoY3B1c2V0c19lbmFibGVkKCkgXFx1MDAyNlxcdTAwMjYgbm9kZXNfd2VpZ2h0KGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZCkgPT0gMSkge1xcbmtlcm5lbC9zY2hlZC9mYWlyLmM6NDEwOTpcXHRcXHR0cmFjZV9zY2hlZF9za2lwX2NwdXNldF9udW1hKGN1cnJlbnQsIFxcdTAwMjZjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQpO1xcbmtlcm5lbC9zY2hlZC9mYWlyLmMtNDExMC1cXHRcXHRyZXR1cm47XFxuLS1cXG5tbS9odWdldGxiLmM9MjI0NT1zdGF0aWMgaW50IGdhdGhlcl9zdXJwbHVzX3BhZ2VzKHN0cnVjdCBoc3RhdGUgKmgsIGxvbmcgZGVsdGEpXFxuLS1cXG5tbS9odWdldGxiLmMtMjI1Ny1cXHRpZiAobWJpbmRfbm9kZW1hc2spXFxubW0vaHVnZXRsYi5jOjIyNTg6XFx0XFx0bm9kZXNfYW5kKGFsbG9jX25vZGVtYXNrLCAqbWJpbmRfbm9kZW1hc2ssIGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZCk7XFxubW0vaHVnZXRsYi5jLTIyNTktXFx0ZWxzZVxcbm1tL2h1Z2V0bGIuYzoyMjYwOlxcdFxcdGFsbG9jX25vZGVtYXNrID0gY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkO1xcbm1tL2h1Z2V0bGIuYy0yMjYxLVxcbi0tXFxubW0vaHVnZXRsYi5jPTQ1MDA9c3RhdGljIHVuc2lnbmVkIGludCBhbGxvd2VkX21lbXNfbnIoc3RydWN0IGhzdGF0ZSAqaClcXG4tLVxcbm1tL2h1Z2V0bGIuYy00NTA4LVxcdG1iaW5kX25vZGVtYXNrID0gcG9saWN5X21iaW5kX25vZGVtYXNrKGdmcF9tYXNrKTtcXG5tbS9odWdldGxiLmM6NDUwOTpcXHRmb3JfZWFjaF9ub2RlX21hc2sobm9kZSwgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkKSB7XFxubW0vaHVnZXRsYi5jLTQ1MTAtXFx0XFx0aWYgKCFtYmluZF9ub2RlbWFzayB8fCBub2RlX2lzc2V0KG5vZGUsICptYmluZF9ub2RlbWFzaykpXFxuLS1cXG5tbS9odWdldGxiX2NtYS5jPTI4PXN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXFxuLS1cXG5tbS9odWdldGxiX2NtYS5jLTQzLVxcdFxcdGNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7XFxubW0vaHVnZXRsYl9jbWEuYzo0NDpcXHRcXHRsb2NhbF9ub2RlX21hc2sgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XFxubW0vaHVnZXRsYl9jbWEuYy00NS1cXHRcXHRubWFzayA9IFxcdTAwMjZsb2NhbF9ub2RlX21hc2s7XFxuLS1cXG5tbS9tZW1wb2xpY3kuYz00MDQ9c3RhdGljIGludCBtcG9sX3NldF9ub2RlbWFzayhzdHJ1Y3QgbWVtcG9saWN5ICpwb2wsXFxuLS1cXG5tbS9tZW1wb2xpY3kuYy00MTgtXFx0bm9kZXNfYW5kKG5zYy1cXHUwMDNlbWFzazEsXFxubW0vbWVtcG9saWN5LmM6NDE5OlxcdFxcdCAgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkLCBub2RlX3N0YXRlc1tOX01FTU9SWV0pO1xcbm1tL21lbXBvbGljeS5jLTQyMC1cXG4tLVxcbm1tL21lbXBvbGljeS5jLTQzMC1cXHRlbHNlXFxubW0vbWVtcG9saWN5LmM6NDMxOlxcdFxcdHBvbC1cXHUwMDNldy5jcHVzZXRfbWVtc19hbGxvd2VkID0gY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkO1xcbm1tL21lbXBvbGljeS5jLTQzMi1cXG4tLVxcbm1tL21lbXBvbGljeS5jPTExNDc9c3RhdGljIGxvbmcgZG9fZ2V0X21lbXBvbGljeShpbnQgKnBvbGljeSwgbm9kZW1hc2tfdCAqbm1hc2ssXFxuLS1cXG5tbS9tZW1wb2xpY3kuYy0xMTYzLVxcdFxcdHRhc2tfbG9jayhjdXJyZW50KTtcXG5tbS9tZW1wb2xpY3kuYzoxMTY0OlxcdFxcdCpubWFzayAgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XFxubW0vbWVtcG9saWN5LmMtMTE2NS1cXHRcXHR0YXNrX3VubG9jayhjdXJyZW50KTtcXG4tLVxcbm1tL29vbV9raWxsLmM9MjQ5PXN0YXRpYyBlbnVtIG9vbV9jb25zdHJhaW50IGNvbnN0cmFpbmVkX2FsbG9jKHN0cnVjdCBvb21fY29udHJvbCAqb2MpXFxuLS1cXG5tbS9vb21fa2lsbC5jLTI5OC1cXHRcXHRvYy1cXHUwMDNldG90YWxwYWdlcyA9IHRvdGFsX3N3YXBfcGFnZXM7XFxubW0vb29tX2tpbGwuYzoyOTk6XFx0XFx0Zm9yX2VhY2hfbm9kZV9tYXNrKG5pZCwgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkKVxcbm1tL29vbV9raWxsLmMtMzAwLVxcdFxcdFxcdG9jLVxcdTAwM2V0b3RhbHBhZ2VzICs9IG5vZGVfcHJlc2VudF9wYWdlcyhuaWQpO1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTQ3MjU9X19hbGxvY19wYWdlc19zbG93cGF0aChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTQ4MDYtXFx0XFx0XFx0XFx0XFx0YWMtXFx1MDAzZWhpZ2hlc3Rfem9uZWlkeCxcXG5tbS9wYWdlX2FsbG9jLmM6NDgwNzpcXHRcXHRcXHRcXHRcXHRcXHUwMDI2Y3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkKTtcXG5tbS9wYWdlX2FsbG9jLmMtNDgwOC1cXHRcXHRpZiAoIXpvbmVsaXN0X3pvbmUoeikpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9NTAyNj1zdGF0aWMgaW5saW5lIGJvb2wgcHJlcGFyZV9hbGxvY19wYWdlcyhnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTUwNDItXFx0XFx0aWYgKGluX3Rhc2soKSBcXHUwMDI2XFx1MDAyNiAhYWMtXFx1MDAzZW5vZGVtYXNrKVxcbm1tL3BhZ2VfYWxsb2MuYzo1MDQzOlxcdFxcdFxcdGFjLVxcdTAwM2Vub2RlbWFzayA9IFxcdTAwMjZjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XFxubW0vcGFnZV9hbGxvYy5jLTUwNDQtXFx0XFx0ZWxzZVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTUyNjg9c3RydWN0IHBhZ2UgKl9fYWxsb2NfZnJvemVuX3BhZ2VzX25vcHJvZihnZnBfdCBnZnAsIHVuc2lnbmVkIGludCBvcmRlcixcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy01MzEyLVxcdCAqIFJlc3RvcmUgdGhlIG9yaWdpbmFsIG5vZGVtYXNrIGlmIGl0IHdhcyBwb3RlbnRpYWxseSByZXBsYWNlZCB3aXRoXFxubW0vcGFnZV9hbGxvYy5jOjUzMTM6XFx0ICogXFx1MDAyNmNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZCB0byBvcHRpbWl6ZSB0aGUgZmFzdC1wYXRoIGF0dGVtcHQuXFxubW0vcGFnZV9hbGxvYy5jLTUzMTQtXFx0ICovXFxuLS1cXG5tbS9zaG93X21lbS5jPTExOT1zdGF0aWMgYm9vbCBzaG93X21lbV9ub2RlX3NraXAodW5zaWduZWQgaW50IGZsYWdzLCBpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzaylcXG4tLVxcbm1tL3Nob3dfbWVtLmMtMTI5LVxcdGlmICghbm9kZW1hc2spXFxubW0vc2hvd19tZW0uYzoxMzA6XFx0XFx0bm9kZW1hc2sgPSBcXHUwMDI2Y3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkO1xcbm1tL3Nob3dfbWVtLmMtMTMxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMDo0NzoyMS42MzMzNDg2MVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzY2Mjk3MzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuXG5cbioqRGV0ZXJtaW5pbmcgdGhlIERlcGVuZGVuY2llcyBvZiBgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkYCoqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoYXQncyByZXF1aXJlZCBmb3IgYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAgdG8gYmVoYXZlIGFzIGV4cGVjdGVkLCBzcGVjaWZpY2FsbHksIGZvciBpdCB0byByZXNvbHZlIHRvIGBjdXJyZW50LVx1MDAzZW1lbXNfYWxsb3dlZGAuIFRoYXQgbWVhbnMgYENPTkZJR19DUFVTRVRTYCBpcyBhIGRlZmluaXRlIHJlcXVpcmVtZW50LiBXaXRob3V0IGl0LCB0aGUgZnVuY3Rpb24gcmV2ZXJ0cyB0byB1c2luZyBgbm9kZV9zdGF0ZXNbTl9NRU1PUlldYCwgd2hpY2ggaXNuJ3QgdGhlIGludGVuZGVkIGJlaGF2aW9yLiBTbywgYENPTkZJR19DUFVTRVRTYCBpcyB0aGUgc3RhcnRpbmcgcG9pbnQuXG5cbkJ1dCBob2xkIG9uLCB0aGVyZSdzIG1vcmUgdG8gY29uc2lkZXIgaGVyZS4gSSBhbHNvIHNlZW0gdG8gcmVjYWxsIHRoYXQgYm90aCBgQ09ORklHX0hVR0VUTEJGU2AgYW5kIGBDT05GSUdfQ01BYCBoYXZlIHNvbWUgY29ubmVjdGlvbiB0byB0aGlzIGFyZWEuIExldCBtZSBwYXVzZSBhbmQgZGVsdmUgZGVlcGVyIGludG8gdGhlIGRlcGVuZGVuY3kgdHJlZSBvZiBgQ09ORklHX0NNQWAuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhIGNydWNpYWwgbGluayBpbiB0aGlzIGNoYWluLiBMZXQgbWUgc2VlIHdoZXJlIHRoYXQgdGFrZXMgbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1Nzk1LCJPdXRwdXRUb2tlbnMiOjE2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDc6MjQuOTk5NjUwODdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NDQyNDgwNjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENNQVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvZG1hL0tjb25maWc9MTczPWNvbmZpZyBETUFfTlVNQV9DTUFcXG4tLVxcbmtlcm5lbC9kbWEvS2NvbmZpZy0xODUtXFxua2VybmVsL2RtYS9LY29uZmlnOjE4Njpjb25maWcgQ01BX1NJWkVfUEVSTlVNQVxcbmtlcm5lbC9kbWEvS2NvbmZpZy0xODctXFx0Ym9vbCBcXFwiRGVmYXVsdCBDTUEgYXJlYSBwZXIgTlVNQSBub2RlXFxcIlxcbi0tXFxua2VybmVsL2RtYS9LY29uZmlnPTE5Nj1jb21tZW50IFxcXCJEZWZhdWx0IGNvbnRpZ3VvdXMgbWVtb3J5IGFyZWEgc2l6ZTpcXFwiXFxua2VybmVsL2RtYS9LY29uZmlnLTE5Ny1cXG5rZXJuZWwvZG1hL0tjb25maWc6MTk4OmNvbmZpZyBDTUFfU0laRV9NQllURVNcXG5rZXJuZWwvZG1hL0tjb25maWctMTk5LVxcdGludCBcXFwiU2l6ZSBpbiBNZWdhIEJ5dGVzXFxcIlxcbi0tXFxua2VybmVsL2RtYS9LY29uZmlnLTIwOC1cXG5rZXJuZWwvZG1hL0tjb25maWc6MjA5OmNvbmZpZyBDTUFfU0laRV9QRVJDRU5UQUdFXFxua2VybmVsL2RtYS9LY29uZmlnLTIxMC1cXHRpbnQgXFxcIlBlcmNlbnRhZ2Ugb2YgdG90YWwgbWVtb3J5XFxcIlxcbi0tXFxua2VybmVsL2RtYS9LY29uZmlnPTIyMD1jaG9pY2VcXG4tLVxcbmtlcm5lbC9kbWEvS2NvbmZpZy0yMjMtXFxua2VybmVsL2RtYS9LY29uZmlnOjIyNDpjb25maWcgQ01BX1NJWkVfU0VMX01CWVRFU1xcbmtlcm5lbC9kbWEvS2NvbmZpZy0yMjUtXFx0Ym9vbCBcXFwiVXNlIG1lZ2EgYnl0ZXMgdmFsdWUgb25seVxcXCJcXG5rZXJuZWwvZG1hL0tjb25maWctMjI2LVxcbmtlcm5lbC9kbWEvS2NvbmZpZzoyMjc6Y29uZmlnIENNQV9TSVpFX1NFTF9QRVJDRU5UQUdFXFxua2VybmVsL2RtYS9LY29uZmlnLTIyOC1cXHRib29sIFxcXCJVc2UgcGVyY2VudGFnZSB2YWx1ZSBvbmx5XFxcIlxcbmtlcm5lbC9kbWEvS2NvbmZpZy0yMjktXFxua2VybmVsL2RtYS9LY29uZmlnOjIzMDpjb25maWcgQ01BX1NJWkVfU0VMX01JTlxcbmtlcm5lbC9kbWEvS2NvbmZpZy0yMzEtXFx0Ym9vbCBcXFwiVXNlIGxvd2VyIHZhbHVlIChtaW5pbXVtKVxcXCJcXG5rZXJuZWwvZG1hL0tjb25maWctMjMyLVxcbmtlcm5lbC9kbWEvS2NvbmZpZzoyMzM6Y29uZmlnIENNQV9TSVpFX1NFTF9NQVhcXG5rZXJuZWwvZG1hL0tjb25maWctMjM0LVxcdGJvb2wgXFxcIlVzZSBoaWdoZXIgdmFsdWUgKG1heGltdW0pXFxcIlxcbi0tXFxua2VybmVsL2RtYS9LY29uZmlnPTIzNj1lbmRjaG9pY2VcXG5rZXJuZWwvZG1hL0tjb25maWctMjM3LVxcbmtlcm5lbC9kbWEvS2NvbmZpZzoyMzg6Y29uZmlnIENNQV9BTElHTk1FTlRcXG5rZXJuZWwvZG1hL0tjb25maWctMjM5LVxcdGludCBcXFwiTWF4aW11bSBQQUdFX1NJWkUgb3JkZXIgb2YgYWxpZ25tZW50IGZvciBjb250aWd1b3VzIGJ1ZmZlcnNcXFwiXFxuLS1cXG5tbS9LY29uZmlnPTEwNjQ9Y29uZmlnIEhBVkVfU0VUVVBfUEVSX0NQVV9BUkVBXFxuLS1cXG5tbS9LY29uZmlnLTEwNjYtXFxubW0vS2NvbmZpZzoxMDY3OmNvbmZpZyBDTUFcXG5tbS9LY29uZmlnLTEwNjgtXFx0Ym9vbCBcXFwiQ29udGlndW91cyBNZW1vcnkgQWxsb2NhdG9yXFxcIlxcbi0tXFxubW0vS2NvbmZpZy0xMDgxLVxcbm1tL0tjb25maWc6MTA4Mjpjb25maWcgQ01BX0RFQlVHRlNcXG5tbS9LY29uZmlnLTEwODMtXFx0Ym9vbCBcXFwiQ01BIGRlYnVnZnMgaW50ZXJmYWNlXFxcIlxcbi0tXFxubW0vS2NvbmZpZy0xMDg3LVxcbm1tL0tjb25maWc6MTA4ODpjb25maWcgQ01BX1NZU0ZTXFxubW0vS2NvbmZpZy0xMDg5LVxcdGJvb2wgXFxcIkNNQSBpbmZvcm1hdGlvbiB0aHJvdWdoIHN5c2ZzIGludGVyZmFjZVxcXCJcXG4tLVxcbm1tL0tjb25maWctMTA5NC1cXG5tbS9LY29uZmlnOjEwOTU6Y29uZmlnIENNQV9BUkVBU1xcbm1tL0tjb25maWctMTA5Ni1cXHRpbnQgXFxcIk1heGltdW0gY291bnQgb2YgdGhlIENNQSBhcmVhc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDc6MjYuODQzOTA1Mzg2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NDkwMTMxMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgTWVtb3J5IE1hbmFnZW1lbnQgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgc28gYENPTkZJR19DTUFgLCB0aGF0J3MgY2xlYXJseSBkZWZpbmVkIGluIGBtbS9LY29uZmlnYC4gR29vZCwgdGhhdCdzIHdoZXJlIEkgZXhwZWN0ZWQgdG8gZmluZCBpdC4gTm93LCBnaXZlbiBteSBjdXJyZW50IGZvY3VzLCBJIHNob3VsZCBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzLiBMZXQncyBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBgQ09ORklHX0hVR0VUTEJGU2AuIEkgd2FudCB0byBzZWUgaWYgZW5hYmxpbmcgb25lIGltcGFjdHMgdGhlIG90aGVyLCBvciBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBpbnRlcmFjdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBHb3R0YSB0cmFjayB0aGVzZSBkZXBlbmRlbmNpZXMgY2xvc2VseS4gTGV0J3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgdGVsbHMgdXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2ODgzLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDc6MjkuNjkyOTIxMDQyWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODU5MzE4NTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBIVUdFVExCRlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvS2NvbmZpZz0yNDc9Y29uZmlnIEFSQ0hfU1VQUE9SVFNfSFVHRVRMQkZTXFxuLS1cXG5mcy9LY29uZmlnLTI0OS1cXG5mcy9LY29uZmlnOjI1MDptZW51Y29uZmlnIEhVR0VUTEJGU1xcbmZzL0tjb25maWctMjUxLVxcdGJvb2wgXFxcIkh1Z2VUTEIgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDc6MzEuNTUyMjQ4MDY3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MTkxMDE5MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyBLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQgbWUgc2VlLi4uIEknbSBsb29raW5nIGF0IGEgcGFydGljdWxhciBzdWJzeXN0ZW0gb3IgZmVhdHVyZSB3aXRoaW4gdGhlIGtlcm5lbCwgYW5kIGl0IHNlZW1zIHByZXR0eSBjbGVhciB0aGF0IGBDT05GSUdfSFVHRVRMQkZTYCBpcyBhIHByZXJlcXVpc2l0ZS4gVGhhdCdzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCdzIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBjb25maWcuXG5cbkhtbS4uLiBidXQgaG9sZCBvbiBhIHNlY29uZC4gSSdtIGFsc28gZ2xhbmNpbmcgYXQgdGhlIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgb2YgdGhlIG1vZHVsZSwgYW5kIHNvbWV0aGluZyB0ZWxscyBtZSBJIG1pZ2h0IGFsc28gbmVlZCB0byBjb25zaWRlciBgQ09ORklHX0hVR0VUTEJfUEFHRWAsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhhdCBgbW0vaHVnZXRsYi5jYCBpcyBpbnZvbHZlZC4gSSBrbm93IHRoYXQgZmlsZSBoYW5kbGVzIEh1Z2VUTEItc3BlY2lmaWMgbWVtb3J5IG1hbmFnZW1lbnQuIFNvIHdoaWxlIGBDT05GSUdfSFVHRVRMQkZTYCBzZXRzIHVwIHRoZSBmaWxlc3lzdGVtLCBpdCBsb29rcyBsaWtlIGBDT05GSUdfSFVHRVRMQl9QQUdFYCBtaWdodCBiZSBhIG1vcmUgZmluZS1ncmFpbmVkIGNvbmZpZ3VyYXRpb24gY2hvaWNlIHdoaWNoIGhlbHBzIGRlZmluZXMgaG93IHRoZSBwYWdlcyB3aWxsIGJlIGhhbmRsZWQsIHdoaWNoIEkgbWlnaHQgbmVlZCB0byBleHBsaWNpdGx5IHNlbGVjdCBpZiBJIHdhbnQgdG8gbWF4aW1pemUgcGVyZm9ybWFuY2UuIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBkb2N1bWVudGF0aW9uIGZvciBib3RoIHRvIGJlIGNlcnRhaW4uIEkgbmVlZCB0byB0aGluayB0aHJvdWdoIGhvdyB0aGVzZSByZWxhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MTQ1LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDc6MzUuMDcxMzUyOTYzWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODk0MDI1MDczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBIVUdFVExCX1BBR0VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zaC9tbS9LY29uZmlnPTE1OD1jaG9pY2VcXG4tLVxcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNjMtXFxuYXJjaC9zaC9tbS9LY29uZmlnOjE2NDpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfNjRLXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE2NS1cXHRib29sIFxcXCI2NGtCXFxcIlxcbi0tXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE2Ny1cXG5hcmNoL3NoL21tL0tjb25maWc6MTY4OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV8yNTZLXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE2OS1cXHRib29sIFxcXCIyNTZrQlxcXCJcXG4tLVxcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzEtXFxuYXJjaC9zaC9tbS9LY29uZmlnOjE3Mjpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfMU1CXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE3My1cXHRib29sIFxcXCIxTUJcXFwiXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE3NC1cXG5hcmNoL3NoL21tL0tjb25maWc6MTc1OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV80TUJcXG5hcmNoL3NoL21tL0tjb25maWctMTc2LVxcdGJvb2wgXFxcIjRNQlxcXCJcXG4tLVxcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzgtXFxuYXJjaC9zaC9tbS9LY29uZmlnOjE3OTpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfNjRNQlxcbmFyY2gvc2gvbW0vS2NvbmZpZy0xODAtXFx0Ym9vbCBcXFwiNjRNQlxcXCJcXG4tLVxcbmZzL0tjb25maWc9MjYyPWlmIEhVR0VUTEJGU1xcbmZzL0tjb25maWc6MjYzOmNvbmZpZyBIVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUF9ERUZBVUxUX09OXFxuZnMvS2NvbmZpZy0yNjQtXFx0Ym9vbCBcXFwiSHVnZVRMQiBWbWVtbWFwIE9wdGltaXphdGlvbiAoSFZPKSBkZWZhdWx0cyB0byBvblxcXCJcXG4tLVxcbmZzL0tjb25maWc9MjcxPWVuZGlmICMgSFVHRVRMQkZTXFxuZnMvS2NvbmZpZy0yNzItXFxuZnMvS2NvbmZpZzoyNzM6Y29uZmlnIEhVR0VUTEJfUEFHRVxcbmZzL0tjb25maWctMjc0LVxcdGRlZl9ib29sIEhVR0VUTEJGU1xcbi0tXFxuZnMvS2NvbmZpZy0yNzYtXFxuZnMvS2NvbmZpZzoyNzc6Y29uZmlnIEhVR0VUTEJfUEFHRV9PUFRJTUlaRV9WTUVNTUFQXFxuZnMvS2NvbmZpZy0yNzgtXFx0ZGVmX2Jvb2wgSFVHRVRMQl9QQUdFXFxuLS1cXG5tbS9LY29uZmlnPTcwNj1jb25maWcgQVJDSF9FTkFCTEVfVEhQX01JR1JBVElPTlxcbi0tXFxubW0vS2NvbmZpZy03MDgtXFxubW0vS2NvbmZpZzo3MDk6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFX1ZBUklBQkxFXFxubW0vS2NvbmZpZy03MTAtXFx0ZGVmX2Jvb2wgblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMDo0NzozNi45NjUzODM3OThaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQxMzczNjgwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDdXJyZW50IEtlcm5lbCBDb25maWd1cmF0aW9uIFRob3VnaHRzKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGUga2VybmVsIGNvbmZpZyBvcHRpb25zLCBgQ09ORklHX0hVR0VUTEJfUEFHRWAgZGVmYXVsdHMgdG8gdXNpbmcgYEhVR0VUTEJGU2AuIFRoYXQgc2ltcGxpZmllcyB0aGluZ3MuIFdoaWNoIG1lYW5zIEkgc2hvdWxkIHJlYWxseSBqdXN0IGJlIGNvbmNlcm5lZCBhYm91dCBgQ09ORklHX0hVR0VUTEJGU2AgZm9yIG5vdy4gSGFuZyBvbiwgdGhvdWdoLi4uIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBUaGF0IGBhbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW9gIGZ1bmN0aW9u4oCmIGl0J3Mgb25seSBkZWZpbmVkIGlmIHdlIGhhdmUgYm90aCBgQ09ORklHX0FSQ0hfSEFTX0dJR0FOVElDX1BBR0VgICphbmQqIGBDT05GSUdfQ09OVElHX0FMTE9DYCBlbmFibGVkLiBSaWdodC4gT2theSwgbGV0IG1lIGdvIGJhY2sgYW5kIGdpdmUgYG1tL2h1Z2V0bGIuY2AgYW5vdGhlciBsb29rIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIGNydWNpYWwuIEdvdHRhIGdldCB0aGlzIHJpZ2h0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODA0MywiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ3OjQwLjM3OTEyMzU3N1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg3ODI0NzA4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfQVJDSF9IQVNfR0lHQU5USUNfUEFHRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2FzbS1nZW5lcmljL2h1Z2V0bGIuaD0xMjU9c3RhdGljIGlubGluZSBib29sIGdpZ2FudGljX3BhZ2VfcnVudGltZV9zdXBwb3J0ZWQodm9pZClcXG5pbmNsdWRlL2FzbS1nZW5lcmljL2h1Z2V0bGIuaC0xMjYte1xcbmluY2x1ZGUvYXNtLWdlbmVyaWMvaHVnZXRsYi5oOjEyNzpcXHRyZXR1cm4gSVNfRU5BQkxFRChDT05GSUdfQVJDSF9IQVNfR0lHQU5USUNfUEFHRSk7XFxuaW5jbHVkZS9hc20tZ2VuZXJpYy9odWdldGxiLmgtMTI4LX1cXG4tLVxcbm1tL2h1Z2V0bGIuYz0xMzIwPXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmRlcXVldWVfaHVnZXRsYl9mb2xpb192bWEoc3RydWN0IGhzdGF0ZSAqaCxcXG4tLVxcbm1tL2h1Z2V0bGIuYy0xMzU4LVxcbm1tL2h1Z2V0bGIuYzoxMzU5OiNpZiBkZWZpbmVkKENPTkZJR19BUkNIX0hBU19HSUdBTlRJQ19QQUdFKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19DT05USUdfQUxMT0MpXFxubW0vaHVnZXRsYi5jLTEzNjAtc3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfZ2lnYW50aWNfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXFxuLS1cXG5tbS9odWdldGxiLmMtMTM3NS19XFxubW0vaHVnZXRsYi5jOjEzNzY6I2Vsc2UgLyogIUNPTkZJR19BUkNIX0hBU19HSUdBTlRJQ19QQUdFIHx8ICFDT05GSUdfQ09OVElHX0FMTE9DICovXFxubW0vaHVnZXRsYi5jLTEzNzctc3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfZ2lnYW50aWNfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssIGludCBuaWQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ3OjQyLjI1NzM3NjQ5MloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjMzMTY3MDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBkZWVwIGluIHRoZSB3ZWVkcyBvZiBrZXJuZWwgY29uZmlndXJhdGlvbjpcblxuKipOYXZpZ2F0aW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGl0IGxvb2tzIGxpa2UgSSBuZWVkIHRvIGVuYWJsZSBgQ09ORklHX0FSQ0hfSEFTX0dJR0FOVElDX1BBR0VgIHRvIGdldCB0aGlzIHRoaW5nIHdvcmtpbmcuIEJ1dCBob2xkIG9uLCB0aGUgYnVpbGQgcHJvY2VzcyBpcyBmbGFnZ2luZyBzb21ldGhpbmcgZWxzZSDigJMgYENPTkZJR19DT05USUdfQUxMT0NgLiBMZXQgbWUganVzdCBwYXVzZSBoZXJlLiBCZWZvcmUgSSBjb21taXQgdG8gYW55dGhpbmcsIEkgc2hvdWxkIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3by4gSSBuZWVkIHRvIGRpZyBpbnRvIGBDT05GSUdfQ09OVElHX0FMTE9DYC4gVGhpcyBpcyB3aGVyZSBJIHN0YXJ0IGludmVzdGlnYXRpbmcgdGhlIGRlcGVuZGVuY2llcyBhbmQgaW50ZXJhY3Rpb25zIGJldHdlZW4gdGhlc2UgY29uZmlndXJhdGlvbnMuIEl04oCZcyBiZXN0IHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBiZWZvcmUgSSBnbyBhbmQgYnJlYWsgc29tZXRoaW5nIGVsc2UhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NjQ5LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDc6NDUuNDkwNTQ3NTY3WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODMyMTc2NTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDT05USUdfQUxMT0NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz03MDk9Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFX1ZBUklBQkxFXFxuLS1cXG5tbS9LY29uZmlnLTcxOC1cXG5tbS9LY29uZmlnOjcxOTpjb25maWcgQ09OVElHX0FMTE9DXFxubW0vS2NvbmZpZy03MjAtXFx0ZGVmX2Jvb2wgKE1FTU9SWV9JU09MQVRJT04gXFx1MDAyNlxcdTAwMjYgQ09NUEFDVElPTikgfHwgQ01BXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ3OjQ3LjMyMjcyOTMyM1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTAyNzY2NDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBNZW1vcnkgQWxsb2NhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gU28sIGBDT05USUdfQUxMT0NgIGJ5IGRlZmF1bHQgaXMgc2V0IHVwIHRvIHVzZSBgQ01BYCDigJMgdGhhdCdzIHRoZSBDb250aW51b3VzIE1lbW9yeSBBbGxvY2F0b3Ig4oCTIGFuZCB0aGF0IG1lYW5zIGlmIGBDT05GSUdfQ01BYCBpcyBlbmFibGVkLCB0aGVuIHdlJ3JlIGdvb2QgdG8gZ28uIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZC4gQnV0LCBob2xkIG9uIGEgc2VjLi4uIFdoYXQgYWJvdXQgdGhhdCBvdGhlciBwYXJhbWV0ZXIgYENPTkZJR19BUkNIX0hBU19HSUdBTlRJQ19QQUdFYD8gVGhhdCBkZWZpbml0ZWx5IHBsYXlzIGEgcm9sZSBpbiBob3cgbWVtb3J5IGlzIGhhbmRsZWQsIHNwZWNpZmljYWxseSB3aXRoIGxhcmdlIHBhZ2VzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aG9zZSBzZXR0aW5ncy4gSXQncyBpbXBvcnRhbnQgdG8gY29uc2lkZXIgaWYgZW5hYmxpbmcgYENNQWAgaGFzIGFueSBpbXBsaWNhdGlvbiBpbiB0aGUgdXNlLCBvciBwZXJmb3JtYW5jZSwgb2YgbGFyZ2UgcGFnZXMuIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgYW5kIGltcGxpY2F0aW9ucyBvZiB0aG9zZSB0d28gcGFyYW1ldGVycy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg5NDcsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMDo0Nzo1MC40MjU0OTgyNDJaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5ODQxMTU1MDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFSQ0hfSEFTX0dJR0FOVElDX1BBR0VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvS2NvbmZpZz0yODM9Y29uZmlnIEhVR0VUTEJfUE1EX1BBR0VfVEFCTEVfU0hBUklOR1xcbi0tXFxuZnMvS2NvbmZpZy0yODYtXFxuZnMvS2NvbmZpZzoyODc6Y29uZmlnIEFSQ0hfSEFTX0dJR0FOVElDX1BBR0VcXG5mcy9LY29uZmlnLTI4OC1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ3OjUyLjQwOTYxOTA5M1oiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTI1ODk0ODc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgQXJjaGl0ZWN0dXJhbCBEZXBlbmRlbmN5KipcblxuUmlnaHQsIHNvIHdlJ3ZlIGdvdCB0aGlzIGVsZW1lbnQsIGFuZCBteSBpbW1lZGlhdGUgY29uY2VybiBpcyBpdHMgZGVwZW5kZW5jeSBwcm9maWxlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aGljaCogYXJjaGl0ZWN0dXJlcyBhcmUgZXZlbiBib3RoZXJpbmcgdG8gdXNlIGl0LiBUaGlzIGlzbid0IGp1c3QgYWJvdXQgZ2VuZXJhbCBhd2FyZW5lc3MsIEkgbmVlZCB0byBrbm93IHRoZSBkaXJlY3QgY29ubmVjdGlvbnMuIE5vIHBvaW50IGluIG9wdGltaXppbmcgaXQsIGltcHJvdmluZyBpdHMgaW50ZXJmYWNlLCBvciBldmVuIHdvcnJ5aW5nIGFib3V0IGl0cyBsaWZlY3ljbGUgaWYgaXQncyBub3QgYWN0dWFsbHkgKnNlbGVjdGVkKiBhbmQgaW5jb3Jwb3JhdGVkIGludG8gYW55IG1lYW5pbmdmdWwgYXJjaGl0ZWN0dXJhbCBwYXR0ZXJucy4gTGV04oCZcyBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIGFyY2hpdGVjdHVyZSBsYW5kc2NhcGUgYW5kIHRyYWNlIGl0cyB1c2FnZS4gVGltZSB0byBnZXQgc29tZSBhbnN3ZXJzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTI3NiwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ3OjU1LjMzNTUxNzExN1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg4NjA2MTY4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgQVJDSF9IQVNfR0lHQU5USUNfUEFHRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L0tjb25maWc9Mj1jb25maWcgQVJNNjRcXG4tLVxcbmFyY2gvYXJtNjQvS2NvbmZpZy0zMi1cXHRzZWxlY3QgQVJDSF9IQVNfR0NPVl9QUk9GSUxFX0FMTFxcbmFyY2gvYXJtNjQvS2NvbmZpZzozMzpcXHRzZWxlY3QgQVJDSF9IQVNfR0lHQU5USUNfUEFHRVxcbmFyY2gvYXJtNjQvS2NvbmZpZy0zNC1cXHRzZWxlY3QgQVJDSF9IQVNfS0NPVlxcbi0tXFxuYXJjaC9wb3dlcnBjL0tjb25maWc9MTE4PWNvbmZpZyBQUENcXG4tLVxcbmFyY2gvcG93ZXJwYy9LY29uZmlnLTEzOC1cXHRzZWxlY3QgQVJDSF9IQVNfR0NPVl9QUk9GSUxFX0FMTFxcbmFyY2gvcG93ZXJwYy9LY29uZmlnOjEzOTpcXHRzZWxlY3QgQVJDSF9IQVNfR0lHQU5USUNfUEFHRVxcdFxcdGlmIEFSQ0hfU1VQUE9SVFNfSFVHRVRMQkZTXFxuYXJjaC9wb3dlcnBjL0tjb25maWctMTQwLVxcdHNlbGVjdCBBUkNIX0hBU19LQ09WXFxuLS1cXG5hcmNoL3Jpc2N2L0tjb25maWc9MTM9Y29uZmlnIFJJU0NWXFxuLS1cXG5hcmNoL3Jpc2N2L0tjb25maWctMzUtXFx0c2VsZWN0IEFSQ0hfSEFTX0dDT1ZfUFJPRklMRV9BTExcXG5hcmNoL3Jpc2N2L0tjb25maWc6MzY6XFx0c2VsZWN0IEFSQ0hfSEFTX0dJR0FOVElDX1BBR0VcXG5hcmNoL3Jpc2N2L0tjb25maWctMzctXFx0c2VsZWN0IEFSQ0hfSEFTX0hXX1BURV9ZT1VOR1xcbi0tXFxuYXJjaC9zMzkwL0tjb25maWc9NzU9Y29uZmlnIFMzOTBcXG4tLVxcbmFyY2gvczM5MC9LY29uZmlnLTk3LVxcdHNlbGVjdCBBUkNIX0hBU19HQ09WX1BST0ZJTEVfQUxMXFxuYXJjaC9zMzkwL0tjb25maWc6OTg6XFx0c2VsZWN0IEFSQ0hfSEFTX0dJR0FOVElDX1BBR0VcXG5hcmNoL3MzOTAvS2NvbmZpZy05OS1cXHRzZWxlY3QgQVJDSF9IQVNfS0NPVlxcbi0tXFxuYXJjaC9zaC9LY29uZmlnPTI9Y29uZmlnIFNVUEVSSFxcbi0tXFxuYXJjaC9zaC9LY29uZmlnLTktXFx0c2VsZWN0IEFSQ0hfSEFTX0NVUlJFTlRfU1RBQ0tfUE9JTlRFUlxcbmFyY2gvc2gvS2NvbmZpZzoxMDpcXHRzZWxlY3QgQVJDSF9IQVNfR0lHQU5USUNfUEFHRVxcbmFyY2gvc2gvS2NvbmZpZy0xMS1cXHRzZWxlY3QgQVJDSF9IQVNfR0NPVl9QUk9GSUxFX0FMTFxcbi0tXFxuYXJjaC9zcGFyYy9LY29uZmlnPTcwPWNvbmZpZyBTUEFSQzY0XFxuLS1cXG5hcmNoL3NwYXJjL0tjb25maWctMTA3LVxcdHNlbGVjdCBQQ0lfRE9NQUlOUyBpZiBQQ0lcXG5hcmNoL3NwYXJjL0tjb25maWc6MTA4OlxcdHNlbGVjdCBBUkNIX0hBU19HSUdBTlRJQ19QQUdFXFxuYXJjaC9zcGFyYy9LY29uZmlnLTEwOS1cXHRzZWxlY3QgSEFWRV9TT0ZUSVJRX09OX09XTl9TVEFDS1xcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0yMz1jb25maWcgWDg2XzY0XFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTI2LVxcdCMgT3B0aW9ucyB0aGF0IGFyZSBpbmhlcmVudGx5IDY0LWJpdCBrZXJuZWwgb25seTpcXG5hcmNoL3g4Ni9LY29uZmlnOjI3OlxcdHNlbGVjdCBBUkNIX0hBU19HSUdBTlRJQ19QQUdFXFxuYXJjaC94ODYvS2NvbmZpZy0yOC1cXHRzZWxlY3QgQVJDSF9TVVBQT1JUU19NU0VBTF9TWVNURU1fTUFQUElOR1NcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDc6NTcuMjIxNTgzNTAyWiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4OTAwNzE4MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIENvZGUncyBDb25maWd1cmF0aW9uIGFuZCBLZXkgRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBmaWd1cmluZyBvdXQgdGhlIGNyaXRpY2FsIGNvbXBvbmVudHMuIEl0IGxvb2tzIGxpa2UgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmVzIGFyZSBwcmV0dHkgYnJvYWQgLSBgWDg2XzY0YCwgYEFSTTY0YCwgYFJJU0NWYCwgYFMzOTBgLCBgU1BBUkM2NGAsIGBTVVBFUkhgLCBhbmQgYFBQQ2AuIE5vIG5lZWQgdG8gc3BlY2lmeSB0aGVtLCB0aGUgY29kZSBoYW5kbGVzIGEgZ29vZCByYW5nZS5cblxuVGhlIGNvbmZpZ3MgSSBuZWVkIHRvIHBheSBhdHRlbnRpb24gdG8gYXJlIGBIVUdFVExCRlNgLCBgQ01BYCwgYW5kIGBDUFVTRVRTYC4gSSB0aGluayBJIHJlY2FsbCB0aGF0IGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIGlzIG9ubHkgY29tcGlsZWQgaWYgYm90aCBgQ09ORklHX0NNQWAgYW5kIGBDT05GSUdfSFVHRVRMQkZTYCBhcmUgc2V0LiBBbmQgYENQVVNFVFNgIGlzIGtleSwgYmVjYXVzZSBJJ2xsIG5lZWQgdG8gdXNlIGl0IHRvIHRlc3QgY3B1c2V0IGxvZ2ljLlxuXG5MZXQncyBzZWUgd2hhdCBmdW5jdGlvbnMgYXJlIG9mIGludGVyZXN0LiBJIG5lZWQgdG8gZm9jdXMgb246IGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIGFuZCB0aGVuIGBhbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW9gICh3aGljaCBpcyBtYXJrZWQgYXMgc3RhdGljLCBzbyBtaWdodCBiZSBpbmxpbmVkKS4gSG93ZXZlciwgdGhlIHJlYWxseSBpbXBvcnRhbnQgZnVuY3Rpb24gaXMgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2Agc2luY2UgaXQncyBnbG9iYWwuXG5cbkhvbGQgb24sIEkgZ290IHRoYXQgc2xpZ2h0bHkgd3JvbmcuIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIGlzbid0IHN0YXRpYy4gSXQncyBkZWZpbmVkIGluIGBtbS9odWdldGxiX2NtYS5jYCwgYW5kIGl0IGlzIG5vdCBleHBsaWNpdGx5IGV4cG9ydGVkLCBidXQgaXMgYSBnbG9iYWwgZnVuY3Rpb24uIFNvLCBJIG5lZWQgdG8gY2hlY2sgYG1tL2h1Z2V0bGJfY21hLmNgIHRvIHNlZSBob3cgaXQgd29ya3MgYW5kIHdoYXQgaXQgZG9lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAxMjQsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDg6MDMuMTExNjU4ODk4WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDQ4MjYzMTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9odWdldGxiLmM9MTM2MD1zdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcXG4tLVxcbm1tL2h1Z2V0bGIuYy0xMzY0LVxcbm1tL2h1Z2V0bGIuYzoxMzY1OlxcdGZvbGlvID0gaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKG9yZGVyLCBnZnBfbWFzaywgbmlkLCBub2RlbWFzayk7XFxubW0vaHVnZXRsYi5jLTEzNjYtXFx0aWYgKGZvbGlvKVxcbi0tXFxubW0vaHVnZXRsYl9jbWEuYz0yMj12b2lkIGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS9odWdldGxiX2NtYS5jLTI3LVxcbm1tL2h1Z2V0bGJfY21hLmM6Mjg6c3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcXG5tbS9odWdldGxiX2NtYS5jLTI5LVxcdFxcdGludCBuaWQsIG5vZGVtYXNrX3QgKm5vZGVtYXNrKVxcbi0tXFxubW0vaHVnZXRsYl9jbWEuaD02PXZvaWQgaHVnZXRsYl9jbWFfZnJlZV9mcm96ZW5fZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbyk7XFxubW0vaHVnZXRsYl9jbWEuaDo3OnN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXFxubW0vaHVnZXRsYl9jbWEuaC04LVxcdFxcdFxcdFxcdCAgICAgIGludCBuaWQsIG5vZGVtYXNrX3QgKm5vZGVtYXNrKTtcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmg9MTY9c3RhdGljIGlubGluZSB2b2lkIGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS9odWdldGxiX2NtYS5oLTE5LVxcbm1tL2h1Z2V0bGJfY21hLmg6MjA6c3RhdGljIGlubGluZSBzdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsXFxubW0vaHVnZXRsYl9jbWEuaC0yMS1cXHRcXHRnZnBfdCBnZnBfbWFzayxcXHRpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzaylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDg6MDUuMTU5OTMxNDc4WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMTAyODAwNzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipBbmFseXppbmcgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AgYW5kIGl0cyBDYWxsZXJzKipcblxuQWxyaWdodCwgc28gYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AgaXMgYSBnbG9iYWwgZnVuY3Rpb24sIGFuZCB0aGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIGl0J3MgYSBjcml0aWNhbCBwb2ludCB0byBpbnZlc3RpZ2F0ZS4gR2l2ZW4gdGhhdCBpdCdzIGdsb2JhbCwgdW5kZXJzdGFuZGluZyBpdHMgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIGlzIHBhcmFtb3VudC4gSSBzaG91bGQgZGVmaW5pdGVseSBmb2N1cyBteSBhbmFseXNpcyBvbiB0aGF0IGZ1bmN0aW9uLiBTaW5jZSBJIGhhdmUgYSBnbG9iYWwgZnVuY3Rpb24gSSBzaG91bGQgY2hlY2sgaXRzIGNhbGxlcnMuIEJhc2VkIG9uIHdoYXQgSSBzZWUgaGVyZSwgdGhlIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdCBhcmUgYG9ubHlfYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2Agb3IgdGhlIHZlcnkgc2ltaWxhciBzb3VuZGluZyBgYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2AuIExldCBtZSBzdGFydCBieSBsb29raW5nIGludG8gYGFsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW9gIGFuZCBzZWUgd2hhdCB0aGF0IGNhbiB0ZWxsIG1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTI3OSwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ4OjA5LjQ3MDIxMzk2MVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg2MTMyODg1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2h1Z2V0bGIuYz0xNzkxPXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2J1ZGR5X2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxcbi0tXFxubW0vaHVnZXRsYi5jLTE4MzUtXFxubW0vaHVnZXRsYi5jOjE4MzY6c3RhdGljIHN0cnVjdCBmb2xpbyAqb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXFxubW0vaHVnZXRsYi5jLTE4MzctXFx0XFx0Z2ZwX3QgZ2ZwX21hc2ssIGludCBuaWQsIG5vZGVtYXNrX3QgKm5tYXNrLFxcbi0tXFxubW0vaHVnZXRsYi5jLTE4NjItICovXFxubW0vaHVnZXRsYi5jOjE4NjM6c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxcbm1tL2h1Z2V0bGIuYy0xODY0LVxcdFxcdGdmcF90IGdmcF9tYXNrLCBpbnQgbmlkLCBub2RlbWFza190ICpubWFzaylcXG4tLVxcbm1tL2h1Z2V0bGIuYy0xODY3LVxcbm1tL2h1Z2V0bGIuYzoxODY4OlxcdGZvbGlvID0gb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsIG5tYXNrLCBOVUxMKTtcXG5tbS9odWdldGxiLmMtMTg2OS1cXHRpZiAoZm9saW8pXFxuLS1cXG5tbS9odWdldGxiLmM9MTg5Nj1zdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19wb29sX2h1Z2VfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcXG4tLVxcbm1tL2h1Z2V0bGIuYy0xOTA2LVxcbm1tL2h1Z2V0bGIuYzoxOTA3OlxcdFxcdGZvbGlvID0gb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBub2RlLFxcbm1tL2h1Z2V0bGIuYy0xOTA4LVxcdFxcdFxcdFxcdFxcdG5vZGVzX2FsbG93ZWQsIG5vZGVfYWxsb2Nfbm9yZXRyeSk7XFxuLS1cXG5tbS9odWdldGxiLmM9MjA3Nj1zdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19zdXJwbHVzX2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcXG4tLVxcbm1tL2h1Z2V0bGIuYy0yMDg4LVxcbm1tL2h1Z2V0bGIuYzoyMDg5OlxcdGZvbGlvID0gYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhoLCBnZnBfbWFzaywgbmlkLCBubWFzayk7XFxubW0vaHVnZXRsYi5jLTIwOTAtXFx0aWYgKCFmb2xpbylcXG4tLVxcbm1tL2h1Z2V0bGIuYz0yMTI0PXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX21pZ3JhdGVfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLCBnZnBfdCBnZnBfbWFzayxcXG4tLVxcbm1tL2h1Z2V0bGIuYy0yMTMxLVxcbm1tL2h1Z2V0bGIuYzoyMTMyOlxcdGZvbGlvID0gYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhoLCBnZnBfbWFzaywgbmlkLCBubWFzayk7XFxubW0vaHVnZXRsYi5jLTIxMzMtXFx0aWYgKCFmb2xpbylcXG4tLVxcbm1tL2h1Z2V0bGIuYz0yNjQxPXN0YXRpYyBpbnQgYWxsb2NfYW5kX2Rpc3NvbHZlX2h1Z2V0bGJfZm9saW8oc3RydWN0IGZvbGlvICpvbGRfZm9saW8sXFxuLS1cXG5tbS9odWdldGxiLmMtMjY4Ni1cXHRcXHRcXHRnZnBfbWFzayA9IGh0bGJfYWxsb2NfbWFzayhoKSB8IF9fR0ZQX1RISVNOT0RFO1xcbm1tL2h1Z2V0bGIuYzoyNjg3OlxcdFxcdFxcdG5ld19mb2xpbyA9IGFsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oaCwgZ2ZwX21hc2ssXFxubW0vaHVnZXRsYi5jLTI2ODgtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgbmlkLCBOVUxMKTtcXG4tLVxcbm1tL2h1Z2V0bGIuYz0zMzcyPXN0YXRpYyB2b2lkIF9faW5pdCBodWdldGxiX2hzdGF0ZV9hbGxvY19wYWdlc19vbmVub2RlKHN0cnVjdCBoc3RhdGUgKmgsIGludCBuaWQpXFxuLS1cXG5tbS9odWdldGxiLmMtMzM4NS1cXG5tbS9odWdldGxiLmM6MzM4NjpcXHRcXHRcXHRmb2xpbyA9IG9ubHlfYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhoLCBnZnBfbWFzaywgbmlkLFxcbm1tL2h1Z2V0bGIuYy0zMzg3LVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZub2RlX3N0YXRlc1tOX01FTU9SWV0sIE5VTEwpO1xcbi0tXFxubW0vaHVnZXRsYi5jLTMzOTEtXFx0XFx0XFx0XFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmZvbGlvX2xpc3QpO1xcbm1tL2h1Z2V0bGIuYzozMzkyOlxcdFxcdFxcdFxcdGZvbGlvID0gb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsXFxubW0vaHVnZXRsYi5jLTMzOTMtXFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNm5vZGVfc3RhdGVzW05fTUVNT1JZXSwgTlVMTCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ4OjExLjMzMTU0ODU2NloiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NTUwNDQyNTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzIGZvciBIdWdlVExCIENNQSBNZW1vcnkgQWxsb2NhdGlvbioqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHBvdGVudGlhbCB0YXJnZXRzIGZvciBmdXp6aW5nIHdpdGhpbiB0aGUgSHVnZVRMQiBDTUEgbWVtb3J5IGFsbG9jYXRpb24gY29kZS4gSW5pdGlhbGx5LCBJIGNvbnNpZGVyZWQgYGFsbG9jX3Bvb2xfaHVnZV9mb2xpb2AsIGBhbGxvY19zdXJwbHVzX2h1Z2V0bGJfZm9saW9gLCBgYWxsb2NfbWlncmF0ZV9odWdldGxiX2ZvbGlvYCwgYW5kIGBhbGxvY19hbmRfZGlzc29sdmVfaHVnZXRsYl9mb2xpb2AgYXMgcHJvbWlzaW5nIGNhbmRpZGF0ZXMuIEJ1dCwgYWZ0ZXIgYSBjbG9zZXIgbG9vaywgaXQncyBjbGVhciB0aGF0IHRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgbW9kaWZpZXMgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AuIFRoYXQncyB0aGUga2V5IGZ1bmN0aW9uIHdlIG5lZWQgdG8gZm9jdXMgb24uIFNvLCB0aGF0J3MgZGVmaW5pdGVseSBnb2luZyBpbnRvIGBGb2N1c1N5bWJvbHNgLlxuXG5Ob3csIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJ3ZlIGdvdCBgQ09ORklHX0hVR0VUTEJGU2AsIGBDT05GSUdfQ01BYCwgYW5kIGBDT05GSUdfQ1BVU0VUU2AgaW4gbWluZC4gTGV0J3MganVzdCBjb25maXJtIHRoYXQgYENPTkZJR19IVUdFVExCRlNgIGFjdHVhbGx5IGVuYWJsZXMgdGhlIHJlbGV2YW50IGBtbS9odWdldGxiLmNgIGNvZGUuIE9rYXksIHRoZSBgbW0vTWFrZWZpbGVgIGNvbmZpcm1zIGl0OiBgb2JqLSQoQ09ORklHX0hVR0VUTEJGUykgKz0gaHVnZXRsYi5vIGh1Z2V0bGJfc3lzZnMubyBodWdldGxiX3N5c2N0bC5vYC4gQW5kLCBhcyBleHBlY3RlZCwgYG9iai0kKENPTkZJR19IVUdFVExCRlMpICs9IGh1Z2V0bGJfY21hLm9gIGlzIGFsc28gaW5jbHVkZWQgd2hlbiBgQ09ORklHX0NNQWAgaXMgZGVmaW5lZC5cblxuU28sIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgd2UgbmVlZCB0byBjb25zaWRlciBhcmU6XG5cbiogICBgSFVHRVRMQkZTYFxuKiAgIGBDTUFgXG4qICAgYENQVVNFVFNgXG5cbkFuZCB0aGUga2V5IGZvY3VzIHN5bWJvbCBpcyBkZWZpbml0ZWx5OlxuXG4qICAgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2BcblxuQWxyaWdodCwgbGV0J3MgY29uc2lkZXIgd2h5IHdlIGFyZSBmb2N1c2VkIG9uIHRoaXMgZnVuY3Rpb246IHRoZSBwYXRjaCBtb2RpZmllcyBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCB0byByZXNwZWN0IGNwdXNldCBtZW1vcnkgYWxsb3dlZCBub2RlcyB3aGVuIGBub2RlbWFza2AgaXMgTlVMTC4gVGhpcyBpcyBhIGNsZWFyLCBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IHRoZSBIdWdlVExCIENNQSBwb3J0aW9uLiBJdCB3aWxsIGRpcmVjdGx5IGFmZmVjdCBtZW1vcnkgYWxsb2NhdGlvbiBiZWhhdmlvci4gVGhlIGNvZGUgaXMgZGVmaW5pdGVseSByZWFjaGFibGUsIGFuZCB0aGF0IG1ha2VzIGl0IHdvcnRoIGZ1enppbmcuXG5cbkp1c3QgYSBxdWljayBzYW5pdHkgY2hlY2s6IGxldCdzIHZlcmlmeSB0aGF0IGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIGlzbid0IGEgc3RhdGljIGZ1bmN0aW9uLiBBIHF1aWNrIGxvb2sgYXQgaXRzIGRlZmluaXRpb24gaW4gYG1tL2h1Z2V0bGJfY21hLmNgOlxuXG5gYGBjXG5zdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxuXHRcdGludCBuaWQsIG5vZGVtYXNrX3QgKm5vZGVtYXNrKVxuYGBgXG5cbk5vLCBpdCdzIG5vdCBzdGF0aWMuIEdvb2QuXG5cbkknbSByZWFkeSB0byBgc2V0LXJlc3VsdHNgIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI1NTksIk91dHB1dFRva2VucyI6MTI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ4OjE4Ljg4MTk5MzMyM1oiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczNDAwNDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIVUdFVExCRlNcIixcbiAgICBcIkNNQVwiLFxuICAgIFwiQ1BVU0VUU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIHRvIHJlc3BlY3QgY3B1c2V0IG1lbW9yeSBhbGxvd2VkIG5vZGVzIHdoZW4gYG5vZGVtYXNrYCBpcyBOVUxMLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSAoSHVnZVRMQiBDTUEpIHRoYXQgYWZmZWN0cyBtZW1vcnkgYWxsb2NhdGlvbiBiZWhhdmlvci4gSXQgaXMgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhVR0VUTEJGU1wiLFxuICAgIFwiQ01BXCIsXG4gICAgXCJDUFVTRVRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AgdG8gcmVzcGVjdCBjcHVzZXQgbWVtb3J5IGFsbG93ZWQgbm9kZXMgd2hlbiBgbm9kZW1hc2tgIGlzIE5VTEwuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIChIdWdlVExCIENNQSkgdGhhdCBhZmZlY3RzIG1lbW9yeSBhbGxvY2F0aW9uIGJlaGF2aW9yLiBJdCBpcyByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDAwOjQ4OjE4Ljk1NTQwMDgyMVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExMzc3NDM0MjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMDo0ODoxOC45NTU5NDAxMjFaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTExMzcyMDAzMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBub2RlIHNlbGVjdGlvbiBsb2dpYyBpbiBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCB0byByZXNwZWN0IGNwdXNldCBtZW1vcnkgcGxhY2VtZW50IHJ1bGVzLiBJdCBpbnRyb2R1Y2VzIGEgbG9jYWwgYG5vZGVtYXNrX3QgbG9jYWxfbm9kZV9tYXNrYCB3aGljaCBpcyBmdWxseSBpbml0aWFsaXplZCBieSBhc3NpZ25tZW50IGZyb20gYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAgd2hlbiB0aGUgcHJvdmlkZWQgYG5vZGVtYXNrYCBpcyBOVUxMLiBUaGUgYGNwdXNldF9tZW1zX2Nvb2tpZWAgaXMgYWxzbyBwcm9wZXJseSBpbml0aWFsaXplZCB2aWEgYHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKClgLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLCBubyBjb21wbGV4IGFsbG9jYXRpb25zIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMsIGFuZCBubyBjb250cm9sIGZsb3cgZGVwZW5kaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIHdvdWxkIGJlIHJlbGF0ZWQgdG8gaW5jb3JyZWN0IG5vZGUgc2VsZWN0aW9uLCBvdXQtb2YtYm91bmRzIGFjY2Vzcywgb3IgY29uY3VycmVuY3kgaXNzdWVzLCB3aGljaCBhcmUgd2VsbCBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTNlZWJmYmRjYWU0ZDYwMTYzY2YwMjYzMTRhMWQ4ZmFmMzFjMDY5OFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDAwOjQ2OjM3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vaHVnZXRsYl9jbWEuYyBiL21tL2h1Z2V0bGJfY21hLmNcbmluZGV4IDM5MzQ0ZDZjNzhkODQuLjlkZWJmMDMzZDRmZDcgMTAwNjQ0XG4tLS0gYS9tbS9odWdldGxiX2NtYS5jXG4rKysgYi9tbS9odWdldGxiX2NtYS5jXG5AQCAtMyw2ICszLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tbS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY21hLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jb21waWxlci5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvY3B1c2V0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tbV9pbmxpbmUuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFx1MDAzY2FzbS9wYWdlLmhcdTAwM2VcbkBAIC0zMCwxNSArMzEsMjcgQEAgc3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcbiBcdGludCBub2RlO1xuIFx0c3RydWN0IGZvbGlvICpmb2xpbztcbiBcdHN0cnVjdCBwYWdlICpwYWdlID0gTlVMTDtcbitcdGNvbnN0IG5vZGVtYXNrX3QgKm5tYXNrO1xuK1x0bm9kZW1hc2tfdCBsb2NhbF9ub2RlX21hc2s7XG4rXHR1bnNpZ25lZCBpbnQgY3B1c2V0X21lbXNfY29va2llO1xuIFxuIFx0aWYgKCFodWdldGxiX2NtYV9zaXplKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbi1cdGlmIChodWdldGxiX2NtYVtuaWRdKVxuK3JldHJ5X2NwdXNldDpcbitcdGlmICghbm9kZW1hc2spIHtcbitcdFx0Y3B1c2V0X21lbXNfY29va2llID0gcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKTtcbitcdFx0bG9jYWxfbm9kZV9tYXNrID0gY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkO1xuK1x0XHRubWFzayA9IFx1MDAyNmxvY2FsX25vZGVfbWFzaztcbitcdH0gZWxzZSB7XG4rXHRcdG5tYXNrID0gbm9kZW1hc2s7XG4rXHR9XG4rXG4rXHRpZiAoaHVnZXRsYl9jbWFbbmlkXSBcdTAwMjZcdTAwMjYgbm9kZV9pc3NldChuaWQsICpubWFzaykpXG4gXHRcdHBhZ2UgPSBjbWFfYWxsb2NfZnJvemVuX2NvbXBvdW5kKGh1Z2V0bGJfY21hW25pZF0sIG9yZGVyKTtcbiBcbiBcdGlmICghcGFnZSBcdTAwMjZcdTAwMjYgIShnZnBfbWFzayBcdTAwMjYgX19HRlBfVEhJU05PREUpKSB7XG4tXHRcdGZvcl9lYWNoX25vZGVfbWFzayhub2RlLCAqbm9kZW1hc2spIHtcbitcdFx0Zm9yX2VhY2hfbm9kZV9tYXNrKG5vZGUsICpubWFzaykge1xuIFx0XHRcdGlmIChub2RlID09IG5pZCB8fCAhaHVnZXRsYl9jbWFbbm9kZV0pXG4gXHRcdFx0XHRjb250aW51ZTtcbiBcbkBAIC00OCw4ICs2MSwxMiBAQCBzdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxuIFx0XHR9XG4gXHR9XG4gXG4tXHRpZiAoIXBhZ2UpXG4rXHRpZiAoIXBhZ2UpIHtcbitcdFx0aWYgKCFub2RlbWFzayBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIHVubGlrZWx5KHJlYWRfbWVtc19hbGxvd2VkX3JldHJ5KGNwdXNldF9tZW1zX2Nvb2tpZSkpKVxuK1x0XHRcdGdvdG8gcmV0cnlfY3B1c2V0O1xuIFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbiBcbiBcdGZvbGlvID0gcGFnZV9mb2xpbyhwYWdlKTtcbiBcdGZvbGlvX3NldF9odWdldGxiX2NtYShmb2xpbyk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwMDo0ODoxOC45NTU5NDEwMTFaIiwiU2VxIjo0MSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTExMzcxNzYyMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgZm9yIFVuaW5pdGlhbGl6ZWQgTWVtb3J5IFVzYWdlIGluIFRoaXMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIGluIGBtbS9odWdldGxiX2NtYS5jYCwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGNwdXNldC1hd2FyZSBub2RlIHNlbGVjdGlvbi4gTXkgZmlyc3QgdGhvdWdodCBpczogYXJlIHRoZXJlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgdnVsbmVyYWJpbGl0aWVzIGJlaW5nIGludHJvZHVjZWQgaGVyZT8gVGhlIHBhdGNoIGludHJvZHVjZXMgYG5vZGVtYXNrX3QgbG9jYWxfbm9kZV9tYXNrYCBhbmQgYHVuc2lnbmVkIGludCBjcHVzZXRfbWVtc19jb29raWVgLCBzbyB0aGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzLlxuXG5JIHNlZSBgbG9jYWxfbm9kZV9tYXNrYCBpcyBpbml0aWFsaXplZCB3aXRoIGBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWRgLCB3aGljaCBpcyBnb29kLiBCdXQgaXMgaXQgKmZ1bGx5KiBpbml0aWFsaXplZD8gIGBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWRgIGlzIGEgcGVyLXRhc2sgb3IgZ2xvYmFsIHZhcmlhYmxlLCBzbyBsZXQncyBtYWtlIHN1cmUgbm90aGluZyB3ZWlyZCBpcyBnb2luZyBvbiBpbiBob3cgaXQncyB1c2VkLiBTaW5jZSBgbG9jYWxfbm9kZV9tYXNrYCBpcyBhIGBub2RlbWFza190YCwgd2hpY2ggaXMgZGVmaW5lZCBhcyBlc3NlbnRpYWxseSBhbiBhcnJheSBvZiB1bnNpZ25lZCBsb25ncyAoREVDTEFSRV9CSVRNQVApLCB0aGUgYXNzaWdubWVudCBgbG9jYWxfbm9kZV9tYXNrID0gY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkO2AgaXMgYSBzdHJhaWdodGZvcndhcmQgc3RydWN0IGNvcHkuICBJIGtub3cgYG5vZGVtYXNrX3RgIGlzIGEgYml0bWFwLCBhbmQgdGhlIHdob2xlIHN0cnVjdCB3aWxsIGJlIGNvcGllZCwgdGhlcmUncyBubyByaXNrIG9mIHBhZGRpbmcgb3IgdW5pbml0aWFsaXplZCBiaXRzIGNyZWVwaW5nIGluLlxuXG5JIHdhcyBhIGJpdCBjb25jZXJuZWQgaWYgYG5vZGVtYXNrYCB3YXMgTlVMTC4gQnV0IGVpdGhlciB3YXksIGBubWFza2Agd2lsbCBiZSBpbml0aWFsaXplZC4gU28gSSdtIGNvbmZpZGVudCBgbG9jYWxfbm9kZV9tYXNrYCBpcyBpbmRlZWQgZnVsbHkgaW5pdGlhbGl6ZWQuXG5cblRoZW4gSSBsb29rIGF0IHRoZSB1c2FnZSBvZiBgY3B1c2V0X21lbXNfY29va2llYCwgaW5pdGlhbGl6ZWQgdmlhIGByZWFkX21lbXNfYWxsb3dlZF9iZWdpbigpYCwgYW5kIHVzZWQgaW4gYHJlYWRfbWVtc19hbGxvd2VkX3JldHJ5KClgLiBUaGF0J3Mgc3RhbmRhcmQgY3B1c2V0IGFjY2VzcywgYW5kIGl0IGxvb2tzIHNvdW5kLlxuXG5UaGVyZSBkb2Vzbid0IGFwcGVhciB0byBiZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGV4cG9zZWQgdG8gdXNlcnNwYWNlLCBhbmQgbm8gY29udHJvbCBmbG93IGRlcGVuZHMgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoaXMgaXMgZ29vZC4gVGhlIHBhdGNoIGNoYW5nZXMgaG93IG5vZGUgc2VsZWN0aW9uIHdvcmtzIHdpdGggY3B1c2V0cywgYnV0IHRoZSByZWxldmFudCBkYXRhIHN0cnVjdHVyZXMgKGBsb2NhbF9ub2RlX21hc2tgIGFuZCBgY3B1c2V0X21lbXNfY29va2llYCkgYXJlIGNvcnJlY3RseSBhbmQgY29tcGxldGVseSBpbml0aWFsaXplZCBiZWZvcmUgdXNlLlxuXG5UaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgdGhhdCB0aGUgcHJpbWFyeSByaXNrcyB3b3VsZCBiZSByZWxhdGVkIHRvIGluY29ycmVjdCBub2RlIHNlbGVjdGlvbiAocG90ZW50aWFsbHkgbGVhZGluZyB0byBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucyBvciBmYWlsdXJlcyksIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlmIHRoZXJlJ3MgYSBidWcgaW4gaG93IHRoZSBub2RlbWFzayBpcyB1c2VkIGluIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gLCBvciBjb25jdXJyZW5jeSBpc3N1ZXMuIFRoZXNlIGFyZSBhbHJlYWR5IHdlbGwtY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scywgd2hpY2ggc2hvdWxkIGZsYWcgYW55IHByb2JsZW1zLiBUaGVyZWZvcmUsIEkgZG9uJ3Qgc2VlIGFueSBuZWVkIGZvciBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gZm9yIHRoaXMgcGFydGljdWxhciBwYXRjaCB0byBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJ1Z3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NjEsIk91dHB1dFRva2VucyI6MjA4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODE4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDA6NDg6MzAuMDkzMTIwNDYzWiIsIlNlcSI6NDIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbm9kZSBzZWxlY3Rpb24gbG9naWMgaW4gYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AgdG8gcmVzcGVjdCBjcHVzZXQgbWVtb3J5IHBsYWNlbWVudCBydWxlcy4gSXQgaW50cm9kdWNlcyBhIGxvY2FsIGBub2RlbWFza190IGxvY2FsX25vZGVfbWFza2Agd2hpY2ggaXMgZnVsbHkgaW5pdGlhbGl6ZWQgYnkgYXNzaWdubWVudCBmcm9tIGBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWRgIHdoZW4gdGhlIHByb3ZpZGVkIGBub2RlbWFza2AgaXMgTlVMTC4gVGhlIGBjcHVzZXRfbWVtc19jb29raWVgIGlzIGFsc28gcHJvcGVybHkgaW5pdGlhbGl6ZWQgdmlhIGByZWFkX21lbXNfYWxsb3dlZF9iZWdpbigpYC4gVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzIGV4cG9zZWQgdG8gdXNlciBzcGFjZSwgbm8gY29tcGxleCBhbGxvY2F0aW9ucyB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzLCBhbmQgbm8gY29udHJvbCBmbG93IGRlcGVuZGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCB3b3VsZCBiZSByZWxhdGVkIHRvIGluY29ycmVjdCBub2RlIHNlbGVjdGlvbiwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIG9yIGNvbmN1cnJlbmN5IGlzc3Vlcywgd2hpY2ggYXJlIHdlbGwgY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBub2RlIHNlbGVjdGlvbiBsb2dpYyBpbiBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCB0byByZXNwZWN0IGNwdXNldCBtZW1vcnkgcGxhY2VtZW50IHJ1bGVzLiBJdCBpbnRyb2R1Y2VzIGEgbG9jYWwgYG5vZGVtYXNrX3QgbG9jYWxfbm9kZV9tYXNrYCB3aGljaCBpcyBmdWxseSBpbml0aWFsaXplZCBieSBhc3NpZ25tZW50IGZyb20gYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAgd2hlbiB0aGUgcHJvdmlkZWQgYG5vZGVtYXNrYCBpcyBOVUxMLiBUaGUgYGNwdXNldF9tZW1zX2Nvb2tpZWAgaXMgYWxzbyBwcm9wZXJseSBpbml0aWFsaXplZCB2aWEgYHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKClgLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLCBubyBjb21wbGV4IGFsbG9jYXRpb25zIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMsIGFuZCBubyBjb250cm9sIGZsb3cgZGVwZW5kaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIHdvdWxkIGJlIHJlbGF0ZWQgdG8gaW5jb3JyZWN0IG5vZGUgc2VsZWN0aW9uLCBvdXQtb2YtYm91bmRzIGFjY2Vzcywgb3IgY29uY3VycmVuY3kgaXNzdWVzLCB3aGljaCBhcmUgd2VsbCBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow9p224[1] Phase: Succeeded StartedAt: 2026-08-11 00:48:41 +0000 UTC FinishedAt: 2026-08-11 00:48:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9p224[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-11 00:48:41 +0000 UTC FinishedAt: 2026-08-11 00:48:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9p224[2] Phase: Succeeded StartedAt: 2026-08-11 00:48:41 +0000 UTC FinishedAt: 2026-08-11 04:50:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-11 00:48:41 +0000 UTC FinishedAt: 2026-08-11 04:50:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-11 00:48:41 +0000 UTC FinishedAt: 2026-08-11 00:48:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-11 00:48:41 +0000 UTC FinishedAt: 2026-08-11 00:48:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflow9p224/series-workflow9p224-convert-artifact-1207046060/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-11 00:48:52 +0000 UTC FinishedAt: 2026-08-11 01:12:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-11 00:48:52 +0000 UTC FinishedAt: 2026-08-11 01:12:26 +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:*b71804ab-d31a-4714-93d6-5b527ce253d2,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-workflow9p224/series-workflow9p224-convert-artifact-1207046060/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": "7e5d405a-02bf-411b-b5b4-89b247ac7e82", "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-workflow9p224/series-workflow9p224-build-action-297080282/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-11 00:48:52 +0000 UTC FinishedAt: 2026-08-11 01:11:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*b71804ab-d31a-4714-93d6-5b527ce253d2,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-workflow9p224/series-workflow9p224-convert-artifact-1207046060/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": "7e5d405a-02bf-411b-b5b4-89b247ac7e82", "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-workflow9p224/series-workflow9p224-build-action-297080282/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-11 01:12:26 +0000 UTC FinishedAt: 2026-08-11 01:12:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-11 01:12:26 +0000 UTC FinishedAt: 2026-08-11 01:12:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-11 01:12:26 +0000 UTC FinishedAt: 2026-08-11 01:12:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-11 01:12:26 +0000 UTC FinishedAt: 2026-08-11 01:12:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflow9p224/series-workflow9p224-convert-artifact-813049707/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-11 01:12:36 +0000 UTC FinishedAt: 2026-08-11 01:14:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-11 01:12:36 +0000 UTC FinishedAt: 2026-08-11 01:14:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7e5d405a-02bf-411b-b5b4-89b247ac7e82,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-workflow9p224/series-workflow9p224-build-action-297080282/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-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-11 01:14:53 +0000 UTC FinishedAt: 2026-08-11 01:14:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-11 01:14:53 +0000 UTC FinishedAt: 2026-08-11 01:14:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-11 01:14:53 +0000 UTC FinishedAt: 2026-08-11 01:38:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-11 01:14:53 +0000 UTC FinishedAt: 2026-08-11 01:38:31 +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:*b71804ab-d31a-4714-93d6-5b527ce253d2,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-workflow9p224/series-workflow9p224-convert-artifact-813049707/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": "23bc0953-ade9-4b58-b004-7e5e243c50f7", "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-workflow9p224/series-workflow9p224-build-action-2393597071/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-11 01:14:53 +0000 UTC FinishedAt: 2026-08-11 01:38:21 +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:*b71804ab-d31a-4714-93d6-5b527ce253d2,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-workflow9p224/series-workflow9p224-convert-artifact-813049707/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": "23bc0953-ade9-4b58-b004-7e5e243c50f7", "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-workflow9p224/series-workflow9p224-build-action-2393597071/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-11 01:38:31 +0000 UTC FinishedAt: 2026-08-11 01:38:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-11 01:38:31 +0000 UTC FinishedAt: 2026-08-11 01:38:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-11 01:38:31 +0000 UTC FinishedAt: 2026-08-11 01:40:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-11 01:38:31 +0000 UTC FinishedAt: 2026-08-11 01:40:39 +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:*23bc0953-ade9-4b58-b004-7e5e243c50f7,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-workflow9p224/series-workflow9p224-build-action-2393597071/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-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-11 01:40:49 +0000 UTC FinishedAt: 2026-08-11 04:50:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-11 01:40:49 +0000 UTC FinishedAt: 2026-08-11 04:50:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},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:*7e5d405a-02bf-411b-b5b4-89b247ac7e82,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*23bc0953-ade9-4b58-b004-7e5e243c50f7,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-workflow9p224/series-workflow9p224-build-action-297080282/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-workflow9p224/series-workflow9p224-build-action-2393597071/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-11 01:40:49 +0000 UTC FinishedAt: 2026-08-11 01:40:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-11 01:40:49 +0000 UTC FinishedAt: 2026-08-11 01:40:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},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-workflow9p224/series-workflow9p224-convert-artifact-2438567556/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-11 01:40:49 +0000 UTC FinishedAt: 2026-08-11 01:40:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-11 01:40:49 +0000 UTC FinishedAt: 2026-08-11 01:40:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-11 01:40:49 +0000 UTC FinishedAt: 2026-08-11 01:40:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-11 01:40:59 +0000 UTC FinishedAt: 2026-08-11 04:50:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9p224[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["hugetlb_cma_alloc_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1ec0e6b6f7321feb769f50d2f094a0aa6c2eda63","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA","CPUSETS"],"series_id":"4f335ea2-65da-4c04-925b-d90851d0157f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-11 01:40:59 +0000 UTC FinishedAt: 2026-08-11 04:50:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7e5d405a-02bf-411b-b5b4-89b247ac7e82,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*23bc0953-ade9-4b58-b004-7e5e243c50f7,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-workflow9p224/series-workflow9p224-build-action-297080282/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-workflow9p224/series-workflow9p224-build-action-2393597071/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-workflow9p224/series-workflow9p224-convert-artifact-2438567556/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,}