Name: series-workflowxt245 Phase: Succeeded StartedAt: 2026-07-01 05:01:28 +0000 UTC FinishedAt: 2026-07-01 09:20:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt245[0] Phase: Succeeded StartedAt: 2026-07-01 05:01:28 +0000 UTC FinishedAt: 2026-07-01 05:11:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt245[0].run-triage Phase: Succeeded StartedAt: 2026-07-01 05:01:28 +0000 UTC FinishedAt: 2026-07-01 05:11:34 +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": "15654b0268cd65b4e673510c0377774e61b86397", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMORY_HOTPLUG", "ARCH_MEMORY_PROBE" ], "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": "15654b0268cd65b4e673510c0377774e61b86397", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMORY_HOTPLUG", "ARCH_MEMORY_PROBE" ], "series_id": "44826249-08db-46f3-b8a4-27b709b3cf98" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "free_area_init_core_hotplug", "hotadd_init_pgdat", "__try_online_node" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDssCiAgICAmIzM0O0FSQ0hfTUVNT1JZX1BST0JFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnJiMzNDssCiAgICAmIzM0O2hvdGFkZF9pbml0X3BnZGF0JiMzNDssCiAgICAmIzM0O19fdHJ5X29ubGluZV9ub2RlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBob3RwbHVnIGluaXRpYWxpemF0aW9uIGNvZGUgdG8gaGFuZGxlIGBhbGxvY19wZXJjcHVgIGZhaWx1cmVzLCByZXR1cm5pbmcgYC1FTk9NRU1gIGFuZCBwcm9wYWdhdGluZyB0aGUgZXJyb3IgdXAgdG8gYGhvdGFkZF9pbml0X3BnZGF0YC4gVGhpcyBpcyByZWFjaGFibGUgdmlhIG1lbW9yeSBob3RwbHVnIG9wZXJhdGlvbnMgKGUuZy4sIHN5c2ZzLCB2aXJ0aW9fbWVtKSBhbmQgcmVwcmVzZW50cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGVycm9yIGhhbmRsaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjEwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgM2E0ZGIzZDIzZmRjYWJmMmFhODMzZTg2MTBlMDIzYjVlOWQwYjdiN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMDU6MTA6MTIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oIGIvaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oXG5pbmRleCA3YzlkNjY3MjljNjA5NS4uZjA0YjkxNTY3OGRiZDkgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaFxuQEAgLTI4OSw3ICYjNDM7Mjg5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIF9fcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKSB7fVxuIC8qIERlZmF1bHQgb25saW5lX3R5cGUgKE1NT1BfKikgd2hlbiBuZXcgbWVtb3J5IGJsb2NrcyBhcmUgYWRkZWQuICovXG4gZXh0ZXJuIGVudW0gbW1vcCBtaHBfZ2V0X2RlZmF1bHRfb25saW5lX3R5cGUodm9pZCk7XG4gZXh0ZXJuIHZvaWQgbWhwX3NldF9kZWZhdWx0X29ubGluZV90eXBlKGVudW0gbW1vcCBvbmxpbmVfdHlwZSk7XG4tZXh0ZXJuIHZvaWQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpO1xuJiM0MztleHRlcm4gaW50IF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KTtcbiBleHRlcm4gaW50IF9fYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBtaHBfdCBtaHBfZmxhZ3MpO1xuIGV4dGVybiBpbnQgYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBtaHBfdCBtaHBfZmxhZ3MpO1xuIGV4dGVybiBpbnQgYWRkX21lbW9yeV9yZXNvdXJjZShpbnQgbmlkLCBzdHJ1Y3QgcmVzb3VyY2UgKnJlc291cmNlLFxuZGlmZiAtLWdpdCBhL21tL21lbW9yeV9ob3RwbHVnLmMgYi9tbS9tZW1vcnlfaG90cGx1Zy5jXG5pbmRleCA3YWMxOWZhYjIyNjMyNC4uOGIxMzczMjhkY2YwMTQgMTAwNjQ0XG4tLS0gYS9tbS9tZW1vcnlfaG90cGx1Zy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9tZW1vcnlfaG90cGx1Zy5jXG5AQCAtMTI2Myw3ICYjNDM7MTI2Myw4IEBAIHN0YXRpYyBwZ19kYXRhX3QgKmhvdGFkZF9pbml0X3BnZGF0KGludCBuaWQpXG4gXHRwZ2RhdCA9IE5PREVfREFUQShuaWQpO1xuIFxuIFx0LyogaW5pdCBub2RlJiMzOTtzIHpvbmVzIGFzIGVtcHR5IHpvbmVzLCB3ZSBkb24mIzM5O3QgaGF2ZSBhbnkgcHJlc2VudCBwYWdlcy4qL1xuLVx0ZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHBnZGF0KTtcbiYjNDM7XHRpZiAoZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHBnZGF0KSlcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuIFxuIFx0LypcbiBcdCAqIFRoZSBub2RlIHdlIGFsbG9jYXRlZCBoYXMgbm8gem9uZSBmYWxsYmFjayBsaXN0cy4gRm9yIGF2b2lkaW5nXG5kaWZmIC0tZ2l0IGEvbW0vbW1faW5pdC5jIGIvbW0vbW1faW5pdC5jXG5pbmRleCA0MDI2YjA4NGJkNGJmNy4uZDdhZWNkZGRmZDVkYTQgMTAwNjQ0XG4tLS0gYS9tbS9tbV9pbml0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL21tX2luaXQuY1xuQEAgLTE1MjYsNyAmIzQzOzE1MjYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19pbml0IHNldF9wYWdlYmxvY2tfb3JkZXIodm9pZClcbiAgKiBOT1RFOiB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGR1cmluZyBtZW1vcnkgaG90cGx1Z1xuICAqL1xuICNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbi12b2lkIF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KVxuJiM0MztpbnQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpXG4ge1xuIFx0aW50IG5pZCA9IHBnZGF0LVx1MDAzZW5vZGVfaWQ7XG4gXHRlbnVtIHpvbmVfdHlwZSB6O1xuQEAgLTE1MzQsOCAmIzQzOzE1MzQsMTQgQEAgdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdClcbiBcbiBcdHBnZGF0X2luaXRfaW50ZXJuYWxzKHBnZGF0KTtcbiBcbi1cdGlmIChwZ2RhdC1cdTAwM2VwZXJfY3B1X25vZGVzdGF0cyA9PSBcdTAwMjZib290X25vZGVzdGF0cylcbi1cdFx0cGdkYXQtXHUwMDNlcGVyX2NwdV9ub2Rlc3RhdHMgPSBhbGxvY19wZXJjcHUoc3RydWN0IHBlcl9jcHVfbm9kZXN0YXQpO1xuJiM0MztcdGlmIChwZ2RhdC1cdTAwM2VwZXJfY3B1X25vZGVzdGF0cyA9PSBcdTAwMjZib290X25vZGVzdGF0cykge1xuJiM0MztcdFx0c3RydWN0IHBlcl9jcHVfbm9kZXN0YXQgX19wZXJjcHUgKnA7XG4mIzQzO1xuJiM0MztcdFx0cCA9IGFsbG9jX3BlcmNwdShzdHJ1Y3QgcGVyX2NwdV9ub2Rlc3RhdCk7XG4mIzQzO1x0XHRpZiAoIXApXG4mIzQzO1x0XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcdFx0cGdkYXQtXHUwMDNlcGVyX2NwdV9ub2Rlc3RhdHMgPSBwO1xuJiM0MztcdH1cbiBcbiBcdC8qXG4gXHQgKiBSZXNldCB0aGUgbnJfem9uZXMsIG9yZGVyIGFuZCBoaWdoZXN0X3pvbmVpZHggYmVmb3JlIHJldXNlLlxuQEAgLTE1NjYsNiAmIzQzOzE1NzIsOCBAQCB2b2lkIF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KVxuIFx0XHR6b25lLVx1MDAzZXByZXNlbnRfcGFnZXMgPSAwO1xuIFx0XHR6b25lX2luaXRfaW50ZXJuYWxzKHpvbmUsIHosIG5pZCwgMCk7XG4gXHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuIH1cbiAjZW5kaWZcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNRU1PUllfSE9UUExVRyYjMzQ7LAogICAgJiMzNDtBUkNIX01FTU9SWV9QUk9CRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyYjMzQ7LAogICAgJiMzNDtob3RhZGRfaW5pdF9wZ2RhdCYjMzQ7LAogICAgJiMzNDtfX3RyeV9vbmxpbmVfbm9kZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBtZW1vcnkgaG90cGx1ZyBpbml0aWFsaXphdGlvbiBjb2RlIHRvIGhhbmRsZSBgYWxsb2NfcGVyY3B1YCBmYWlsdXJlcywgcmV0dXJuaW5nIGAtRU5PTUVNYCBhbmQgcHJvcGFnYXRpbmcgdGhlIGVycm9yIHVwIHRvIGBob3RhZGRfaW5pdF9wZ2RhdGAuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBtZW1vcnkgaG90cGx1ZyBvcGVyYXRpb25zIChlLmcuLCBzeXNmcywgdmlydGlvX21lbSkgYW5kIHJlcHJlc2VudHMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBlcnJvciBoYW5kbGluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgM2E0ZGIzZDIzZmRjYWJmMmFhODMzZTg2MTBlMDIzYjVlOWQwYjdiNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDEgMDU6MTA6MTIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmggYi9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgKaW5kZXggN2M5ZDY2NzI5YzYwOTUuLmYwNGI5MTU2NzhkYmQ5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oCkBAIC0yODksNyAmIzQzOzI4OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSkge30KIC8qIERlZmF1bHQgb25saW5lX3R5cGUgKE1NT1BfKikgd2hlbiBuZXcgbWVtb3J5IGJsb2NrcyBhcmUgYWRkZWQuICovCiBleHRlcm4gZW51bSBtbW9wIG1ocF9nZXRfZGVmYXVsdF9vbmxpbmVfdHlwZSh2b2lkKTsKIGV4dGVybiB2b2lkIG1ocF9zZXRfZGVmYXVsdF9vbmxpbmVfdHlwZShlbnVtIG1tb3Agb25saW5lX3R5cGUpOwotZXh0ZXJuIHZvaWQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpOwomIzQzO2V4dGVybiBpbnQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpOwogZXh0ZXJuIGludCBfX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSwgbWhwX3QgbWhwX2ZsYWdzKTsKIGV4dGVybiBpbnQgYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBtaHBfdCBtaHBfZmxhZ3MpOwogZXh0ZXJuIGludCBhZGRfbWVtb3J5X3Jlc291cmNlKGludCBuaWQsIHN0cnVjdCByZXNvdXJjZSAqcmVzb3VyY2UsCmRpZmYgLS1naXQgYS9tbS9tZW1vcnlfaG90cGx1Zy5jIGIvbW0vbWVtb3J5X2hvdHBsdWcuYwppbmRleCA3YWMxOWZhYjIyNjMyNC4uOGIxMzczMjhkY2YwMTQgMTAwNjQ0Ci0tLSBhL21tL21lbW9yeV9ob3RwbHVnLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtb3J5X2hvdHBsdWcuYwpAQCAtMTI2Myw3ICYjNDM7MTI2Myw4IEBAIHN0YXRpYyBwZ19kYXRhX3QgKmhvdGFkZF9pbml0X3BnZGF0KGludCBuaWQpCiAJcGdkYXQgPSBOT0RFX0RBVEEobmlkKTsKIAogCS8qIGluaXQgbm9kZSYjMzk7cyB6b25lcyBhcyBlbXB0eSB6b25lcywgd2UgZG9uJiMzOTt0IGhhdmUgYW55IHByZXNlbnQgcGFnZXMuKi8KLQlmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcocGdkYXQpOwomIzQzOwlpZiAoZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHBnZGF0KSkKJiM0MzsJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBUaGUgbm9kZSB3ZSBhbGxvY2F0ZWQgaGFzIG5vIHpvbmUgZmFsbGJhY2sgbGlzdHMuIEZvciBhdm9pZGluZwpkaWZmIC0tZ2l0IGEvbW0vbW1faW5pdC5jIGIvbW0vbW1faW5pdC5jCmluZGV4IDQwMjZiMDg0YmQ0YmY3Li5kN2FlY2RkZGZkNWRhNCAxMDA2NDQKLS0tIGEvbW0vbW1faW5pdC5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL21tX2luaXQuYwpAQCAtMTUyNiw3ICYjNDM7MTUyNiw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX2luaXQgc2V0X3BhZ2VibG9ja19vcmRlcih2b2lkKQogICogTk9URTogdGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCBkdXJpbmcgbWVtb3J5IGhvdHBsdWcKICAqLwogI2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVRwotdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCkKJiM0MztpbnQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpCiB7CiAJaW50IG5pZCA9IHBnZGF0LSZndDtub2RlX2lkOwogCWVudW0gem9uZV90eXBlIHo7CkBAIC0xNTM0LDggJiM0MzsxNTM0LDE0IEBAIHZvaWQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpCiAKIAlwZ2RhdF9pbml0X2ludGVybmFscyhwZ2RhdCk7CiAKLQlpZiAocGdkYXQtJmd0O3Blcl9jcHVfbm9kZXN0YXRzID09ICZhbXA7Ym9vdF9ub2Rlc3RhdHMpCi0JCXBnZGF0LSZndDtwZXJfY3B1X25vZGVzdGF0cyA9IGFsbG9jX3BlcmNwdShzdHJ1Y3QgcGVyX2NwdV9ub2Rlc3RhdCk7CiYjNDM7CWlmIChwZ2RhdC0mZ3Q7cGVyX2NwdV9ub2Rlc3RhdHMgPT0gJmFtcDtib290X25vZGVzdGF0cykgewomIzQzOwkJc3RydWN0IHBlcl9jcHVfbm9kZXN0YXQgX19wZXJjcHUgKnA7CiYjNDM7CiYjNDM7CQlwID0gYWxsb2NfcGVyY3B1KHN0cnVjdCBwZXJfY3B1X25vZGVzdGF0KTsKJiM0MzsJCWlmICghcCkKJiM0MzsJCQlyZXR1cm4gLUVOT01FTTsKJiM0MzsJCXBnZGF0LSZndDtwZXJfY3B1X25vZGVzdGF0cyA9IHA7CiYjNDM7CX0KIAogCS8qCiAJICogUmVzZXQgdGhlIG5yX3pvbmVzLCBvcmRlciBhbmQgaGlnaGVzdF96b25laWR4IGJlZm9yZSByZXVzZS4KQEAgLTE1NjYsNiAmIzQzOzE1NzIsOCBAQCB2b2lkIF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KQogCQl6b25lLSZndDtwcmVzZW50X3BhZ2VzID0gMDsKIAkJem9uZV9pbml0X2ludGVybmFscyh6b25lLCB6LCBuaWQsIDApOwogCX0KJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAjZW5kaWYKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjg2CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldDogTWVtb3J5IEhvdHBsdWcgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gd2UmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0d2Vha2luZyB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gbWVtb3J5IGhvdHBsdWcgaW5pdGlhbGl6YXRpb24uIFNwZWNpZmljYWxseSwgaXQgbW9kaWZpZXMgYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2AgaW4gYG1tL21tX2luaXQuY2AgYW5kIGBob3RhZGRfaW5pdF9wZ2RhdGAgaW4gYG1tL21lbW9yeV9ob3RwbHVnLmNgLiBUaGUgY2hhbmdlIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdgIG5vdyByZXR1cm5zIGFuIGBpbnRgIHJhdGhlciB0aGFuIGB2b2lkYCwgYW5kIGl0IHNpZ25hbHMgYW4gZXJyb3Igd2l0aCBgLUVOT01FTWAgaWYgYGFsbG9jX3BlcmNwdWAgZmFpbHMuIGBob3RhZGRfaW5pdF9wZ2RhdGAgdGhlbiBjaGVja3MgdGhpcyByZXR1cm4gdmFsdWUgYW5kIHJldHVybnMgYE5VTExgIG9uIGZhaWx1cmUuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7SXMgdGhpcyByZWFjaGFibGUsIGFuZCBtb3JlIGltcG9ydGFudGx5LCBpcyBpdCB3b3J0aCBmdXp6aW5nPyYjMzQ7IFNpbmNlIHRoaXMgZGVhbHMgd2l0aCBtZW1vcnkgaG90cGx1ZywgdGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIFdlIGtub3cgbWVtb3J5IGhvdHBsdWcgY2FuIGJlIGluc3RpZ2F0ZWQgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCBtZWNoYW5pc21zIGxpa2Ugc3lzZnMgb3IgQUNQSS4gVGhhdCBtYWtlcyBpdCBhIHNvbGlkIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4KClRoZSBuZXh0IHF1ZXN0aW9uIGlzIHJlYWNoYWJpbGl0eSBpbiBhIHZpcnR1YWwgbWFjaGluZSBzZXR0aW5nLiBHaXZlbiB0aGF0IG1lbW9yeSBob3RwbHVnIGNhbiBiZSBzaW11bGF0ZWQgb3IgdHJpZ2dlcmVkIHZpYSBzeXNmcywgdGhpcyBpcyBkZWZpbml0ZWx5IGFjY2Vzc2libGUgaW4gYSBWTSBlbnZpcm9ubWVudC4gVGhhdCBtYWtlcyBpdCBldmVuIG1vcmUgYXBwZWFsaW5nLgoKTm93LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIGBob3RhZGRfaW5pdF9wZ2RhdGAgaW4gYG1tL21lbW9yeV9ob3RwbHVnLmNgIGFuZCBtYXAgb3V0IHRoZSBjb250cm9sIGZsb3cgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoZSByZXR1cm4gdmFsdWUgYW5kIGZpZ3VyZSBvdXQgaWYgd2UgY2FuIGVuZ2luZWVyIGludGVyZXN0aW5nIGZhaWx1cmUgc2NlbmFyaW9zIHdpdGggZnV6emluZy4gTGV0JiMzOTtzIHNlZSBpZiB3ZSBjYW4gdHJpZ2dlciB0aG9zZSBgLUVOT01FTWAgY29uZGl0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtob3RhZGRfaW5pdF9wZ2RhdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9tZW1vcnlfaG90cGx1Zy5jPTExMzc9aW50IG9ubGluZV9wYWdlcyh1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcyxcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEyNTItLyogd2UgYXJlIE9LIGNhbGxpbmcgX19tZW1pbml0IHN0dWZmIGhlcmUgLSB3ZSBoYXZlIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xubW0vbWVtb3J5X2hvdHBsdWcuYzoxMjUzOnN0YXRpYyBwZ19kYXRhX3QgKmhvdGFkZF9pbml0X3BnZGF0KGludCBuaWQpXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEyNTQte1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmM9MTI4OT1zdGF0aWMgaW50IF9fdHJ5X29ubGluZV9ub2RlKGludCBuaWQsIGJvb2wgc2V0X25vZGVfb25saW5lKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI5Ni1cbm1tL21lbW9yeV9ob3RwbHVnLmM6MTI5NzpcdHBnZGF0ID0gaG90YWRkX2luaXRfcGdkYXQobmlkKTtcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI5OC1cdGlmICghcGdkYXQpIHtcbi0tXG5tbS9tbV9pbml0LmM9MTgwNz1zdGF0aWMgdm9pZCBfX2luaXQgZnJlZV9hcmVhX2luaXQodm9pZClcbi0tXG5tbS9tbV9pbml0LmMtMTg5NC1cdFx0ICptZW1vcnktbGVzcyBub2RlLiBUaGUgcGdkYXQgd2lsbCBnZXQgZnVsbHkgaW5pdGlhbGl6ZWQgYnlcbm1tL21tX2luaXQuYzoxODk1Olx0XHQgKmhvdGFkZF9pbml0X3BnZGF0KCkgd2hlbiBtZW1vcnkgaXMgaG90cGx1Z2dlZCBpbnRvIHRoaXMgbm9kZS5cbm1tL21tX2luaXQuYy0xODk2LVx0XHQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTkzCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHNuaXBwZXQsIGFzIHRob3VnaCB0aGV5IHdlcmUgbXkgb3duIHRob3VnaHRzOgoKKipEaXNzZWN0aW5nIHRoZSBNZW1vcnkgTm9kZSBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBgaG90YWRkX2luaXRfcGdkYXRgIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGtpY2tzIG9mZiB0aGUgcHJvY2VzcyBvZiBpbml0aWFsaXppbmcgYSBuZXcgbWVtb3J5IG5vZGUgYWRkZWQgb24gdGhlIGZseS4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cuIFRoZSBrZXkgaXMgdW5kZXJzdGFuZGluZyAqd2hlbiogdGhpcyBpbml0aWFsaXphdGlvbiBhY3R1YWxseSBvY2N1cnMsIHRvIHVuZGVyc3RhbmQgdGhlIHRyaWdnZXIuIFNvLCBgaG90YWRkX2luaXRfcGdkYXRgIGlzIGNhbGxlZCBmcm9tIGBfX3RyeV9vbmxpbmVfbm9kZWAuIFRoYXQgc3VnZ2VzdHMgdGhhdCBgX190cnlfb25saW5lX25vZGVgIGxpa2VseSBoYXMgc29tZSByZXNwb25zaWJpbGl0eSBmb3IgdGhlIG92ZXJhbGwgcHJvY2VzcyBvZiBicmluZ2luZyB0aGUgbWVtb3J5IG5vZGUgb25saW5lLiBXaGF0IHRyaWdnZXJzICp0aGF0Kj8gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsaW5nIGhpZXJhcmNoeS4gV2hlcmUgYXJlIHRoZSBjYWxscyB0byBgX190cnlfb25saW5lX25vZGVgPyBUaGUgYW5zd2VyIHRvIHRoYXQgd2lsbCB0ZWxsIG1lIHRoZSBldmVudCB0aGF0IHNldHMgdGhpcyBpbml0aWFsaXphdGlvbiBpbiBtb3Rpb24uIExldCYjMzk7cyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgdGhlIGJyb2FkZXIgY29udGV4dCBoZXJlLiBJIG5lZWQgdGhlIGJpZ2dlciBwaWN0dXJlIHRvIHRydWx5IHVuZGVyc3RhbmQgdGhpcyBjb21wb25lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X190cnlfb25saW5lX25vZGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYvbW0vbnVtYS5jPTI2ND12b2lkIF9faW5pdCBpbml0X2dpX25vZGVzKHZvaWQpXG4tLVxuYXJjaC94ODYvbW0vbnVtYS5jLTI3MS1cdCAqICBjcHVfdXBcbmFyY2gveDg2L21tL251bWEuYzoyNzI6XHQgKiAgIF9fdHJ5X29ubGluZV9ub2RlXG5hcmNoL3g4Ni9tbS9udW1hLmMtMjczLVx0ICogICAgcmVnaXN0ZXJfbm9kZVxuLS1cbmFyY2gveDg2L21tL251bWEuYz0yOTY9dm9pZCBfX2luaXQgaW5pdF9jcHVfdG9fbm9kZSh2b2lkKVxuLS1cbmFyY2gveDg2L21tL251bWEuYy0zMTItXHRcdCAqICBjcHVfdXBcbmFyY2gveDg2L21tL251bWEuYzozMTM6XHRcdCAqICAgX190cnlfb25saW5lX25vZGVcbmFyY2gveDg2L21tL251bWEuYy0zMTQtXHRcdCAqICAgIHJlZ2lzdGVyX25vZGVcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTEyNTM9c3RhdGljIHBnX2RhdGFfdCAqaG90YWRkX2luaXRfcGdkYXQoaW50IG5pZClcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEyNzgtLypcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTI3OTogKiBfX3RyeV9vbmxpbmVfbm9kZSAtIG9ubGluZSBhIG5vZGUgaWYgb2ZmbGluZWRcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI4MC0gKiBAbmlkOiB0aGUgbm9kZSBJRFxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI4OC0gKi9cbm1tL21lbW9yeV9ob3RwbHVnLmM6MTI4OTpzdGF0aWMgaW50IF9fdHJ5X29ubGluZV9ub2RlKGludCBuaWQsIGJvb2wgc2V0X25vZGVfb25saW5lKVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMjkwLXtcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTEzMTY9aW50IHRyeV9vbmxpbmVfbm9kZShpbnQgbmlkKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMTMyMC1cdG1lbV9ob3RwbHVnX2JlZ2luKCk7XG5tbS9tZW1vcnlfaG90cGx1Zy5jOjEzMjE6XHRyZXQgPSAgX190cnlfb25saW5lX25vZGUobmlkLCB0cnVlKTtcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTMyMi1cdG1lbV9ob3RwbHVnX2RvbmUoKTtcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTE0OTU9aW50IGFkZF9tZW1vcnlfcmVzb3VyY2UoaW50IG5pZCwgc3RydWN0IHJlc291cmNlICpyZXMsIG1ocF90IG1ocF9mbGFncylcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE1MzItXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE1MzM6XHRyZXQgPSBfX3RyeV9vbmxpbmVfbm9kZShuaWQsIGZhbHNlKTtcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTUzNC1cdGlmIChyZXQgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ2NgoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipUcmFjaW5nIHRoZSBPbmxpbmUgTm9kZSBMb2dpYyoqCgpSaWdodCwgc28gSSYjMzk7bSBzZWVpbmcgdGhhdCBgX190cnlfb25saW5lX25vZGVgIGdldHMgY2FsbGVkIGZyb20gYm90aCBgdHJ5X29ubGluZV9ub2RlYCAqYW5kKiBgYWRkX21lbW9yeV9yZXNvdXJjZWAuICBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCDigJMgaXQgc3VnZ2VzdHMgYSBraW5kIG9mIHJlY3Vyc2l2ZSBwYXR0ZXJuIG9yIHBlcmhhcHMgYSBoZWxwZXIgZnVuY3Rpb24gd2l0aGluIHRoZSBicm9hZGVyIG5vZGUgb25saW5lIHByb2Nlc3MuIEkmIzM5O2xsIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQsIHRob3NlIGZ1bmN0aW9ucyBjb3VsZCBiZSBpbXBvcnRhbnQuCgpUaGVuLCB0aGVyZSYjMzk7cyBhIGNvbW1lbnQgaW4gYGFyY2gveDg2L21tL251bWEuY2AgaW5kaWNhdGluZyBgdHJ5X29ubGluZV9ub2RlYCBpcyB0cmlnZ2VyZWQgYnkgYGNwdV91cGAuIFRoYXQgbmFycm93cyBkb3duIHRoZSBjb250ZXh0IGNvbnNpZGVyYWJseSEgQSBgY3B1X3VwYCBjYWxsIGlzIGEgc2lnbmlmaWNhbnQgZXZlbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgbGluayB0aG9yb3VnaGx5LgoKVG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZSBvdmVyYWxsIGJlaGF2aW9yLCBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXQgKmFsbCogdGhlIHBsYWNlcyB3aGVyZSBgdHJ5X29ubGluZV9ub2RlYCBpcyBjYWxsZWQuIEZpbmRpbmcgdGhlIGNhbGxlcnMgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIGNvbnRyb2wgZmxvdyBhbmQgZWx1Y2lkYXRlIHRoZSBjaXJjdW1zdGFuY2VzIHRoYXQgdHJpZ2dlciB0aGUgb25saW5lIHByb2Nlc3MuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlYWwgaW5zaWdodHMgd2lsbCBsaWtlbHkgbGllLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RyeV9vbmxpbmVfbm9kZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMvbW0vbnVtYS5jPTE0MTI9dm9pZCBmaW5kX2FuZF91cGRhdGVfY3B1X25pZChpbnQgY3B1KVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9udW1hLmMtMTQyNy1cdFx0Ly8gQXNzb2NpYXRlIG5vZGUgXHUwMDNjLVx1MDAzZSBjcHUsIHNvIGNwdV91cCgpIGNhbGxzXG5hcmNoL3Bvd2VycGMvbW0vbnVtYS5jOjE0Mjg6XHRcdC8vIHRyeV9vbmxpbmVfbm9kZSgpIG9uIHRoZSByaWdodCBub2RlLlxuYXJjaC9wb3dlcnBjL21tL251bWEuYy0xNDI5LVx0XHRzZXRfY3B1X251bWFfbm9kZShjcHUsIG5ld19uaWQpO1xuLS1cbmFyY2gveDg2L21tL251bWEuYz0yNjQ9dm9pZCBfX2luaXQgaW5pdF9naV9ub2Rlcyh2b2lkKVxuLS1cbmFyY2gveDg2L21tL251bWEuYy0yNzEtXHQgKiAgY3B1X3VwXG5hcmNoL3g4Ni9tbS9udW1hLmM6MjcyOlx0ICogICBfX3RyeV9vbmxpbmVfbm9kZVxuYXJjaC94ODYvbW0vbnVtYS5jLTI3My1cdCAqICAgIHJlZ2lzdGVyX25vZGVcbi0tXG5hcmNoL3g4Ni9tbS9udW1hLmM9Mjk2PXZvaWQgX19pbml0IGluaXRfY3B1X3RvX25vZGUodm9pZClcbi0tXG5hcmNoL3g4Ni9tbS9udW1hLmMtMzEyLVx0XHQgKiAgY3B1X3VwXG5hcmNoL3g4Ni9tbS9udW1hLmM6MzEzOlx0XHQgKiAgIF9fdHJ5X29ubGluZV9ub2RlXG5hcmNoL3g4Ni9tbS9udW1hLmMtMzE0LVx0XHQgKiAgICByZWdpc3Rlcl9ub2RlXG4tLVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oPTEyMT1leHRlcm4gaW50IHJlc3RvcmVfb25saW5lX3BhZ2VfY2FsbGJhY2sob25saW5lX3BhZ2VfY2FsbGJhY2tfdCBjYWxsYmFjayk7XG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMTIyLVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjEyMzpleHRlcm4gaW50IHRyeV9vbmxpbmVfbm9kZShpbnQgbmlkKTtcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0xMjQtXG4tLVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oPTE5OT1zdGF0aWMgaW5saW5lIHZvaWQgem9uZV9zZXFsb2NrX2luaXQoc3RydWN0IHpvbmUgKnpvbmUpIHt9XG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjAwLVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjIwMTpzdGF0aWMgaW5saW5lIGludCB0cnlfb25saW5lX25vZGUoaW50IG5pZClcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yMDIte1xuLS1cbmtlcm5lbC9jcHUuYz0xNjgxPXN0YXRpYyBpbnQgY3B1X3VwKHVuc2lnbmVkIGludCBjcHUsIGVudW0gY3B1aHBfc3RhdGUgdGFyZ2V0KVxuLS1cbmtlcm5lbC9jcHUuYy0xNjkwLVxua2VybmVsL2NwdS5jOjE2OTE6XHRlcnIgPSB0cnlfb25saW5lX25vZGUoY3B1X3RvX25vZGUoY3B1KSk7XG5rZXJuZWwvY3B1LmMtMTY5Mi1cdGlmIChlcnIpXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYz0xMjUzPXN0YXRpYyBwZ19kYXRhX3QgKmhvdGFkZF9pbml0X3BnZGF0KGludCBuaWQpXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMjc4LS8qXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjEyNzk6ICogX190cnlfb25saW5lX25vZGUgLSBvbmxpbmUgYSBub2RlIGlmIG9mZmxpbmVkXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEyODAtICogQG5pZDogdGhlIG5vZGUgSURcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEyODgtICovXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjEyODk6c3RhdGljIGludCBfX3RyeV9vbmxpbmVfbm9kZShpbnQgbmlkLCBib29sIHNldF9ub2RlX29ubGluZSlcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI5MC17XG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMzE1LSAqL1xubW0vbWVtb3J5X2hvdHBsdWcuYzoxMzE2OmludCB0cnlfb25saW5lX25vZGUoaW50IG5pZClcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTMxNy17XG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMzIwLVx0bWVtX2hvdHBsdWdfYmVnaW4oKTtcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTMyMTpcdHJldCA9ICBfX3RyeV9vbmxpbmVfbm9kZShuaWQsIHRydWUpO1xubW0vbWVtb3J5X2hvdHBsdWcuYy0xMzIyLVx0bWVtX2hvdHBsdWdfZG9uZSgpO1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmM9MTQ5NT1pbnQgYWRkX21lbW9yeV9yZXNvdXJjZShpbnQgbmlkLCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcywgbWhwX3QgbWhwX2ZsYWdzKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMTUzMi1cbm1tL21lbW9yeV9ob3RwbHVnLmM6MTUzMzpcdHJldCA9IF9fdHJ5X29ubGluZV9ub2RlKG5pZCwgZmFsc2UpO1xubW0vbWVtb3J5X2hvdHBsdWcuYy0xNTM0LVx0aWYgKHJldCBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODU0CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIE5vZGUgT25saW5laW5nKioKCk9rYXksIHNvIGB0cnlfb25saW5lX25vZGVgIGdldHMgY2FsbGVkIGZyb20gYGNwdV91cGAgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgQ1BVIGNvZGUsIHNwZWNpZmljYWxseSBga2VybmVsL2NwdS5jYC4gYGNwdV91cGAgaXRzZWxmIGNhbiBiZSBhY3RpdmF0ZWQgdmlhIHN5c2ZzLCB0aGUgYC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdVgvb25saW5lYCBpbnRlcmZhY2UuIEhtbSwgaW50ZXJlc3RpbmcuLi4gV2FpdCBhIG1pbnV0ZSwgYHRyeV9vbmxpbmVfbm9kZWAgYWN0dWFsbHkgY2FsbHMgYF9fdHJ5X29ubGluZV9ub2RlYCwgd2hpY2ggdGhlbiBkaXZlcyBpbnRvIGBob3RhZGRfaW5pdF9wZ2RhdGAuCgpgaG90YWRkX2luaXRfcGdkYXRgIGlzIHRoZSBjcml0aWNhbCBwaWVjZSBoZXJlOyBpdCBkb2VzIGEgY2hlY2sgdG8gc2VlIGlmIHRoZSBub2RlIGlzIGFscmVhZHkgb25saW5lLCBhbmQgaWYgbm90LCAqdGhlbiogaXQgaW5pdGlhbGl6ZXMgaXQuIFNvLCBjYW4gQ1BVIGhvdHBsdWcgdHJpZ2dlciB0aGlzIHNlcXVlbmNlPyBZZXMsIGl0IGFic29sdXRlbHkgY2FuLCBpZiB0aGUgQ1BVIHdlJiMzOTtyZSBob3RwbHVnZ2luZyBiZWxvbmdzIHRvIGEgTlVNQSBub2RlIHRoYXQgaXNuJiMzOTt0IG9ubGluZSB5ZXQuIFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gSXQmIzM5O3MgYSBrZXkgcGFydCBvZiBicmluZ2luZyB1cCBhIG5ldyBub2RlIHZpYSBhIG5ldyBDUFUhCgpBbmQsIGV2ZW4gYmV0dGVyLCBJIGFsc28gcmVjYWxsIHRoYXQgYGFkZF9tZW1vcnlfcmVzb3VyY2VgIGFsc28gY2FsbHMgYF9fdHJ5X29ubGluZV9ub2RlYC4gVGhhdCBtZWFucyBtZW1vcnkgaG90cGx1ZyBjYW4gYWxzbyBwb3RlbnRpYWxseSB0cmlnZ2VyIHRoaXMgbm9kZSBvbmxpbmUgcHJvY2VzcyEgU28sIGxldCYjMzk7cyBzZWUgd2hpY2ggY2FsbGVycyBhcmUgYWN0dWFsbHkgY2FsbGluZyBgYWRkX21lbW9yeV9yZXNvdXJjZWAgaXRzZWxmLCBzaW5jZSB0aGF0JiMzOTtzIGEgc2Vjb25kIHRyaWdnZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FkZF9tZW1vcnlfcmVzb3VyY2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9tZW1vcnktaG90cGx1Zy5yc3Q9MTczPW1lbW9yeSBmYXN0ZXIgdGhhbiBleHBlY3RlZDpcbi0tXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL21lbW9yeS1ob3RwbHVnLnJzdC0xNzYtICBtZW1faG90cGx1Z19sb2NrXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL21lbW9yeS1ob3RwbHVnLnJzdDoxNzc6LSBhZGRfbWVtb3J5X3Jlc291cmNlKCkgd2lsbCBmaXJzdCB0YWtlIHRoZSBtZW1faG90cGx1Z19sb2NrLCBmb2xsb3dlZCBieVxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9tZW1vcnktaG90cGx1Zy5yc3QtMTc4LSAgdGhlIGRldmljZV9sb2NrKCkgKHdoaWxlIGNyZWF0aW5nIHRoZSBkZXZpY2VzLCBkdXJpbmcgYnVzX2FkZF9kZXZpY2UoKSkuXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vY29yZS1hcGkvbWVtb3J5LWhvdHBsdWcucnN0PTg3PU5PVElGWV9TVE9Q5YGc5q2i5a+56YCa55+l6Zif5YiX55qE6L+b5LiA5q2l5aSE55CG44CCXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vY29yZS1hcGkvbWVtb3J5LWhvdHBsdWcucnN0LTEwNS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL2NvcmUtYXBpL21lbW9yeS1ob3RwbHVnLnJzdDoxMDY6LSBhZGRfbWVtb3J5X3Jlc291cmNlKCnlsIbpppblhYjkvb/nlKhtZW1faG90cGx1Z19sb2Nr77yM54S25ZCO5pivZGV2aWNlX2xvY2soKe+8iOWcqOWIm1xuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vY29yZS1hcGkvbWVtb3J5LWhvdHBsdWcucnN0LTEwNy0gIOW7uuiuvuWkh+aXtu+8jOWcqGJ1c19hZGRfZGV2aWNlKCnmnJ/pl7TvvInjgIJcbi0tXG5kcml2ZXJzL3hlbi9iYWxsb29uLmM9MjY0PXN0YXRpYyBlbnVtIGJwX3N0YXRlIHJlc2VydmVfYWRkaXRpb25hbF9tZW1vcnkodm9pZClcbi0tXG5kcml2ZXJzL3hlbi9iYWxsb29uLmMtMzE4LVx0LypcbmRyaXZlcnMveGVuL2JhbGxvb24uYzozMTk6XHQgKiBhZGRfbWVtb3J5X3Jlc291cmNlKCkgd2lsbCBjYWxsIG9ubGluZV9wYWdlcygpIHdoaWNoIGluIGl0cyB0dXJuXG5kcml2ZXJzL3hlbi9iYWxsb29uLmMtMzIwLVx0ICogd2lsbCBjYWxsIHhlbl9vbmxpbmVfcGFnZSgpIGNhbGxiYWNrIGNhdXNpbmcgZGVhZGxvY2sgaWYgd2UgZG9uJiMzOTt0XG4tLVxuZHJpdmVycy94ZW4vYmFsbG9vbi5jLTMyNC1cdG11dGV4X3VubG9jayhcdTAwMjZiYWxsb29uX211dGV4KTtcbmRyaXZlcnMveGVuL2JhbGxvb24uYzozMjU6XHQvKiBhZGRfbWVtb3J5X3Jlc291cmNlKCkgcmVxdWlyZXMgdGhlIGRldmljZV9ob3RwbHVnIGxvY2sgKi9cbmRyaXZlcnMveGVuL2JhbGxvb24uYy0zMjYtXHRsb2NrX2RldmljZV9ob3RwbHVnKCk7XG5kcml2ZXJzL3hlbi9iYWxsb29uLmM6MzI3Olx0cmMgPSBhZGRfbWVtb3J5X3Jlc291cmNlKG5pZCwgcmVzb3VyY2UsIE1IUF9NRVJHRV9SRVNPVVJDRSk7XG5kcml2ZXJzL3hlbi9iYWxsb29uLmMtMzI4LVx0dW5sb2NrX2RldmljZV9ob3RwbHVnKCk7XG4tLVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oPTM1PXR5cGVkZWYgaW50IF9fYml0d2lzZSBtaHBfdDtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtNDAtICogQWxsb3cgbWVyZ2luZyBvZiB0aGUgYWRkZWQgU3lzdGVtIFJBTSByZXNvdXJjZSB3aXRoIGFkamFjZW50LFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjQxOiAqIG1lcmdlYWJsZSByZXNvdXJjZXMuIEFmdGVyIGEgc3VjY2Vzc2Z1bCBjYWxsIHRvIGFkZF9tZW1vcnlfcmVzb3VyY2UoKVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTQyLSAqIHdpdGggdGhpcyBmbGFnIHNldCwgdGhlIHJlc291cmNlIHBvaW50ZXIgbXVzdCBubyBsb25nZXIgYmUgdXNlZCBhcyBpdFxuLS1cbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaD0yOTQ9ZXh0ZXJuIGludCBhZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsIG1ocF90IG1ocF9mbGFncyk7XG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6Mjk1OmV4dGVybiBpbnQgYWRkX21lbW9yeV9yZXNvdXJjZShpbnQgbmlkLCBzdHJ1Y3QgcmVzb3VyY2UgKnJlc291cmNlLFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI5Ni1cdFx0XHQgICAgICAgbWhwX3QgbWhwX2ZsYWdzKTtcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTMxOT1zdGF0aWMgaW50IGNoZWNrX3Bmbl9zcGFuKHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMzI1LVx0ICogb25saW5lLCBzbyB0aGlzIGNoZWNrIHNob3VsZCBvbmx5IGZpcmUgZm9yIGRpcmVjdFxubW0vbWVtb3J5X2hvdHBsdWcuYzozMjY6XHQgKiBhcmNoX3thZGQscmVtb3ZlfV9tZW1vcnkoKSB1c2VycyBvdXRzaWRlIG9mIGFkZF9tZW1vcnlfcmVzb3VyY2UoKS5cbm1tL21lbW9yeV9ob3RwbHVnLmMtMzI3LVx0ICovXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYz0xNDQxPXN0YXRpYyBpbnQgY3JlYXRlX2FsdG1hcHNfYW5kX21lbW9yeV9ibG9ja3MoaW50IG5pZCwgc3RydWN0IG1lbW9yeV9ncm91cCAqZ3JvdXAsXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNDk0LSAqL1xubW0vbWVtb3J5X2hvdHBsdWcuYzoxNDk1OmludCBhZGRfbWVtb3J5X3Jlc291cmNlKGludCBuaWQsIHN0cnVjdCByZXNvdXJjZSAqcmVzLCBtaHBfdCBtaHBfZmxhZ3MpXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE0OTYte1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMTYwMS1cbm1tL21lbW9yeV9ob3RwbHVnLmM6MTYwMjovKiByZXF1aXJlcyBkZXZpY2VfaG90cGx1Z19sb2NrLCBzZWUgYWRkX21lbW9yeV9yZXNvdXJjZSgpICovXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MDMtaW50IF9fYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBtaHBfdCBtaHBfZmxhZ3MpXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjExLVxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNjEyOlx0cmV0ID0gYWRkX21lbW9yeV9yZXNvdXJjZShuaWQsIHJlcywgbWhwX2ZsYWdzKTtcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTYxMy1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYz0xNjUxPWludCBhZGRfbWVtb3J5X2RyaXZlcl9tYW5hZ2VkKGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjY5LVxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNjcwOlx0cmMgPSBhZGRfbWVtb3J5X3Jlc291cmNlKG5pZCwgcmVzLCBtaHBfZmxhZ3MpO1xubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjcxLVx0aWYgKHJjIFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTc3CgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJhY2luZyBNZW1vcnkgQWxsb2NhdGlvbiBDYWxscyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IG1lbW9yeSBpcyBhbGxvY2F0ZWQgd2l0aGluIHRoaXMgc3lzdGVtLiBJIHNlZSBgYWRkX21lbW9yeV9yZXNvdXJjZWAgYmVpbmcgaW52b2tlZCwgYW5kIHRoYXQmIzM5O3MgYSBrZXkgZnVuY3Rpb24gZm9yIG1hbmFnaW5nIG1lbW9yeSByZXNvdXJjZXMuIE5vdywgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBwcmltYXJpbHkgY2FsbGVkIGZyb20gYF9fYWRkX21lbW9yeWAgYW5kIGBhZGRfbWVtb3J5X2RyaXZlcl9tYW5hZ2VkYCwgd2hpY2ggbWFrZXMgc2Vuc2UgYXMgdGhlc2UgbGlrZWx5IHJlcHJlc2VudCB0aGUgY29yZSBhbGxvY2F0aW9uIGxvZ2ljIGFuZCBkcml2ZXItc3BlY2lmaWMgbWFuYWdlbWVudCwgcmVzcGVjdGl2ZWx5LgoKSG93ZXZlciwgYF9fYWRkX21lbW9yeWAgaXRzZWxmIGlzIGNhbGxlZCBieSBgYWRkX21lbW9yeWAuIFRoaXMgc3VnZ2VzdHMgYGFkZF9tZW1vcnlgIGNvdWxkIGJlIHRoZSBoaWdoLWxldmVsLCBleHRlcm5hbCBmYWNpbmcgZnVuY3Rpb24gZm9yIGFkZGluZyBtZW1vcnkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGhpZXJhcmNoeSBmcm9tIHRoZSB0b3AgZG93bi4KClRoZXJlZm9yZSwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHBpbnBvaW50IHRoZSBjYWxsZXJzIG9mIGBhZGRfbWVtb3J5YC4gS25vd2luZyB3aGVyZSAqdGhhdCogZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkIGZyb20gd2lsbCBpbGx1bWluYXRlIHRoZSBlbnRpcmUgcHJvY2Vzcy4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgYmFjayB0byB0aGUgb3JpZ2luYXRpbmcgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FkZF9tZW1vcnkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9tZW1vcnktaG90cGx1Zy5yc3Q9MTczPW1lbW9yeSBmYXN0ZXIgdGhhbiBleHBlY3RlZDpcbi0tXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL21lbW9yeS1ob3RwbHVnLnJzdC0xNzYtICBtZW1faG90cGx1Z19sb2NrXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL21lbW9yeS1ob3RwbHVnLnJzdDoxNzc6LSBhZGRfbWVtb3J5X3Jlc291cmNlKCkgd2lsbCBmaXJzdCB0YWtlIHRoZSBtZW1faG90cGx1Z19sb2NrLCBmb2xsb3dlZCBieVxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9tZW1vcnktaG90cGx1Zy5yc3QtMTc4LSAgdGhlIGRldmljZV9sb2NrKCkgKHdoaWxlIGNyZWF0aW5nIHRoZSBkZXZpY2VzLCBkdXJpbmcgYnVzX2FkZF9kZXZpY2UoKSkuXG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9tZW1vcnktbW9kZWwucnN0PTE1NT10aGlzIGxhY2sgb2YgdXNlci1hcGkgY29uc3RyYWludCB0byBhbGxvdyBzdWItc2VjdGlvbiBzaXplZCBtZW1vcnlcbkRvY3VtZW50YXRpb24vbW0vbWVtb3J5LW1vZGVsLnJzdDoxNTY6cmFuZ2VzIHRvIGJlIHNwZWNpZmllZCB0byA6YzpmdW5jOmBhcmNoX2FkZF9tZW1vcnlgLCB0aGUgdG9wLWhhbGYgb2ZcbkRvY3VtZW50YXRpb24vbW0vbWVtb3J5LW1vZGVsLnJzdC0xNTctbWVtb3J5IGhvdHBsdWcuIFN1Yi1zZWN0aW9uIHN1cHBvcnQgYWxsb3dzIGZvciAyTUIgYXMgdGhlIGNyb3NzLWFyY2hcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9jb3JlLWFwaS9tZW1vcnktaG90cGx1Zy5yc3Q9ODc9Tk9USUZZX1NUT1DlgZzmraLlr7npgJrnn6XpmJ/liJfnmoTov5vkuIDmraXlpITnkIbjgIJcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9jb3JlLWFwaS9tZW1vcnktaG90cGx1Zy5yc3QtMTA1LVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vY29yZS1hcGkvbWVtb3J5LWhvdHBsdWcucnN0OjEwNjotIGFkZF9tZW1vcnlfcmVzb3VyY2UoKeWwhummluWFiOS9v+eUqG1lbV9ob3RwbHVnX2xvY2vvvIznhLblkI7mmK9kZXZpY2VfbG9jaygp77yI5Zyo5YibXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9jb3JlLWFwaS9tZW1vcnktaG90cGx1Zy5yc3QtMTA3LSAg5bu66K6+5aSH5pe277yM5ZyoYnVzX2FkZF9kZXZpY2UoKeacn+mXtO+8ieOAglxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL21lbW9yeS1tb2RlbC5yc3Q9MTA3PVpPTkVfREVWSUNFXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vbWVtb3J5LW1vZGVsLnJzdC0xMjEt5LiK44CC6L+Z5Liq5a6e546w5L6d6LWW5LqO6L+Z56eN57y65LmP55So5oi35o6l5Y+j55qE57qm5p2f77yM5YWB6K645a2Q5q615aSn5bCP55qE5YaF5a2Y6IyD5Zu06KKr5oyH5a6a57uZXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9tZW1vcnktbW9kZWwucnN0OjEyMjo6YzpmdW5jOmBhcmNoX2FkZF9tZW1vcnlgIO+8jOWNs+WGheWtmOeDreaPkuaLlOeahOS4iuWNiumDqOWIhuOAguWtkOauteaUr+aMgeWFgeiuuDJNQuS9nOS4ulxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vbWVtb3J5LW1vZGVsLnJzdC0xMjMtOmM6ZnVuYzpgZGV2bV9tZW1yZW1hcF9wYWdlc2Ag55qE6Leo5p625p6E6YCa55So5a+56b2Q6aKX57KS5bqm44CCXG4tLVxuYXJjaC9hcmMvbW0vaW5pdC5jPTQ5PWVhcmx5X3BhcmFtKFwmIzM0O21lbVwmIzM0Oywgc2V0dXBfbWVtX3N6KTtcbmFyY2gvYXJjL21tL2luaXQuYy01MC1cbmFyY2gvYXJjL21tL2luaXQuYzo1MTp2b2lkIF9faW5pdCBlYXJseV9pbml0X2R0X2FkZF9tZW1vcnlfYXJjaCh1NjQgYmFzZSwgdTY0IHNpemUpXG5hcmNoL2FyYy9tbS9pbml0LmMtNTIte1xuLS1cbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3NldHVwLmg9MjA9c3RhdGljIGNvbnN0IHN0cnVjdCB0YWd0YWJsZSBfX3RhZ3RhYmxlXyMjZm4gX190YWcgPSB7IHRhZywgZm4gfVxuYXJjaC9hcm0vaW5jbHVkZS9hc20vc2V0dXAuaC0yMS1cbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3NldHVwLmg6MjI6ZXh0ZXJuIGludCBhcm1fYWRkX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKTtcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3NldHVwLmgtMjMtZXh0ZXJuIF9fcHJpbnRmKDEsIDIpIHZvaWQgZWFybHlfcHJpbnQoY29uc3QgY2hhciAqc3RyLCAuLi4pO1xuLS1cbmFyY2gvYXJtL2tlcm5lbC9hdGFnc19wYXJzZS5jPTY1PXN0YXRpYyBpbnQgX19pbml0IHBhcnNlX3RhZ19tZW0zMihjb25zdCBzdHJ1Y3QgdGFnICp0YWcpXG5hcmNoL2FybS9rZXJuZWwvYXRhZ3NfcGFyc2UuYy02Ni17XG5hcmNoL2FybS9rZXJuZWwvYXRhZ3NfcGFyc2UuYzo2NzpcdHJldHVybiBhcm1fYWRkX21lbW9yeSh0YWctXHUwMDNldS5tZW0uc3RhcnQsIHRhZy1cdTAwM2V1Lm1lbS5zaXplKTtcbmFyY2gvYXJtL2tlcm5lbC9hdGFnc19wYXJzZS5jLTY4LX1cbi0tXG5hcmNoL2FybS9rZXJuZWwvc2V0dXAuYz03NDY9dm9pZCBfX2luaXQgZHVtcF9tYWNoaW5lX3RhYmxlKHZvaWQpXG4tLVxuYXJjaC9hcm0va2VybmVsL3NldHVwLmMtNzU5LVxuYXJjaC9hcm0va2VybmVsL3NldHVwLmM6NzYwOmludCBfX2luaXQgYXJtX2FkZF9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSlcbmFyY2gvYXJtL2tlcm5lbC9zZXR1cC5jLTc2MS17XG4tLVxuYXJjaC9hcm0va2VybmVsL3NldHVwLmM9ODI2PXN0YXRpYyBpbnQgX19pbml0IGVhcmx5X21lbShjaGFyICpwKVxuLS1cbmFyY2gvYXJtL2tlcm5lbC9zZXR1cC5jLTg0OC1cbmFyY2gvYXJtL2tlcm5lbC9zZXR1cC5jOjg0OTpcdGFybV9hZGRfbWVtb3J5KHN0YXJ0LCBzaXplKTtcbmFyY2gvYXJtL2tlcm5lbC9zZXR1cC5jLTg1MC1cbi0tXG5hcmNoL2FybTY0L21tL21tdS5jPTE5NTM9c3RydWN0IHJhbmdlIGFyY2hfZ2V0X21hcHBhYmxlX3JhbmdlKHZvaWQpXG4tLVxuYXJjaC9hcm02NC9tbS9tbXUuYy0xOTg0LVxuYXJjaC9hcm02NC9tbS9tbXUuYzoxOTg1OmludCBhcmNoX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSxcbmFyY2gvYXJtNjQvbW0vbW11LmMtMTk4Ni1cdFx0ICAgIHN0cnVjdCBtaHBfcGFyYW1zICpwYXJhbXMpXG4tLVxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jPTY0PXZvaWQgX19pbml0IGZpeHJhbmdlX2luaXQodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIHBnZF90ICpwZ2RfYmFzZSlcbi0tXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmMtMTA2LSNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvbG9vbmdhcmNoL21tL2luaXQuYzoxMDc6aW50IGFyY2hfYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBzdHJ1Y3QgbWhwX3BhcmFtcyAqcGFyYW1zKVxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTEwOC17XG4tLVxuYXJjaC9taXBzL2dlbmVyaWMvYm9hcmQtaW5nZW5pYy5jPTEwOD1zdGF0aWMgX19pbml0IGNvbnN0IHZvaWQgKmluZ2VuaWNfZml4dXBfZmR0KGNvbnN0IHZvaWQgKmZkdCwgY29uc3Qgdm9pZCAqbWF0Y2hfZGF0YSlcbi0tXG5hcmNoL21pcHMvZ2VuZXJpYy9ib2FyZC1pbmdlbmljLmMtMTE1LVx0ICAgIGZkdF9wYXRoX29mZnNldChmZHQsIFwmIzM0Oy9tZW1vcnlcJiMzNDspIFx1MDAzYyAwKVxuYXJjaC9taXBzL2dlbmVyaWMvYm9hcmQtaW5nZW5pYy5jOjExNjpcdFx0ZWFybHlfaW5pdF9kdF9hZGRfbWVtb3J5X2FyY2goMCwgU1pfMzJNKTtcbmFyY2gvbWlwcy9nZW5lcmljL2JvYXJkLWluZ2VuaWMuYy0xMTctXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmM9NjEzPXN0YXRpYyBpbnQgYWRkX21lbV90b19tZW1ibG9jayA9IDE7XG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmMtNjE3LVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmM6NjE4OnZvaWQgX19pbml0IGVhcmx5X2luaXRfZHRfYWRkX21lbW9yeV9hcmNoKHU2NCBiYXNlLCB1NjQgc2l6ZSlcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jLTYxOS17XG4tLVxuYXJjaC9wb3dlcnBjL21tL21lbS5jPTEyOT1pbnQgX19yZWYgYWRkX3BhZ2VzKGludCBuaWQsIHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9tZW0uYy0xNDQtXG5hcmNoL3Bvd2VycGMvbW0vbWVtLmM6MTQ1OmludCBfX3JlZiBhcmNoX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSxcbmFyY2gvcG93ZXJwYy9tbS9tZW0uYy0xNDYtXHRcdFx0ICBzdHJ1Y3QgbWhwX3BhcmFtcyAqcGFyYW1zKVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jPTU2ND1zdGF0aWMgaW50IGRscGFyX2FkZF9sbWIoc3RydWN0IGRybWVtX2xtYiAqbG1iKVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jLTU4Ni1cdC8qIEFkZCB0aGUgbWVtb3J5ICovXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYzo1ODc6XHRyYyA9IF9fYWRkX21lbW9yeShuaWQsIGxtYi1cdTAwM2ViYXNlX2FkZHIsIGJsb2NrX3N6LCBNSFBfTUVNTUFQX09OX01FTU9SWSk7XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYy01ODgtXHRpZiAocmMpIHtcbi0tXG5hcmNoL3Jpc2N2L21tL2luaXQuYz0xNzA0PXN0cnVjdCByYW5nZSBhcmNoX2dldF9tYXBwYWJsZV9yYW5nZSh2b2lkKVxuLS1cbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTE3MTItXG5hcmNoL3Jpc2N2L21tL2luaXQuYzoxNzEzOmludCBfX3JlZiBhcmNoX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSwgc3RydWN0IG1ocF9wYXJhbXMgKnBhcmFtcylcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTE3MTQte1xuLS1cbmFyY2gvczM5MC9tbS9pbml0LmM9MjU2PWRldmljZV9pbml0Y2FsbChzMzkwX2NtYV9tZW1faW5pdCk7XG4tLVxuYXJjaC9zMzkwL21tL2luaXQuYy0yNTktXG5hcmNoL3MzOTAvbW0vaW5pdC5jOjI2MDppbnQgYXJjaF9hZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsXG5hcmNoL3MzOTAvbW0vaW5pdC5jLTI2MS1cdFx0ICAgIHN0cnVjdCBtaHBfcGFyYW1zICpwYXJhbXMpXG4tLVxuYXJjaC94ODYvbW0vaW5pdF82NC5jPTk2ND1pbnQgYWRkX3BhZ2VzKGludCBuaWQsIHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLFxuLS1cbmFyY2gveDg2L21tL2luaXRfNjQuYy05OTEtXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM6OTkyOmludCBhcmNoX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSxcbmFyY2gveDg2L21tL2luaXRfNjQuYy05OTMtXHRcdCAgICBzdHJ1Y3QgbWhwX3BhcmFtcyAqcGFyYW1zKVxuLS1cbmRyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYz0xNjg9c3RhdGljIGludCBhY3BpX21lbW9yeV9lbmFibGVfZGV2aWNlKHN0cnVjdCBhY3BpX21lbW9yeV9kZXZpY2UgKm1lbV9kZXZpY2UpXG4tLVxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jLTIxMi1cdFx0bWhwX2ZsYWdzIHw9IE1IUF9NRU1NQVBfT05fTUVNT1JZO1xuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jOjIxMzpcdFx0cmVzdWx0ID0gX19hZGRfbWVtb3J5KG1naWQsIGluZm8tXHUwMDNlc3RhcnRfYWRkciwgaW5mby1cdTAwM2VsZW5ndGgsXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmMtMjE0LVx0XHRcdFx0ICAgICAgbWhwX2ZsYWdzKTtcbi0tXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmMtMjE2LVx0XHQvKlxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jOjIxNzpcdFx0ICogSWYgdGhlIG1lbW9yeSBibG9jayBoYXMgYmVlbiB1c2VkIGJ5IHRoZSBrZXJuZWwsIGFkZF9tZW1vcnkoKVxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jOjIxODpcdFx0ICogcmV0dXJucyAtRUVYSVNULiBJZiBhZGRfbWVtb3J5KCkgcmV0dXJucyB0aGUgb3RoZXIgZXJyb3IsIGl0XG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmMtMjE5LVx0XHQgKiBtZWFucyB0aGF0IHRoaXMgbWVtb3J5IGJsb2NrIGlzIG5vdCB1c2VkIGJ5IHRoZSBrZXJuZWwuXG4tLVxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jLTIzMi1cdFx0LypcbmRyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYzoyMzM6XHRcdCAqIEFkZCBudW1fZW5hYmxlIGV2ZW4gaWYgYWRkX21lbW9yeSgpIHJldHVybnMgLUVFWElTVCwgc28gdGhlXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmMtMjM0LVx0XHQgKiBkZXZpY2UgaXMgYm91bmQgdG8gdGhpcyBkcml2ZXIuXG4tLVxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jLTIzOC1cdGlmICghbnVtX2VuYWJsZWQpIHtcbmRyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYzoyMzk6XHRcdGRldl9lcnIoXHUwMDI2bWVtX2RldmljZS1cdTAwM2VkZXZpY2UtXHUwMDNlZGV2LCBcJiMzNDthZGRfbWVtb3J5IGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmMtMjQwLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL2FjcGkvc2Nhbi5jPTI4MjE9dm9pZCBfX2luaXQgYWNwaV9zY2FuX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL2FjcGkvc2Nhbi5jLTI4NjEtXHQvKlxuZHJpdmVycy9hY3BpL3NjYW4uYzoyODYyOlx0ICogQWx0aG91Z2ggd2UgY2FsbCBfX2FkZF9tZW1vcnkoKSB0aGF0IGlzIGRvY3VtZW50ZWQgdG8gcmVxdWlyZSB0aGVcbmRyaXZlcnMvYWNwaS9zY2FuLmMtMjg2My1cdCAqIGRldmljZV9ob3RwbHVnX2xvY2ssIGl0IGlzIG5vdCBuZWNlc3NhcnkgaGVyZSBiZWNhdXNlIHRoaXMgaXMgYW5cbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9NTYzPXN0YXRpYyBzc2l6ZV90IHByb2JlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTU4MS1cdG5pZCA9IG1lbW9yeV9hZGRfcGh5c2FkZHJfdG9fbmlkKHBoeXNfYWRkcik7XG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6NTgyOlx0cmV0ID0gX19hZGRfbWVtb3J5KG5pZCwgcGh5c19hZGRyLFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTU4My1cdFx0XHQgICBNSU5fTUVNT1JZX0JMT0NLX1NJWkUgKiBzZWN0aW9uc19wZXJfYmxvY2ssXG4tLVxuZHJpdmVycy9iYXNlL21lbW9yeS5jPTY3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqbWVtb3J5X21lbWJsa19hdHRyX2dyb3Vwc1tdID0ge1xuLS1cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy02ODEtXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6NjgyOnN0YXRpYyBpbnQgX19hZGRfbWVtb3J5X2Jsb2NrKHN0cnVjdCBtZW1vcnlfYmxvY2sgKm1lbW9yeSlcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy02ODMte1xuLS1cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz03NTQ9dm9pZCBtZW1vcnlfYmxvY2tfYWRkX25pZF9lYXJseShzdHJ1Y3QgbWVtb3J5X2Jsb2NrICptZW0sIGludCBuaWQpXG4tLVxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTc4MC1cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYzo3ODE6c3RhdGljIGludCBhZGRfbWVtb3J5X2Jsb2NrKHVuc2lnbmVkIGxvbmcgYmxvY2tfaWQsIGludCBuaWQsIHVuc2lnbmVkIGxvbmcgc3RhdGUsXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtNzgyLVx0XHRcdCAgICBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtODEyLVxuZHJpdmVycy9iYXNlL21lbW9yeS5jOjgxMzpcdHJldCA9IF9fYWRkX21lbW9yeV9ibG9jayhtZW0pO1xuZHJpdmVycy9iYXNlL21lbW9yeS5jLTgxNC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9iYXNlL21lbW9yeS5jPTg1MT1pbnQgY3JlYXRlX21lbW9yeV9ibG9ja19kZXZpY2VzKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgc2l6ZSxcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtODY1LVx0Zm9yIChibG9ja19pZCA9IHN0YXJ0X2Jsb2NrX2lkOyBibG9ja19pZCAhPSBlbmRfYmxvY2tfaWQ7IGJsb2NrX2lkJiM0MzsmIzQzOykge1xuZHJpdmVycy9iYXNlL21lbW9yeS5jOjg2NjpcdFx0cmV0ID0gYWRkX21lbW9yeV9ibG9jayhibG9ja19pZCwgbmlkLCBNRU1fT0ZGTElORSwgYWx0bWFwLCBncm91cCk7XG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtODY3LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz05NDM9dm9pZCBfX2luaXQgbWVtb3J5X2Rldl9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTk3MC1cdFx0YmxvY2tfaWQgPSBtZW1vcnlfYmxvY2tfaWQobnIpO1xuZHJpdmVycy9iYXNlL21lbW9yeS5jOjk3MTpcdFx0cmV0ID0gYWRkX21lbW9yeV9ibG9jayhibG9ja19pZCwgTlVNQV9OT19OT0RFLCBNRU1fT05MSU5FLCBOVUxMLCBOVUxMKTtcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy05NzItXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL2RheC9LY29uZmlnPTczPWNvbmZpZyBERVZfREFYX0tNRU1cbi0tXG5kcml2ZXJzL2RheC9LY29uZmlnLTc2LVx0ZGVwZW5kcyBvbiBERVZfREFYXG5kcml2ZXJzL2RheC9LY29uZmlnOjc3Olx0ZGVwZW5kcyBvbiBNRU1PUllfSE9UUExVRyAjIGZvciBhZGRfbWVtb3J5KCkgYW5kIGZyaWVuZHNcbmRyaXZlcnMvZGF4L0tjb25maWctNzgtXHRoZWxwXG4tLVxuZHJpdmVycy9kYXgva21lbS5jLTI1LVxuZHJpdmVycy9kYXgva21lbS5jOjI2Oi8qIE1lbW9yeSByZXNvdXJjZSBuYW1lIHVzZWQgZm9yIGFkZF9tZW1vcnlfZHJpdmVyX21hbmFnZWQoKS4gKi9cbmRyaXZlcnMvZGF4L2ttZW0uYy0yNy1zdGF0aWMgY29uc3QgY2hhciAqa21lbV9uYW1lO1xuLS1cbmRyaXZlcnMvZGF4L2ttZW0uYz02OD1zdGF0aWMgaW50IGRldl9kYXhfa21lbV9wcm9iZShzdHJ1Y3QgZGV2X2RheCAqZGV2X2RheClcbi0tXG5kcml2ZXJzL2RheC9rbWVtLmMtMTYyLVx0XHQgKiBTZXQgZmxhZ3MgYXBwcm9wcmlhdGUgZm9yIFN5c3RlbSBSQU0uICBMZWF2ZSAuLi5fQlVTWSBjbGVhclxuZHJpdmVycy9kYXgva21lbS5jOjE2MzpcdFx0ICogc28gdGhhdCBhZGRfbWVtb3J5KCkgY2FuIGFkZCBhIGNoaWxkIHJlc291cmNlLiAgRG8gbm90XG5kcml2ZXJzL2RheC9rbWVtLmMtMTY0LVx0XHQgKiBpbmhlcml0IGZsYWdzIGZyb20gdGhlIHBhcmVudCBzaW5jZSBpdCBtYXkgc2V0IG5ldyBmbGFnc1xuZHJpdmVycy9kYXgva21lbS5jOjE2NTpcdFx0ICogdW5rbm93biB0byB1cyB0aGF0IHdpbGwgYnJlYWsgYWRkX21lbW9yeSgpIGJlbG93LlxuZHJpdmVycy9kYXgva21lbS5jLTE2Ni1cdFx0ICovXG4tLVxuZHJpdmVycy9kYXgva21lbS5jLTE3Ni1cdFx0ICovXG5kcml2ZXJzL2RheC9rbWVtLmM6MTc3Olx0XHRyYyA9IGFkZF9tZW1vcnlfZHJpdmVyX21hbmFnZWQoZGF0YS1cdTAwM2VtZ2lkLCByYW5nZS5zdGFydCxcbmRyaXZlcnMvZGF4L2ttZW0uYy0xNzgtXHRcdFx0XHRyYW5nZV9sZW4oXHUwMDI2cmFuZ2UpLCBrbWVtX25hbWUsIG1ocF9mbGFncyk7XG4tLVxuZHJpdmVycy9maXJtd2FyZS9lZmkvZWZpLWluaXQuYz0xNTk9c3RhdGljIF9faW5pdCB2b2lkIHJlc2VydmVfcmVnaW9ucyh2b2lkKVxuLS1cbmRyaXZlcnMvZmlybXdhcmUvZWZpL2VmaS1pbml0LmMtMjIwLVxuZHJpdmVycy9maXJtd2FyZS9lZmkvZWZpLWluaXQuYzoyMjE6XHRcdFx0ZWFybHlfaW5pdF9kdF9hZGRfbWVtb3J5X2FyY2gocGFkZHIsIHNpemUpO1xuZHJpdmVycy9maXJtd2FyZS9lZmkvZWZpLWluaXQuYy0yMjItXG4tLVxuZHJpdmVycy9maXJtd2FyZS9lZmkvbGlic3R1Yi9lZmlzdHViLmg9NDA1PXVuaW9uIGVmaV9keGVfc2VydmljZXNfdGFibGUge1xuLS1cbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIvZWZpc3R1Yi5oLTQwNy1cdFx0ZWZpX3RhYmxlX2hkcl90IGhkcjtcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIvZWZpc3R1Yi5oOjQwODpcdFx0dm9pZCAqYWRkX21lbW9yeV9zcGFjZTtcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIvZWZpc3R1Yi5oLTQwOS1cdFx0dm9pZCAqYWxsb2NhdGVfbWVtb3J5X3NwYWNlO1xuLS1cbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIvZWZpc3R1Yi5oLTQzMC1cdFx0ZWZpX3RhYmxlX2hkcl90IGhkcjtcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIvZWZpc3R1Yi5oOjQzMTpcdFx0dTMyIGFkZF9tZW1vcnlfc3BhY2U7XG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9saWJzdHViL2VmaXN0dWIuaC00MzItXHRcdHUzMiBhbGxvY2F0ZV9tZW1vcnlfc3BhY2U7XG4tLVxuZHJpdmVycy9maXJtd2FyZS9xY29tL3Fjb21fdHptZW0uYz0xODQ9c3RhdGljIHZvaWQgcWNvbV90em1lbV9jbGVhbnVwX2FyZWEoc3RydWN0IHFjb21fdHptZW1fYXJlYSAqYXJlYSlcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL3Fjb20vcWNvbV90em1lbS5jLTE5My1cbmRyaXZlcnMvZmlybXdhcmUvcWNvbS9xY29tX3R6bWVtLmM6MTk0OnN0YXRpYyBpbnQgcWNvbV90em1lbV9wb29sX2FkZF9tZW1vcnkoc3RydWN0IHFjb21fdHptZW1fcG9vbCAqcG9vbCxcbmRyaXZlcnMvZmlybXdhcmUvcWNvbS9xY29tX3R6bWVtLmMtMTk1LVx0XHRcdFx0ICAgICAgc2l6ZV90IHNpemUsIGdmcF90IGdmcClcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL3Fjb20vcWNvbV90em1lbS5jPTI0ND1xY29tX3R6bWVtX3Bvb2xfbmV3KGNvbnN0IHN0cnVjdCBxY29tX3R6bWVtX3Bvb2xfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9maXJtd2FyZS9xY29tL3Fjb21fdHptZW0uYy0yODEtXHRpZiAoY29uZmlnLVx1MDAzZWluaXRpYWxfc2l6ZSkge1xuZHJpdmVycy9maXJtd2FyZS9xY29tL3Fjb21fdHptZW0uYzoyODI6XHRcdHJldCA9IHFjb21fdHptZW1fcG9vbF9hZGRfbWVtb3J5KHBvb2wsIGNvbmZpZy1cdTAwM2Vpbml0aWFsX3NpemUsXG5kcml2ZXJzL2Zpcm13YXJlL3Fjb20vcWNvbV90em1lbS5jLTI4My1cdFx0XHRcdFx0XHQgR0ZQX0tFUk5FTCk7XG4tLVxuZHJpdmVycy9maXJtd2FyZS9xY29tL3Fjb21fdHptZW0uYz0zNzQ9c3RhdGljIGJvb2wgcWNvbV90em1lbV90cnlfZ3Jvd19wb29sKHN0cnVjdCBxY29tX3R6bWVtX3Bvb2wgKnBvb2wsXG4tLVxuZHJpdmVycy9maXJtd2FyZS9xY29tL3Fjb21fdHptZW0uYy0zOTEtXG5kcml2ZXJzL2Zpcm13YXJlL3Fjb20vcWNvbV90em1lbS5jOjM5MjpcdHJldHVybiAhcWNvbV90em1lbV9wb29sX2FkZF9tZW1vcnkocG9vbCwgcmVxdWVzdGVkLCBnZnApO1xuZHJpdmVycy9maXJtd2FyZS9xY29tL3Fjb21fdHptZW0uYy0zOTMtfVxuLS1cbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jPTcwNj1zdGF0aWMgdm9pZCBodl9tZW1faG90X2FkZCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIHNpemUsXG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtNzI4LVx0XHRuaWQgPSBtZW1vcnlfYWRkX3BoeXNhZGRyX3RvX25pZChQRk5fUEhZUyhzdGFydF9wZm4pKTtcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjcyOTpcdFx0cmV0ID0gYWRkX21lbW9yeShuaWQsIFBGTl9QSFlTKChzdGFydF9wZm4pKSxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTczMC1cdFx0XHRcdCBIQV9CWVRFU19JTl9DSFVOSywgTUhQX01FUkdFX1JFU09VUkNFKTtcbi0tXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYz0xNzAwPXN0YXRpYyBpbnQgaG90X2FkZF9lbmFibGVkKHZvaWQpXG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMTcwNi1cdCAqIERNX01FTV9IT1RfQUREX1JFUVVFU1QgZG9lc24mIzM5O3QgaGF2ZSB0aGUgTlVNQSBub2RlIGluZm9ybWF0aW9uIGZvclxuZHJpdmVycy9odi9odl9iYWxsb29uLmM6MTcwNzpcdCAqIGFkZF9tZW1vcnkoKS5cbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTE3MDgtXHQgKi9cbi0tXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYz0xOTM2PXN0YXRpYyBpbnQgYmFsbG9vbl9wcm9iZShzdHJ1Y3QgaHZfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMTk0Ny1cdCAqIEhvdC1hZGQgbXVzdCBvcGVyYXRlIGluIGNodW5rcyB0aGF0IGFyZSBvZiBzaXplIGVxdWFsIHRvIHRoZVxuZHJpdmVycy9odi9odl9iYWxsb29uLmM6MTk0ODpcdCAqIG1lbW9yeSBibG9jayBzaXplIGJlY2F1c2UgdGhhdCYjMzk7cyB3aGF0IHRoZSBjb3JlIGFkZF9tZW1vcnkoKVxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMTk0OS1cdCAqIGludGVyZmFjZSByZXF1aXJlcy4gVGhlIEh5cGVyLVYgaW50ZXJmYWNlIHJlcXVpcmVzIHRoYXQgdGhlIG1lbW9yeVxuLS1cbmRyaXZlcnMvb2YvZmR0LmM9MTAzNj1pbnQgX19pbml0IGVhcmx5X2luaXRfZHRfc2Nhbl9tZW1vcnkodm9pZClcbi0tXG5kcml2ZXJzL29mL2ZkdC5jLTEwNzQtXG5kcml2ZXJzL29mL2ZkdC5jOjEwNzU6XHRcdFx0ZWFybHlfaW5pdF9kdF9hZGRfbWVtb3J5X2FyY2goYmFzZSwgc2l6ZSk7XG5kcml2ZXJzL29mL2ZkdC5jLTEwNzYtXG4tLVxuZHJpdmVycy9vZi9mZHQuYz0xMDkwPWludCBfX2luaXQgZWFybHlfaW5pdF9kdF9zY2FuX2Nob3NlbihjaGFyICpjbWRsaW5lKVxuLS1cbmRyaXZlcnMvb2YvZmR0LmMtMTE1Ny1cbmRyaXZlcnMvb2YvZmR0LmM6MTE1ODp2b2lkIF9faW5pdCBfX3dlYWsgZWFybHlfaW5pdF9kdF9hZGRfbWVtb3J5X2FyY2godTY0IGJhc2UsIHU2NCBzaXplKVxuZHJpdmVycy9vZi9mZHQuYy0xMTU5LXtcbi0tXG5kcml2ZXJzL29mL2ZkdC5jPTEyMjc9dm9pZCBfX2luaXQgZWFybHlfaW5pdF9kdF9zY2FuX25vZGVzKHZvaWQpXG4tLVxuZHJpdmVycy9vZi9mZHQuYy0xMjM1LVxuZHJpdmVycy9vZi9mZHQuYzoxMjM2Olx0LyogU2V0dXAgbWVtb3J5LCBjYWxsaW5nIGVhcmx5X2luaXRfZHRfYWRkX21lbW9yeV9hcmNoICovXG5kcml2ZXJzL29mL2ZkdC5jLTEyMzctXHRlYXJseV9pbml0X2R0X3NjYW5fbWVtb3J5KCk7XG4tLVxuZHJpdmVycy9zMzkwL2NoYXIvc2NscF9tZW0uYz0xODk9c3RhdGljIHNzaXplX3Qgc2NscF9jb25maWdfbWVtX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9zMzkwL2NoYXIvc2NscF9tZW0uYy0yMjItXHRcdCAqIFNldCBlbnRpcmUgbWVtb3J5IGJsb2NrIENNTUEgc3RhdGUgdG8gbm9kYXQuIExhdGVyLCB3aGVuXG5kcml2ZXJzL3MzOTAvY2hhci9zY2xwX21lbS5jOjIyMzpcdFx0ICogcGFnZSB0YWJsZXMgcGFnZXMgYXJlIGFsbG9jYXRlZCB2aWEgX19hZGRfbWVtb3J5KCksIHRob3NlXG5kcml2ZXJzL3MzOTAvY2hhci9zY2xwX21lbS5jLTIyNC1cdFx0ICogcmVnaW9ucyBhcmUgbWFya2VkIF9fYXJjaF9zZXRfcGFnZV9kYXQoKS5cbi0tXG5kcml2ZXJzL3MzOTAvY2hhci9zY2xwX21lbS5jLTIyNi1cdFx0X19hcmNoX3NldF9wYWdlX25vZGF0KCh2b2lkICopX192YShhZGRyKSwgYmxvY2tfc2l6ZSBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVCk7XG5kcml2ZXJzL3MzOTAvY2hhci9zY2xwX21lbS5jOjIyNzpcdFx0cmMgPSBfX2FkZF9tZW1vcnkoMCwgYWRkciwgYmxvY2tfc2l6ZSxcbmRyaXZlcnMvczM5MC9jaGFyL3NjbHBfbWVtLmMtMjI4LVx0XHRcdFx0ICBzY2xwX21lbS1cdTAwM2VtZW1tYXBfb25fbWVtb3J5ID9cbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9Njc9ZW51bSB2aXJ0aW9fbWVtX3NibV9tYl9zdGF0ZSB7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTY5LVx0VklSVElPX01FTV9TQk1fTUJfVU5VU0VEID0gMCxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo3MDpcdC8qIChQYXJ0aWFsbHkpIHBsdWdnZWQsIG5vdCBhZGRlZCB0byBMaW51eC4gRXJyb3Igb24gYWRkX21lbW9yeSgpLiAqL1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTcxLVx0VklSVElPX01FTV9TQk1fTUJfUExVR0dFRCxcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9OTA9ZW51bSB2aXJ0aW9fbWVtX2JibV9iYl9zdGF0ZSB7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTkyLVx0VklSVElPX01FTV9CQk1fQkJfVU5VU0VEID0gMCxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo5MzpcdC8qIFBsdWdnZWQsIG5vdCBhZGRlZCB0byBMaW51eC4gRXJyb3Igb24gYWRkX21lbW9yeSgpLiAqL1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTk0LVx0VklSVElPX01FTV9CQk1fQkJfUExVR0dFRCxcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9MTAyPXN0cnVjdCB2aXJ0aW9fbWVtIHtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtMTQyLVx0ICogQ29weSBvZiBcJiMzNDtTeXN0ZW0gUkFNICh2aXJ0aW9fbWVtKVwmIzM0OyB0byBiZSB1c2VkIGZvclxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjE0MzpcdCAqIGFkZF9tZW1vcnlfZHJpdmVyX21hbmFnZWQoKS5cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy0xNDQtXHQgKi9cbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9NTg4PXN0YXRpYyBpbnQgdmlydGlvX21lbV9zYm1fc2Jfc3RhdGVzX3ByZXBhcmVfbmV4dF9tYihzdHJ1Y3QgdmlydGlvX21lbSAqdm0pXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTYxOS0gKi9cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo2MjA6c3RhdGljIGJvb2wgdmlydGlvX21lbV9jb3VsZF9hZGRfbWVtb3J5KHN0cnVjdCB2aXJ0aW9fbWVtICp2bSwgdWludDY0X3Qgc2l6ZSlcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy02MjEte1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy02MzUtICovXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6NjM2OnN0YXRpYyBpbnQgdmlydGlvX21lbV9hZGRfbWVtb3J5KHN0cnVjdCB2aXJ0aW9fbWVtICp2bSwgdWludDY0X3QgYWRkcixcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy02MzctXHRcdFx0XHQgdWludDY0X3Qgc2l6ZSlcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNjU1LVx0YXRvbWljNjRfYWRkKHNpemUsIFx1MDAyNnZtLVx1MDAzZW9mZmxpbmVfc2l6ZSk7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6NjU2Olx0cmMgPSBhZGRfbWVtb3J5X2RyaXZlcl9tYW5hZ2VkKHZtLVx1MDAzZW1naWQsIGFkZHIsIHNpemUsIHZtLVx1MDAzZXJlc291cmNlX25hbWUsXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNjU3LVx0XHRcdFx0ICAgICAgIE1IUF9NRVJHRV9SRVNPVVJDRSB8IE1IUF9OSURfSVNfTUdJRCk7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTY2OS0vKlxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjY3MDogKiBTZWUgdmlydGlvX21lbV9hZGRfbWVtb3J5KCk6IFRyeSBhZGRpbmcgYSBzaW5nbGUgTGludXggbWVtb3J5IGJsb2NrLlxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTY3MS0gKi9cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz02NzI9c3RhdGljIGludCB2aXJ0aW9fbWVtX3NibV9hZGRfbWIoc3RydWN0IHZpcnRpb19tZW0gKnZtLCB1bnNpZ25lZCBsb25nIG1iX2lkKVxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy02NzYtXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6Njc3Olx0cmV0dXJuIHZpcnRpb19tZW1fYWRkX21lbW9yeSh2bSwgYWRkciwgc2l6ZSk7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNjc4LX1cbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNjgwLS8qXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6NjgxOiAqIFNlZSB2aXJ0aW9fbWVtX2FkZF9tZW1vcnkoKTogVHJ5IGFkZGluZyBhIGJpZyBibG9jay5cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy02ODItICovXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9NjgzPXN0YXRpYyBpbnQgdmlydGlvX21lbV9iYm1fYWRkX2JiKHN0cnVjdCB2aXJ0aW9fbWVtICp2bSwgdW5zaWduZWQgbG9uZyBiYl9pZClcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNjg3LVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjY4ODpcdHJldHVybiB2aXJ0aW9fbWVtX2FkZF9tZW1vcnkodm0sIGFkZHIsIHNpemUpO1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTY4OS19XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jPTk3ND1zdGF0aWMgdm9pZCB2aXJ0aW9fbWVtX2JibV9ub3RpZnlfY2FuY2VsX29mZmxpbmUoc3RydWN0IHZpcnRpb19tZW0gKnZtLFxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy05ODUtLypcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo5ODY6ICogVGhpcyBjYWxsYmFjayB3aWxsIGVpdGhlciBiZSBjYWxsZWQgc3luY2hyb25vdXNseSBmcm9tIGFkZF9tZW1vcnkoKSBvclxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTk4Ny0gKiBhc3luY2hyb25vdXNseSAoZS5nLiwgdHJpZ2dlcmVkIHZpYSB1c2VyIHNwYWNlKS4gV2UgaGF2ZSB0byBiZSBjYXJlZnVsXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6OTg4OiAqIHdpdGggbG9ja2luZyB3aGVuIGNhbGxpbmcgYWRkX21lbW9yeSgpLlxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTk4OS0gKi9cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz05OTA9c3RhdGljIGludCB2aXJ0aW9fbWVtX21lbW9yeV9ub3RpZmllcl9jYihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLFxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy0xMDg3LVx0XHRpZiAoIWF0b21pY19yZWFkKFx1MDAyNnZtLVx1MDAzZXdxX2FjdGl2ZSkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6MTA4ODpcdFx0ICAgIHZpcnRpb19tZW1fY291bGRfYWRkX21lbW9yeSh2bSwgdm0tXHUwMDNlb2ZmbGluZV90aHJlc2hvbGQgLyAyKSlcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy0xMDg5LVx0XHRcdHZpcnRpb19tZW1fcmV0cnkodm0pO1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz0xNzYwPXN0YXRpYyBpbnQgdmlydGlvX21lbV9zYm1fcGx1Z19yZXF1ZXN0KHN0cnVjdCB2aXJ0aW9fbWVtICp2bSwgdWludDY0X3QgZGlmZilcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtMTc5My1cdHZpcnRpb19tZW1fc2JtX2Zvcl9lYWNoX21iKHZtLCBtYl9pZCwgVklSVElPX01FTV9TQk1fTUJfVU5VU0VEKSB7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6MTc5NDpcdFx0aWYgKCF2aXJ0aW9fbWVtX2NvdWxkX2FkZF9tZW1vcnkodm0sIG1lbW9yeV9ibG9ja19zaXplX2J5dGVzKCkpKVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTE3OTUtXHRcdFx0cmV0dXJuIC1FTk9TUEM7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTE4MDQtXHR3aGlsZSAobmJfc2IpIHtcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzoxODA1Olx0XHRpZiAoIXZpcnRpb19tZW1fY291bGRfYWRkX21lbW9yeSh2bSwgbWVtb3J5X2Jsb2NrX3NpemVfYnl0ZXMoKSkpXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtMTgwNi1cdFx0XHRyZXR1cm4gLUVOT1NQQztcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9MTg3OD1zdGF0aWMgaW50IHZpcnRpb19tZW1fYmJtX3BsdWdfcmVxdWVzdChzdHJ1Y3QgdmlydGlvX21lbSAqdm0sIHVpbnQ2NF90IGRpZmYpXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTE4ODgtXHR2aXJ0aW9fbWVtX2JibV9mb3JfZWFjaF9iYih2bSwgYmJfaWQsIFZJUlRJT19NRU1fQkJNX0JCX1VOVVNFRCkge1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjE4ODk6XHRcdGlmICghdmlydGlvX21lbV9jb3VsZF9hZGRfbWVtb3J5KHZtLCB2bS1cdTAwM2ViYm0uYmJfc2l6ZSkpXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtMTg5MC1cdFx0XHRyZXR1cm4gLUVOT1NQQztcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtMTkwMS1cdHdoaWxlIChuYl9iYikge1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjE5MDI6XHRcdGlmICghdmlydGlvX21lbV9jb3VsZF9hZGRfbWVtb3J5KHZtLCB2bS1cdTAwM2ViYm0uYmJfc2l6ZSkpXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtMTkwMy1cdFx0XHRyZXR1cm4gLUVOT1NQQztcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9Mjg3OT1zdGF0aWMgaW50IHZpcnRpb19tZW1fY3JlYXRlX3Jlc291cmNlKHN0cnVjdCB2aXJ0aW9fbWVtICp2bSlcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtMjkwMS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzoyOTAyOlx0LyogVGhlIG1lbW9yeSBpcyBub3QgYWN0dWFsbHkgYnVzeSAtIG1ha2UgYWRkX21lbW9yeSgpIHdvcmsuICovXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtMjkwMy1cdHZtLVx1MDAzZXBhcmVudF9yZXNvdXJjZS1cdTAwM2VmbGFncyBcdTAwMjY9IH5JT1JFU09VUkNFX0JVU1k7XG4tLVxuZHJpdmVycy94ZW4vYmFsbG9vbi5jPTI2ND1zdGF0aWMgZW51bSBicF9zdGF0ZSByZXNlcnZlX2FkZGl0aW9uYWxfbWVtb3J5KHZvaWQpXG4tLVxuZHJpdmVycy94ZW4vYmFsbG9vbi5jLTI5Ni0gICAgICAgIC8qXG5kcml2ZXJzL3hlbi9iYWxsb29uLmM6Mjk3OiAgICAgICAgICogYWRkX21lbW9yeSgpIHdpbGwgYnVpbGQgcGFnZSB0YWJsZXMgZm9yIHRoZSBuZXcgbWVtb3J5IHNvXG5kcml2ZXJzL3hlbi9iYWxsb29uLmMtMjk4LSAgICAgICAgICogdGhlIHAybSBtdXN0IGNvbnRhaW4gaW52YWxpZCBlbnRyaWVzIHNvIHRoZSBjb3JyZWN0XG4tLVxuZHJpdmVycy94ZW4vYmFsbG9vbi5jLTMxOC1cdC8qXG5kcml2ZXJzL3hlbi9iYWxsb29uLmM6MzE5Olx0ICogYWRkX21lbW9yeV9yZXNvdXJjZSgpIHdpbGwgY2FsbCBvbmxpbmVfcGFnZXMoKSB3aGljaCBpbiBpdHMgdHVyblxuZHJpdmVycy94ZW4vYmFsbG9vbi5jLTMyMC1cdCAqIHdpbGwgY2FsbCB4ZW5fb25saW5lX3BhZ2UoKSBjYWxsYmFjayBjYXVzaW5nIGRlYWRsb2NrIGlmIHdlIGRvbiYjMzk7dFxuLS1cbmRyaXZlcnMveGVuL2JhbGxvb24uYy0zMjQtXHRtdXRleF91bmxvY2soXHUwMDI2YmFsbG9vbl9tdXRleCk7XG5kcml2ZXJzL3hlbi9iYWxsb29uLmM6MzI1Olx0LyogYWRkX21lbW9yeV9yZXNvdXJjZSgpIHJlcXVpcmVzIHRoZSBkZXZpY2VfaG90cGx1ZyBsb2NrICovXG5kcml2ZXJzL3hlbi9iYWxsb29uLmMtMzI2LVx0bG9ja19kZXZpY2VfaG90cGx1ZygpO1xuZHJpdmVycy94ZW4vYmFsbG9vbi5jOjMyNzpcdHJjID0gYWRkX21lbW9yeV9yZXNvdXJjZShuaWQsIHJlc291cmNlLCBNSFBfTUVSR0VfUkVTT1VSQ0UpO1xuZHJpdmVycy94ZW4vYmFsbG9vbi5jLTMyOC1cdHVubG9ja19kZXZpY2VfaG90cGx1ZygpO1xuLS1cbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaD0zMj1zdHJ1Y3QgcGFnZSAqcGZuX3RvX29ubGluZV9wYWdlKHVuc2lnbmVkIGxvbmcgcGZuKTtcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0zMy1cbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDozNDovKiBGbGFncyBmb3IgYWRkX21lbW9yeSgpIGFuZCBmcmllbmRzIHRvIHNwZWNpZnkgbWVtb3J5IGhvdHBsdWcgZGV0YWlscy4gKi9cbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0zNS10eXBlZGVmIGludCBfX2JpdHdpc2UgbWhwX3Q7XG4tLVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTQwLSAqIEFsbG93IG1lcmdpbmcgb2YgdGhlIGFkZGVkIFN5c3RlbSBSQU0gcmVzb3VyY2Ugd2l0aCBhZGphY2VudCxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDo0MTogKiBtZXJnZWFibGUgcmVzb3VyY2VzLiBBZnRlciBhIHN1Y2Nlc3NmdWwgY2FsbCB0byBhZGRfbWVtb3J5X3Jlc291cmNlKClcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC00Mi0gKiB3aXRoIHRoaXMgZmxhZyBzZXQsIHRoZSByZXNvdXJjZSBwb2ludGVyIG11c3Qgbm8gbG9uZ2VyIGJlIHVzZWQgYXMgaXRcbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9MTIzPWV4dGVybiBpbnQgdHJ5X29ubGluZV9ub2RlKGludCBuaWQpO1xuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTEyNC1cbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDoxMjU6ZXh0ZXJuIGludCBhcmNoX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0xMjYtXHRcdFx0ICAgc3RydWN0IG1ocF9wYXJhbXMgKnBhcmFtcyk7XG4tLVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oPTI5Mj1leHRlcm4gaW50IF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KTtcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDoyOTM6ZXh0ZXJuIGludCBfX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSwgbWhwX3QgbWhwX2ZsYWdzKTtcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDoyOTQ6ZXh0ZXJuIGludCBhZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsIG1ocF90IG1ocF9mbGFncyk7XG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6Mjk1OmV4dGVybiBpbnQgYWRkX21lbW9yeV9yZXNvdXJjZShpbnQgbmlkLCBzdHJ1Y3QgcmVzb3VyY2UgKnJlc291cmNlLFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI5Ni1cdFx0XHQgICAgICAgbWhwX3QgbWhwX2ZsYWdzKTtcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDoyOTc6ZXh0ZXJuIGludCBhZGRfbWVtb3J5X2RyaXZlcl9tYW5hZ2VkKGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjk4LVx0XHRcdFx0ICAgICBjb25zdCBjaGFyICpyZXNvdXJjZV9uYW1lLFxuLS1cbmluY2x1ZGUvbGludXgvb2ZfZmR0Lmg9NzY9ZXh0ZXJuIHZvaWQgZWFybHlfaW5pdF9mZHRfcmVzZXJ2ZV9zZWxmKHZvaWQpO1xuaW5jbHVkZS9saW51eC9vZl9mZHQuaDo3NzpleHRlcm4gdm9pZCBlYXJseV9pbml0X2R0X2FkZF9tZW1vcnlfYXJjaCh1NjQgYmFzZSwgdTY0IHNpemUpO1xuaW5jbHVkZS9saW51eC9vZl9mZHQuaC03OC1leHRlcm4gdTY0IGR0X21lbV9uZXh0X2NlbGwoaW50IHMsIGNvbnN0IF9fYmUzMiAqKmNlbGxwKTtcbi0tXG5rZXJuZWwvcmVzb3VyY2UuYz0xNjAwPXN0YXRpYyBib29sIHN5c3RlbV9yYW1fcmVzb3VyY2VzX21lcmdlYWJsZShzdHJ1Y3QgcmVzb3VyY2UgKnIxLFxuLS1cbmtlcm5lbC9yZXNvdXJjZS5jLTE2MTQtICogVGhpcyBpbnRlcmZhY2UgaXMgaW50ZW5kZWQgZm9yIG1lbW9yeSBob3RwbHVnLCB3aGVyZWJ5IGxvdHMgb2YgY29udGlndW91c1xua2VybmVsL3Jlc291cmNlLmM6MTYxNTogKiBzeXN0ZW0gcmFtIHJlc291cmNlcyBhcmUgYWRkZWQgKGUuZy4sIHZpYSBhZGRfbWVtb3J5KigpKSBieSBhIGRyaXZlciwgYW5kXG5rZXJuZWwvcmVzb3VyY2UuYy0xNjE2LSAqIHRoZSBhY3R1YWwgcmVzb3VyY2UgYm91bmRhcmllcyBhcmUgbm90IG9mIGludGVyZXN0IChlLmcuLCBpdCBtaWdodCBiZVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmM9MzE5PXN0YXRpYyBpbnQgY2hlY2tfcGZuX3NwYW4odW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0zMjUtXHQgKiBvbmxpbmUsIHNvIHRoaXMgY2hlY2sgc2hvdWxkIG9ubHkgZmlyZSBmb3IgZGlyZWN0XG5tbS9tZW1vcnlfaG90cGx1Zy5jOjMyNjpcdCAqIGFyY2hfe2FkZCxyZW1vdmV9X21lbW9yeSgpIHVzZXJzIG91dHNpZGUgb2YgYWRkX21lbW9yeV9yZXNvdXJjZSgpLlxubW0vbWVtb3J5X2hvdHBsdWcuYy0zMjctXHQgKi9cbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTE0NDE9c3RhdGljIGludCBjcmVhdGVfYWx0bWFwc19hbmRfbWVtb3J5X2Jsb2NrcyhpbnQgbmlkLCBzdHJ1Y3QgbWVtb3J5X2dyb3VwICpncm91cCxcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE0NjUtXHRcdC8qIGNhbGwgYXJjaCYjMzk7cyBtZW1vcnkgaG90YWRkICovXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE0NjY6XHRcdHJldCA9IGFyY2hfYWRkX21lbW9yeShuaWQsIGN1cl9zdGFydCwgbWVtYmxvY2tfc2l6ZSwgXHUwMDI2cGFyYW1zKTtcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTQ2Ny1cdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMTQ5NC0gKi9cbm1tL21lbW9yeV9ob3RwbHVnLmM6MTQ5NTppbnQgYWRkX21lbW9yeV9yZXNvdXJjZShpbnQgbmlkLCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcywgbWhwX3QgbWhwX2ZsYWdzKVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNDk2LXtcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE1NTQtXHR9IGVsc2Uge1xubW0vbWVtb3J5X2hvdHBsdWcuYzoxNTU1Olx0XHRyZXQgPSBhcmNoX2FkZF9tZW1vcnkobmlkLCBzdGFydCwgc2l6ZSwgXHUwMDI2cGFyYW1zKTtcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTU1Ni1cdFx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MDEtXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE2MDI6LyogcmVxdWlyZXMgZGV2aWNlX2hvdHBsdWdfbG9jaywgc2VlIGFkZF9tZW1vcnlfcmVzb3VyY2UoKSAqL1xubW0vbWVtb3J5X2hvdHBsdWcuYzoxNjAzOmludCBfX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSwgbWhwX3QgbWhwX2ZsYWdzKVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjA0LXtcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MTEtXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE2MTI6XHRyZXQgPSBhZGRfbWVtb3J5X3Jlc291cmNlKG5pZCwgcmVzLCBtaHBfZmxhZ3MpO1xubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjEzLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MTctXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE2MTg6aW50IGFkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSwgbWhwX3QgbWhwX2ZsYWdzKVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjE5LXtcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MjItXHRsb2NrX2RldmljZV9ob3RwbHVnKCk7XG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE2MjM6XHRyYyA9IF9fYWRkX21lbW9yeShuaWQsIHN0YXJ0LCBzaXplLCBtaHBfZmxhZ3MpO1xubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjI0LVx0dW5sb2NrX2RldmljZV9ob3RwbHVnKCk7XG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjI3LX1cbm1tL21lbW9yeV9ob3RwbHVnLmM6MTYyODpFWFBPUlRfU1lNQk9MX0dQTChhZGRfbWVtb3J5KTtcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTYyOS1cbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2NTAtICovXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE2NTE6aW50IGFkZF9tZW1vcnlfZHJpdmVyX21hbmFnZWQoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTY1Mi1cdFx0XHQgICAgICBjb25zdCBjaGFyICpyZXNvdXJjZV9uYW1lLCBtaHBfdCBtaHBfZmxhZ3MpXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjY5LVxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNjcwOlx0cmMgPSBhZGRfbWVtb3J5X3Jlc291cmNlKG5pZCwgcmVzLCBtaHBfZmxhZ3MpO1xubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjcxLVx0aWYgKHJjIFx1MDAzYyAwKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMTY3Ny19XG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE2Nzg6RVhQT1JUX1NZTUJPTF9HUEwoYWRkX21lbW9yeV9kcml2ZXJfbWFuYWdlZCk7XG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2NzktXG4tLVxubW0vbWVtcmVtYXAuYz0xNDQ9c3RhdGljIGludCBwYWdlbWFwX3JhbmdlKHN0cnVjdCBkZXZfcGFnZW1hcCAqcGdtYXAsIHN0cnVjdCBtaHBfcGFyYW1zICpwYXJhbXMsXG4tLVxubW0vbWVtcmVtYXAuYy0yMDMtXHQgKiBvdmVyIHRoZSBkZXZpY2UgbWVtb3J5IGlzIHVuLWFjY2Vzc2libGUgdGh1cyB3ZSBkbyBub3Qgd2FudCB0b1xubW0vbWVtcmVtYXAuYzoyMDQ6XHQgKiBjcmVhdGUgYSBsaW5lYXIgbWFwcGluZyBmb3IgdGhlIG1lbW9yeSBsaWtlIGFyY2hfYWRkX21lbW9yeSgpXG5tbS9tZW1yZW1hcC5jLTIwNS1cdCAqIHdvdWxkIGRvLlxuLS1cbm1tL21lbXJlbWFwLmMtMjA4LVx0ICogdGhlIENQVSwgd2UgZG8gd2FudCB0aGUgbGluZWFyIG1hcHBpbmcgYW5kIHRodXMgdXNlXG5tbS9tZW1yZW1hcC5jOjIwOTpcdCAqIGFyY2hfYWRkX21lbW9yeSgpLlxubW0vbWVtcmVtYXAuYy0yMTAtXHQgKi9cbi0tXG5tbS9tZW1yZW1hcC5jLTIyMC1cbm1tL21lbXJlbWFwLmM6MjIxOlx0XHRlcnJvciA9IGFyY2hfYWRkX21lbW9yeShuaWQsIHJhbmdlLVx1MDAzZXN0YXJ0LCByYW5nZV9sZW4ocmFuZ2UpLFxubW0vbWVtcmVtYXAuYy0yMjItXHRcdFx0XHRcdHBhcmFtcyk7XG4tLVxubW0vbWVtcmVtYXAuYy0yMzUtXHRpZiAoZXJyb3IpXG5tbS9tZW1yZW1hcC5jOjIzNjpcdFx0Z290byBlcnJfYWRkX21lbW9yeTtcbm1tL21lbXJlbWFwLmMtMjM3LVxuLS1cbm1tL21lbXJlbWFwLmMtMjQ5LVxubW0vbWVtcmVtYXAuYzoyNTA6ZXJyX2FkZF9tZW1vcnk6XG5tbS9tZW1yZW1hcC5jLTI1MS1cdGlmICghaXNfcHJpdmF0ZSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc5MzUKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA1NzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNZW1vcnkgSG90cGx1ZyBQYXRjaCoqCgpPa2F5LCBzbyBgYWRkX21lbW9yeWAgaXMgdGhlIGZ1bmN0aW9uIHdlJiMzOTtyZSBpbnRlcmVzdGVkIGluLiBJdCYjMzk7cyB1c2VkIGJ5IHNldmVyYWwga2V5IGRyaXZlcnMg4oCTIGBodl9iYWxsb29uLmNgLCBgdmlydGlvX21lbS5jYCwgYGRheC9rbWVtLmNgLCBhbmQgYGFjcGlfbWVtaG90cGx1Zy5jYCDigJMgYW5kIGNydWNpYWxseSwgYWxzbyBieSB0aGUgc3lzZnMgcHJvYmUgc3RvcmUgaW4gYGJhc2UvbWVtb3J5LmNgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBiZWNhdXNlIGl0IG1lYW5zIHdlIGNhbiB0cmlnZ2VyIG1lbW9yeSBob3RwbHVnIGZyb20gdXNlcnNwYWNlIHZpYSBgL3N5cy9kZXZpY2VzL3N5c3RlbS9tZW1vcnkvcHJvYmVgLCBhc3N1bWluZyBgQ09ORklHX0FSQ0hfTUVNT1JZX1BST0JFYCBpcyBlbmFibGVkLiBXYWl0LCBgZHJpdmVycy9iYXNlL21lbW9yeS5jYCBhY3R1YWxseSBjYWxscyBgX19hZGRfbWVtb3J5YCB0aHJvdWdoIHRoZSBgcHJvYmVfc3RvcmVgIHBhdGgsIGFuZCBgdmlydGlvX21lbWAgYW5kIGBodl9iYWxsb29uYCBhbHNvIGRvIGl0LiBTbywgaXQmIzM5O3MgZGVmaW5pdGVseSBzb21ldGhpbmcgd2UgY2FuIHJlYWNoIGFuZCB0ZXN0IGVhc2lseSB3aXRoaW4gYSBWTSBlbnZpcm9ubWVudC4gRXhjZWxsZW50LgoKTm93LCBsZXQmIzM5O3MgZGl2ZSBiYWNrIGludG8gdGhpcyBwYXRjaC4gSSBzZWUgdGhlIG1haW4gY2hhbmdlIGlzIGhlcmU6CgpgYGBjCiAJLyogaW5pdCBub2RlJiMzOTtzIHpvbmVzIGFzIGVtcHR5IHpvbmVzLCB3ZSBkb24mIzM5O3QgaGF2ZSBhbnkgcHJlc2VudCBwYWdlcy4qLwotCWZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhwZ2RhdCk7CiYjNDM7CWlmIChmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcocGdkYXQpKQomIzQzOwkJcmV0dXJuIE5VTEw7CmBgYAoKQW5kIGFsc28sIHdpdGhpbiB0aGUgYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2AgZnVuY3Rpb246CgpgYGBjCi12b2lkIF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KQomIzQzO2ludCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCkKIHsKIAlpbnQgbmlkID0gcGdkYXQtJmd0O25vZGVfaWQ7CiAJZW51bSB6b25lX3R5cGUgejsKQEAgLTE1MzQsOCAmIzQzOzE1MzQsMTQgQEAgdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCkKIAogCXBnZGF0X2luaXRfaW50ZXJuYWxzKHBnZGF0KTsKIAotCWlmIChwZ2RhdC0mZ3Q7cGVyX2NwdV9ub2Rlc3RhdHMgPT0gJmFtcDtib290X25vZGVzdGF0cykKLQkJcGdkYXQtJmd0O3Blcl9jcHVfbm9kZXN0YXRzID0gYWxsb2NfcGVyY3B1KHN0cnVjdCBwZXJfY3B1X25vZGVzdGF0KTsKJiM0MzsJaWYgKHBnZGF0LSZndDtwZXJfY3B1X25vZGVzdGF0cyA9PSAmYW1wO2Jvb3Rfbm9kZXN0YXRzKSB7CiYjNDM7CQlzdHJ1Y3QgcGVyX2NwdV9ub2Rlc3RhdCBfX3BlcmNwdSAqcDsKJiM0MzsKJiM0MzsJCXAgPSBhbGxvY19wZXJjcHUoc3RydWN0IHBlcl9jcHVfbm9kZXN0YXQpOwomIzQzOwkJaWYgKCFwKQomIzQzOwkJCXJldHVybiAtRU5PTUVNOwomIzQzOwkJcGdkYXQtJmd0O3Blcl9jcHVfbm9kZXN0YXRzID0gcDsKJiM0MzsJfQpgYGAKClRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhlIHBhdGNoIG5vdyBoYW5kbGVzIHBvdGVudGlhbCBmYWlsdXJlcyBvZiB0aGUgYGFsbG9jX3BlcmNwdWAgY2FsbC4gVGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIGl0IGhhbmRsZXMgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3JzIGdyYWNlZnVsbHkuIFRoZSBwcmV2aW91cyB2ZXJzaW9uIG1pZ2h0IGhhdmUgc2ltcGx5IGNyYXNoZWQgaWYgYGFsbG9jX3BlcmNwdWAgZmFpbGVkLCB3aGljaCBjb3VsZCBsZWFkIHRvIGEgZGVuaWFsLW9mLXNlcnZpY2UgdnVsbmVyYWJpbGl0eS4KCk5vdywgd2hhdCBhcmUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zPyBJJiMzOTtsbCBuZWVkIGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgIGF0IGEgbWluaW11bS4gSSBzaG91bGQgY2hlY2sgZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXMgd2VsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX01FTU9SWV9IT1RQTFVHJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA3NDUgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vbWVtb3J5LWhvdHBsdWcucnN0PTI3Nj1UaGUgZm9sbG93aW5nIGZpbGVzIGFyZSBjdXJyZW50bHkgZGVmaW5lZDpcbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL21lbW9yeS1ob3RwbHVnLnJzdC0zMDAtXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL21lbW9yeS1ob3RwbHVnLnJzdDozMDE6XHRcdCAgICAgICBBdmFpbGFiaWxpdHkgZGVwZW5kcyBvbiB0aGUgQ09ORklHX01FTU9SWV9IT1RQTFVHIGtlcm5lbFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3QtMzAyLVx0XHQgICAgICAgY29uZmlndXJhdGlvbiBvcHRpb24uXG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0PTIxMD1HZW5lcmFsXG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTI0Ni0gIEEgbG9jayB0aGF0IHByb3RlY3RzIHRoZSBmaWVsZHMgZGVmaW5pbmcgdGhlIG5vZGUgZXh0ZW50cy4gT25seSBkZWZpbmVkIHdoZW5cbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdDoyNDc6ICBhdCBsZWFzdCBvbmUgb2YgYGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgYCBvclxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTI0OC0gIGBgQ09ORklHX0RFRkVSUkVEX1NUUlVDVF9QQUdFX0lOSVRgYCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGVuYWJsZWQuXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtMjQ5LSAgYGBwZ2RhdF9yZXNpemVfbG9jaygpYGAgYW5kIGBgcGdkYXRfcmVzaXplX3VubG9jaygpYGAgYXJlIHByb3ZpZGVkIHRvXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q6MjUwOiAgbWFuaXB1bGF0ZSBgYG5vZGVfc2l6ZV9sb2NrYGAgd2l0aG91dCBjaGVja2luZyBmb3IgYGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgYFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTI1MS0gIG9yIGBgQ09ORklHX0RFRkVSUkVEX1NUUlVDVF9QQUdFX0lOSVRgYC5cbi0tXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q9Mzc3PUdlbmVyYWxcbi0tXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtNDg4LSAgZWFybHkgYm9vdCwgZXhjbHVkaW5nIGhvdHBsdWdnZWQgbWVtb3J5LiBEZWZpbmVkIG9ubHkgd2hlblxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjQ4OTogIGBgQ09ORklHX01FTU9SWV9IT1RQTFVHYGAgaXMgZW5hYmxlZCBhbmQgaW5pdGlhbGl6ZWQgYnlcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC00OTAtICBgYGNhbGN1bGF0ZV9ub2RlX3RvdGFscGFnZXMoKWBgLlxuLS1cbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC01MDgtICB0aGUgbWFpbiBhbGxvY2F0b3IgcGF0aC4gSG93ZXZlciwgdGhlIHNlcWxvY2sgaXMgd3JpdHRlbiBxdWl0ZSBpbmZyZXF1ZW50bHkuXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q6NTA5OiAgRGVmaW5lZCBvbmx5IHdoZW4gYGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgYCBpcyBlbmFibGVkLlxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTUxMC1cbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9waHlzaWNhbF9tZW1vcnkucnN0PTIwNT1ub2RlX3pvbmVsaXN0c+W8leeUqOOAglxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtMjM0LWBgbm9kZV9zaXplX2xvY2tgYFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdDoyMzU65LiA5Liq5L+d5oqk5a6a5LmJ6IqC54K56IyD5Zu05a2X5q6155qE6ZSB44CC5LuF5Zyo5byA5ZCv5LqGIGBgQ09ORklHX01FTU9SWV9IT1RQTFVHYGAg5oiWXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTIzNi1gYENPTkZJR19ERUZFUlJFRF9TVFJVQ1RfUEFHRV9JTklUYGAg6YWN572u6YCJ6aG55Lit55qE5p+Q5LiA5Liq5pe25omN5a6a5LmJ44CC5o+QXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTIzNy3kvpvkuoYgYGBwZ2RhdF9yZXNpemVfbG9jaygpYGAg5ZKMIGBgcGdkYXRfcmVzaXplX3VubG9jaygpYGAg55So5p2l5pON5L2cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjIzODpgYG5vZGVfc2l6ZV9sb2NrYGDvvIzogIzml6DpnIDmo4Dmn6UgYGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgYCDmiJZcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtMjM5LWBgQ09ORklHX0RFRkVSUkVEX1NUUlVDVF9QQUdFX0lOSVRgYCDpgInpobnjgIJcbi0tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnPTEzMD1DT05GSUdfQkxLX0lOTElORV9FTkNSWVBUSU9OPXlcbi0tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTEzMi0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc6MTMzOkNPTkZJR19NRU1PUllfSE9UUExVRz15XG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTEzNC1DT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XG4tLVxuYXJjaC9hcm02NC9tbS9tbXUuYz0xNDI2PXZvaWQgX19pbml0IHBhZ2luZ19pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm02NC9tbS9tbXUuYy0xNDM1LVxuYXJjaC9hcm02NC9tbS9tbXUuYzoxNDM2OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvYXJtNjQvbW0vbW11LmMtMTQzNy1zdGF0aWMgdm9pZCBmcmVlX2hvdHBsdWdfcGFnZV9yYW5nZShzdHJ1Y3QgcGFnZSAqcGFnZSwgc2l6ZV90IHNpemUsXG4tLVxuYXJjaC9hcm02NC9tbS9tbXUuYz0xNzg1PWludCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgaW50IG5vZGUsXG4tLVxuYXJjaC9hcm02NC9tbS9tbXUuYy0xNzk4LVxuYXJjaC9hcm02NC9tbS9tbXUuYzoxNzk5OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvYXJtNjQvbW0vbW11LmMtMTgwMC12b2lkIHZtZW1tYXBfZnJlZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5hcmNoL2FybTY0L21tL21tdS5jLTE4MDctfVxuYXJjaC9hcm02NC9tbS9tbXUuYzoxODA4OiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cbmFyY2gvYXJtNjQvbW0vbW11LmMtMTgwOS1cbi0tXG5hcmNoL2FybTY0L21tL21tdS5jPTE4OTI9aW50IHB1ZF9mcmVlX3BtZF9wYWdlKHB1ZF90ICpwdWRwLCB1bnNpZ25lZCBsb25nIGFkZHIpXG4tLVxuYXJjaC9hcm02NC9tbS9tbXUuYy0xOTQwLVxuYXJjaC9hcm02NC9tbS9tbXUuYzoxOTQxOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvYXJtNjQvbW0vbW11LmMtMTk0Mi1zdGF0aWMgdm9pZCBfX3JlbW92ZV9wZ2RfbWFwcGluZyhwZ2RfdCAqcGdkaXIsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHU2NCBzaXplKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc9OTc9Q09ORklHX1pTTUFMTE9DPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWctOTgtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnOjk5OkNPTkZJR19NRU1PUllfSE9UUExVRz15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTEwMC0jIENPTkZJR19NSFBfREVGQVVMVF9PTkxJTkVfVFlQRV9PRkZMSU5FIGlzIG5vdCBzZXRcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTExMj1DT05GSUdfWlNNQUxMT0M9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy0xMTMtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnOjExNDpDT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy0xMTUtIyBDT05GSUdfTUhQX0RFRkFVTFRfT05MSU5FX1RZUEVfT0ZGTElORSBpcyBub3Qgc2V0XG4tLVxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jPTY0PXZvaWQgX19pbml0IGZpeHJhbmdlX2luaXQodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIHBnZF90ICpwZ2RfYmFzZSlcbi0tXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmMtMTA1LVxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jOjEwNjojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmMtMTA3LWludCBhcmNoX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSwgc3RydWN0IG1ocF9wYXJhbXMgKnBhcmFtcylcbi0tXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmM9MTQzPWludCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmMtMTUyLVxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jOjE1MzojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmMtMTU0LXZvaWQgdm1lbW1hcF9mcmVlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcClcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZz01Nz1DT05GSUdfTlVNQT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZzo1ODpDT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctNTktQ09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZz04Nj1DT05GSUdfU0hVRkZMRV9QQUdFX0FMTE9DQVRPUj15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctODctIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc6ODg6Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZy04OS1DT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ3RhYmxlLmg9MTAxNT1zdGF0aWMgaW5saW5lIGludCBfX21lbWluaXQgdm1lbW1hcF9jcmVhdGVfbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LFxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGd0YWJsZS5oLTEwMjMtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUuaDoxMDI0OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGd0YWJsZS5oLTEwMjUtc3RhdGljIGlubGluZSB2b2lkIHZtZW1tYXBfcmVtb3ZlX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4Lmg9MzMzPXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyByYWRpeF9fZ2V0X3RyZWVfc2l6ZSh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaC0zNDgtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4Lmg6MzQ5OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaC0zNTAtaW50IHJhZGl4X19jcmVhdGVfc2VjdGlvbl9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaD0zNTI9aW50IHJhZGl4X19yZW1vdmVfc2VjdGlvbl9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTtcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaDozNTM6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9yYWRpeC5oLTM1NC1cbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbWFjaGRlcC5oPTI2PXN0cnVjdCBtYWNoZGVwX2NhbGxzIHtcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbWFjaGRlcC5oLTMzLSNlbmRpZlxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21hY2hkZXAuaDozNDojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbWFjaGRlcC5oLTM1LVx0dW5zaWduZWQgbG9uZ1x0KCptZW1vcnlfYmxvY2tfc2l6ZSkodm9pZCk7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21tem9uZS5oPTI4PWV4dGVybiBjcHVtYXNrX3Zhcl90IG5vZGVfdG9fY3B1bWFza19tYXBbXTtcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9tbXpvbmUuaDoyOTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbW16b25lLmgtMzAtZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbWF4X3Bmbjtcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3BhcnNlbWVtLmgtMTQtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3BhcnNlbWVtLmg6MTU6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NwYXJzZW1lbS5oLTE2LWV4dGVybiBpbnQgcmVtb3ZlX3NlY3Rpb25fbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NwYXJzZW1lbS5oPTIzPXN0YXRpYyBpbmxpbmUgaW50IGhvdF9hZGRfc2NuX3RvX25pZCh1bnNpZ25lZCBsb25nIHNjbl9hZGRyKVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9zcGFyc2VtZW0uaC0yNy0jZW5kaWYgLyogQ09ORklHX05VTUEgKi9cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9zcGFyc2VtZW0uaDoyODojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3BhcnNlbWVtLmgtMjktI2VuZGlmIC8qIF9fS0VSTkVMX18gKi9cbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL3NldHVwXzY0LmM9ODMyPXZvaWQgX19pbml0IHNldHVwX3Blcl9jcHVfYXJlYXModm9pZClcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL3NldHVwXzY0LmMtODgxLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zZXR1cF82NC5jOjg4MjojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3Bvd2VycGMva2VybmVsL3NldHVwXzY0LmMtODgzLXVuc2lnbmVkIGxvbmcgbWVtb3J5X2Jsb2NrX3NpemVfYnl0ZXModm9pZClcbi0tXG5hcmNoL3Bvd2VycGMva2V4ZWMvY3Jhc2guYz00NzI9dW5zaWduZWQgaW50IGFyY2hfY3Jhc2hfZ2V0X2VsZmNvcmVoZHJfc2l6ZSh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9rZXhlYy9jcmFzaC5jLTQ3Ny1cdHBoZHJfY250ID0gbnVtX3Bvc3NpYmxlX2NwdXMoKSAmIzQzOyAxO1xuYXJjaC9wb3dlcnBjL2tleGVjL2NyYXNoLmM6NDc4Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01FTU9SWV9IT1RQTFVHKSlcbmFyY2gvcG93ZXJwYy9rZXhlYy9jcmFzaC5jLTQ3OS1cdFx0cGhkcl9jbnQgJiM0Mzs9IENPTkZJR19DUkFTSF9NQVhfTUVNT1JZX1JBTkdFUztcbi0tXG5hcmNoL3Bvd2VycGMva2V4ZWMvZmlsZV9sb2FkXzY0LmM9Mzc3PXN0YXRpYyB1bnNpZ25lZCBpbnQga2R1bXBfZXh0cmFfZWxmY29yZWhkcl9zaXplKHN0cnVjdCBjcmFzaF9tZW0gKmNtZW0pXG5hcmNoL3Bvd2VycGMva2V4ZWMvZmlsZV9sb2FkXzY0LmMtMzc4LXtcbmFyY2gvcG93ZXJwYy9rZXhlYy9maWxlX2xvYWRfNjQuYzozNzk6I2lmIGRlZmluZWQoQ09ORklHX0NSQVNIX0hPVFBMVUcpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19NRU1PUllfSE9UUExVRylcbmFyY2gvcG93ZXJwYy9rZXhlYy9maWxlX2xvYWRfNjQuYy0zODAtXHR1bnNpZ25lZCBpbnQgZXh0cmFfc3ogPSAwO1xuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYz0xMDc9aW50IF9fbWVtaW5pdCBoYXNoX192bWVtbWFwX2NyZWF0ZV9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfcGd0YWJsZS5jLTEyOS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYzoxMzA6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfcGd0YWJsZS5jLTEzMS12b2lkIGhhc2hfX3ZtZW1tYXBfcmVtb3ZlX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jPTExOTY9c3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IGh0YWJfZ2V0X3RhYmxlX3NpemUodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTEyMTAtXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jOjEyMTE6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0xMjEyLXN0YXRpYyBpbnQgcmVzaXplX2hwdF9mb3JfaG90cGx1Zyh1bnNpZ25lZCBsb25nIG5ld19tZW1fc2l6ZSlcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jPTEyNjI9aW50IGhhc2hfX3JlbW92ZV9zZWN0aW9uX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0xMjc1LX1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM6MTI3NjojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTEyNzctXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYz0yNzU9bm90cmFjZSB2b2lkIG1tdV9jbGVhbnVwX2FsbCh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmMtMjg0LVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYzoyODU6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYy0yODYtaW50IF9fbWVtaW5pdCBjcmVhdGVfc2VjdGlvbl9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM9Mjk1PWludCBfX21lbWluaXQgcmVtb3ZlX3NlY3Rpb25fbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jLTMwMS19XG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jOjMwMjojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jLTMwMy1cbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jPTY3OT1ub3RyYWNlIHZvaWQgcmFkaXhfX21tdV9jbGVhbnVwX2FsbCh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtNjkxLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYzo2OTI6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYy02OTMtc3RhdGljIHZvaWQgZnJlZV9wdGVfdGFibGUocHRlX3QgKnB0ZV9zdGFydCwgcG1kX3QgKnBtZClcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jPTk0Nj1pbnQgX19tZW1pbml0IHJhZGl4X19yZW1vdmVfc2VjdGlvbl9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtOTUwLX1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM6OTUxOiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtOTUyLVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM9MTMwNj1pbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGVfY29tcG91bmRfcGFnZXModW5zaWduZWQgbG9uZyBzdGFydF9wZm4sXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYy0xNDA4LVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYzoxNDA5OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtMTQxMC12b2lkIF9fbWVtaW5pdCByYWRpeF9fdm1lbW1hcF9yZW1vdmVfbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIHBhZ2Vfc2l6ZSlcbi0tXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jPTI3Nj1pbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIGludCBub2RlLFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmMtMjg3LVxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYzoyODg6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYy0yODktc3RhdGljIHVuc2lnbmVkIGxvbmcgdm1lbW1hcF9saXN0X2ZyZWUodW5zaWduZWQgbG9uZyBzdGFydClcbi0tXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jPTQ2Nj1zdGF0aWMgaW50IF9faW5pdCBkdF9zY2FuX21tdV9waWRfd2lkdGgodW5zaWduZWQgbG9uZyBub2RlLFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmMtNDk4LSAqL1xuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYzo0OTk6I2lmbmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmMtNTAwLSNkZWZpbmUgREVGQVVMVF9NRU1PUllfQkxPQ0tfU0laRVx0U1pfMTZNXG4tLVxuYXJjaC9wb3dlcnBjL21tL21lbS5jPTUyPUVYUE9SVF9TWU1CT0woX19waHlzX21lbV9hY2Nlc3NfcHJvdCk7XG5hcmNoL3Bvd2VycGMvbW0vbWVtLmMtNTMtXG5hcmNoL3Bvd2VycGMvbW0vbWVtLmM6NTQ6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9wb3dlcnBjL21tL21lbS5jLTU1LXN0YXRpYyBERUZJTkVfTVVURVgobGluZWFyX21hcHBpbmdfbXV0ZXgpO1xuLS1cbmFyY2gvcG93ZXJwYy9tbS9tbXVfZGVjbC5oPTE3ND1zdGF0aWMgaW5saW5lIGJvb2wgZGVidWdfcGFnZWFsbG9jX2VuYWJsZWRfb3Jfa2ZlbmNlKHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL21tL21tdV9kZWNsLmgtMTc4LVxuYXJjaC9wb3dlcnBjL21tL21tdV9kZWNsLmg6MTc5OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9tbS9tbXVfZGVjbC5oLTE4MC1pbnQgY3JlYXRlX3NlY3Rpb25fbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL2Jvb2szZV9wZ3RhYmxlLmM9MjM9aW50IF9fbWVtaW5pdCB2bWVtbWFwX2NyZWF0ZV9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4tLVxuYXJjaC9wb3dlcnBjL21tL25vaGFzaC9ib29rM2VfcGd0YWJsZS5jLTQ2LVxuYXJjaC9wb3dlcnBjL21tL25vaGFzaC9ib29rM2VfcGd0YWJsZS5jOjQ3OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvYm9vazNlX3BndGFibGUuYy00OC12b2lkIHZtZW1tYXBfcmVtb3ZlX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5hcmNoL3Bvd2VycGMvbW0vbnVtYS5jPTEyNDE9ZWFybHlfcGFyYW0oXCYjMzQ7bnVtYVwmIzM0OywgZWFybHlfbnVtYSk7XG5hcmNoL3Bvd2VycGMvbW0vbnVtYS5jLTEyNDItXG5hcmNoL3Bvd2VycGMvbW0vbnVtYS5jOjEyNDM6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9wb3dlcnBjL21tL251bWEuYy0xMjQ0LS8qXG4tLVxuYXJjaC9wb3dlcnBjL21tL251bWEuYz0xMzY1PXU2NCBtZW1vcnlfaG90cGx1Z19tYXgodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvbW0vbnVtYS5jLTEzNjgtfVxuYXJjaC9wb3dlcnBjL21tL251bWEuYzoxMzY5OiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cbmFyY2gvcG93ZXJwYy9tbS9udW1hLmMtMTM3MC1cbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvc2V0dXAuYz00Mzc9c3RhdGljIHZvaWQgcG52X2tleGVjX2NwdV9kb3duKGludCBjcmFzaF9zaHV0ZG93biwgaW50IHNlY29uZGFyeSlcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvc2V0dXAuYy00ODItXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvc2V0dXAuYzo0ODM6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3NldHVwLmMtNDg0LXN0YXRpYyB1bnNpZ25lZCBsb25nIHBudl9tZW1vcnlfYmxvY2tfc2l6ZSh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9zZXR1cC5jPTU2OT1kZWZpbmVfbWFjaGluZShwb3dlcm52KSB7XG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3NldHVwLmMtNTg0LSNlbmRpZlxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3NldHVwLmM6NTg1OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9zZXR1cC5jLTU4Ni1cdC5tZW1vcnlfYmxvY2tfc2l6ZVx0PSBwbnZfbWVtb3J5X2Jsb2NrX3NpemUsXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL01ha2VmaWxlPTE3PW9iai0kKENPTkZJR19IT1RQTFVHX0NQVSlcdCYjNDM7PSBob3RwbHVnLWNwdS5vXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvTWFrZWZpbGU6MTg6b2JqLSQoQ09ORklHX01FTU9SWV9IT1RQTFVHKVx0JiM0Mzs9IGhvdHBsdWctbWVtb3J5Lm8gcG1lbS5vXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvTWFrZWZpbGUtMTktXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2lvbW11LmM9MTI4Nj1zdGF0aWMgcGh5c19hZGRyX3QgZGR3X21lbW9yeV9ob3RwbHVnX21heCh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9pb21tdS5jLTEyODktXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaW9tbXUuYzoxMjkwOiNpZiBkZWZpbmVkKENPTkZJR19OVU1BKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfTUVNT1JZX0hPVFBMVUcpXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaW9tbXUuYy0xMjkxLVx0bWF4X2FkZHIgPSBob3RfYWRkX2RyY29uZl9tZW1vcnlfbWF4KCk7XG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3BzZXJpZXMuaD02MD1pbnQgaGFuZGxlX2RscGFyX2Vycm9ybG9nKHN0cnVjdCBwc2VyaWVzX2hwX2Vycm9ybG9nICpocF9lcnJsb2cpO1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3BzZXJpZXMuaC02MS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9wc2VyaWVzLmg6NjI6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3BzZXJpZXMuaC02My1pbnQgZGxwYXJfbWVtb3J5KHN0cnVjdCBwc2VyaWVzX2hwX2Vycm9ybG9nICpocF9lbG9nKTtcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYz0xMTE5PXN0YXRpYyBpbnQgcFNlcmllc19wY2lfcHJvYmVfbW9kZShzdHJ1Y3QgcGNpX2J1cyAqYnVzKVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jLTExMjUtXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYzoxMTI2OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jLTExMjctc3RhdGljIHVuc2lnbmVkIGxvbmcgcHNlcmllc19tZW1vcnlfYmxvY2tfc2l6ZSh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jPTExNDA9ZGVmaW5lX21hY2hpbmUocHNlcmllcykge1xuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jLTExNjItI2VuZGlmXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYzoxMTYzOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jLTExNjQtXHQubWVtb3J5X2Jsb2NrX3NpemVcdD0gcHNlcmllc19tZW1vcnlfYmxvY2tfc2l6ZSxcbi0tXG5hcmNoL3Jpc2N2L21tL2luaXQuYz0xNDI5PXZvaWQgX19pbml0IHBndGFibGVfY2FjaGVfaW5pdCh2b2lkKVxuLS1cbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTE0MzMtXHRcdHByZWFsbG9jYXRlX3BnZF9wYWdlc19yYW5nZShNT0RVTEVTX1ZBRERSLCBNT0RVTEVTX0VORCwgXCYjMzQ7YnBmL21vZHVsZXNcJiMzNDspO1xuYXJjaC9yaXNjdi9tbS9pbml0LmM6MTQzNDpcdGlmIChJU19FTkFCTEVEKENPTkZJR19NRU1PUllfSE9UUExVRykpIHtcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTE0MzUtXHRcdHByZWFsbG9jYXRlX3BnZF9wYWdlc19yYW5nZShWTUVNTUFQX1NUQVJULCBWTUVNTUFQX0VORCwgXCYjMzQ7dm1lbW1hcFwmIzM0Oyk7XG4tLVxuYXJjaC9yaXNjdi9tbS9pbml0LmM9MTQ0Nz1zdHJ1Y3QgZXhlY21lbV9pbmZvIF9faW5pdCAqZXhlY21lbV9hcmNoX3NldHVwKHZvaWQpXG4tLVxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTQ3Ni1cbmFyY2gvcmlzY3YvbW0vaW5pdC5jOjE0Nzc6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTQ3OC1zdGF0aWMgdm9pZCBfX21lbWluaXQgZnJlZV9wdGVfdGFibGUocHRlX3QgKnB0ZV9zdGFydCwgcG1kX3QgKnBtZClcbi0tXG5hcmNoL3Jpc2N2L21tL2luaXQuYz0xNzQwPXZvaWQgX19yZWYgdm1lbW1hcF9mcmVlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcClcbi0tXG5hcmNoL3Jpc2N2L21tL2luaXQuYy0xNzQzLX1cbmFyY2gvcmlzY3YvbW0vaW5pdC5jOjE3NDQ6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz0xMDM9Q09ORklHX1NMVUJfU1RBVFM9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTEwNC0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxMDU6Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xMDYtQ09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz05Nj1DT05GSUdfU0xBQl9CVUNLRVRTPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy05Ny0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzo5ODpDT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTk5LUNPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXlcbi0tXG5hcmNoL3MzOTAvbW0vaW5pdC5jPTE4OD12b2lkIF9faW5pdCBzZXR1cF9wZXJfY3B1X2FyZWFzKHZvaWQpXG4tLVxuYXJjaC9zMzkwL21tL2luaXQuYy0yMDktXG5hcmNoL3MzOTAvbW0vaW5pdC5jOjIxMDojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3MzOTAvbW0vaW5pdC5jLTIxMS1cbi0tXG5hcmNoL3MzOTAvbW0vaW5pdC5jPTI4MT12b2lkIGFyY2hfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcbi0tXG5hcmNoL3MzOTAvbW0vaW5pdC5jLTI4OS19XG5hcmNoL3MzOTAvbW0vaW5pdC5jOjI5MDojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXG5hcmNoL3MzOTAvbW0vaW5pdC5jLTI5MS1cbi0tXG5hcmNoL3MzOTAvbW0vdm1lbS5jPTUxMz1pbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIGludCBub2RlLFxuLS1cbmFyY2gvczM5MC9tbS92bWVtLmMtNTI2LVxuYXJjaC9zMzkwL21tL3ZtZW0uYzo1Mjc6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9zMzkwL21tL3ZtZW0uYy01MjgtXG4tLVxuYXJjaC94ODYva2VybmVsL2NyYXNoLmM9NDE2PWludCBjcmFzaF9sb2FkX3NlZ21lbnRzKHN0cnVjdCBraW1hZ2UgKmltYWdlKVxuLS1cbmFyY2gveDg2L2tlcm5lbC9jcmFzaC5jLTQzNi1cdCAqL1xuYXJjaC94ODYva2VybmVsL2NyYXNoLmM6NDM3Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01FTU9SWV9IT1RQTFVHKSlcbmFyY2gveDg2L2tlcm5lbC9jcmFzaC5jLTQzOC1cdFx0cG51bSA9IDIgJiM0MzsgQ09ORklHX05SX0NQVVNfREVGQVVMVCAmIzQzOyBDT05GSUdfQ1JBU0hfTUFYX01FTU9SWV9SQU5HRVM7XG4tLVxuYXJjaC94ODYva2VybmVsL2NyYXNoLmM9NDk0PXVuc2lnbmVkIGludCBhcmNoX2NyYXNoX2dldF9lbGZjb3JlaGRyX3NpemUodm9pZClcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvY3Jhc2guYy00OTktXHRzeiA9IDIgJiM0MzsgQ09ORklHX05SX0NQVVNfREVGQVVMVDtcbmFyY2gveDg2L2tlcm5lbC9jcmFzaC5jOjUwMDpcdGlmIChJU19FTkFCTEVEKENPTkZJR19NRU1PUllfSE9UUExVRykpXG5hcmNoL3g4Ni9rZXJuZWwvY3Jhc2guYy01MDEtXHRcdHN6ICYjNDM7PSBDT05GSUdfQ1JBU0hfTUFYX01FTU9SWV9SQU5HRVM7XG4tLVxuYXJjaC94ODYva2VybmVsL2U4MjAuYz05MDk9X19pbml0IHN0YXRpYyBpbnQgcGFyc2VfbWVtb3B0KGNoYXIgKnApXG4tLVxuYXJjaC94ODYva2VybmVsL2U4MjAuYy05MzQtXG5hcmNoL3g4Ni9rZXJuZWwvZTgyMC5jOjkzNTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3g4Ni9rZXJuZWwvZTgyMC5jLTkzNi1cdG1heF9tZW1fc2l6ZSA9IG1lbV9zaXplO1xuLS1cbmFyY2gveDg2L2tlcm5lbC9lODIwLmM9MTI4OD1fX2luaXQgdm9pZCBlODIwX19tZW1ibG9ja19zZXR1cCh2b2lkKVxuLS1cbmFyY2gveDg2L2tlcm5lbC9lODIwLmMtMTI5Mi1cbmFyY2gveDg2L2tlcm5lbC9lODIwLmM6MTI5MzojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3g4Ni9rZXJuZWwvZTgyMC5jLTEyOTQtXHQvKlxuLS1cbmFyY2gveDg2L21tL2luaXRfNjQuYz04NTQ9c3RhdGljIHZvaWQgX19tZW1pbml0IHZtZW1tYXBfZmx1c2hfdW51c2VkX3BtZCh2b2lkKVxuLS1cbmFyY2gveDg2L21tL2luaXRfNjQuYy04NjUtXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM6ODY2OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gveDg2L21tL2luaXRfNjQuYy04NjctLyogUmV0dXJucyB0cnVlIGlmIHRoZSBQTUQgaXMgY29tcGxldGVseSB1bnVzZWQgYW5kIHRodXMgaXQgY2FuIGJlIGZyZWVkICovXG4tLVxuYXJjaC94ODYvbW0vaW5pdF82NC5jPTkxOD1zdGF0aWMgdm9pZCBfX21lbWluaXQgdm1lbW1hcF91c2VfbmV3X3N1Yl9wbWQodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG4tLVxuYXJjaC94ODYvbW0vaW5pdF82NC5jLTk0Ny0gKi9cbmFyY2gveDg2L21tL2luaXRfNjQuYzo5NDg6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC94ODYvbW0vaW5pdF82NC5jLTk0OS0vKlxuLS1cbmFyY2gveDg2L21tL2luaXRfNjQuYz0xMzAzPXZvaWQgX19yZWYgYXJjaF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxuLS1cbmFyY2gveDg2L21tL2luaXRfNjQuYy0xMzExLX1cbmFyY2gveDg2L21tL2luaXRfNjQuYzoxMzEyOiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cbmFyY2gveDg2L21tL2luaXRfNjQuYy0xMzEzLVxuLS1cbmFyY2gveDg2L3hlbi9zZXR1cC5jPTUzNz1zdGF0aWMgdm9pZCBfX2luaXQgeGVuX2FsaWduX2FuZF9hZGRfZTgyMF9yZWdpb24ocGh5c19hZGRyX3Qgc3RhcnQsXG4tLVxuYXJjaC94ODYveGVuL3NldHVwLmMtNTQ1LVx0XHRlbmQgXHUwMDI2PSB+KChwaHlzX2FkZHJfdClQQUdFX1NJWkUgLSAxKTtcbmFyY2gveDg2L3hlbi9zZXR1cC5jOjU0NjojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3g4Ni94ZW4vc2V0dXAuYy01NDctXHRcdC8qXG4tLVxuYXJjaC94ODYveGVuL3NldHVwLmM9Nzk0PWNoYXIgKiBfX2luaXQgeGVuX21lbW9yeV9zZXR1cCh2b2lkKVxuLS1cbmFyY2gveDg2L3hlbi9zZXR1cC5jLTgxMy1cbmFyY2gveDg2L3hlbi9zZXR1cC5jOjgxNDojaWYgZGVmaW5lZChDT05GSUdfTUVNT1JZX0hPVFBMVUcpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19YRU5fQkFMTE9PTilcbmFyY2gveDg2L3hlbi9zZXR1cC5jLTgxNS1cdHhlbl9zYXZlZF9tYXhfbWVtX3NpemUgPSBtYXhfbWVtX3NpemU7XG4tLVxuZHJpdmVycy9hY3BpL251bWEvc3JhdC5jPTM1OT1hY3BpX3BhcnNlX21lbW9yeV9hZmZpbml0eSh1bmlvbiBhY3BpX3N1YnRhYmxlX2hlYWRlcnMgKmhlYWRlcixcbi0tXG5kcml2ZXJzL2FjcGkvbnVtYS9zcmF0LmMtMzc5LVx0XHRyZXR1cm4gMDtcbmRyaXZlcnMvYWNwaS9udW1hL3NyYXQuYzozODA6XHRob3RwbHVnZ2FibGUgPSBJU19FTkFCTEVEKENPTkZJR19NRU1PUllfSE9UUExVRykgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL2FjcGkvbnVtYS9zcmF0LmMtMzgxLVx0XHQobWEtXHUwMDNlZmxhZ3MgXHUwMDI2IEFDUElfU1JBVF9NRU1fSE9UX1BMVUdHQUJMRSk7XG4tLVxuZHJpdmVycy9hY3BpL3BjaV9yb290LmM9NDI4PXN0YXRpYyB1MzIgY2FsY3VsYXRlX3N1cHBvcnQodm9pZClcbi0tXG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYy00NTEtICogQmFja2dyb3VuZCBvbiBob3RwbHVnIHN1cHBvcnQsIGFuZCBtYWtpbmcgaXQgZGVwZW5kIG9uIG9ubHlcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jOjQ1MjogKiBDT05GSUdfSE9UUExVR19QQ0lfUENJRSB2cy4gYWxzbyBjb25zaWRlcmluZyBDT05GSUdfTUVNT1JZX0hPVFBMVUc6XG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYy00NTMtICpcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jOjQ1NDogKiBDT05GSUdfQUNQSV9IT1RQTFVHX01FTU9SWSBkb2VzIGRlcGVuZCBvbiBDT05GSUdfTUVNT1JZX0hPVFBMVUcsIGJ1dFxuZHJpdmVycy9hY3BpL3BjaV9yb290LmMtNDU1LSAqIHRoZXJlIGlzIG5vIGV4aXN0aW5nIF9PU0MgZm9yIG1lbW9yeSBob3RwbHVnIHN1cHBvcnQuIFRoZSByZWFzb24gaXMgdGhhdFxuLS1cbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jLTQ3MC0gKiBub3Qgc3VwcG9ydCBibG9ja2luZyBob3RwbHVnLCBpcyB0byByZXF1aXJlIHRoZSBtZW1vcnkgZGV2aWNlIHRvIGJlXG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYzo0NzE6ICogZGlzYWJsZWQgYmVmb3JlIGhvdHBsdWcgaXMgYXR0ZW1wdGVkLiBXaGVuIENPTkZJR19NRU1PUllfSE9UUExVRyBpc1xuZHJpdmVycy9hY3BpL3BjaV9yb290LmMtNDcyLSAqIGRpc2FibGVkIHRoYXQgc3RlcCB3aWxsIGZhaWwgYW5kIHRoZSByZW1vdmUgYXR0ZW1wdCBjYW5jZWxsZWQgYnkgdGhlXG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYy00NzMtICogdXNlci4gSWYgdGhhdCBpcyBub3QgaG9ub3JlZCBhbmQgdGhlIGNhcmQgaXMgcmVtb3ZlZCBhbnl3YXkgdGhlbiBpdFxuZHJpdmVycy9hY3BpL3BjaV9yb290LmM6NDc0OiAqIGRvZXMgbm90IG1hdHRlciBpZiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgaXMgZW5hYmxlZCBvciBub3QsIGl0IHdpbGxcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jLTQ3NS0gKiBjYXVzZSBhIGNyYXNoIGFuZCBvdGhlciBiYWRuZXNzLlxuLS1cbmRyaXZlcnMvYmFzZS9NYWtlZmlsZT0xNT1vYmotJChDT05GSUdfTlVNQSlcdCYjNDM7PSBub2RlLm9cbmRyaXZlcnMvYmFzZS9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfTUVNT1JZX0hPVFBMVUcpICYjNDM7PSBtZW1vcnkub1xuZHJpdmVycy9iYXNlL01ha2VmaWxlLTE3LWlmZXEgKCQoQ09ORklHX1NZU0ZTKSx5KVxuLS1cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz0yMDc9aW50IG1lbW9yeV9ub3RpZnkoZW51bSBtZW1vcnlfYmxvY2tfc3RhdGUgc3RhdGUsIHZvaWQgKnYpXG4tLVxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTIxMS1cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYzoyMTI6I2lmIGRlZmluZWQoQ09ORklHX01FTU9SWV9GQUlMVVJFKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfTUVNT1JZX0hPVFBMVUcpXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtMjEzLXN0YXRpYyB1bnNpZ25lZCBsb25nIG1lbWJsa19ucl9wb2lzb24oc3RydWN0IG1lbW9yeV9ibG9jayAqbWVtKTtcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9MTE5Nj1pbnQgd2Fsa19keW5hbWljX21lbW9yeV9ncm91cHMoaW50IG5pZCwgd2Fsa19tZW1vcnlfZ3JvdXBzX2Z1bmNfdCBmdW5jLFxuLS1cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy0xMjE3LVxuZHJpdmVycy9iYXNlL21lbW9yeS5jOjEyMTg6I2lmIGRlZmluZWQoQ09ORklHX01FTU9SWV9GQUlMVVJFKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfTUVNT1JZX0hPVFBMVUcpXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtMTIxOS12b2lkIG1lbWJsa19ucl9wb2lzb25faW5jKHVuc2lnbmVkIGxvbmcgcGZuKVxuLS1cbmRyaXZlcnMvYmFzZS9ub2RlLmM9MTA5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpub2RlX2FjY2Vzc19ub2RlX2dyb3Vwc1tdID0ge1xuLS1cbmRyaXZlcnMvYmFzZS9ub2RlLmMtMTE0LVxuZHJpdmVycy9iYXNlL25vZGUuYzoxMTU6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuZHJpdmVycy9iYXNlL25vZGUuYy0xMTYtc3RhdGljIEJMT0NLSU5HX05PVElGSUVSX0hFQUQobm9kZV9jaGFpbik7XG4tLVxuZHJpdmVycy9iYXNlL25vZGUuYz03NjQ9aW50IHVucmVnaXN0ZXJfY3B1X3VuZGVyX25vZGUodW5zaWduZWQgaW50IGNwdSwgdW5zaWduZWQgaW50IG5pZClcbi0tXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jLTc4Mi1cbmRyaXZlcnMvYmFzZS9ub2RlLmM6NzgzOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmRyaXZlcnMvYmFzZS9ub2RlLmMtNzg0LXN0YXRpYyB2b2lkIGRvX3JlZ2lzdGVyX21lbW9yeV9ibG9ja191bmRlcl9ub2RlKGludCBuaWQsXG4tLVxuZHJpdmVycy9iYXNlL25vZGUuYz04NjQ9dm9pZCByZWdpc3Rlcl9tZW1vcnlfYmxvY2tzX3VuZGVyX25vZGVfaG90cGx1ZyhpbnQgbmlkLCB1bnNpZ25lZCBsb25nIHN0YXJ0X3Bmbixcbi0tXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jLTg3MC19XG5kcml2ZXJzL2Jhc2Uvbm9kZS5jOjg3MTojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jLTg3Mi1cbi0tXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYz01Nzk9c3RhdGljIHZvaWQgZGlzYWJsZV9wYWdlX3JlcG9ydGluZyh2b2lkKTtcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTU4MC1cbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjU4MTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy01ODItc3RhdGljIGlubGluZSBib29sIGhhc19wZm5faXNfYmFja2VkKHN0cnVjdCBodl9ob3RhZGRfc3RhdGUgKmhhcyxcbi0tXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYz05Njg9c3RhdGljIHZvaWQgaG90X2FkZF9yZXEoc3RydWN0IHdvcmtfc3RydWN0ICpkdW1teSlcbi0tXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy05NzAtXHRzdHJ1Y3QgZG1faG90X2FkZF9yZXNwb25zZSByZXNwO1xuZHJpdmVycy9odi9odl9iYWxsb29uLmM6OTcxOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTk3Mi1cdHVuc2lnbmVkIGxvbmcgcGdfc3RhcnQsIHBmbl9jbnQ7XG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtOTgwLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmM6OTgxOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTk4Mi1cdHBnX3N0YXJ0ID0gZG0tXHUwMDNlaGFfd3JrLmhhX3BhZ2VfcmFuZ2UuZmluZm8uc3RhcnRfcGFnZTtcbi0tXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYz0xOTM2PXN0YXRpYyBpbnQgYmFsbG9vbl9wcm9iZShzdHJ1Y3QgaHZfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMTk0NC1cbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjE5NDU6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMTk0Ni1cdC8qXG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMTk3NS1cbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjE5NzY6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMTk3Ny1cdHNldF9vbmxpbmVfcGFnZV9jYWxsYmFjayhcdTAwMjZodl9vbmxpbmVfcGFnZSk7XG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMjAwNy1jb25uZWN0X2Vycm9yOlxuZHJpdmVycy9odi9odl9iYWxsb29uLmM6MjAwODojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy0yMDA5LVx0dW5yZWdpc3Rlcl9tZW1vcnlfbm90aWZpZXIoXHUwMDI2aHZfbWVtb3J5X25iKTtcbi0tXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYz0yMDE1PXN0YXRpYyB2b2lkIGJhbGxvb25fcmVtb3ZlKHN0cnVjdCBodl9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy0yMDM4LVx0XHR2bWJ1c19jbG9zZShkZXYtXHUwMDNlY2hhbm5lbCk7XG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYzoyMDM5OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTIwNDAtXHRcdHVucmVnaXN0ZXJfbWVtb3J5X25vdGlmaWVyKFx1MDAyNmh2X21lbW9yeV9uYik7XG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmM9MjA3Nj1zdGF0aWMgaW50IGJhbGxvb25fcmVzdW1lKHN0cnVjdCBodl9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy0yMTAxLVx0ZGlzYWJsZV9wYWdlX3JlcG9ydGluZygpO1xuZHJpdmVycy9odi9odl9iYWxsb29uLmM6MjEwMjojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy0yMTAzLVx0dW5yZWdpc3Rlcl9tZW1vcnlfbm90aWZpZXIoXHUwMDI2aHZfbWVtb3J5X25iKTtcbi0tXG5kcml2ZXJzL3MzOTAvY2hhci9NYWtlZmlsZT0yMD1vYmoteSAmIzQzOz0gY3RybGNoYXIubyBrZXlib2FyZC5vIGRlZmtleW1hcC5vIHNjbHAubyBzY2xwX3J3Lm8gc2NscF9xdWllc2NlLm8gXFxcbi0tXG5kcml2ZXJzL3MzOTAvY2hhci9NYWtlZmlsZS0yMy1cbmRyaXZlcnMvczM5MC9jaGFyL01ha2VmaWxlOjI0Om9iai0kKENPTkZJR19NRU1PUllfSE9UUExVRykgJiM0Mzs9IHNjbHBfbWVtLm9cbmRyaXZlcnMvczM5MC9jaGFyL01ha2VmaWxlLTI1LW9iai0kKENPTkZJR19UTjMyNzApICYjNDM7PSByYXczMjcwLm8gY29uMzI3MC5vXG4tLVxuZHJpdmVycy94ZW4veGVuLWJhbGxvb24uYy01My1cbmRyaXZlcnMveGVuL3hlbi1iYWxsb29uLmM6NTQ6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuZHJpdmVycy94ZW4veGVuLWJhbGxvb24uYy01NS11NjQgeGVuX3NhdmVkX21heF9tZW1fc2l6ZSA9IDA7XG4tLVxuZHJpdmVycy94ZW4veGVuLWJhbGxvb24uYz02Mz1zdGF0aWMgdm9pZCB3YXRjaF90YXJnZXQoc3RydWN0IHhlbmJ1c193YXRjaCAqd2F0Y2gsXG4tLVxuZHJpdmVycy94ZW4veGVuLWJhbGxvb24uYy03MC1cbmRyaXZlcnMveGVuL3hlbi1iYWxsb29uLmM6NzE6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuZHJpdmVycy94ZW4veGVuLWJhbGxvb24uYy03Mi1cdC8qIFRoZSBiYWxsb29uIGRyaXZlciB3aWxsIHRha2UgY2FyZSBvZiBhZGRpbmcgbWVtb3J5IG5vdy4gKi9cbi0tXG5pbmNsdWRlL2xpbnV4L2luaXQuaC04MC1cbmluY2x1ZGUvbGludXgvaW5pdC5oOjgxOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmluY2x1ZGUvbGludXgvaW5pdC5oLTgyLSNkZWZpbmUgX19tZW1pbml0XG4tLVxuaW5jbHVkZS9saW51eC9pb3BvcnQuaD0zOTQ9ZXh0ZXJuIHZvaWQgcmVsZWFzZV9tZW1fcmVnaW9uX2FkanVzdGFibGUocmVzb3VyY2Vfc2l6ZV90LCByZXNvdXJjZV9zaXplX3QpO1xuaW5jbHVkZS9saW51eC9pb3BvcnQuaC0zOTUtI2VuZGlmXG5pbmNsdWRlL2xpbnV4L2lvcG9ydC5oOjM5NjojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5pbmNsdWRlL2xpbnV4L2lvcG9ydC5oLTM5Ny1leHRlcm4gdm9pZCBtZXJnZV9zeXN0ZW1fcmFtX3Jlc291cmNlKHN0cnVjdCByZXNvdXJjZSAqcmVzKTtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oPTc4PXN0cnVjdCBtZW1vcnlfYmxvY2sge1xuLS1cbmluY2x1ZGUvbGludXgvbWVtb3J5LmgtOTMtXHRzdHJ1Y3QgbGlzdF9oZWFkIGdyb3VwX25leHQ7XHQvKiBuZXh0IGJsb2NrIGluc2lkZSBtZW1vcnkgZ3JvdXAgKi9cbmluY2x1ZGUvbGludXgvbWVtb3J5Lmg6OTQ6I2lmIGRlZmluZWQoQ09ORklHX01FTU9SWV9GQUlMVVJFKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfTUVNT1JZX0hPVFBMVUcpXG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oLTk1LVx0YXRvbWljX2xvbmdfdCBucl9od3BvaXNvbjtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oPTEwOT1zdHJ1Y3QgbWVtX3NlY3Rpb247XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk3NjQKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA3NTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIE1lbW9yeSBIb3RwbHVnIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIG1lbW9yeSBob3RwbHVnIHBhdGNoIHRvIGFuYWx5emUuIFRoZSBrZXkgY29uZmlndXJhdGlvbiBoZXJlIGlzIGRlZmluaXRlbHkgYENPTkZJR19NRU1PUllfSE9UUExVR2AuIElzIHRoZXJlIGFueXRoaW5nIGVsc2UgY3JpdGljYWw/IExldCYjMzk7cyBzZWUuLi4KClJpZ2h0LCB0aGUgY29yZSBtb2RpZmljYXRpb24gaXMgaW4gYG1tL21tX2luaXQuY2AsIHNwZWNpZmljYWxseSB3aXRoaW4gYW4gYCNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdgIGJsb2NrLiBTbywgYENPTkZJR19NRU1PUllfSE9UUExVR2AgaXMgdGhlICpzaW5lIHF1YSBub24qIGhlcmUuIFRoYXQmIzM5O3MgYSBnaXZlbi4KCk5vdywgd2hpY2ggZnVuY3Rpb25zIGFyZSBhdCBwbGF5PyBUaGUgcGF0Y2ggbW9kaWZpZXMgYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2AuIFRoYXTigJlzIHRoZSBtb3N0IGltbWVkaWF0ZWx5IHJlbGV2YW50IGZ1bmN0aW9uLiAgYGhvdGFkZF9pbml0X3BnZGF0YCB1c2VzIGl0cyByZXR1cm4gdmFsdWUuIEFuZCBgX190cnlfb25saW5lX25vZGVgIGNhbGxzIGBob3RhZGRfaW5pdF9wZ2RhdGAuIFRoZSB1c2VyLWxldmVsIGVudHJ5IHBvaW50IGlzIGB0cnlfb25saW5lX25vZGVgLCBhbmQgYGFkZF9tZW1vcnlfcmVzb3VyY2VgIGFsc28gY2FsbHMgYF9fdHJ5X29ubGluZV9ub2RlYCwgd2hpY2gsIGluIHR1cm4gaXMgY2FsbGVkIGJ5IGBhZGRfbWVtb3J5YC4KCk9rYXksIHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgbW9kaWZpZWQgb3IgcmVsYXRlZCBhcmU6Ci0gYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2AKLSBgaG90YWRkX2luaXRfcGdkYXRgCi0gYF9fdHJ5X29ubGluZV9ub2RlYAotIGB0cnlfb25saW5lX25vZGVgCi0gYGFkZF9tZW1vcnlfcmVzb3VyY2VgCi0gYGFkZF9tZW1vcnlgCgpXYWl0LiBMZXQgbWUgcmV0cmFjZSB0aGUgY2FsbCBncmFwaDogYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2AgaXMgY2FsbGVkIGZyb20gYGhvdGFkZF9pbml0X3BnZGF0YCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYF9fdHJ5X29ubGluZV9ub2RlYCwgd2hpY2ggaXMgY2FsbGVkIGJ5IGB0cnlfb25saW5lX25vZGVgIGFuZCBgYWRkX21lbW9yeV9yZXNvdXJjZWAuIFNvIEkgY2FuIHByb2JhYmx5IGVsaW1pbmF0ZSBgdHJ5X29ubGluZV9ub2RlYCwgYGFkZF9tZW1vcnlfcmVzb3VyY2VgIGFuZCBgYWRkX21lbW9yeWAsIGFuZCBmb2N1cyBvbiBgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnYCwgYGhvdGFkZF9pbml0X3BnZGF0YCBhbmQgYF9fdHJ5X29ubGluZV9ub2RlYC4KCkxldCYjMzk7cyBxdWlja2x5IGNvbmZpcm0gdGhhdCBgQ09ORklHX01FTU9SWV9IT1RQTFVHYCBpcyB0aGUgb25seSBlc3NlbnRpYWwgY29uZmlnIGhlcmUuIFllcywgdGhlIHBhdGNoIGlzIGVudGlyZWx5IHdyYXBwZWQgYnkgdGhhdC4KCk5vdywgY2FuIHdlIHRyaWdnZXIgYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2A/IFllcywgd2UgY2FuIHRyaWdnZXIgbWVtb3J5IGhvdHBsdWcgdmlhIHN5c2ZzIG9yIHdpdGggZHJpdmVycyBsaWtlIGB2aXJ0aW9fbWVtYCBvciBgaHZfYmFsbG9vbmAuIFRoZSByZWFsIGNydXggb2YgdGhpcyBjaGFuZ2UgaXMgaG93IGBhbGxvY19wZXJjcHVgIGZhaWx1cmVzIGFyZSBoYW5kbGVkLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZTogaWYgYGFsbG9jX3BlcmNwdWAgZmFpbHMsIGl0IG5vdyByZXR1cm5zIGAtRU5PTUVNYCwgYW5kIHRoYXQgZXJyb3IgaXMgcHJvcGFnYXRlZCB1cCB0aHJvdWdoIHRoZSBjYWxsIGNoYWlu4oCUdWx0aW1hdGVseSwgYGhvdGFkZF9pbml0X3BnZGF0YCByZXR1cm5zIGBOVUxMYC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQ7IGl0IHByZXZlbnRzIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIG90aGVyIG5hc3R5IGNvbnNlcXVlbmNlcyBpZiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlscyBkdXJpbmcgYSBob3RwbHVnIG9wZXJhdGlvbi4KCioqRGVmaW5pdGVseSBmdXp6YWJsZS4qKiBTcGVjaWZpY2FsbHksIHNpbmNlIGBhbGxvY19wZXJjcHVgIGZhaWxpbmcgaXMgdGhlIGtleSBjaGFuZ2UsIGFuZCBpdCBjYW4gZmFpbCB1bmRlciBtZW1vcnkgcHJlc3N1cmUuIEkgY2FuIHRhcmdldCBtZW1vcnkgcHJlc3N1cmUgdG8gdHJpZ2dlciB0aGF0IGVycm9yIHBhdGguCgpMZXQmIzM5O3Mgbm90ZSBkb3duIHRoZSByZXN1bHRzOgoKKiAgICoqV29ydGhGdXp6aW5nOioqIGB0cnVlYAoqICAgKipFbmFibGVDb25maWdzOioqIGBbJiMzNDtNRU1PUllfSE9UUExVRyYjMzQ7XWAKKiAgICoqRm9jdXNTeW1ib2xzOioqIGBbJiMzNDtmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcmIzM0OywgJiMzNDtob3RhZGRfaW5pdF9wZ2RhdCYjMzQ7LCAmIzM0O19fdHJ5X29ubGluZV9ub2RlJiMzNDtdYAoqICAgKipSZWFzb25pbmc6KiogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgbWVtb3J5IGhvdHBsdWcgaW5pdGlhbGl6YXRpb24gY29kZSB0byBoYW5kbGUgYGFsbG9jX3BlcmNwdWAgZmFpbHVyZXMsIHJldHVybmluZyBgLUVOT01FTWAgYW5kIHByb3BhZ2F0aW5nIHRoZSBlcnJvciB1cCB0byBgaG90YWRkX2luaXRfcGdkYXRgLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgbWVtb3J5IGhvdHBsdWcgb3BlcmF0aW9ucyAoZS5nLiwgc3lzZnMsIHZpcnRpb19tZW0pIGFuZCByZXByZXNlbnRzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gZXJyb3IgaGFuZGxpbmcuJiMzNDsKCldhaXQsIG9uZSBtb3JlIHRoaW5nLiBJIHNob3VsZCBjaGVjayBpZiB0aGVyZSBhcmUgb3RoZXIgdXNlZnVsIGNvbmZpZ3MuIGBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRWAgd291bGQgYmUgZ29vZCB0byBoYXZlLCB0aG91Z2ggaXQmIzM5O3Mgbm90IHN0cmljdGx5ICpyZXF1aXJlZCogZm9yIGhvdC1hZGQsIGJ1dCBpdCYjMzk7cyBnb29kIHRvIGhhdmUuICBBbmQgd2hhdCBhYm91dCBgQ09ORklHX0FSQ0hfTUVNT1JZX1BST0JFYD8gIFRoYXQgcHJvdmlkZXMgYC9zeXMvZGV2aWNlcy9zeXN0ZW0vbWVtb3J5L3Byb2JlYCwgd2hpY2ggZW5hYmxlcyB1cyB0byB0cmlnZ2VyIG1lbW9yeSBob3RwbHVnIHZpYSBzeXNmcy4gVGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGxvb2tpbmcgaW50by4gTGV0IG1lIGNoZWNrIGlmIHRoYXQgaXMgYXZhaWxhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfQVJDSF9NRU1PUllfUFJPQkUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3Q9Mjc2PVRoZSBmb2xsb3dpbmcgZmlsZXMgYXJlIGN1cnJlbnRseSBkZWZpbmVkOlxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vbWVtb3J5LWhvdHBsdWcucnN0LTI5MC1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vbWVtb3J5LWhvdHBsdWcucnN0OjI5MTpcdFx0ICAgICAgIEF2YWlsYWJpbGl0eSBkZXBlbmRzIG9uIHRoZSBDT05GSUdfQVJDSF9NRU1PUllfUFJPQkVcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vbWVtb3J5LWhvdHBsdWcucnN0LTI5Mi1cdFx0ICAgICAgIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbi5cbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9NTUzPXN0YXRpYyBERVZJQ0VfQVRUUl9STyhjcmFzaF9ob3RwbHVnKTtcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtNTYxLSAqL1xuZHJpdmVycy9iYXNlL21lbW9yeS5jOjU2MjojaWZkZWYgQ09ORklHX0FSQ0hfTUVNT1JZX1BST0JFXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtNTYzLXN0YXRpYyBzc2l6ZV90IHByb2JlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9iYXNlL21lbW9yeS5jPTkxMT1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqbWVtb3J5X3Jvb3RfYXR0cnNbXSA9IHtcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYzo5MTI6I2lmZGVmIENPTkZJR19BUkNIX01FTU9SWV9QUk9CRVxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTkxMy1cdFx1MDAyNmRldl9hdHRyX3Byb2JlLmF0dHIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNzIzCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRW5hYmxpbmcgTWVtb3J5IEhvdHBsdWcgZnJvbSBVc2Vyc3BhY2UqKgoKT2theSwgc28gYENPTkZJR19BUkNIX01FTU9SWV9QUk9CRWAgaXMgZXhhY3RseSB3aGF0IEkgbmVlZCB0byBlbmFibGUgbWVtb3J5IGhvdHBsdWcgZnVuY3Rpb25hbGl0eSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2Ug4oCTIHRoYXQmIzM5O3MgYSBjbGV2ZXIgaW1wbGVtZW50YXRpb24hIEl0JiMzOTtzIGNsZWFyIHRoYXQgaXQgb2ZmZXJzIGEgc2lnbmlmaWNhbnQgYWR2YW50YWdlIGluIHRlcm1zIG9mIGZsZXhpYmlsaXR5IGFuZCBjb250cm9sLiBSaWdodCwgbGV0JiMzOTtzIGdldCBgQVJDSF9NRU1PUllfUFJPQkVgIGFkZGVkIHRvIEVuYWJsZUNvbmZpZ3MuIFRoYXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgc3RlcC4KCk5vdywgYmVmb3JlIEkgY29tbWl0IHRvIGFueXRoaW5nLCBJIHNob3VsZCBkb3VibGUtY2hlY2sgYW5kIGNvbmZpcm0gdGhhdCBgQVJDSF9NRU1PUllfUFJPQkVgIGlzIGluZGVlZCBhIHNlbGVjdGFibGUgb3B0aW9uLiBJIG5lZWQgdG8gZW5zdXJlIGl0IGludGVncmF0ZXMgc2VhbWxlc3NseSB3aXRoIHRoZSBleGlzdGluZyBjb25maWd1cmF0aW9uIHN0cnVjdHVyZSBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSB1bmZvcmVzZWVuIGlzc3Vlcy4gVGltZSB0byBkaWcgaW50byB0aGUgZGV0YWlscyBhbmQgbWFrZSBjZXJ0YWluIHRoaXMgd2lsbCB3b3JrIGFzIGV4cGVjdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVJDSF9NRU1PUllfUFJPQkUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvS2NvbmZpZz03NzU9Y29uZmlnIEFSQ0hfU1BBUlNFTUVNX0VOQUJMRVxuLS1cbmFyY2gvbG9vbmdhcmNoL0tjb25maWctNzgzLVxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZzo3ODQ6Y29uZmlnIEFSQ0hfTUVNT1JZX1BST0JFXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnLTc4NS1cdGRlZl9ib29sIHlcbi0tXG5hcmNoL3Bvd2VycGMvS2NvbmZpZz04MDM9Y29uZmlnIElMTEVHQUxfUE9JTlRFUl9WQUxVRVxuLS1cbmFyY2gvcG93ZXJwYy9LY29uZmlnLTgwOS1cbmFyY2gvcG93ZXJwYy9LY29uZmlnOjgxMDpjb25maWcgQVJDSF9NRU1PUllfUFJPQkVcbmFyY2gvcG93ZXJwYy9LY29uZmlnLTgxMS1cdGRlZl9ib29sIHlcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTE1NjU9Y29uZmlnIEFSQ0hfU0VMRUNUX01FTU9SWV9NT0RFTFxuLS1cbmFyY2gveDg2L0tjb25maWctMTU2OC1cbmFyY2gveDg2L0tjb25maWc6MTU2OTpjb25maWcgQVJDSF9NRU1PUllfUFJPQkVcbmFyY2gveDg2L0tjb25maWctMTU3MC1cdGJvb2wgXCYjMzQ7RW5hYmxlIHN5c2ZzIG1lbW9yeS9wcm9iZSBpbnRlcmZhY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIyMTYKCQkJCQkJCW91dHB1dDogMTQ3CgkJCQkJCQl0aG91Z2h0czogMzc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgVGhpcyBNZW1vcnkgSG90cGx1ZyBQYXRjaCoqCgpPa2F5LCB5ZXMsIHRoaXMgcGF0Y2ggd2FycmFudHMgY2xvc2VyIGV4YW1pbmF0aW9uLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O3ZlIGdvdCB0byByZXZpZXcgdGhlIHJlbGV2YW50IEZvY3VzU3ltYm9scyB0byBnZXQgYSBjbGVhciBwaWN0dXJlLiBBbHJpZ2h0LCBsZXQmIzM5O3Mgc3RhcnQgd2l0aCBgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnYCwgYGhvdGFkZF9pbml0X3BnZGF0YCwgYW5kIGBfX3RyeV9vbmxpbmVfbm9kZWAuIFBlcmZlY3QsIHRoYXQgc2hvdWxkIGJlIGVub3VnaCB0byBjYXB0dXJlIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2VzLiBJIGRvbiYjMzk7dCBuZWVkIGBvbmxpbmVfcGFnZXNgIGJlY2F1c2UgdGhlIHBhdGNoIGlzIHdpdGhpbiB0aGUgbWVtb3J5ICphZGRpbmcqIGZ1bmN0aW9uYWxpdHksIHNwZWNpZmljYWxseSB3aXRoaW4gYGhvdGFkZF9pbml0X3BnZGF0YC4KCk5vdywgbGV0JiMzOTtzIGRvIGEgZmluYWwgY2hlY2sgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nLiBUaGUgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2AgdG8gcmV0dXJuIGFuIGludGVnZXIgYW5kIG1hbmFnZSBzY2VuYXJpb3Mgd2hlcmUgYGFsbG9jX3BlcmNwdWAgZmFpbHMuIEl0IHRoZW4gbW9kaWZpZXMgYGhvdGFkZF9pbml0X3BnZGF0YCB0byBhY3R1YWxseSBjaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoYXQgbmV3IGVycm9yIGNvZGUuIFRoaXMgaXMgYSBsZWdpdGltYXRlIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHJlZmluZW1lbnQgb2YgZXJyb3IgaGFuZGxpbmcgc3BlY2lmaWNhbGx5IGR1cmluZyBtZW1vcnkgaG90cGx1Zy4gSXQmIzM5O3Mgb2J2aW91c2x5IHJlYWNoYWJsZSB0aHJvdWdoIGhvdHBsdWcgb3BlcmF0aW9ucywgYmUgaXQgdGhyb3VnaCBzeXNmcywgdmlydGlvX21lbSwgb3Igb3RoZXIgaG90cGx1ZyBtZXRob2RzLiBUaGVyZWZvcmUsIHRoaXMgaXMgc29tZXRoaW5nIEkmIzM5O2xsIHdhbnQgdG8gZnV6ei4KCkJhc2VkIG9uIHRoZSBuYXR1cmUgb2YgdGhlIHBhdGNoLCB0aGUgYE1FTU9SWV9IT1RQTFVHYCBhbmQgYEFSQ0hfTUVNT1JZX1BST0JFYCBjb25maWd1cmF0aW9ucyBhcmUgcmVxdWlyZWQuCgpTbywgdG8gc3VtbWFyaXplLCB0aGUgcGF0Y2ggaXMgYWRkcmVzc2luZyBhbiBlcnJvci1oYW5kbGluZyBpbXByb3ZlbWVudCBpbiB0aGUgbWVtb3J5IGhvdHBsdWcgcGF0aC4gSXQgYWRkcmVzc2VzIGBhbGxvY19wZXJjcHVgIGZhaWx1cmVzLiBUaGlzIGVycm9yIGhhbmRsaW5nIGlzIG5vdyBiZWluZyBwcm9wYWdhdGVkIHVwIHRvIGBob3RhZGRfaW5pdF9wZ2RhdGAuIEdpdmVuIHRoYXQgaXQmIzM5O3MgaW4gdGhlIGhvdHBsdWcgcGF0aCwgdGhpcyBjaGFuZ2UgaXMgd29ydGggZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDssCiAgICAmIzM0O0FSQ0hfTUVNT1JZX1BST0JFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnJiMzNDssCiAgICAmIzM0O2hvdGFkZF9pbml0X3BnZGF0JiMzNDssCiAgICAmIzM0O19fdHJ5X29ubGluZV9ub2RlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBob3RwbHVnIGluaXRpYWxpemF0aW9uIGNvZGUgdG8gaGFuZGxlIGBhbGxvY19wZXJjcHVgIGZhaWx1cmVzLCByZXR1cm5pbmcgYC1FTk9NRU1gIGFuZCBwcm9wYWdhdGluZyB0aGUgZXJyb3IgdXAgdG8gYGhvdGFkZF9pbml0X3BnZGF0YC4gVGhpcyBpcyByZWFjaGFibGUgdmlhIG1lbW9yeSBob3RwbHVnIG9wZXJhdGlvbnMgKGUuZy4sIHN5c2ZzLCB2aXJ0aW9fbWVtKSBhbmQgcmVwcmVzZW50cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGVycm9yIGhhbmRsaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNRU1PUllfSE9UUExVRyYjMzQ7LAogICAgJiMzNDtBUkNIX01FTU9SWV9QUk9CRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyYjMzQ7LAogICAgJiMzNDtob3RhZGRfaW5pdF9wZ2RhdCYjMzQ7LAogICAgJiMzNDtfX3RyeV9vbmxpbmVfbm9kZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBtZW1vcnkgaG90cGx1ZyBpbml0aWFsaXphdGlvbiBjb2RlIHRvIGhhbmRsZSBgYWxsb2NfcGVyY3B1YCBmYWlsdXJlcywgcmV0dXJuaW5nIGAtRU5PTUVNYCBhbmQgcHJvcGFnYXRpbmcgdGhlIGVycm9yIHVwIHRvIGBob3RhZGRfaW5pdF9wZ2RhdGAuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBtZW1vcnkgaG90cGx1ZyBvcGVyYXRpb25zIChlLmcuLCBzeXNmcywgdmlydGlvX21lbSkgYW5kIHJlcHJlc2VudHMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBlcnJvciBoYW5kbGluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjEwOjEzLjgzMjcxMzI4M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3OTMzNDU3NjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FTU9SWV9IT1RQTFVHXCIsXG4gICAgXCJBUkNIX01FTU9SWV9QUk9CRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z1wiLFxuICAgIFwiaG90YWRkX2luaXRfcGdkYXRcIixcbiAgICBcIl9fdHJ5X29ubGluZV9ub2RlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgbWVtb3J5IGhvdHBsdWcgaW5pdGlhbGl6YXRpb24gY29kZSB0byBoYW5kbGUgYGFsbG9jX3BlcmNwdWAgZmFpbHVyZXMsIHJldHVybmluZyBgLUVOT01FTWAgYW5kIHByb3BhZ2F0aW5nIHRoZSBlcnJvciB1cCB0byBgaG90YWRkX2luaXRfcGdkYXRgLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgbWVtb3J5IGhvdHBsdWcgb3BlcmF0aW9ucyAoZS5nLiwgc3lzZnMsIHZpcnRpb19tZW0pIGFuZCByZXByZXNlbnRzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gZXJyb3IgaGFuZGxpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjEwOjEzLjgzMjcyMjk4M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY5OTQ3OTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgM2E0ZGIzZDIzZmRjYWJmMmFhODMzZTg2MTBlMDIzYjVlOWQwYjdiN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxIDA1OjEwOjEyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaCBiL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaFxcbmluZGV4IDdjOWQ2NjcyOWM2MDk1Li5mMDRiOTE1Njc4ZGJkOSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmhcXG5AQCAtMjg5LDcgKzI4OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSkge31cXG4gLyogRGVmYXVsdCBvbmxpbmVfdHlwZSAoTU1PUF8qKSB3aGVuIG5ldyBtZW1vcnkgYmxvY2tzIGFyZSBhZGRlZC4gKi9cXG4gZXh0ZXJuIGVudW0gbW1vcCBtaHBfZ2V0X2RlZmF1bHRfb25saW5lX3R5cGUodm9pZCk7XFxuIGV4dGVybiB2b2lkIG1ocF9zZXRfZGVmYXVsdF9vbmxpbmVfdHlwZShlbnVtIG1tb3Agb25saW5lX3R5cGUpO1xcbi1leHRlcm4gdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCk7XFxuK2V4dGVybiBpbnQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpO1xcbiBleHRlcm4gaW50IF9fYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBtaHBfdCBtaHBfZmxhZ3MpO1xcbiBleHRlcm4gaW50IGFkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSwgbWhwX3QgbWhwX2ZsYWdzKTtcXG4gZXh0ZXJuIGludCBhZGRfbWVtb3J5X3Jlc291cmNlKGludCBuaWQsIHN0cnVjdCByZXNvdXJjZSAqcmVzb3VyY2UsXFxuZGlmZiAtLWdpdCBhL21tL21lbW9yeV9ob3RwbHVnLmMgYi9tbS9tZW1vcnlfaG90cGx1Zy5jXFxuaW5kZXggN2FjMTlmYWIyMjYzMjQuLjhiMTM3MzI4ZGNmMDE0IDEwMDY0NFxcbi0tLSBhL21tL21lbW9yeV9ob3RwbHVnLmNcXG4rKysgYi9tbS9tZW1vcnlfaG90cGx1Zy5jXFxuQEAgLTEyNjMsNyArMTI2Myw4IEBAIHN0YXRpYyBwZ19kYXRhX3QgKmhvdGFkZF9pbml0X3BnZGF0KGludCBuaWQpXFxuIFxcdHBnZGF0ID0gTk9ERV9EQVRBKG5pZCk7XFxuIFxcbiBcXHQvKiBpbml0IG5vZGUncyB6b25lcyBhcyBlbXB0eSB6b25lcywgd2UgZG9uJ3QgaGF2ZSBhbnkgcHJlc2VudCBwYWdlcy4qL1xcbi1cXHRmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcocGdkYXQpO1xcbitcXHRpZiAoZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHBnZGF0KSlcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbiBcXHQvKlxcbiBcXHQgKiBUaGUgbm9kZSB3ZSBhbGxvY2F0ZWQgaGFzIG5vIHpvbmUgZmFsbGJhY2sgbGlzdHMuIEZvciBhdm9pZGluZ1xcbmRpZmYgLS1naXQgYS9tbS9tbV9pbml0LmMgYi9tbS9tbV9pbml0LmNcXG5pbmRleCA0MDI2YjA4NGJkNGJmNy4uZDdhZWNkZGRmZDVkYTQgMTAwNjQ0XFxuLS0tIGEvbW0vbW1faW5pdC5jXFxuKysrIGIvbW0vbW1faW5pdC5jXFxuQEAgLTE1MjYsNyArMTUyNiw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX2luaXQgc2V0X3BhZ2VibG9ja19vcmRlcih2b2lkKVxcbiAgKiBOT1RFOiB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGR1cmluZyBtZW1vcnkgaG90cGx1Z1xcbiAgKi9cXG4gI2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbi12b2lkIF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KVxcbitpbnQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpXFxuIHtcXG4gXFx0aW50IG5pZCA9IHBnZGF0LVxcdTAwM2Vub2RlX2lkO1xcbiBcXHRlbnVtIHpvbmVfdHlwZSB6O1xcbkBAIC0xNTM0LDggKzE1MzQsMTQgQEAgdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdClcXG4gXFxuIFxcdHBnZGF0X2luaXRfaW50ZXJuYWxzKHBnZGF0KTtcXG4gXFxuLVxcdGlmIChwZ2RhdC1cXHUwMDNlcGVyX2NwdV9ub2Rlc3RhdHMgPT0gXFx1MDAyNmJvb3Rfbm9kZXN0YXRzKVxcbi1cXHRcXHRwZ2RhdC1cXHUwMDNlcGVyX2NwdV9ub2Rlc3RhdHMgPSBhbGxvY19wZXJjcHUoc3RydWN0IHBlcl9jcHVfbm9kZXN0YXQpO1xcbitcXHRpZiAocGdkYXQtXFx1MDAzZXBlcl9jcHVfbm9kZXN0YXRzID09IFxcdTAwMjZib290X25vZGVzdGF0cykge1xcbitcXHRcXHRzdHJ1Y3QgcGVyX2NwdV9ub2Rlc3RhdCBfX3BlcmNwdSAqcDtcXG4rXFxuK1xcdFxcdHAgPSBhbGxvY19wZXJjcHUoc3RydWN0IHBlcl9jcHVfbm9kZXN0YXQpO1xcbitcXHRcXHRpZiAoIXApXFxuK1xcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXHRcXHRwZ2RhdC1cXHUwMDNlcGVyX2NwdV9ub2Rlc3RhdHMgPSBwO1xcbitcXHR9XFxuIFxcbiBcXHQvKlxcbiBcXHQgKiBSZXNldCB0aGUgbnJfem9uZXMsIG9yZGVyIGFuZCBoaWdoZXN0X3pvbmVpZHggYmVmb3JlIHJldXNlLlxcbkBAIC0xNTY2LDYgKzE1NzIsOCBAQCB2b2lkIF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KVxcbiBcXHRcXHR6b25lLVxcdTAwM2VwcmVzZW50X3BhZ2VzID0gMDtcXG4gXFx0XFx0em9uZV9pbml0X2ludGVybmFscyh6b25lLCB6LCBuaWQsIDApO1xcbiBcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiAjZW5kaWZcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjEwOjE0LjQwMzc4NDEyN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjczNjIzNzA4NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNT1JZX0hPVFBMVUdcIixcbiAgICBcIkFSQ0hfTUVNT1JZX1BST0JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnXCIsXG4gICAgXCJob3RhZGRfaW5pdF9wZ2RhdFwiLFxuICAgIFwiX190cnlfb25saW5lX25vZGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtZW1vcnkgaG90cGx1ZyBpbml0aWFsaXphdGlvbiBjb2RlIHRvIGhhbmRsZSBgYWxsb2NfcGVyY3B1YCBmYWlsdXJlcywgcmV0dXJuaW5nIGAtRU5PTUVNYCBhbmQgcHJvcGFnYXRpbmcgdGhlIGVycm9yIHVwIHRvIGBob3RhZGRfaW5pdF9wZ2RhdGAuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBtZW1vcnkgaG90cGx1ZyBvcGVyYXRpb25zIChlLmcuLCBzeXNmcywgdmlydGlvX21lbSkgYW5kIHJlcHJlc2VudHMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBlcnJvciBoYW5kbGluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzYTRkYjNkMjNmZGNhYmYyYWE4MzNlODYxMGUwMjNiNWU5ZDBiN2I3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAwNToxMDoxMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaCBiL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaFxuaW5kZXggN2M5ZDY2NzI5YzYwOTUuLmYwNGI5MTU2NzhkYmQ5IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmhcbkBAIC0yODksNyArMjg5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIF9fcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKSB7fVxuIC8qIERlZmF1bHQgb25saW5lX3R5cGUgKE1NT1BfKikgd2hlbiBuZXcgbWVtb3J5IGJsb2NrcyBhcmUgYWRkZWQuICovXG4gZXh0ZXJuIGVudW0gbW1vcCBtaHBfZ2V0X2RlZmF1bHRfb25saW5lX3R5cGUodm9pZCk7XG4gZXh0ZXJuIHZvaWQgbWhwX3NldF9kZWZhdWx0X29ubGluZV90eXBlKGVudW0gbW1vcCBvbmxpbmVfdHlwZSk7XG4tZXh0ZXJuIHZvaWQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpO1xuK2V4dGVybiBpbnQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpO1xuIGV4dGVybiBpbnQgX19hZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsIG1ocF90IG1ocF9mbGFncyk7XG4gZXh0ZXJuIGludCBhZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsIG1ocF90IG1ocF9mbGFncyk7XG4gZXh0ZXJuIGludCBhZGRfbWVtb3J5X3Jlc291cmNlKGludCBuaWQsIHN0cnVjdCByZXNvdXJjZSAqcmVzb3VyY2UsXG5kaWZmIC0tZ2l0IGEvbW0vbWVtb3J5X2hvdHBsdWcuYyBiL21tL21lbW9yeV9ob3RwbHVnLmNcbmluZGV4IDdhYzE5ZmFiMjI2MzI0Li44YjEzNzMyOGRjZjAxNCAxMDA2NDRcbi0tLSBhL21tL21lbW9yeV9ob3RwbHVnLmNcbisrKyBiL21tL21lbW9yeV9ob3RwbHVnLmNcbkBAIC0xMjYzLDcgKzEyNjMsOCBAQCBzdGF0aWMgcGdfZGF0YV90ICpob3RhZGRfaW5pdF9wZ2RhdChpbnQgbmlkKVxuIFx0cGdkYXQgPSBOT0RFX0RBVEEobmlkKTtcbiBcbiBcdC8qIGluaXQgbm9kZSdzIHpvbmVzIGFzIGVtcHR5IHpvbmVzLCB3ZSBkb24ndCBoYXZlIGFueSBwcmVzZW50IHBhZ2VzLiovXG4tXHRmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcocGdkYXQpO1xuK1x0aWYgKGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhwZ2RhdCkpXG4rXHRcdHJldHVybiBOVUxMO1xuIFxuIFx0LypcbiBcdCAqIFRoZSBub2RlIHdlIGFsbG9jYXRlZCBoYXMgbm8gem9uZSBmYWxsYmFjayBsaXN0cy4gRm9yIGF2b2lkaW5nXG5kaWZmIC0tZ2l0IGEvbW0vbW1faW5pdC5jIGIvbW0vbW1faW5pdC5jXG5pbmRleCA0MDI2YjA4NGJkNGJmNy4uZDdhZWNkZGRmZDVkYTQgMTAwNjQ0XG4tLS0gYS9tbS9tbV9pbml0LmNcbisrKyBiL21tL21tX2luaXQuY1xuQEAgLTE1MjYsNyArMTUyNiw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX2luaXQgc2V0X3BhZ2VibG9ja19vcmRlcih2b2lkKVxuICAqIE5PVEU6IHRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWQgZHVyaW5nIG1lbW9yeSBob3RwbHVnXG4gICovXG4gI2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuLXZvaWQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpXG4raW50IF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KVxuIHtcbiBcdGludCBuaWQgPSBwZ2RhdC1cdTAwM2Vub2RlX2lkO1xuIFx0ZW51bSB6b25lX3R5cGUgejtcbkBAIC0xNTM0LDggKzE1MzQsMTQgQEAgdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdClcbiBcbiBcdHBnZGF0X2luaXRfaW50ZXJuYWxzKHBnZGF0KTtcbiBcbi1cdGlmIChwZ2RhdC1cdTAwM2VwZXJfY3B1X25vZGVzdGF0cyA9PSBcdTAwMjZib290X25vZGVzdGF0cylcbi1cdFx0cGdkYXQtXHUwMDNlcGVyX2NwdV9ub2Rlc3RhdHMgPSBhbGxvY19wZXJjcHUoc3RydWN0IHBlcl9jcHVfbm9kZXN0YXQpO1xuK1x0aWYgKHBnZGF0LVx1MDAzZXBlcl9jcHVfbm9kZXN0YXRzID09IFx1MDAyNmJvb3Rfbm9kZXN0YXRzKSB7XG4rXHRcdHN0cnVjdCBwZXJfY3B1X25vZGVzdGF0IF9fcGVyY3B1ICpwO1xuK1xuK1x0XHRwID0gYWxsb2NfcGVyY3B1KHN0cnVjdCBwZXJfY3B1X25vZGVzdGF0KTtcbitcdFx0aWYgKCFwKVxuK1x0XHRcdHJldHVybiAtRU5PTUVNO1xuK1x0XHRwZ2RhdC1cdTAwM2VwZXJfY3B1X25vZGVzdGF0cyA9IHA7XG4rXHR9XG4gXG4gXHQvKlxuIFx0ICogUmVzZXQgdGhlIG5yX3pvbmVzLCBvcmRlciBhbmQgaGlnaGVzdF96b25laWR4IGJlZm9yZSByZXVzZS5cbkBAIC0xNTY2LDYgKzE1NzIsOCBAQCB2b2lkIF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KVxuIFx0XHR6b25lLVx1MDAzZXByZXNlbnRfcGFnZXMgPSAwO1xuIFx0XHR6b25lX2luaXRfaW50ZXJuYWxzKHpvbmUsIHosIG5pZCwgMCk7XG4gXHR9XG4rXG4rXHRyZXR1cm4gMDtcbiB9XG4gI2VuZGlmXG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxMDoxNC40MDM3ODc3OTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjE5MjQ4NDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldDogTWVtb3J5IEhvdHBsdWcgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyB3ZSd2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQncyB0d2Vha2luZyB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gbWVtb3J5IGhvdHBsdWcgaW5pdGlhbGl6YXRpb24uIFNwZWNpZmljYWxseSwgaXQgbW9kaWZpZXMgYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2AgaW4gYG1tL21tX2luaXQuY2AgYW5kIGBob3RhZGRfaW5pdF9wZ2RhdGAgaW4gYG1tL21lbW9yeV9ob3RwbHVnLmNgLiBUaGUgY2hhbmdlIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdgIG5vdyByZXR1cm5zIGFuIGBpbnRgIHJhdGhlciB0aGFuIGB2b2lkYCwgYW5kIGl0IHNpZ25hbHMgYW4gZXJyb3Igd2l0aCBgLUVOT01FTWAgaWYgYGFsbG9jX3BlcmNwdWAgZmFpbHMuIGBob3RhZGRfaW5pdF9wZ2RhdGAgdGhlbiBjaGVja3MgdGhpcyByZXR1cm4gdmFsdWUgYW5kIHJldHVybnMgYE5VTExgIG9uIGZhaWx1cmUuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcywgXCJJcyB0aGlzIHJlYWNoYWJsZSwgYW5kIG1vcmUgaW1wb3J0YW50bHksIGlzIGl0IHdvcnRoIGZ1enppbmc/XCIgU2luY2UgdGhpcyBkZWFscyB3aXRoIG1lbW9yeSBob3RwbHVnLCB0aGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gV2Uga25vdyBtZW1vcnkgaG90cGx1ZyBjYW4gYmUgaW5zdGlnYXRlZCBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIG1lY2hhbmlzbXMgbGlrZSBzeXNmcyBvciBBQ1BJLiBUaGF0IG1ha2VzIGl0IGEgc29saWQgY2FuZGlkYXRlIGZvciBmdXp6aW5nLlxuXG5UaGUgbmV4dCBxdWVzdGlvbiBpcyByZWFjaGFiaWxpdHkgaW4gYSB2aXJ0dWFsIG1hY2hpbmUgc2V0dGluZy4gR2l2ZW4gdGhhdCBtZW1vcnkgaG90cGx1ZyBjYW4gYmUgc2ltdWxhdGVkIG9yIHRyaWdnZXJlZCB2aWEgc3lzZnMsIHRoaXMgaXMgZGVmaW5pdGVseSBhY2Nlc3NpYmxlIGluIGEgVk0gZW52aXJvbm1lbnQuIFRoYXQgbWFrZXMgaXQgZXZlbiBtb3JlIGFwcGVhbGluZy5cblxuTm93LCBsZXQncyBkaXZlIGludG8gYGhvdGFkZF9pbml0X3BnZGF0YCBpbiBgbW0vbWVtb3J5X2hvdHBsdWcuY2AgYW5kIG1hcCBvdXQgdGhlIGNvbnRyb2wgZmxvdyB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhlIHJldHVybiB2YWx1ZSBhbmQgZmlndXJlIG91dCBpZiB3ZSBjYW4gZW5naW5lZXIgaW50ZXJlc3RpbmcgZmFpbHVyZSBzY2VuYXJpb3Mgd2l0aCBmdXp6aW5nLiBMZXQncyBzZWUgaWYgd2UgY2FuIHRyaWdnZXIgdGhvc2UgYC1FTk9NRU1gIGNvbmRpdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2ODYsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxMDoxOS42MjMwNDAyNzdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM2NDE3NDA4MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJob3RhZGRfaW5pdF9wZ2RhdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9tZW1vcnlfaG90cGx1Zy5jPTExMzc9aW50IG9ubGluZV9wYWdlcyh1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcyxcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI1Mi0vKiB3ZSBhcmUgT0sgY2FsbGluZyBfX21lbWluaXQgc3R1ZmYgaGVyZSAtIHdlIGhhdmUgQ09ORklHX01FTU9SWV9IT1RQTFVHICovXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxMjUzOnN0YXRpYyBwZ19kYXRhX3QgKmhvdGFkZF9pbml0X3BnZGF0KGludCBuaWQpXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMjU0LXtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM9MTI4OT1zdGF0aWMgaW50IF9fdHJ5X29ubGluZV9ub2RlKGludCBuaWQsIGJvb2wgc2V0X25vZGVfb25saW5lKVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMjk2LVxcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTI5NzpcXHRwZ2RhdCA9IGhvdGFkZF9pbml0X3BnZGF0KG5pZCk7XFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMjk4LVxcdGlmICghcGdkYXQpIHtcXG4tLVxcbm1tL21tX2luaXQuYz0xODA3PXN0YXRpYyB2b2lkIF9faW5pdCBmcmVlX2FyZWFfaW5pdCh2b2lkKVxcbi0tXFxubW0vbW1faW5pdC5jLTE4OTQtXFx0XFx0ICptZW1vcnktbGVzcyBub2RlLiBUaGUgcGdkYXQgd2lsbCBnZXQgZnVsbHkgaW5pdGlhbGl6ZWQgYnlcXG5tbS9tbV9pbml0LmM6MTg5NTpcXHRcXHQgKmhvdGFkZF9pbml0X3BnZGF0KCkgd2hlbiBtZW1vcnkgaXMgaG90cGx1Z2dlZCBpbnRvIHRoaXMgbm9kZS5cXG5tbS9tbV9pbml0LmMtMTg5Ni1cXHRcXHQgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6MTA6MjIuOTg3MjI3MjY5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyODA2ODM5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBzbmlwcGV0LCBhcyB0aG91Z2ggdGhleSB3ZXJlIG15IG93biB0aG91Z2h0czpcblxuKipEaXNzZWN0aW5nIHRoZSBNZW1vcnkgTm9kZSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIGBob3RhZGRfaW5pdF9wZ2RhdGAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQga2lja3Mgb2ZmIHRoZSBwcm9jZXNzIG9mIGluaXRpYWxpemluZyBhIG5ldyBtZW1vcnkgbm9kZSBhZGRlZCBvbiB0aGUgZmx5LiBUaGF0J3MgZ29vZCB0byBrbm93LiBUaGUga2V5IGlzIHVuZGVyc3RhbmRpbmcgKndoZW4qIHRoaXMgaW5pdGlhbGl6YXRpb24gYWN0dWFsbHkgb2NjdXJzLCB0byB1bmRlcnN0YW5kIHRoZSB0cmlnZ2VyLiBTbywgYGhvdGFkZF9pbml0X3BnZGF0YCBpcyBjYWxsZWQgZnJvbSBgX190cnlfb25saW5lX25vZGVgLiBUaGF0IHN1Z2dlc3RzIHRoYXQgYF9fdHJ5X29ubGluZV9ub2RlYCBsaWtlbHkgaGFzIHNvbWUgcmVzcG9uc2liaWxpdHkgZm9yIHRoZSBvdmVyYWxsIHByb2Nlc3Mgb2YgYnJpbmdpbmcgdGhlIG1lbW9yeSBub2RlIG9ubGluZS4gV2hhdCB0cmlnZ2VycyAqdGhhdCo/IEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbGluZyBoaWVyYXJjaHkuIFdoZXJlIGFyZSB0aGUgY2FsbHMgdG8gYF9fdHJ5X29ubGluZV9ub2RlYD8gVGhlIGFuc3dlciB0byB0aGF0IHdpbGwgdGVsbCBtZSB0aGUgZXZlbnQgdGhhdCBzZXRzIHRoaXMgaW5pdGlhbGl6YXRpb24gaW4gbW90aW9uLiBMZXQncyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgdGhlIGJyb2FkZXIgY29udGV4dCBoZXJlLiBJIG5lZWQgdGhlIGJpZ2dlciBwaWN0dXJlIHRvIHRydWx5IHVuZGVyc3RhbmQgdGhpcyBjb21wb25lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1OTMsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxMDoyNi4xMTUyOTk4MDRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM3MjUwNjI4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3RyeV9vbmxpbmVfbm9kZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9tbS9udW1hLmM9MjY0PXZvaWQgX19pbml0IGluaXRfZ2lfbm9kZXModm9pZClcXG4tLVxcbmFyY2gveDg2L21tL251bWEuYy0yNzEtXFx0ICogIGNwdV91cFxcbmFyY2gveDg2L21tL251bWEuYzoyNzI6XFx0ICogICBfX3RyeV9vbmxpbmVfbm9kZVxcbmFyY2gveDg2L21tL251bWEuYy0yNzMtXFx0ICogICAgcmVnaXN0ZXJfbm9kZVxcbi0tXFxuYXJjaC94ODYvbW0vbnVtYS5jPTI5Nj12b2lkIF9faW5pdCBpbml0X2NwdV90b19ub2RlKHZvaWQpXFxuLS1cXG5hcmNoL3g4Ni9tbS9udW1hLmMtMzEyLVxcdFxcdCAqICBjcHVfdXBcXG5hcmNoL3g4Ni9tbS9udW1hLmM6MzEzOlxcdFxcdCAqICAgX190cnlfb25saW5lX25vZGVcXG5hcmNoL3g4Ni9tbS9udW1hLmMtMzE0LVxcdFxcdCAqICAgIHJlZ2lzdGVyX25vZGVcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM9MTI1Mz1zdGF0aWMgcGdfZGF0YV90ICpob3RhZGRfaW5pdF9wZ2RhdChpbnQgbmlkKVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMjc4LS8qXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxMjc5OiAqIF9fdHJ5X29ubGluZV9ub2RlIC0gb25saW5lIGEgbm9kZSBpZiBvZmZsaW5lZFxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI4MC0gKiBAbmlkOiB0aGUgbm9kZSBJRFxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMjg4LSAqL1xcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTI4OTpzdGF0aWMgaW50IF9fdHJ5X29ubGluZV9ub2RlKGludCBuaWQsIGJvb2wgc2V0X25vZGVfb25saW5lKVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI5MC17XFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTEzMTY9aW50IHRyeV9vbmxpbmVfbm9kZShpbnQgbmlkKVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMzIwLVxcdG1lbV9ob3RwbHVnX2JlZ2luKCk7XFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxMzIxOlxcdHJldCA9ICBfX3RyeV9vbmxpbmVfbm9kZShuaWQsIHRydWUpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTMyMi1cXHRtZW1faG90cGx1Z19kb25lKCk7XFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTE0OTU9aW50IGFkZF9tZW1vcnlfcmVzb3VyY2UoaW50IG5pZCwgc3RydWN0IHJlc291cmNlICpyZXMsIG1ocF90IG1ocF9mbGFncylcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTUzMi1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE1MzM6XFx0cmV0ID0gX190cnlfb25saW5lX25vZGUobmlkLCBmYWxzZSk7XFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNTM0LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxMDoyOC40ODc4MTgzMDJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDk1ODU4NDc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqVHJhY2luZyB0aGUgT25saW5lIE5vZGUgTG9naWMqKlxuXG5SaWdodCwgc28gSSdtIHNlZWluZyB0aGF0IGBfX3RyeV9vbmxpbmVfbm9kZWAgZ2V0cyBjYWxsZWQgZnJvbSBib3RoIGB0cnlfb25saW5lX25vZGVgICphbmQqIGBhZGRfbWVtb3J5X3Jlc291cmNlYC4gIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQg4oCTIGl0IHN1Z2dlc3RzIGEga2luZCBvZiByZWN1cnNpdmUgcGF0dGVybiBvciBwZXJoYXBzIGEgaGVscGVyIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYnJvYWRlciBub2RlIG9ubGluZSBwcm9jZXNzLiBJJ2xsIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQsIHRob3NlIGZ1bmN0aW9ucyBjb3VsZCBiZSBpbXBvcnRhbnQuXG5cblRoZW4sIHRoZXJlJ3MgYSBjb21tZW50IGluIGBhcmNoL3g4Ni9tbS9udW1hLmNgIGluZGljYXRpbmcgYHRyeV9vbmxpbmVfbm9kZWAgaXMgdHJpZ2dlcmVkIGJ5IGBjcHVfdXBgLiBUaGF0IG5hcnJvd3MgZG93biB0aGUgY29udGV4dCBjb25zaWRlcmFibHkhIEEgYGNwdV91cGAgY2FsbCBpcyBhIHNpZ25pZmljYW50IGV2ZW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGxpbmsgdGhvcm91Z2hseS5cblxuVG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZSBvdmVyYWxsIGJlaGF2aW9yLCBJJ20gZ29pbmcgdG8gbG9vayBhdCAqYWxsKiB0aGUgcGxhY2VzIHdoZXJlIGB0cnlfb25saW5lX25vZGVgIGlzIGNhbGxlZC4gRmluZGluZyB0aGUgY2FsbGVycyBzaG91bGQgaWxsdW1pbmF0ZSB0aGUgY29udHJvbCBmbG93IGFuZCBlbHVjaWRhdGUgdGhlIGNpcmN1bXN0YW5jZXMgdGhhdCB0cmlnZ2VyIHRoZSBvbmxpbmUgcHJvY2Vzcy4gVGhhdCdzIHdoZXJlIHRoZSByZWFsIGluc2lnaHRzIHdpbGwgbGlrZWx5IGxpZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ2NiwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjEwOjMxLjk4MzY4MTE4MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjgwNjI5OTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRyeV9vbmxpbmVfbm9kZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Bvd2VycGMvbW0vbnVtYS5jPTE0MTI9dm9pZCBmaW5kX2FuZF91cGRhdGVfY3B1X25pZChpbnQgY3B1KVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL251bWEuYy0xNDI3LVxcdFxcdC8vIEFzc29jaWF0ZSBub2RlIFxcdTAwM2MtXFx1MDAzZSBjcHUsIHNvIGNwdV91cCgpIGNhbGxzXFxuYXJjaC9wb3dlcnBjL21tL251bWEuYzoxNDI4OlxcdFxcdC8vIHRyeV9vbmxpbmVfbm9kZSgpIG9uIHRoZSByaWdodCBub2RlLlxcbmFyY2gvcG93ZXJwYy9tbS9udW1hLmMtMTQyOS1cXHRcXHRzZXRfY3B1X251bWFfbm9kZShjcHUsIG5ld19uaWQpO1xcbi0tXFxuYXJjaC94ODYvbW0vbnVtYS5jPTI2ND12b2lkIF9faW5pdCBpbml0X2dpX25vZGVzKHZvaWQpXFxuLS1cXG5hcmNoL3g4Ni9tbS9udW1hLmMtMjcxLVxcdCAqICBjcHVfdXBcXG5hcmNoL3g4Ni9tbS9udW1hLmM6MjcyOlxcdCAqICAgX190cnlfb25saW5lX25vZGVcXG5hcmNoL3g4Ni9tbS9udW1hLmMtMjczLVxcdCAqICAgIHJlZ2lzdGVyX25vZGVcXG4tLVxcbmFyY2gveDg2L21tL251bWEuYz0yOTY9dm9pZCBfX2luaXQgaW5pdF9jcHVfdG9fbm9kZSh2b2lkKVxcbi0tXFxuYXJjaC94ODYvbW0vbnVtYS5jLTMxMi1cXHRcXHQgKiAgY3B1X3VwXFxuYXJjaC94ODYvbW0vbnVtYS5jOjMxMzpcXHRcXHQgKiAgIF9fdHJ5X29ubGluZV9ub2RlXFxuYXJjaC94ODYvbW0vbnVtYS5jLTMxNC1cXHRcXHQgKiAgICByZWdpc3Rlcl9ub2RlXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9MTIxPWV4dGVybiBpbnQgcmVzdG9yZV9vbmxpbmVfcGFnZV9jYWxsYmFjayhvbmxpbmVfcGFnZV9jYWxsYmFja190IGNhbGxiYWNrKTtcXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMTIyLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDoxMjM6ZXh0ZXJuIGludCB0cnlfb25saW5lX25vZGUoaW50IG5pZCk7XFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTEyNC1cXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaD0xOTk9c3RhdGljIGlubGluZSB2b2lkIHpvbmVfc2VxbG9ja19pbml0KHN0cnVjdCB6b25lICp6b25lKSB7fVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yMDAtXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjIwMTpzdGF0aWMgaW5saW5lIGludCB0cnlfb25saW5lX25vZGUoaW50IG5pZClcXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjAyLXtcXG4tLVxcbmtlcm5lbC9jcHUuYz0xNjgxPXN0YXRpYyBpbnQgY3B1X3VwKHVuc2lnbmVkIGludCBjcHUsIGVudW0gY3B1aHBfc3RhdGUgdGFyZ2V0KVxcbi0tXFxua2VybmVsL2NwdS5jLTE2OTAtXFxua2VybmVsL2NwdS5jOjE2OTE6XFx0ZXJyID0gdHJ5X29ubGluZV9ub2RlKGNwdV90b19ub2RlKGNwdSkpO1xcbmtlcm5lbC9jcHUuYy0xNjkyLVxcdGlmIChlcnIpXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTEyNTM9c3RhdGljIHBnX2RhdGFfdCAqaG90YWRkX2luaXRfcGdkYXQoaW50IG5pZClcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI3OC0vKlxcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTI3OTogKiBfX3RyeV9vbmxpbmVfbm9kZSAtIG9ubGluZSBhIG5vZGUgaWYgb2ZmbGluZWRcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEyODAtICogQG5pZDogdGhlIG5vZGUgSURcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI4OC0gKi9cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjEyODk6c3RhdGljIGludCBfX3RyeV9vbmxpbmVfbm9kZShpbnQgbmlkLCBib29sIHNldF9ub2RlX29ubGluZSlcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEyOTAte1xcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMzE1LSAqL1xcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTMxNjppbnQgdHJ5X29ubGluZV9ub2RlKGludCBuaWQpXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMzE3LXtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTMyMC1cXHRtZW1faG90cGx1Z19iZWdpbigpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTMyMTpcXHRyZXQgPSAgX190cnlfb25saW5lX25vZGUobmlkLCB0cnVlKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEzMjItXFx0bWVtX2hvdHBsdWdfZG9uZSgpO1xcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYz0xNDk1PWludCBhZGRfbWVtb3J5X3Jlc291cmNlKGludCBuaWQsIHN0cnVjdCByZXNvdXJjZSAqcmVzLCBtaHBfdCBtaHBfZmxhZ3MpXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE1MzItXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNTMzOlxcdHJldCA9IF9fdHJ5X29ubGluZV9ub2RlKG5pZCwgZmFsc2UpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTUzNC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6MTA6MzQuMjY0MzE3NDA4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE1MDUxNTgyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBOb2RlIE9ubGluZWluZyoqXG5cbk9rYXksIHNvIGB0cnlfb25saW5lX25vZGVgIGdldHMgY2FsbGVkIGZyb20gYGNwdV91cGAgd2l0aGluIHRoZSBrZXJuZWwncyBDUFUgY29kZSwgc3BlY2lmaWNhbGx5IGBrZXJuZWwvY3B1LmNgLiBgY3B1X3VwYCBpdHNlbGYgY2FuIGJlIGFjdGl2YXRlZCB2aWEgc3lzZnMsIHRoZSBgL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1WC9vbmxpbmVgIGludGVyZmFjZS4gSG1tLCBpbnRlcmVzdGluZy4uLiBXYWl0IGEgbWludXRlLCBgdHJ5X29ubGluZV9ub2RlYCBhY3R1YWxseSBjYWxscyBgX190cnlfb25saW5lX25vZGVgLCB3aGljaCB0aGVuIGRpdmVzIGludG8gYGhvdGFkZF9pbml0X3BnZGF0YC5cblxuYGhvdGFkZF9pbml0X3BnZGF0YCBpcyB0aGUgY3JpdGljYWwgcGllY2UgaGVyZTsgaXQgZG9lcyBhIGNoZWNrIHRvIHNlZSBpZiB0aGUgbm9kZSBpcyBhbHJlYWR5IG9ubGluZSwgYW5kIGlmIG5vdCwgKnRoZW4qIGl0IGluaXRpYWxpemVzIGl0LiBTbywgY2FuIENQVSBob3RwbHVnIHRyaWdnZXIgdGhpcyBzZXF1ZW5jZT8gWWVzLCBpdCBhYnNvbHV0ZWx5IGNhbiwgaWYgdGhlIENQVSB3ZSdyZSBob3RwbHVnZ2luZyBiZWxvbmdzIHRvIGEgTlVNQSBub2RlIHRoYXQgaXNuJ3Qgb25saW5lIHlldC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBJdCdzIGEga2V5IHBhcnQgb2YgYnJpbmdpbmcgdXAgYSBuZXcgbm9kZSB2aWEgYSBuZXcgQ1BVIVxuXG5BbmQsIGV2ZW4gYmV0dGVyLCBJIGFsc28gcmVjYWxsIHRoYXQgYGFkZF9tZW1vcnlfcmVzb3VyY2VgIGFsc28gY2FsbHMgYF9fdHJ5X29ubGluZV9ub2RlYC4gVGhhdCBtZWFucyBtZW1vcnkgaG90cGx1ZyBjYW4gYWxzbyBwb3RlbnRpYWxseSB0cmlnZ2VyIHRoaXMgbm9kZSBvbmxpbmUgcHJvY2VzcyEgU28sIGxldCdzIHNlZSB3aGljaCBjYWxsZXJzIGFyZSBhY3R1YWxseSBjYWxsaW5nIGBhZGRfbWVtb3J5X3Jlc291cmNlYCBpdHNlbGYsIHNpbmNlIHRoYXQncyBhIHNlY29uZCB0cmlnZ2VyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODU0LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjEwOjM4LjQxNDgzNjgwM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ1Njg5NTE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhZGRfbWVtb3J5X3Jlc291cmNlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vY29yZS1hcGkvbWVtb3J5LWhvdHBsdWcucnN0PTE3Mz1tZW1vcnkgZmFzdGVyIHRoYW4gZXhwZWN0ZWQ6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL21lbW9yeS1ob3RwbHVnLnJzdC0xNzYtICBtZW1faG90cGx1Z19sb2NrXFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9tZW1vcnktaG90cGx1Zy5yc3Q6MTc3Oi0gYWRkX21lbW9yeV9yZXNvdXJjZSgpIHdpbGwgZmlyc3QgdGFrZSB0aGUgbWVtX2hvdHBsdWdfbG9jaywgZm9sbG93ZWQgYnlcXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL21lbW9yeS1ob3RwbHVnLnJzdC0xNzgtICB0aGUgZGV2aWNlX2xvY2soKSAod2hpbGUgY3JlYXRpbmcgdGhlIGRldmljZXMsIGR1cmluZyBidXNfYWRkX2RldmljZSgpKS5cXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL2NvcmUtYXBpL21lbW9yeS1ob3RwbHVnLnJzdD04Nz1OT1RJRllfU1RPUOWBnOatouWvuemAmuefpemYn+WIl+eahOi/m+S4gOatpeWkhOeQhuOAglxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vY29yZS1hcGkvbWVtb3J5LWhvdHBsdWcucnN0LTEwNS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9jb3JlLWFwaS9tZW1vcnktaG90cGx1Zy5yc3Q6MTA2Oi0gYWRkX21lbW9yeV9yZXNvdXJjZSgp5bCG6aaW5YWI5L2/55SobWVtX2hvdHBsdWdfbG9ja++8jOeEtuWQjuaYr2RldmljZV9sb2NrKCnvvIjlnKjliJtcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9jb3JlLWFwaS9tZW1vcnktaG90cGx1Zy5yc3QtMTA3LSAg5bu66K6+5aSH5pe277yM5ZyoYnVzX2FkZF9kZXZpY2UoKeacn+mXtO+8ieOAglxcbi0tXFxuZHJpdmVycy94ZW4vYmFsbG9vbi5jPTI2ND1zdGF0aWMgZW51bSBicF9zdGF0ZSByZXNlcnZlX2FkZGl0aW9uYWxfbWVtb3J5KHZvaWQpXFxuLS1cXG5kcml2ZXJzL3hlbi9iYWxsb29uLmMtMzE4LVxcdC8qXFxuZHJpdmVycy94ZW4vYmFsbG9vbi5jOjMxOTpcXHQgKiBhZGRfbWVtb3J5X3Jlc291cmNlKCkgd2lsbCBjYWxsIG9ubGluZV9wYWdlcygpIHdoaWNoIGluIGl0cyB0dXJuXFxuZHJpdmVycy94ZW4vYmFsbG9vbi5jLTMyMC1cXHQgKiB3aWxsIGNhbGwgeGVuX29ubGluZV9wYWdlKCkgY2FsbGJhY2sgY2F1c2luZyBkZWFkbG9jayBpZiB3ZSBkb24ndFxcbi0tXFxuZHJpdmVycy94ZW4vYmFsbG9vbi5jLTMyNC1cXHRtdXRleF91bmxvY2soXFx1MDAyNmJhbGxvb25fbXV0ZXgpO1xcbmRyaXZlcnMveGVuL2JhbGxvb24uYzozMjU6XFx0LyogYWRkX21lbW9yeV9yZXNvdXJjZSgpIHJlcXVpcmVzIHRoZSBkZXZpY2VfaG90cGx1ZyBsb2NrICovXFxuZHJpdmVycy94ZW4vYmFsbG9vbi5jLTMyNi1cXHRsb2NrX2RldmljZV9ob3RwbHVnKCk7XFxuZHJpdmVycy94ZW4vYmFsbG9vbi5jOjMyNzpcXHRyYyA9IGFkZF9tZW1vcnlfcmVzb3VyY2UobmlkLCByZXNvdXJjZSwgTUhQX01FUkdFX1JFU09VUkNFKTtcXG5kcml2ZXJzL3hlbi9iYWxsb29uLmMtMzI4LVxcdHVubG9ja19kZXZpY2VfaG90cGx1ZygpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oPTM1PXR5cGVkZWYgaW50IF9fYml0d2lzZSBtaHBfdDtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC00MC0gKiBBbGxvdyBtZXJnaW5nIG9mIHRoZSBhZGRlZCBTeXN0ZW0gUkFNIHJlc291cmNlIHdpdGggYWRqYWNlbnQsXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjQxOiAqIG1lcmdlYWJsZSByZXNvdXJjZXMuIEFmdGVyIGEgc3VjY2Vzc2Z1bCBjYWxsIHRvIGFkZF9tZW1vcnlfcmVzb3VyY2UoKVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC00Mi0gKiB3aXRoIHRoaXMgZmxhZyBzZXQsIHRoZSByZXNvdXJjZSBwb2ludGVyIG11c3Qgbm8gbG9uZ2VyIGJlIHVzZWQgYXMgaXRcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaD0yOTQ9ZXh0ZXJuIGludCBhZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsIG1ocF90IG1ocF9mbGFncyk7XFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjI5NTpleHRlcm4gaW50IGFkZF9tZW1vcnlfcmVzb3VyY2UoaW50IG5pZCwgc3RydWN0IHJlc291cmNlICpyZXNvdXJjZSxcXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjk2LVxcdFxcdFxcdCAgICAgICBtaHBfdCBtaHBfZmxhZ3MpO1xcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYz0zMTk9c3RhdGljIGludCBjaGVja19wZm5fc3Bhbih1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcylcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMzI1LVxcdCAqIG9ubGluZSwgc28gdGhpcyBjaGVjayBzaG91bGQgb25seSBmaXJlIGZvciBkaXJlY3RcXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjMyNjpcXHQgKiBhcmNoX3thZGQscmVtb3ZlfV9tZW1vcnkoKSB1c2VycyBvdXRzaWRlIG9mIGFkZF9tZW1vcnlfcmVzb3VyY2UoKS5cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTMyNy1cXHQgKi9cXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM9MTQ0MT1zdGF0aWMgaW50IGNyZWF0ZV9hbHRtYXBzX2FuZF9tZW1vcnlfYmxvY2tzKGludCBuaWQsIHN0cnVjdCBtZW1vcnlfZ3JvdXAgKmdyb3VwLFxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNDk0LSAqL1xcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTQ5NTppbnQgYWRkX21lbW9yeV9yZXNvdXJjZShpbnQgbmlkLCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcywgbWhwX3QgbWhwX2ZsYWdzKVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTQ5Ni17XFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MDEtXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNjAyOi8qIHJlcXVpcmVzIGRldmljZV9ob3RwbHVnX2xvY2ssIHNlZSBhZGRfbWVtb3J5X3Jlc291cmNlKCkgKi9cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MDMtaW50IF9fYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBtaHBfdCBtaHBfZmxhZ3MpXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MTEtXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNjEyOlxcdHJldCA9IGFkZF9tZW1vcnlfcmVzb3VyY2UobmlkLCByZXMsIG1ocF9mbGFncyk7XFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjEzLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYz0xNjUxPWludCBhZGRfbWVtb3J5X2RyaXZlcl9tYW5hZ2VkKGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2NjktXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNjcwOlxcdHJjID0gYWRkX21lbW9yeV9yZXNvdXJjZShuaWQsIHJlcywgbWhwX2ZsYWdzKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2NzEtXFx0aWYgKHJjIFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6MTA6NDAuODcxNzQzMDEzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwODc4MjQ0ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJhY2luZyBNZW1vcnkgQWxsb2NhdGlvbiBDYWxscyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBtZW1vcnkgaXMgYWxsb2NhdGVkIHdpdGhpbiB0aGlzIHN5c3RlbS4gSSBzZWUgYGFkZF9tZW1vcnlfcmVzb3VyY2VgIGJlaW5nIGludm9rZWQsIGFuZCB0aGF0J3MgYSBrZXkgZnVuY3Rpb24gZm9yIG1hbmFnaW5nIG1lbW9yeSByZXNvdXJjZXMuIE5vdywgaXQgbG9va3MgbGlrZSBpdCdzIHByaW1hcmlseSBjYWxsZWQgZnJvbSBgX19hZGRfbWVtb3J5YCBhbmQgYGFkZF9tZW1vcnlfZHJpdmVyX21hbmFnZWRgLCB3aGljaCBtYWtlcyBzZW5zZSBhcyB0aGVzZSBsaWtlbHkgcmVwcmVzZW50IHRoZSBjb3JlIGFsbG9jYXRpb24gbG9naWMgYW5kIGRyaXZlci1zcGVjaWZpYyBtYW5hZ2VtZW50LCByZXNwZWN0aXZlbHkuXG5cbkhvd2V2ZXIsIGBfX2FkZF9tZW1vcnlgIGl0c2VsZiBpcyBjYWxsZWQgYnkgYGFkZF9tZW1vcnlgLiBUaGlzIHN1Z2dlc3RzIGBhZGRfbWVtb3J5YCBjb3VsZCBiZSB0aGUgaGlnaC1sZXZlbCwgZXh0ZXJuYWwgZmFjaW5nIGZ1bmN0aW9uIGZvciBhZGRpbmcgbWVtb3J5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBoaWVyYXJjaHkgZnJvbSB0aGUgdG9wIGRvd24uXG5cblRoZXJlZm9yZSwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHBpbnBvaW50IHRoZSBjYWxsZXJzIG9mIGBhZGRfbWVtb3J5YC4gS25vd2luZyB3aGVyZSAqdGhhdCogZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkIGZyb20gd2lsbCBpbGx1bWluYXRlIHRoZSBlbnRpcmUgcHJvY2Vzcy4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgYmFjayB0byB0aGUgb3JpZ2luYXRpbmcgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1NzcsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxMDo0My45NTk1NzA3MTJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NzYwNjA4NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWRkX21lbW9yeVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2NvcmUtYXBpL21lbW9yeS1ob3RwbHVnLnJzdD0xNzM9bWVtb3J5IGZhc3RlciB0aGFuIGV4cGVjdGVkOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9tZW1vcnktaG90cGx1Zy5yc3QtMTc2LSAgbWVtX2hvdHBsdWdfbG9ja1xcbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbWVtb3J5LWhvdHBsdWcucnN0OjE3NzotIGFkZF9tZW1vcnlfcmVzb3VyY2UoKSB3aWxsIGZpcnN0IHRha2UgdGhlIG1lbV9ob3RwbHVnX2xvY2ssIGZvbGxvd2VkIGJ5XFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9tZW1vcnktaG90cGx1Zy5yc3QtMTc4LSAgdGhlIGRldmljZV9sb2NrKCkgKHdoaWxlIGNyZWF0aW5nIHRoZSBkZXZpY2VzLCBkdXJpbmcgYnVzX2FkZF9kZXZpY2UoKSkuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL21tL21lbW9yeS1tb2RlbC5yc3Q9MTU1PXRoaXMgbGFjayBvZiB1c2VyLWFwaSBjb25zdHJhaW50IHRvIGFsbG93IHN1Yi1zZWN0aW9uIHNpemVkIG1lbW9yeVxcbkRvY3VtZW50YXRpb24vbW0vbWVtb3J5LW1vZGVsLnJzdDoxNTY6cmFuZ2VzIHRvIGJlIHNwZWNpZmllZCB0byA6YzpmdW5jOmBhcmNoX2FkZF9tZW1vcnlgLCB0aGUgdG9wLWhhbGYgb2ZcXG5Eb2N1bWVudGF0aW9uL21tL21lbW9yeS1tb2RlbC5yc3QtMTU3LW1lbW9yeSBob3RwbHVnLiBTdWItc2VjdGlvbiBzdXBwb3J0IGFsbG93cyBmb3IgMk1CIGFzIHRoZSBjcm9zcy1hcmNoXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9jb3JlLWFwaS9tZW1vcnktaG90cGx1Zy5yc3Q9ODc9Tk9USUZZX1NUT1DlgZzmraLlr7npgJrnn6XpmJ/liJfnmoTov5vkuIDmraXlpITnkIbjgIJcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL2NvcmUtYXBpL21lbW9yeS1ob3RwbHVnLnJzdC0xMDUtXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vY29yZS1hcGkvbWVtb3J5LWhvdHBsdWcucnN0OjEwNjotIGFkZF9tZW1vcnlfcmVzb3VyY2UoKeWwhummluWFiOS9v+eUqG1lbV9ob3RwbHVnX2xvY2vvvIznhLblkI7mmK9kZXZpY2VfbG9jaygp77yI5Zyo5YibXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vY29yZS1hcGkvbWVtb3J5LWhvdHBsdWcucnN0LTEwNy0gIOW7uuiuvuWkh+aXtu+8jOWcqGJ1c19hZGRfZGV2aWNlKCnmnJ/pl7TvvInjgIJcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL21lbW9yeS1tb2RlbC5yc3Q9MTA3PVpPTkVfREVWSUNFXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9tZW1vcnktbW9kZWwucnN0LTEyMS3kuIrjgILov5nkuKrlrp7njrDkvp3otZbkuo7ov5nnp43nvLrkuY/nlKjmiLfmjqXlj6PnmoTnuqbmnZ/vvIzlhYHorrjlrZDmrrXlpKflsI/nmoTlhoXlrZjojIPlm7TooqvmjIflrprnu5lcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9tZW1vcnktbW9kZWwucnN0OjEyMjo6YzpmdW5jOmBhcmNoX2FkZF9tZW1vcnlgIO+8jOWNs+WGheWtmOeDreaPkuaLlOeahOS4iuWNiumDqOWIhuOAguWtkOauteaUr+aMgeWFgeiuuDJNQuS9nOS4ulxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL21lbW9yeS1tb2RlbC5yc3QtMTIzLTpjOmZ1bmM6YGRldm1fbWVtcmVtYXBfcGFnZXNgIOeahOi3qOaetuaehOmAmueUqOWvuem9kOmil+eykuW6puOAglxcbi0tXFxuYXJjaC9hcmMvbW0vaW5pdC5jPTQ5PWVhcmx5X3BhcmFtKFxcXCJtZW1cXFwiLCBzZXR1cF9tZW1fc3opO1xcbmFyY2gvYXJjL21tL2luaXQuYy01MC1cXG5hcmNoL2FyYy9tbS9pbml0LmM6NTE6dm9pZCBfX2luaXQgZWFybHlfaW5pdF9kdF9hZGRfbWVtb3J5X2FyY2godTY0IGJhc2UsIHU2NCBzaXplKVxcbmFyY2gvYXJjL21tL2luaXQuYy01Mi17XFxuLS1cXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9zZXR1cC5oPTIwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGFndGFibGUgX190YWd0YWJsZV8jI2ZuIF9fdGFnID0geyB0YWcsIGZuIH1cXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9zZXR1cC5oLTIxLVxcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3NldHVwLmg6MjI6ZXh0ZXJuIGludCBhcm1fYWRkX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKTtcXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9zZXR1cC5oLTIzLWV4dGVybiBfX3ByaW50ZigxLCAyKSB2b2lkIGVhcmx5X3ByaW50KGNvbnN0IGNoYXIgKnN0ciwgLi4uKTtcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9hdGFnc19wYXJzZS5jPTY1PXN0YXRpYyBpbnQgX19pbml0IHBhcnNlX3RhZ19tZW0zMihjb25zdCBzdHJ1Y3QgdGFnICp0YWcpXFxuYXJjaC9hcm0va2VybmVsL2F0YWdzX3BhcnNlLmMtNjYte1xcbmFyY2gvYXJtL2tlcm5lbC9hdGFnc19wYXJzZS5jOjY3OlxcdHJldHVybiBhcm1fYWRkX21lbW9yeSh0YWctXFx1MDAzZXUubWVtLnN0YXJ0LCB0YWctXFx1MDAzZXUubWVtLnNpemUpO1xcbmFyY2gvYXJtL2tlcm5lbC9hdGFnc19wYXJzZS5jLTY4LX1cXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9zZXR1cC5jPTc0Nj12b2lkIF9faW5pdCBkdW1wX21hY2hpbmVfdGFibGUodm9pZClcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9zZXR1cC5jLTc1OS1cXG5hcmNoL2FybS9rZXJuZWwvc2V0dXAuYzo3NjA6aW50IF9faW5pdCBhcm1fYWRkX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKVxcbmFyY2gvYXJtL2tlcm5lbC9zZXR1cC5jLTc2MS17XFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvc2V0dXAuYz04MjY9c3RhdGljIGludCBfX2luaXQgZWFybHlfbWVtKGNoYXIgKnApXFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvc2V0dXAuYy04NDgtXFxuYXJjaC9hcm0va2VybmVsL3NldHVwLmM6ODQ5OlxcdGFybV9hZGRfbWVtb3J5KHN0YXJ0LCBzaXplKTtcXG5hcmNoL2FybS9rZXJuZWwvc2V0dXAuYy04NTAtXFxuLS1cXG5hcmNoL2FybTY0L21tL21tdS5jPTE5NTM9c3RydWN0IHJhbmdlIGFyY2hfZ2V0X21hcHBhYmxlX3JhbmdlKHZvaWQpXFxuLS1cXG5hcmNoL2FybTY0L21tL21tdS5jLTE5ODQtXFxuYXJjaC9hcm02NC9tbS9tbXUuYzoxOTg1OmludCBhcmNoX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSxcXG5hcmNoL2FybTY0L21tL21tdS5jLTE5ODYtXFx0XFx0ICAgIHN0cnVjdCBtaHBfcGFyYW1zICpwYXJhbXMpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmM9NjQ9dm9pZCBfX2luaXQgZml4cmFuZ2VfaW5pdCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgcGdkX3QgKnBnZF9iYXNlKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTEwNi0jaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jOjEwNzppbnQgYXJjaF9hZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCBtaHBfcGFyYW1zICpwYXJhbXMpXFxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTEwOC17XFxuLS1cXG5hcmNoL21pcHMvZ2VuZXJpYy9ib2FyZC1pbmdlbmljLmM9MTA4PXN0YXRpYyBfX2luaXQgY29uc3Qgdm9pZCAqaW5nZW5pY19maXh1cF9mZHQoY29uc3Qgdm9pZCAqZmR0LCBjb25zdCB2b2lkICptYXRjaF9kYXRhKVxcbi0tXFxuYXJjaC9taXBzL2dlbmVyaWMvYm9hcmQtaW5nZW5pYy5jLTExNS1cXHQgICAgZmR0X3BhdGhfb2Zmc2V0KGZkdCwgXFxcIi9tZW1vcnlcXFwiKSBcXHUwMDNjIDApXFxuYXJjaC9taXBzL2dlbmVyaWMvYm9hcmQtaW5nZW5pYy5jOjExNjpcXHRcXHRlYXJseV9pbml0X2R0X2FkZF9tZW1vcnlfYXJjaCgwLCBTWl8zMk0pO1xcbmFyY2gvbWlwcy9nZW5lcmljL2JvYXJkLWluZ2VuaWMuYy0xMTctXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYz02MTM9c3RhdGljIGludCBhZGRfbWVtX3RvX21lbWJsb2NrID0gMTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jLTYxNy1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYzo2MTg6dm9pZCBfX2luaXQgZWFybHlfaW5pdF9kdF9hZGRfbWVtb3J5X2FyY2godTY0IGJhc2UsIHU2NCBzaXplKVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jLTYxOS17XFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vbWVtLmM9MTI5PWludCBfX3JlZiBhZGRfcGFnZXMoaW50IG5pZCwgdW5zaWduZWQgbG9uZyBzdGFydF9wZm4sIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vbWVtLmMtMTQ0LVxcbmFyY2gvcG93ZXJwYy9tbS9tZW0uYzoxNDU6aW50IF9fcmVmIGFyY2hfYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLFxcbmFyY2gvcG93ZXJwYy9tbS9tZW0uYy0xNDYtXFx0XFx0XFx0ICBzdHJ1Y3QgbWhwX3BhcmFtcyAqcGFyYW1zKVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2hvdHBsdWctbWVtb3J5LmM9NTY0PXN0YXRpYyBpbnQgZGxwYXJfYWRkX2xtYihzdHJ1Y3QgZHJtZW1fbG1iICpsbWIpXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYy01ODYtXFx0LyogQWRkIHRoZSBtZW1vcnkgKi9cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYzo1ODc6XFx0cmMgPSBfX2FkZF9tZW1vcnkobmlkLCBsbWItXFx1MDAzZWJhc2VfYWRkciwgYmxvY2tfc3osIE1IUF9NRU1NQVBfT05fTUVNT1JZKTtcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYy01ODgtXFx0aWYgKHJjKSB7XFxuLS1cXG5hcmNoL3Jpc2N2L21tL2luaXQuYz0xNzA0PXN0cnVjdCByYW5nZSBhcmNoX2dldF9tYXBwYWJsZV9yYW5nZSh2b2lkKVxcbi0tXFxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTcxMi1cXG5hcmNoL3Jpc2N2L21tL2luaXQuYzoxNzEzOmludCBfX3JlZiBhcmNoX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSwgc3RydWN0IG1ocF9wYXJhbXMgKnBhcmFtcylcXG5hcmNoL3Jpc2N2L21tL2luaXQuYy0xNzE0LXtcXG4tLVxcbmFyY2gvczM5MC9tbS9pbml0LmM9MjU2PWRldmljZV9pbml0Y2FsbChzMzkwX2NtYV9tZW1faW5pdCk7XFxuLS1cXG5hcmNoL3MzOTAvbW0vaW5pdC5jLTI1OS1cXG5hcmNoL3MzOTAvbW0vaW5pdC5jOjI2MDppbnQgYXJjaF9hZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsXFxuYXJjaC9zMzkwL21tL2luaXQuYy0yNjEtXFx0XFx0ICAgIHN0cnVjdCBtaHBfcGFyYW1zICpwYXJhbXMpXFxuLS1cXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM9OTY0PWludCBhZGRfcGFnZXMoaW50IG5pZCwgdW5zaWduZWQgbG9uZyBzdGFydF9wZm4sIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsXFxuLS1cXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmMtOTkxLVxcbmFyY2gveDg2L21tL2luaXRfNjQuYzo5OTI6aW50IGFyY2hfYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLFxcbmFyY2gveDg2L21tL2luaXRfNjQuYy05OTMtXFx0XFx0ICAgIHN0cnVjdCBtaHBfcGFyYW1zICpwYXJhbXMpXFxuLS1cXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmM9MTY4PXN0YXRpYyBpbnQgYWNwaV9tZW1vcnlfZW5hYmxlX2RldmljZShzdHJ1Y3QgYWNwaV9tZW1vcnlfZGV2aWNlICptZW1fZGV2aWNlKVxcbi0tXFxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jLTIxMi1cXHRcXHRtaHBfZmxhZ3MgfD0gTUhQX01FTU1BUF9PTl9NRU1PUlk7XFxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jOjIxMzpcXHRcXHRyZXN1bHQgPSBfX2FkZF9tZW1vcnkobWdpZCwgaW5mby1cXHUwMDNlc3RhcnRfYWRkciwgaW5mby1cXHUwMDNlbGVuZ3RoLFxcbmRyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYy0yMTQtXFx0XFx0XFx0XFx0ICAgICAgbWhwX2ZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYy0yMTYtXFx0XFx0LypcXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmM6MjE3OlxcdFxcdCAqIElmIHRoZSBtZW1vcnkgYmxvY2sgaGFzIGJlZW4gdXNlZCBieSB0aGUga2VybmVsLCBhZGRfbWVtb3J5KClcXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmM6MjE4OlxcdFxcdCAqIHJldHVybnMgLUVFWElTVC4gSWYgYWRkX21lbW9yeSgpIHJldHVybnMgdGhlIG90aGVyIGVycm9yLCBpdFxcbmRyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYy0yMTktXFx0XFx0ICogbWVhbnMgdGhhdCB0aGlzIG1lbW9yeSBibG9jayBpcyBub3QgdXNlZCBieSB0aGUga2VybmVsLlxcbi0tXFxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jLTIzMi1cXHRcXHQvKlxcbmRyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYzoyMzM6XFx0XFx0ICogQWRkIG51bV9lbmFibGUgZXZlbiBpZiBhZGRfbWVtb3J5KCkgcmV0dXJucyAtRUVYSVNULCBzbyB0aGVcXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmMtMjM0LVxcdFxcdCAqIGRldmljZSBpcyBib3VuZCB0byB0aGlzIGRyaXZlci5cXG4tLVxcbmRyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYy0yMzgtXFx0aWYgKCFudW1fZW5hYmxlZCkge1xcbmRyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYzoyMzk6XFx0XFx0ZGV2X2VycihcXHUwMDI2bWVtX2RldmljZS1cXHUwMDNlZGV2aWNlLVxcdTAwM2VkZXYsIFxcXCJhZGRfbWVtb3J5IGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jLTI0MC1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvYWNwaS9zY2FuLmM9MjgyMT12b2lkIF9faW5pdCBhY3BpX3NjYW5faW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9hY3BpL3NjYW4uYy0yODYxLVxcdC8qXFxuZHJpdmVycy9hY3BpL3NjYW4uYzoyODYyOlxcdCAqIEFsdGhvdWdoIHdlIGNhbGwgX19hZGRfbWVtb3J5KCkgdGhhdCBpcyBkb2N1bWVudGVkIHRvIHJlcXVpcmUgdGhlXFxuZHJpdmVycy9hY3BpL3NjYW4uYy0yODYzLVxcdCAqIGRldmljZV9ob3RwbHVnX2xvY2ssIGl0IGlzIG5vdCBuZWNlc3NhcnkgaGVyZSBiZWNhdXNlIHRoaXMgaXMgYW5cXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz01NjM9c3RhdGljIHNzaXplX3QgcHJvYmVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy01ODEtXFx0bmlkID0gbWVtb3J5X2FkZF9waHlzYWRkcl90b19uaWQocGh5c19hZGRyKTtcXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6NTgyOlxcdHJldCA9IF9fYWRkX21lbW9yeShuaWQsIHBoeXNfYWRkcixcXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtNTgzLVxcdFxcdFxcdCAgIE1JTl9NRU1PUllfQkxPQ0tfU0laRSAqIHNlY3Rpb25zX3Blcl9ibG9jayxcXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz02Nzc9c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKm1lbW9yeV9tZW1ibGtfYXR0cl9ncm91cHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy02ODEtXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jOjY4MjpzdGF0aWMgaW50IF9fYWRkX21lbW9yeV9ibG9jayhzdHJ1Y3QgbWVtb3J5X2Jsb2NrICptZW1vcnkpXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTY4My17XFxuLS1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9NzU0PXZvaWQgbWVtb3J5X2Jsb2NrX2FkZF9uaWRfZWFybHkoc3RydWN0IG1lbW9yeV9ibG9jayAqbWVtLCBpbnQgbmlkKVxcbi0tXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTc4MC1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6NzgxOnN0YXRpYyBpbnQgYWRkX21lbW9yeV9ibG9jayh1bnNpZ25lZCBsb25nIGJsb2NrX2lkLCBpbnQgbmlkLCB1bnNpZ25lZCBsb25nIHN0YXRlLFxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy03ODItXFx0XFx0XFx0ICAgIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxcbi0tXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTgxMi1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6ODEzOlxcdHJldCA9IF9fYWRkX21lbW9yeV9ibG9jayhtZW0pO1xcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy04MTQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz04NTE9aW50IGNyZWF0ZV9tZW1vcnlfYmxvY2tfZGV2aWNlcyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIHNpemUsXFxuLS1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtODY1LVxcdGZvciAoYmxvY2tfaWQgPSBzdGFydF9ibG9ja19pZDsgYmxvY2tfaWQgIT0gZW5kX2Jsb2NrX2lkOyBibG9ja19pZCsrKSB7XFxuZHJpdmVycy9iYXNlL21lbW9yeS5jOjg2NjpcXHRcXHRyZXQgPSBhZGRfbWVtb3J5X2Jsb2NrKGJsb2NrX2lkLCBuaWQsIE1FTV9PRkZMSU5FLCBhbHRtYXAsIGdyb3VwKTtcXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtODY3LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9OTQzPXZvaWQgX19pbml0IG1lbW9yeV9kZXZfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTk3MC1cXHRcXHRibG9ja19pZCA9IG1lbW9yeV9ibG9ja19pZChucik7XFxuZHJpdmVycy9iYXNlL21lbW9yeS5jOjk3MTpcXHRcXHRyZXQgPSBhZGRfbWVtb3J5X2Jsb2NrKGJsb2NrX2lkLCBOVU1BX05PX05PREUsIE1FTV9PTkxJTkUsIE5VTEwsIE5VTEwpO1xcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy05NzItXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9kYXgvS2NvbmZpZz03Mz1jb25maWcgREVWX0RBWF9LTUVNXFxuLS1cXG5kcml2ZXJzL2RheC9LY29uZmlnLTc2LVxcdGRlcGVuZHMgb24gREVWX0RBWFxcbmRyaXZlcnMvZGF4L0tjb25maWc6Nzc6XFx0ZGVwZW5kcyBvbiBNRU1PUllfSE9UUExVRyAjIGZvciBhZGRfbWVtb3J5KCkgYW5kIGZyaWVuZHNcXG5kcml2ZXJzL2RheC9LY29uZmlnLTc4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvZGF4L2ttZW0uYy0yNS1cXG5kcml2ZXJzL2RheC9rbWVtLmM6MjY6LyogTWVtb3J5IHJlc291cmNlIG5hbWUgdXNlZCBmb3IgYWRkX21lbW9yeV9kcml2ZXJfbWFuYWdlZCgpLiAqL1xcbmRyaXZlcnMvZGF4L2ttZW0uYy0yNy1zdGF0aWMgY29uc3QgY2hhciAqa21lbV9uYW1lO1xcbi0tXFxuZHJpdmVycy9kYXgva21lbS5jPTY4PXN0YXRpYyBpbnQgZGV2X2RheF9rbWVtX3Byb2JlKHN0cnVjdCBkZXZfZGF4ICpkZXZfZGF4KVxcbi0tXFxuZHJpdmVycy9kYXgva21lbS5jLTE2Mi1cXHRcXHQgKiBTZXQgZmxhZ3MgYXBwcm9wcmlhdGUgZm9yIFN5c3RlbSBSQU0uICBMZWF2ZSAuLi5fQlVTWSBjbGVhclxcbmRyaXZlcnMvZGF4L2ttZW0uYzoxNjM6XFx0XFx0ICogc28gdGhhdCBhZGRfbWVtb3J5KCkgY2FuIGFkZCBhIGNoaWxkIHJlc291cmNlLiAgRG8gbm90XFxuZHJpdmVycy9kYXgva21lbS5jLTE2NC1cXHRcXHQgKiBpbmhlcml0IGZsYWdzIGZyb20gdGhlIHBhcmVudCBzaW5jZSBpdCBtYXkgc2V0IG5ldyBmbGFnc1xcbmRyaXZlcnMvZGF4L2ttZW0uYzoxNjU6XFx0XFx0ICogdW5rbm93biB0byB1cyB0aGF0IHdpbGwgYnJlYWsgYWRkX21lbW9yeSgpIGJlbG93LlxcbmRyaXZlcnMvZGF4L2ttZW0uYy0xNjYtXFx0XFx0ICovXFxuLS1cXG5kcml2ZXJzL2RheC9rbWVtLmMtMTc2LVxcdFxcdCAqL1xcbmRyaXZlcnMvZGF4L2ttZW0uYzoxNzc6XFx0XFx0cmMgPSBhZGRfbWVtb3J5X2RyaXZlcl9tYW5hZ2VkKGRhdGEtXFx1MDAzZW1naWQsIHJhbmdlLnN0YXJ0LFxcbmRyaXZlcnMvZGF4L2ttZW0uYy0xNzgtXFx0XFx0XFx0XFx0cmFuZ2VfbGVuKFxcdTAwMjZyYW5nZSksIGttZW1fbmFtZSwgbWhwX2ZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2VmaS1pbml0LmM9MTU5PXN0YXRpYyBfX2luaXQgdm9pZCByZXNlcnZlX3JlZ2lvbnModm9pZClcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2VmaS1pbml0LmMtMjIwLVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2VmaS1pbml0LmM6MjIxOlxcdFxcdFxcdGVhcmx5X2luaXRfZHRfYWRkX21lbW9yeV9hcmNoKHBhZGRyLCBzaXplKTtcXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9lZmktaW5pdC5jLTIyMi1cXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIvZWZpc3R1Yi5oPTQwNT11bmlvbiBlZmlfZHhlX3NlcnZpY2VzX3RhYmxlIHtcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIvZWZpc3R1Yi5oLTQwNy1cXHRcXHRlZmlfdGFibGVfaGRyX3QgaGRyO1xcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIvZWZpc3R1Yi5oOjQwODpcXHRcXHR2b2lkICphZGRfbWVtb3J5X3NwYWNlO1xcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIvZWZpc3R1Yi5oLTQwOS1cXHRcXHR2b2lkICphbGxvY2F0ZV9tZW1vcnlfc3BhY2U7XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9saWJzdHViL2VmaXN0dWIuaC00MzAtXFx0XFx0ZWZpX3RhYmxlX2hkcl90IGhkcjtcXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9saWJzdHViL2VmaXN0dWIuaDo0MzE6XFx0XFx0dTMyIGFkZF9tZW1vcnlfc3BhY2U7XFxuZHJpdmVycy9maXJtd2FyZS9lZmkvbGlic3R1Yi9lZmlzdHViLmgtNDMyLVxcdFxcdHUzMiBhbGxvY2F0ZV9tZW1vcnlfc3BhY2U7XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL3Fjb20vcWNvbV90em1lbS5jPTE4ND1zdGF0aWMgdm9pZCBxY29tX3R6bWVtX2NsZWFudXBfYXJlYShzdHJ1Y3QgcWNvbV90em1lbV9hcmVhICphcmVhKVxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9xY29tL3Fjb21fdHptZW0uYy0xOTMtXFxuZHJpdmVycy9maXJtd2FyZS9xY29tL3Fjb21fdHptZW0uYzoxOTQ6c3RhdGljIGludCBxY29tX3R6bWVtX3Bvb2xfYWRkX21lbW9yeShzdHJ1Y3QgcWNvbV90em1lbV9wb29sICpwb29sLFxcbmRyaXZlcnMvZmlybXdhcmUvcWNvbS9xY29tX3R6bWVtLmMtMTk1LVxcdFxcdFxcdFxcdCAgICAgIHNpemVfdCBzaXplLCBnZnBfdCBnZnApXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL3Fjb20vcWNvbV90em1lbS5jPTI0ND1xY29tX3R6bWVtX3Bvb2xfbmV3KGNvbnN0IHN0cnVjdCBxY29tX3R6bWVtX3Bvb2xfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL3Fjb20vcWNvbV90em1lbS5jLTI4MS1cXHRpZiAoY29uZmlnLVxcdTAwM2Vpbml0aWFsX3NpemUpIHtcXG5kcml2ZXJzL2Zpcm13YXJlL3Fjb20vcWNvbV90em1lbS5jOjI4MjpcXHRcXHRyZXQgPSBxY29tX3R6bWVtX3Bvb2xfYWRkX21lbW9yeShwb29sLCBjb25maWctXFx1MDAzZWluaXRpYWxfc2l6ZSxcXG5kcml2ZXJzL2Zpcm13YXJlL3Fjb20vcWNvbV90em1lbS5jLTI4My1cXHRcXHRcXHRcXHRcXHRcXHQgR0ZQX0tFUk5FTCk7XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL3Fjb20vcWNvbV90em1lbS5jPTM3ND1zdGF0aWMgYm9vbCBxY29tX3R6bWVtX3RyeV9ncm93X3Bvb2woc3RydWN0IHFjb21fdHptZW1fcG9vbCAqcG9vbCxcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvcWNvbS9xY29tX3R6bWVtLmMtMzkxLVxcbmRyaXZlcnMvZmlybXdhcmUvcWNvbS9xY29tX3R6bWVtLmM6MzkyOlxcdHJldHVybiAhcWNvbV90em1lbV9wb29sX2FkZF9tZW1vcnkocG9vbCwgcmVxdWVzdGVkLCBnZnApO1xcbmRyaXZlcnMvZmlybXdhcmUvcWNvbS9xY29tX3R6bWVtLmMtMzkzLX1cXG4tLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jPTcwNj1zdGF0aWMgdm9pZCBodl9tZW1faG90X2FkZCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIHNpemUsXFxuLS1cXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy03MjgtXFx0XFx0bmlkID0gbWVtb3J5X2FkZF9waHlzYWRkcl90b19uaWQoUEZOX1BIWVMoc3RhcnRfcGZuKSk7XFxuZHJpdmVycy9odi9odl9iYWxsb29uLmM6NzI5OlxcdFxcdHJldCA9IGFkZF9tZW1vcnkobmlkLCBQRk5fUEhZUygoc3RhcnRfcGZuKSksXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtNzMwLVxcdFxcdFxcdFxcdCBIQV9CWVRFU19JTl9DSFVOSywgTUhQX01FUkdFX1JFU09VUkNFKTtcXG4tLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jPTE3MDA9c3RhdGljIGludCBob3RfYWRkX2VuYWJsZWQodm9pZClcXG4tLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTE3MDYtXFx0ICogRE1fTUVNX0hPVF9BRERfUkVRVUVTVCBkb2Vzbid0IGhhdmUgdGhlIE5VTUEgbm9kZSBpbmZvcm1hdGlvbiBmb3JcXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYzoxNzA3OlxcdCAqIGFkZF9tZW1vcnkoKS5cXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy0xNzA4LVxcdCAqL1xcbi0tXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmM9MTkzNj1zdGF0aWMgaW50IGJhbGxvb25fcHJvYmUoc3RydWN0IGh2X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMTk0Ny1cXHQgKiBIb3QtYWRkIG11c3Qgb3BlcmF0ZSBpbiBjaHVua3MgdGhhdCBhcmUgb2Ygc2l6ZSBlcXVhbCB0byB0aGVcXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYzoxOTQ4OlxcdCAqIG1lbW9yeSBibG9jayBzaXplIGJlY2F1c2UgdGhhdCdzIHdoYXQgdGhlIGNvcmUgYWRkX21lbW9yeSgpXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMTk0OS1cXHQgKiBpbnRlcmZhY2UgcmVxdWlyZXMuIFRoZSBIeXBlci1WIGludGVyZmFjZSByZXF1aXJlcyB0aGF0IHRoZSBtZW1vcnlcXG4tLVxcbmRyaXZlcnMvb2YvZmR0LmM9MTAzNj1pbnQgX19pbml0IGVhcmx5X2luaXRfZHRfc2Nhbl9tZW1vcnkodm9pZClcXG4tLVxcbmRyaXZlcnMvb2YvZmR0LmMtMTA3NC1cXG5kcml2ZXJzL29mL2ZkdC5jOjEwNzU6XFx0XFx0XFx0ZWFybHlfaW5pdF9kdF9hZGRfbWVtb3J5X2FyY2goYmFzZSwgc2l6ZSk7XFxuZHJpdmVycy9vZi9mZHQuYy0xMDc2LVxcbi0tXFxuZHJpdmVycy9vZi9mZHQuYz0xMDkwPWludCBfX2luaXQgZWFybHlfaW5pdF9kdF9zY2FuX2Nob3NlbihjaGFyICpjbWRsaW5lKVxcbi0tXFxuZHJpdmVycy9vZi9mZHQuYy0xMTU3LVxcbmRyaXZlcnMvb2YvZmR0LmM6MTE1ODp2b2lkIF9faW5pdCBfX3dlYWsgZWFybHlfaW5pdF9kdF9hZGRfbWVtb3J5X2FyY2godTY0IGJhc2UsIHU2NCBzaXplKVxcbmRyaXZlcnMvb2YvZmR0LmMtMTE1OS17XFxuLS1cXG5kcml2ZXJzL29mL2ZkdC5jPTEyMjc9dm9pZCBfX2luaXQgZWFybHlfaW5pdF9kdF9zY2FuX25vZGVzKHZvaWQpXFxuLS1cXG5kcml2ZXJzL29mL2ZkdC5jLTEyMzUtXFxuZHJpdmVycy9vZi9mZHQuYzoxMjM2OlxcdC8qIFNldHVwIG1lbW9yeSwgY2FsbGluZyBlYXJseV9pbml0X2R0X2FkZF9tZW1vcnlfYXJjaCAqL1xcbmRyaXZlcnMvb2YvZmR0LmMtMTIzNy1cXHRlYXJseV9pbml0X2R0X3NjYW5fbWVtb3J5KCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY2hhci9zY2xwX21lbS5jPTE4OT1zdGF0aWMgc3NpemVfdCBzY2xwX2NvbmZpZ19tZW1fc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvczM5MC9jaGFyL3NjbHBfbWVtLmMtMjIyLVxcdFxcdCAqIFNldCBlbnRpcmUgbWVtb3J5IGJsb2NrIENNTUEgc3RhdGUgdG8gbm9kYXQuIExhdGVyLCB3aGVuXFxuZHJpdmVycy9zMzkwL2NoYXIvc2NscF9tZW0uYzoyMjM6XFx0XFx0ICogcGFnZSB0YWJsZXMgcGFnZXMgYXJlIGFsbG9jYXRlZCB2aWEgX19hZGRfbWVtb3J5KCksIHRob3NlXFxuZHJpdmVycy9zMzkwL2NoYXIvc2NscF9tZW0uYy0yMjQtXFx0XFx0ICogcmVnaW9ucyBhcmUgbWFya2VkIF9fYXJjaF9zZXRfcGFnZV9kYXQoKS5cXG4tLVxcbmRyaXZlcnMvczM5MC9jaGFyL3NjbHBfbWVtLmMtMjI2LVxcdFxcdF9fYXJjaF9zZXRfcGFnZV9ub2RhdCgodm9pZCAqKV9fdmEoYWRkciksIGJsb2NrX3NpemUgXFx1MDAzZVxcdTAwM2UgUEFHRV9TSElGVCk7XFxuZHJpdmVycy9zMzkwL2NoYXIvc2NscF9tZW0uYzoyMjc6XFx0XFx0cmMgPSBfX2FkZF9tZW1vcnkoMCwgYWRkciwgYmxvY2tfc2l6ZSxcXG5kcml2ZXJzL3MzOTAvY2hhci9zY2xwX21lbS5jLTIyOC1cXHRcXHRcXHRcXHQgIHNjbHBfbWVtLVxcdTAwM2VtZW1tYXBfb25fbWVtb3J5ID9cXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz02Nz1lbnVtIHZpcnRpb19tZW1fc2JtX21iX3N0YXRlIHtcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy02OS1cXHRWSVJUSU9fTUVNX1NCTV9NQl9VTlVTRUQgPSAwLFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo3MDpcXHQvKiAoUGFydGlhbGx5KSBwbHVnZ2VkLCBub3QgYWRkZWQgdG8gTGludXguIEVycm9yIG9uIGFkZF9tZW1vcnkoKS4gKi9cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzEtXFx0VklSVElPX01FTV9TQk1fTUJfUExVR0dFRCxcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz05MD1lbnVtIHZpcnRpb19tZW1fYmJtX2JiX3N0YXRlIHtcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy05Mi1cXHRWSVJUSU9fTUVNX0JCTV9CQl9VTlVTRUQgPSAwLFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo5MzpcXHQvKiBQbHVnZ2VkLCBub3QgYWRkZWQgdG8gTGludXguIEVycm9yIG9uIGFkZF9tZW1vcnkoKS4gKi9cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtOTQtXFx0VklSVElPX01FTV9CQk1fQkJfUExVR0dFRCxcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz0xMDI9c3RydWN0IHZpcnRpb19tZW0ge1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTE0Mi1cXHQgKiBDb3B5IG9mIFxcXCJTeXN0ZW0gUkFNICh2aXJ0aW9fbWVtKVxcXCIgdG8gYmUgdXNlZCBmb3JcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6MTQzOlxcdCAqIGFkZF9tZW1vcnlfZHJpdmVyX21hbmFnZWQoKS5cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtMTQ0LVxcdCAqL1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jPTU4OD1zdGF0aWMgaW50IHZpcnRpb19tZW1fc2JtX3NiX3N0YXRlc19wcmVwYXJlX25leHRfbWIoc3RydWN0IHZpcnRpb19tZW0gKnZtKVxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTYxOS0gKi9cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6NjIwOnN0YXRpYyBib29sIHZpcnRpb19tZW1fY291bGRfYWRkX21lbW9yeShzdHJ1Y3QgdmlydGlvX21lbSAqdm0sIHVpbnQ2NF90IHNpemUpXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTYyMS17XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNjM1LSAqL1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo2MzY6c3RhdGljIGludCB2aXJ0aW9fbWVtX2FkZF9tZW1vcnkoc3RydWN0IHZpcnRpb19tZW0gKnZtLCB1aW50NjRfdCBhZGRyLFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy02MzctXFx0XFx0XFx0XFx0IHVpbnQ2NF90IHNpemUpXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNjU1LVxcdGF0b21pYzY0X2FkZChzaXplLCBcXHUwMDI2dm0tXFx1MDAzZW9mZmxpbmVfc2l6ZSk7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjY1NjpcXHRyYyA9IGFkZF9tZW1vcnlfZHJpdmVyX21hbmFnZWQodm0tXFx1MDAzZW1naWQsIGFkZHIsIHNpemUsIHZtLVxcdTAwM2VyZXNvdXJjZV9uYW1lLFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy02NTctXFx0XFx0XFx0XFx0ICAgICAgIE1IUF9NRVJHRV9SRVNPVVJDRSB8IE1IUF9OSURfSVNfTUdJRCk7XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNjY5LS8qXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjY3MDogKiBTZWUgdmlydGlvX21lbV9hZGRfbWVtb3J5KCk6IFRyeSBhZGRpbmcgYSBzaW5nbGUgTGludXggbWVtb3J5IGJsb2NrLlxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy02NzEtICovXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jPTY3Mj1zdGF0aWMgaW50IHZpcnRpb19tZW1fc2JtX2FkZF9tYihzdHJ1Y3QgdmlydGlvX21lbSAqdm0sIHVuc2lnbmVkIGxvbmcgbWJfaWQpXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNjc2LVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo2Nzc6XFx0cmV0dXJuIHZpcnRpb19tZW1fYWRkX21lbW9yeSh2bSwgYWRkciwgc2l6ZSk7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTY3OC19XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNjgwLS8qXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjY4MTogKiBTZWUgdmlydGlvX21lbV9hZGRfbWVtb3J5KCk6IFRyeSBhZGRpbmcgYSBiaWcgYmxvY2suXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTY4Mi0gKi9cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9NjgzPXN0YXRpYyBpbnQgdmlydGlvX21lbV9iYm1fYWRkX2JiKHN0cnVjdCB2aXJ0aW9fbWVtICp2bSwgdW5zaWduZWQgbG9uZyBiYl9pZClcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy02ODctXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjY4ODpcXHRyZXR1cm4gdmlydGlvX21lbV9hZGRfbWVtb3J5KHZtLCBhZGRyLCBzaXplKTtcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNjg5LX1cXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz05NzQ9c3RhdGljIHZvaWQgdmlydGlvX21lbV9iYm1fbm90aWZ5X2NhbmNlbF9vZmZsaW5lKHN0cnVjdCB2aXJ0aW9fbWVtICp2bSxcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy05ODUtLypcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6OTg2OiAqIFRoaXMgY2FsbGJhY2sgd2lsbCBlaXRoZXIgYmUgY2FsbGVkIHN5bmNocm9ub3VzbHkgZnJvbSBhZGRfbWVtb3J5KCkgb3JcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtOTg3LSAqIGFzeW5jaHJvbm91c2x5IChlLmcuLCB0cmlnZ2VyZWQgdmlhIHVzZXIgc3BhY2UpLiBXZSBoYXZlIHRvIGJlIGNhcmVmdWxcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6OTg4OiAqIHdpdGggbG9ja2luZyB3aGVuIGNhbGxpbmcgYWRkX21lbW9yeSgpLlxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy05ODktICovXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jPTk5MD1zdGF0aWMgaW50IHZpcnRpb19tZW1fbWVtb3J5X25vdGlmaWVyX2NiKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtMTA4Ny1cXHRcXHRpZiAoIWF0b21pY19yZWFkKFxcdTAwMjZ2bS1cXHUwMDNld3FfYWN0aXZlKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzoxMDg4OlxcdFxcdCAgICB2aXJ0aW9fbWVtX2NvdWxkX2FkZF9tZW1vcnkodm0sIHZtLVxcdTAwM2VvZmZsaW5lX3RocmVzaG9sZCAvIDIpKVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy0xMDg5LVxcdFxcdFxcdHZpcnRpb19tZW1fcmV0cnkodm0pO1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jPTE3NjA9c3RhdGljIGludCB2aXJ0aW9fbWVtX3NibV9wbHVnX3JlcXVlc3Qoc3RydWN0IHZpcnRpb19tZW0gKnZtLCB1aW50NjRfdCBkaWZmKVxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTE3OTMtXFx0dmlydGlvX21lbV9zYm1fZm9yX2VhY2hfbWIodm0sIG1iX2lkLCBWSVJUSU9fTUVNX1NCTV9NQl9VTlVTRUQpIHtcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6MTc5NDpcXHRcXHRpZiAoIXZpcnRpb19tZW1fY291bGRfYWRkX21lbW9yeSh2bSwgbWVtb3J5X2Jsb2NrX3NpemVfYnl0ZXMoKSkpXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTE3OTUtXFx0XFx0XFx0cmV0dXJuIC1FTk9TUEM7XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtMTgwNC1cXHR3aGlsZSAobmJfc2IpIHtcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6MTgwNTpcXHRcXHRpZiAoIXZpcnRpb19tZW1fY291bGRfYWRkX21lbW9yeSh2bSwgbWVtb3J5X2Jsb2NrX3NpemVfYnl0ZXMoKSkpXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTE4MDYtXFx0XFx0XFx0cmV0dXJuIC1FTk9TUEM7XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9MTg3OD1zdGF0aWMgaW50IHZpcnRpb19tZW1fYmJtX3BsdWdfcmVxdWVzdChzdHJ1Y3QgdmlydGlvX21lbSAqdm0sIHVpbnQ2NF90IGRpZmYpXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtMTg4OC1cXHR2aXJ0aW9fbWVtX2JibV9mb3JfZWFjaF9iYih2bSwgYmJfaWQsIFZJUlRJT19NRU1fQkJNX0JCX1VOVVNFRCkge1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzoxODg5OlxcdFxcdGlmICghdmlydGlvX21lbV9jb3VsZF9hZGRfbWVtb3J5KHZtLCB2bS1cXHUwMDNlYmJtLmJiX3NpemUpKVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy0xODkwLVxcdFxcdFxcdHJldHVybiAtRU5PU1BDO1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTE5MDEtXFx0d2hpbGUgKG5iX2JiKSB7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjE5MDI6XFx0XFx0aWYgKCF2aXJ0aW9fbWVtX2NvdWxkX2FkZF9tZW1vcnkodm0sIHZtLVxcdTAwM2ViYm0uYmJfc2l6ZSkpXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTE5MDMtXFx0XFx0XFx0cmV0dXJuIC1FTk9TUEM7XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9Mjg3OT1zdGF0aWMgaW50IHZpcnRpb19tZW1fY3JlYXRlX3Jlc291cmNlKHN0cnVjdCB2aXJ0aW9fbWVtICp2bSlcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy0yOTAxLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzoyOTAyOlxcdC8qIFRoZSBtZW1vcnkgaXMgbm90IGFjdHVhbGx5IGJ1c3kgLSBtYWtlIGFkZF9tZW1vcnkoKSB3b3JrLiAqL1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy0yOTAzLVxcdHZtLVxcdTAwM2VwYXJlbnRfcmVzb3VyY2UtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5JT1JFU09VUkNFX0JVU1k7XFxuLS1cXG5kcml2ZXJzL3hlbi9iYWxsb29uLmM9MjY0PXN0YXRpYyBlbnVtIGJwX3N0YXRlIHJlc2VydmVfYWRkaXRpb25hbF9tZW1vcnkodm9pZClcXG4tLVxcbmRyaXZlcnMveGVuL2JhbGxvb24uYy0yOTYtICAgICAgICAvKlxcbmRyaXZlcnMveGVuL2JhbGxvb24uYzoyOTc6ICAgICAgICAgKiBhZGRfbWVtb3J5KCkgd2lsbCBidWlsZCBwYWdlIHRhYmxlcyBmb3IgdGhlIG5ldyBtZW1vcnkgc29cXG5kcml2ZXJzL3hlbi9iYWxsb29uLmMtMjk4LSAgICAgICAgICogdGhlIHAybSBtdXN0IGNvbnRhaW4gaW52YWxpZCBlbnRyaWVzIHNvIHRoZSBjb3JyZWN0XFxuLS1cXG5kcml2ZXJzL3hlbi9iYWxsb29uLmMtMzE4LVxcdC8qXFxuZHJpdmVycy94ZW4vYmFsbG9vbi5jOjMxOTpcXHQgKiBhZGRfbWVtb3J5X3Jlc291cmNlKCkgd2lsbCBjYWxsIG9ubGluZV9wYWdlcygpIHdoaWNoIGluIGl0cyB0dXJuXFxuZHJpdmVycy94ZW4vYmFsbG9vbi5jLTMyMC1cXHQgKiB3aWxsIGNhbGwgeGVuX29ubGluZV9wYWdlKCkgY2FsbGJhY2sgY2F1c2luZyBkZWFkbG9jayBpZiB3ZSBkb24ndFxcbi0tXFxuZHJpdmVycy94ZW4vYmFsbG9vbi5jLTMyNC1cXHRtdXRleF91bmxvY2soXFx1MDAyNmJhbGxvb25fbXV0ZXgpO1xcbmRyaXZlcnMveGVuL2JhbGxvb24uYzozMjU6XFx0LyogYWRkX21lbW9yeV9yZXNvdXJjZSgpIHJlcXVpcmVzIHRoZSBkZXZpY2VfaG90cGx1ZyBsb2NrICovXFxuZHJpdmVycy94ZW4vYmFsbG9vbi5jLTMyNi1cXHRsb2NrX2RldmljZV9ob3RwbHVnKCk7XFxuZHJpdmVycy94ZW4vYmFsbG9vbi5jOjMyNzpcXHRyYyA9IGFkZF9tZW1vcnlfcmVzb3VyY2UobmlkLCByZXNvdXJjZSwgTUhQX01FUkdFX1JFU09VUkNFKTtcXG5kcml2ZXJzL3hlbi9iYWxsb29uLmMtMzI4LVxcdHVubG9ja19kZXZpY2VfaG90cGx1ZygpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oPTMyPXN0cnVjdCBwYWdlICpwZm5fdG9fb25saW5lX3BhZ2UodW5zaWduZWQgbG9uZyBwZm4pO1xcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0zMy1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MzQ6LyogRmxhZ3MgZm9yIGFkZF9tZW1vcnkoKSBhbmQgZnJpZW5kcyB0byBzcGVjaWZ5IG1lbW9yeSBob3RwbHVnIGRldGFpbHMuICovXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTM1LXR5cGVkZWYgaW50IF9fYml0d2lzZSBtaHBfdDtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC00MC0gKiBBbGxvdyBtZXJnaW5nIG9mIHRoZSBhZGRlZCBTeXN0ZW0gUkFNIHJlc291cmNlIHdpdGggYWRqYWNlbnQsXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjQxOiAqIG1lcmdlYWJsZSByZXNvdXJjZXMuIEFmdGVyIGEgc3VjY2Vzc2Z1bCBjYWxsIHRvIGFkZF9tZW1vcnlfcmVzb3VyY2UoKVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC00Mi0gKiB3aXRoIHRoaXMgZmxhZyBzZXQsIHRoZSByZXNvdXJjZSBwb2ludGVyIG11c3Qgbm8gbG9uZ2VyIGJlIHVzZWQgYXMgaXRcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaD0xMjM9ZXh0ZXJuIGludCB0cnlfb25saW5lX25vZGUoaW50IG5pZCk7XFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTEyNC1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MTI1OmV4dGVybiBpbnQgYXJjaF9hZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTEyNi1cXHRcXHRcXHQgICBzdHJ1Y3QgbWhwX3BhcmFtcyAqcGFyYW1zKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaD0yOTI9ZXh0ZXJuIGludCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCk7XFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjI5MzpleHRlcm4gaW50IF9fYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBtaHBfdCBtaHBfZmxhZ3MpO1xcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDoyOTQ6ZXh0ZXJuIGludCBhZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsIG1ocF90IG1ocF9mbGFncyk7XFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjI5NTpleHRlcm4gaW50IGFkZF9tZW1vcnlfcmVzb3VyY2UoaW50IG5pZCwgc3RydWN0IHJlc291cmNlICpyZXNvdXJjZSxcXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjk2LVxcdFxcdFxcdCAgICAgICBtaHBfdCBtaHBfZmxhZ3MpO1xcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDoyOTc6ZXh0ZXJuIGludCBhZGRfbWVtb3J5X2RyaXZlcl9tYW5hZ2VkKGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI5OC1cXHRcXHRcXHRcXHQgICAgIGNvbnN0IGNoYXIgKnJlc291cmNlX25hbWUsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L29mX2ZkdC5oPTc2PWV4dGVybiB2b2lkIGVhcmx5X2luaXRfZmR0X3Jlc2VydmVfc2VsZih2b2lkKTtcXG5pbmNsdWRlL2xpbnV4L29mX2ZkdC5oOjc3OmV4dGVybiB2b2lkIGVhcmx5X2luaXRfZHRfYWRkX21lbW9yeV9hcmNoKHU2NCBiYXNlLCB1NjQgc2l6ZSk7XFxuaW5jbHVkZS9saW51eC9vZl9mZHQuaC03OC1leHRlcm4gdTY0IGR0X21lbV9uZXh0X2NlbGwoaW50IHMsIGNvbnN0IF9fYmUzMiAqKmNlbGxwKTtcXG4tLVxcbmtlcm5lbC9yZXNvdXJjZS5jPTE2MDA9c3RhdGljIGJvb2wgc3lzdGVtX3JhbV9yZXNvdXJjZXNfbWVyZ2VhYmxlKHN0cnVjdCByZXNvdXJjZSAqcjEsXFxuLS1cXG5rZXJuZWwvcmVzb3VyY2UuYy0xNjE0LSAqIFRoaXMgaW50ZXJmYWNlIGlzIGludGVuZGVkIGZvciBtZW1vcnkgaG90cGx1Zywgd2hlcmVieSBsb3RzIG9mIGNvbnRpZ3VvdXNcXG5rZXJuZWwvcmVzb3VyY2UuYzoxNjE1OiAqIHN5c3RlbSByYW0gcmVzb3VyY2VzIGFyZSBhZGRlZCAoZS5nLiwgdmlhIGFkZF9tZW1vcnkqKCkpIGJ5IGEgZHJpdmVyLCBhbmRcXG5rZXJuZWwvcmVzb3VyY2UuYy0xNjE2LSAqIHRoZSBhY3R1YWwgcmVzb3VyY2UgYm91bmRhcmllcyBhcmUgbm90IG9mIGludGVyZXN0IChlLmcuLCBpdCBtaWdodCBiZVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYz0zMTk9c3RhdGljIGludCBjaGVja19wZm5fc3Bhbih1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcylcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMzI1LVxcdCAqIG9ubGluZSwgc28gdGhpcyBjaGVjayBzaG91bGQgb25seSBmaXJlIGZvciBkaXJlY3RcXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjMyNjpcXHQgKiBhcmNoX3thZGQscmVtb3ZlfV9tZW1vcnkoKSB1c2VycyBvdXRzaWRlIG9mIGFkZF9tZW1vcnlfcmVzb3VyY2UoKS5cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTMyNy1cXHQgKi9cXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM9MTQ0MT1zdGF0aWMgaW50IGNyZWF0ZV9hbHRtYXBzX2FuZF9tZW1vcnlfYmxvY2tzKGludCBuaWQsIHN0cnVjdCBtZW1vcnlfZ3JvdXAgKmdyb3VwLFxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNDY1LVxcdFxcdC8qIGNhbGwgYXJjaCdzIG1lbW9yeSBob3RhZGQgKi9cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE0NjY6XFx0XFx0cmV0ID0gYXJjaF9hZGRfbWVtb3J5KG5pZCwgY3VyX3N0YXJ0LCBtZW1ibG9ja19zaXplLCBcXHUwMDI2cGFyYW1zKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE0NjctXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTQ5NC0gKi9cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE0OTU6aW50IGFkZF9tZW1vcnlfcmVzb3VyY2UoaW50IG5pZCwgc3RydWN0IHJlc291cmNlICpyZXMsIG1ocF90IG1ocF9mbGFncylcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE0OTYte1xcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNTU0LVxcdH0gZWxzZSB7XFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNTU1OlxcdFxcdHJldCA9IGFyY2hfYWRkX21lbW9yeShuaWQsIHN0YXJ0LCBzaXplLCBcXHUwMDI2cGFyYW1zKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE1NTYtXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MDEtXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNjAyOi8qIHJlcXVpcmVzIGRldmljZV9ob3RwbHVnX2xvY2ssIHNlZSBhZGRfbWVtb3J5X3Jlc291cmNlKCkgKi9cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE2MDM6aW50IF9fYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBtaHBfdCBtaHBfZmxhZ3MpXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjA0LXtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTYxMS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE2MTI6XFx0cmV0ID0gYWRkX21lbW9yeV9yZXNvdXJjZShuaWQsIHJlcywgbWhwX2ZsYWdzKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MTMtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MTctXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNjE4OmludCBhZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsIG1ocF90IG1ocF9mbGFncylcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MTkte1xcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjIyLVxcdGxvY2tfZGV2aWNlX2hvdHBsdWcoKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE2MjM6XFx0cmMgPSBfX2FkZF9tZW1vcnkobmlkLCBzdGFydCwgc2l6ZSwgbWhwX2ZsYWdzKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MjQtXFx0dW5sb2NrX2RldmljZV9ob3RwbHVnKCk7XFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MjctfVxcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTYyODpFWFBPUlRfU1lNQk9MX0dQTChhZGRfbWVtb3J5KTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MjktXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2NTAtICovXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNjUxOmludCBhZGRfbWVtb3J5X2RyaXZlcl9tYW5hZ2VkKGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjUyLVxcdFxcdFxcdCAgICAgIGNvbnN0IGNoYXIgKnJlc291cmNlX25hbWUsIG1ocF90IG1ocF9mbGFncylcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTY2OS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE2NzA6XFx0cmMgPSBhZGRfbWVtb3J5X3Jlc291cmNlKG5pZCwgcmVzLCBtaHBfZmxhZ3MpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTY3MS1cXHRpZiAocmMgXFx1MDAzYyAwKVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjc3LX1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE2Nzg6RVhQT1JUX1NZTUJPTF9HUEwoYWRkX21lbW9yeV9kcml2ZXJfbWFuYWdlZCk7XFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjc5LVxcbi0tXFxubW0vbWVtcmVtYXAuYz0xNDQ9c3RhdGljIGludCBwYWdlbWFwX3JhbmdlKHN0cnVjdCBkZXZfcGFnZW1hcCAqcGdtYXAsIHN0cnVjdCBtaHBfcGFyYW1zICpwYXJhbXMsXFxuLS1cXG5tbS9tZW1yZW1hcC5jLTIwMy1cXHQgKiBvdmVyIHRoZSBkZXZpY2UgbWVtb3J5IGlzIHVuLWFjY2Vzc2libGUgdGh1cyB3ZSBkbyBub3Qgd2FudCB0b1xcbm1tL21lbXJlbWFwLmM6MjA0OlxcdCAqIGNyZWF0ZSBhIGxpbmVhciBtYXBwaW5nIGZvciB0aGUgbWVtb3J5IGxpa2UgYXJjaF9hZGRfbWVtb3J5KClcXG5tbS9tZW1yZW1hcC5jLTIwNS1cXHQgKiB3b3VsZCBkby5cXG4tLVxcbm1tL21lbXJlbWFwLmMtMjA4LVxcdCAqIHRoZSBDUFUsIHdlIGRvIHdhbnQgdGhlIGxpbmVhciBtYXBwaW5nIGFuZCB0aHVzIHVzZVxcbm1tL21lbXJlbWFwLmM6MjA5OlxcdCAqIGFyY2hfYWRkX21lbW9yeSgpLlxcbm1tL21lbXJlbWFwLmMtMjEwLVxcdCAqL1xcbi0tXFxubW0vbWVtcmVtYXAuYy0yMjAtXFxubW0vbWVtcmVtYXAuYzoyMjE6XFx0XFx0ZXJyb3IgPSBhcmNoX2FkZF9tZW1vcnkobmlkLCByYW5nZS1cXHUwMDNlc3RhcnQsIHJhbmdlX2xlbihyYW5nZSksXFxubW0vbWVtcmVtYXAuYy0yMjItXFx0XFx0XFx0XFx0XFx0cGFyYW1zKTtcXG4tLVxcbm1tL21lbXJlbWFwLmMtMjM1LVxcdGlmIChlcnJvcilcXG5tbS9tZW1yZW1hcC5jOjIzNjpcXHRcXHRnb3RvIGVycl9hZGRfbWVtb3J5O1xcbm1tL21lbXJlbWFwLmMtMjM3LVxcbi0tXFxubW0vbWVtcmVtYXAuYy0yNDktXFxubW0vbWVtcmVtYXAuYzoyNTA6ZXJyX2FkZF9tZW1vcnk6XFxubW0vbWVtcmVtYXAuYy0yNTEtXFx0aWYgKCFpc19wcml2YXRlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxMDo0Ni41MzU2NDExODFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzgxMzY0ODcyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1lbW9yeSBIb3RwbHVnIFBhdGNoKipcblxuT2theSwgc28gYGFkZF9tZW1vcnlgIGlzIHRoZSBmdW5jdGlvbiB3ZSdyZSBpbnRlcmVzdGVkIGluLiBJdCdzIHVzZWQgYnkgc2V2ZXJhbCBrZXkgZHJpdmVycyDigJMgYGh2X2JhbGxvb24uY2AsIGB2aXJ0aW9fbWVtLmNgLCBgZGF4L2ttZW0uY2AsIGFuZCBgYWNwaV9tZW1ob3RwbHVnLmNgIOKAkyBhbmQgY3J1Y2lhbGx5LCBhbHNvIGJ5IHRoZSBzeXNmcyBwcm9iZSBzdG9yZSBpbiBgYmFzZS9tZW1vcnkuY2AuIFRoYXQncyBpbnRlcmVzdGluZywgYmVjYXVzZSBpdCBtZWFucyB3ZSBjYW4gdHJpZ2dlciBtZW1vcnkgaG90cGx1ZyBmcm9tIHVzZXJzcGFjZSB2aWEgYC9zeXMvZGV2aWNlcy9zeXN0ZW0vbWVtb3J5L3Byb2JlYCwgYXNzdW1pbmcgYENPTkZJR19BUkNIX01FTU9SWV9QUk9CRWAgaXMgZW5hYmxlZC4gV2FpdCwgYGRyaXZlcnMvYmFzZS9tZW1vcnkuY2AgYWN0dWFsbHkgY2FsbHMgYF9fYWRkX21lbW9yeWAgdGhyb3VnaCB0aGUgYHByb2JlX3N0b3JlYCBwYXRoLCBhbmQgYHZpcnRpb19tZW1gIGFuZCBgaHZfYmFsbG9vbmAgYWxzbyBkbyBpdC4gU28sIGl0J3MgZGVmaW5pdGVseSBzb21ldGhpbmcgd2UgY2FuIHJlYWNoIGFuZCB0ZXN0IGVhc2lseSB3aXRoaW4gYSBWTSBlbnZpcm9ubWVudC4gRXhjZWxsZW50LlxuXG5Ob3csIGxldCdzIGRpdmUgYmFjayBpbnRvIHRoaXMgcGF0Y2guIEkgc2VlIHRoZSBtYWluIGNoYW5nZSBpcyBoZXJlOlxuXG5gYGBjXG4gXHQvKiBpbml0IG5vZGUncyB6b25lcyBhcyBlbXB0eSB6b25lcywgd2UgZG9uJ3QgaGF2ZSBhbnkgcHJlc2VudCBwYWdlcy4qL1xuLVx0ZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHBnZGF0KTtcbitcdGlmIChmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcocGdkYXQpKVxuK1x0XHRyZXR1cm4gTlVMTDtcbmBgYFxuXG5BbmQgYWxzbywgd2l0aGluIHRoZSBgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnYCBmdW5jdGlvbjpcblxuYGBgY1xuLXZvaWQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpXG4raW50IF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KVxuIHtcbiBcdGludCBuaWQgPSBwZ2RhdC1cdTAwM2Vub2RlX2lkO1xuIFx0ZW51bSB6b25lX3R5cGUgejtcbkBAIC0xNTM0LDggKzE1MzQsMTQgQEAgdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdClcbiBcbiBcdHBnZGF0X2luaXRfaW50ZXJuYWxzKHBnZGF0KTtcbiBcbi1cdGlmIChwZ2RhdC1cdTAwM2VwZXJfY3B1X25vZGVzdGF0cyA9PSBcdTAwMjZib290X25vZGVzdGF0cylcbi1cdFx0cGdkYXQtXHUwMDNlcGVyX2NwdV9ub2Rlc3RhdHMgPSBhbGxvY19wZXJjcHUoc3RydWN0IHBlcl9jcHVfbm9kZXN0YXQpO1xuK1x0aWYgKHBnZGF0LVx1MDAzZXBlcl9jcHVfbm9kZXN0YXRzID09IFx1MDAyNmJvb3Rfbm9kZXN0YXRzKSB7XG4rXHRcdHN0cnVjdCBwZXJfY3B1X25vZGVzdGF0IF9fcGVyY3B1ICpwO1xuK1xuK1x0XHRwID0gYWxsb2NfcGVyY3B1KHN0cnVjdCBwZXJfY3B1X25vZGVzdGF0KTtcbitcdFx0aWYgKCFwKVxuK1x0XHRcdHJldHVybiAtRU5PTUVNO1xuK1x0XHRwZ2RhdC1cdTAwM2VwZXJfY3B1X25vZGVzdGF0cyA9IHA7XG4rXHR9XG5gYGBcblxuVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBUaGUgcGF0Y2ggbm93IGhhbmRsZXMgcG90ZW50aWFsIGZhaWx1cmVzIG9mIHRoZSBgYWxsb2NfcGVyY3B1YCBjYWxsLiBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZyB0byBlbnN1cmUgaXQgaGFuZGxlcyBtZW1vcnkgYWxsb2NhdGlvbiBlcnJvcnMgZ3JhY2VmdWxseS4gVGhlIHByZXZpb3VzIHZlcnNpb24gbWlnaHQgaGF2ZSBzaW1wbHkgY3Jhc2hlZCBpZiBgYWxsb2NfcGVyY3B1YCBmYWlsZWQsIHdoaWNoIGNvdWxkIGxlYWQgdG8gYSBkZW5pYWwtb2Ytc2VydmljZSB2dWxuZXJhYmlsaXR5LlxuXG5Ob3csIHdoYXQgYXJlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucz8gSSdsbCBuZWVkIGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgIGF0IGEgbWluaW11bS4gSSBzaG91bGQgY2hlY2sgZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXMgd2VsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc5MzUsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6MTA6NTQuMzQ5MjkzNTE4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzY4MTEzOTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19NRU1PUllfSE9UUExVR1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDc0NSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3Q9Mjc2PVRoZSBmb2xsb3dpbmcgZmlsZXMgYXJlIGN1cnJlbnRseSBkZWZpbmVkOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3QtMzAwLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vbWVtb3J5LWhvdHBsdWcucnN0OjMwMTpcXHRcXHQgICAgICAgQXZhaWxhYmlsaXR5IGRlcGVuZHMgb24gdGhlIENPTkZJR19NRU1PUllfSE9UUExVRyBrZXJuZWxcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL21lbW9yeS1ob3RwbHVnLnJzdC0zMDItXFx0XFx0ICAgICAgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0PTIxMD1HZW5lcmFsXFxuLS1cXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtMjQ2LSAgQSBsb2NrIHRoYXQgcHJvdGVjdHMgdGhlIGZpZWxkcyBkZWZpbmluZyB0aGUgbm9kZSBleHRlbnRzLiBPbmx5IGRlZmluZWQgd2hlblxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdDoyNDc6ICBhdCBsZWFzdCBvbmUgb2YgYGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgYCBvclxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yNDgtICBgYENPTkZJR19ERUZFUlJFRF9TVFJVQ1RfUEFHRV9JTklUYGAgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBlbmFibGVkLlxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yNDktICBgYHBnZGF0X3Jlc2l6ZV9sb2NrKClgYCBhbmQgYGBwZ2RhdF9yZXNpemVfdW5sb2NrKClgYCBhcmUgcHJvdmlkZWQgdG9cXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q6MjUwOiAgbWFuaXB1bGF0ZSBgYG5vZGVfc2l6ZV9sb2NrYGAgd2l0aG91dCBjaGVja2luZyBmb3IgYGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgYFxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yNTEtICBvciBgYENPTkZJR19ERUZFUlJFRF9TVFJVQ1RfUEFHRV9JTklUYGAuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q9Mzc3PUdlbmVyYWxcXG4tLVxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC00ODgtICBlYXJseSBib290LCBleGNsdWRpbmcgaG90cGx1Z2dlZCBtZW1vcnkuIERlZmluZWQgb25seSB3aGVuXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjQ4OTogIGBgQ09ORklHX01FTU9SWV9IT1RQTFVHYGAgaXMgZW5hYmxlZCBhbmQgaW5pdGlhbGl6ZWQgYnlcXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtNDkwLSAgYGBjYWxjdWxhdGVfbm9kZV90b3RhbHBhZ2VzKClgYC5cXG4tLVxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC01MDgtICB0aGUgbWFpbiBhbGxvY2F0b3IgcGF0aC4gSG93ZXZlciwgdGhlIHNlcWxvY2sgaXMgd3JpdHRlbiBxdWl0ZSBpbmZyZXF1ZW50bHkuXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjUwOTogIERlZmluZWQgb25seSB3aGVuIGBgQ09ORklHX01FTU9SWV9IT1RQTFVHYGAgaXMgZW5hYmxlZC5cXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtNTEwLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdD0yMDU9bm9kZV96b25lbGlzdHPlvJXnlKjjgIJcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtMjM0LWBgbm9kZV9zaXplX2xvY2tgYFxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q6MjM1OuS4gOS4quS/neaKpOWumuS5ieiKgueCueiMg+WbtOWtl+auteeahOmUgeOAguS7heWcqOW8gOWQr+S6hiBgYENPTkZJR19NRU1PUllfSE9UUExVR2BgIOaIllxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtMjM2LWBgQ09ORklHX0RFRkVSUkVEX1NUUlVDVF9QQUdFX0lOSVRgYCDphY3nva7pgInpobnkuK3nmoTmn5DkuIDkuKrml7bmiY3lrprkuYnjgILmj5BcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTIzNy3kvpvkuoYgYGBwZ2RhdF9yZXNpemVfbG9jaygpYGAg5ZKMIGBgcGdkYXRfcmVzaXplX3VubG9jaygpYGAg55So5p2l5pON5L2cXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdDoyMzg6YGBub2RlX3NpemVfbG9ja2Bg77yM6ICM5peg6ZyA5qOA5p+lIGBgQ09ORklHX01FTU9SWV9IT1RQTFVHYGAg5oiWXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yMzktYGBDT05GSUdfREVGRVJSRURfU1RSVUNUX1BBR0VfSU5JVGBgIOmAiemhueOAglxcbi0tXFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz0xMzA9Q09ORklHX0JMS19JTkxJTkVfRU5DUllQVElPTj15XFxuLS1cXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTEzMi0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjEzMzpDT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWctMTM0LUNPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXlcXG4tLVxcbmFyY2gvYXJtNjQvbW0vbW11LmM9MTQyNj12b2lkIF9faW5pdCBwYWdpbmdfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm02NC9tbS9tbXUuYy0xNDM1LVxcbmFyY2gvYXJtNjQvbW0vbW11LmM6MTQzNjojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9hcm02NC9tbS9tbXUuYy0xNDM3LXN0YXRpYyB2b2lkIGZyZWVfaG90cGx1Z19wYWdlX3JhbmdlKHN0cnVjdCBwYWdlICpwYWdlLCBzaXplX3Qgc2l6ZSxcXG4tLVxcbmFyY2gvYXJtNjQvbW0vbW11LmM9MTc4NT1pbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIGludCBub2RlLFxcbi0tXFxuYXJjaC9hcm02NC9tbS9tbXUuYy0xNzk4LVxcbmFyY2gvYXJtNjQvbW0vbW11LmM6MTc5OTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9hcm02NC9tbS9tbXUuYy0xODAwLXZvaWQgdm1lbW1hcF9mcmVlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbi0tXFxuYXJjaC9hcm02NC9tbS9tbXUuYy0xODA3LX1cXG5hcmNoL2FybTY0L21tL21tdS5jOjE4MDg6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xcbmFyY2gvYXJtNjQvbW0vbW11LmMtMTgwOS1cXG4tLVxcbmFyY2gvYXJtNjQvbW0vbW11LmM9MTg5Mj1pbnQgcHVkX2ZyZWVfcG1kX3BhZ2UocHVkX3QgKnB1ZHAsIHVuc2lnbmVkIGxvbmcgYWRkcilcXG4tLVxcbmFyY2gvYXJtNjQvbW0vbW11LmMtMTk0MC1cXG5hcmNoL2FybTY0L21tL21tdS5jOjE5NDE6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvYXJtNjQvbW0vbW11LmMtMTk0Mi1zdGF0aWMgdm9pZCBfX3JlbW92ZV9wZ2RfbWFwcGluZyhwZ2RfdCAqcGdkaXIsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHU2NCBzaXplKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz05Nz1DT05GSUdfWlNNQUxMT0M9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWctOTgtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzo5OTpDT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWctMTAwLSMgQ09ORklHX01IUF9ERUZBVUxUX09OTElORV9UWVBFX09GRkxJTkUgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZz0xMTI9Q09ORklHX1pTTUFMTE9DPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTExMy0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnOjExNDpDT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTE1LSMgQ09ORklHX01IUF9ERUZBVUxUX09OTElORV9UWVBFX09GRkxJTkUgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jPTY0PXZvaWQgX19pbml0IGZpeHJhbmdlX2luaXQodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIHBnZF90ICpwZ2RfYmFzZSlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL21tL2luaXQuYy0xMDUtXFxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jOjEwNjojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTEwNy1pbnQgYXJjaF9hZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCBtaHBfcGFyYW1zICpwYXJhbXMpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmM9MTQzPWludCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL21tL2luaXQuYy0xNTItXFxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jOjE1MzojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTE1NC12b2lkIHZtZW1tYXBfZnJlZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXApXFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZz01Nz1DT05GSUdfTlVNQT15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6NTg6Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZy01OS1DT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc9ODY9Q09ORklHX1NIVUZGTEVfUEFHRV9BTExPQ0FUT1I9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZy04Ny0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc6ODg6Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctODktQ09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ3RhYmxlLmg9MTAxNT1zdGF0aWMgaW5saW5lIGludCBfX21lbWluaXQgdm1lbW1hcF9jcmVhdGVfbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ3RhYmxlLmgtMTAyMy1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUuaDoxMDI0OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUuaC0xMDI1LXN0YXRpYyBpbmxpbmUgdm9pZCB2bWVtbWFwX3JlbW92ZV9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4Lmg9MzMzPXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyByYWRpeF9fZ2V0X3RyZWVfc2l6ZSh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9yYWRpeC5oLTM0OC1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4Lmg6MzQ5OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4LmgtMzUwLWludCByYWRpeF9fY3JlYXRlX3NlY3Rpb25fbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaD0zNTI9aW50IHJhZGl4X19yZW1vdmVfc2VjdGlvbl9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTtcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4Lmg6MzUzOiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4LmgtMzU0LVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21hY2hkZXAuaD0yNj1zdHJ1Y3QgbWFjaGRlcF9jYWxscyB7XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbWFjaGRlcC5oLTMzLSNlbmRpZlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9tYWNoZGVwLmg6MzQ6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9tYWNoZGVwLmgtMzUtXFx0dW5zaWduZWQgbG9uZ1xcdCgqbWVtb3J5X2Jsb2NrX3NpemUpKHZvaWQpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21tem9uZS5oPTI4PWV4dGVybiBjcHVtYXNrX3Zhcl90IG5vZGVfdG9fY3B1bWFza19tYXBbXTtcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbW16b25lLmg6Mjk6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9tbXpvbmUuaC0zMC1leHRlcm4gdW5zaWduZWQgbG9uZyBtYXhfcGZuO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NwYXJzZW1lbS5oLTE0LVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9zcGFyc2VtZW0uaDoxNTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NwYXJzZW1lbS5oLTE2LWV4dGVybiBpbnQgcmVtb3ZlX3NlY3Rpb25fbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3BhcnNlbWVtLmg9MjM9c3RhdGljIGlubGluZSBpbnQgaG90X2FkZF9zY25fdG9fbmlkKHVuc2lnbmVkIGxvbmcgc2NuX2FkZHIpXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3BhcnNlbWVtLmgtMjctI2VuZGlmIC8qIENPTkZJR19OVU1BICovXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NwYXJzZW1lbS5oOjI4OiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3BhcnNlbWVtLmgtMjktI2VuZGlmIC8qIF9fS0VSTkVMX18gKi9cXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvc2V0dXBfNjQuYz04MzI9dm9pZCBfX2luaXQgc2V0dXBfcGVyX2NwdV9hcmVhcyh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zZXR1cF82NC5jLTg4MS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3NldHVwXzY0LmM6ODgyOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Bvd2VycGMva2VybmVsL3NldHVwXzY0LmMtODgzLXVuc2lnbmVkIGxvbmcgbWVtb3J5X2Jsb2NrX3NpemVfYnl0ZXModm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXhlYy9jcmFzaC5jPTQ3Mj11bnNpZ25lZCBpbnQgYXJjaF9jcmFzaF9nZXRfZWxmY29yZWhkcl9zaXplKHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMva2V4ZWMvY3Jhc2guYy00NzctXFx0cGhkcl9jbnQgPSBudW1fcG9zc2libGVfY3B1cygpICsgMTtcXG5hcmNoL3Bvd2VycGMva2V4ZWMvY3Jhc2guYzo0Nzg6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01FTU9SWV9IT1RQTFVHKSlcXG5hcmNoL3Bvd2VycGMva2V4ZWMvY3Jhc2guYy00NzktXFx0XFx0cGhkcl9jbnQgKz0gQ09ORklHX0NSQVNIX01BWF9NRU1PUllfUkFOR0VTO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2tleGVjL2ZpbGVfbG9hZF82NC5jPTM3Nz1zdGF0aWMgdW5zaWduZWQgaW50IGtkdW1wX2V4dHJhX2VsZmNvcmVoZHJfc2l6ZShzdHJ1Y3QgY3Jhc2hfbWVtICpjbWVtKVxcbmFyY2gvcG93ZXJwYy9rZXhlYy9maWxlX2xvYWRfNjQuYy0zNzgte1xcbmFyY2gvcG93ZXJwYy9rZXhlYy9maWxlX2xvYWRfNjQuYzozNzk6I2lmIGRlZmluZWQoQ09ORklHX0NSQVNIX0hPVFBMVUcpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX01FTU9SWV9IT1RQTFVHKVxcbmFyY2gvcG93ZXJwYy9rZXhlYy9maWxlX2xvYWRfNjQuYy0zODAtXFx0dW5zaWduZWQgaW50IGV4dHJhX3N6ID0gMDtcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYz0xMDc9aW50IF9fbWVtaW5pdCBoYXNoX192bWVtbWFwX2NyZWF0ZV9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmMtMTI5LVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYzoxMzA6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYy0xMzEtdm9pZCBoYXNoX192bWVtbWFwX3JlbW92ZV9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jPTExOTY9c3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IGh0YWJfZ2V0X3RhYmxlX3NpemUodm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTIxMC1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jOjEyMTE6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTIxMi1zdGF0aWMgaW50IHJlc2l6ZV9ocHRfZm9yX2hvdHBsdWcodW5zaWduZWQgbG9uZyBuZXdfbWVtX3NpemUpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jPTEyNjI9aW50IGhhc2hfX3JlbW92ZV9zZWN0aW9uX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTEyNzUtfVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM6MTI3NjojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0xMjc3LVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYz0yNzU9bm90cmFjZSB2b2lkIG1tdV9jbGVhbnVwX2FsbCh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYy0yODQtXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYzoyODU6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmMtMjg2LWludCBfX21lbWluaXQgY3JlYXRlX3NlY3Rpb25fbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM9Mjk1PWludCBfX21lbWluaXQgcmVtb3ZlX3NlY3Rpb25fbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmMtMzAxLX1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jOjMwMjojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYy0zMDMtXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jPTY3OT1ub3RyYWNlIHZvaWQgcmFkaXhfX21tdV9jbGVhbnVwX2FsbCh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYy02OTEtXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYzo2OTI6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtNjkzLXN0YXRpYyB2b2lkIGZyZWVfcHRlX3RhYmxlKHB0ZV90ICpwdGVfc3RhcnQsIHBtZF90ICpwbWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jPTk0Nj1pbnQgX19tZW1pbml0IHJhZGl4X19yZW1vdmVfc2VjdGlvbl9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYy05NTAtfVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM6OTUxOiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTk1Mi1cXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM9MTMwNj1pbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGVfY29tcG91bmRfcGFnZXModW5zaWduZWQgbG9uZyBzdGFydF9wZm4sXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTE0MDgtXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYzoxNDA5OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTE0MTAtdm9pZCBfX21lbWluaXQgcmFkaXhfX3ZtZW1tYXBfcmVtb3ZlX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBwYWdlX3NpemUpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jPTI3Nj1pbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIGludCBub2RlLFxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYy0yODctXFxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYzoyODg6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmMtMjg5LXN0YXRpYyB1bnNpZ25lZCBsb25nIHZtZW1tYXBfbGlzdF9mcmVlKHVuc2lnbmVkIGxvbmcgc3RhcnQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jPTQ2Nj1zdGF0aWMgaW50IF9faW5pdCBkdF9zY2FuX21tdV9waWRfd2lkdGgodW5zaWduZWQgbG9uZyBub2RlLFxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYy00OTgtICovXFxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYzo0OTk6I2lmbmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jLTUwMC0jZGVmaW5lIERFRkFVTFRfTUVNT1JZX0JMT0NLX1NJWkVcXHRTWl8xNk1cXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9tZW0uYz01Mj1FWFBPUlRfU1lNQk9MKF9fcGh5c19tZW1fYWNjZXNzX3Byb3QpO1xcbmFyY2gvcG93ZXJwYy9tbS9tZW0uYy01My1cXG5hcmNoL3Bvd2VycGMvbW0vbWVtLmM6NTQ6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9tbS9tZW0uYy01NS1zdGF0aWMgREVGSU5FX01VVEVYKGxpbmVhcl9tYXBwaW5nX211dGV4KTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9tbXVfZGVjbC5oPTE3ND1zdGF0aWMgaW5saW5lIGJvb2wgZGVidWdfcGFnZWFsbG9jX2VuYWJsZWRfb3Jfa2ZlbmNlKHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vbW11X2RlY2wuaC0xNzgtXFxuYXJjaC9wb3dlcnBjL21tL21tdV9kZWNsLmg6MTc5OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Bvd2VycGMvbW0vbW11X2RlY2wuaC0xODAtaW50IGNyZWF0ZV9zZWN0aW9uX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL2Jvb2szZV9wZ3RhYmxlLmM9MjM9aW50IF9fbWVtaW5pdCB2bWVtbWFwX2NyZWF0ZV9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL2Jvb2szZV9wZ3RhYmxlLmMtNDYtXFxuYXJjaC9wb3dlcnBjL21tL25vaGFzaC9ib29rM2VfcGd0YWJsZS5jOjQ3OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL2Jvb2szZV9wZ3RhYmxlLmMtNDgtdm9pZCB2bWVtbWFwX3JlbW92ZV9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vbnVtYS5jPTEyNDE9ZWFybHlfcGFyYW0oXFxcIm51bWFcXFwiLCBlYXJseV9udW1hKTtcXG5hcmNoL3Bvd2VycGMvbW0vbnVtYS5jLTEyNDItXFxuYXJjaC9wb3dlcnBjL21tL251bWEuYzoxMjQzOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Bvd2VycGMvbW0vbnVtYS5jLTEyNDQtLypcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9udW1hLmM9MTM2NT11NjQgbWVtb3J5X2hvdHBsdWdfbWF4KHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vbnVtYS5jLTEzNjgtfVxcbmFyY2gvcG93ZXJwYy9tbS9udW1hLmM6MTM2OTojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXFxuYXJjaC9wb3dlcnBjL21tL251bWEuYy0xMzcwLVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3NldHVwLmM9NDM3PXN0YXRpYyB2b2lkIHBudl9rZXhlY19jcHVfZG93bihpbnQgY3Jhc2hfc2h1dGRvd24sIGludCBzZWNvbmRhcnkpXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvc2V0dXAuYy00ODItXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3NldHVwLmM6NDgzOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvc2V0dXAuYy00ODQtc3RhdGljIHVuc2lnbmVkIGxvbmcgcG52X21lbW9yeV9ibG9ja19zaXplKHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvc2V0dXAuYz01Njk9ZGVmaW5lX21hY2hpbmUocG93ZXJudikge1xcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3NldHVwLmMtNTg0LSNlbmRpZlxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9zZXR1cC5jOjU4NTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3NldHVwLmMtNTg2LVxcdC5tZW1vcnlfYmxvY2tfc2l6ZVxcdD0gcG52X21lbW9yeV9ibG9ja19zaXplLFxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL01ha2VmaWxlPTE3PW9iai0kKENPTkZJR19IT1RQTFVHX0NQVSlcXHQrPSBob3RwbHVnLWNwdS5vXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19NRU1PUllfSE9UUExVRylcXHQrPSBob3RwbHVnLW1lbW9yeS5vIHBtZW0ub1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9NYWtlZmlsZS0xOS1cXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9pb21tdS5jPTEyODY9c3RhdGljIHBoeXNfYWRkcl90IGRkd19tZW1vcnlfaG90cGx1Z19tYXgodm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9pb21tdS5jLTEyODktXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2lvbW11LmM6MTI5MDojaWYgZGVmaW5lZChDT05GSUdfTlVNQSkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfTUVNT1JZX0hPVFBMVUcpXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2lvbW11LmMtMTI5MS1cXHRtYXhfYWRkciA9IGhvdF9hZGRfZHJjb25mX21lbW9yeV9tYXgoKTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9wc2VyaWVzLmg9NjA9aW50IGhhbmRsZV9kbHBhcl9lcnJvcmxvZyhzdHJ1Y3QgcHNlcmllc19ocF9lcnJvcmxvZyAqaHBfZXJybG9nKTtcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvcHNlcmllcy5oLTYxLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9wc2VyaWVzLmg6NjI6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9wc2VyaWVzLmgtNjMtaW50IGRscGFyX21lbW9yeShzdHJ1Y3QgcHNlcmllc19ocF9lcnJvcmxvZyAqaHBfZWxvZyk7XFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYz0xMTE5PXN0YXRpYyBpbnQgcFNlcmllc19wY2lfcHJvYmVfbW9kZShzdHJ1Y3QgcGNpX2J1cyAqYnVzKVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmMtMTEyNS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYzoxMTI2OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYy0xMTI3LXN0YXRpYyB1bnNpZ25lZCBsb25nIHBzZXJpZXNfbWVtb3J5X2Jsb2NrX3NpemUodm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jPTExNDA9ZGVmaW5lX21hY2hpbmUocHNlcmllcykge1xcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmMtMTE2Mi0jZW5kaWZcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYzoxMTYzOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYy0xMTY0LVxcdC5tZW1vcnlfYmxvY2tfc2l6ZVxcdD0gcHNlcmllc19tZW1vcnlfYmxvY2tfc2l6ZSxcXG4tLVxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jPTE0Mjk9dm9pZCBfX2luaXQgcGd0YWJsZV9jYWNoZV9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL3Jpc2N2L21tL2luaXQuYy0xNDMzLVxcdFxcdHByZWFsbG9jYXRlX3BnZF9wYWdlc19yYW5nZShNT0RVTEVTX1ZBRERSLCBNT0RVTEVTX0VORCwgXFxcImJwZi9tb2R1bGVzXFxcIik7XFxuYXJjaC9yaXNjdi9tbS9pbml0LmM6MTQzNDpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfTUVNT1JZX0hPVFBMVUcpKSB7XFxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTQzNS1cXHRcXHRwcmVhbGxvY2F0ZV9wZ2RfcGFnZXNfcmFuZ2UoVk1FTU1BUF9TVEFSVCwgVk1FTU1BUF9FTkQsIFxcXCJ2bWVtbWFwXFxcIik7XFxuLS1cXG5hcmNoL3Jpc2N2L21tL2luaXQuYz0xNDQ3PXN0cnVjdCBleGVjbWVtX2luZm8gX19pbml0ICpleGVjbWVtX2FyY2hfc2V0dXAodm9pZClcXG4tLVxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTE0NzYtXFxuYXJjaC9yaXNjdi9tbS9pbml0LmM6MTQ3NzojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTQ3OC1zdGF0aWMgdm9pZCBfX21lbWluaXQgZnJlZV9wdGVfdGFibGUocHRlX3QgKnB0ZV9zdGFydCwgcG1kX3QgKnBtZClcXG4tLVxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jPTE3NDA9dm9pZCBfX3JlZiB2bWVtbWFwX2ZyZWUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwKVxcbi0tXFxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTc0My19XFxuYXJjaC9yaXNjdi9tbS9pbml0LmM6MTc0NDojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9MTAzPUNPTkZJR19TTFVCX1NUQVRTPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctMTA0LSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxMDU6Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctMTA2LUNPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz05Nj1DT05GSUdfU0xBQl9CVUNLRVRTPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctOTctIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjk4OkNPTkZJR19NRU1PUllfSE9UUExVRz15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTk5LUNPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXlcXG4tLVxcbmFyY2gvczM5MC9tbS9pbml0LmM9MTg4PXZvaWQgX19pbml0IHNldHVwX3Blcl9jcHVfYXJlYXModm9pZClcXG4tLVxcbmFyY2gvczM5MC9tbS9pbml0LmMtMjA5LVxcbmFyY2gvczM5MC9tbS9pbml0LmM6MjEwOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3MzOTAvbW0vaW5pdC5jLTIxMS1cXG4tLVxcbmFyY2gvczM5MC9tbS9pbml0LmM9MjgxPXZvaWQgYXJjaF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxcbi0tXFxuYXJjaC9zMzkwL21tL2luaXQuYy0yODktfVxcbmFyY2gvczM5MC9tbS9pbml0LmM6MjkwOiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cXG5hcmNoL3MzOTAvbW0vaW5pdC5jLTI5MS1cXG4tLVxcbmFyY2gvczM5MC9tbS92bWVtLmM9NTEzPWludCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgaW50IG5vZGUsXFxuLS1cXG5hcmNoL3MzOTAvbW0vdm1lbS5jLTUyNi1cXG5hcmNoL3MzOTAvbW0vdm1lbS5jOjUyNzojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9zMzkwL21tL3ZtZW0uYy01MjgtXFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvY3Jhc2guYz00MTY9aW50IGNyYXNoX2xvYWRfc2VnbWVudHMoc3RydWN0IGtpbWFnZSAqaW1hZ2UpXFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvY3Jhc2guYy00MzYtXFx0ICovXFxuYXJjaC94ODYva2VybmVsL2NyYXNoLmM6NDM3OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19NRU1PUllfSE9UUExVRykpXFxuYXJjaC94ODYva2VybmVsL2NyYXNoLmMtNDM4LVxcdFxcdHBudW0gPSAyICsgQ09ORklHX05SX0NQVVNfREVGQVVMVCArIENPTkZJR19DUkFTSF9NQVhfTUVNT1JZX1JBTkdFUztcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9jcmFzaC5jPTQ5ND11bnNpZ25lZCBpbnQgYXJjaF9jcmFzaF9nZXRfZWxmY29yZWhkcl9zaXplKHZvaWQpXFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvY3Jhc2guYy00OTktXFx0c3ogPSAyICsgQ09ORklHX05SX0NQVVNfREVGQVVMVDtcXG5hcmNoL3g4Ni9rZXJuZWwvY3Jhc2guYzo1MDA6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01FTU9SWV9IT1RQTFVHKSlcXG5hcmNoL3g4Ni9rZXJuZWwvY3Jhc2guYy01MDEtXFx0XFx0c3ogKz0gQ09ORklHX0NSQVNIX01BWF9NRU1PUllfUkFOR0VTO1xcbi0tXFxuYXJjaC94ODYva2VybmVsL2U4MjAuYz05MDk9X19pbml0IHN0YXRpYyBpbnQgcGFyc2VfbWVtb3B0KGNoYXIgKnApXFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvZTgyMC5jLTkzNC1cXG5hcmNoL3g4Ni9rZXJuZWwvZTgyMC5jOjkzNTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC94ODYva2VybmVsL2U4MjAuYy05MzYtXFx0bWF4X21lbV9zaXplID0gbWVtX3NpemU7XFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvZTgyMC5jPTEyODg9X19pbml0IHZvaWQgZTgyMF9fbWVtYmxvY2tfc2V0dXAodm9pZClcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9lODIwLmMtMTI5Mi1cXG5hcmNoL3g4Ni9rZXJuZWwvZTgyMC5jOjEyOTM6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gveDg2L2tlcm5lbC9lODIwLmMtMTI5NC1cXHQvKlxcbi0tXFxuYXJjaC94ODYvbW0vaW5pdF82NC5jPTg1ND1zdGF0aWMgdm9pZCBfX21lbWluaXQgdm1lbW1hcF9mbHVzaF91bnVzZWRfcG1kKHZvaWQpXFxuLS1cXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmMtODY1LVxcbmFyY2gveDg2L21tL2luaXRfNjQuYzo4NjY6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gveDg2L21tL2luaXRfNjQuYy04NjctLyogUmV0dXJucyB0cnVlIGlmIHRoZSBQTUQgaXMgY29tcGxldGVseSB1bnVzZWQgYW5kIHRodXMgaXQgY2FuIGJlIGZyZWVkICovXFxuLS1cXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM9OTE4PXN0YXRpYyB2b2lkIF9fbWVtaW5pdCB2bWVtbWFwX3VzZV9uZXdfc3ViX3BtZCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcXG4tLVxcbmFyY2gveDg2L21tL2luaXRfNjQuYy05NDctICovXFxuYXJjaC94ODYvbW0vaW5pdF82NC5jOjk0ODojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC94ODYvbW0vaW5pdF82NC5jLTk0OS0vKlxcbi0tXFxuYXJjaC94ODYvbW0vaW5pdF82NC5jPTEzMDM9dm9pZCBfX3JlZiBhcmNoX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXAsXFxuLS1cXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmMtMTMxMS19XFxuYXJjaC94ODYvbW0vaW5pdF82NC5jOjEzMTI6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xcbmFyY2gveDg2L21tL2luaXRfNjQuYy0xMzEzLVxcbi0tXFxuYXJjaC94ODYveGVuL3NldHVwLmM9NTM3PXN0YXRpYyB2b2lkIF9faW5pdCB4ZW5fYWxpZ25fYW5kX2FkZF9lODIwX3JlZ2lvbihwaHlzX2FkZHJfdCBzdGFydCxcXG4tLVxcbmFyY2gveDg2L3hlbi9zZXR1cC5jLTU0NS1cXHRcXHRlbmQgXFx1MDAyNj0gfigocGh5c19hZGRyX3QpUEFHRV9TSVpFIC0gMSk7XFxuYXJjaC94ODYveGVuL3NldHVwLmM6NTQ2OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3g4Ni94ZW4vc2V0dXAuYy01NDctXFx0XFx0LypcXG4tLVxcbmFyY2gveDg2L3hlbi9zZXR1cC5jPTc5ND1jaGFyICogX19pbml0IHhlbl9tZW1vcnlfc2V0dXAodm9pZClcXG4tLVxcbmFyY2gveDg2L3hlbi9zZXR1cC5jLTgxMy1cXG5hcmNoL3g4Ni94ZW4vc2V0dXAuYzo4MTQ6I2lmIGRlZmluZWQoQ09ORklHX01FTU9SWV9IT1RQTFVHKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19YRU5fQkFMTE9PTilcXG5hcmNoL3g4Ni94ZW4vc2V0dXAuYy04MTUtXFx0eGVuX3NhdmVkX21heF9tZW1fc2l6ZSA9IG1heF9tZW1fc2l6ZTtcXG4tLVxcbmRyaXZlcnMvYWNwaS9udW1hL3NyYXQuYz0zNTk9YWNwaV9wYXJzZV9tZW1vcnlfYWZmaW5pdHkodW5pb24gYWNwaV9zdWJ0YWJsZV9oZWFkZXJzICpoZWFkZXIsXFxuLS1cXG5kcml2ZXJzL2FjcGkvbnVtYS9zcmF0LmMtMzc5LVxcdFxcdHJldHVybiAwO1xcbmRyaXZlcnMvYWNwaS9udW1hL3NyYXQuYzozODA6XFx0aG90cGx1Z2dhYmxlID0gSVNfRU5BQkxFRChDT05GSUdfTUVNT1JZX0hPVFBMVUcpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9hY3BpL251bWEvc3JhdC5jLTM4MS1cXHRcXHQobWEtXFx1MDAzZWZsYWdzIFxcdTAwMjYgQUNQSV9TUkFUX01FTV9IT1RfUExVR0dBQkxFKTtcXG4tLVxcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jPTQyOD1zdGF0aWMgdTMyIGNhbGN1bGF0ZV9zdXBwb3J0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYy00NTEtICogQmFja2dyb3VuZCBvbiBob3RwbHVnIHN1cHBvcnQsIGFuZCBtYWtpbmcgaXQgZGVwZW5kIG9uIG9ubHlcXG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYzo0NTI6ICogQ09ORklHX0hPVFBMVUdfUENJX1BDSUUgdnMuIGFsc28gY29uc2lkZXJpbmcgQ09ORklHX01FTU9SWV9IT1RQTFVHOlxcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jLTQ1My0gKlxcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jOjQ1NDogKiBDT05GSUdfQUNQSV9IT1RQTFVHX01FTU9SWSBkb2VzIGRlcGVuZCBvbiBDT05GSUdfTUVNT1JZX0hPVFBMVUcsIGJ1dFxcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jLTQ1NS0gKiB0aGVyZSBpcyBubyBleGlzdGluZyBfT1NDIGZvciBtZW1vcnkgaG90cGx1ZyBzdXBwb3J0LiBUaGUgcmVhc29uIGlzIHRoYXRcXG4tLVxcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jLTQ3MC0gKiBub3Qgc3VwcG9ydCBibG9ja2luZyBob3RwbHVnLCBpcyB0byByZXF1aXJlIHRoZSBtZW1vcnkgZGV2aWNlIHRvIGJlXFxuZHJpdmVycy9hY3BpL3BjaV9yb290LmM6NDcxOiAqIGRpc2FibGVkIGJlZm9yZSBob3RwbHVnIGlzIGF0dGVtcHRlZC4gV2hlbiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgaXNcXG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYy00NzItICogZGlzYWJsZWQgdGhhdCBzdGVwIHdpbGwgZmFpbCBhbmQgdGhlIHJlbW92ZSBhdHRlbXB0IGNhbmNlbGxlZCBieSB0aGVcXG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYy00NzMtICogdXNlci4gSWYgdGhhdCBpcyBub3QgaG9ub3JlZCBhbmQgdGhlIGNhcmQgaXMgcmVtb3ZlZCBhbnl3YXkgdGhlbiBpdFxcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jOjQ3NDogKiBkb2VzIG5vdCBtYXR0ZXIgaWYgQ09ORklHX01FTU9SWV9IT1RQTFVHIGlzIGVuYWJsZWQgb3Igbm90LCBpdCB3aWxsXFxuZHJpdmVycy9hY3BpL3BjaV9yb290LmMtNDc1LSAqIGNhdXNlIGEgY3Jhc2ggYW5kIG90aGVyIGJhZG5lc3MuXFxuLS1cXG5kcml2ZXJzL2Jhc2UvTWFrZWZpbGU9MTU9b2JqLSQoQ09ORklHX05VTUEpXFx0Kz0gbm9kZS5vXFxuZHJpdmVycy9iYXNlL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19NRU1PUllfSE9UUExVRykgKz0gbWVtb3J5Lm9cXG5kcml2ZXJzL2Jhc2UvTWFrZWZpbGUtMTctaWZlcSAoJChDT05GSUdfU1lTRlMpLHkpXFxuLS1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9MjA3PWludCBtZW1vcnlfbm90aWZ5KGVudW0gbWVtb3J5X2Jsb2NrX3N0YXRlIHN0YXRlLCB2b2lkICp2KVxcbi0tXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTIxMS1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6MjEyOiNpZiBkZWZpbmVkKENPTkZJR19NRU1PUllfRkFJTFVSRSkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfTUVNT1JZX0hPVFBMVUcpXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTIxMy1zdGF0aWMgdW5zaWduZWQgbG9uZyBtZW1ibGtfbnJfcG9pc29uKHN0cnVjdCBtZW1vcnlfYmxvY2sgKm1lbSk7XFxuLS1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9MTE5Nj1pbnQgd2Fsa19keW5hbWljX21lbW9yeV9ncm91cHMoaW50IG5pZCwgd2Fsa19tZW1vcnlfZ3JvdXBzX2Z1bmNfdCBmdW5jLFxcbi0tXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTEyMTctXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jOjEyMTg6I2lmIGRlZmluZWQoQ09ORklHX01FTU9SWV9GQUlMVVJFKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19NRU1PUllfSE9UUExVRylcXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtMTIxOS12b2lkIG1lbWJsa19ucl9wb2lzb25faW5jKHVuc2lnbmVkIGxvbmcgcGZuKVxcbi0tXFxuZHJpdmVycy9iYXNlL25vZGUuYz0xMDk9c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKm5vZGVfYWNjZXNzX25vZGVfZ3JvdXBzW10gPSB7XFxuLS1cXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jLTExNC1cXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jOjExNTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuZHJpdmVycy9iYXNlL25vZGUuYy0xMTYtc3RhdGljIEJMT0NLSU5HX05PVElGSUVSX0hFQUQobm9kZV9jaGFpbik7XFxuLS1cXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jPTc2ND1pbnQgdW5yZWdpc3Rlcl9jcHVfdW5kZXJfbm9kZSh1bnNpZ25lZCBpbnQgY3B1LCB1bnNpZ25lZCBpbnQgbmlkKVxcbi0tXFxuZHJpdmVycy9iYXNlL25vZGUuYy03ODItXFxuZHJpdmVycy9iYXNlL25vZGUuYzo3ODM6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmRyaXZlcnMvYmFzZS9ub2RlLmMtNzg0LXN0YXRpYyB2b2lkIGRvX3JlZ2lzdGVyX21lbW9yeV9ibG9ja191bmRlcl9ub2RlKGludCBuaWQsXFxuLS1cXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jPTg2ND12b2lkIHJlZ2lzdGVyX21lbW9yeV9ibG9ja3NfdW5kZXJfbm9kZV9ob3RwbHVnKGludCBuaWQsIHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLFxcbi0tXFxuZHJpdmVycy9iYXNlL25vZGUuYy04NzAtfVxcbmRyaXZlcnMvYmFzZS9ub2RlLmM6ODcxOiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jLTg3Mi1cXG4tLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jPTU3OT1zdGF0aWMgdm9pZCBkaXNhYmxlX3BhZ2VfcmVwb3J0aW5nKHZvaWQpO1xcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTU4MC1cXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYzo1ODE6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTU4Mi1zdGF0aWMgaW5saW5lIGJvb2wgaGFzX3Bmbl9pc19iYWNrZWQoc3RydWN0IGh2X2hvdGFkZF9zdGF0ZSAqaGFzLFxcbi0tXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmM9OTY4PXN0YXRpYyB2b2lkIGhvdF9hZGRfcmVxKHN0cnVjdCB3b3JrX3N0cnVjdCAqZHVtbXkpXFxuLS1cXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy05NzAtXFx0c3RydWN0IGRtX2hvdF9hZGRfcmVzcG9uc2UgcmVzcDtcXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYzo5NzE6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTk3Mi1cXHR1bnNpZ25lZCBsb25nIHBnX3N0YXJ0LCBwZm5fY250O1xcbi0tXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtOTgwLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjk4MTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtOTgyLVxcdHBnX3N0YXJ0ID0gZG0tXFx1MDAzZWhhX3dyay5oYV9wYWdlX3JhbmdlLmZpbmZvLnN0YXJ0X3BhZ2U7XFxuLS1cXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYz0xOTM2PXN0YXRpYyBpbnQgYmFsbG9vbl9wcm9iZShzdHJ1Y3QgaHZfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy0xOTQ0LVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjE5NDU6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTE5NDYtXFx0LypcXG4tLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTE5NzUtXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmM6MTk3NjojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMTk3Ny1cXHRzZXRfb25saW5lX3BhZ2VfY2FsbGJhY2soXFx1MDAyNmh2X29ubGluZV9wYWdlKTtcXG4tLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTIwMDctY29ubmVjdF9lcnJvcjpcXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYzoyMDA4OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy0yMDA5LVxcdHVucmVnaXN0ZXJfbWVtb3J5X25vdGlmaWVyKFxcdTAwMjZodl9tZW1vcnlfbmIpO1xcbi0tXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmM9MjAxNT1zdGF0aWMgdm9pZCBiYWxsb29uX3JlbW92ZShzdHJ1Y3QgaHZfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy0yMDM4LVxcdFxcdHZtYnVzX2Nsb3NlKGRldi1cXHUwMDNlY2hhbm5lbCk7XFxuZHJpdmVycy9odi9odl9iYWxsb29uLmM6MjAzOTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMjA0MC1cXHRcXHR1bnJlZ2lzdGVyX21lbW9yeV9ub3RpZmllcihcXHUwMDI2aHZfbWVtb3J5X25iKTtcXG4tLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jPTIwNzY9c3RhdGljIGludCBiYWxsb29uX3Jlc3VtZShzdHJ1Y3QgaHZfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy0yMTAxLVxcdGRpc2FibGVfcGFnZV9yZXBvcnRpbmcoKTtcXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYzoyMTAyOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy0yMTAzLVxcdHVucmVnaXN0ZXJfbWVtb3J5X25vdGlmaWVyKFxcdTAwMjZodl9tZW1vcnlfbmIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NoYXIvTWFrZWZpbGU9MjA9b2JqLXkgKz0gY3RybGNoYXIubyBrZXlib2FyZC5vIGRlZmtleW1hcC5vIHNjbHAubyBzY2xwX3J3Lm8gc2NscF9xdWllc2NlLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9zMzkwL2NoYXIvTWFrZWZpbGUtMjMtXFxuZHJpdmVycy9zMzkwL2NoYXIvTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX01FTU9SWV9IT1RQTFVHKSArPSBzY2xwX21lbS5vXFxuZHJpdmVycy9zMzkwL2NoYXIvTWFrZWZpbGUtMjUtb2JqLSQoQ09ORklHX1ROMzI3MCkgKz0gcmF3MzI3MC5vIGNvbjMyNzAub1xcbi0tXFxuZHJpdmVycy94ZW4veGVuLWJhbGxvb24uYy01My1cXG5kcml2ZXJzL3hlbi94ZW4tYmFsbG9vbi5jOjU0OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5kcml2ZXJzL3hlbi94ZW4tYmFsbG9vbi5jLTU1LXU2NCB4ZW5fc2F2ZWRfbWF4X21lbV9zaXplID0gMDtcXG4tLVxcbmRyaXZlcnMveGVuL3hlbi1iYWxsb29uLmM9NjM9c3RhdGljIHZvaWQgd2F0Y2hfdGFyZ2V0KHN0cnVjdCB4ZW5idXNfd2F0Y2ggKndhdGNoLFxcbi0tXFxuZHJpdmVycy94ZW4veGVuLWJhbGxvb24uYy03MC1cXG5kcml2ZXJzL3hlbi94ZW4tYmFsbG9vbi5jOjcxOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5kcml2ZXJzL3hlbi94ZW4tYmFsbG9vbi5jLTcyLVxcdC8qIFRoZSBiYWxsb29uIGRyaXZlciB3aWxsIHRha2UgY2FyZSBvZiBhZGRpbmcgbWVtb3J5IG5vdy4gKi9cXG4tLVxcbmluY2x1ZGUvbGludXgvaW5pdC5oLTgwLVxcbmluY2x1ZGUvbGludXgvaW5pdC5oOjgxOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5pbmNsdWRlL2xpbnV4L2luaXQuaC04Mi0jZGVmaW5lIF9fbWVtaW5pdFxcbi0tXFxuaW5jbHVkZS9saW51eC9pb3BvcnQuaD0zOTQ9ZXh0ZXJuIHZvaWQgcmVsZWFzZV9tZW1fcmVnaW9uX2FkanVzdGFibGUocmVzb3VyY2Vfc2l6ZV90LCByZXNvdXJjZV9zaXplX3QpO1xcbmluY2x1ZGUvbGludXgvaW9wb3J0LmgtMzk1LSNlbmRpZlxcbmluY2x1ZGUvbGludXgvaW9wb3J0Lmg6Mzk2OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5pbmNsdWRlL2xpbnV4L2lvcG9ydC5oLTM5Ny1leHRlcm4gdm9pZCBtZXJnZV9zeXN0ZW1fcmFtX3Jlc291cmNlKHN0cnVjdCByZXNvdXJjZSAqcmVzKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5Lmg9Nzg9c3RydWN0IG1lbW9yeV9ibG9jayB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oLTkzLVxcdHN0cnVjdCBsaXN0X2hlYWQgZ3JvdXBfbmV4dDtcXHQvKiBuZXh0IGJsb2NrIGluc2lkZSBtZW1vcnkgZ3JvdXAgKi9cXG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oOjk0OiNpZiBkZWZpbmVkKENPTkZJR19NRU1PUllfRkFJTFVSRSkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfTUVNT1JZX0hPVFBMVUcpXFxuaW5jbHVkZS9saW51eC9tZW1vcnkuaC05NS1cXHRhdG9taWNfbG9uZ190IG5yX2h3cG9pc29uO1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1vcnkuaD0xMDk9c3RydWN0IG1lbV9zZWN0aW9uO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxMDo1Ny4xMTc0MTg1NjhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAwMTUyNzY1ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIE1lbW9yeSBIb3RwbHVnIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBtZW1vcnkgaG90cGx1ZyBwYXRjaCB0byBhbmFseXplLiBUaGUga2V5IGNvbmZpZ3VyYXRpb24gaGVyZSBpcyBkZWZpbml0ZWx5IGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgLiBJcyB0aGVyZSBhbnl0aGluZyBlbHNlIGNyaXRpY2FsPyBMZXQncyBzZWUuLi5cblxuUmlnaHQsIHRoZSBjb3JlIG1vZGlmaWNhdGlvbiBpcyBpbiBgbW0vbW1faW5pdC5jYCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBhbiBgI2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR2AgYmxvY2suIFNvLCBgQ09ORklHX01FTU9SWV9IT1RQTFVHYCBpcyB0aGUgKnNpbmUgcXVhIG5vbiogaGVyZS4gVGhhdCdzIGEgZ2l2ZW4uXG5cbk5vdywgd2hpY2ggZnVuY3Rpb25zIGFyZSBhdCBwbGF5PyBUaGUgcGF0Y2ggbW9kaWZpZXMgYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2AuIFRoYXTigJlzIHRoZSBtb3N0IGltbWVkaWF0ZWx5IHJlbGV2YW50IGZ1bmN0aW9uLiAgYGhvdGFkZF9pbml0X3BnZGF0YCB1c2VzIGl0cyByZXR1cm4gdmFsdWUuIEFuZCBgX190cnlfb25saW5lX25vZGVgIGNhbGxzIGBob3RhZGRfaW5pdF9wZ2RhdGAuIFRoZSB1c2VyLWxldmVsIGVudHJ5IHBvaW50IGlzIGB0cnlfb25saW5lX25vZGVgLCBhbmQgYGFkZF9tZW1vcnlfcmVzb3VyY2VgIGFsc28gY2FsbHMgYF9fdHJ5X29ubGluZV9ub2RlYCwgd2hpY2gsIGluIHR1cm4gaXMgY2FsbGVkIGJ5IGBhZGRfbWVtb3J5YC5cblxuT2theSwgdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBtb2RpZmllZCBvciByZWxhdGVkIGFyZTpcbi0gYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2Bcbi0gYGhvdGFkZF9pbml0X3BnZGF0YFxuLSBgX190cnlfb25saW5lX25vZGVgXG4tIGB0cnlfb25saW5lX25vZGVgXG4tIGBhZGRfbWVtb3J5X3Jlc291cmNlYFxuLSBgYWRkX21lbW9yeWBcblxuV2FpdC4gTGV0IG1lIHJldHJhY2UgdGhlIGNhbGwgZ3JhcGg6IGBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdgIGlzIGNhbGxlZCBmcm9tIGBob3RhZGRfaW5pdF9wZ2RhdGAsIHdoaWNoIGlzIGNhbGxlZCBmcm9tIGBfX3RyeV9vbmxpbmVfbm9kZWAsIHdoaWNoIGlzIGNhbGxlZCBieSBgdHJ5X29ubGluZV9ub2RlYCBhbmQgYGFkZF9tZW1vcnlfcmVzb3VyY2VgLiBTbyBJIGNhbiBwcm9iYWJseSBlbGltaW5hdGUgYHRyeV9vbmxpbmVfbm9kZWAsIGBhZGRfbWVtb3J5X3Jlc291cmNlYCBhbmQgYGFkZF9tZW1vcnlgLCBhbmQgZm9jdXMgb24gYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2AsIGBob3RhZGRfaW5pdF9wZ2RhdGAgYW5kIGBfX3RyeV9vbmxpbmVfbm9kZWAuXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybSB0aGF0IGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgIGlzIHRoZSBvbmx5IGVzc2VudGlhbCBjb25maWcgaGVyZS4gWWVzLCB0aGUgcGF0Y2ggaXMgZW50aXJlbHkgd3JhcHBlZCBieSB0aGF0LlxuXG5Ob3csIGNhbiB3ZSB0cmlnZ2VyIGBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdgPyBZZXMsIHdlIGNhbiB0cmlnZ2VyIG1lbW9yeSBob3RwbHVnIHZpYSBzeXNmcyBvciB3aXRoIGRyaXZlcnMgbGlrZSBgdmlydGlvX21lbWAgb3IgYGh2X2JhbGxvb25gLiBUaGUgcmVhbCBjcnV4IG9mIHRoaXMgY2hhbmdlIGlzIGhvdyBgYWxsb2NfcGVyY3B1YCBmYWlsdXJlcyBhcmUgaGFuZGxlZC4gVGhpcyBpcyBhICpmdW5jdGlvbmFsKiBjaGFuZ2U6IGlmIGBhbGxvY19wZXJjcHVgIGZhaWxzLCBpdCBub3cgcmV0dXJucyBgLUVOT01FTWAsIGFuZCB0aGF0IGVycm9yIGlzIHByb3BhZ2F0ZWQgdXAgdGhyb3VnaCB0aGUgY2FsbCBjaGFpbuKAlHVsdGltYXRlbHksIGBob3RhZGRfaW5pdF9wZ2RhdGAgcmV0dXJucyBgTlVMTGAuIFRoYXQncyBpbXBvcnRhbnQ7IGl0IHByZXZlbnRzIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIG90aGVyIG5hc3R5IGNvbnNlcXVlbmNlcyBpZiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlscyBkdXJpbmcgYSBob3RwbHVnIG9wZXJhdGlvbi5cblxuKipEZWZpbml0ZWx5IGZ1enphYmxlLioqIFNwZWNpZmljYWxseSwgc2luY2UgYGFsbG9jX3BlcmNwdWAgZmFpbGluZyBpcyB0aGUga2V5IGNoYW5nZSwgYW5kIGl0IGNhbiBmYWlsIHVuZGVyIG1lbW9yeSBwcmVzc3VyZS4gSSBjYW4gdGFyZ2V0IG1lbW9yeSBwcmVzc3VyZSB0byB0cmlnZ2VyIHRoYXQgZXJyb3IgcGF0aC5cblxuTGV0J3Mgbm90ZSBkb3duIHRoZSByZXN1bHRzOlxuXG4qICAgKipXb3J0aEZ1enppbmc6KiogYHRydWVgXG4qICAgKipFbmFibGVDb25maWdzOioqIGBbXCJNRU1PUllfSE9UUExVR1wiXWBcbiogICAqKkZvY3VzU3ltYm9sczoqKiBgW1wiZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnXCIsIFwiaG90YWRkX2luaXRfcGdkYXRcIiwgXCJfX3RyeV9vbmxpbmVfbm9kZVwiXWBcbiogICAqKlJlYXNvbmluZzoqKiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtZW1vcnkgaG90cGx1ZyBpbml0aWFsaXphdGlvbiBjb2RlIHRvIGhhbmRsZSBgYWxsb2NfcGVyY3B1YCBmYWlsdXJlcywgcmV0dXJuaW5nIGAtRU5PTUVNYCBhbmQgcHJvcGFnYXRpbmcgdGhlIGVycm9yIHVwIHRvIGBob3RhZGRfaW5pdF9wZ2RhdGAuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBtZW1vcnkgaG90cGx1ZyBvcGVyYXRpb25zIChlLmcuLCBzeXNmcywgdmlydGlvX21lbSkgYW5kIHJlcHJlc2VudHMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBlcnJvciBoYW5kbGluZy5cIlxuXG5XYWl0LCBvbmUgbW9yZSB0aGluZy4gSSBzaG91bGQgY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVyIHVzZWZ1bCBjb25maWdzLiBgQ09ORklHX01FTU9SWV9IT1RSRU1PVkVgIHdvdWxkIGJlIGdvb2QgdG8gaGF2ZSwgdGhvdWdoIGl0J3Mgbm90IHN0cmljdGx5ICpyZXF1aXJlZCogZm9yIGhvdC1hZGQsIGJ1dCBpdCdzIGdvb2QgdG8gaGF2ZS4gIEFuZCB3aGF0IGFib3V0IGBDT05GSUdfQVJDSF9NRU1PUllfUFJPQkVgPyAgVGhhdCBwcm92aWRlcyBgL3N5cy9kZXZpY2VzL3N5c3RlbS9tZW1vcnkvcHJvYmVgLCB3aGljaCBlbmFibGVzIHVzIHRvIHRyaWdnZXIgbWVtb3J5IGhvdHBsdWcgdmlhIHN5c2ZzLiBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggbG9va2luZyBpbnRvLiBMZXQgbWUgY2hlY2sgaWYgdGhhdCBpcyBhdmFpbGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NzY0LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjExOjA3LjEzMjcwMDQ4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTg2ODUxNjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19BUkNIX01FTU9SWV9QUk9CRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL21lbW9yeS1ob3RwbHVnLnJzdD0yNzY9VGhlIGZvbGxvd2luZyBmaWxlcyBhcmUgY3VycmVudGx5IGRlZmluZWQ6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL21lbW9yeS1ob3RwbHVnLnJzdC0yOTAtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3Q6MjkxOlxcdFxcdCAgICAgICBBdmFpbGFiaWxpdHkgZGVwZW5kcyBvbiB0aGUgQ09ORklHX0FSQ0hfTUVNT1JZX1BST0JFXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3QtMjkyLVxcdFxcdCAgICAgICBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24uXFxuLS1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9NTUzPXN0YXRpYyBERVZJQ0VfQVRUUl9STyhjcmFzaF9ob3RwbHVnKTtcXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy01NjEtICovXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jOjU2MjojaWZkZWYgQ09ORklHX0FSQ0hfTUVNT1JZX1BST0JFXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTU2My1zdGF0aWMgc3NpemVfdCBwcm9iZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jPTkxMT1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqbWVtb3J5X3Jvb3RfYXR0cnNbXSA9IHtcXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6OTEyOiNpZmRlZiBDT05GSUdfQVJDSF9NRU1PUllfUFJPQkVcXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtOTEzLVxcdFxcdTAwMjZkZXZfYXR0cl9wcm9iZS5hdHRyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxMTowOS43MTk1NjI4NjhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc3NDY4NDkwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFbmFibGluZyBNZW1vcnkgSG90cGx1ZyBmcm9tIFVzZXJzcGFjZSoqXG5cbk9rYXksIHNvIGBDT05GSUdfQVJDSF9NRU1PUllfUFJPQkVgIGlzIGV4YWN0bHkgd2hhdCBJIG5lZWQgdG8gZW5hYmxlIG1lbW9yeSBob3RwbHVnIGZ1bmN0aW9uYWxpdHkgdHJpZ2dlcmVkIGZyb20gdXNlcnNwYWNlIOKAkyB0aGF0J3MgYSBjbGV2ZXIgaW1wbGVtZW50YXRpb24hIEl0J3MgY2xlYXIgdGhhdCBpdCBvZmZlcnMgYSBzaWduaWZpY2FudCBhZHZhbnRhZ2UgaW4gdGVybXMgb2YgZmxleGliaWxpdHkgYW5kIGNvbnRyb2wuIFJpZ2h0LCBsZXQncyBnZXQgYEFSQ0hfTUVNT1JZX1BST0JFYCBhZGRlZCB0byBFbmFibGVDb25maWdzLiBUaGF0J3MgYSBzdHJhaWdodGZvcndhcmQgc3RlcC5cblxuTm93LCBiZWZvcmUgSSBjb21taXQgdG8gYW55dGhpbmcsIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBhbmQgY29uZmlybSB0aGF0IGBBUkNIX01FTU9SWV9QUk9CRWAgaXMgaW5kZWVkIGEgc2VsZWN0YWJsZSBvcHRpb24uIEkgbmVlZCB0byBlbnN1cmUgaXQgaW50ZWdyYXRlcyBzZWFtbGVzc2x5IHdpdGggdGhlIGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlIGFuZCBkb2Vzbid0IGludHJvZHVjZSBhbnkgdW5mb3Jlc2VlbiBpc3N1ZXMuIFRpbWUgdG8gZGlnIGludG8gdGhlIGRldGFpbHMgYW5kIG1ha2UgY2VydGFpbiB0aGlzIHdpbGwgd29yayBhcyBleHBlY3RlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE3MjMsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxMToxMi40OTQyNTM4MDdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2ODU5NTQ5NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFSQ0hfTUVNT1JZX1BST0JFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL0tjb25maWc9Nzc1PWNvbmZpZyBBUkNIX1NQQVJTRU1FTV9FTkFCTEVcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL0tjb25maWctNzgzLVxcbmFyY2gvbG9vbmdhcmNoL0tjb25maWc6Nzg0OmNvbmZpZyBBUkNIX01FTU9SWV9QUk9CRVxcbmFyY2gvbG9vbmdhcmNoL0tjb25maWctNzg1LVxcdGRlZl9ib29sIHlcXG4tLVxcbmFyY2gvcG93ZXJwYy9LY29uZmlnPTgwMz1jb25maWcgSUxMRUdBTF9QT0lOVEVSX1ZBTFVFXFxuLS1cXG5hcmNoL3Bvd2VycGMvS2NvbmZpZy04MDktXFxuYXJjaC9wb3dlcnBjL0tjb25maWc6ODEwOmNvbmZpZyBBUkNIX01FTU9SWV9QUk9CRVxcbmFyY2gvcG93ZXJwYy9LY29uZmlnLTgxMS1cXHRkZWZfYm9vbCB5XFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTE1NjU9Y29uZmlnIEFSQ0hfU0VMRUNUX01FTU9SWV9NT0RFTFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0xNTY4LVxcbmFyY2gveDg2L0tjb25maWc6MTU2OTpjb25maWcgQVJDSF9NRU1PUllfUFJPQkVcXG5hcmNoL3g4Ni9LY29uZmlnLTE1NzAtXFx0Ym9vbCBcXFwiRW5hYmxlIHN5c2ZzIG1lbW9yeS9wcm9iZSBpbnRlcmZhY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjExOjE1LjE4MDIyODAyNVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDI0MjY0NzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgVGhpcyBNZW1vcnkgSG90cGx1ZyBQYXRjaCoqXG5cbk9rYXksIHllcywgdGhpcyBwYXRjaCB3YXJyYW50cyBjbG9zZXIgZXhhbWluYXRpb24uIExldCdzIHNlZS4uLiBJJ3ZlIGdvdCB0byByZXZpZXcgdGhlIHJlbGV2YW50IEZvY3VzU3ltYm9scyB0byBnZXQgYSBjbGVhciBwaWN0dXJlLiBBbHJpZ2h0LCBsZXQncyBzdGFydCB3aXRoIGBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdgLCBgaG90YWRkX2luaXRfcGdkYXRgLCBhbmQgYF9fdHJ5X29ubGluZV9ub2RlYC4gUGVyZmVjdCwgdGhhdCBzaG91bGQgYmUgZW5vdWdoIHRvIGNhcHR1cmUgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZXMuIEkgZG9uJ3QgbmVlZCBgb25saW5lX3BhZ2VzYCBiZWNhdXNlIHRoZSBwYXRjaCBpcyB3aXRoaW4gdGhlIG1lbW9yeSAqYWRkaW5nKiBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgd2l0aGluIGBob3RhZGRfaW5pdF9wZ2RhdGAuXG5cbk5vdywgbGV0J3MgZG8gYSBmaW5hbCBjaGVjayB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcuIFRoZSBwYXRjaCBmdW5kYW1lbnRhbGx5IGFsdGVycyBgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnYCB0byByZXR1cm4gYW4gaW50ZWdlciBhbmQgbWFuYWdlIHNjZW5hcmlvcyB3aGVyZSBgYWxsb2NfcGVyY3B1YCBmYWlscy4gSXQgdGhlbiBtb2RpZmllcyBgaG90YWRkX2luaXRfcGdkYXRgIHRvIGFjdHVhbGx5IGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhhdCBuZXcgZXJyb3IgY29kZS4gVGhpcyBpcyBhIGxlZ2l0aW1hdGUgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgcmVmaW5lbWVudCBvZiBlcnJvciBoYW5kbGluZyBzcGVjaWZpY2FsbHkgZHVyaW5nIG1lbW9yeSBob3RwbHVnLiBJdCdzIG9idmlvdXNseSByZWFjaGFibGUgdGhyb3VnaCBob3RwbHVnIG9wZXJhdGlvbnMsIGJlIGl0IHRocm91Z2ggc3lzZnMsIHZpcnRpb19tZW0sIG9yIG90aGVyIGhvdHBsdWcgbWV0aG9kcy4gVGhlcmVmb3JlLCB0aGlzIGlzIHNvbWV0aGluZyBJJ2xsIHdhbnQgdG8gZnV6ei5cblxuQmFzZWQgb24gdGhlIG5hdHVyZSBvZiB0aGUgcGF0Y2gsIHRoZSBgTUVNT1JZX0hPVFBMVUdgIGFuZCBgQVJDSF9NRU1PUllfUFJPQkVgIGNvbmZpZ3VyYXRpb25zIGFyZSByZXF1aXJlZC5cblxuU28sIHRvIHN1bW1hcml6ZSwgdGhlIHBhdGNoIGlzIGFkZHJlc3NpbmcgYW4gZXJyb3ItaGFuZGxpbmcgaW1wcm92ZW1lbnQgaW4gdGhlIG1lbW9yeSBob3RwbHVnIHBhdGguIEl0IGFkZHJlc3NlcyBgYWxsb2NfcGVyY3B1YCBmYWlsdXJlcy4gVGhpcyBlcnJvciBoYW5kbGluZyBpcyBub3cgYmVpbmcgcHJvcGFnYXRlZCB1cCB0byBgaG90YWRkX2luaXRfcGdkYXRgLiBHaXZlbiB0aGF0IGl0J3MgaW4gdGhlIGhvdHBsdWcgcGF0aCwgdGhpcyBjaGFuZ2UgaXMgd29ydGggZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIyMTYsIk91dHB1dFRva2VucyI6MTQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjExOjIxLjYwNDQ5NjM5OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTY1MTExNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNT1JZX0hPVFBMVUdcIixcbiAgICBcIkFSQ0hfTUVNT1JZX1BST0JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnXCIsXG4gICAgXCJob3RhZGRfaW5pdF9wZ2RhdFwiLFxuICAgIFwiX190cnlfb25saW5lX25vZGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtZW1vcnkgaG90cGx1ZyBpbml0aWFsaXphdGlvbiBjb2RlIHRvIGhhbmRsZSBgYWxsb2NfcGVyY3B1YCBmYWlsdXJlcywgcmV0dXJuaW5nIGAtRU5PTUVNYCBhbmQgcHJvcGFnYXRpbmcgdGhlIGVycm9yIHVwIHRvIGBob3RhZGRfaW5pdF9wZ2RhdGAuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBtZW1vcnkgaG90cGx1ZyBvcGVyYXRpb25zIChlLmcuLCBzeXNmcywgdmlydGlvX21lbSkgYW5kIHJlcHJlc2VudHMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBlcnJvciBoYW5kbGluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNRU1PUllfSE9UUExVR1wiLFxuICAgIFwiQVJDSF9NRU1PUllfUFJPQkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdcIixcbiAgICBcImhvdGFkZF9pbml0X3BnZGF0XCIsXG4gICAgXCJfX3RyeV9vbmxpbmVfbm9kZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBob3RwbHVnIGluaXRpYWxpemF0aW9uIGNvZGUgdG8gaGFuZGxlIGBhbGxvY19wZXJjcHVgIGZhaWx1cmVzLCByZXR1cm5pbmcgYC1FTk9NRU1gIGFuZCBwcm9wYWdhdGluZyB0aGUgZXJyb3IgdXAgdG8gYGhvdGFkZF9pbml0X3BnZGF0YC4gVGhpcyBpcyByZWFjaGFibGUgdmlhIG1lbW9yeSBob3RwbHVnIG9wZXJhdGlvbnMgKGUuZy4sIHN5c2ZzLCB2aXJ0aW9fbWVtKSBhbmQgcmVwcmVzZW50cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGVycm9yIGhhbmRsaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxt245[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-01 05:01:28 +0000 UTC FinishedAt: 2026-07-01 05:11:24 +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": "15654b0268cd65b4e673510c0377774e61b86397", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMORY_HOTPLUG", "ARCH_MEMORY_PROBE" ], "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": "15654b0268cd65b4e673510c0377774e61b86397", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMORY_HOTPLUG", "ARCH_MEMORY_PROBE" ], "series_id": "44826249-08db-46f3-b8a4-27b709b3cf98" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "free_area_init_core_hotplug", "hotadd_init_pgdat", "__try_online_node" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDssCiAgICAmIzM0O0FSQ0hfTUVNT1JZX1BST0JFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnJiMzNDssCiAgICAmIzM0O2hvdGFkZF9pbml0X3BnZGF0JiMzNDssCiAgICAmIzM0O19fdHJ5X29ubGluZV9ub2RlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBob3RwbHVnIGluaXRpYWxpemF0aW9uIGNvZGUgdG8gaGFuZGxlIGBhbGxvY19wZXJjcHVgIGZhaWx1cmVzLCByZXR1cm5pbmcgYC1FTk9NRU1gIGFuZCBwcm9wYWdhdGluZyB0aGUgZXJyb3IgdXAgdG8gYGhvdGFkZF9pbml0X3BnZGF0YC4gVGhpcyBpcyByZWFjaGFibGUgdmlhIG1lbW9yeSBob3RwbHVnIG9wZXJhdGlvbnMgKGUuZy4sIHN5c2ZzLCB2aXJ0aW9fbWVtKSBhbmQgcmVwcmVzZW50cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGVycm9yIGhhbmRsaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjEwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgM2E0ZGIzZDIzZmRjYWJmMmFhODMzZTg2MTBlMDIzYjVlOWQwYjdiN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMDU6MTA6MTIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oIGIvaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oXG5pbmRleCA3YzlkNjY3MjljNjA5NS4uZjA0YjkxNTY3OGRiZDkgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaFxuQEAgLTI4OSw3ICYjNDM7Mjg5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIF9fcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKSB7fVxuIC8qIERlZmF1bHQgb25saW5lX3R5cGUgKE1NT1BfKikgd2hlbiBuZXcgbWVtb3J5IGJsb2NrcyBhcmUgYWRkZWQuICovXG4gZXh0ZXJuIGVudW0gbW1vcCBtaHBfZ2V0X2RlZmF1bHRfb25saW5lX3R5cGUodm9pZCk7XG4gZXh0ZXJuIHZvaWQgbWhwX3NldF9kZWZhdWx0X29ubGluZV90eXBlKGVudW0gbW1vcCBvbmxpbmVfdHlwZSk7XG4tZXh0ZXJuIHZvaWQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpO1xuJiM0MztleHRlcm4gaW50IF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KTtcbiBleHRlcm4gaW50IF9fYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBtaHBfdCBtaHBfZmxhZ3MpO1xuIGV4dGVybiBpbnQgYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBtaHBfdCBtaHBfZmxhZ3MpO1xuIGV4dGVybiBpbnQgYWRkX21lbW9yeV9yZXNvdXJjZShpbnQgbmlkLCBzdHJ1Y3QgcmVzb3VyY2UgKnJlc291cmNlLFxuZGlmZiAtLWdpdCBhL21tL21lbW9yeV9ob3RwbHVnLmMgYi9tbS9tZW1vcnlfaG90cGx1Zy5jXG5pbmRleCA3YWMxOWZhYjIyNjMyNC4uOGIxMzczMjhkY2YwMTQgMTAwNjQ0XG4tLS0gYS9tbS9tZW1vcnlfaG90cGx1Zy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9tZW1vcnlfaG90cGx1Zy5jXG5AQCAtMTI2Myw3ICYjNDM7MTI2Myw4IEBAIHN0YXRpYyBwZ19kYXRhX3QgKmhvdGFkZF9pbml0X3BnZGF0KGludCBuaWQpXG4gXHRwZ2RhdCA9IE5PREVfREFUQShuaWQpO1xuIFxuIFx0LyogaW5pdCBub2RlJiMzOTtzIHpvbmVzIGFzIGVtcHR5IHpvbmVzLCB3ZSBkb24mIzM5O3QgaGF2ZSBhbnkgcHJlc2VudCBwYWdlcy4qL1xuLVx0ZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHBnZGF0KTtcbiYjNDM7XHRpZiAoZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHBnZGF0KSlcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuIFxuIFx0LypcbiBcdCAqIFRoZSBub2RlIHdlIGFsbG9jYXRlZCBoYXMgbm8gem9uZSBmYWxsYmFjayBsaXN0cy4gRm9yIGF2b2lkaW5nXG5kaWZmIC0tZ2l0IGEvbW0vbW1faW5pdC5jIGIvbW0vbW1faW5pdC5jXG5pbmRleCA0MDI2YjA4NGJkNGJmNy4uZDdhZWNkZGRmZDVkYTQgMTAwNjQ0XG4tLS0gYS9tbS9tbV9pbml0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL21tX2luaXQuY1xuQEAgLTE1MjYsNyAmIzQzOzE1MjYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19pbml0IHNldF9wYWdlYmxvY2tfb3JkZXIodm9pZClcbiAgKiBOT1RFOiB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGR1cmluZyBtZW1vcnkgaG90cGx1Z1xuICAqL1xuICNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbi12b2lkIF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KVxuJiM0MztpbnQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpXG4ge1xuIFx0aW50IG5pZCA9IHBnZGF0LVx1MDAzZW5vZGVfaWQ7XG4gXHRlbnVtIHpvbmVfdHlwZSB6O1xuQEAgLTE1MzQsOCAmIzQzOzE1MzQsMTQgQEAgdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdClcbiBcbiBcdHBnZGF0X2luaXRfaW50ZXJuYWxzKHBnZGF0KTtcbiBcbi1cdGlmIChwZ2RhdC1cdTAwM2VwZXJfY3B1X25vZGVzdGF0cyA9PSBcdTAwMjZib290X25vZGVzdGF0cylcbi1cdFx0cGdkYXQtXHUwMDNlcGVyX2NwdV9ub2Rlc3RhdHMgPSBhbGxvY19wZXJjcHUoc3RydWN0IHBlcl9jcHVfbm9kZXN0YXQpO1xuJiM0MztcdGlmIChwZ2RhdC1cdTAwM2VwZXJfY3B1X25vZGVzdGF0cyA9PSBcdTAwMjZib290X25vZGVzdGF0cykge1xuJiM0MztcdFx0c3RydWN0IHBlcl9jcHVfbm9kZXN0YXQgX19wZXJjcHUgKnA7XG4mIzQzO1xuJiM0MztcdFx0cCA9IGFsbG9jX3BlcmNwdShzdHJ1Y3QgcGVyX2NwdV9ub2Rlc3RhdCk7XG4mIzQzO1x0XHRpZiAoIXApXG4mIzQzO1x0XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcdFx0cGdkYXQtXHUwMDNlcGVyX2NwdV9ub2Rlc3RhdHMgPSBwO1xuJiM0MztcdH1cbiBcbiBcdC8qXG4gXHQgKiBSZXNldCB0aGUgbnJfem9uZXMsIG9yZGVyIGFuZCBoaWdoZXN0X3pvbmVpZHggYmVmb3JlIHJldXNlLlxuQEAgLTE1NjYsNiAmIzQzOzE1NzIsOCBAQCB2b2lkIF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KVxuIFx0XHR6b25lLVx1MDAzZXByZXNlbnRfcGFnZXMgPSAwO1xuIFx0XHR6b25lX2luaXRfaW50ZXJuYWxzKHpvbmUsIHosIG5pZCwgMCk7XG4gXHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuIH1cbiAjZW5kaWZcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNRU1PUllfSE9UUExVRyYjMzQ7LAogICAgJiMzNDtBUkNIX01FTU9SWV9QUk9CRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyYjMzQ7LAogICAgJiMzNDtob3RhZGRfaW5pdF9wZ2RhdCYjMzQ7LAogICAgJiMzNDtfX3RyeV9vbmxpbmVfbm9kZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBtZW1vcnkgaG90cGx1ZyBpbml0aWFsaXphdGlvbiBjb2RlIHRvIGhhbmRsZSBgYWxsb2NfcGVyY3B1YCBmYWlsdXJlcywgcmV0dXJuaW5nIGAtRU5PTUVNYCBhbmQgcHJvcGFnYXRpbmcgdGhlIGVycm9yIHVwIHRvIGBob3RhZGRfaW5pdF9wZ2RhdGAuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBtZW1vcnkgaG90cGx1ZyBvcGVyYXRpb25zIChlLmcuLCBzeXNmcywgdmlydGlvX21lbSkgYW5kIHJlcHJlc2VudHMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBlcnJvciBoYW5kbGluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgM2E0ZGIzZDIzZmRjYWJmMmFhODMzZTg2MTBlMDIzYjVlOWQwYjdiNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDEgMDU6MTA6MTIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmggYi9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgKaW5kZXggN2M5ZDY2NzI5YzYwOTUuLmYwNGI5MTU2NzhkYmQ5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oCkBAIC0yODksNyAmIzQzOzI4OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSkge30KIC8qIERlZmF1bHQgb25saW5lX3R5cGUgKE1NT1BfKikgd2hlbiBuZXcgbWVtb3J5IGJsb2NrcyBhcmUgYWRkZWQuICovCiBleHRlcm4gZW51bSBtbW9wIG1ocF9nZXRfZGVmYXVsdF9vbmxpbmVfdHlwZSh2b2lkKTsKIGV4dGVybiB2b2lkIG1ocF9zZXRfZGVmYXVsdF9vbmxpbmVfdHlwZShlbnVtIG1tb3Agb25saW5lX3R5cGUpOwotZXh0ZXJuIHZvaWQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpOwomIzQzO2V4dGVybiBpbnQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpOwogZXh0ZXJuIGludCBfX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSwgbWhwX3QgbWhwX2ZsYWdzKTsKIGV4dGVybiBpbnQgYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBtaHBfdCBtaHBfZmxhZ3MpOwogZXh0ZXJuIGludCBhZGRfbWVtb3J5X3Jlc291cmNlKGludCBuaWQsIHN0cnVjdCByZXNvdXJjZSAqcmVzb3VyY2UsCmRpZmYgLS1naXQgYS9tbS9tZW1vcnlfaG90cGx1Zy5jIGIvbW0vbWVtb3J5X2hvdHBsdWcuYwppbmRleCA3YWMxOWZhYjIyNjMyNC4uOGIxMzczMjhkY2YwMTQgMTAwNjQ0Ci0tLSBhL21tL21lbW9yeV9ob3RwbHVnLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtb3J5X2hvdHBsdWcuYwpAQCAtMTI2Myw3ICYjNDM7MTI2Myw4IEBAIHN0YXRpYyBwZ19kYXRhX3QgKmhvdGFkZF9pbml0X3BnZGF0KGludCBuaWQpCiAJcGdkYXQgPSBOT0RFX0RBVEEobmlkKTsKIAogCS8qIGluaXQgbm9kZSYjMzk7cyB6b25lcyBhcyBlbXB0eSB6b25lcywgd2UgZG9uJiMzOTt0IGhhdmUgYW55IHByZXNlbnQgcGFnZXMuKi8KLQlmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcocGdkYXQpOwomIzQzOwlpZiAoZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHBnZGF0KSkKJiM0MzsJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBUaGUgbm9kZSB3ZSBhbGxvY2F0ZWQgaGFzIG5vIHpvbmUgZmFsbGJhY2sgbGlzdHMuIEZvciBhdm9pZGluZwpkaWZmIC0tZ2l0IGEvbW0vbW1faW5pdC5jIGIvbW0vbW1faW5pdC5jCmluZGV4IDQwMjZiMDg0YmQ0YmY3Li5kN2FlY2RkZGZkNWRhNCAxMDA2NDQKLS0tIGEvbW0vbW1faW5pdC5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL21tX2luaXQuYwpAQCAtMTUyNiw3ICYjNDM7MTUyNiw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX2luaXQgc2V0X3BhZ2VibG9ja19vcmRlcih2b2lkKQogICogTk9URTogdGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCBkdXJpbmcgbWVtb3J5IGhvdHBsdWcKICAqLwogI2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVRwotdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCkKJiM0MztpbnQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpCiB7CiAJaW50IG5pZCA9IHBnZGF0LSZndDtub2RlX2lkOwogCWVudW0gem9uZV90eXBlIHo7CkBAIC0xNTM0LDggJiM0MzsxNTM0LDE0IEBAIHZvaWQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpCiAKIAlwZ2RhdF9pbml0X2ludGVybmFscyhwZ2RhdCk7CiAKLQlpZiAocGdkYXQtJmd0O3Blcl9jcHVfbm9kZXN0YXRzID09ICZhbXA7Ym9vdF9ub2Rlc3RhdHMpCi0JCXBnZGF0LSZndDtwZXJfY3B1X25vZGVzdGF0cyA9IGFsbG9jX3BlcmNwdShzdHJ1Y3QgcGVyX2NwdV9ub2Rlc3RhdCk7CiYjNDM7CWlmIChwZ2RhdC0mZ3Q7cGVyX2NwdV9ub2Rlc3RhdHMgPT0gJmFtcDtib290X25vZGVzdGF0cykgewomIzQzOwkJc3RydWN0IHBlcl9jcHVfbm9kZXN0YXQgX19wZXJjcHUgKnA7CiYjNDM7CiYjNDM7CQlwID0gYWxsb2NfcGVyY3B1KHN0cnVjdCBwZXJfY3B1X25vZGVzdGF0KTsKJiM0MzsJCWlmICghcCkKJiM0MzsJCQlyZXR1cm4gLUVOT01FTTsKJiM0MzsJCXBnZGF0LSZndDtwZXJfY3B1X25vZGVzdGF0cyA9IHA7CiYjNDM7CX0KIAogCS8qCiAJICogUmVzZXQgdGhlIG5yX3pvbmVzLCBvcmRlciBhbmQgaGlnaGVzdF96b25laWR4IGJlZm9yZSByZXVzZS4KQEAgLTE1NjYsNiAmIzQzOzE1NzIsOCBAQCB2b2lkIF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KQogCQl6b25lLSZndDtwcmVzZW50X3BhZ2VzID0gMDsKIAkJem9uZV9pbml0X2ludGVybmFscyh6b25lLCB6LCBuaWQsIDApOwogCX0KJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAjZW5kaWYKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjg2CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldDogTWVtb3J5IEhvdHBsdWcgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gd2UmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0d2Vha2luZyB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gbWVtb3J5IGhvdHBsdWcgaW5pdGlhbGl6YXRpb24uIFNwZWNpZmljYWxseSwgaXQgbW9kaWZpZXMgYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2AgaW4gYG1tL21tX2luaXQuY2AgYW5kIGBob3RhZGRfaW5pdF9wZ2RhdGAgaW4gYG1tL21lbW9yeV9ob3RwbHVnLmNgLiBUaGUgY2hhbmdlIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdgIG5vdyByZXR1cm5zIGFuIGBpbnRgIHJhdGhlciB0aGFuIGB2b2lkYCwgYW5kIGl0IHNpZ25hbHMgYW4gZXJyb3Igd2l0aCBgLUVOT01FTWAgaWYgYGFsbG9jX3BlcmNwdWAgZmFpbHMuIGBob3RhZGRfaW5pdF9wZ2RhdGAgdGhlbiBjaGVja3MgdGhpcyByZXR1cm4gdmFsdWUgYW5kIHJldHVybnMgYE5VTExgIG9uIGZhaWx1cmUuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7SXMgdGhpcyByZWFjaGFibGUsIGFuZCBtb3JlIGltcG9ydGFudGx5LCBpcyBpdCB3b3J0aCBmdXp6aW5nPyYjMzQ7IFNpbmNlIHRoaXMgZGVhbHMgd2l0aCBtZW1vcnkgaG90cGx1ZywgdGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIFdlIGtub3cgbWVtb3J5IGhvdHBsdWcgY2FuIGJlIGluc3RpZ2F0ZWQgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCBtZWNoYW5pc21zIGxpa2Ugc3lzZnMgb3IgQUNQSS4gVGhhdCBtYWtlcyBpdCBhIHNvbGlkIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4KClRoZSBuZXh0IHF1ZXN0aW9uIGlzIHJlYWNoYWJpbGl0eSBpbiBhIHZpcnR1YWwgbWFjaGluZSBzZXR0aW5nLiBHaXZlbiB0aGF0IG1lbW9yeSBob3RwbHVnIGNhbiBiZSBzaW11bGF0ZWQgb3IgdHJpZ2dlcmVkIHZpYSBzeXNmcywgdGhpcyBpcyBkZWZpbml0ZWx5IGFjY2Vzc2libGUgaW4gYSBWTSBlbnZpcm9ubWVudC4gVGhhdCBtYWtlcyBpdCBldmVuIG1vcmUgYXBwZWFsaW5nLgoKTm93LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIGBob3RhZGRfaW5pdF9wZ2RhdGAgaW4gYG1tL21lbW9yeV9ob3RwbHVnLmNgIGFuZCBtYXAgb3V0IHRoZSBjb250cm9sIGZsb3cgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoZSByZXR1cm4gdmFsdWUgYW5kIGZpZ3VyZSBvdXQgaWYgd2UgY2FuIGVuZ2luZWVyIGludGVyZXN0aW5nIGZhaWx1cmUgc2NlbmFyaW9zIHdpdGggZnV6emluZy4gTGV0JiMzOTtzIHNlZSBpZiB3ZSBjYW4gdHJpZ2dlciB0aG9zZSBgLUVOT01FTWAgY29uZGl0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtob3RhZGRfaW5pdF9wZ2RhdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9tZW1vcnlfaG90cGx1Zy5jPTExMzc9aW50IG9ubGluZV9wYWdlcyh1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcyxcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEyNTItLyogd2UgYXJlIE9LIGNhbGxpbmcgX19tZW1pbml0IHN0dWZmIGhlcmUgLSB3ZSBoYXZlIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xubW0vbWVtb3J5X2hvdHBsdWcuYzoxMjUzOnN0YXRpYyBwZ19kYXRhX3QgKmhvdGFkZF9pbml0X3BnZGF0KGludCBuaWQpXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEyNTQte1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmM9MTI4OT1zdGF0aWMgaW50IF9fdHJ5X29ubGluZV9ub2RlKGludCBuaWQsIGJvb2wgc2V0X25vZGVfb25saW5lKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI5Ni1cbm1tL21lbW9yeV9ob3RwbHVnLmM6MTI5NzpcdHBnZGF0ID0gaG90YWRkX2luaXRfcGdkYXQobmlkKTtcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI5OC1cdGlmICghcGdkYXQpIHtcbi0tXG5tbS9tbV9pbml0LmM9MTgwNz1zdGF0aWMgdm9pZCBfX2luaXQgZnJlZV9hcmVhX2luaXQodm9pZClcbi0tXG5tbS9tbV9pbml0LmMtMTg5NC1cdFx0ICptZW1vcnktbGVzcyBub2RlLiBUaGUgcGdkYXQgd2lsbCBnZXQgZnVsbHkgaW5pdGlhbGl6ZWQgYnlcbm1tL21tX2luaXQuYzoxODk1Olx0XHQgKmhvdGFkZF9pbml0X3BnZGF0KCkgd2hlbiBtZW1vcnkgaXMgaG90cGx1Z2dlZCBpbnRvIHRoaXMgbm9kZS5cbm1tL21tX2luaXQuYy0xODk2LVx0XHQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTkzCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHNuaXBwZXQsIGFzIHRob3VnaCB0aGV5IHdlcmUgbXkgb3duIHRob3VnaHRzOgoKKipEaXNzZWN0aW5nIHRoZSBNZW1vcnkgTm9kZSBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBgaG90YWRkX2luaXRfcGdkYXRgIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGtpY2tzIG9mZiB0aGUgcHJvY2VzcyBvZiBpbml0aWFsaXppbmcgYSBuZXcgbWVtb3J5IG5vZGUgYWRkZWQgb24gdGhlIGZseS4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cuIFRoZSBrZXkgaXMgdW5kZXJzdGFuZGluZyAqd2hlbiogdGhpcyBpbml0aWFsaXphdGlvbiBhY3R1YWxseSBvY2N1cnMsIHRvIHVuZGVyc3RhbmQgdGhlIHRyaWdnZXIuIFNvLCBgaG90YWRkX2luaXRfcGdkYXRgIGlzIGNhbGxlZCBmcm9tIGBfX3RyeV9vbmxpbmVfbm9kZWAuIFRoYXQgc3VnZ2VzdHMgdGhhdCBgX190cnlfb25saW5lX25vZGVgIGxpa2VseSBoYXMgc29tZSByZXNwb25zaWJpbGl0eSBmb3IgdGhlIG92ZXJhbGwgcHJvY2VzcyBvZiBicmluZ2luZyB0aGUgbWVtb3J5IG5vZGUgb25saW5lLiBXaGF0IHRyaWdnZXJzICp0aGF0Kj8gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsaW5nIGhpZXJhcmNoeS4gV2hlcmUgYXJlIHRoZSBjYWxscyB0byBgX190cnlfb25saW5lX25vZGVgPyBUaGUgYW5zd2VyIHRvIHRoYXQgd2lsbCB0ZWxsIG1lIHRoZSBldmVudCB0aGF0IHNldHMgdGhpcyBpbml0aWFsaXphdGlvbiBpbiBtb3Rpb24uIExldCYjMzk7cyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgdGhlIGJyb2FkZXIgY29udGV4dCBoZXJlLiBJIG5lZWQgdGhlIGJpZ2dlciBwaWN0dXJlIHRvIHRydWx5IHVuZGVyc3RhbmQgdGhpcyBjb21wb25lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X190cnlfb25saW5lX25vZGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYvbW0vbnVtYS5jPTI2ND12b2lkIF9faW5pdCBpbml0X2dpX25vZGVzKHZvaWQpXG4tLVxuYXJjaC94ODYvbW0vbnVtYS5jLTI3MS1cdCAqICBjcHVfdXBcbmFyY2gveDg2L21tL251bWEuYzoyNzI6XHQgKiAgIF9fdHJ5X29ubGluZV9ub2RlXG5hcmNoL3g4Ni9tbS9udW1hLmMtMjczLVx0ICogICAgcmVnaXN0ZXJfbm9kZVxuLS1cbmFyY2gveDg2L21tL251bWEuYz0yOTY9dm9pZCBfX2luaXQgaW5pdF9jcHVfdG9fbm9kZSh2b2lkKVxuLS1cbmFyY2gveDg2L21tL251bWEuYy0zMTItXHRcdCAqICBjcHVfdXBcbmFyY2gveDg2L21tL251bWEuYzozMTM6XHRcdCAqICAgX190cnlfb25saW5lX25vZGVcbmFyY2gveDg2L21tL251bWEuYy0zMTQtXHRcdCAqICAgIHJlZ2lzdGVyX25vZGVcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTEyNTM9c3RhdGljIHBnX2RhdGFfdCAqaG90YWRkX2luaXRfcGdkYXQoaW50IG5pZClcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEyNzgtLypcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTI3OTogKiBfX3RyeV9vbmxpbmVfbm9kZSAtIG9ubGluZSBhIG5vZGUgaWYgb2ZmbGluZWRcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI4MC0gKiBAbmlkOiB0aGUgbm9kZSBJRFxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI4OC0gKi9cbm1tL21lbW9yeV9ob3RwbHVnLmM6MTI4OTpzdGF0aWMgaW50IF9fdHJ5X29ubGluZV9ub2RlKGludCBuaWQsIGJvb2wgc2V0X25vZGVfb25saW5lKVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMjkwLXtcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTEzMTY9aW50IHRyeV9vbmxpbmVfbm9kZShpbnQgbmlkKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMTMyMC1cdG1lbV9ob3RwbHVnX2JlZ2luKCk7XG5tbS9tZW1vcnlfaG90cGx1Zy5jOjEzMjE6XHRyZXQgPSAgX190cnlfb25saW5lX25vZGUobmlkLCB0cnVlKTtcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTMyMi1cdG1lbV9ob3RwbHVnX2RvbmUoKTtcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTE0OTU9aW50IGFkZF9tZW1vcnlfcmVzb3VyY2UoaW50IG5pZCwgc3RydWN0IHJlc291cmNlICpyZXMsIG1ocF90IG1ocF9mbGFncylcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE1MzItXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE1MzM6XHRyZXQgPSBfX3RyeV9vbmxpbmVfbm9kZShuaWQsIGZhbHNlKTtcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTUzNC1cdGlmIChyZXQgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ2NgoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipUcmFjaW5nIHRoZSBPbmxpbmUgTm9kZSBMb2dpYyoqCgpSaWdodCwgc28gSSYjMzk7bSBzZWVpbmcgdGhhdCBgX190cnlfb25saW5lX25vZGVgIGdldHMgY2FsbGVkIGZyb20gYm90aCBgdHJ5X29ubGluZV9ub2RlYCAqYW5kKiBgYWRkX21lbW9yeV9yZXNvdXJjZWAuICBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCDigJMgaXQgc3VnZ2VzdHMgYSBraW5kIG9mIHJlY3Vyc2l2ZSBwYXR0ZXJuIG9yIHBlcmhhcHMgYSBoZWxwZXIgZnVuY3Rpb24gd2l0aGluIHRoZSBicm9hZGVyIG5vZGUgb25saW5lIHByb2Nlc3MuIEkmIzM5O2xsIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQsIHRob3NlIGZ1bmN0aW9ucyBjb3VsZCBiZSBpbXBvcnRhbnQuCgpUaGVuLCB0aGVyZSYjMzk7cyBhIGNvbW1lbnQgaW4gYGFyY2gveDg2L21tL251bWEuY2AgaW5kaWNhdGluZyBgdHJ5X29ubGluZV9ub2RlYCBpcyB0cmlnZ2VyZWQgYnkgYGNwdV91cGAuIFRoYXQgbmFycm93cyBkb3duIHRoZSBjb250ZXh0IGNvbnNpZGVyYWJseSEgQSBgY3B1X3VwYCBjYWxsIGlzIGEgc2lnbmlmaWNhbnQgZXZlbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgbGluayB0aG9yb3VnaGx5LgoKVG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZSBvdmVyYWxsIGJlaGF2aW9yLCBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXQgKmFsbCogdGhlIHBsYWNlcyB3aGVyZSBgdHJ5X29ubGluZV9ub2RlYCBpcyBjYWxsZWQuIEZpbmRpbmcgdGhlIGNhbGxlcnMgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIGNvbnRyb2wgZmxvdyBhbmQgZWx1Y2lkYXRlIHRoZSBjaXJjdW1zdGFuY2VzIHRoYXQgdHJpZ2dlciB0aGUgb25saW5lIHByb2Nlc3MuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlYWwgaW5zaWdodHMgd2lsbCBsaWtlbHkgbGllLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RyeV9vbmxpbmVfbm9kZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMvbW0vbnVtYS5jPTE0MTI9dm9pZCBmaW5kX2FuZF91cGRhdGVfY3B1X25pZChpbnQgY3B1KVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9udW1hLmMtMTQyNy1cdFx0Ly8gQXNzb2NpYXRlIG5vZGUgXHUwMDNjLVx1MDAzZSBjcHUsIHNvIGNwdV91cCgpIGNhbGxzXG5hcmNoL3Bvd2VycGMvbW0vbnVtYS5jOjE0Mjg6XHRcdC8vIHRyeV9vbmxpbmVfbm9kZSgpIG9uIHRoZSByaWdodCBub2RlLlxuYXJjaC9wb3dlcnBjL21tL251bWEuYy0xNDI5LVx0XHRzZXRfY3B1X251bWFfbm9kZShjcHUsIG5ld19uaWQpO1xuLS1cbmFyY2gveDg2L21tL251bWEuYz0yNjQ9dm9pZCBfX2luaXQgaW5pdF9naV9ub2Rlcyh2b2lkKVxuLS1cbmFyY2gveDg2L21tL251bWEuYy0yNzEtXHQgKiAgY3B1X3VwXG5hcmNoL3g4Ni9tbS9udW1hLmM6MjcyOlx0ICogICBfX3RyeV9vbmxpbmVfbm9kZVxuYXJjaC94ODYvbW0vbnVtYS5jLTI3My1cdCAqICAgIHJlZ2lzdGVyX25vZGVcbi0tXG5hcmNoL3g4Ni9tbS9udW1hLmM9Mjk2PXZvaWQgX19pbml0IGluaXRfY3B1X3RvX25vZGUodm9pZClcbi0tXG5hcmNoL3g4Ni9tbS9udW1hLmMtMzEyLVx0XHQgKiAgY3B1X3VwXG5hcmNoL3g4Ni9tbS9udW1hLmM6MzEzOlx0XHQgKiAgIF9fdHJ5X29ubGluZV9ub2RlXG5hcmNoL3g4Ni9tbS9udW1hLmMtMzE0LVx0XHQgKiAgICByZWdpc3Rlcl9ub2RlXG4tLVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oPTEyMT1leHRlcm4gaW50IHJlc3RvcmVfb25saW5lX3BhZ2VfY2FsbGJhY2sob25saW5lX3BhZ2VfY2FsbGJhY2tfdCBjYWxsYmFjayk7XG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMTIyLVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjEyMzpleHRlcm4gaW50IHRyeV9vbmxpbmVfbm9kZShpbnQgbmlkKTtcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0xMjQtXG4tLVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oPTE5OT1zdGF0aWMgaW5saW5lIHZvaWQgem9uZV9zZXFsb2NrX2luaXQoc3RydWN0IHpvbmUgKnpvbmUpIHt9XG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjAwLVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjIwMTpzdGF0aWMgaW5saW5lIGludCB0cnlfb25saW5lX25vZGUoaW50IG5pZClcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yMDIte1xuLS1cbmtlcm5lbC9jcHUuYz0xNjgxPXN0YXRpYyBpbnQgY3B1X3VwKHVuc2lnbmVkIGludCBjcHUsIGVudW0gY3B1aHBfc3RhdGUgdGFyZ2V0KVxuLS1cbmtlcm5lbC9jcHUuYy0xNjkwLVxua2VybmVsL2NwdS5jOjE2OTE6XHRlcnIgPSB0cnlfb25saW5lX25vZGUoY3B1X3RvX25vZGUoY3B1KSk7XG5rZXJuZWwvY3B1LmMtMTY5Mi1cdGlmIChlcnIpXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYz0xMjUzPXN0YXRpYyBwZ19kYXRhX3QgKmhvdGFkZF9pbml0X3BnZGF0KGludCBuaWQpXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMjc4LS8qXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjEyNzk6ICogX190cnlfb25saW5lX25vZGUgLSBvbmxpbmUgYSBub2RlIGlmIG9mZmxpbmVkXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEyODAtICogQG5pZDogdGhlIG5vZGUgSURcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEyODgtICovXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjEyODk6c3RhdGljIGludCBfX3RyeV9vbmxpbmVfbm9kZShpbnQgbmlkLCBib29sIHNldF9ub2RlX29ubGluZSlcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI5MC17XG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMzE1LSAqL1xubW0vbWVtb3J5X2hvdHBsdWcuYzoxMzE2OmludCB0cnlfb25saW5lX25vZGUoaW50IG5pZClcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTMxNy17XG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMzIwLVx0bWVtX2hvdHBsdWdfYmVnaW4oKTtcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTMyMTpcdHJldCA9ICBfX3RyeV9vbmxpbmVfbm9kZShuaWQsIHRydWUpO1xubW0vbWVtb3J5X2hvdHBsdWcuYy0xMzIyLVx0bWVtX2hvdHBsdWdfZG9uZSgpO1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmM9MTQ5NT1pbnQgYWRkX21lbW9yeV9yZXNvdXJjZShpbnQgbmlkLCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcywgbWhwX3QgbWhwX2ZsYWdzKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMTUzMi1cbm1tL21lbW9yeV9ob3RwbHVnLmM6MTUzMzpcdHJldCA9IF9fdHJ5X29ubGluZV9ub2RlKG5pZCwgZmFsc2UpO1xubW0vbWVtb3J5X2hvdHBsdWcuYy0xNTM0LVx0aWYgKHJldCBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODU0CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIE5vZGUgT25saW5laW5nKioKCk9rYXksIHNvIGB0cnlfb25saW5lX25vZGVgIGdldHMgY2FsbGVkIGZyb20gYGNwdV91cGAgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgQ1BVIGNvZGUsIHNwZWNpZmljYWxseSBga2VybmVsL2NwdS5jYC4gYGNwdV91cGAgaXRzZWxmIGNhbiBiZSBhY3RpdmF0ZWQgdmlhIHN5c2ZzLCB0aGUgYC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdVgvb25saW5lYCBpbnRlcmZhY2UuIEhtbSwgaW50ZXJlc3RpbmcuLi4gV2FpdCBhIG1pbnV0ZSwgYHRyeV9vbmxpbmVfbm9kZWAgYWN0dWFsbHkgY2FsbHMgYF9fdHJ5X29ubGluZV9ub2RlYCwgd2hpY2ggdGhlbiBkaXZlcyBpbnRvIGBob3RhZGRfaW5pdF9wZ2RhdGAuCgpgaG90YWRkX2luaXRfcGdkYXRgIGlzIHRoZSBjcml0aWNhbCBwaWVjZSBoZXJlOyBpdCBkb2VzIGEgY2hlY2sgdG8gc2VlIGlmIHRoZSBub2RlIGlzIGFscmVhZHkgb25saW5lLCBhbmQgaWYgbm90LCAqdGhlbiogaXQgaW5pdGlhbGl6ZXMgaXQuIFNvLCBjYW4gQ1BVIGhvdHBsdWcgdHJpZ2dlciB0aGlzIHNlcXVlbmNlPyBZZXMsIGl0IGFic29sdXRlbHkgY2FuLCBpZiB0aGUgQ1BVIHdlJiMzOTtyZSBob3RwbHVnZ2luZyBiZWxvbmdzIHRvIGEgTlVNQSBub2RlIHRoYXQgaXNuJiMzOTt0IG9ubGluZSB5ZXQuIFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gSXQmIzM5O3MgYSBrZXkgcGFydCBvZiBicmluZ2luZyB1cCBhIG5ldyBub2RlIHZpYSBhIG5ldyBDUFUhCgpBbmQsIGV2ZW4gYmV0dGVyLCBJIGFsc28gcmVjYWxsIHRoYXQgYGFkZF9tZW1vcnlfcmVzb3VyY2VgIGFsc28gY2FsbHMgYF9fdHJ5X29ubGluZV9ub2RlYC4gVGhhdCBtZWFucyBtZW1vcnkgaG90cGx1ZyBjYW4gYWxzbyBwb3RlbnRpYWxseSB0cmlnZ2VyIHRoaXMgbm9kZSBvbmxpbmUgcHJvY2VzcyEgU28sIGxldCYjMzk7cyBzZWUgd2hpY2ggY2FsbGVycyBhcmUgYWN0dWFsbHkgY2FsbGluZyBgYWRkX21lbW9yeV9yZXNvdXJjZWAgaXRzZWxmLCBzaW5jZSB0aGF0JiMzOTtzIGEgc2Vjb25kIHRyaWdnZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FkZF9tZW1vcnlfcmVzb3VyY2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9tZW1vcnktaG90cGx1Zy5yc3Q9MTczPW1lbW9yeSBmYXN0ZXIgdGhhbiBleHBlY3RlZDpcbi0tXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL21lbW9yeS1ob3RwbHVnLnJzdC0xNzYtICBtZW1faG90cGx1Z19sb2NrXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL21lbW9yeS1ob3RwbHVnLnJzdDoxNzc6LSBhZGRfbWVtb3J5X3Jlc291cmNlKCkgd2lsbCBmaXJzdCB0YWtlIHRoZSBtZW1faG90cGx1Z19sb2NrLCBmb2xsb3dlZCBieVxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9tZW1vcnktaG90cGx1Zy5yc3QtMTc4LSAgdGhlIGRldmljZV9sb2NrKCkgKHdoaWxlIGNyZWF0aW5nIHRoZSBkZXZpY2VzLCBkdXJpbmcgYnVzX2FkZF9kZXZpY2UoKSkuXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vY29yZS1hcGkvbWVtb3J5LWhvdHBsdWcucnN0PTg3PU5PVElGWV9TVE9Q5YGc5q2i5a+56YCa55+l6Zif5YiX55qE6L+b5LiA5q2l5aSE55CG44CCXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vY29yZS1hcGkvbWVtb3J5LWhvdHBsdWcucnN0LTEwNS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL2NvcmUtYXBpL21lbW9yeS1ob3RwbHVnLnJzdDoxMDY6LSBhZGRfbWVtb3J5X3Jlc291cmNlKCnlsIbpppblhYjkvb/nlKhtZW1faG90cGx1Z19sb2Nr77yM54S25ZCO5pivZGV2aWNlX2xvY2soKe+8iOWcqOWIm1xuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vY29yZS1hcGkvbWVtb3J5LWhvdHBsdWcucnN0LTEwNy0gIOW7uuiuvuWkh+aXtu+8jOWcqGJ1c19hZGRfZGV2aWNlKCnmnJ/pl7TvvInjgIJcbi0tXG5kcml2ZXJzL3hlbi9iYWxsb29uLmM9MjY0PXN0YXRpYyBlbnVtIGJwX3N0YXRlIHJlc2VydmVfYWRkaXRpb25hbF9tZW1vcnkodm9pZClcbi0tXG5kcml2ZXJzL3hlbi9iYWxsb29uLmMtMzE4LVx0LypcbmRyaXZlcnMveGVuL2JhbGxvb24uYzozMTk6XHQgKiBhZGRfbWVtb3J5X3Jlc291cmNlKCkgd2lsbCBjYWxsIG9ubGluZV9wYWdlcygpIHdoaWNoIGluIGl0cyB0dXJuXG5kcml2ZXJzL3hlbi9iYWxsb29uLmMtMzIwLVx0ICogd2lsbCBjYWxsIHhlbl9vbmxpbmVfcGFnZSgpIGNhbGxiYWNrIGNhdXNpbmcgZGVhZGxvY2sgaWYgd2UgZG9uJiMzOTt0XG4tLVxuZHJpdmVycy94ZW4vYmFsbG9vbi5jLTMyNC1cdG11dGV4X3VubG9jayhcdTAwMjZiYWxsb29uX211dGV4KTtcbmRyaXZlcnMveGVuL2JhbGxvb24uYzozMjU6XHQvKiBhZGRfbWVtb3J5X3Jlc291cmNlKCkgcmVxdWlyZXMgdGhlIGRldmljZV9ob3RwbHVnIGxvY2sgKi9cbmRyaXZlcnMveGVuL2JhbGxvb24uYy0zMjYtXHRsb2NrX2RldmljZV9ob3RwbHVnKCk7XG5kcml2ZXJzL3hlbi9iYWxsb29uLmM6MzI3Olx0cmMgPSBhZGRfbWVtb3J5X3Jlc291cmNlKG5pZCwgcmVzb3VyY2UsIE1IUF9NRVJHRV9SRVNPVVJDRSk7XG5kcml2ZXJzL3hlbi9iYWxsb29uLmMtMzI4LVx0dW5sb2NrX2RldmljZV9ob3RwbHVnKCk7XG4tLVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oPTM1PXR5cGVkZWYgaW50IF9fYml0d2lzZSBtaHBfdDtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtNDAtICogQWxsb3cgbWVyZ2luZyBvZiB0aGUgYWRkZWQgU3lzdGVtIFJBTSByZXNvdXJjZSB3aXRoIGFkamFjZW50LFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjQxOiAqIG1lcmdlYWJsZSByZXNvdXJjZXMuIEFmdGVyIGEgc3VjY2Vzc2Z1bCBjYWxsIHRvIGFkZF9tZW1vcnlfcmVzb3VyY2UoKVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTQyLSAqIHdpdGggdGhpcyBmbGFnIHNldCwgdGhlIHJlc291cmNlIHBvaW50ZXIgbXVzdCBubyBsb25nZXIgYmUgdXNlZCBhcyBpdFxuLS1cbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaD0yOTQ9ZXh0ZXJuIGludCBhZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsIG1ocF90IG1ocF9mbGFncyk7XG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6Mjk1OmV4dGVybiBpbnQgYWRkX21lbW9yeV9yZXNvdXJjZShpbnQgbmlkLCBzdHJ1Y3QgcmVzb3VyY2UgKnJlc291cmNlLFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI5Ni1cdFx0XHQgICAgICAgbWhwX3QgbWhwX2ZsYWdzKTtcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTMxOT1zdGF0aWMgaW50IGNoZWNrX3Bmbl9zcGFuKHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMzI1LVx0ICogb25saW5lLCBzbyB0aGlzIGNoZWNrIHNob3VsZCBvbmx5IGZpcmUgZm9yIGRpcmVjdFxubW0vbWVtb3J5X2hvdHBsdWcuYzozMjY6XHQgKiBhcmNoX3thZGQscmVtb3ZlfV9tZW1vcnkoKSB1c2VycyBvdXRzaWRlIG9mIGFkZF9tZW1vcnlfcmVzb3VyY2UoKS5cbm1tL21lbW9yeV9ob3RwbHVnLmMtMzI3LVx0ICovXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYz0xNDQxPXN0YXRpYyBpbnQgY3JlYXRlX2FsdG1hcHNfYW5kX21lbW9yeV9ibG9ja3MoaW50IG5pZCwgc3RydWN0IG1lbW9yeV9ncm91cCAqZ3JvdXAsXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNDk0LSAqL1xubW0vbWVtb3J5X2hvdHBsdWcuYzoxNDk1OmludCBhZGRfbWVtb3J5X3Jlc291cmNlKGludCBuaWQsIHN0cnVjdCByZXNvdXJjZSAqcmVzLCBtaHBfdCBtaHBfZmxhZ3MpXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE0OTYte1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMTYwMS1cbm1tL21lbW9yeV9ob3RwbHVnLmM6MTYwMjovKiByZXF1aXJlcyBkZXZpY2VfaG90cGx1Z19sb2NrLCBzZWUgYWRkX21lbW9yeV9yZXNvdXJjZSgpICovXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MDMtaW50IF9fYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBtaHBfdCBtaHBfZmxhZ3MpXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjExLVxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNjEyOlx0cmV0ID0gYWRkX21lbW9yeV9yZXNvdXJjZShuaWQsIHJlcywgbWhwX2ZsYWdzKTtcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTYxMy1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYz0xNjUxPWludCBhZGRfbWVtb3J5X2RyaXZlcl9tYW5hZ2VkKGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjY5LVxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNjcwOlx0cmMgPSBhZGRfbWVtb3J5X3Jlc291cmNlKG5pZCwgcmVzLCBtaHBfZmxhZ3MpO1xubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjcxLVx0aWYgKHJjIFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTc3CgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJhY2luZyBNZW1vcnkgQWxsb2NhdGlvbiBDYWxscyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IG1lbW9yeSBpcyBhbGxvY2F0ZWQgd2l0aGluIHRoaXMgc3lzdGVtLiBJIHNlZSBgYWRkX21lbW9yeV9yZXNvdXJjZWAgYmVpbmcgaW52b2tlZCwgYW5kIHRoYXQmIzM5O3MgYSBrZXkgZnVuY3Rpb24gZm9yIG1hbmFnaW5nIG1lbW9yeSByZXNvdXJjZXMuIE5vdywgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBwcmltYXJpbHkgY2FsbGVkIGZyb20gYF9fYWRkX21lbW9yeWAgYW5kIGBhZGRfbWVtb3J5X2RyaXZlcl9tYW5hZ2VkYCwgd2hpY2ggbWFrZXMgc2Vuc2UgYXMgdGhlc2UgbGlrZWx5IHJlcHJlc2VudCB0aGUgY29yZSBhbGxvY2F0aW9uIGxvZ2ljIGFuZCBkcml2ZXItc3BlY2lmaWMgbWFuYWdlbWVudCwgcmVzcGVjdGl2ZWx5LgoKSG93ZXZlciwgYF9fYWRkX21lbW9yeWAgaXRzZWxmIGlzIGNhbGxlZCBieSBgYWRkX21lbW9yeWAuIFRoaXMgc3VnZ2VzdHMgYGFkZF9tZW1vcnlgIGNvdWxkIGJlIHRoZSBoaWdoLWxldmVsLCBleHRlcm5hbCBmYWNpbmcgZnVuY3Rpb24gZm9yIGFkZGluZyBtZW1vcnkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGhpZXJhcmNoeSBmcm9tIHRoZSB0b3AgZG93bi4KClRoZXJlZm9yZSwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHBpbnBvaW50IHRoZSBjYWxsZXJzIG9mIGBhZGRfbWVtb3J5YC4gS25vd2luZyB3aGVyZSAqdGhhdCogZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkIGZyb20gd2lsbCBpbGx1bWluYXRlIHRoZSBlbnRpcmUgcHJvY2Vzcy4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgYmFjayB0byB0aGUgb3JpZ2luYXRpbmcgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FkZF9tZW1vcnkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9tZW1vcnktaG90cGx1Zy5yc3Q9MTczPW1lbW9yeSBmYXN0ZXIgdGhhbiBleHBlY3RlZDpcbi0tXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL21lbW9yeS1ob3RwbHVnLnJzdC0xNzYtICBtZW1faG90cGx1Z19sb2NrXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL21lbW9yeS1ob3RwbHVnLnJzdDoxNzc6LSBhZGRfbWVtb3J5X3Jlc291cmNlKCkgd2lsbCBmaXJzdCB0YWtlIHRoZSBtZW1faG90cGx1Z19sb2NrLCBmb2xsb3dlZCBieVxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9tZW1vcnktaG90cGx1Zy5yc3QtMTc4LSAgdGhlIGRldmljZV9sb2NrKCkgKHdoaWxlIGNyZWF0aW5nIHRoZSBkZXZpY2VzLCBkdXJpbmcgYnVzX2FkZF9kZXZpY2UoKSkuXG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9tZW1vcnktbW9kZWwucnN0PTE1NT10aGlzIGxhY2sgb2YgdXNlci1hcGkgY29uc3RyYWludCB0byBhbGxvdyBzdWItc2VjdGlvbiBzaXplZCBtZW1vcnlcbkRvY3VtZW50YXRpb24vbW0vbWVtb3J5LW1vZGVsLnJzdDoxNTY6cmFuZ2VzIHRvIGJlIHNwZWNpZmllZCB0byA6YzpmdW5jOmBhcmNoX2FkZF9tZW1vcnlgLCB0aGUgdG9wLWhhbGYgb2ZcbkRvY3VtZW50YXRpb24vbW0vbWVtb3J5LW1vZGVsLnJzdC0xNTctbWVtb3J5IGhvdHBsdWcuIFN1Yi1zZWN0aW9uIHN1cHBvcnQgYWxsb3dzIGZvciAyTUIgYXMgdGhlIGNyb3NzLWFyY2hcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9jb3JlLWFwaS9tZW1vcnktaG90cGx1Zy5yc3Q9ODc9Tk9USUZZX1NUT1DlgZzmraLlr7npgJrnn6XpmJ/liJfnmoTov5vkuIDmraXlpITnkIbjgIJcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9jb3JlLWFwaS9tZW1vcnktaG90cGx1Zy5yc3QtMTA1LVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vY29yZS1hcGkvbWVtb3J5LWhvdHBsdWcucnN0OjEwNjotIGFkZF9tZW1vcnlfcmVzb3VyY2UoKeWwhummluWFiOS9v+eUqG1lbV9ob3RwbHVnX2xvY2vvvIznhLblkI7mmK9kZXZpY2VfbG9jaygp77yI5Zyo5YibXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9jb3JlLWFwaS9tZW1vcnktaG90cGx1Zy5yc3QtMTA3LSAg5bu66K6+5aSH5pe277yM5ZyoYnVzX2FkZF9kZXZpY2UoKeacn+mXtO+8ieOAglxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL21lbW9yeS1tb2RlbC5yc3Q9MTA3PVpPTkVfREVWSUNFXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vbWVtb3J5LW1vZGVsLnJzdC0xMjEt5LiK44CC6L+Z5Liq5a6e546w5L6d6LWW5LqO6L+Z56eN57y65LmP55So5oi35o6l5Y+j55qE57qm5p2f77yM5YWB6K645a2Q5q615aSn5bCP55qE5YaF5a2Y6IyD5Zu06KKr5oyH5a6a57uZXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9tZW1vcnktbW9kZWwucnN0OjEyMjo6YzpmdW5jOmBhcmNoX2FkZF9tZW1vcnlgIO+8jOWNs+WGheWtmOeDreaPkuaLlOeahOS4iuWNiumDqOWIhuOAguWtkOauteaUr+aMgeWFgeiuuDJNQuS9nOS4ulxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vbWVtb3J5LW1vZGVsLnJzdC0xMjMtOmM6ZnVuYzpgZGV2bV9tZW1yZW1hcF9wYWdlc2Ag55qE6Leo5p625p6E6YCa55So5a+56b2Q6aKX57KS5bqm44CCXG4tLVxuYXJjaC9hcmMvbW0vaW5pdC5jPTQ5PWVhcmx5X3BhcmFtKFwmIzM0O21lbVwmIzM0Oywgc2V0dXBfbWVtX3N6KTtcbmFyY2gvYXJjL21tL2luaXQuYy01MC1cbmFyY2gvYXJjL21tL2luaXQuYzo1MTp2b2lkIF9faW5pdCBlYXJseV9pbml0X2R0X2FkZF9tZW1vcnlfYXJjaCh1NjQgYmFzZSwgdTY0IHNpemUpXG5hcmNoL2FyYy9tbS9pbml0LmMtNTIte1xuLS1cbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3NldHVwLmg9MjA9c3RhdGljIGNvbnN0IHN0cnVjdCB0YWd0YWJsZSBfX3RhZ3RhYmxlXyMjZm4gX190YWcgPSB7IHRhZywgZm4gfVxuYXJjaC9hcm0vaW5jbHVkZS9hc20vc2V0dXAuaC0yMS1cbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3NldHVwLmg6MjI6ZXh0ZXJuIGludCBhcm1fYWRkX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKTtcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3NldHVwLmgtMjMtZXh0ZXJuIF9fcHJpbnRmKDEsIDIpIHZvaWQgZWFybHlfcHJpbnQoY29uc3QgY2hhciAqc3RyLCAuLi4pO1xuLS1cbmFyY2gvYXJtL2tlcm5lbC9hdGFnc19wYXJzZS5jPTY1PXN0YXRpYyBpbnQgX19pbml0IHBhcnNlX3RhZ19tZW0zMihjb25zdCBzdHJ1Y3QgdGFnICp0YWcpXG5hcmNoL2FybS9rZXJuZWwvYXRhZ3NfcGFyc2UuYy02Ni17XG5hcmNoL2FybS9rZXJuZWwvYXRhZ3NfcGFyc2UuYzo2NzpcdHJldHVybiBhcm1fYWRkX21lbW9yeSh0YWctXHUwMDNldS5tZW0uc3RhcnQsIHRhZy1cdTAwM2V1Lm1lbS5zaXplKTtcbmFyY2gvYXJtL2tlcm5lbC9hdGFnc19wYXJzZS5jLTY4LX1cbi0tXG5hcmNoL2FybS9rZXJuZWwvc2V0dXAuYz03NDY9dm9pZCBfX2luaXQgZHVtcF9tYWNoaW5lX3RhYmxlKHZvaWQpXG4tLVxuYXJjaC9hcm0va2VybmVsL3NldHVwLmMtNzU5LVxuYXJjaC9hcm0va2VybmVsL3NldHVwLmM6NzYwOmludCBfX2luaXQgYXJtX2FkZF9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSlcbmFyY2gvYXJtL2tlcm5lbC9zZXR1cC5jLTc2MS17XG4tLVxuYXJjaC9hcm0va2VybmVsL3NldHVwLmM9ODI2PXN0YXRpYyBpbnQgX19pbml0IGVhcmx5X21lbShjaGFyICpwKVxuLS1cbmFyY2gvYXJtL2tlcm5lbC9zZXR1cC5jLTg0OC1cbmFyY2gvYXJtL2tlcm5lbC9zZXR1cC5jOjg0OTpcdGFybV9hZGRfbWVtb3J5KHN0YXJ0LCBzaXplKTtcbmFyY2gvYXJtL2tlcm5lbC9zZXR1cC5jLTg1MC1cbi0tXG5hcmNoL2FybTY0L21tL21tdS5jPTE5NTM9c3RydWN0IHJhbmdlIGFyY2hfZ2V0X21hcHBhYmxlX3JhbmdlKHZvaWQpXG4tLVxuYXJjaC9hcm02NC9tbS9tbXUuYy0xOTg0LVxuYXJjaC9hcm02NC9tbS9tbXUuYzoxOTg1OmludCBhcmNoX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSxcbmFyY2gvYXJtNjQvbW0vbW11LmMtMTk4Ni1cdFx0ICAgIHN0cnVjdCBtaHBfcGFyYW1zICpwYXJhbXMpXG4tLVxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jPTY0PXZvaWQgX19pbml0IGZpeHJhbmdlX2luaXQodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIHBnZF90ICpwZ2RfYmFzZSlcbi0tXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmMtMTA2LSNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvbG9vbmdhcmNoL21tL2luaXQuYzoxMDc6aW50IGFyY2hfYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBzdHJ1Y3QgbWhwX3BhcmFtcyAqcGFyYW1zKVxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTEwOC17XG4tLVxuYXJjaC9taXBzL2dlbmVyaWMvYm9hcmQtaW5nZW5pYy5jPTEwOD1zdGF0aWMgX19pbml0IGNvbnN0IHZvaWQgKmluZ2VuaWNfZml4dXBfZmR0KGNvbnN0IHZvaWQgKmZkdCwgY29uc3Qgdm9pZCAqbWF0Y2hfZGF0YSlcbi0tXG5hcmNoL21pcHMvZ2VuZXJpYy9ib2FyZC1pbmdlbmljLmMtMTE1LVx0ICAgIGZkdF9wYXRoX29mZnNldChmZHQsIFwmIzM0Oy9tZW1vcnlcJiMzNDspIFx1MDAzYyAwKVxuYXJjaC9taXBzL2dlbmVyaWMvYm9hcmQtaW5nZW5pYy5jOjExNjpcdFx0ZWFybHlfaW5pdF9kdF9hZGRfbWVtb3J5X2FyY2goMCwgU1pfMzJNKTtcbmFyY2gvbWlwcy9nZW5lcmljL2JvYXJkLWluZ2VuaWMuYy0xMTctXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmM9NjEzPXN0YXRpYyBpbnQgYWRkX21lbV90b19tZW1ibG9jayA9IDE7XG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmMtNjE3LVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmM6NjE4OnZvaWQgX19pbml0IGVhcmx5X2luaXRfZHRfYWRkX21lbW9yeV9hcmNoKHU2NCBiYXNlLCB1NjQgc2l6ZSlcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jLTYxOS17XG4tLVxuYXJjaC9wb3dlcnBjL21tL21lbS5jPTEyOT1pbnQgX19yZWYgYWRkX3BhZ2VzKGludCBuaWQsIHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9tZW0uYy0xNDQtXG5hcmNoL3Bvd2VycGMvbW0vbWVtLmM6MTQ1OmludCBfX3JlZiBhcmNoX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSxcbmFyY2gvcG93ZXJwYy9tbS9tZW0uYy0xNDYtXHRcdFx0ICBzdHJ1Y3QgbWhwX3BhcmFtcyAqcGFyYW1zKVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jPTU2ND1zdGF0aWMgaW50IGRscGFyX2FkZF9sbWIoc3RydWN0IGRybWVtX2xtYiAqbG1iKVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jLTU4Ni1cdC8qIEFkZCB0aGUgbWVtb3J5ICovXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYzo1ODc6XHRyYyA9IF9fYWRkX21lbW9yeShuaWQsIGxtYi1cdTAwM2ViYXNlX2FkZHIsIGJsb2NrX3N6LCBNSFBfTUVNTUFQX09OX01FTU9SWSk7XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYy01ODgtXHRpZiAocmMpIHtcbi0tXG5hcmNoL3Jpc2N2L21tL2luaXQuYz0xNzA0PXN0cnVjdCByYW5nZSBhcmNoX2dldF9tYXBwYWJsZV9yYW5nZSh2b2lkKVxuLS1cbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTE3MTItXG5hcmNoL3Jpc2N2L21tL2luaXQuYzoxNzEzOmludCBfX3JlZiBhcmNoX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSwgc3RydWN0IG1ocF9wYXJhbXMgKnBhcmFtcylcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTE3MTQte1xuLS1cbmFyY2gvczM5MC9tbS9pbml0LmM9MjU2PWRldmljZV9pbml0Y2FsbChzMzkwX2NtYV9tZW1faW5pdCk7XG4tLVxuYXJjaC9zMzkwL21tL2luaXQuYy0yNTktXG5hcmNoL3MzOTAvbW0vaW5pdC5jOjI2MDppbnQgYXJjaF9hZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsXG5hcmNoL3MzOTAvbW0vaW5pdC5jLTI2MS1cdFx0ICAgIHN0cnVjdCBtaHBfcGFyYW1zICpwYXJhbXMpXG4tLVxuYXJjaC94ODYvbW0vaW5pdF82NC5jPTk2ND1pbnQgYWRkX3BhZ2VzKGludCBuaWQsIHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLFxuLS1cbmFyY2gveDg2L21tL2luaXRfNjQuYy05OTEtXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM6OTkyOmludCBhcmNoX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSxcbmFyY2gveDg2L21tL2luaXRfNjQuYy05OTMtXHRcdCAgICBzdHJ1Y3QgbWhwX3BhcmFtcyAqcGFyYW1zKVxuLS1cbmRyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYz0xNjg9c3RhdGljIGludCBhY3BpX21lbW9yeV9lbmFibGVfZGV2aWNlKHN0cnVjdCBhY3BpX21lbW9yeV9kZXZpY2UgKm1lbV9kZXZpY2UpXG4tLVxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jLTIxMi1cdFx0bWhwX2ZsYWdzIHw9IE1IUF9NRU1NQVBfT05fTUVNT1JZO1xuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jOjIxMzpcdFx0cmVzdWx0ID0gX19hZGRfbWVtb3J5KG1naWQsIGluZm8tXHUwMDNlc3RhcnRfYWRkciwgaW5mby1cdTAwM2VsZW5ndGgsXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmMtMjE0LVx0XHRcdFx0ICAgICAgbWhwX2ZsYWdzKTtcbi0tXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmMtMjE2LVx0XHQvKlxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jOjIxNzpcdFx0ICogSWYgdGhlIG1lbW9yeSBibG9jayBoYXMgYmVlbiB1c2VkIGJ5IHRoZSBrZXJuZWwsIGFkZF9tZW1vcnkoKVxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jOjIxODpcdFx0ICogcmV0dXJucyAtRUVYSVNULiBJZiBhZGRfbWVtb3J5KCkgcmV0dXJucyB0aGUgb3RoZXIgZXJyb3IsIGl0XG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmMtMjE5LVx0XHQgKiBtZWFucyB0aGF0IHRoaXMgbWVtb3J5IGJsb2NrIGlzIG5vdCB1c2VkIGJ5IHRoZSBrZXJuZWwuXG4tLVxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jLTIzMi1cdFx0LypcbmRyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYzoyMzM6XHRcdCAqIEFkZCBudW1fZW5hYmxlIGV2ZW4gaWYgYWRkX21lbW9yeSgpIHJldHVybnMgLUVFWElTVCwgc28gdGhlXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmMtMjM0LVx0XHQgKiBkZXZpY2UgaXMgYm91bmQgdG8gdGhpcyBkcml2ZXIuXG4tLVxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jLTIzOC1cdGlmICghbnVtX2VuYWJsZWQpIHtcbmRyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYzoyMzk6XHRcdGRldl9lcnIoXHUwMDI2bWVtX2RldmljZS1cdTAwM2VkZXZpY2UtXHUwMDNlZGV2LCBcJiMzNDthZGRfbWVtb3J5IGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmMtMjQwLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL2FjcGkvc2Nhbi5jPTI4MjE9dm9pZCBfX2luaXQgYWNwaV9zY2FuX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL2FjcGkvc2Nhbi5jLTI4NjEtXHQvKlxuZHJpdmVycy9hY3BpL3NjYW4uYzoyODYyOlx0ICogQWx0aG91Z2ggd2UgY2FsbCBfX2FkZF9tZW1vcnkoKSB0aGF0IGlzIGRvY3VtZW50ZWQgdG8gcmVxdWlyZSB0aGVcbmRyaXZlcnMvYWNwaS9zY2FuLmMtMjg2My1cdCAqIGRldmljZV9ob3RwbHVnX2xvY2ssIGl0IGlzIG5vdCBuZWNlc3NhcnkgaGVyZSBiZWNhdXNlIHRoaXMgaXMgYW5cbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9NTYzPXN0YXRpYyBzc2l6ZV90IHByb2JlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTU4MS1cdG5pZCA9IG1lbW9yeV9hZGRfcGh5c2FkZHJfdG9fbmlkKHBoeXNfYWRkcik7XG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6NTgyOlx0cmV0ID0gX19hZGRfbWVtb3J5KG5pZCwgcGh5c19hZGRyLFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTU4My1cdFx0XHQgICBNSU5fTUVNT1JZX0JMT0NLX1NJWkUgKiBzZWN0aW9uc19wZXJfYmxvY2ssXG4tLVxuZHJpdmVycy9iYXNlL21lbW9yeS5jPTY3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqbWVtb3J5X21lbWJsa19hdHRyX2dyb3Vwc1tdID0ge1xuLS1cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy02ODEtXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6NjgyOnN0YXRpYyBpbnQgX19hZGRfbWVtb3J5X2Jsb2NrKHN0cnVjdCBtZW1vcnlfYmxvY2sgKm1lbW9yeSlcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy02ODMte1xuLS1cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz03NTQ9dm9pZCBtZW1vcnlfYmxvY2tfYWRkX25pZF9lYXJseShzdHJ1Y3QgbWVtb3J5X2Jsb2NrICptZW0sIGludCBuaWQpXG4tLVxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTc4MC1cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYzo3ODE6c3RhdGljIGludCBhZGRfbWVtb3J5X2Jsb2NrKHVuc2lnbmVkIGxvbmcgYmxvY2tfaWQsIGludCBuaWQsIHVuc2lnbmVkIGxvbmcgc3RhdGUsXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtNzgyLVx0XHRcdCAgICBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtODEyLVxuZHJpdmVycy9iYXNlL21lbW9yeS5jOjgxMzpcdHJldCA9IF9fYWRkX21lbW9yeV9ibG9jayhtZW0pO1xuZHJpdmVycy9iYXNlL21lbW9yeS5jLTgxNC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9iYXNlL21lbW9yeS5jPTg1MT1pbnQgY3JlYXRlX21lbW9yeV9ibG9ja19kZXZpY2VzKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgc2l6ZSxcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtODY1LVx0Zm9yIChibG9ja19pZCA9IHN0YXJ0X2Jsb2NrX2lkOyBibG9ja19pZCAhPSBlbmRfYmxvY2tfaWQ7IGJsb2NrX2lkJiM0MzsmIzQzOykge1xuZHJpdmVycy9iYXNlL21lbW9yeS5jOjg2NjpcdFx0cmV0ID0gYWRkX21lbW9yeV9ibG9jayhibG9ja19pZCwgbmlkLCBNRU1fT0ZGTElORSwgYWx0bWFwLCBncm91cCk7XG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtODY3LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz05NDM9dm9pZCBfX2luaXQgbWVtb3J5X2Rldl9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTk3MC1cdFx0YmxvY2tfaWQgPSBtZW1vcnlfYmxvY2tfaWQobnIpO1xuZHJpdmVycy9iYXNlL21lbW9yeS5jOjk3MTpcdFx0cmV0ID0gYWRkX21lbW9yeV9ibG9jayhibG9ja19pZCwgTlVNQV9OT19OT0RFLCBNRU1fT05MSU5FLCBOVUxMLCBOVUxMKTtcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy05NzItXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL2RheC9LY29uZmlnPTczPWNvbmZpZyBERVZfREFYX0tNRU1cbi0tXG5kcml2ZXJzL2RheC9LY29uZmlnLTc2LVx0ZGVwZW5kcyBvbiBERVZfREFYXG5kcml2ZXJzL2RheC9LY29uZmlnOjc3Olx0ZGVwZW5kcyBvbiBNRU1PUllfSE9UUExVRyAjIGZvciBhZGRfbWVtb3J5KCkgYW5kIGZyaWVuZHNcbmRyaXZlcnMvZGF4L0tjb25maWctNzgtXHRoZWxwXG4tLVxuZHJpdmVycy9kYXgva21lbS5jLTI1LVxuZHJpdmVycy9kYXgva21lbS5jOjI2Oi8qIE1lbW9yeSByZXNvdXJjZSBuYW1lIHVzZWQgZm9yIGFkZF9tZW1vcnlfZHJpdmVyX21hbmFnZWQoKS4gKi9cbmRyaXZlcnMvZGF4L2ttZW0uYy0yNy1zdGF0aWMgY29uc3QgY2hhciAqa21lbV9uYW1lO1xuLS1cbmRyaXZlcnMvZGF4L2ttZW0uYz02OD1zdGF0aWMgaW50IGRldl9kYXhfa21lbV9wcm9iZShzdHJ1Y3QgZGV2X2RheCAqZGV2X2RheClcbi0tXG5kcml2ZXJzL2RheC9rbWVtLmMtMTYyLVx0XHQgKiBTZXQgZmxhZ3MgYXBwcm9wcmlhdGUgZm9yIFN5c3RlbSBSQU0uICBMZWF2ZSAuLi5fQlVTWSBjbGVhclxuZHJpdmVycy9kYXgva21lbS5jOjE2MzpcdFx0ICogc28gdGhhdCBhZGRfbWVtb3J5KCkgY2FuIGFkZCBhIGNoaWxkIHJlc291cmNlLiAgRG8gbm90XG5kcml2ZXJzL2RheC9rbWVtLmMtMTY0LVx0XHQgKiBpbmhlcml0IGZsYWdzIGZyb20gdGhlIHBhcmVudCBzaW5jZSBpdCBtYXkgc2V0IG5ldyBmbGFnc1xuZHJpdmVycy9kYXgva21lbS5jOjE2NTpcdFx0ICogdW5rbm93biB0byB1cyB0aGF0IHdpbGwgYnJlYWsgYWRkX21lbW9yeSgpIGJlbG93LlxuZHJpdmVycy9kYXgva21lbS5jLTE2Ni1cdFx0ICovXG4tLVxuZHJpdmVycy9kYXgva21lbS5jLTE3Ni1cdFx0ICovXG5kcml2ZXJzL2RheC9rbWVtLmM6MTc3Olx0XHRyYyA9IGFkZF9tZW1vcnlfZHJpdmVyX21hbmFnZWQoZGF0YS1cdTAwM2VtZ2lkLCByYW5nZS5zdGFydCxcbmRyaXZlcnMvZGF4L2ttZW0uYy0xNzgtXHRcdFx0XHRyYW5nZV9sZW4oXHUwMDI2cmFuZ2UpLCBrbWVtX25hbWUsIG1ocF9mbGFncyk7XG4tLVxuZHJpdmVycy9maXJtd2FyZS9lZmkvZWZpLWluaXQuYz0xNTk9c3RhdGljIF9faW5pdCB2b2lkIHJlc2VydmVfcmVnaW9ucyh2b2lkKVxuLS1cbmRyaXZlcnMvZmlybXdhcmUvZWZpL2VmaS1pbml0LmMtMjIwLVxuZHJpdmVycy9maXJtd2FyZS9lZmkvZWZpLWluaXQuYzoyMjE6XHRcdFx0ZWFybHlfaW5pdF9kdF9hZGRfbWVtb3J5X2FyY2gocGFkZHIsIHNpemUpO1xuZHJpdmVycy9maXJtd2FyZS9lZmkvZWZpLWluaXQuYy0yMjItXG4tLVxuZHJpdmVycy9maXJtd2FyZS9lZmkvbGlic3R1Yi9lZmlzdHViLmg9NDA1PXVuaW9uIGVmaV9keGVfc2VydmljZXNfdGFibGUge1xuLS1cbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIvZWZpc3R1Yi5oLTQwNy1cdFx0ZWZpX3RhYmxlX2hkcl90IGhkcjtcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIvZWZpc3R1Yi5oOjQwODpcdFx0dm9pZCAqYWRkX21lbW9yeV9zcGFjZTtcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIvZWZpc3R1Yi5oLTQwOS1cdFx0dm9pZCAqYWxsb2NhdGVfbWVtb3J5X3NwYWNlO1xuLS1cbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIvZWZpc3R1Yi5oLTQzMC1cdFx0ZWZpX3RhYmxlX2hkcl90IGhkcjtcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIvZWZpc3R1Yi5oOjQzMTpcdFx0dTMyIGFkZF9tZW1vcnlfc3BhY2U7XG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9saWJzdHViL2VmaXN0dWIuaC00MzItXHRcdHUzMiBhbGxvY2F0ZV9tZW1vcnlfc3BhY2U7XG4tLVxuZHJpdmVycy9maXJtd2FyZS9xY29tL3Fjb21fdHptZW0uYz0xODQ9c3RhdGljIHZvaWQgcWNvbV90em1lbV9jbGVhbnVwX2FyZWEoc3RydWN0IHFjb21fdHptZW1fYXJlYSAqYXJlYSlcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL3Fjb20vcWNvbV90em1lbS5jLTE5My1cbmRyaXZlcnMvZmlybXdhcmUvcWNvbS9xY29tX3R6bWVtLmM6MTk0OnN0YXRpYyBpbnQgcWNvbV90em1lbV9wb29sX2FkZF9tZW1vcnkoc3RydWN0IHFjb21fdHptZW1fcG9vbCAqcG9vbCxcbmRyaXZlcnMvZmlybXdhcmUvcWNvbS9xY29tX3R6bWVtLmMtMTk1LVx0XHRcdFx0ICAgICAgc2l6ZV90IHNpemUsIGdmcF90IGdmcClcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL3Fjb20vcWNvbV90em1lbS5jPTI0ND1xY29tX3R6bWVtX3Bvb2xfbmV3KGNvbnN0IHN0cnVjdCBxY29tX3R6bWVtX3Bvb2xfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9maXJtd2FyZS9xY29tL3Fjb21fdHptZW0uYy0yODEtXHRpZiAoY29uZmlnLVx1MDAzZWluaXRpYWxfc2l6ZSkge1xuZHJpdmVycy9maXJtd2FyZS9xY29tL3Fjb21fdHptZW0uYzoyODI6XHRcdHJldCA9IHFjb21fdHptZW1fcG9vbF9hZGRfbWVtb3J5KHBvb2wsIGNvbmZpZy1cdTAwM2Vpbml0aWFsX3NpemUsXG5kcml2ZXJzL2Zpcm13YXJlL3Fjb20vcWNvbV90em1lbS5jLTI4My1cdFx0XHRcdFx0XHQgR0ZQX0tFUk5FTCk7XG4tLVxuZHJpdmVycy9maXJtd2FyZS9xY29tL3Fjb21fdHptZW0uYz0zNzQ9c3RhdGljIGJvb2wgcWNvbV90em1lbV90cnlfZ3Jvd19wb29sKHN0cnVjdCBxY29tX3R6bWVtX3Bvb2wgKnBvb2wsXG4tLVxuZHJpdmVycy9maXJtd2FyZS9xY29tL3Fjb21fdHptZW0uYy0zOTEtXG5kcml2ZXJzL2Zpcm13YXJlL3Fjb20vcWNvbV90em1lbS5jOjM5MjpcdHJldHVybiAhcWNvbV90em1lbV9wb29sX2FkZF9tZW1vcnkocG9vbCwgcmVxdWVzdGVkLCBnZnApO1xuZHJpdmVycy9maXJtd2FyZS9xY29tL3Fjb21fdHptZW0uYy0zOTMtfVxuLS1cbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jPTcwNj1zdGF0aWMgdm9pZCBodl9tZW1faG90X2FkZCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIHNpemUsXG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtNzI4LVx0XHRuaWQgPSBtZW1vcnlfYWRkX3BoeXNhZGRyX3RvX25pZChQRk5fUEhZUyhzdGFydF9wZm4pKTtcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjcyOTpcdFx0cmV0ID0gYWRkX21lbW9yeShuaWQsIFBGTl9QSFlTKChzdGFydF9wZm4pKSxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTczMC1cdFx0XHRcdCBIQV9CWVRFU19JTl9DSFVOSywgTUhQX01FUkdFX1JFU09VUkNFKTtcbi0tXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYz0xNzAwPXN0YXRpYyBpbnQgaG90X2FkZF9lbmFibGVkKHZvaWQpXG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMTcwNi1cdCAqIERNX01FTV9IT1RfQUREX1JFUVVFU1QgZG9lc24mIzM5O3QgaGF2ZSB0aGUgTlVNQSBub2RlIGluZm9ybWF0aW9uIGZvclxuZHJpdmVycy9odi9odl9iYWxsb29uLmM6MTcwNzpcdCAqIGFkZF9tZW1vcnkoKS5cbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTE3MDgtXHQgKi9cbi0tXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYz0xOTM2PXN0YXRpYyBpbnQgYmFsbG9vbl9wcm9iZShzdHJ1Y3QgaHZfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMTk0Ny1cdCAqIEhvdC1hZGQgbXVzdCBvcGVyYXRlIGluIGNodW5rcyB0aGF0IGFyZSBvZiBzaXplIGVxdWFsIHRvIHRoZVxuZHJpdmVycy9odi9odl9iYWxsb29uLmM6MTk0ODpcdCAqIG1lbW9yeSBibG9jayBzaXplIGJlY2F1c2UgdGhhdCYjMzk7cyB3aGF0IHRoZSBjb3JlIGFkZF9tZW1vcnkoKVxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMTk0OS1cdCAqIGludGVyZmFjZSByZXF1aXJlcy4gVGhlIEh5cGVyLVYgaW50ZXJmYWNlIHJlcXVpcmVzIHRoYXQgdGhlIG1lbW9yeVxuLS1cbmRyaXZlcnMvb2YvZmR0LmM9MTAzNj1pbnQgX19pbml0IGVhcmx5X2luaXRfZHRfc2Nhbl9tZW1vcnkodm9pZClcbi0tXG5kcml2ZXJzL29mL2ZkdC5jLTEwNzQtXG5kcml2ZXJzL29mL2ZkdC5jOjEwNzU6XHRcdFx0ZWFybHlfaW5pdF9kdF9hZGRfbWVtb3J5X2FyY2goYmFzZSwgc2l6ZSk7XG5kcml2ZXJzL29mL2ZkdC5jLTEwNzYtXG4tLVxuZHJpdmVycy9vZi9mZHQuYz0xMDkwPWludCBfX2luaXQgZWFybHlfaW5pdF9kdF9zY2FuX2Nob3NlbihjaGFyICpjbWRsaW5lKVxuLS1cbmRyaXZlcnMvb2YvZmR0LmMtMTE1Ny1cbmRyaXZlcnMvb2YvZmR0LmM6MTE1ODp2b2lkIF9faW5pdCBfX3dlYWsgZWFybHlfaW5pdF9kdF9hZGRfbWVtb3J5X2FyY2godTY0IGJhc2UsIHU2NCBzaXplKVxuZHJpdmVycy9vZi9mZHQuYy0xMTU5LXtcbi0tXG5kcml2ZXJzL29mL2ZkdC5jPTEyMjc9dm9pZCBfX2luaXQgZWFybHlfaW5pdF9kdF9zY2FuX25vZGVzKHZvaWQpXG4tLVxuZHJpdmVycy9vZi9mZHQuYy0xMjM1LVxuZHJpdmVycy9vZi9mZHQuYzoxMjM2Olx0LyogU2V0dXAgbWVtb3J5LCBjYWxsaW5nIGVhcmx5X2luaXRfZHRfYWRkX21lbW9yeV9hcmNoICovXG5kcml2ZXJzL29mL2ZkdC5jLTEyMzctXHRlYXJseV9pbml0X2R0X3NjYW5fbWVtb3J5KCk7XG4tLVxuZHJpdmVycy9zMzkwL2NoYXIvc2NscF9tZW0uYz0xODk9c3RhdGljIHNzaXplX3Qgc2NscF9jb25maWdfbWVtX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9zMzkwL2NoYXIvc2NscF9tZW0uYy0yMjItXHRcdCAqIFNldCBlbnRpcmUgbWVtb3J5IGJsb2NrIENNTUEgc3RhdGUgdG8gbm9kYXQuIExhdGVyLCB3aGVuXG5kcml2ZXJzL3MzOTAvY2hhci9zY2xwX21lbS5jOjIyMzpcdFx0ICogcGFnZSB0YWJsZXMgcGFnZXMgYXJlIGFsbG9jYXRlZCB2aWEgX19hZGRfbWVtb3J5KCksIHRob3NlXG5kcml2ZXJzL3MzOTAvY2hhci9zY2xwX21lbS5jLTIyNC1cdFx0ICogcmVnaW9ucyBhcmUgbWFya2VkIF9fYXJjaF9zZXRfcGFnZV9kYXQoKS5cbi0tXG5kcml2ZXJzL3MzOTAvY2hhci9zY2xwX21lbS5jLTIyNi1cdFx0X19hcmNoX3NldF9wYWdlX25vZGF0KCh2b2lkICopX192YShhZGRyKSwgYmxvY2tfc2l6ZSBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVCk7XG5kcml2ZXJzL3MzOTAvY2hhci9zY2xwX21lbS5jOjIyNzpcdFx0cmMgPSBfX2FkZF9tZW1vcnkoMCwgYWRkciwgYmxvY2tfc2l6ZSxcbmRyaXZlcnMvczM5MC9jaGFyL3NjbHBfbWVtLmMtMjI4LVx0XHRcdFx0ICBzY2xwX21lbS1cdTAwM2VtZW1tYXBfb25fbWVtb3J5ID9cbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9Njc9ZW51bSB2aXJ0aW9fbWVtX3NibV9tYl9zdGF0ZSB7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTY5LVx0VklSVElPX01FTV9TQk1fTUJfVU5VU0VEID0gMCxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo3MDpcdC8qIChQYXJ0aWFsbHkpIHBsdWdnZWQsIG5vdCBhZGRlZCB0byBMaW51eC4gRXJyb3Igb24gYWRkX21lbW9yeSgpLiAqL1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTcxLVx0VklSVElPX01FTV9TQk1fTUJfUExVR0dFRCxcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9OTA9ZW51bSB2aXJ0aW9fbWVtX2JibV9iYl9zdGF0ZSB7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTkyLVx0VklSVElPX01FTV9CQk1fQkJfVU5VU0VEID0gMCxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo5MzpcdC8qIFBsdWdnZWQsIG5vdCBhZGRlZCB0byBMaW51eC4gRXJyb3Igb24gYWRkX21lbW9yeSgpLiAqL1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTk0LVx0VklSVElPX01FTV9CQk1fQkJfUExVR0dFRCxcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9MTAyPXN0cnVjdCB2aXJ0aW9fbWVtIHtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtMTQyLVx0ICogQ29weSBvZiBcJiMzNDtTeXN0ZW0gUkFNICh2aXJ0aW9fbWVtKVwmIzM0OyB0byBiZSB1c2VkIGZvclxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjE0MzpcdCAqIGFkZF9tZW1vcnlfZHJpdmVyX21hbmFnZWQoKS5cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy0xNDQtXHQgKi9cbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9NTg4PXN0YXRpYyBpbnQgdmlydGlvX21lbV9zYm1fc2Jfc3RhdGVzX3ByZXBhcmVfbmV4dF9tYihzdHJ1Y3QgdmlydGlvX21lbSAqdm0pXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTYxOS0gKi9cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo2MjA6c3RhdGljIGJvb2wgdmlydGlvX21lbV9jb3VsZF9hZGRfbWVtb3J5KHN0cnVjdCB2aXJ0aW9fbWVtICp2bSwgdWludDY0X3Qgc2l6ZSlcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy02MjEte1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy02MzUtICovXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6NjM2OnN0YXRpYyBpbnQgdmlydGlvX21lbV9hZGRfbWVtb3J5KHN0cnVjdCB2aXJ0aW9fbWVtICp2bSwgdWludDY0X3QgYWRkcixcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy02MzctXHRcdFx0XHQgdWludDY0X3Qgc2l6ZSlcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNjU1LVx0YXRvbWljNjRfYWRkKHNpemUsIFx1MDAyNnZtLVx1MDAzZW9mZmxpbmVfc2l6ZSk7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6NjU2Olx0cmMgPSBhZGRfbWVtb3J5X2RyaXZlcl9tYW5hZ2VkKHZtLVx1MDAzZW1naWQsIGFkZHIsIHNpemUsIHZtLVx1MDAzZXJlc291cmNlX25hbWUsXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNjU3LVx0XHRcdFx0ICAgICAgIE1IUF9NRVJHRV9SRVNPVVJDRSB8IE1IUF9OSURfSVNfTUdJRCk7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTY2OS0vKlxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjY3MDogKiBTZWUgdmlydGlvX21lbV9hZGRfbWVtb3J5KCk6IFRyeSBhZGRpbmcgYSBzaW5nbGUgTGludXggbWVtb3J5IGJsb2NrLlxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTY3MS0gKi9cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz02NzI9c3RhdGljIGludCB2aXJ0aW9fbWVtX3NibV9hZGRfbWIoc3RydWN0IHZpcnRpb19tZW0gKnZtLCB1bnNpZ25lZCBsb25nIG1iX2lkKVxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy02NzYtXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6Njc3Olx0cmV0dXJuIHZpcnRpb19tZW1fYWRkX21lbW9yeSh2bSwgYWRkciwgc2l6ZSk7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNjc4LX1cbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNjgwLS8qXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6NjgxOiAqIFNlZSB2aXJ0aW9fbWVtX2FkZF9tZW1vcnkoKTogVHJ5IGFkZGluZyBhIGJpZyBibG9jay5cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy02ODItICovXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9NjgzPXN0YXRpYyBpbnQgdmlydGlvX21lbV9iYm1fYWRkX2JiKHN0cnVjdCB2aXJ0aW9fbWVtICp2bSwgdW5zaWduZWQgbG9uZyBiYl9pZClcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNjg3LVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjY4ODpcdHJldHVybiB2aXJ0aW9fbWVtX2FkZF9tZW1vcnkodm0sIGFkZHIsIHNpemUpO1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTY4OS19XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jPTk3ND1zdGF0aWMgdm9pZCB2aXJ0aW9fbWVtX2JibV9ub3RpZnlfY2FuY2VsX29mZmxpbmUoc3RydWN0IHZpcnRpb19tZW0gKnZtLFxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy05ODUtLypcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo5ODY6ICogVGhpcyBjYWxsYmFjayB3aWxsIGVpdGhlciBiZSBjYWxsZWQgc3luY2hyb25vdXNseSBmcm9tIGFkZF9tZW1vcnkoKSBvclxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTk4Ny0gKiBhc3luY2hyb25vdXNseSAoZS5nLiwgdHJpZ2dlcmVkIHZpYSB1c2VyIHNwYWNlKS4gV2UgaGF2ZSB0byBiZSBjYXJlZnVsXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6OTg4OiAqIHdpdGggbG9ja2luZyB3aGVuIGNhbGxpbmcgYWRkX21lbW9yeSgpLlxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTk4OS0gKi9cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz05OTA9c3RhdGljIGludCB2aXJ0aW9fbWVtX21lbW9yeV9ub3RpZmllcl9jYihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLFxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy0xMDg3LVx0XHRpZiAoIWF0b21pY19yZWFkKFx1MDAyNnZtLVx1MDAzZXdxX2FjdGl2ZSkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6MTA4ODpcdFx0ICAgIHZpcnRpb19tZW1fY291bGRfYWRkX21lbW9yeSh2bSwgdm0tXHUwMDNlb2ZmbGluZV90aHJlc2hvbGQgLyAyKSlcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy0xMDg5LVx0XHRcdHZpcnRpb19tZW1fcmV0cnkodm0pO1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz0xNzYwPXN0YXRpYyBpbnQgdmlydGlvX21lbV9zYm1fcGx1Z19yZXF1ZXN0KHN0cnVjdCB2aXJ0aW9fbWVtICp2bSwgdWludDY0X3QgZGlmZilcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtMTc5My1cdHZpcnRpb19tZW1fc2JtX2Zvcl9lYWNoX21iKHZtLCBtYl9pZCwgVklSVElPX01FTV9TQk1fTUJfVU5VU0VEKSB7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6MTc5NDpcdFx0aWYgKCF2aXJ0aW9fbWVtX2NvdWxkX2FkZF9tZW1vcnkodm0sIG1lbW9yeV9ibG9ja19zaXplX2J5dGVzKCkpKVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTE3OTUtXHRcdFx0cmV0dXJuIC1FTk9TUEM7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTE4MDQtXHR3aGlsZSAobmJfc2IpIHtcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzoxODA1Olx0XHRpZiAoIXZpcnRpb19tZW1fY291bGRfYWRkX21lbW9yeSh2bSwgbWVtb3J5X2Jsb2NrX3NpemVfYnl0ZXMoKSkpXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtMTgwNi1cdFx0XHRyZXR1cm4gLUVOT1NQQztcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9MTg3OD1zdGF0aWMgaW50IHZpcnRpb19tZW1fYmJtX3BsdWdfcmVxdWVzdChzdHJ1Y3QgdmlydGlvX21lbSAqdm0sIHVpbnQ2NF90IGRpZmYpXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTE4ODgtXHR2aXJ0aW9fbWVtX2JibV9mb3JfZWFjaF9iYih2bSwgYmJfaWQsIFZJUlRJT19NRU1fQkJNX0JCX1VOVVNFRCkge1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjE4ODk6XHRcdGlmICghdmlydGlvX21lbV9jb3VsZF9hZGRfbWVtb3J5KHZtLCB2bS1cdTAwM2ViYm0uYmJfc2l6ZSkpXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtMTg5MC1cdFx0XHRyZXR1cm4gLUVOT1NQQztcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtMTkwMS1cdHdoaWxlIChuYl9iYikge1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjE5MDI6XHRcdGlmICghdmlydGlvX21lbV9jb3VsZF9hZGRfbWVtb3J5KHZtLCB2bS1cdTAwM2ViYm0uYmJfc2l6ZSkpXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtMTkwMy1cdFx0XHRyZXR1cm4gLUVOT1NQQztcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9Mjg3OT1zdGF0aWMgaW50IHZpcnRpb19tZW1fY3JlYXRlX3Jlc291cmNlKHN0cnVjdCB2aXJ0aW9fbWVtICp2bSlcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtMjkwMS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzoyOTAyOlx0LyogVGhlIG1lbW9yeSBpcyBub3QgYWN0dWFsbHkgYnVzeSAtIG1ha2UgYWRkX21lbW9yeSgpIHdvcmsuICovXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtMjkwMy1cdHZtLVx1MDAzZXBhcmVudF9yZXNvdXJjZS1cdTAwM2VmbGFncyBcdTAwMjY9IH5JT1JFU09VUkNFX0JVU1k7XG4tLVxuZHJpdmVycy94ZW4vYmFsbG9vbi5jPTI2ND1zdGF0aWMgZW51bSBicF9zdGF0ZSByZXNlcnZlX2FkZGl0aW9uYWxfbWVtb3J5KHZvaWQpXG4tLVxuZHJpdmVycy94ZW4vYmFsbG9vbi5jLTI5Ni0gICAgICAgIC8qXG5kcml2ZXJzL3hlbi9iYWxsb29uLmM6Mjk3OiAgICAgICAgICogYWRkX21lbW9yeSgpIHdpbGwgYnVpbGQgcGFnZSB0YWJsZXMgZm9yIHRoZSBuZXcgbWVtb3J5IHNvXG5kcml2ZXJzL3hlbi9iYWxsb29uLmMtMjk4LSAgICAgICAgICogdGhlIHAybSBtdXN0IGNvbnRhaW4gaW52YWxpZCBlbnRyaWVzIHNvIHRoZSBjb3JyZWN0XG4tLVxuZHJpdmVycy94ZW4vYmFsbG9vbi5jLTMxOC1cdC8qXG5kcml2ZXJzL3hlbi9iYWxsb29uLmM6MzE5Olx0ICogYWRkX21lbW9yeV9yZXNvdXJjZSgpIHdpbGwgY2FsbCBvbmxpbmVfcGFnZXMoKSB3aGljaCBpbiBpdHMgdHVyblxuZHJpdmVycy94ZW4vYmFsbG9vbi5jLTMyMC1cdCAqIHdpbGwgY2FsbCB4ZW5fb25saW5lX3BhZ2UoKSBjYWxsYmFjayBjYXVzaW5nIGRlYWRsb2NrIGlmIHdlIGRvbiYjMzk7dFxuLS1cbmRyaXZlcnMveGVuL2JhbGxvb24uYy0zMjQtXHRtdXRleF91bmxvY2soXHUwMDI2YmFsbG9vbl9tdXRleCk7XG5kcml2ZXJzL3hlbi9iYWxsb29uLmM6MzI1Olx0LyogYWRkX21lbW9yeV9yZXNvdXJjZSgpIHJlcXVpcmVzIHRoZSBkZXZpY2VfaG90cGx1ZyBsb2NrICovXG5kcml2ZXJzL3hlbi9iYWxsb29uLmMtMzI2LVx0bG9ja19kZXZpY2VfaG90cGx1ZygpO1xuZHJpdmVycy94ZW4vYmFsbG9vbi5jOjMyNzpcdHJjID0gYWRkX21lbW9yeV9yZXNvdXJjZShuaWQsIHJlc291cmNlLCBNSFBfTUVSR0VfUkVTT1VSQ0UpO1xuZHJpdmVycy94ZW4vYmFsbG9vbi5jLTMyOC1cdHVubG9ja19kZXZpY2VfaG90cGx1ZygpO1xuLS1cbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaD0zMj1zdHJ1Y3QgcGFnZSAqcGZuX3RvX29ubGluZV9wYWdlKHVuc2lnbmVkIGxvbmcgcGZuKTtcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0zMy1cbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDozNDovKiBGbGFncyBmb3IgYWRkX21lbW9yeSgpIGFuZCBmcmllbmRzIHRvIHNwZWNpZnkgbWVtb3J5IGhvdHBsdWcgZGV0YWlscy4gKi9cbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0zNS10eXBlZGVmIGludCBfX2JpdHdpc2UgbWhwX3Q7XG4tLVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTQwLSAqIEFsbG93IG1lcmdpbmcgb2YgdGhlIGFkZGVkIFN5c3RlbSBSQU0gcmVzb3VyY2Ugd2l0aCBhZGphY2VudCxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDo0MTogKiBtZXJnZWFibGUgcmVzb3VyY2VzLiBBZnRlciBhIHN1Y2Nlc3NmdWwgY2FsbCB0byBhZGRfbWVtb3J5X3Jlc291cmNlKClcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC00Mi0gKiB3aXRoIHRoaXMgZmxhZyBzZXQsIHRoZSByZXNvdXJjZSBwb2ludGVyIG11c3Qgbm8gbG9uZ2VyIGJlIHVzZWQgYXMgaXRcbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9MTIzPWV4dGVybiBpbnQgdHJ5X29ubGluZV9ub2RlKGludCBuaWQpO1xuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTEyNC1cbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDoxMjU6ZXh0ZXJuIGludCBhcmNoX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0xMjYtXHRcdFx0ICAgc3RydWN0IG1ocF9wYXJhbXMgKnBhcmFtcyk7XG4tLVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oPTI5Mj1leHRlcm4gaW50IF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KTtcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDoyOTM6ZXh0ZXJuIGludCBfX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSwgbWhwX3QgbWhwX2ZsYWdzKTtcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDoyOTQ6ZXh0ZXJuIGludCBhZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsIG1ocF90IG1ocF9mbGFncyk7XG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6Mjk1OmV4dGVybiBpbnQgYWRkX21lbW9yeV9yZXNvdXJjZShpbnQgbmlkLCBzdHJ1Y3QgcmVzb3VyY2UgKnJlc291cmNlLFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI5Ni1cdFx0XHQgICAgICAgbWhwX3QgbWhwX2ZsYWdzKTtcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDoyOTc6ZXh0ZXJuIGludCBhZGRfbWVtb3J5X2RyaXZlcl9tYW5hZ2VkKGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjk4LVx0XHRcdFx0ICAgICBjb25zdCBjaGFyICpyZXNvdXJjZV9uYW1lLFxuLS1cbmluY2x1ZGUvbGludXgvb2ZfZmR0Lmg9NzY9ZXh0ZXJuIHZvaWQgZWFybHlfaW5pdF9mZHRfcmVzZXJ2ZV9zZWxmKHZvaWQpO1xuaW5jbHVkZS9saW51eC9vZl9mZHQuaDo3NzpleHRlcm4gdm9pZCBlYXJseV9pbml0X2R0X2FkZF9tZW1vcnlfYXJjaCh1NjQgYmFzZSwgdTY0IHNpemUpO1xuaW5jbHVkZS9saW51eC9vZl9mZHQuaC03OC1leHRlcm4gdTY0IGR0X21lbV9uZXh0X2NlbGwoaW50IHMsIGNvbnN0IF9fYmUzMiAqKmNlbGxwKTtcbi0tXG5rZXJuZWwvcmVzb3VyY2UuYz0xNjAwPXN0YXRpYyBib29sIHN5c3RlbV9yYW1fcmVzb3VyY2VzX21lcmdlYWJsZShzdHJ1Y3QgcmVzb3VyY2UgKnIxLFxuLS1cbmtlcm5lbC9yZXNvdXJjZS5jLTE2MTQtICogVGhpcyBpbnRlcmZhY2UgaXMgaW50ZW5kZWQgZm9yIG1lbW9yeSBob3RwbHVnLCB3aGVyZWJ5IGxvdHMgb2YgY29udGlndW91c1xua2VybmVsL3Jlc291cmNlLmM6MTYxNTogKiBzeXN0ZW0gcmFtIHJlc291cmNlcyBhcmUgYWRkZWQgKGUuZy4sIHZpYSBhZGRfbWVtb3J5KigpKSBieSBhIGRyaXZlciwgYW5kXG5rZXJuZWwvcmVzb3VyY2UuYy0xNjE2LSAqIHRoZSBhY3R1YWwgcmVzb3VyY2UgYm91bmRhcmllcyBhcmUgbm90IG9mIGludGVyZXN0IChlLmcuLCBpdCBtaWdodCBiZVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmM9MzE5PXN0YXRpYyBpbnQgY2hlY2tfcGZuX3NwYW4odW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0zMjUtXHQgKiBvbmxpbmUsIHNvIHRoaXMgY2hlY2sgc2hvdWxkIG9ubHkgZmlyZSBmb3IgZGlyZWN0XG5tbS9tZW1vcnlfaG90cGx1Zy5jOjMyNjpcdCAqIGFyY2hfe2FkZCxyZW1vdmV9X21lbW9yeSgpIHVzZXJzIG91dHNpZGUgb2YgYWRkX21lbW9yeV9yZXNvdXJjZSgpLlxubW0vbWVtb3J5X2hvdHBsdWcuYy0zMjctXHQgKi9cbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTE0NDE9c3RhdGljIGludCBjcmVhdGVfYWx0bWFwc19hbmRfbWVtb3J5X2Jsb2NrcyhpbnQgbmlkLCBzdHJ1Y3QgbWVtb3J5X2dyb3VwICpncm91cCxcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE0NjUtXHRcdC8qIGNhbGwgYXJjaCYjMzk7cyBtZW1vcnkgaG90YWRkICovXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE0NjY6XHRcdHJldCA9IGFyY2hfYWRkX21lbW9yeShuaWQsIGN1cl9zdGFydCwgbWVtYmxvY2tfc2l6ZSwgXHUwMDI2cGFyYW1zKTtcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTQ2Ny1cdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMTQ5NC0gKi9cbm1tL21lbW9yeV9ob3RwbHVnLmM6MTQ5NTppbnQgYWRkX21lbW9yeV9yZXNvdXJjZShpbnQgbmlkLCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcywgbWhwX3QgbWhwX2ZsYWdzKVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNDk2LXtcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE1NTQtXHR9IGVsc2Uge1xubW0vbWVtb3J5X2hvdHBsdWcuYzoxNTU1Olx0XHRyZXQgPSBhcmNoX2FkZF9tZW1vcnkobmlkLCBzdGFydCwgc2l6ZSwgXHUwMDI2cGFyYW1zKTtcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTU1Ni1cdFx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MDEtXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE2MDI6LyogcmVxdWlyZXMgZGV2aWNlX2hvdHBsdWdfbG9jaywgc2VlIGFkZF9tZW1vcnlfcmVzb3VyY2UoKSAqL1xubW0vbWVtb3J5X2hvdHBsdWcuYzoxNjAzOmludCBfX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSwgbWhwX3QgbWhwX2ZsYWdzKVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjA0LXtcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MTEtXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE2MTI6XHRyZXQgPSBhZGRfbWVtb3J5X3Jlc291cmNlKG5pZCwgcmVzLCBtaHBfZmxhZ3MpO1xubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjEzLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MTctXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE2MTg6aW50IGFkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSwgbWhwX3QgbWhwX2ZsYWdzKVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjE5LXtcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MjItXHRsb2NrX2RldmljZV9ob3RwbHVnKCk7XG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE2MjM6XHRyYyA9IF9fYWRkX21lbW9yeShuaWQsIHN0YXJ0LCBzaXplLCBtaHBfZmxhZ3MpO1xubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjI0LVx0dW5sb2NrX2RldmljZV9ob3RwbHVnKCk7XG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjI3LX1cbm1tL21lbW9yeV9ob3RwbHVnLmM6MTYyODpFWFBPUlRfU1lNQk9MX0dQTChhZGRfbWVtb3J5KTtcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTYyOS1cbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2NTAtICovXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE2NTE6aW50IGFkZF9tZW1vcnlfZHJpdmVyX21hbmFnZWQoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTY1Mi1cdFx0XHQgICAgICBjb25zdCBjaGFyICpyZXNvdXJjZV9uYW1lLCBtaHBfdCBtaHBfZmxhZ3MpXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjY5LVxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNjcwOlx0cmMgPSBhZGRfbWVtb3J5X3Jlc291cmNlKG5pZCwgcmVzLCBtaHBfZmxhZ3MpO1xubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjcxLVx0aWYgKHJjIFx1MDAzYyAwKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMTY3Ny19XG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE2Nzg6RVhQT1JUX1NZTUJPTF9HUEwoYWRkX21lbW9yeV9kcml2ZXJfbWFuYWdlZCk7XG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2NzktXG4tLVxubW0vbWVtcmVtYXAuYz0xNDQ9c3RhdGljIGludCBwYWdlbWFwX3JhbmdlKHN0cnVjdCBkZXZfcGFnZW1hcCAqcGdtYXAsIHN0cnVjdCBtaHBfcGFyYW1zICpwYXJhbXMsXG4tLVxubW0vbWVtcmVtYXAuYy0yMDMtXHQgKiBvdmVyIHRoZSBkZXZpY2UgbWVtb3J5IGlzIHVuLWFjY2Vzc2libGUgdGh1cyB3ZSBkbyBub3Qgd2FudCB0b1xubW0vbWVtcmVtYXAuYzoyMDQ6XHQgKiBjcmVhdGUgYSBsaW5lYXIgbWFwcGluZyBmb3IgdGhlIG1lbW9yeSBsaWtlIGFyY2hfYWRkX21lbW9yeSgpXG5tbS9tZW1yZW1hcC5jLTIwNS1cdCAqIHdvdWxkIGRvLlxuLS1cbm1tL21lbXJlbWFwLmMtMjA4LVx0ICogdGhlIENQVSwgd2UgZG8gd2FudCB0aGUgbGluZWFyIG1hcHBpbmcgYW5kIHRodXMgdXNlXG5tbS9tZW1yZW1hcC5jOjIwOTpcdCAqIGFyY2hfYWRkX21lbW9yeSgpLlxubW0vbWVtcmVtYXAuYy0yMTAtXHQgKi9cbi0tXG5tbS9tZW1yZW1hcC5jLTIyMC1cbm1tL21lbXJlbWFwLmM6MjIxOlx0XHRlcnJvciA9IGFyY2hfYWRkX21lbW9yeShuaWQsIHJhbmdlLVx1MDAzZXN0YXJ0LCByYW5nZV9sZW4ocmFuZ2UpLFxubW0vbWVtcmVtYXAuYy0yMjItXHRcdFx0XHRcdHBhcmFtcyk7XG4tLVxubW0vbWVtcmVtYXAuYy0yMzUtXHRpZiAoZXJyb3IpXG5tbS9tZW1yZW1hcC5jOjIzNjpcdFx0Z290byBlcnJfYWRkX21lbW9yeTtcbm1tL21lbXJlbWFwLmMtMjM3LVxuLS1cbm1tL21lbXJlbWFwLmMtMjQ5LVxubW0vbWVtcmVtYXAuYzoyNTA6ZXJyX2FkZF9tZW1vcnk6XG5tbS9tZW1yZW1hcC5jLTI1MS1cdGlmICghaXNfcHJpdmF0ZSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc5MzUKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA1NzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNZW1vcnkgSG90cGx1ZyBQYXRjaCoqCgpPa2F5LCBzbyBgYWRkX21lbW9yeWAgaXMgdGhlIGZ1bmN0aW9uIHdlJiMzOTtyZSBpbnRlcmVzdGVkIGluLiBJdCYjMzk7cyB1c2VkIGJ5IHNldmVyYWwga2V5IGRyaXZlcnMg4oCTIGBodl9iYWxsb29uLmNgLCBgdmlydGlvX21lbS5jYCwgYGRheC9rbWVtLmNgLCBhbmQgYGFjcGlfbWVtaG90cGx1Zy5jYCDigJMgYW5kIGNydWNpYWxseSwgYWxzbyBieSB0aGUgc3lzZnMgcHJvYmUgc3RvcmUgaW4gYGJhc2UvbWVtb3J5LmNgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBiZWNhdXNlIGl0IG1lYW5zIHdlIGNhbiB0cmlnZ2VyIG1lbW9yeSBob3RwbHVnIGZyb20gdXNlcnNwYWNlIHZpYSBgL3N5cy9kZXZpY2VzL3N5c3RlbS9tZW1vcnkvcHJvYmVgLCBhc3N1bWluZyBgQ09ORklHX0FSQ0hfTUVNT1JZX1BST0JFYCBpcyBlbmFibGVkLiBXYWl0LCBgZHJpdmVycy9iYXNlL21lbW9yeS5jYCBhY3R1YWxseSBjYWxscyBgX19hZGRfbWVtb3J5YCB0aHJvdWdoIHRoZSBgcHJvYmVfc3RvcmVgIHBhdGgsIGFuZCBgdmlydGlvX21lbWAgYW5kIGBodl9iYWxsb29uYCBhbHNvIGRvIGl0LiBTbywgaXQmIzM5O3MgZGVmaW5pdGVseSBzb21ldGhpbmcgd2UgY2FuIHJlYWNoIGFuZCB0ZXN0IGVhc2lseSB3aXRoaW4gYSBWTSBlbnZpcm9ubWVudC4gRXhjZWxsZW50LgoKTm93LCBsZXQmIzM5O3MgZGl2ZSBiYWNrIGludG8gdGhpcyBwYXRjaC4gSSBzZWUgdGhlIG1haW4gY2hhbmdlIGlzIGhlcmU6CgpgYGBjCiAJLyogaW5pdCBub2RlJiMzOTtzIHpvbmVzIGFzIGVtcHR5IHpvbmVzLCB3ZSBkb24mIzM5O3QgaGF2ZSBhbnkgcHJlc2VudCBwYWdlcy4qLwotCWZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhwZ2RhdCk7CiYjNDM7CWlmIChmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcocGdkYXQpKQomIzQzOwkJcmV0dXJuIE5VTEw7CmBgYAoKQW5kIGFsc28sIHdpdGhpbiB0aGUgYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2AgZnVuY3Rpb246CgpgYGBjCi12b2lkIF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KQomIzQzO2ludCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCkKIHsKIAlpbnQgbmlkID0gcGdkYXQtJmd0O25vZGVfaWQ7CiAJZW51bSB6b25lX3R5cGUgejsKQEAgLTE1MzQsOCAmIzQzOzE1MzQsMTQgQEAgdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCkKIAogCXBnZGF0X2luaXRfaW50ZXJuYWxzKHBnZGF0KTsKIAotCWlmIChwZ2RhdC0mZ3Q7cGVyX2NwdV9ub2Rlc3RhdHMgPT0gJmFtcDtib290X25vZGVzdGF0cykKLQkJcGdkYXQtJmd0O3Blcl9jcHVfbm9kZXN0YXRzID0gYWxsb2NfcGVyY3B1KHN0cnVjdCBwZXJfY3B1X25vZGVzdGF0KTsKJiM0MzsJaWYgKHBnZGF0LSZndDtwZXJfY3B1X25vZGVzdGF0cyA9PSAmYW1wO2Jvb3Rfbm9kZXN0YXRzKSB7CiYjNDM7CQlzdHJ1Y3QgcGVyX2NwdV9ub2Rlc3RhdCBfX3BlcmNwdSAqcDsKJiM0MzsKJiM0MzsJCXAgPSBhbGxvY19wZXJjcHUoc3RydWN0IHBlcl9jcHVfbm9kZXN0YXQpOwomIzQzOwkJaWYgKCFwKQomIzQzOwkJCXJldHVybiAtRU5PTUVNOwomIzQzOwkJcGdkYXQtJmd0O3Blcl9jcHVfbm9kZXN0YXRzID0gcDsKJiM0MzsJfQpgYGAKClRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhlIHBhdGNoIG5vdyBoYW5kbGVzIHBvdGVudGlhbCBmYWlsdXJlcyBvZiB0aGUgYGFsbG9jX3BlcmNwdWAgY2FsbC4gVGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIGl0IGhhbmRsZXMgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3JzIGdyYWNlZnVsbHkuIFRoZSBwcmV2aW91cyB2ZXJzaW9uIG1pZ2h0IGhhdmUgc2ltcGx5IGNyYXNoZWQgaWYgYGFsbG9jX3BlcmNwdWAgZmFpbGVkLCB3aGljaCBjb3VsZCBsZWFkIHRvIGEgZGVuaWFsLW9mLXNlcnZpY2UgdnVsbmVyYWJpbGl0eS4KCk5vdywgd2hhdCBhcmUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zPyBJJiMzOTtsbCBuZWVkIGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgIGF0IGEgbWluaW11bS4gSSBzaG91bGQgY2hlY2sgZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXMgd2VsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX01FTU9SWV9IT1RQTFVHJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA3NDUgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vbWVtb3J5LWhvdHBsdWcucnN0PTI3Nj1UaGUgZm9sbG93aW5nIGZpbGVzIGFyZSBjdXJyZW50bHkgZGVmaW5lZDpcbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL21lbW9yeS1ob3RwbHVnLnJzdC0zMDAtXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL21lbW9yeS1ob3RwbHVnLnJzdDozMDE6XHRcdCAgICAgICBBdmFpbGFiaWxpdHkgZGVwZW5kcyBvbiB0aGUgQ09ORklHX01FTU9SWV9IT1RQTFVHIGtlcm5lbFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3QtMzAyLVx0XHQgICAgICAgY29uZmlndXJhdGlvbiBvcHRpb24uXG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0PTIxMD1HZW5lcmFsXG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTI0Ni0gIEEgbG9jayB0aGF0IHByb3RlY3RzIHRoZSBmaWVsZHMgZGVmaW5pbmcgdGhlIG5vZGUgZXh0ZW50cy4gT25seSBkZWZpbmVkIHdoZW5cbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdDoyNDc6ICBhdCBsZWFzdCBvbmUgb2YgYGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgYCBvclxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTI0OC0gIGBgQ09ORklHX0RFRkVSUkVEX1NUUlVDVF9QQUdFX0lOSVRgYCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGVuYWJsZWQuXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtMjQ5LSAgYGBwZ2RhdF9yZXNpemVfbG9jaygpYGAgYW5kIGBgcGdkYXRfcmVzaXplX3VubG9jaygpYGAgYXJlIHByb3ZpZGVkIHRvXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q6MjUwOiAgbWFuaXB1bGF0ZSBgYG5vZGVfc2l6ZV9sb2NrYGAgd2l0aG91dCBjaGVja2luZyBmb3IgYGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgYFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTI1MS0gIG9yIGBgQ09ORklHX0RFRkVSUkVEX1NUUlVDVF9QQUdFX0lOSVRgYC5cbi0tXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q9Mzc3PUdlbmVyYWxcbi0tXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtNDg4LSAgZWFybHkgYm9vdCwgZXhjbHVkaW5nIGhvdHBsdWdnZWQgbWVtb3J5LiBEZWZpbmVkIG9ubHkgd2hlblxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjQ4OTogIGBgQ09ORklHX01FTU9SWV9IT1RQTFVHYGAgaXMgZW5hYmxlZCBhbmQgaW5pdGlhbGl6ZWQgYnlcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC00OTAtICBgYGNhbGN1bGF0ZV9ub2RlX3RvdGFscGFnZXMoKWBgLlxuLS1cbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC01MDgtICB0aGUgbWFpbiBhbGxvY2F0b3IgcGF0aC4gSG93ZXZlciwgdGhlIHNlcWxvY2sgaXMgd3JpdHRlbiBxdWl0ZSBpbmZyZXF1ZW50bHkuXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q6NTA5OiAgRGVmaW5lZCBvbmx5IHdoZW4gYGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgYCBpcyBlbmFibGVkLlxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTUxMC1cbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9waHlzaWNhbF9tZW1vcnkucnN0PTIwNT1ub2RlX3pvbmVsaXN0c+W8leeUqOOAglxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtMjM0LWBgbm9kZV9zaXplX2xvY2tgYFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdDoyMzU65LiA5Liq5L+d5oqk5a6a5LmJ6IqC54K56IyD5Zu05a2X5q6155qE6ZSB44CC5LuF5Zyo5byA5ZCv5LqGIGBgQ09ORklHX01FTU9SWV9IT1RQTFVHYGAg5oiWXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTIzNi1gYENPTkZJR19ERUZFUlJFRF9TVFJVQ1RfUEFHRV9JTklUYGAg6YWN572u6YCJ6aG55Lit55qE5p+Q5LiA5Liq5pe25omN5a6a5LmJ44CC5o+QXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTIzNy3kvpvkuoYgYGBwZ2RhdF9yZXNpemVfbG9jaygpYGAg5ZKMIGBgcGdkYXRfcmVzaXplX3VubG9jaygpYGAg55So5p2l5pON5L2cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjIzODpgYG5vZGVfc2l6ZV9sb2NrYGDvvIzogIzml6DpnIDmo4Dmn6UgYGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgYCDmiJZcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtMjM5LWBgQ09ORklHX0RFRkVSUkVEX1NUUlVDVF9QQUdFX0lOSVRgYCDpgInpobnjgIJcbi0tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnPTEzMD1DT05GSUdfQkxLX0lOTElORV9FTkNSWVBUSU9OPXlcbi0tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTEzMi0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc6MTMzOkNPTkZJR19NRU1PUllfSE9UUExVRz15XG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTEzNC1DT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XG4tLVxuYXJjaC9hcm02NC9tbS9tbXUuYz0xNDI2PXZvaWQgX19pbml0IHBhZ2luZ19pbml0KHZvaWQpXG4tLVxuYXJjaC9hcm02NC9tbS9tbXUuYy0xNDM1LVxuYXJjaC9hcm02NC9tbS9tbXUuYzoxNDM2OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvYXJtNjQvbW0vbW11LmMtMTQzNy1zdGF0aWMgdm9pZCBmcmVlX2hvdHBsdWdfcGFnZV9yYW5nZShzdHJ1Y3QgcGFnZSAqcGFnZSwgc2l6ZV90IHNpemUsXG4tLVxuYXJjaC9hcm02NC9tbS9tbXUuYz0xNzg1PWludCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgaW50IG5vZGUsXG4tLVxuYXJjaC9hcm02NC9tbS9tbXUuYy0xNzk4LVxuYXJjaC9hcm02NC9tbS9tbXUuYzoxNzk5OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvYXJtNjQvbW0vbW11LmMtMTgwMC12b2lkIHZtZW1tYXBfZnJlZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5hcmNoL2FybTY0L21tL21tdS5jLTE4MDctfVxuYXJjaC9hcm02NC9tbS9tbXUuYzoxODA4OiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cbmFyY2gvYXJtNjQvbW0vbW11LmMtMTgwOS1cbi0tXG5hcmNoL2FybTY0L21tL21tdS5jPTE4OTI9aW50IHB1ZF9mcmVlX3BtZF9wYWdlKHB1ZF90ICpwdWRwLCB1bnNpZ25lZCBsb25nIGFkZHIpXG4tLVxuYXJjaC9hcm02NC9tbS9tbXUuYy0xOTQwLVxuYXJjaC9hcm02NC9tbS9tbXUuYzoxOTQxOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvYXJtNjQvbW0vbW11LmMtMTk0Mi1zdGF0aWMgdm9pZCBfX3JlbW92ZV9wZ2RfbWFwcGluZyhwZ2RfdCAqcGdkaXIsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHU2NCBzaXplKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc9OTc9Q09ORklHX1pTTUFMTE9DPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWctOTgtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnOjk5OkNPTkZJR19NRU1PUllfSE9UUExVRz15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTEwMC0jIENPTkZJR19NSFBfREVGQVVMVF9PTkxJTkVfVFlQRV9PRkZMSU5FIGlzIG5vdCBzZXRcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTExMj1DT05GSUdfWlNNQUxMT0M9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy0xMTMtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnOjExNDpDT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy0xMTUtIyBDT05GSUdfTUhQX0RFRkFVTFRfT05MSU5FX1RZUEVfT0ZGTElORSBpcyBub3Qgc2V0XG4tLVxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jPTY0PXZvaWQgX19pbml0IGZpeHJhbmdlX2luaXQodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIHBnZF90ICpwZ2RfYmFzZSlcbi0tXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmMtMTA1LVxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jOjEwNjojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmMtMTA3LWludCBhcmNoX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSwgc3RydWN0IG1ocF9wYXJhbXMgKnBhcmFtcylcbi0tXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmM9MTQzPWludCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmMtMTUyLVxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jOjE1MzojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmMtMTU0LXZvaWQgdm1lbW1hcF9mcmVlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcClcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZz01Nz1DT05GSUdfTlVNQT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZzo1ODpDT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctNTktQ09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZz04Nj1DT05GSUdfU0hVRkZMRV9QQUdFX0FMTE9DQVRPUj15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctODctIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc6ODg6Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZy04OS1DT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ3RhYmxlLmg9MTAxNT1zdGF0aWMgaW5saW5lIGludCBfX21lbWluaXQgdm1lbW1hcF9jcmVhdGVfbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LFxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGd0YWJsZS5oLTEwMjMtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUuaDoxMDI0OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGd0YWJsZS5oLTEwMjUtc3RhdGljIGlubGluZSB2b2lkIHZtZW1tYXBfcmVtb3ZlX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4Lmg9MzMzPXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyByYWRpeF9fZ2V0X3RyZWVfc2l6ZSh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaC0zNDgtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4Lmg6MzQ5OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaC0zNTAtaW50IHJhZGl4X19jcmVhdGVfc2VjdGlvbl9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaD0zNTI9aW50IHJhZGl4X19yZW1vdmVfc2VjdGlvbl9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTtcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaDozNTM6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9yYWRpeC5oLTM1NC1cbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbWFjaGRlcC5oPTI2PXN0cnVjdCBtYWNoZGVwX2NhbGxzIHtcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbWFjaGRlcC5oLTMzLSNlbmRpZlxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21hY2hkZXAuaDozNDojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbWFjaGRlcC5oLTM1LVx0dW5zaWduZWQgbG9uZ1x0KCptZW1vcnlfYmxvY2tfc2l6ZSkodm9pZCk7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21tem9uZS5oPTI4PWV4dGVybiBjcHVtYXNrX3Zhcl90IG5vZGVfdG9fY3B1bWFza19tYXBbXTtcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9tbXpvbmUuaDoyOTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbW16b25lLmgtMzAtZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbWF4X3Bmbjtcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3BhcnNlbWVtLmgtMTQtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3BhcnNlbWVtLmg6MTU6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NwYXJzZW1lbS5oLTE2LWV4dGVybiBpbnQgcmVtb3ZlX3NlY3Rpb25fbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NwYXJzZW1lbS5oPTIzPXN0YXRpYyBpbmxpbmUgaW50IGhvdF9hZGRfc2NuX3RvX25pZCh1bnNpZ25lZCBsb25nIHNjbl9hZGRyKVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9zcGFyc2VtZW0uaC0yNy0jZW5kaWYgLyogQ09ORklHX05VTUEgKi9cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9zcGFyc2VtZW0uaDoyODojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3BhcnNlbWVtLmgtMjktI2VuZGlmIC8qIF9fS0VSTkVMX18gKi9cbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL3NldHVwXzY0LmM9ODMyPXZvaWQgX19pbml0IHNldHVwX3Blcl9jcHVfYXJlYXModm9pZClcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL3NldHVwXzY0LmMtODgxLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zZXR1cF82NC5jOjg4MjojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3Bvd2VycGMva2VybmVsL3NldHVwXzY0LmMtODgzLXVuc2lnbmVkIGxvbmcgbWVtb3J5X2Jsb2NrX3NpemVfYnl0ZXModm9pZClcbi0tXG5hcmNoL3Bvd2VycGMva2V4ZWMvY3Jhc2guYz00NzI9dW5zaWduZWQgaW50IGFyY2hfY3Jhc2hfZ2V0X2VsZmNvcmVoZHJfc2l6ZSh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9rZXhlYy9jcmFzaC5jLTQ3Ny1cdHBoZHJfY250ID0gbnVtX3Bvc3NpYmxlX2NwdXMoKSAmIzQzOyAxO1xuYXJjaC9wb3dlcnBjL2tleGVjL2NyYXNoLmM6NDc4Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01FTU9SWV9IT1RQTFVHKSlcbmFyY2gvcG93ZXJwYy9rZXhlYy9jcmFzaC5jLTQ3OS1cdFx0cGhkcl9jbnQgJiM0Mzs9IENPTkZJR19DUkFTSF9NQVhfTUVNT1JZX1JBTkdFUztcbi0tXG5hcmNoL3Bvd2VycGMva2V4ZWMvZmlsZV9sb2FkXzY0LmM9Mzc3PXN0YXRpYyB1bnNpZ25lZCBpbnQga2R1bXBfZXh0cmFfZWxmY29yZWhkcl9zaXplKHN0cnVjdCBjcmFzaF9tZW0gKmNtZW0pXG5hcmNoL3Bvd2VycGMva2V4ZWMvZmlsZV9sb2FkXzY0LmMtMzc4LXtcbmFyY2gvcG93ZXJwYy9rZXhlYy9maWxlX2xvYWRfNjQuYzozNzk6I2lmIGRlZmluZWQoQ09ORklHX0NSQVNIX0hPVFBMVUcpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19NRU1PUllfSE9UUExVRylcbmFyY2gvcG93ZXJwYy9rZXhlYy9maWxlX2xvYWRfNjQuYy0zODAtXHR1bnNpZ25lZCBpbnQgZXh0cmFfc3ogPSAwO1xuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYz0xMDc9aW50IF9fbWVtaW5pdCBoYXNoX192bWVtbWFwX2NyZWF0ZV9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfcGd0YWJsZS5jLTEyOS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYzoxMzA6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfcGd0YWJsZS5jLTEzMS12b2lkIGhhc2hfX3ZtZW1tYXBfcmVtb3ZlX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jPTExOTY9c3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IGh0YWJfZ2V0X3RhYmxlX3NpemUodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTEyMTAtXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jOjEyMTE6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0xMjEyLXN0YXRpYyBpbnQgcmVzaXplX2hwdF9mb3JfaG90cGx1Zyh1bnNpZ25lZCBsb25nIG5ld19tZW1fc2l6ZSlcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jPTEyNjI9aW50IGhhc2hfX3JlbW92ZV9zZWN0aW9uX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0xMjc1LX1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM6MTI3NjojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTEyNzctXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYz0yNzU9bm90cmFjZSB2b2lkIG1tdV9jbGVhbnVwX2FsbCh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmMtMjg0LVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYzoyODU6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYy0yODYtaW50IF9fbWVtaW5pdCBjcmVhdGVfc2VjdGlvbl9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM9Mjk1PWludCBfX21lbWluaXQgcmVtb3ZlX3NlY3Rpb25fbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jLTMwMS19XG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jOjMwMjojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jLTMwMy1cbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jPTY3OT1ub3RyYWNlIHZvaWQgcmFkaXhfX21tdV9jbGVhbnVwX2FsbCh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtNjkxLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYzo2OTI6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYy02OTMtc3RhdGljIHZvaWQgZnJlZV9wdGVfdGFibGUocHRlX3QgKnB0ZV9zdGFydCwgcG1kX3QgKnBtZClcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jPTk0Nj1pbnQgX19tZW1pbml0IHJhZGl4X19yZW1vdmVfc2VjdGlvbl9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtOTUwLX1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM6OTUxOiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtOTUyLVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM9MTMwNj1pbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGVfY29tcG91bmRfcGFnZXModW5zaWduZWQgbG9uZyBzdGFydF9wZm4sXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYy0xNDA4LVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYzoxNDA5OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtMTQxMC12b2lkIF9fbWVtaW5pdCByYWRpeF9fdm1lbW1hcF9yZW1vdmVfbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIHBhZ2Vfc2l6ZSlcbi0tXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jPTI3Nj1pbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIGludCBub2RlLFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmMtMjg3LVxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYzoyODg6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYy0yODktc3RhdGljIHVuc2lnbmVkIGxvbmcgdm1lbW1hcF9saXN0X2ZyZWUodW5zaWduZWQgbG9uZyBzdGFydClcbi0tXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jPTQ2Nj1zdGF0aWMgaW50IF9faW5pdCBkdF9zY2FuX21tdV9waWRfd2lkdGgodW5zaWduZWQgbG9uZyBub2RlLFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmMtNDk4LSAqL1xuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYzo0OTk6I2lmbmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmMtNTAwLSNkZWZpbmUgREVGQVVMVF9NRU1PUllfQkxPQ0tfU0laRVx0U1pfMTZNXG4tLVxuYXJjaC9wb3dlcnBjL21tL21lbS5jPTUyPUVYUE9SVF9TWU1CT0woX19waHlzX21lbV9hY2Nlc3NfcHJvdCk7XG5hcmNoL3Bvd2VycGMvbW0vbWVtLmMtNTMtXG5hcmNoL3Bvd2VycGMvbW0vbWVtLmM6NTQ6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9wb3dlcnBjL21tL21lbS5jLTU1LXN0YXRpYyBERUZJTkVfTVVURVgobGluZWFyX21hcHBpbmdfbXV0ZXgpO1xuLS1cbmFyY2gvcG93ZXJwYy9tbS9tbXVfZGVjbC5oPTE3ND1zdGF0aWMgaW5saW5lIGJvb2wgZGVidWdfcGFnZWFsbG9jX2VuYWJsZWRfb3Jfa2ZlbmNlKHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL21tL21tdV9kZWNsLmgtMTc4LVxuYXJjaC9wb3dlcnBjL21tL21tdV9kZWNsLmg6MTc5OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9tbS9tbXVfZGVjbC5oLTE4MC1pbnQgY3JlYXRlX3NlY3Rpb25fbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL2Jvb2szZV9wZ3RhYmxlLmM9MjM9aW50IF9fbWVtaW5pdCB2bWVtbWFwX2NyZWF0ZV9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4tLVxuYXJjaC9wb3dlcnBjL21tL25vaGFzaC9ib29rM2VfcGd0YWJsZS5jLTQ2LVxuYXJjaC9wb3dlcnBjL21tL25vaGFzaC9ib29rM2VfcGd0YWJsZS5jOjQ3OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvYm9vazNlX3BndGFibGUuYy00OC12b2lkIHZtZW1tYXBfcmVtb3ZlX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5hcmNoL3Bvd2VycGMvbW0vbnVtYS5jPTEyNDE9ZWFybHlfcGFyYW0oXCYjMzQ7bnVtYVwmIzM0OywgZWFybHlfbnVtYSk7XG5hcmNoL3Bvd2VycGMvbW0vbnVtYS5jLTEyNDItXG5hcmNoL3Bvd2VycGMvbW0vbnVtYS5jOjEyNDM6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9wb3dlcnBjL21tL251bWEuYy0xMjQ0LS8qXG4tLVxuYXJjaC9wb3dlcnBjL21tL251bWEuYz0xMzY1PXU2NCBtZW1vcnlfaG90cGx1Z19tYXgodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvbW0vbnVtYS5jLTEzNjgtfVxuYXJjaC9wb3dlcnBjL21tL251bWEuYzoxMzY5OiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cbmFyY2gvcG93ZXJwYy9tbS9udW1hLmMtMTM3MC1cbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvc2V0dXAuYz00Mzc9c3RhdGljIHZvaWQgcG52X2tleGVjX2NwdV9kb3duKGludCBjcmFzaF9zaHV0ZG93biwgaW50IHNlY29uZGFyeSlcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvc2V0dXAuYy00ODItXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvc2V0dXAuYzo0ODM6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3NldHVwLmMtNDg0LXN0YXRpYyB1bnNpZ25lZCBsb25nIHBudl9tZW1vcnlfYmxvY2tfc2l6ZSh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9zZXR1cC5jPTU2OT1kZWZpbmVfbWFjaGluZShwb3dlcm52KSB7XG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3NldHVwLmMtNTg0LSNlbmRpZlxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3NldHVwLmM6NTg1OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9zZXR1cC5jLTU4Ni1cdC5tZW1vcnlfYmxvY2tfc2l6ZVx0PSBwbnZfbWVtb3J5X2Jsb2NrX3NpemUsXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL01ha2VmaWxlPTE3PW9iai0kKENPTkZJR19IT1RQTFVHX0NQVSlcdCYjNDM7PSBob3RwbHVnLWNwdS5vXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvTWFrZWZpbGU6MTg6b2JqLSQoQ09ORklHX01FTU9SWV9IT1RQTFVHKVx0JiM0Mzs9IGhvdHBsdWctbWVtb3J5Lm8gcG1lbS5vXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvTWFrZWZpbGUtMTktXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2lvbW11LmM9MTI4Nj1zdGF0aWMgcGh5c19hZGRyX3QgZGR3X21lbW9yeV9ob3RwbHVnX21heCh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9pb21tdS5jLTEyODktXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaW9tbXUuYzoxMjkwOiNpZiBkZWZpbmVkKENPTkZJR19OVU1BKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfTUVNT1JZX0hPVFBMVUcpXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaW9tbXUuYy0xMjkxLVx0bWF4X2FkZHIgPSBob3RfYWRkX2RyY29uZl9tZW1vcnlfbWF4KCk7XG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3BzZXJpZXMuaD02MD1pbnQgaGFuZGxlX2RscGFyX2Vycm9ybG9nKHN0cnVjdCBwc2VyaWVzX2hwX2Vycm9ybG9nICpocF9lcnJsb2cpO1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3BzZXJpZXMuaC02MS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9wc2VyaWVzLmg6NjI6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3BzZXJpZXMuaC02My1pbnQgZGxwYXJfbWVtb3J5KHN0cnVjdCBwc2VyaWVzX2hwX2Vycm9ybG9nICpocF9lbG9nKTtcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYz0xMTE5PXN0YXRpYyBpbnQgcFNlcmllc19wY2lfcHJvYmVfbW9kZShzdHJ1Y3QgcGNpX2J1cyAqYnVzKVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jLTExMjUtXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYzoxMTI2OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jLTExMjctc3RhdGljIHVuc2lnbmVkIGxvbmcgcHNlcmllc19tZW1vcnlfYmxvY2tfc2l6ZSh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jPTExNDA9ZGVmaW5lX21hY2hpbmUocHNlcmllcykge1xuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jLTExNjItI2VuZGlmXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYzoxMTYzOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jLTExNjQtXHQubWVtb3J5X2Jsb2NrX3NpemVcdD0gcHNlcmllc19tZW1vcnlfYmxvY2tfc2l6ZSxcbi0tXG5hcmNoL3Jpc2N2L21tL2luaXQuYz0xNDI5PXZvaWQgX19pbml0IHBndGFibGVfY2FjaGVfaW5pdCh2b2lkKVxuLS1cbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTE0MzMtXHRcdHByZWFsbG9jYXRlX3BnZF9wYWdlc19yYW5nZShNT0RVTEVTX1ZBRERSLCBNT0RVTEVTX0VORCwgXCYjMzQ7YnBmL21vZHVsZXNcJiMzNDspO1xuYXJjaC9yaXNjdi9tbS9pbml0LmM6MTQzNDpcdGlmIChJU19FTkFCTEVEKENPTkZJR19NRU1PUllfSE9UUExVRykpIHtcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTE0MzUtXHRcdHByZWFsbG9jYXRlX3BnZF9wYWdlc19yYW5nZShWTUVNTUFQX1NUQVJULCBWTUVNTUFQX0VORCwgXCYjMzQ7dm1lbW1hcFwmIzM0Oyk7XG4tLVxuYXJjaC9yaXNjdi9tbS9pbml0LmM9MTQ0Nz1zdHJ1Y3QgZXhlY21lbV9pbmZvIF9faW5pdCAqZXhlY21lbV9hcmNoX3NldHVwKHZvaWQpXG4tLVxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTQ3Ni1cbmFyY2gvcmlzY3YvbW0vaW5pdC5jOjE0Nzc6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTQ3OC1zdGF0aWMgdm9pZCBfX21lbWluaXQgZnJlZV9wdGVfdGFibGUocHRlX3QgKnB0ZV9zdGFydCwgcG1kX3QgKnBtZClcbi0tXG5hcmNoL3Jpc2N2L21tL2luaXQuYz0xNzQwPXZvaWQgX19yZWYgdm1lbW1hcF9mcmVlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcClcbi0tXG5hcmNoL3Jpc2N2L21tL2luaXQuYy0xNzQzLX1cbmFyY2gvcmlzY3YvbW0vaW5pdC5jOjE3NDQ6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz0xMDM9Q09ORklHX1NMVUJfU1RBVFM9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTEwNC0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxMDU6Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xMDYtQ09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz05Nj1DT05GSUdfU0xBQl9CVUNLRVRTPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy05Ny0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzo5ODpDT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTk5LUNPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXlcbi0tXG5hcmNoL3MzOTAvbW0vaW5pdC5jPTE4OD12b2lkIF9faW5pdCBzZXR1cF9wZXJfY3B1X2FyZWFzKHZvaWQpXG4tLVxuYXJjaC9zMzkwL21tL2luaXQuYy0yMDktXG5hcmNoL3MzOTAvbW0vaW5pdC5jOjIxMDojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3MzOTAvbW0vaW5pdC5jLTIxMS1cbi0tXG5hcmNoL3MzOTAvbW0vaW5pdC5jPTI4MT12b2lkIGFyY2hfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcbi0tXG5hcmNoL3MzOTAvbW0vaW5pdC5jLTI4OS19XG5hcmNoL3MzOTAvbW0vaW5pdC5jOjI5MDojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXG5hcmNoL3MzOTAvbW0vaW5pdC5jLTI5MS1cbi0tXG5hcmNoL3MzOTAvbW0vdm1lbS5jPTUxMz1pbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIGludCBub2RlLFxuLS1cbmFyY2gvczM5MC9tbS92bWVtLmMtNTI2LVxuYXJjaC9zMzkwL21tL3ZtZW0uYzo1Mjc6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9zMzkwL21tL3ZtZW0uYy01MjgtXG4tLVxuYXJjaC94ODYva2VybmVsL2NyYXNoLmM9NDE2PWludCBjcmFzaF9sb2FkX3NlZ21lbnRzKHN0cnVjdCBraW1hZ2UgKmltYWdlKVxuLS1cbmFyY2gveDg2L2tlcm5lbC9jcmFzaC5jLTQzNi1cdCAqL1xuYXJjaC94ODYva2VybmVsL2NyYXNoLmM6NDM3Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01FTU9SWV9IT1RQTFVHKSlcbmFyY2gveDg2L2tlcm5lbC9jcmFzaC5jLTQzOC1cdFx0cG51bSA9IDIgJiM0MzsgQ09ORklHX05SX0NQVVNfREVGQVVMVCAmIzQzOyBDT05GSUdfQ1JBU0hfTUFYX01FTU9SWV9SQU5HRVM7XG4tLVxuYXJjaC94ODYva2VybmVsL2NyYXNoLmM9NDk0PXVuc2lnbmVkIGludCBhcmNoX2NyYXNoX2dldF9lbGZjb3JlaGRyX3NpemUodm9pZClcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvY3Jhc2guYy00OTktXHRzeiA9IDIgJiM0MzsgQ09ORklHX05SX0NQVVNfREVGQVVMVDtcbmFyY2gveDg2L2tlcm5lbC9jcmFzaC5jOjUwMDpcdGlmIChJU19FTkFCTEVEKENPTkZJR19NRU1PUllfSE9UUExVRykpXG5hcmNoL3g4Ni9rZXJuZWwvY3Jhc2guYy01MDEtXHRcdHN6ICYjNDM7PSBDT05GSUdfQ1JBU0hfTUFYX01FTU9SWV9SQU5HRVM7XG4tLVxuYXJjaC94ODYva2VybmVsL2U4MjAuYz05MDk9X19pbml0IHN0YXRpYyBpbnQgcGFyc2VfbWVtb3B0KGNoYXIgKnApXG4tLVxuYXJjaC94ODYva2VybmVsL2U4MjAuYy05MzQtXG5hcmNoL3g4Ni9rZXJuZWwvZTgyMC5jOjkzNTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3g4Ni9rZXJuZWwvZTgyMC5jLTkzNi1cdG1heF9tZW1fc2l6ZSA9IG1lbV9zaXplO1xuLS1cbmFyY2gveDg2L2tlcm5lbC9lODIwLmM9MTI4OD1fX2luaXQgdm9pZCBlODIwX19tZW1ibG9ja19zZXR1cCh2b2lkKVxuLS1cbmFyY2gveDg2L2tlcm5lbC9lODIwLmMtMTI5Mi1cbmFyY2gveDg2L2tlcm5lbC9lODIwLmM6MTI5MzojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3g4Ni9rZXJuZWwvZTgyMC5jLTEyOTQtXHQvKlxuLS1cbmFyY2gveDg2L21tL2luaXRfNjQuYz04NTQ9c3RhdGljIHZvaWQgX19tZW1pbml0IHZtZW1tYXBfZmx1c2hfdW51c2VkX3BtZCh2b2lkKVxuLS1cbmFyY2gveDg2L21tL2luaXRfNjQuYy04NjUtXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM6ODY2OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gveDg2L21tL2luaXRfNjQuYy04NjctLyogUmV0dXJucyB0cnVlIGlmIHRoZSBQTUQgaXMgY29tcGxldGVseSB1bnVzZWQgYW5kIHRodXMgaXQgY2FuIGJlIGZyZWVkICovXG4tLVxuYXJjaC94ODYvbW0vaW5pdF82NC5jPTkxOD1zdGF0aWMgdm9pZCBfX21lbWluaXQgdm1lbW1hcF91c2VfbmV3X3N1Yl9wbWQodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG4tLVxuYXJjaC94ODYvbW0vaW5pdF82NC5jLTk0Ny0gKi9cbmFyY2gveDg2L21tL2luaXRfNjQuYzo5NDg6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC94ODYvbW0vaW5pdF82NC5jLTk0OS0vKlxuLS1cbmFyY2gveDg2L21tL2luaXRfNjQuYz0xMzAzPXZvaWQgX19yZWYgYXJjaF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxuLS1cbmFyY2gveDg2L21tL2luaXRfNjQuYy0xMzExLX1cbmFyY2gveDg2L21tL2luaXRfNjQuYzoxMzEyOiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cbmFyY2gveDg2L21tL2luaXRfNjQuYy0xMzEzLVxuLS1cbmFyY2gveDg2L3hlbi9zZXR1cC5jPTUzNz1zdGF0aWMgdm9pZCBfX2luaXQgeGVuX2FsaWduX2FuZF9hZGRfZTgyMF9yZWdpb24ocGh5c19hZGRyX3Qgc3RhcnQsXG4tLVxuYXJjaC94ODYveGVuL3NldHVwLmMtNTQ1LVx0XHRlbmQgXHUwMDI2PSB+KChwaHlzX2FkZHJfdClQQUdFX1NJWkUgLSAxKTtcbmFyY2gveDg2L3hlbi9zZXR1cC5jOjU0NjojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3g4Ni94ZW4vc2V0dXAuYy01NDctXHRcdC8qXG4tLVxuYXJjaC94ODYveGVuL3NldHVwLmM9Nzk0PWNoYXIgKiBfX2luaXQgeGVuX21lbW9yeV9zZXR1cCh2b2lkKVxuLS1cbmFyY2gveDg2L3hlbi9zZXR1cC5jLTgxMy1cbmFyY2gveDg2L3hlbi9zZXR1cC5jOjgxNDojaWYgZGVmaW5lZChDT05GSUdfTUVNT1JZX0hPVFBMVUcpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19YRU5fQkFMTE9PTilcbmFyY2gveDg2L3hlbi9zZXR1cC5jLTgxNS1cdHhlbl9zYXZlZF9tYXhfbWVtX3NpemUgPSBtYXhfbWVtX3NpemU7XG4tLVxuZHJpdmVycy9hY3BpL251bWEvc3JhdC5jPTM1OT1hY3BpX3BhcnNlX21lbW9yeV9hZmZpbml0eSh1bmlvbiBhY3BpX3N1YnRhYmxlX2hlYWRlcnMgKmhlYWRlcixcbi0tXG5kcml2ZXJzL2FjcGkvbnVtYS9zcmF0LmMtMzc5LVx0XHRyZXR1cm4gMDtcbmRyaXZlcnMvYWNwaS9udW1hL3NyYXQuYzozODA6XHRob3RwbHVnZ2FibGUgPSBJU19FTkFCTEVEKENPTkZJR19NRU1PUllfSE9UUExVRykgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL2FjcGkvbnVtYS9zcmF0LmMtMzgxLVx0XHQobWEtXHUwMDNlZmxhZ3MgXHUwMDI2IEFDUElfU1JBVF9NRU1fSE9UX1BMVUdHQUJMRSk7XG4tLVxuZHJpdmVycy9hY3BpL3BjaV9yb290LmM9NDI4PXN0YXRpYyB1MzIgY2FsY3VsYXRlX3N1cHBvcnQodm9pZClcbi0tXG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYy00NTEtICogQmFja2dyb3VuZCBvbiBob3RwbHVnIHN1cHBvcnQsIGFuZCBtYWtpbmcgaXQgZGVwZW5kIG9uIG9ubHlcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jOjQ1MjogKiBDT05GSUdfSE9UUExVR19QQ0lfUENJRSB2cy4gYWxzbyBjb25zaWRlcmluZyBDT05GSUdfTUVNT1JZX0hPVFBMVUc6XG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYy00NTMtICpcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jOjQ1NDogKiBDT05GSUdfQUNQSV9IT1RQTFVHX01FTU9SWSBkb2VzIGRlcGVuZCBvbiBDT05GSUdfTUVNT1JZX0hPVFBMVUcsIGJ1dFxuZHJpdmVycy9hY3BpL3BjaV9yb290LmMtNDU1LSAqIHRoZXJlIGlzIG5vIGV4aXN0aW5nIF9PU0MgZm9yIG1lbW9yeSBob3RwbHVnIHN1cHBvcnQuIFRoZSByZWFzb24gaXMgdGhhdFxuLS1cbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jLTQ3MC0gKiBub3Qgc3VwcG9ydCBibG9ja2luZyBob3RwbHVnLCBpcyB0byByZXF1aXJlIHRoZSBtZW1vcnkgZGV2aWNlIHRvIGJlXG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYzo0NzE6ICogZGlzYWJsZWQgYmVmb3JlIGhvdHBsdWcgaXMgYXR0ZW1wdGVkLiBXaGVuIENPTkZJR19NRU1PUllfSE9UUExVRyBpc1xuZHJpdmVycy9hY3BpL3BjaV9yb290LmMtNDcyLSAqIGRpc2FibGVkIHRoYXQgc3RlcCB3aWxsIGZhaWwgYW5kIHRoZSByZW1vdmUgYXR0ZW1wdCBjYW5jZWxsZWQgYnkgdGhlXG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYy00NzMtICogdXNlci4gSWYgdGhhdCBpcyBub3QgaG9ub3JlZCBhbmQgdGhlIGNhcmQgaXMgcmVtb3ZlZCBhbnl3YXkgdGhlbiBpdFxuZHJpdmVycy9hY3BpL3BjaV9yb290LmM6NDc0OiAqIGRvZXMgbm90IG1hdHRlciBpZiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgaXMgZW5hYmxlZCBvciBub3QsIGl0IHdpbGxcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jLTQ3NS0gKiBjYXVzZSBhIGNyYXNoIGFuZCBvdGhlciBiYWRuZXNzLlxuLS1cbmRyaXZlcnMvYmFzZS9NYWtlZmlsZT0xNT1vYmotJChDT05GSUdfTlVNQSlcdCYjNDM7PSBub2RlLm9cbmRyaXZlcnMvYmFzZS9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfTUVNT1JZX0hPVFBMVUcpICYjNDM7PSBtZW1vcnkub1xuZHJpdmVycy9iYXNlL01ha2VmaWxlLTE3LWlmZXEgKCQoQ09ORklHX1NZU0ZTKSx5KVxuLS1cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz0yMDc9aW50IG1lbW9yeV9ub3RpZnkoZW51bSBtZW1vcnlfYmxvY2tfc3RhdGUgc3RhdGUsIHZvaWQgKnYpXG4tLVxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTIxMS1cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYzoyMTI6I2lmIGRlZmluZWQoQ09ORklHX01FTU9SWV9GQUlMVVJFKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfTUVNT1JZX0hPVFBMVUcpXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtMjEzLXN0YXRpYyB1bnNpZ25lZCBsb25nIG1lbWJsa19ucl9wb2lzb24oc3RydWN0IG1lbW9yeV9ibG9jayAqbWVtKTtcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9MTE5Nj1pbnQgd2Fsa19keW5hbWljX21lbW9yeV9ncm91cHMoaW50IG5pZCwgd2Fsa19tZW1vcnlfZ3JvdXBzX2Z1bmNfdCBmdW5jLFxuLS1cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy0xMjE3LVxuZHJpdmVycy9iYXNlL21lbW9yeS5jOjEyMTg6I2lmIGRlZmluZWQoQ09ORklHX01FTU9SWV9GQUlMVVJFKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfTUVNT1JZX0hPVFBMVUcpXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtMTIxOS12b2lkIG1lbWJsa19ucl9wb2lzb25faW5jKHVuc2lnbmVkIGxvbmcgcGZuKVxuLS1cbmRyaXZlcnMvYmFzZS9ub2RlLmM9MTA5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpub2RlX2FjY2Vzc19ub2RlX2dyb3Vwc1tdID0ge1xuLS1cbmRyaXZlcnMvYmFzZS9ub2RlLmMtMTE0LVxuZHJpdmVycy9iYXNlL25vZGUuYzoxMTU6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuZHJpdmVycy9iYXNlL25vZGUuYy0xMTYtc3RhdGljIEJMT0NLSU5HX05PVElGSUVSX0hFQUQobm9kZV9jaGFpbik7XG4tLVxuZHJpdmVycy9iYXNlL25vZGUuYz03NjQ9aW50IHVucmVnaXN0ZXJfY3B1X3VuZGVyX25vZGUodW5zaWduZWQgaW50IGNwdSwgdW5zaWduZWQgaW50IG5pZClcbi0tXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jLTc4Mi1cbmRyaXZlcnMvYmFzZS9ub2RlLmM6NzgzOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmRyaXZlcnMvYmFzZS9ub2RlLmMtNzg0LXN0YXRpYyB2b2lkIGRvX3JlZ2lzdGVyX21lbW9yeV9ibG9ja191bmRlcl9ub2RlKGludCBuaWQsXG4tLVxuZHJpdmVycy9iYXNlL25vZGUuYz04NjQ9dm9pZCByZWdpc3Rlcl9tZW1vcnlfYmxvY2tzX3VuZGVyX25vZGVfaG90cGx1ZyhpbnQgbmlkLCB1bnNpZ25lZCBsb25nIHN0YXJ0X3Bmbixcbi0tXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jLTg3MC19XG5kcml2ZXJzL2Jhc2Uvbm9kZS5jOjg3MTojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jLTg3Mi1cbi0tXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYz01Nzk9c3RhdGljIHZvaWQgZGlzYWJsZV9wYWdlX3JlcG9ydGluZyh2b2lkKTtcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTU4MC1cbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjU4MTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy01ODItc3RhdGljIGlubGluZSBib29sIGhhc19wZm5faXNfYmFja2VkKHN0cnVjdCBodl9ob3RhZGRfc3RhdGUgKmhhcyxcbi0tXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYz05Njg9c3RhdGljIHZvaWQgaG90X2FkZF9yZXEoc3RydWN0IHdvcmtfc3RydWN0ICpkdW1teSlcbi0tXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy05NzAtXHRzdHJ1Y3QgZG1faG90X2FkZF9yZXNwb25zZSByZXNwO1xuZHJpdmVycy9odi9odl9iYWxsb29uLmM6OTcxOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTk3Mi1cdHVuc2lnbmVkIGxvbmcgcGdfc3RhcnQsIHBmbl9jbnQ7XG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtOTgwLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmM6OTgxOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTk4Mi1cdHBnX3N0YXJ0ID0gZG0tXHUwMDNlaGFfd3JrLmhhX3BhZ2VfcmFuZ2UuZmluZm8uc3RhcnRfcGFnZTtcbi0tXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYz0xOTM2PXN0YXRpYyBpbnQgYmFsbG9vbl9wcm9iZShzdHJ1Y3QgaHZfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMTk0NC1cbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjE5NDU6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMTk0Ni1cdC8qXG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMTk3NS1cbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjE5NzY6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMTk3Ny1cdHNldF9vbmxpbmVfcGFnZV9jYWxsYmFjayhcdTAwMjZodl9vbmxpbmVfcGFnZSk7XG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMjAwNy1jb25uZWN0X2Vycm9yOlxuZHJpdmVycy9odi9odl9iYWxsb29uLmM6MjAwODojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy0yMDA5LVx0dW5yZWdpc3Rlcl9tZW1vcnlfbm90aWZpZXIoXHUwMDI2aHZfbWVtb3J5X25iKTtcbi0tXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYz0yMDE1PXN0YXRpYyB2b2lkIGJhbGxvb25fcmVtb3ZlKHN0cnVjdCBodl9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy0yMDM4LVx0XHR2bWJ1c19jbG9zZShkZXYtXHUwMDNlY2hhbm5lbCk7XG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYzoyMDM5OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTIwNDAtXHRcdHVucmVnaXN0ZXJfbWVtb3J5X25vdGlmaWVyKFx1MDAyNmh2X21lbW9yeV9uYik7XG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmM9MjA3Nj1zdGF0aWMgaW50IGJhbGxvb25fcmVzdW1lKHN0cnVjdCBodl9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy0yMTAxLVx0ZGlzYWJsZV9wYWdlX3JlcG9ydGluZygpO1xuZHJpdmVycy9odi9odl9iYWxsb29uLmM6MjEwMjojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy0yMTAzLVx0dW5yZWdpc3Rlcl9tZW1vcnlfbm90aWZpZXIoXHUwMDI2aHZfbWVtb3J5X25iKTtcbi0tXG5kcml2ZXJzL3MzOTAvY2hhci9NYWtlZmlsZT0yMD1vYmoteSAmIzQzOz0gY3RybGNoYXIubyBrZXlib2FyZC5vIGRlZmtleW1hcC5vIHNjbHAubyBzY2xwX3J3Lm8gc2NscF9xdWllc2NlLm8gXFxcbi0tXG5kcml2ZXJzL3MzOTAvY2hhci9NYWtlZmlsZS0yMy1cbmRyaXZlcnMvczM5MC9jaGFyL01ha2VmaWxlOjI0Om9iai0kKENPTkZJR19NRU1PUllfSE9UUExVRykgJiM0Mzs9IHNjbHBfbWVtLm9cbmRyaXZlcnMvczM5MC9jaGFyL01ha2VmaWxlLTI1LW9iai0kKENPTkZJR19UTjMyNzApICYjNDM7PSByYXczMjcwLm8gY29uMzI3MC5vXG4tLVxuZHJpdmVycy94ZW4veGVuLWJhbGxvb24uYy01My1cbmRyaXZlcnMveGVuL3hlbi1iYWxsb29uLmM6NTQ6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuZHJpdmVycy94ZW4veGVuLWJhbGxvb24uYy01NS11NjQgeGVuX3NhdmVkX21heF9tZW1fc2l6ZSA9IDA7XG4tLVxuZHJpdmVycy94ZW4veGVuLWJhbGxvb24uYz02Mz1zdGF0aWMgdm9pZCB3YXRjaF90YXJnZXQoc3RydWN0IHhlbmJ1c193YXRjaCAqd2F0Y2gsXG4tLVxuZHJpdmVycy94ZW4veGVuLWJhbGxvb24uYy03MC1cbmRyaXZlcnMveGVuL3hlbi1iYWxsb29uLmM6NzE6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuZHJpdmVycy94ZW4veGVuLWJhbGxvb24uYy03Mi1cdC8qIFRoZSBiYWxsb29uIGRyaXZlciB3aWxsIHRha2UgY2FyZSBvZiBhZGRpbmcgbWVtb3J5IG5vdy4gKi9cbi0tXG5pbmNsdWRlL2xpbnV4L2luaXQuaC04MC1cbmluY2x1ZGUvbGludXgvaW5pdC5oOjgxOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmluY2x1ZGUvbGludXgvaW5pdC5oLTgyLSNkZWZpbmUgX19tZW1pbml0XG4tLVxuaW5jbHVkZS9saW51eC9pb3BvcnQuaD0zOTQ9ZXh0ZXJuIHZvaWQgcmVsZWFzZV9tZW1fcmVnaW9uX2FkanVzdGFibGUocmVzb3VyY2Vfc2l6ZV90LCByZXNvdXJjZV9zaXplX3QpO1xuaW5jbHVkZS9saW51eC9pb3BvcnQuaC0zOTUtI2VuZGlmXG5pbmNsdWRlL2xpbnV4L2lvcG9ydC5oOjM5NjojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5pbmNsdWRlL2xpbnV4L2lvcG9ydC5oLTM5Ny1leHRlcm4gdm9pZCBtZXJnZV9zeXN0ZW1fcmFtX3Jlc291cmNlKHN0cnVjdCByZXNvdXJjZSAqcmVzKTtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oPTc4PXN0cnVjdCBtZW1vcnlfYmxvY2sge1xuLS1cbmluY2x1ZGUvbGludXgvbWVtb3J5LmgtOTMtXHRzdHJ1Y3QgbGlzdF9oZWFkIGdyb3VwX25leHQ7XHQvKiBuZXh0IGJsb2NrIGluc2lkZSBtZW1vcnkgZ3JvdXAgKi9cbmluY2x1ZGUvbGludXgvbWVtb3J5Lmg6OTQ6I2lmIGRlZmluZWQoQ09ORklHX01FTU9SWV9GQUlMVVJFKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfTUVNT1JZX0hPVFBMVUcpXG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oLTk1LVx0YXRvbWljX2xvbmdfdCBucl9od3BvaXNvbjtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oPTEwOT1zdHJ1Y3QgbWVtX3NlY3Rpb247XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk3NjQKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA3NTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIE1lbW9yeSBIb3RwbHVnIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIG1lbW9yeSBob3RwbHVnIHBhdGNoIHRvIGFuYWx5emUuIFRoZSBrZXkgY29uZmlndXJhdGlvbiBoZXJlIGlzIGRlZmluaXRlbHkgYENPTkZJR19NRU1PUllfSE9UUExVR2AuIElzIHRoZXJlIGFueXRoaW5nIGVsc2UgY3JpdGljYWw/IExldCYjMzk7cyBzZWUuLi4KClJpZ2h0LCB0aGUgY29yZSBtb2RpZmljYXRpb24gaXMgaW4gYG1tL21tX2luaXQuY2AsIHNwZWNpZmljYWxseSB3aXRoaW4gYW4gYCNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdgIGJsb2NrLiBTbywgYENPTkZJR19NRU1PUllfSE9UUExVR2AgaXMgdGhlICpzaW5lIHF1YSBub24qIGhlcmUuIFRoYXQmIzM5O3MgYSBnaXZlbi4KCk5vdywgd2hpY2ggZnVuY3Rpb25zIGFyZSBhdCBwbGF5PyBUaGUgcGF0Y2ggbW9kaWZpZXMgYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2AuIFRoYXTigJlzIHRoZSBtb3N0IGltbWVkaWF0ZWx5IHJlbGV2YW50IGZ1bmN0aW9uLiAgYGhvdGFkZF9pbml0X3BnZGF0YCB1c2VzIGl0cyByZXR1cm4gdmFsdWUuIEFuZCBgX190cnlfb25saW5lX25vZGVgIGNhbGxzIGBob3RhZGRfaW5pdF9wZ2RhdGAuIFRoZSB1c2VyLWxldmVsIGVudHJ5IHBvaW50IGlzIGB0cnlfb25saW5lX25vZGVgLCBhbmQgYGFkZF9tZW1vcnlfcmVzb3VyY2VgIGFsc28gY2FsbHMgYF9fdHJ5X29ubGluZV9ub2RlYCwgd2hpY2gsIGluIHR1cm4gaXMgY2FsbGVkIGJ5IGBhZGRfbWVtb3J5YC4KCk9rYXksIHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgbW9kaWZpZWQgb3IgcmVsYXRlZCBhcmU6Ci0gYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2AKLSBgaG90YWRkX2luaXRfcGdkYXRgCi0gYF9fdHJ5X29ubGluZV9ub2RlYAotIGB0cnlfb25saW5lX25vZGVgCi0gYGFkZF9tZW1vcnlfcmVzb3VyY2VgCi0gYGFkZF9tZW1vcnlgCgpXYWl0LiBMZXQgbWUgcmV0cmFjZSB0aGUgY2FsbCBncmFwaDogYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2AgaXMgY2FsbGVkIGZyb20gYGhvdGFkZF9pbml0X3BnZGF0YCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYF9fdHJ5X29ubGluZV9ub2RlYCwgd2hpY2ggaXMgY2FsbGVkIGJ5IGB0cnlfb25saW5lX25vZGVgIGFuZCBgYWRkX21lbW9yeV9yZXNvdXJjZWAuIFNvIEkgY2FuIHByb2JhYmx5IGVsaW1pbmF0ZSBgdHJ5X29ubGluZV9ub2RlYCwgYGFkZF9tZW1vcnlfcmVzb3VyY2VgIGFuZCBgYWRkX21lbW9yeWAsIGFuZCBmb2N1cyBvbiBgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnYCwgYGhvdGFkZF9pbml0X3BnZGF0YCBhbmQgYF9fdHJ5X29ubGluZV9ub2RlYC4KCkxldCYjMzk7cyBxdWlja2x5IGNvbmZpcm0gdGhhdCBgQ09ORklHX01FTU9SWV9IT1RQTFVHYCBpcyB0aGUgb25seSBlc3NlbnRpYWwgY29uZmlnIGhlcmUuIFllcywgdGhlIHBhdGNoIGlzIGVudGlyZWx5IHdyYXBwZWQgYnkgdGhhdC4KCk5vdywgY2FuIHdlIHRyaWdnZXIgYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2A/IFllcywgd2UgY2FuIHRyaWdnZXIgbWVtb3J5IGhvdHBsdWcgdmlhIHN5c2ZzIG9yIHdpdGggZHJpdmVycyBsaWtlIGB2aXJ0aW9fbWVtYCBvciBgaHZfYmFsbG9vbmAuIFRoZSByZWFsIGNydXggb2YgdGhpcyBjaGFuZ2UgaXMgaG93IGBhbGxvY19wZXJjcHVgIGZhaWx1cmVzIGFyZSBoYW5kbGVkLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZTogaWYgYGFsbG9jX3BlcmNwdWAgZmFpbHMsIGl0IG5vdyByZXR1cm5zIGAtRU5PTUVNYCwgYW5kIHRoYXQgZXJyb3IgaXMgcHJvcGFnYXRlZCB1cCB0aHJvdWdoIHRoZSBjYWxsIGNoYWlu4oCUdWx0aW1hdGVseSwgYGhvdGFkZF9pbml0X3BnZGF0YCByZXR1cm5zIGBOVUxMYC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQ7IGl0IHByZXZlbnRzIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIG90aGVyIG5hc3R5IGNvbnNlcXVlbmNlcyBpZiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlscyBkdXJpbmcgYSBob3RwbHVnIG9wZXJhdGlvbi4KCioqRGVmaW5pdGVseSBmdXp6YWJsZS4qKiBTcGVjaWZpY2FsbHksIHNpbmNlIGBhbGxvY19wZXJjcHVgIGZhaWxpbmcgaXMgdGhlIGtleSBjaGFuZ2UsIGFuZCBpdCBjYW4gZmFpbCB1bmRlciBtZW1vcnkgcHJlc3N1cmUuIEkgY2FuIHRhcmdldCBtZW1vcnkgcHJlc3N1cmUgdG8gdHJpZ2dlciB0aGF0IGVycm9yIHBhdGguCgpMZXQmIzM5O3Mgbm90ZSBkb3duIHRoZSByZXN1bHRzOgoKKiAgICoqV29ydGhGdXp6aW5nOioqIGB0cnVlYAoqICAgKipFbmFibGVDb25maWdzOioqIGBbJiMzNDtNRU1PUllfSE9UUExVRyYjMzQ7XWAKKiAgICoqRm9jdXNTeW1ib2xzOioqIGBbJiMzNDtmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcmIzM0OywgJiMzNDtob3RhZGRfaW5pdF9wZ2RhdCYjMzQ7LCAmIzM0O19fdHJ5X29ubGluZV9ub2RlJiMzNDtdYAoqICAgKipSZWFzb25pbmc6KiogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgbWVtb3J5IGhvdHBsdWcgaW5pdGlhbGl6YXRpb24gY29kZSB0byBoYW5kbGUgYGFsbG9jX3BlcmNwdWAgZmFpbHVyZXMsIHJldHVybmluZyBgLUVOT01FTWAgYW5kIHByb3BhZ2F0aW5nIHRoZSBlcnJvciB1cCB0byBgaG90YWRkX2luaXRfcGdkYXRgLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgbWVtb3J5IGhvdHBsdWcgb3BlcmF0aW9ucyAoZS5nLiwgc3lzZnMsIHZpcnRpb19tZW0pIGFuZCByZXByZXNlbnRzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gZXJyb3IgaGFuZGxpbmcuJiMzNDsKCldhaXQsIG9uZSBtb3JlIHRoaW5nLiBJIHNob3VsZCBjaGVjayBpZiB0aGVyZSBhcmUgb3RoZXIgdXNlZnVsIGNvbmZpZ3MuIGBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRWAgd291bGQgYmUgZ29vZCB0byBoYXZlLCB0aG91Z2ggaXQmIzM5O3Mgbm90IHN0cmljdGx5ICpyZXF1aXJlZCogZm9yIGhvdC1hZGQsIGJ1dCBpdCYjMzk7cyBnb29kIHRvIGhhdmUuICBBbmQgd2hhdCBhYm91dCBgQ09ORklHX0FSQ0hfTUVNT1JZX1BST0JFYD8gIFRoYXQgcHJvdmlkZXMgYC9zeXMvZGV2aWNlcy9zeXN0ZW0vbWVtb3J5L3Byb2JlYCwgd2hpY2ggZW5hYmxlcyB1cyB0byB0cmlnZ2VyIG1lbW9yeSBob3RwbHVnIHZpYSBzeXNmcy4gVGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGxvb2tpbmcgaW50by4gTGV0IG1lIGNoZWNrIGlmIHRoYXQgaXMgYXZhaWxhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfQVJDSF9NRU1PUllfUFJPQkUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3Q9Mjc2PVRoZSBmb2xsb3dpbmcgZmlsZXMgYXJlIGN1cnJlbnRseSBkZWZpbmVkOlxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vbWVtb3J5LWhvdHBsdWcucnN0LTI5MC1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vbWVtb3J5LWhvdHBsdWcucnN0OjI5MTpcdFx0ICAgICAgIEF2YWlsYWJpbGl0eSBkZXBlbmRzIG9uIHRoZSBDT05GSUdfQVJDSF9NRU1PUllfUFJPQkVcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vbWVtb3J5LWhvdHBsdWcucnN0LTI5Mi1cdFx0ICAgICAgIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbi5cbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9NTUzPXN0YXRpYyBERVZJQ0VfQVRUUl9STyhjcmFzaF9ob3RwbHVnKTtcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtNTYxLSAqL1xuZHJpdmVycy9iYXNlL21lbW9yeS5jOjU2MjojaWZkZWYgQ09ORklHX0FSQ0hfTUVNT1JZX1BST0JFXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtNTYzLXN0YXRpYyBzc2l6ZV90IHByb2JlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9iYXNlL21lbW9yeS5jPTkxMT1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqbWVtb3J5X3Jvb3RfYXR0cnNbXSA9IHtcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYzo5MTI6I2lmZGVmIENPTkZJR19BUkNIX01FTU9SWV9QUk9CRVxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTkxMy1cdFx1MDAyNmRldl9hdHRyX3Byb2JlLmF0dHIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNzIzCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRW5hYmxpbmcgTWVtb3J5IEhvdHBsdWcgZnJvbSBVc2Vyc3BhY2UqKgoKT2theSwgc28gYENPTkZJR19BUkNIX01FTU9SWV9QUk9CRWAgaXMgZXhhY3RseSB3aGF0IEkgbmVlZCB0byBlbmFibGUgbWVtb3J5IGhvdHBsdWcgZnVuY3Rpb25hbGl0eSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2Ug4oCTIHRoYXQmIzM5O3MgYSBjbGV2ZXIgaW1wbGVtZW50YXRpb24hIEl0JiMzOTtzIGNsZWFyIHRoYXQgaXQgb2ZmZXJzIGEgc2lnbmlmaWNhbnQgYWR2YW50YWdlIGluIHRlcm1zIG9mIGZsZXhpYmlsaXR5IGFuZCBjb250cm9sLiBSaWdodCwgbGV0JiMzOTtzIGdldCBgQVJDSF9NRU1PUllfUFJPQkVgIGFkZGVkIHRvIEVuYWJsZUNvbmZpZ3MuIFRoYXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgc3RlcC4KCk5vdywgYmVmb3JlIEkgY29tbWl0IHRvIGFueXRoaW5nLCBJIHNob3VsZCBkb3VibGUtY2hlY2sgYW5kIGNvbmZpcm0gdGhhdCBgQVJDSF9NRU1PUllfUFJPQkVgIGlzIGluZGVlZCBhIHNlbGVjdGFibGUgb3B0aW9uLiBJIG5lZWQgdG8gZW5zdXJlIGl0IGludGVncmF0ZXMgc2VhbWxlc3NseSB3aXRoIHRoZSBleGlzdGluZyBjb25maWd1cmF0aW9uIHN0cnVjdHVyZSBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSB1bmZvcmVzZWVuIGlzc3Vlcy4gVGltZSB0byBkaWcgaW50byB0aGUgZGV0YWlscyBhbmQgbWFrZSBjZXJ0YWluIHRoaXMgd2lsbCB3b3JrIGFzIGV4cGVjdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVJDSF9NRU1PUllfUFJPQkUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvS2NvbmZpZz03NzU9Y29uZmlnIEFSQ0hfU1BBUlNFTUVNX0VOQUJMRVxuLS1cbmFyY2gvbG9vbmdhcmNoL0tjb25maWctNzgzLVxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZzo3ODQ6Y29uZmlnIEFSQ0hfTUVNT1JZX1BST0JFXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnLTc4NS1cdGRlZl9ib29sIHlcbi0tXG5hcmNoL3Bvd2VycGMvS2NvbmZpZz04MDM9Y29uZmlnIElMTEVHQUxfUE9JTlRFUl9WQUxVRVxuLS1cbmFyY2gvcG93ZXJwYy9LY29uZmlnLTgwOS1cbmFyY2gvcG93ZXJwYy9LY29uZmlnOjgxMDpjb25maWcgQVJDSF9NRU1PUllfUFJPQkVcbmFyY2gvcG93ZXJwYy9LY29uZmlnLTgxMS1cdGRlZl9ib29sIHlcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTE1NjU9Y29uZmlnIEFSQ0hfU0VMRUNUX01FTU9SWV9NT0RFTFxuLS1cbmFyY2gveDg2L0tjb25maWctMTU2OC1cbmFyY2gveDg2L0tjb25maWc6MTU2OTpjb25maWcgQVJDSF9NRU1PUllfUFJPQkVcbmFyY2gveDg2L0tjb25maWctMTU3MC1cdGJvb2wgXCYjMzQ7RW5hYmxlIHN5c2ZzIG1lbW9yeS9wcm9iZSBpbnRlcmZhY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIyMTYKCQkJCQkJCW91dHB1dDogMTQ3CgkJCQkJCQl0aG91Z2h0czogMzc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgVGhpcyBNZW1vcnkgSG90cGx1ZyBQYXRjaCoqCgpPa2F5LCB5ZXMsIHRoaXMgcGF0Y2ggd2FycmFudHMgY2xvc2VyIGV4YW1pbmF0aW9uLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O3ZlIGdvdCB0byByZXZpZXcgdGhlIHJlbGV2YW50IEZvY3VzU3ltYm9scyB0byBnZXQgYSBjbGVhciBwaWN0dXJlLiBBbHJpZ2h0LCBsZXQmIzM5O3Mgc3RhcnQgd2l0aCBgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnYCwgYGhvdGFkZF9pbml0X3BnZGF0YCwgYW5kIGBfX3RyeV9vbmxpbmVfbm9kZWAuIFBlcmZlY3QsIHRoYXQgc2hvdWxkIGJlIGVub3VnaCB0byBjYXB0dXJlIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2VzLiBJIGRvbiYjMzk7dCBuZWVkIGBvbmxpbmVfcGFnZXNgIGJlY2F1c2UgdGhlIHBhdGNoIGlzIHdpdGhpbiB0aGUgbWVtb3J5ICphZGRpbmcqIGZ1bmN0aW9uYWxpdHksIHNwZWNpZmljYWxseSB3aXRoaW4gYGhvdGFkZF9pbml0X3BnZGF0YC4KCk5vdywgbGV0JiMzOTtzIGRvIGEgZmluYWwgY2hlY2sgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nLiBUaGUgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2AgdG8gcmV0dXJuIGFuIGludGVnZXIgYW5kIG1hbmFnZSBzY2VuYXJpb3Mgd2hlcmUgYGFsbG9jX3BlcmNwdWAgZmFpbHMuIEl0IHRoZW4gbW9kaWZpZXMgYGhvdGFkZF9pbml0X3BnZGF0YCB0byBhY3R1YWxseSBjaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoYXQgbmV3IGVycm9yIGNvZGUuIFRoaXMgaXMgYSBsZWdpdGltYXRlIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHJlZmluZW1lbnQgb2YgZXJyb3IgaGFuZGxpbmcgc3BlY2lmaWNhbGx5IGR1cmluZyBtZW1vcnkgaG90cGx1Zy4gSXQmIzM5O3Mgb2J2aW91c2x5IHJlYWNoYWJsZSB0aHJvdWdoIGhvdHBsdWcgb3BlcmF0aW9ucywgYmUgaXQgdGhyb3VnaCBzeXNmcywgdmlydGlvX21lbSwgb3Igb3RoZXIgaG90cGx1ZyBtZXRob2RzLiBUaGVyZWZvcmUsIHRoaXMgaXMgc29tZXRoaW5nIEkmIzM5O2xsIHdhbnQgdG8gZnV6ei4KCkJhc2VkIG9uIHRoZSBuYXR1cmUgb2YgdGhlIHBhdGNoLCB0aGUgYE1FTU9SWV9IT1RQTFVHYCBhbmQgYEFSQ0hfTUVNT1JZX1BST0JFYCBjb25maWd1cmF0aW9ucyBhcmUgcmVxdWlyZWQuCgpTbywgdG8gc3VtbWFyaXplLCB0aGUgcGF0Y2ggaXMgYWRkcmVzc2luZyBhbiBlcnJvci1oYW5kbGluZyBpbXByb3ZlbWVudCBpbiB0aGUgbWVtb3J5IGhvdHBsdWcgcGF0aC4gSXQgYWRkcmVzc2VzIGBhbGxvY19wZXJjcHVgIGZhaWx1cmVzLiBUaGlzIGVycm9yIGhhbmRsaW5nIGlzIG5vdyBiZWluZyBwcm9wYWdhdGVkIHVwIHRvIGBob3RhZGRfaW5pdF9wZ2RhdGAuIEdpdmVuIHRoYXQgaXQmIzM5O3MgaW4gdGhlIGhvdHBsdWcgcGF0aCwgdGhpcyBjaGFuZ2UgaXMgd29ydGggZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDssCiAgICAmIzM0O0FSQ0hfTUVNT1JZX1BST0JFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnJiMzNDssCiAgICAmIzM0O2hvdGFkZF9pbml0X3BnZGF0JiMzNDssCiAgICAmIzM0O19fdHJ5X29ubGluZV9ub2RlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBob3RwbHVnIGluaXRpYWxpemF0aW9uIGNvZGUgdG8gaGFuZGxlIGBhbGxvY19wZXJjcHVgIGZhaWx1cmVzLCByZXR1cm5pbmcgYC1FTk9NRU1gIGFuZCBwcm9wYWdhdGluZyB0aGUgZXJyb3IgdXAgdG8gYGhvdGFkZF9pbml0X3BnZGF0YC4gVGhpcyBpcyByZWFjaGFibGUgdmlhIG1lbW9yeSBob3RwbHVnIG9wZXJhdGlvbnMgKGUuZy4sIHN5c2ZzLCB2aXJ0aW9fbWVtKSBhbmQgcmVwcmVzZW50cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGVycm9yIGhhbmRsaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNRU1PUllfSE9UUExVRyYjMzQ7LAogICAgJiMzNDtBUkNIX01FTU9SWV9QUk9CRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyYjMzQ7LAogICAgJiMzNDtob3RhZGRfaW5pdF9wZ2RhdCYjMzQ7LAogICAgJiMzNDtfX3RyeV9vbmxpbmVfbm9kZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBtZW1vcnkgaG90cGx1ZyBpbml0aWFsaXphdGlvbiBjb2RlIHRvIGhhbmRsZSBgYWxsb2NfcGVyY3B1YCBmYWlsdXJlcywgcmV0dXJuaW5nIGAtRU5PTUVNYCBhbmQgcHJvcGFnYXRpbmcgdGhlIGVycm9yIHVwIHRvIGBob3RhZGRfaW5pdF9wZ2RhdGAuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBtZW1vcnkgaG90cGx1ZyBvcGVyYXRpb25zIChlLmcuLCBzeXNmcywgdmlydGlvX21lbSkgYW5kIHJlcHJlc2VudHMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBlcnJvciBoYW5kbGluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjEwOjEzLjgzMjcxMzI4M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3OTMzNDU3NjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FTU9SWV9IT1RQTFVHXCIsXG4gICAgXCJBUkNIX01FTU9SWV9QUk9CRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z1wiLFxuICAgIFwiaG90YWRkX2luaXRfcGdkYXRcIixcbiAgICBcIl9fdHJ5X29ubGluZV9ub2RlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgbWVtb3J5IGhvdHBsdWcgaW5pdGlhbGl6YXRpb24gY29kZSB0byBoYW5kbGUgYGFsbG9jX3BlcmNwdWAgZmFpbHVyZXMsIHJldHVybmluZyBgLUVOT01FTWAgYW5kIHByb3BhZ2F0aW5nIHRoZSBlcnJvciB1cCB0byBgaG90YWRkX2luaXRfcGdkYXRgLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgbWVtb3J5IGhvdHBsdWcgb3BlcmF0aW9ucyAoZS5nLiwgc3lzZnMsIHZpcnRpb19tZW0pIGFuZCByZXByZXNlbnRzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gZXJyb3IgaGFuZGxpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjEwOjEzLjgzMjcyMjk4M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY5OTQ3OTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgM2E0ZGIzZDIzZmRjYWJmMmFhODMzZTg2MTBlMDIzYjVlOWQwYjdiN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxIDA1OjEwOjEyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaCBiL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaFxcbmluZGV4IDdjOWQ2NjcyOWM2MDk1Li5mMDRiOTE1Njc4ZGJkOSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmhcXG5AQCAtMjg5LDcgKzI4OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSkge31cXG4gLyogRGVmYXVsdCBvbmxpbmVfdHlwZSAoTU1PUF8qKSB3aGVuIG5ldyBtZW1vcnkgYmxvY2tzIGFyZSBhZGRlZC4gKi9cXG4gZXh0ZXJuIGVudW0gbW1vcCBtaHBfZ2V0X2RlZmF1bHRfb25saW5lX3R5cGUodm9pZCk7XFxuIGV4dGVybiB2b2lkIG1ocF9zZXRfZGVmYXVsdF9vbmxpbmVfdHlwZShlbnVtIG1tb3Agb25saW5lX3R5cGUpO1xcbi1leHRlcm4gdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCk7XFxuK2V4dGVybiBpbnQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpO1xcbiBleHRlcm4gaW50IF9fYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBtaHBfdCBtaHBfZmxhZ3MpO1xcbiBleHRlcm4gaW50IGFkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSwgbWhwX3QgbWhwX2ZsYWdzKTtcXG4gZXh0ZXJuIGludCBhZGRfbWVtb3J5X3Jlc291cmNlKGludCBuaWQsIHN0cnVjdCByZXNvdXJjZSAqcmVzb3VyY2UsXFxuZGlmZiAtLWdpdCBhL21tL21lbW9yeV9ob3RwbHVnLmMgYi9tbS9tZW1vcnlfaG90cGx1Zy5jXFxuaW5kZXggN2FjMTlmYWIyMjYzMjQuLjhiMTM3MzI4ZGNmMDE0IDEwMDY0NFxcbi0tLSBhL21tL21lbW9yeV9ob3RwbHVnLmNcXG4rKysgYi9tbS9tZW1vcnlfaG90cGx1Zy5jXFxuQEAgLTEyNjMsNyArMTI2Myw4IEBAIHN0YXRpYyBwZ19kYXRhX3QgKmhvdGFkZF9pbml0X3BnZGF0KGludCBuaWQpXFxuIFxcdHBnZGF0ID0gTk9ERV9EQVRBKG5pZCk7XFxuIFxcbiBcXHQvKiBpbml0IG5vZGUncyB6b25lcyBhcyBlbXB0eSB6b25lcywgd2UgZG9uJ3QgaGF2ZSBhbnkgcHJlc2VudCBwYWdlcy4qL1xcbi1cXHRmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcocGdkYXQpO1xcbitcXHRpZiAoZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHBnZGF0KSlcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbiBcXHQvKlxcbiBcXHQgKiBUaGUgbm9kZSB3ZSBhbGxvY2F0ZWQgaGFzIG5vIHpvbmUgZmFsbGJhY2sgbGlzdHMuIEZvciBhdm9pZGluZ1xcbmRpZmYgLS1naXQgYS9tbS9tbV9pbml0LmMgYi9tbS9tbV9pbml0LmNcXG5pbmRleCA0MDI2YjA4NGJkNGJmNy4uZDdhZWNkZGRmZDVkYTQgMTAwNjQ0XFxuLS0tIGEvbW0vbW1faW5pdC5jXFxuKysrIGIvbW0vbW1faW5pdC5jXFxuQEAgLTE1MjYsNyArMTUyNiw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX2luaXQgc2V0X3BhZ2VibG9ja19vcmRlcih2b2lkKVxcbiAgKiBOT1RFOiB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGR1cmluZyBtZW1vcnkgaG90cGx1Z1xcbiAgKi9cXG4gI2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbi12b2lkIF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KVxcbitpbnQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpXFxuIHtcXG4gXFx0aW50IG5pZCA9IHBnZGF0LVxcdTAwM2Vub2RlX2lkO1xcbiBcXHRlbnVtIHpvbmVfdHlwZSB6O1xcbkBAIC0xNTM0LDggKzE1MzQsMTQgQEAgdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdClcXG4gXFxuIFxcdHBnZGF0X2luaXRfaW50ZXJuYWxzKHBnZGF0KTtcXG4gXFxuLVxcdGlmIChwZ2RhdC1cXHUwMDNlcGVyX2NwdV9ub2Rlc3RhdHMgPT0gXFx1MDAyNmJvb3Rfbm9kZXN0YXRzKVxcbi1cXHRcXHRwZ2RhdC1cXHUwMDNlcGVyX2NwdV9ub2Rlc3RhdHMgPSBhbGxvY19wZXJjcHUoc3RydWN0IHBlcl9jcHVfbm9kZXN0YXQpO1xcbitcXHRpZiAocGdkYXQtXFx1MDAzZXBlcl9jcHVfbm9kZXN0YXRzID09IFxcdTAwMjZib290X25vZGVzdGF0cykge1xcbitcXHRcXHRzdHJ1Y3QgcGVyX2NwdV9ub2Rlc3RhdCBfX3BlcmNwdSAqcDtcXG4rXFxuK1xcdFxcdHAgPSBhbGxvY19wZXJjcHUoc3RydWN0IHBlcl9jcHVfbm9kZXN0YXQpO1xcbitcXHRcXHRpZiAoIXApXFxuK1xcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXHRcXHRwZ2RhdC1cXHUwMDNlcGVyX2NwdV9ub2Rlc3RhdHMgPSBwO1xcbitcXHR9XFxuIFxcbiBcXHQvKlxcbiBcXHQgKiBSZXNldCB0aGUgbnJfem9uZXMsIG9yZGVyIGFuZCBoaWdoZXN0X3pvbmVpZHggYmVmb3JlIHJldXNlLlxcbkBAIC0xNTY2LDYgKzE1NzIsOCBAQCB2b2lkIF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KVxcbiBcXHRcXHR6b25lLVxcdTAwM2VwcmVzZW50X3BhZ2VzID0gMDtcXG4gXFx0XFx0em9uZV9pbml0X2ludGVybmFscyh6b25lLCB6LCBuaWQsIDApO1xcbiBcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiAjZW5kaWZcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjEwOjE0LjQwMzc4NDEyN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjczNjIzNzA4NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNT1JZX0hPVFBMVUdcIixcbiAgICBcIkFSQ0hfTUVNT1JZX1BST0JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnXCIsXG4gICAgXCJob3RhZGRfaW5pdF9wZ2RhdFwiLFxuICAgIFwiX190cnlfb25saW5lX25vZGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtZW1vcnkgaG90cGx1ZyBpbml0aWFsaXphdGlvbiBjb2RlIHRvIGhhbmRsZSBgYWxsb2NfcGVyY3B1YCBmYWlsdXJlcywgcmV0dXJuaW5nIGAtRU5PTUVNYCBhbmQgcHJvcGFnYXRpbmcgdGhlIGVycm9yIHVwIHRvIGBob3RhZGRfaW5pdF9wZ2RhdGAuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBtZW1vcnkgaG90cGx1ZyBvcGVyYXRpb25zIChlLmcuLCBzeXNmcywgdmlydGlvX21lbSkgYW5kIHJlcHJlc2VudHMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBlcnJvciBoYW5kbGluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzYTRkYjNkMjNmZGNhYmYyYWE4MzNlODYxMGUwMjNiNWU5ZDBiN2I3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAwNToxMDoxMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaCBiL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaFxuaW5kZXggN2M5ZDY2NzI5YzYwOTUuLmYwNGI5MTU2NzhkYmQ5IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmhcbkBAIC0yODksNyArMjg5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIF9fcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKSB7fVxuIC8qIERlZmF1bHQgb25saW5lX3R5cGUgKE1NT1BfKikgd2hlbiBuZXcgbWVtb3J5IGJsb2NrcyBhcmUgYWRkZWQuICovXG4gZXh0ZXJuIGVudW0gbW1vcCBtaHBfZ2V0X2RlZmF1bHRfb25saW5lX3R5cGUodm9pZCk7XG4gZXh0ZXJuIHZvaWQgbWhwX3NldF9kZWZhdWx0X29ubGluZV90eXBlKGVudW0gbW1vcCBvbmxpbmVfdHlwZSk7XG4tZXh0ZXJuIHZvaWQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpO1xuK2V4dGVybiBpbnQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpO1xuIGV4dGVybiBpbnQgX19hZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsIG1ocF90IG1ocF9mbGFncyk7XG4gZXh0ZXJuIGludCBhZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsIG1ocF90IG1ocF9mbGFncyk7XG4gZXh0ZXJuIGludCBhZGRfbWVtb3J5X3Jlc291cmNlKGludCBuaWQsIHN0cnVjdCByZXNvdXJjZSAqcmVzb3VyY2UsXG5kaWZmIC0tZ2l0IGEvbW0vbWVtb3J5X2hvdHBsdWcuYyBiL21tL21lbW9yeV9ob3RwbHVnLmNcbmluZGV4IDdhYzE5ZmFiMjI2MzI0Li44YjEzNzMyOGRjZjAxNCAxMDA2NDRcbi0tLSBhL21tL21lbW9yeV9ob3RwbHVnLmNcbisrKyBiL21tL21lbW9yeV9ob3RwbHVnLmNcbkBAIC0xMjYzLDcgKzEyNjMsOCBAQCBzdGF0aWMgcGdfZGF0YV90ICpob3RhZGRfaW5pdF9wZ2RhdChpbnQgbmlkKVxuIFx0cGdkYXQgPSBOT0RFX0RBVEEobmlkKTtcbiBcbiBcdC8qIGluaXQgbm9kZSdzIHpvbmVzIGFzIGVtcHR5IHpvbmVzLCB3ZSBkb24ndCBoYXZlIGFueSBwcmVzZW50IHBhZ2VzLiovXG4tXHRmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcocGdkYXQpO1xuK1x0aWYgKGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhwZ2RhdCkpXG4rXHRcdHJldHVybiBOVUxMO1xuIFxuIFx0LypcbiBcdCAqIFRoZSBub2RlIHdlIGFsbG9jYXRlZCBoYXMgbm8gem9uZSBmYWxsYmFjayBsaXN0cy4gRm9yIGF2b2lkaW5nXG5kaWZmIC0tZ2l0IGEvbW0vbW1faW5pdC5jIGIvbW0vbW1faW5pdC5jXG5pbmRleCA0MDI2YjA4NGJkNGJmNy4uZDdhZWNkZGRmZDVkYTQgMTAwNjQ0XG4tLS0gYS9tbS9tbV9pbml0LmNcbisrKyBiL21tL21tX2luaXQuY1xuQEAgLTE1MjYsNyArMTUyNiw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX2luaXQgc2V0X3BhZ2VibG9ja19vcmRlcih2b2lkKVxuICAqIE5PVEU6IHRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWQgZHVyaW5nIG1lbW9yeSBob3RwbHVnXG4gICovXG4gI2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuLXZvaWQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpXG4raW50IF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KVxuIHtcbiBcdGludCBuaWQgPSBwZ2RhdC1cdTAwM2Vub2RlX2lkO1xuIFx0ZW51bSB6b25lX3R5cGUgejtcbkBAIC0xNTM0LDggKzE1MzQsMTQgQEAgdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdClcbiBcbiBcdHBnZGF0X2luaXRfaW50ZXJuYWxzKHBnZGF0KTtcbiBcbi1cdGlmIChwZ2RhdC1cdTAwM2VwZXJfY3B1X25vZGVzdGF0cyA9PSBcdTAwMjZib290X25vZGVzdGF0cylcbi1cdFx0cGdkYXQtXHUwMDNlcGVyX2NwdV9ub2Rlc3RhdHMgPSBhbGxvY19wZXJjcHUoc3RydWN0IHBlcl9jcHVfbm9kZXN0YXQpO1xuK1x0aWYgKHBnZGF0LVx1MDAzZXBlcl9jcHVfbm9kZXN0YXRzID09IFx1MDAyNmJvb3Rfbm9kZXN0YXRzKSB7XG4rXHRcdHN0cnVjdCBwZXJfY3B1X25vZGVzdGF0IF9fcGVyY3B1ICpwO1xuK1xuK1x0XHRwID0gYWxsb2NfcGVyY3B1KHN0cnVjdCBwZXJfY3B1X25vZGVzdGF0KTtcbitcdFx0aWYgKCFwKVxuK1x0XHRcdHJldHVybiAtRU5PTUVNO1xuK1x0XHRwZ2RhdC1cdTAwM2VwZXJfY3B1X25vZGVzdGF0cyA9IHA7XG4rXHR9XG4gXG4gXHQvKlxuIFx0ICogUmVzZXQgdGhlIG5yX3pvbmVzLCBvcmRlciBhbmQgaGlnaGVzdF96b25laWR4IGJlZm9yZSByZXVzZS5cbkBAIC0xNTY2LDYgKzE1NzIsOCBAQCB2b2lkIF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KVxuIFx0XHR6b25lLVx1MDAzZXByZXNlbnRfcGFnZXMgPSAwO1xuIFx0XHR6b25lX2luaXRfaW50ZXJuYWxzKHpvbmUsIHosIG5pZCwgMCk7XG4gXHR9XG4rXG4rXHRyZXR1cm4gMDtcbiB9XG4gI2VuZGlmXG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxMDoxNC40MDM3ODc3OTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjE5MjQ4NDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldDogTWVtb3J5IEhvdHBsdWcgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyB3ZSd2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQncyB0d2Vha2luZyB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gbWVtb3J5IGhvdHBsdWcgaW5pdGlhbGl6YXRpb24uIFNwZWNpZmljYWxseSwgaXQgbW9kaWZpZXMgYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2AgaW4gYG1tL21tX2luaXQuY2AgYW5kIGBob3RhZGRfaW5pdF9wZ2RhdGAgaW4gYG1tL21lbW9yeV9ob3RwbHVnLmNgLiBUaGUgY2hhbmdlIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdgIG5vdyByZXR1cm5zIGFuIGBpbnRgIHJhdGhlciB0aGFuIGB2b2lkYCwgYW5kIGl0IHNpZ25hbHMgYW4gZXJyb3Igd2l0aCBgLUVOT01FTWAgaWYgYGFsbG9jX3BlcmNwdWAgZmFpbHMuIGBob3RhZGRfaW5pdF9wZ2RhdGAgdGhlbiBjaGVja3MgdGhpcyByZXR1cm4gdmFsdWUgYW5kIHJldHVybnMgYE5VTExgIG9uIGZhaWx1cmUuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcywgXCJJcyB0aGlzIHJlYWNoYWJsZSwgYW5kIG1vcmUgaW1wb3J0YW50bHksIGlzIGl0IHdvcnRoIGZ1enppbmc/XCIgU2luY2UgdGhpcyBkZWFscyB3aXRoIG1lbW9yeSBob3RwbHVnLCB0aGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gV2Uga25vdyBtZW1vcnkgaG90cGx1ZyBjYW4gYmUgaW5zdGlnYXRlZCBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIG1lY2hhbmlzbXMgbGlrZSBzeXNmcyBvciBBQ1BJLiBUaGF0IG1ha2VzIGl0IGEgc29saWQgY2FuZGlkYXRlIGZvciBmdXp6aW5nLlxuXG5UaGUgbmV4dCBxdWVzdGlvbiBpcyByZWFjaGFiaWxpdHkgaW4gYSB2aXJ0dWFsIG1hY2hpbmUgc2V0dGluZy4gR2l2ZW4gdGhhdCBtZW1vcnkgaG90cGx1ZyBjYW4gYmUgc2ltdWxhdGVkIG9yIHRyaWdnZXJlZCB2aWEgc3lzZnMsIHRoaXMgaXMgZGVmaW5pdGVseSBhY2Nlc3NpYmxlIGluIGEgVk0gZW52aXJvbm1lbnQuIFRoYXQgbWFrZXMgaXQgZXZlbiBtb3JlIGFwcGVhbGluZy5cblxuTm93LCBsZXQncyBkaXZlIGludG8gYGhvdGFkZF9pbml0X3BnZGF0YCBpbiBgbW0vbWVtb3J5X2hvdHBsdWcuY2AgYW5kIG1hcCBvdXQgdGhlIGNvbnRyb2wgZmxvdyB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhlIHJldHVybiB2YWx1ZSBhbmQgZmlndXJlIG91dCBpZiB3ZSBjYW4gZW5naW5lZXIgaW50ZXJlc3RpbmcgZmFpbHVyZSBzY2VuYXJpb3Mgd2l0aCBmdXp6aW5nLiBMZXQncyBzZWUgaWYgd2UgY2FuIHRyaWdnZXIgdGhvc2UgYC1FTk9NRU1gIGNvbmRpdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2ODYsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxMDoxOS42MjMwNDAyNzdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM2NDE3NDA4MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJob3RhZGRfaW5pdF9wZ2RhdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9tZW1vcnlfaG90cGx1Zy5jPTExMzc9aW50IG9ubGluZV9wYWdlcyh1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcyxcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI1Mi0vKiB3ZSBhcmUgT0sgY2FsbGluZyBfX21lbWluaXQgc3R1ZmYgaGVyZSAtIHdlIGhhdmUgQ09ORklHX01FTU9SWV9IT1RQTFVHICovXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxMjUzOnN0YXRpYyBwZ19kYXRhX3QgKmhvdGFkZF9pbml0X3BnZGF0KGludCBuaWQpXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMjU0LXtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM9MTI4OT1zdGF0aWMgaW50IF9fdHJ5X29ubGluZV9ub2RlKGludCBuaWQsIGJvb2wgc2V0X25vZGVfb25saW5lKVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMjk2LVxcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTI5NzpcXHRwZ2RhdCA9IGhvdGFkZF9pbml0X3BnZGF0KG5pZCk7XFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMjk4LVxcdGlmICghcGdkYXQpIHtcXG4tLVxcbm1tL21tX2luaXQuYz0xODA3PXN0YXRpYyB2b2lkIF9faW5pdCBmcmVlX2FyZWFfaW5pdCh2b2lkKVxcbi0tXFxubW0vbW1faW5pdC5jLTE4OTQtXFx0XFx0ICptZW1vcnktbGVzcyBub2RlLiBUaGUgcGdkYXQgd2lsbCBnZXQgZnVsbHkgaW5pdGlhbGl6ZWQgYnlcXG5tbS9tbV9pbml0LmM6MTg5NTpcXHRcXHQgKmhvdGFkZF9pbml0X3BnZGF0KCkgd2hlbiBtZW1vcnkgaXMgaG90cGx1Z2dlZCBpbnRvIHRoaXMgbm9kZS5cXG5tbS9tbV9pbml0LmMtMTg5Ni1cXHRcXHQgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6MTA6MjIuOTg3MjI3MjY5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyODA2ODM5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBzbmlwcGV0LCBhcyB0aG91Z2ggdGhleSB3ZXJlIG15IG93biB0aG91Z2h0czpcblxuKipEaXNzZWN0aW5nIHRoZSBNZW1vcnkgTm9kZSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIGBob3RhZGRfaW5pdF9wZ2RhdGAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQga2lja3Mgb2ZmIHRoZSBwcm9jZXNzIG9mIGluaXRpYWxpemluZyBhIG5ldyBtZW1vcnkgbm9kZSBhZGRlZCBvbiB0aGUgZmx5LiBUaGF0J3MgZ29vZCB0byBrbm93LiBUaGUga2V5IGlzIHVuZGVyc3RhbmRpbmcgKndoZW4qIHRoaXMgaW5pdGlhbGl6YXRpb24gYWN0dWFsbHkgb2NjdXJzLCB0byB1bmRlcnN0YW5kIHRoZSB0cmlnZ2VyLiBTbywgYGhvdGFkZF9pbml0X3BnZGF0YCBpcyBjYWxsZWQgZnJvbSBgX190cnlfb25saW5lX25vZGVgLiBUaGF0IHN1Z2dlc3RzIHRoYXQgYF9fdHJ5X29ubGluZV9ub2RlYCBsaWtlbHkgaGFzIHNvbWUgcmVzcG9uc2liaWxpdHkgZm9yIHRoZSBvdmVyYWxsIHByb2Nlc3Mgb2YgYnJpbmdpbmcgdGhlIG1lbW9yeSBub2RlIG9ubGluZS4gV2hhdCB0cmlnZ2VycyAqdGhhdCo/IEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbGluZyBoaWVyYXJjaHkuIFdoZXJlIGFyZSB0aGUgY2FsbHMgdG8gYF9fdHJ5X29ubGluZV9ub2RlYD8gVGhlIGFuc3dlciB0byB0aGF0IHdpbGwgdGVsbCBtZSB0aGUgZXZlbnQgdGhhdCBzZXRzIHRoaXMgaW5pdGlhbGl6YXRpb24gaW4gbW90aW9uLiBMZXQncyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgdGhlIGJyb2FkZXIgY29udGV4dCBoZXJlLiBJIG5lZWQgdGhlIGJpZ2dlciBwaWN0dXJlIHRvIHRydWx5IHVuZGVyc3RhbmQgdGhpcyBjb21wb25lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1OTMsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxMDoyNi4xMTUyOTk4MDRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM3MjUwNjI4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3RyeV9vbmxpbmVfbm9kZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9tbS9udW1hLmM9MjY0PXZvaWQgX19pbml0IGluaXRfZ2lfbm9kZXModm9pZClcXG4tLVxcbmFyY2gveDg2L21tL251bWEuYy0yNzEtXFx0ICogIGNwdV91cFxcbmFyY2gveDg2L21tL251bWEuYzoyNzI6XFx0ICogICBfX3RyeV9vbmxpbmVfbm9kZVxcbmFyY2gveDg2L21tL251bWEuYy0yNzMtXFx0ICogICAgcmVnaXN0ZXJfbm9kZVxcbi0tXFxuYXJjaC94ODYvbW0vbnVtYS5jPTI5Nj12b2lkIF9faW5pdCBpbml0X2NwdV90b19ub2RlKHZvaWQpXFxuLS1cXG5hcmNoL3g4Ni9tbS9udW1hLmMtMzEyLVxcdFxcdCAqICBjcHVfdXBcXG5hcmNoL3g4Ni9tbS9udW1hLmM6MzEzOlxcdFxcdCAqICAgX190cnlfb25saW5lX25vZGVcXG5hcmNoL3g4Ni9tbS9udW1hLmMtMzE0LVxcdFxcdCAqICAgIHJlZ2lzdGVyX25vZGVcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM9MTI1Mz1zdGF0aWMgcGdfZGF0YV90ICpob3RhZGRfaW5pdF9wZ2RhdChpbnQgbmlkKVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMjc4LS8qXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxMjc5OiAqIF9fdHJ5X29ubGluZV9ub2RlIC0gb25saW5lIGEgbm9kZSBpZiBvZmZsaW5lZFxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI4MC0gKiBAbmlkOiB0aGUgbm9kZSBJRFxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMjg4LSAqL1xcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTI4OTpzdGF0aWMgaW50IF9fdHJ5X29ubGluZV9ub2RlKGludCBuaWQsIGJvb2wgc2V0X25vZGVfb25saW5lKVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI5MC17XFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTEzMTY9aW50IHRyeV9vbmxpbmVfbm9kZShpbnQgbmlkKVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMzIwLVxcdG1lbV9ob3RwbHVnX2JlZ2luKCk7XFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxMzIxOlxcdHJldCA9ICBfX3RyeV9vbmxpbmVfbm9kZShuaWQsIHRydWUpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTMyMi1cXHRtZW1faG90cGx1Z19kb25lKCk7XFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTE0OTU9aW50IGFkZF9tZW1vcnlfcmVzb3VyY2UoaW50IG5pZCwgc3RydWN0IHJlc291cmNlICpyZXMsIG1ocF90IG1ocF9mbGFncylcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTUzMi1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE1MzM6XFx0cmV0ID0gX190cnlfb25saW5lX25vZGUobmlkLCBmYWxzZSk7XFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNTM0LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxMDoyOC40ODc4MTgzMDJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDk1ODU4NDc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqVHJhY2luZyB0aGUgT25saW5lIE5vZGUgTG9naWMqKlxuXG5SaWdodCwgc28gSSdtIHNlZWluZyB0aGF0IGBfX3RyeV9vbmxpbmVfbm9kZWAgZ2V0cyBjYWxsZWQgZnJvbSBib3RoIGB0cnlfb25saW5lX25vZGVgICphbmQqIGBhZGRfbWVtb3J5X3Jlc291cmNlYC4gIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQg4oCTIGl0IHN1Z2dlc3RzIGEga2luZCBvZiByZWN1cnNpdmUgcGF0dGVybiBvciBwZXJoYXBzIGEgaGVscGVyIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYnJvYWRlciBub2RlIG9ubGluZSBwcm9jZXNzLiBJJ2xsIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQsIHRob3NlIGZ1bmN0aW9ucyBjb3VsZCBiZSBpbXBvcnRhbnQuXG5cblRoZW4sIHRoZXJlJ3MgYSBjb21tZW50IGluIGBhcmNoL3g4Ni9tbS9udW1hLmNgIGluZGljYXRpbmcgYHRyeV9vbmxpbmVfbm9kZWAgaXMgdHJpZ2dlcmVkIGJ5IGBjcHVfdXBgLiBUaGF0IG5hcnJvd3MgZG93biB0aGUgY29udGV4dCBjb25zaWRlcmFibHkhIEEgYGNwdV91cGAgY2FsbCBpcyBhIHNpZ25pZmljYW50IGV2ZW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGxpbmsgdGhvcm91Z2hseS5cblxuVG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZSBvdmVyYWxsIGJlaGF2aW9yLCBJJ20gZ29pbmcgdG8gbG9vayBhdCAqYWxsKiB0aGUgcGxhY2VzIHdoZXJlIGB0cnlfb25saW5lX25vZGVgIGlzIGNhbGxlZC4gRmluZGluZyB0aGUgY2FsbGVycyBzaG91bGQgaWxsdW1pbmF0ZSB0aGUgY29udHJvbCBmbG93IGFuZCBlbHVjaWRhdGUgdGhlIGNpcmN1bXN0YW5jZXMgdGhhdCB0cmlnZ2VyIHRoZSBvbmxpbmUgcHJvY2Vzcy4gVGhhdCdzIHdoZXJlIHRoZSByZWFsIGluc2lnaHRzIHdpbGwgbGlrZWx5IGxpZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ2NiwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjEwOjMxLjk4MzY4MTE4MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjgwNjI5OTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRyeV9vbmxpbmVfbm9kZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Bvd2VycGMvbW0vbnVtYS5jPTE0MTI9dm9pZCBmaW5kX2FuZF91cGRhdGVfY3B1X25pZChpbnQgY3B1KVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL251bWEuYy0xNDI3LVxcdFxcdC8vIEFzc29jaWF0ZSBub2RlIFxcdTAwM2MtXFx1MDAzZSBjcHUsIHNvIGNwdV91cCgpIGNhbGxzXFxuYXJjaC9wb3dlcnBjL21tL251bWEuYzoxNDI4OlxcdFxcdC8vIHRyeV9vbmxpbmVfbm9kZSgpIG9uIHRoZSByaWdodCBub2RlLlxcbmFyY2gvcG93ZXJwYy9tbS9udW1hLmMtMTQyOS1cXHRcXHRzZXRfY3B1X251bWFfbm9kZShjcHUsIG5ld19uaWQpO1xcbi0tXFxuYXJjaC94ODYvbW0vbnVtYS5jPTI2ND12b2lkIF9faW5pdCBpbml0X2dpX25vZGVzKHZvaWQpXFxuLS1cXG5hcmNoL3g4Ni9tbS9udW1hLmMtMjcxLVxcdCAqICBjcHVfdXBcXG5hcmNoL3g4Ni9tbS9udW1hLmM6MjcyOlxcdCAqICAgX190cnlfb25saW5lX25vZGVcXG5hcmNoL3g4Ni9tbS9udW1hLmMtMjczLVxcdCAqICAgIHJlZ2lzdGVyX25vZGVcXG4tLVxcbmFyY2gveDg2L21tL251bWEuYz0yOTY9dm9pZCBfX2luaXQgaW5pdF9jcHVfdG9fbm9kZSh2b2lkKVxcbi0tXFxuYXJjaC94ODYvbW0vbnVtYS5jLTMxMi1cXHRcXHQgKiAgY3B1X3VwXFxuYXJjaC94ODYvbW0vbnVtYS5jOjMxMzpcXHRcXHQgKiAgIF9fdHJ5X29ubGluZV9ub2RlXFxuYXJjaC94ODYvbW0vbnVtYS5jLTMxNC1cXHRcXHQgKiAgICByZWdpc3Rlcl9ub2RlXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9MTIxPWV4dGVybiBpbnQgcmVzdG9yZV9vbmxpbmVfcGFnZV9jYWxsYmFjayhvbmxpbmVfcGFnZV9jYWxsYmFja190IGNhbGxiYWNrKTtcXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMTIyLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDoxMjM6ZXh0ZXJuIGludCB0cnlfb25saW5lX25vZGUoaW50IG5pZCk7XFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTEyNC1cXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaD0xOTk9c3RhdGljIGlubGluZSB2b2lkIHpvbmVfc2VxbG9ja19pbml0KHN0cnVjdCB6b25lICp6b25lKSB7fVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yMDAtXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjIwMTpzdGF0aWMgaW5saW5lIGludCB0cnlfb25saW5lX25vZGUoaW50IG5pZClcXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjAyLXtcXG4tLVxcbmtlcm5lbC9jcHUuYz0xNjgxPXN0YXRpYyBpbnQgY3B1X3VwKHVuc2lnbmVkIGludCBjcHUsIGVudW0gY3B1aHBfc3RhdGUgdGFyZ2V0KVxcbi0tXFxua2VybmVsL2NwdS5jLTE2OTAtXFxua2VybmVsL2NwdS5jOjE2OTE6XFx0ZXJyID0gdHJ5X29ubGluZV9ub2RlKGNwdV90b19ub2RlKGNwdSkpO1xcbmtlcm5lbC9jcHUuYy0xNjkyLVxcdGlmIChlcnIpXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTEyNTM9c3RhdGljIHBnX2RhdGFfdCAqaG90YWRkX2luaXRfcGdkYXQoaW50IG5pZClcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI3OC0vKlxcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTI3OTogKiBfX3RyeV9vbmxpbmVfbm9kZSAtIG9ubGluZSBhIG5vZGUgaWYgb2ZmbGluZWRcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEyODAtICogQG5pZDogdGhlIG5vZGUgSURcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTI4OC0gKi9cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjEyODk6c3RhdGljIGludCBfX3RyeV9vbmxpbmVfbm9kZShpbnQgbmlkLCBib29sIHNldF9ub2RlX29ubGluZSlcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEyOTAte1xcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMzE1LSAqL1xcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTMxNjppbnQgdHJ5X29ubGluZV9ub2RlKGludCBuaWQpXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xMzE3LXtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTMyMC1cXHRtZW1faG90cGx1Z19iZWdpbigpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTMyMTpcXHRyZXQgPSAgX190cnlfb25saW5lX25vZGUobmlkLCB0cnVlKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTEzMjItXFx0bWVtX2hvdHBsdWdfZG9uZSgpO1xcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYz0xNDk1PWludCBhZGRfbWVtb3J5X3Jlc291cmNlKGludCBuaWQsIHN0cnVjdCByZXNvdXJjZSAqcmVzLCBtaHBfdCBtaHBfZmxhZ3MpXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE1MzItXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNTMzOlxcdHJldCA9IF9fdHJ5X29ubGluZV9ub2RlKG5pZCwgZmFsc2UpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTUzNC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6MTA6MzQuMjY0MzE3NDA4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE1MDUxNTgyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBOb2RlIE9ubGluZWluZyoqXG5cbk9rYXksIHNvIGB0cnlfb25saW5lX25vZGVgIGdldHMgY2FsbGVkIGZyb20gYGNwdV91cGAgd2l0aGluIHRoZSBrZXJuZWwncyBDUFUgY29kZSwgc3BlY2lmaWNhbGx5IGBrZXJuZWwvY3B1LmNgLiBgY3B1X3VwYCBpdHNlbGYgY2FuIGJlIGFjdGl2YXRlZCB2aWEgc3lzZnMsIHRoZSBgL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1WC9vbmxpbmVgIGludGVyZmFjZS4gSG1tLCBpbnRlcmVzdGluZy4uLiBXYWl0IGEgbWludXRlLCBgdHJ5X29ubGluZV9ub2RlYCBhY3R1YWxseSBjYWxscyBgX190cnlfb25saW5lX25vZGVgLCB3aGljaCB0aGVuIGRpdmVzIGludG8gYGhvdGFkZF9pbml0X3BnZGF0YC5cblxuYGhvdGFkZF9pbml0X3BnZGF0YCBpcyB0aGUgY3JpdGljYWwgcGllY2UgaGVyZTsgaXQgZG9lcyBhIGNoZWNrIHRvIHNlZSBpZiB0aGUgbm9kZSBpcyBhbHJlYWR5IG9ubGluZSwgYW5kIGlmIG5vdCwgKnRoZW4qIGl0IGluaXRpYWxpemVzIGl0LiBTbywgY2FuIENQVSBob3RwbHVnIHRyaWdnZXIgdGhpcyBzZXF1ZW5jZT8gWWVzLCBpdCBhYnNvbHV0ZWx5IGNhbiwgaWYgdGhlIENQVSB3ZSdyZSBob3RwbHVnZ2luZyBiZWxvbmdzIHRvIGEgTlVNQSBub2RlIHRoYXQgaXNuJ3Qgb25saW5lIHlldC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBJdCdzIGEga2V5IHBhcnQgb2YgYnJpbmdpbmcgdXAgYSBuZXcgbm9kZSB2aWEgYSBuZXcgQ1BVIVxuXG5BbmQsIGV2ZW4gYmV0dGVyLCBJIGFsc28gcmVjYWxsIHRoYXQgYGFkZF9tZW1vcnlfcmVzb3VyY2VgIGFsc28gY2FsbHMgYF9fdHJ5X29ubGluZV9ub2RlYC4gVGhhdCBtZWFucyBtZW1vcnkgaG90cGx1ZyBjYW4gYWxzbyBwb3RlbnRpYWxseSB0cmlnZ2VyIHRoaXMgbm9kZSBvbmxpbmUgcHJvY2VzcyEgU28sIGxldCdzIHNlZSB3aGljaCBjYWxsZXJzIGFyZSBhY3R1YWxseSBjYWxsaW5nIGBhZGRfbWVtb3J5X3Jlc291cmNlYCBpdHNlbGYsIHNpbmNlIHRoYXQncyBhIHNlY29uZCB0cmlnZ2VyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODU0LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjEwOjM4LjQxNDgzNjgwM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ1Njg5NTE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhZGRfbWVtb3J5X3Jlc291cmNlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vY29yZS1hcGkvbWVtb3J5LWhvdHBsdWcucnN0PTE3Mz1tZW1vcnkgZmFzdGVyIHRoYW4gZXhwZWN0ZWQ6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL21lbW9yeS1ob3RwbHVnLnJzdC0xNzYtICBtZW1faG90cGx1Z19sb2NrXFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9tZW1vcnktaG90cGx1Zy5yc3Q6MTc3Oi0gYWRkX21lbW9yeV9yZXNvdXJjZSgpIHdpbGwgZmlyc3QgdGFrZSB0aGUgbWVtX2hvdHBsdWdfbG9jaywgZm9sbG93ZWQgYnlcXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL21lbW9yeS1ob3RwbHVnLnJzdC0xNzgtICB0aGUgZGV2aWNlX2xvY2soKSAod2hpbGUgY3JlYXRpbmcgdGhlIGRldmljZXMsIGR1cmluZyBidXNfYWRkX2RldmljZSgpKS5cXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL2NvcmUtYXBpL21lbW9yeS1ob3RwbHVnLnJzdD04Nz1OT1RJRllfU1RPUOWBnOatouWvuemAmuefpemYn+WIl+eahOi/m+S4gOatpeWkhOeQhuOAglxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vY29yZS1hcGkvbWVtb3J5LWhvdHBsdWcucnN0LTEwNS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9jb3JlLWFwaS9tZW1vcnktaG90cGx1Zy5yc3Q6MTA2Oi0gYWRkX21lbW9yeV9yZXNvdXJjZSgp5bCG6aaW5YWI5L2/55SobWVtX2hvdHBsdWdfbG9ja++8jOeEtuWQjuaYr2RldmljZV9sb2NrKCnvvIjlnKjliJtcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9jb3JlLWFwaS9tZW1vcnktaG90cGx1Zy5yc3QtMTA3LSAg5bu66K6+5aSH5pe277yM5ZyoYnVzX2FkZF9kZXZpY2UoKeacn+mXtO+8ieOAglxcbi0tXFxuZHJpdmVycy94ZW4vYmFsbG9vbi5jPTI2ND1zdGF0aWMgZW51bSBicF9zdGF0ZSByZXNlcnZlX2FkZGl0aW9uYWxfbWVtb3J5KHZvaWQpXFxuLS1cXG5kcml2ZXJzL3hlbi9iYWxsb29uLmMtMzE4LVxcdC8qXFxuZHJpdmVycy94ZW4vYmFsbG9vbi5jOjMxOTpcXHQgKiBhZGRfbWVtb3J5X3Jlc291cmNlKCkgd2lsbCBjYWxsIG9ubGluZV9wYWdlcygpIHdoaWNoIGluIGl0cyB0dXJuXFxuZHJpdmVycy94ZW4vYmFsbG9vbi5jLTMyMC1cXHQgKiB3aWxsIGNhbGwgeGVuX29ubGluZV9wYWdlKCkgY2FsbGJhY2sgY2F1c2luZyBkZWFkbG9jayBpZiB3ZSBkb24ndFxcbi0tXFxuZHJpdmVycy94ZW4vYmFsbG9vbi5jLTMyNC1cXHRtdXRleF91bmxvY2soXFx1MDAyNmJhbGxvb25fbXV0ZXgpO1xcbmRyaXZlcnMveGVuL2JhbGxvb24uYzozMjU6XFx0LyogYWRkX21lbW9yeV9yZXNvdXJjZSgpIHJlcXVpcmVzIHRoZSBkZXZpY2VfaG90cGx1ZyBsb2NrICovXFxuZHJpdmVycy94ZW4vYmFsbG9vbi5jLTMyNi1cXHRsb2NrX2RldmljZV9ob3RwbHVnKCk7XFxuZHJpdmVycy94ZW4vYmFsbG9vbi5jOjMyNzpcXHRyYyA9IGFkZF9tZW1vcnlfcmVzb3VyY2UobmlkLCByZXNvdXJjZSwgTUhQX01FUkdFX1JFU09VUkNFKTtcXG5kcml2ZXJzL3hlbi9iYWxsb29uLmMtMzI4LVxcdHVubG9ja19kZXZpY2VfaG90cGx1ZygpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oPTM1PXR5cGVkZWYgaW50IF9fYml0d2lzZSBtaHBfdDtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC00MC0gKiBBbGxvdyBtZXJnaW5nIG9mIHRoZSBhZGRlZCBTeXN0ZW0gUkFNIHJlc291cmNlIHdpdGggYWRqYWNlbnQsXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjQxOiAqIG1lcmdlYWJsZSByZXNvdXJjZXMuIEFmdGVyIGEgc3VjY2Vzc2Z1bCBjYWxsIHRvIGFkZF9tZW1vcnlfcmVzb3VyY2UoKVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC00Mi0gKiB3aXRoIHRoaXMgZmxhZyBzZXQsIHRoZSByZXNvdXJjZSBwb2ludGVyIG11c3Qgbm8gbG9uZ2VyIGJlIHVzZWQgYXMgaXRcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaD0yOTQ9ZXh0ZXJuIGludCBhZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsIG1ocF90IG1ocF9mbGFncyk7XFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjI5NTpleHRlcm4gaW50IGFkZF9tZW1vcnlfcmVzb3VyY2UoaW50IG5pZCwgc3RydWN0IHJlc291cmNlICpyZXNvdXJjZSxcXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjk2LVxcdFxcdFxcdCAgICAgICBtaHBfdCBtaHBfZmxhZ3MpO1xcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYz0zMTk9c3RhdGljIGludCBjaGVja19wZm5fc3Bhbih1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcylcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMzI1LVxcdCAqIG9ubGluZSwgc28gdGhpcyBjaGVjayBzaG91bGQgb25seSBmaXJlIGZvciBkaXJlY3RcXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjMyNjpcXHQgKiBhcmNoX3thZGQscmVtb3ZlfV9tZW1vcnkoKSB1c2VycyBvdXRzaWRlIG9mIGFkZF9tZW1vcnlfcmVzb3VyY2UoKS5cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTMyNy1cXHQgKi9cXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM9MTQ0MT1zdGF0aWMgaW50IGNyZWF0ZV9hbHRtYXBzX2FuZF9tZW1vcnlfYmxvY2tzKGludCBuaWQsIHN0cnVjdCBtZW1vcnlfZ3JvdXAgKmdyb3VwLFxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNDk0LSAqL1xcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTQ5NTppbnQgYWRkX21lbW9yeV9yZXNvdXJjZShpbnQgbmlkLCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcywgbWhwX3QgbWhwX2ZsYWdzKVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTQ5Ni17XFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MDEtXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNjAyOi8qIHJlcXVpcmVzIGRldmljZV9ob3RwbHVnX2xvY2ssIHNlZSBhZGRfbWVtb3J5X3Jlc291cmNlKCkgKi9cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MDMtaW50IF9fYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBtaHBfdCBtaHBfZmxhZ3MpXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MTEtXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNjEyOlxcdHJldCA9IGFkZF9tZW1vcnlfcmVzb3VyY2UobmlkLCByZXMsIG1ocF9mbGFncyk7XFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjEzLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYz0xNjUxPWludCBhZGRfbWVtb3J5X2RyaXZlcl9tYW5hZ2VkKGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2NjktXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNjcwOlxcdHJjID0gYWRkX21lbW9yeV9yZXNvdXJjZShuaWQsIHJlcywgbWhwX2ZsYWdzKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2NzEtXFx0aWYgKHJjIFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6MTA6NDAuODcxNzQzMDEzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwODc4MjQ0ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJhY2luZyBNZW1vcnkgQWxsb2NhdGlvbiBDYWxscyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBtZW1vcnkgaXMgYWxsb2NhdGVkIHdpdGhpbiB0aGlzIHN5c3RlbS4gSSBzZWUgYGFkZF9tZW1vcnlfcmVzb3VyY2VgIGJlaW5nIGludm9rZWQsIGFuZCB0aGF0J3MgYSBrZXkgZnVuY3Rpb24gZm9yIG1hbmFnaW5nIG1lbW9yeSByZXNvdXJjZXMuIE5vdywgaXQgbG9va3MgbGlrZSBpdCdzIHByaW1hcmlseSBjYWxsZWQgZnJvbSBgX19hZGRfbWVtb3J5YCBhbmQgYGFkZF9tZW1vcnlfZHJpdmVyX21hbmFnZWRgLCB3aGljaCBtYWtlcyBzZW5zZSBhcyB0aGVzZSBsaWtlbHkgcmVwcmVzZW50IHRoZSBjb3JlIGFsbG9jYXRpb24gbG9naWMgYW5kIGRyaXZlci1zcGVjaWZpYyBtYW5hZ2VtZW50LCByZXNwZWN0aXZlbHkuXG5cbkhvd2V2ZXIsIGBfX2FkZF9tZW1vcnlgIGl0c2VsZiBpcyBjYWxsZWQgYnkgYGFkZF9tZW1vcnlgLiBUaGlzIHN1Z2dlc3RzIGBhZGRfbWVtb3J5YCBjb3VsZCBiZSB0aGUgaGlnaC1sZXZlbCwgZXh0ZXJuYWwgZmFjaW5nIGZ1bmN0aW9uIGZvciBhZGRpbmcgbWVtb3J5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBoaWVyYXJjaHkgZnJvbSB0aGUgdG9wIGRvd24uXG5cblRoZXJlZm9yZSwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHBpbnBvaW50IHRoZSBjYWxsZXJzIG9mIGBhZGRfbWVtb3J5YC4gS25vd2luZyB3aGVyZSAqdGhhdCogZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkIGZyb20gd2lsbCBpbGx1bWluYXRlIHRoZSBlbnRpcmUgcHJvY2Vzcy4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgYmFjayB0byB0aGUgb3JpZ2luYXRpbmcgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1NzcsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxMDo0My45NTk1NzA3MTJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NzYwNjA4NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWRkX21lbW9yeVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2NvcmUtYXBpL21lbW9yeS1ob3RwbHVnLnJzdD0xNzM9bWVtb3J5IGZhc3RlciB0aGFuIGV4cGVjdGVkOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9tZW1vcnktaG90cGx1Zy5yc3QtMTc2LSAgbWVtX2hvdHBsdWdfbG9ja1xcbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbWVtb3J5LWhvdHBsdWcucnN0OjE3NzotIGFkZF9tZW1vcnlfcmVzb3VyY2UoKSB3aWxsIGZpcnN0IHRha2UgdGhlIG1lbV9ob3RwbHVnX2xvY2ssIGZvbGxvd2VkIGJ5XFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9tZW1vcnktaG90cGx1Zy5yc3QtMTc4LSAgdGhlIGRldmljZV9sb2NrKCkgKHdoaWxlIGNyZWF0aW5nIHRoZSBkZXZpY2VzLCBkdXJpbmcgYnVzX2FkZF9kZXZpY2UoKSkuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL21tL21lbW9yeS1tb2RlbC5yc3Q9MTU1PXRoaXMgbGFjayBvZiB1c2VyLWFwaSBjb25zdHJhaW50IHRvIGFsbG93IHN1Yi1zZWN0aW9uIHNpemVkIG1lbW9yeVxcbkRvY3VtZW50YXRpb24vbW0vbWVtb3J5LW1vZGVsLnJzdDoxNTY6cmFuZ2VzIHRvIGJlIHNwZWNpZmllZCB0byA6YzpmdW5jOmBhcmNoX2FkZF9tZW1vcnlgLCB0aGUgdG9wLWhhbGYgb2ZcXG5Eb2N1bWVudGF0aW9uL21tL21lbW9yeS1tb2RlbC5yc3QtMTU3LW1lbW9yeSBob3RwbHVnLiBTdWItc2VjdGlvbiBzdXBwb3J0IGFsbG93cyBmb3IgMk1CIGFzIHRoZSBjcm9zcy1hcmNoXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9jb3JlLWFwaS9tZW1vcnktaG90cGx1Zy5yc3Q9ODc9Tk9USUZZX1NUT1DlgZzmraLlr7npgJrnn6XpmJ/liJfnmoTov5vkuIDmraXlpITnkIbjgIJcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL2NvcmUtYXBpL21lbW9yeS1ob3RwbHVnLnJzdC0xMDUtXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vY29yZS1hcGkvbWVtb3J5LWhvdHBsdWcucnN0OjEwNjotIGFkZF9tZW1vcnlfcmVzb3VyY2UoKeWwhummluWFiOS9v+eUqG1lbV9ob3RwbHVnX2xvY2vvvIznhLblkI7mmK9kZXZpY2VfbG9jaygp77yI5Zyo5YibXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vY29yZS1hcGkvbWVtb3J5LWhvdHBsdWcucnN0LTEwNy0gIOW7uuiuvuWkh+aXtu+8jOWcqGJ1c19hZGRfZGV2aWNlKCnmnJ/pl7TvvInjgIJcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL21lbW9yeS1tb2RlbC5yc3Q9MTA3PVpPTkVfREVWSUNFXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9tZW1vcnktbW9kZWwucnN0LTEyMS3kuIrjgILov5nkuKrlrp7njrDkvp3otZbkuo7ov5nnp43nvLrkuY/nlKjmiLfmjqXlj6PnmoTnuqbmnZ/vvIzlhYHorrjlrZDmrrXlpKflsI/nmoTlhoXlrZjojIPlm7TooqvmjIflrprnu5lcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9tZW1vcnktbW9kZWwucnN0OjEyMjo6YzpmdW5jOmBhcmNoX2FkZF9tZW1vcnlgIO+8jOWNs+WGheWtmOeDreaPkuaLlOeahOS4iuWNiumDqOWIhuOAguWtkOauteaUr+aMgeWFgeiuuDJNQuS9nOS4ulxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL21lbW9yeS1tb2RlbC5yc3QtMTIzLTpjOmZ1bmM6YGRldm1fbWVtcmVtYXBfcGFnZXNgIOeahOi3qOaetuaehOmAmueUqOWvuem9kOmil+eykuW6puOAglxcbi0tXFxuYXJjaC9hcmMvbW0vaW5pdC5jPTQ5PWVhcmx5X3BhcmFtKFxcXCJtZW1cXFwiLCBzZXR1cF9tZW1fc3opO1xcbmFyY2gvYXJjL21tL2luaXQuYy01MC1cXG5hcmNoL2FyYy9tbS9pbml0LmM6NTE6dm9pZCBfX2luaXQgZWFybHlfaW5pdF9kdF9hZGRfbWVtb3J5X2FyY2godTY0IGJhc2UsIHU2NCBzaXplKVxcbmFyY2gvYXJjL21tL2luaXQuYy01Mi17XFxuLS1cXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9zZXR1cC5oPTIwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGFndGFibGUgX190YWd0YWJsZV8jI2ZuIF9fdGFnID0geyB0YWcsIGZuIH1cXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9zZXR1cC5oLTIxLVxcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3NldHVwLmg6MjI6ZXh0ZXJuIGludCBhcm1fYWRkX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKTtcXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9zZXR1cC5oLTIzLWV4dGVybiBfX3ByaW50ZigxLCAyKSB2b2lkIGVhcmx5X3ByaW50KGNvbnN0IGNoYXIgKnN0ciwgLi4uKTtcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9hdGFnc19wYXJzZS5jPTY1PXN0YXRpYyBpbnQgX19pbml0IHBhcnNlX3RhZ19tZW0zMihjb25zdCBzdHJ1Y3QgdGFnICp0YWcpXFxuYXJjaC9hcm0va2VybmVsL2F0YWdzX3BhcnNlLmMtNjYte1xcbmFyY2gvYXJtL2tlcm5lbC9hdGFnc19wYXJzZS5jOjY3OlxcdHJldHVybiBhcm1fYWRkX21lbW9yeSh0YWctXFx1MDAzZXUubWVtLnN0YXJ0LCB0YWctXFx1MDAzZXUubWVtLnNpemUpO1xcbmFyY2gvYXJtL2tlcm5lbC9hdGFnc19wYXJzZS5jLTY4LX1cXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9zZXR1cC5jPTc0Nj12b2lkIF9faW5pdCBkdW1wX21hY2hpbmVfdGFibGUodm9pZClcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9zZXR1cC5jLTc1OS1cXG5hcmNoL2FybS9rZXJuZWwvc2V0dXAuYzo3NjA6aW50IF9faW5pdCBhcm1fYWRkX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKVxcbmFyY2gvYXJtL2tlcm5lbC9zZXR1cC5jLTc2MS17XFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvc2V0dXAuYz04MjY9c3RhdGljIGludCBfX2luaXQgZWFybHlfbWVtKGNoYXIgKnApXFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvc2V0dXAuYy04NDgtXFxuYXJjaC9hcm0va2VybmVsL3NldHVwLmM6ODQ5OlxcdGFybV9hZGRfbWVtb3J5KHN0YXJ0LCBzaXplKTtcXG5hcmNoL2FybS9rZXJuZWwvc2V0dXAuYy04NTAtXFxuLS1cXG5hcmNoL2FybTY0L21tL21tdS5jPTE5NTM9c3RydWN0IHJhbmdlIGFyY2hfZ2V0X21hcHBhYmxlX3JhbmdlKHZvaWQpXFxuLS1cXG5hcmNoL2FybTY0L21tL21tdS5jLTE5ODQtXFxuYXJjaC9hcm02NC9tbS9tbXUuYzoxOTg1OmludCBhcmNoX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSxcXG5hcmNoL2FybTY0L21tL21tdS5jLTE5ODYtXFx0XFx0ICAgIHN0cnVjdCBtaHBfcGFyYW1zICpwYXJhbXMpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmM9NjQ9dm9pZCBfX2luaXQgZml4cmFuZ2VfaW5pdCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgcGdkX3QgKnBnZF9iYXNlKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTEwNi0jaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jOjEwNzppbnQgYXJjaF9hZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCBtaHBfcGFyYW1zICpwYXJhbXMpXFxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTEwOC17XFxuLS1cXG5hcmNoL21pcHMvZ2VuZXJpYy9ib2FyZC1pbmdlbmljLmM9MTA4PXN0YXRpYyBfX2luaXQgY29uc3Qgdm9pZCAqaW5nZW5pY19maXh1cF9mZHQoY29uc3Qgdm9pZCAqZmR0LCBjb25zdCB2b2lkICptYXRjaF9kYXRhKVxcbi0tXFxuYXJjaC9taXBzL2dlbmVyaWMvYm9hcmQtaW5nZW5pYy5jLTExNS1cXHQgICAgZmR0X3BhdGhfb2Zmc2V0KGZkdCwgXFxcIi9tZW1vcnlcXFwiKSBcXHUwMDNjIDApXFxuYXJjaC9taXBzL2dlbmVyaWMvYm9hcmQtaW5nZW5pYy5jOjExNjpcXHRcXHRlYXJseV9pbml0X2R0X2FkZF9tZW1vcnlfYXJjaCgwLCBTWl8zMk0pO1xcbmFyY2gvbWlwcy9nZW5lcmljL2JvYXJkLWluZ2VuaWMuYy0xMTctXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYz02MTM9c3RhdGljIGludCBhZGRfbWVtX3RvX21lbWJsb2NrID0gMTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jLTYxNy1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYzo2MTg6dm9pZCBfX2luaXQgZWFybHlfaW5pdF9kdF9hZGRfbWVtb3J5X2FyY2godTY0IGJhc2UsIHU2NCBzaXplKVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jLTYxOS17XFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vbWVtLmM9MTI5PWludCBfX3JlZiBhZGRfcGFnZXMoaW50IG5pZCwgdW5zaWduZWQgbG9uZyBzdGFydF9wZm4sIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vbWVtLmMtMTQ0LVxcbmFyY2gvcG93ZXJwYy9tbS9tZW0uYzoxNDU6aW50IF9fcmVmIGFyY2hfYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLFxcbmFyY2gvcG93ZXJwYy9tbS9tZW0uYy0xNDYtXFx0XFx0XFx0ICBzdHJ1Y3QgbWhwX3BhcmFtcyAqcGFyYW1zKVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2hvdHBsdWctbWVtb3J5LmM9NTY0PXN0YXRpYyBpbnQgZGxwYXJfYWRkX2xtYihzdHJ1Y3QgZHJtZW1fbG1iICpsbWIpXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYy01ODYtXFx0LyogQWRkIHRoZSBtZW1vcnkgKi9cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYzo1ODc6XFx0cmMgPSBfX2FkZF9tZW1vcnkobmlkLCBsbWItXFx1MDAzZWJhc2VfYWRkciwgYmxvY2tfc3osIE1IUF9NRU1NQVBfT05fTUVNT1JZKTtcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYy01ODgtXFx0aWYgKHJjKSB7XFxuLS1cXG5hcmNoL3Jpc2N2L21tL2luaXQuYz0xNzA0PXN0cnVjdCByYW5nZSBhcmNoX2dldF9tYXBwYWJsZV9yYW5nZSh2b2lkKVxcbi0tXFxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTcxMi1cXG5hcmNoL3Jpc2N2L21tL2luaXQuYzoxNzEzOmludCBfX3JlZiBhcmNoX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSwgc3RydWN0IG1ocF9wYXJhbXMgKnBhcmFtcylcXG5hcmNoL3Jpc2N2L21tL2luaXQuYy0xNzE0LXtcXG4tLVxcbmFyY2gvczM5MC9tbS9pbml0LmM9MjU2PWRldmljZV9pbml0Y2FsbChzMzkwX2NtYV9tZW1faW5pdCk7XFxuLS1cXG5hcmNoL3MzOTAvbW0vaW5pdC5jLTI1OS1cXG5hcmNoL3MzOTAvbW0vaW5pdC5jOjI2MDppbnQgYXJjaF9hZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsXFxuYXJjaC9zMzkwL21tL2luaXQuYy0yNjEtXFx0XFx0ICAgIHN0cnVjdCBtaHBfcGFyYW1zICpwYXJhbXMpXFxuLS1cXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM9OTY0PWludCBhZGRfcGFnZXMoaW50IG5pZCwgdW5zaWduZWQgbG9uZyBzdGFydF9wZm4sIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsXFxuLS1cXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmMtOTkxLVxcbmFyY2gveDg2L21tL2luaXRfNjQuYzo5OTI6aW50IGFyY2hfYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLFxcbmFyY2gveDg2L21tL2luaXRfNjQuYy05OTMtXFx0XFx0ICAgIHN0cnVjdCBtaHBfcGFyYW1zICpwYXJhbXMpXFxuLS1cXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmM9MTY4PXN0YXRpYyBpbnQgYWNwaV9tZW1vcnlfZW5hYmxlX2RldmljZShzdHJ1Y3QgYWNwaV9tZW1vcnlfZGV2aWNlICptZW1fZGV2aWNlKVxcbi0tXFxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jLTIxMi1cXHRcXHRtaHBfZmxhZ3MgfD0gTUhQX01FTU1BUF9PTl9NRU1PUlk7XFxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jOjIxMzpcXHRcXHRyZXN1bHQgPSBfX2FkZF9tZW1vcnkobWdpZCwgaW5mby1cXHUwMDNlc3RhcnRfYWRkciwgaW5mby1cXHUwMDNlbGVuZ3RoLFxcbmRyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYy0yMTQtXFx0XFx0XFx0XFx0ICAgICAgbWhwX2ZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYy0yMTYtXFx0XFx0LypcXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmM6MjE3OlxcdFxcdCAqIElmIHRoZSBtZW1vcnkgYmxvY2sgaGFzIGJlZW4gdXNlZCBieSB0aGUga2VybmVsLCBhZGRfbWVtb3J5KClcXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmM6MjE4OlxcdFxcdCAqIHJldHVybnMgLUVFWElTVC4gSWYgYWRkX21lbW9yeSgpIHJldHVybnMgdGhlIG90aGVyIGVycm9yLCBpdFxcbmRyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYy0yMTktXFx0XFx0ICogbWVhbnMgdGhhdCB0aGlzIG1lbW9yeSBibG9jayBpcyBub3QgdXNlZCBieSB0aGUga2VybmVsLlxcbi0tXFxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jLTIzMi1cXHRcXHQvKlxcbmRyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYzoyMzM6XFx0XFx0ICogQWRkIG51bV9lbmFibGUgZXZlbiBpZiBhZGRfbWVtb3J5KCkgcmV0dXJucyAtRUVYSVNULCBzbyB0aGVcXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmMtMjM0LVxcdFxcdCAqIGRldmljZSBpcyBib3VuZCB0byB0aGlzIGRyaXZlci5cXG4tLVxcbmRyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYy0yMzgtXFx0aWYgKCFudW1fZW5hYmxlZCkge1xcbmRyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYzoyMzk6XFx0XFx0ZGV2X2VycihcXHUwMDI2bWVtX2RldmljZS1cXHUwMDNlZGV2aWNlLVxcdTAwM2VkZXYsIFxcXCJhZGRfbWVtb3J5IGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jLTI0MC1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvYWNwaS9zY2FuLmM9MjgyMT12b2lkIF9faW5pdCBhY3BpX3NjYW5faW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9hY3BpL3NjYW4uYy0yODYxLVxcdC8qXFxuZHJpdmVycy9hY3BpL3NjYW4uYzoyODYyOlxcdCAqIEFsdGhvdWdoIHdlIGNhbGwgX19hZGRfbWVtb3J5KCkgdGhhdCBpcyBkb2N1bWVudGVkIHRvIHJlcXVpcmUgdGhlXFxuZHJpdmVycy9hY3BpL3NjYW4uYy0yODYzLVxcdCAqIGRldmljZV9ob3RwbHVnX2xvY2ssIGl0IGlzIG5vdCBuZWNlc3NhcnkgaGVyZSBiZWNhdXNlIHRoaXMgaXMgYW5cXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz01NjM9c3RhdGljIHNzaXplX3QgcHJvYmVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy01ODEtXFx0bmlkID0gbWVtb3J5X2FkZF9waHlzYWRkcl90b19uaWQocGh5c19hZGRyKTtcXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6NTgyOlxcdHJldCA9IF9fYWRkX21lbW9yeShuaWQsIHBoeXNfYWRkcixcXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtNTgzLVxcdFxcdFxcdCAgIE1JTl9NRU1PUllfQkxPQ0tfU0laRSAqIHNlY3Rpb25zX3Blcl9ibG9jayxcXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz02Nzc9c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKm1lbW9yeV9tZW1ibGtfYXR0cl9ncm91cHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy02ODEtXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jOjY4MjpzdGF0aWMgaW50IF9fYWRkX21lbW9yeV9ibG9jayhzdHJ1Y3QgbWVtb3J5X2Jsb2NrICptZW1vcnkpXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTY4My17XFxuLS1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9NzU0PXZvaWQgbWVtb3J5X2Jsb2NrX2FkZF9uaWRfZWFybHkoc3RydWN0IG1lbW9yeV9ibG9jayAqbWVtLCBpbnQgbmlkKVxcbi0tXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTc4MC1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6NzgxOnN0YXRpYyBpbnQgYWRkX21lbW9yeV9ibG9jayh1bnNpZ25lZCBsb25nIGJsb2NrX2lkLCBpbnQgbmlkLCB1bnNpZ25lZCBsb25nIHN0YXRlLFxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy03ODItXFx0XFx0XFx0ICAgIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxcbi0tXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTgxMi1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6ODEzOlxcdHJldCA9IF9fYWRkX21lbW9yeV9ibG9jayhtZW0pO1xcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy04MTQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz04NTE9aW50IGNyZWF0ZV9tZW1vcnlfYmxvY2tfZGV2aWNlcyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIHNpemUsXFxuLS1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtODY1LVxcdGZvciAoYmxvY2tfaWQgPSBzdGFydF9ibG9ja19pZDsgYmxvY2tfaWQgIT0gZW5kX2Jsb2NrX2lkOyBibG9ja19pZCsrKSB7XFxuZHJpdmVycy9iYXNlL21lbW9yeS5jOjg2NjpcXHRcXHRyZXQgPSBhZGRfbWVtb3J5X2Jsb2NrKGJsb2NrX2lkLCBuaWQsIE1FTV9PRkZMSU5FLCBhbHRtYXAsIGdyb3VwKTtcXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtODY3LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9OTQzPXZvaWQgX19pbml0IG1lbW9yeV9kZXZfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTk3MC1cXHRcXHRibG9ja19pZCA9IG1lbW9yeV9ibG9ja19pZChucik7XFxuZHJpdmVycy9iYXNlL21lbW9yeS5jOjk3MTpcXHRcXHRyZXQgPSBhZGRfbWVtb3J5X2Jsb2NrKGJsb2NrX2lkLCBOVU1BX05PX05PREUsIE1FTV9PTkxJTkUsIE5VTEwsIE5VTEwpO1xcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy05NzItXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9kYXgvS2NvbmZpZz03Mz1jb25maWcgREVWX0RBWF9LTUVNXFxuLS1cXG5kcml2ZXJzL2RheC9LY29uZmlnLTc2LVxcdGRlcGVuZHMgb24gREVWX0RBWFxcbmRyaXZlcnMvZGF4L0tjb25maWc6Nzc6XFx0ZGVwZW5kcyBvbiBNRU1PUllfSE9UUExVRyAjIGZvciBhZGRfbWVtb3J5KCkgYW5kIGZyaWVuZHNcXG5kcml2ZXJzL2RheC9LY29uZmlnLTc4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvZGF4L2ttZW0uYy0yNS1cXG5kcml2ZXJzL2RheC9rbWVtLmM6MjY6LyogTWVtb3J5IHJlc291cmNlIG5hbWUgdXNlZCBmb3IgYWRkX21lbW9yeV9kcml2ZXJfbWFuYWdlZCgpLiAqL1xcbmRyaXZlcnMvZGF4L2ttZW0uYy0yNy1zdGF0aWMgY29uc3QgY2hhciAqa21lbV9uYW1lO1xcbi0tXFxuZHJpdmVycy9kYXgva21lbS5jPTY4PXN0YXRpYyBpbnQgZGV2X2RheF9rbWVtX3Byb2JlKHN0cnVjdCBkZXZfZGF4ICpkZXZfZGF4KVxcbi0tXFxuZHJpdmVycy9kYXgva21lbS5jLTE2Mi1cXHRcXHQgKiBTZXQgZmxhZ3MgYXBwcm9wcmlhdGUgZm9yIFN5c3RlbSBSQU0uICBMZWF2ZSAuLi5fQlVTWSBjbGVhclxcbmRyaXZlcnMvZGF4L2ttZW0uYzoxNjM6XFx0XFx0ICogc28gdGhhdCBhZGRfbWVtb3J5KCkgY2FuIGFkZCBhIGNoaWxkIHJlc291cmNlLiAgRG8gbm90XFxuZHJpdmVycy9kYXgva21lbS5jLTE2NC1cXHRcXHQgKiBpbmhlcml0IGZsYWdzIGZyb20gdGhlIHBhcmVudCBzaW5jZSBpdCBtYXkgc2V0IG5ldyBmbGFnc1xcbmRyaXZlcnMvZGF4L2ttZW0uYzoxNjU6XFx0XFx0ICogdW5rbm93biB0byB1cyB0aGF0IHdpbGwgYnJlYWsgYWRkX21lbW9yeSgpIGJlbG93LlxcbmRyaXZlcnMvZGF4L2ttZW0uYy0xNjYtXFx0XFx0ICovXFxuLS1cXG5kcml2ZXJzL2RheC9rbWVtLmMtMTc2LVxcdFxcdCAqL1xcbmRyaXZlcnMvZGF4L2ttZW0uYzoxNzc6XFx0XFx0cmMgPSBhZGRfbWVtb3J5X2RyaXZlcl9tYW5hZ2VkKGRhdGEtXFx1MDAzZW1naWQsIHJhbmdlLnN0YXJ0LFxcbmRyaXZlcnMvZGF4L2ttZW0uYy0xNzgtXFx0XFx0XFx0XFx0cmFuZ2VfbGVuKFxcdTAwMjZyYW5nZSksIGttZW1fbmFtZSwgbWhwX2ZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2VmaS1pbml0LmM9MTU5PXN0YXRpYyBfX2luaXQgdm9pZCByZXNlcnZlX3JlZ2lvbnModm9pZClcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2VmaS1pbml0LmMtMjIwLVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2VmaS1pbml0LmM6MjIxOlxcdFxcdFxcdGVhcmx5X2luaXRfZHRfYWRkX21lbW9yeV9hcmNoKHBhZGRyLCBzaXplKTtcXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9lZmktaW5pdC5jLTIyMi1cXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIvZWZpc3R1Yi5oPTQwNT11bmlvbiBlZmlfZHhlX3NlcnZpY2VzX3RhYmxlIHtcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIvZWZpc3R1Yi5oLTQwNy1cXHRcXHRlZmlfdGFibGVfaGRyX3QgaGRyO1xcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIvZWZpc3R1Yi5oOjQwODpcXHRcXHR2b2lkICphZGRfbWVtb3J5X3NwYWNlO1xcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIvZWZpc3R1Yi5oLTQwOS1cXHRcXHR2b2lkICphbGxvY2F0ZV9tZW1vcnlfc3BhY2U7XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9saWJzdHViL2VmaXN0dWIuaC00MzAtXFx0XFx0ZWZpX3RhYmxlX2hkcl90IGhkcjtcXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9saWJzdHViL2VmaXN0dWIuaDo0MzE6XFx0XFx0dTMyIGFkZF9tZW1vcnlfc3BhY2U7XFxuZHJpdmVycy9maXJtd2FyZS9lZmkvbGlic3R1Yi9lZmlzdHViLmgtNDMyLVxcdFxcdHUzMiBhbGxvY2F0ZV9tZW1vcnlfc3BhY2U7XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL3Fjb20vcWNvbV90em1lbS5jPTE4ND1zdGF0aWMgdm9pZCBxY29tX3R6bWVtX2NsZWFudXBfYXJlYShzdHJ1Y3QgcWNvbV90em1lbV9hcmVhICphcmVhKVxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9xY29tL3Fjb21fdHptZW0uYy0xOTMtXFxuZHJpdmVycy9maXJtd2FyZS9xY29tL3Fjb21fdHptZW0uYzoxOTQ6c3RhdGljIGludCBxY29tX3R6bWVtX3Bvb2xfYWRkX21lbW9yeShzdHJ1Y3QgcWNvbV90em1lbV9wb29sICpwb29sLFxcbmRyaXZlcnMvZmlybXdhcmUvcWNvbS9xY29tX3R6bWVtLmMtMTk1LVxcdFxcdFxcdFxcdCAgICAgIHNpemVfdCBzaXplLCBnZnBfdCBnZnApXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL3Fjb20vcWNvbV90em1lbS5jPTI0ND1xY29tX3R6bWVtX3Bvb2xfbmV3KGNvbnN0IHN0cnVjdCBxY29tX3R6bWVtX3Bvb2xfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL3Fjb20vcWNvbV90em1lbS5jLTI4MS1cXHRpZiAoY29uZmlnLVxcdTAwM2Vpbml0aWFsX3NpemUpIHtcXG5kcml2ZXJzL2Zpcm13YXJlL3Fjb20vcWNvbV90em1lbS5jOjI4MjpcXHRcXHRyZXQgPSBxY29tX3R6bWVtX3Bvb2xfYWRkX21lbW9yeShwb29sLCBjb25maWctXFx1MDAzZWluaXRpYWxfc2l6ZSxcXG5kcml2ZXJzL2Zpcm13YXJlL3Fjb20vcWNvbV90em1lbS5jLTI4My1cXHRcXHRcXHRcXHRcXHRcXHQgR0ZQX0tFUk5FTCk7XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL3Fjb20vcWNvbV90em1lbS5jPTM3ND1zdGF0aWMgYm9vbCBxY29tX3R6bWVtX3RyeV9ncm93X3Bvb2woc3RydWN0IHFjb21fdHptZW1fcG9vbCAqcG9vbCxcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvcWNvbS9xY29tX3R6bWVtLmMtMzkxLVxcbmRyaXZlcnMvZmlybXdhcmUvcWNvbS9xY29tX3R6bWVtLmM6MzkyOlxcdHJldHVybiAhcWNvbV90em1lbV9wb29sX2FkZF9tZW1vcnkocG9vbCwgcmVxdWVzdGVkLCBnZnApO1xcbmRyaXZlcnMvZmlybXdhcmUvcWNvbS9xY29tX3R6bWVtLmMtMzkzLX1cXG4tLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jPTcwNj1zdGF0aWMgdm9pZCBodl9tZW1faG90X2FkZCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIHNpemUsXFxuLS1cXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy03MjgtXFx0XFx0bmlkID0gbWVtb3J5X2FkZF9waHlzYWRkcl90b19uaWQoUEZOX1BIWVMoc3RhcnRfcGZuKSk7XFxuZHJpdmVycy9odi9odl9iYWxsb29uLmM6NzI5OlxcdFxcdHJldCA9IGFkZF9tZW1vcnkobmlkLCBQRk5fUEhZUygoc3RhcnRfcGZuKSksXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtNzMwLVxcdFxcdFxcdFxcdCBIQV9CWVRFU19JTl9DSFVOSywgTUhQX01FUkdFX1JFU09VUkNFKTtcXG4tLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jPTE3MDA9c3RhdGljIGludCBob3RfYWRkX2VuYWJsZWQodm9pZClcXG4tLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTE3MDYtXFx0ICogRE1fTUVNX0hPVF9BRERfUkVRVUVTVCBkb2Vzbid0IGhhdmUgdGhlIE5VTUEgbm9kZSBpbmZvcm1hdGlvbiBmb3JcXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYzoxNzA3OlxcdCAqIGFkZF9tZW1vcnkoKS5cXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy0xNzA4LVxcdCAqL1xcbi0tXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmM9MTkzNj1zdGF0aWMgaW50IGJhbGxvb25fcHJvYmUoc3RydWN0IGh2X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMTk0Ny1cXHQgKiBIb3QtYWRkIG11c3Qgb3BlcmF0ZSBpbiBjaHVua3MgdGhhdCBhcmUgb2Ygc2l6ZSBlcXVhbCB0byB0aGVcXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYzoxOTQ4OlxcdCAqIG1lbW9yeSBibG9jayBzaXplIGJlY2F1c2UgdGhhdCdzIHdoYXQgdGhlIGNvcmUgYWRkX21lbW9yeSgpXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMTk0OS1cXHQgKiBpbnRlcmZhY2UgcmVxdWlyZXMuIFRoZSBIeXBlci1WIGludGVyZmFjZSByZXF1aXJlcyB0aGF0IHRoZSBtZW1vcnlcXG4tLVxcbmRyaXZlcnMvb2YvZmR0LmM9MTAzNj1pbnQgX19pbml0IGVhcmx5X2luaXRfZHRfc2Nhbl9tZW1vcnkodm9pZClcXG4tLVxcbmRyaXZlcnMvb2YvZmR0LmMtMTA3NC1cXG5kcml2ZXJzL29mL2ZkdC5jOjEwNzU6XFx0XFx0XFx0ZWFybHlfaW5pdF9kdF9hZGRfbWVtb3J5X2FyY2goYmFzZSwgc2l6ZSk7XFxuZHJpdmVycy9vZi9mZHQuYy0xMDc2LVxcbi0tXFxuZHJpdmVycy9vZi9mZHQuYz0xMDkwPWludCBfX2luaXQgZWFybHlfaW5pdF9kdF9zY2FuX2Nob3NlbihjaGFyICpjbWRsaW5lKVxcbi0tXFxuZHJpdmVycy9vZi9mZHQuYy0xMTU3LVxcbmRyaXZlcnMvb2YvZmR0LmM6MTE1ODp2b2lkIF9faW5pdCBfX3dlYWsgZWFybHlfaW5pdF9kdF9hZGRfbWVtb3J5X2FyY2godTY0IGJhc2UsIHU2NCBzaXplKVxcbmRyaXZlcnMvb2YvZmR0LmMtMTE1OS17XFxuLS1cXG5kcml2ZXJzL29mL2ZkdC5jPTEyMjc9dm9pZCBfX2luaXQgZWFybHlfaW5pdF9kdF9zY2FuX25vZGVzKHZvaWQpXFxuLS1cXG5kcml2ZXJzL29mL2ZkdC5jLTEyMzUtXFxuZHJpdmVycy9vZi9mZHQuYzoxMjM2OlxcdC8qIFNldHVwIG1lbW9yeSwgY2FsbGluZyBlYXJseV9pbml0X2R0X2FkZF9tZW1vcnlfYXJjaCAqL1xcbmRyaXZlcnMvb2YvZmR0LmMtMTIzNy1cXHRlYXJseV9pbml0X2R0X3NjYW5fbWVtb3J5KCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY2hhci9zY2xwX21lbS5jPTE4OT1zdGF0aWMgc3NpemVfdCBzY2xwX2NvbmZpZ19tZW1fc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvczM5MC9jaGFyL3NjbHBfbWVtLmMtMjIyLVxcdFxcdCAqIFNldCBlbnRpcmUgbWVtb3J5IGJsb2NrIENNTUEgc3RhdGUgdG8gbm9kYXQuIExhdGVyLCB3aGVuXFxuZHJpdmVycy9zMzkwL2NoYXIvc2NscF9tZW0uYzoyMjM6XFx0XFx0ICogcGFnZSB0YWJsZXMgcGFnZXMgYXJlIGFsbG9jYXRlZCB2aWEgX19hZGRfbWVtb3J5KCksIHRob3NlXFxuZHJpdmVycy9zMzkwL2NoYXIvc2NscF9tZW0uYy0yMjQtXFx0XFx0ICogcmVnaW9ucyBhcmUgbWFya2VkIF9fYXJjaF9zZXRfcGFnZV9kYXQoKS5cXG4tLVxcbmRyaXZlcnMvczM5MC9jaGFyL3NjbHBfbWVtLmMtMjI2LVxcdFxcdF9fYXJjaF9zZXRfcGFnZV9ub2RhdCgodm9pZCAqKV9fdmEoYWRkciksIGJsb2NrX3NpemUgXFx1MDAzZVxcdTAwM2UgUEFHRV9TSElGVCk7XFxuZHJpdmVycy9zMzkwL2NoYXIvc2NscF9tZW0uYzoyMjc6XFx0XFx0cmMgPSBfX2FkZF9tZW1vcnkoMCwgYWRkciwgYmxvY2tfc2l6ZSxcXG5kcml2ZXJzL3MzOTAvY2hhci9zY2xwX21lbS5jLTIyOC1cXHRcXHRcXHRcXHQgIHNjbHBfbWVtLVxcdTAwM2VtZW1tYXBfb25fbWVtb3J5ID9cXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz02Nz1lbnVtIHZpcnRpb19tZW1fc2JtX21iX3N0YXRlIHtcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy02OS1cXHRWSVJUSU9fTUVNX1NCTV9NQl9VTlVTRUQgPSAwLFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo3MDpcXHQvKiAoUGFydGlhbGx5KSBwbHVnZ2VkLCBub3QgYWRkZWQgdG8gTGludXguIEVycm9yIG9uIGFkZF9tZW1vcnkoKS4gKi9cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzEtXFx0VklSVElPX01FTV9TQk1fTUJfUExVR0dFRCxcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz05MD1lbnVtIHZpcnRpb19tZW1fYmJtX2JiX3N0YXRlIHtcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy05Mi1cXHRWSVJUSU9fTUVNX0JCTV9CQl9VTlVTRUQgPSAwLFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo5MzpcXHQvKiBQbHVnZ2VkLCBub3QgYWRkZWQgdG8gTGludXguIEVycm9yIG9uIGFkZF9tZW1vcnkoKS4gKi9cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtOTQtXFx0VklSVElPX01FTV9CQk1fQkJfUExVR0dFRCxcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz0xMDI9c3RydWN0IHZpcnRpb19tZW0ge1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTE0Mi1cXHQgKiBDb3B5IG9mIFxcXCJTeXN0ZW0gUkFNICh2aXJ0aW9fbWVtKVxcXCIgdG8gYmUgdXNlZCBmb3JcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6MTQzOlxcdCAqIGFkZF9tZW1vcnlfZHJpdmVyX21hbmFnZWQoKS5cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtMTQ0LVxcdCAqL1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jPTU4OD1zdGF0aWMgaW50IHZpcnRpb19tZW1fc2JtX3NiX3N0YXRlc19wcmVwYXJlX25leHRfbWIoc3RydWN0IHZpcnRpb19tZW0gKnZtKVxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTYxOS0gKi9cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6NjIwOnN0YXRpYyBib29sIHZpcnRpb19tZW1fY291bGRfYWRkX21lbW9yeShzdHJ1Y3QgdmlydGlvX21lbSAqdm0sIHVpbnQ2NF90IHNpemUpXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTYyMS17XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNjM1LSAqL1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo2MzY6c3RhdGljIGludCB2aXJ0aW9fbWVtX2FkZF9tZW1vcnkoc3RydWN0IHZpcnRpb19tZW0gKnZtLCB1aW50NjRfdCBhZGRyLFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy02MzctXFx0XFx0XFx0XFx0IHVpbnQ2NF90IHNpemUpXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNjU1LVxcdGF0b21pYzY0X2FkZChzaXplLCBcXHUwMDI2dm0tXFx1MDAzZW9mZmxpbmVfc2l6ZSk7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjY1NjpcXHRyYyA9IGFkZF9tZW1vcnlfZHJpdmVyX21hbmFnZWQodm0tXFx1MDAzZW1naWQsIGFkZHIsIHNpemUsIHZtLVxcdTAwM2VyZXNvdXJjZV9uYW1lLFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy02NTctXFx0XFx0XFx0XFx0ICAgICAgIE1IUF9NRVJHRV9SRVNPVVJDRSB8IE1IUF9OSURfSVNfTUdJRCk7XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNjY5LS8qXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjY3MDogKiBTZWUgdmlydGlvX21lbV9hZGRfbWVtb3J5KCk6IFRyeSBhZGRpbmcgYSBzaW5nbGUgTGludXggbWVtb3J5IGJsb2NrLlxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy02NzEtICovXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jPTY3Mj1zdGF0aWMgaW50IHZpcnRpb19tZW1fc2JtX2FkZF9tYihzdHJ1Y3QgdmlydGlvX21lbSAqdm0sIHVuc2lnbmVkIGxvbmcgbWJfaWQpXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNjc2LVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo2Nzc6XFx0cmV0dXJuIHZpcnRpb19tZW1fYWRkX21lbW9yeSh2bSwgYWRkciwgc2l6ZSk7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTY3OC19XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNjgwLS8qXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjY4MTogKiBTZWUgdmlydGlvX21lbV9hZGRfbWVtb3J5KCk6IFRyeSBhZGRpbmcgYSBiaWcgYmxvY2suXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTY4Mi0gKi9cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9NjgzPXN0YXRpYyBpbnQgdmlydGlvX21lbV9iYm1fYWRkX2JiKHN0cnVjdCB2aXJ0aW9fbWVtICp2bSwgdW5zaWduZWQgbG9uZyBiYl9pZClcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy02ODctXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjY4ODpcXHRyZXR1cm4gdmlydGlvX21lbV9hZGRfbWVtb3J5KHZtLCBhZGRyLCBzaXplKTtcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNjg5LX1cXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz05NzQ9c3RhdGljIHZvaWQgdmlydGlvX21lbV9iYm1fbm90aWZ5X2NhbmNlbF9vZmZsaW5lKHN0cnVjdCB2aXJ0aW9fbWVtICp2bSxcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy05ODUtLypcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6OTg2OiAqIFRoaXMgY2FsbGJhY2sgd2lsbCBlaXRoZXIgYmUgY2FsbGVkIHN5bmNocm9ub3VzbHkgZnJvbSBhZGRfbWVtb3J5KCkgb3JcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtOTg3LSAqIGFzeW5jaHJvbm91c2x5IChlLmcuLCB0cmlnZ2VyZWQgdmlhIHVzZXIgc3BhY2UpLiBXZSBoYXZlIHRvIGJlIGNhcmVmdWxcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6OTg4OiAqIHdpdGggbG9ja2luZyB3aGVuIGNhbGxpbmcgYWRkX21lbW9yeSgpLlxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy05ODktICovXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jPTk5MD1zdGF0aWMgaW50IHZpcnRpb19tZW1fbWVtb3J5X25vdGlmaWVyX2NiKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtMTA4Ny1cXHRcXHRpZiAoIWF0b21pY19yZWFkKFxcdTAwMjZ2bS1cXHUwMDNld3FfYWN0aXZlKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzoxMDg4OlxcdFxcdCAgICB2aXJ0aW9fbWVtX2NvdWxkX2FkZF9tZW1vcnkodm0sIHZtLVxcdTAwM2VvZmZsaW5lX3RocmVzaG9sZCAvIDIpKVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy0xMDg5LVxcdFxcdFxcdHZpcnRpb19tZW1fcmV0cnkodm0pO1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jPTE3NjA9c3RhdGljIGludCB2aXJ0aW9fbWVtX3NibV9wbHVnX3JlcXVlc3Qoc3RydWN0IHZpcnRpb19tZW0gKnZtLCB1aW50NjRfdCBkaWZmKVxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTE3OTMtXFx0dmlydGlvX21lbV9zYm1fZm9yX2VhY2hfbWIodm0sIG1iX2lkLCBWSVJUSU9fTUVNX1NCTV9NQl9VTlVTRUQpIHtcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6MTc5NDpcXHRcXHRpZiAoIXZpcnRpb19tZW1fY291bGRfYWRkX21lbW9yeSh2bSwgbWVtb3J5X2Jsb2NrX3NpemVfYnl0ZXMoKSkpXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTE3OTUtXFx0XFx0XFx0cmV0dXJuIC1FTk9TUEM7XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtMTgwNC1cXHR3aGlsZSAobmJfc2IpIHtcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6MTgwNTpcXHRcXHRpZiAoIXZpcnRpb19tZW1fY291bGRfYWRkX21lbW9yeSh2bSwgbWVtb3J5X2Jsb2NrX3NpemVfYnl0ZXMoKSkpXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTE4MDYtXFx0XFx0XFx0cmV0dXJuIC1FTk9TUEM7XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9MTg3OD1zdGF0aWMgaW50IHZpcnRpb19tZW1fYmJtX3BsdWdfcmVxdWVzdChzdHJ1Y3QgdmlydGlvX21lbSAqdm0sIHVpbnQ2NF90IGRpZmYpXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtMTg4OC1cXHR2aXJ0aW9fbWVtX2JibV9mb3JfZWFjaF9iYih2bSwgYmJfaWQsIFZJUlRJT19NRU1fQkJNX0JCX1VOVVNFRCkge1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzoxODg5OlxcdFxcdGlmICghdmlydGlvX21lbV9jb3VsZF9hZGRfbWVtb3J5KHZtLCB2bS1cXHUwMDNlYmJtLmJiX3NpemUpKVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy0xODkwLVxcdFxcdFxcdHJldHVybiAtRU5PU1BDO1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTE5MDEtXFx0d2hpbGUgKG5iX2JiKSB7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjE5MDI6XFx0XFx0aWYgKCF2aXJ0aW9fbWVtX2NvdWxkX2FkZF9tZW1vcnkodm0sIHZtLVxcdTAwM2ViYm0uYmJfc2l6ZSkpXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTE5MDMtXFx0XFx0XFx0cmV0dXJuIC1FTk9TUEM7XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9Mjg3OT1zdGF0aWMgaW50IHZpcnRpb19tZW1fY3JlYXRlX3Jlc291cmNlKHN0cnVjdCB2aXJ0aW9fbWVtICp2bSlcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy0yOTAxLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzoyOTAyOlxcdC8qIFRoZSBtZW1vcnkgaXMgbm90IGFjdHVhbGx5IGJ1c3kgLSBtYWtlIGFkZF9tZW1vcnkoKSB3b3JrLiAqL1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy0yOTAzLVxcdHZtLVxcdTAwM2VwYXJlbnRfcmVzb3VyY2UtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5JT1JFU09VUkNFX0JVU1k7XFxuLS1cXG5kcml2ZXJzL3hlbi9iYWxsb29uLmM9MjY0PXN0YXRpYyBlbnVtIGJwX3N0YXRlIHJlc2VydmVfYWRkaXRpb25hbF9tZW1vcnkodm9pZClcXG4tLVxcbmRyaXZlcnMveGVuL2JhbGxvb24uYy0yOTYtICAgICAgICAvKlxcbmRyaXZlcnMveGVuL2JhbGxvb24uYzoyOTc6ICAgICAgICAgKiBhZGRfbWVtb3J5KCkgd2lsbCBidWlsZCBwYWdlIHRhYmxlcyBmb3IgdGhlIG5ldyBtZW1vcnkgc29cXG5kcml2ZXJzL3hlbi9iYWxsb29uLmMtMjk4LSAgICAgICAgICogdGhlIHAybSBtdXN0IGNvbnRhaW4gaW52YWxpZCBlbnRyaWVzIHNvIHRoZSBjb3JyZWN0XFxuLS1cXG5kcml2ZXJzL3hlbi9iYWxsb29uLmMtMzE4LVxcdC8qXFxuZHJpdmVycy94ZW4vYmFsbG9vbi5jOjMxOTpcXHQgKiBhZGRfbWVtb3J5X3Jlc291cmNlKCkgd2lsbCBjYWxsIG9ubGluZV9wYWdlcygpIHdoaWNoIGluIGl0cyB0dXJuXFxuZHJpdmVycy94ZW4vYmFsbG9vbi5jLTMyMC1cXHQgKiB3aWxsIGNhbGwgeGVuX29ubGluZV9wYWdlKCkgY2FsbGJhY2sgY2F1c2luZyBkZWFkbG9jayBpZiB3ZSBkb24ndFxcbi0tXFxuZHJpdmVycy94ZW4vYmFsbG9vbi5jLTMyNC1cXHRtdXRleF91bmxvY2soXFx1MDAyNmJhbGxvb25fbXV0ZXgpO1xcbmRyaXZlcnMveGVuL2JhbGxvb24uYzozMjU6XFx0LyogYWRkX21lbW9yeV9yZXNvdXJjZSgpIHJlcXVpcmVzIHRoZSBkZXZpY2VfaG90cGx1ZyBsb2NrICovXFxuZHJpdmVycy94ZW4vYmFsbG9vbi5jLTMyNi1cXHRsb2NrX2RldmljZV9ob3RwbHVnKCk7XFxuZHJpdmVycy94ZW4vYmFsbG9vbi5jOjMyNzpcXHRyYyA9IGFkZF9tZW1vcnlfcmVzb3VyY2UobmlkLCByZXNvdXJjZSwgTUhQX01FUkdFX1JFU09VUkNFKTtcXG5kcml2ZXJzL3hlbi9iYWxsb29uLmMtMzI4LVxcdHVubG9ja19kZXZpY2VfaG90cGx1ZygpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oPTMyPXN0cnVjdCBwYWdlICpwZm5fdG9fb25saW5lX3BhZ2UodW5zaWduZWQgbG9uZyBwZm4pO1xcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0zMy1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MzQ6LyogRmxhZ3MgZm9yIGFkZF9tZW1vcnkoKSBhbmQgZnJpZW5kcyB0byBzcGVjaWZ5IG1lbW9yeSBob3RwbHVnIGRldGFpbHMuICovXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTM1LXR5cGVkZWYgaW50IF9fYml0d2lzZSBtaHBfdDtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC00MC0gKiBBbGxvdyBtZXJnaW5nIG9mIHRoZSBhZGRlZCBTeXN0ZW0gUkFNIHJlc291cmNlIHdpdGggYWRqYWNlbnQsXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjQxOiAqIG1lcmdlYWJsZSByZXNvdXJjZXMuIEFmdGVyIGEgc3VjY2Vzc2Z1bCBjYWxsIHRvIGFkZF9tZW1vcnlfcmVzb3VyY2UoKVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC00Mi0gKiB3aXRoIHRoaXMgZmxhZyBzZXQsIHRoZSByZXNvdXJjZSBwb2ludGVyIG11c3Qgbm8gbG9uZ2VyIGJlIHVzZWQgYXMgaXRcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaD0xMjM9ZXh0ZXJuIGludCB0cnlfb25saW5lX25vZGUoaW50IG5pZCk7XFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTEyNC1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MTI1OmV4dGVybiBpbnQgYXJjaF9hZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTEyNi1cXHRcXHRcXHQgICBzdHJ1Y3QgbWhwX3BhcmFtcyAqcGFyYW1zKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaD0yOTI9ZXh0ZXJuIGludCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCk7XFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjI5MzpleHRlcm4gaW50IF9fYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBtaHBfdCBtaHBfZmxhZ3MpO1xcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDoyOTQ6ZXh0ZXJuIGludCBhZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsIG1ocF90IG1ocF9mbGFncyk7XFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjI5NTpleHRlcm4gaW50IGFkZF9tZW1vcnlfcmVzb3VyY2UoaW50IG5pZCwgc3RydWN0IHJlc291cmNlICpyZXNvdXJjZSxcXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjk2LVxcdFxcdFxcdCAgICAgICBtaHBfdCBtaHBfZmxhZ3MpO1xcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDoyOTc6ZXh0ZXJuIGludCBhZGRfbWVtb3J5X2RyaXZlcl9tYW5hZ2VkKGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI5OC1cXHRcXHRcXHRcXHQgICAgIGNvbnN0IGNoYXIgKnJlc291cmNlX25hbWUsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L29mX2ZkdC5oPTc2PWV4dGVybiB2b2lkIGVhcmx5X2luaXRfZmR0X3Jlc2VydmVfc2VsZih2b2lkKTtcXG5pbmNsdWRlL2xpbnV4L29mX2ZkdC5oOjc3OmV4dGVybiB2b2lkIGVhcmx5X2luaXRfZHRfYWRkX21lbW9yeV9hcmNoKHU2NCBiYXNlLCB1NjQgc2l6ZSk7XFxuaW5jbHVkZS9saW51eC9vZl9mZHQuaC03OC1leHRlcm4gdTY0IGR0X21lbV9uZXh0X2NlbGwoaW50IHMsIGNvbnN0IF9fYmUzMiAqKmNlbGxwKTtcXG4tLVxcbmtlcm5lbC9yZXNvdXJjZS5jPTE2MDA9c3RhdGljIGJvb2wgc3lzdGVtX3JhbV9yZXNvdXJjZXNfbWVyZ2VhYmxlKHN0cnVjdCByZXNvdXJjZSAqcjEsXFxuLS1cXG5rZXJuZWwvcmVzb3VyY2UuYy0xNjE0LSAqIFRoaXMgaW50ZXJmYWNlIGlzIGludGVuZGVkIGZvciBtZW1vcnkgaG90cGx1Zywgd2hlcmVieSBsb3RzIG9mIGNvbnRpZ3VvdXNcXG5rZXJuZWwvcmVzb3VyY2UuYzoxNjE1OiAqIHN5c3RlbSByYW0gcmVzb3VyY2VzIGFyZSBhZGRlZCAoZS5nLiwgdmlhIGFkZF9tZW1vcnkqKCkpIGJ5IGEgZHJpdmVyLCBhbmRcXG5rZXJuZWwvcmVzb3VyY2UuYy0xNjE2LSAqIHRoZSBhY3R1YWwgcmVzb3VyY2UgYm91bmRhcmllcyBhcmUgbm90IG9mIGludGVyZXN0IChlLmcuLCBpdCBtaWdodCBiZVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYz0zMTk9c3RhdGljIGludCBjaGVja19wZm5fc3Bhbih1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcylcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMzI1LVxcdCAqIG9ubGluZSwgc28gdGhpcyBjaGVjayBzaG91bGQgb25seSBmaXJlIGZvciBkaXJlY3RcXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjMyNjpcXHQgKiBhcmNoX3thZGQscmVtb3ZlfV9tZW1vcnkoKSB1c2VycyBvdXRzaWRlIG9mIGFkZF9tZW1vcnlfcmVzb3VyY2UoKS5cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTMyNy1cXHQgKi9cXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM9MTQ0MT1zdGF0aWMgaW50IGNyZWF0ZV9hbHRtYXBzX2FuZF9tZW1vcnlfYmxvY2tzKGludCBuaWQsIHN0cnVjdCBtZW1vcnlfZ3JvdXAgKmdyb3VwLFxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNDY1LVxcdFxcdC8qIGNhbGwgYXJjaCdzIG1lbW9yeSBob3RhZGQgKi9cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE0NjY6XFx0XFx0cmV0ID0gYXJjaF9hZGRfbWVtb3J5KG5pZCwgY3VyX3N0YXJ0LCBtZW1ibG9ja19zaXplLCBcXHUwMDI2cGFyYW1zKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE0NjctXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTQ5NC0gKi9cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE0OTU6aW50IGFkZF9tZW1vcnlfcmVzb3VyY2UoaW50IG5pZCwgc3RydWN0IHJlc291cmNlICpyZXMsIG1ocF90IG1ocF9mbGFncylcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE0OTYte1xcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNTU0LVxcdH0gZWxzZSB7XFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNTU1OlxcdFxcdHJldCA9IGFyY2hfYWRkX21lbW9yeShuaWQsIHN0YXJ0LCBzaXplLCBcXHUwMDI2cGFyYW1zKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE1NTYtXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MDEtXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNjAyOi8qIHJlcXVpcmVzIGRldmljZV9ob3RwbHVnX2xvY2ssIHNlZSBhZGRfbWVtb3J5X3Jlc291cmNlKCkgKi9cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE2MDM6aW50IF9fYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBtaHBfdCBtaHBfZmxhZ3MpXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjA0LXtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTYxMS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE2MTI6XFx0cmV0ID0gYWRkX21lbW9yeV9yZXNvdXJjZShuaWQsIHJlcywgbWhwX2ZsYWdzKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MTMtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MTctXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNjE4OmludCBhZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsIG1ocF90IG1ocF9mbGFncylcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MTkte1xcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjIyLVxcdGxvY2tfZGV2aWNlX2hvdHBsdWcoKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE2MjM6XFx0cmMgPSBfX2FkZF9tZW1vcnkobmlkLCBzdGFydCwgc2l6ZSwgbWhwX2ZsYWdzKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MjQtXFx0dW5sb2NrX2RldmljZV9ob3RwbHVnKCk7XFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MjctfVxcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTYyODpFWFBPUlRfU1lNQk9MX0dQTChhZGRfbWVtb3J5KTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2MjktXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE2NTAtICovXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNjUxOmludCBhZGRfbWVtb3J5X2RyaXZlcl9tYW5hZ2VkKGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjUyLVxcdFxcdFxcdCAgICAgIGNvbnN0IGNoYXIgKnJlc291cmNlX25hbWUsIG1ocF90IG1ocF9mbGFncylcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTY2OS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE2NzA6XFx0cmMgPSBhZGRfbWVtb3J5X3Jlc291cmNlKG5pZCwgcmVzLCBtaHBfZmxhZ3MpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTY3MS1cXHRpZiAocmMgXFx1MDAzYyAwKVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjc3LX1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE2Nzg6RVhQT1JUX1NZTUJPTF9HUEwoYWRkX21lbW9yeV9kcml2ZXJfbWFuYWdlZCk7XFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNjc5LVxcbi0tXFxubW0vbWVtcmVtYXAuYz0xNDQ9c3RhdGljIGludCBwYWdlbWFwX3JhbmdlKHN0cnVjdCBkZXZfcGFnZW1hcCAqcGdtYXAsIHN0cnVjdCBtaHBfcGFyYW1zICpwYXJhbXMsXFxuLS1cXG5tbS9tZW1yZW1hcC5jLTIwMy1cXHQgKiBvdmVyIHRoZSBkZXZpY2UgbWVtb3J5IGlzIHVuLWFjY2Vzc2libGUgdGh1cyB3ZSBkbyBub3Qgd2FudCB0b1xcbm1tL21lbXJlbWFwLmM6MjA0OlxcdCAqIGNyZWF0ZSBhIGxpbmVhciBtYXBwaW5nIGZvciB0aGUgbWVtb3J5IGxpa2UgYXJjaF9hZGRfbWVtb3J5KClcXG5tbS9tZW1yZW1hcC5jLTIwNS1cXHQgKiB3b3VsZCBkby5cXG4tLVxcbm1tL21lbXJlbWFwLmMtMjA4LVxcdCAqIHRoZSBDUFUsIHdlIGRvIHdhbnQgdGhlIGxpbmVhciBtYXBwaW5nIGFuZCB0aHVzIHVzZVxcbm1tL21lbXJlbWFwLmM6MjA5OlxcdCAqIGFyY2hfYWRkX21lbW9yeSgpLlxcbm1tL21lbXJlbWFwLmMtMjEwLVxcdCAqL1xcbi0tXFxubW0vbWVtcmVtYXAuYy0yMjAtXFxubW0vbWVtcmVtYXAuYzoyMjE6XFx0XFx0ZXJyb3IgPSBhcmNoX2FkZF9tZW1vcnkobmlkLCByYW5nZS1cXHUwMDNlc3RhcnQsIHJhbmdlX2xlbihyYW5nZSksXFxubW0vbWVtcmVtYXAuYy0yMjItXFx0XFx0XFx0XFx0XFx0cGFyYW1zKTtcXG4tLVxcbm1tL21lbXJlbWFwLmMtMjM1LVxcdGlmIChlcnJvcilcXG5tbS9tZW1yZW1hcC5jOjIzNjpcXHRcXHRnb3RvIGVycl9hZGRfbWVtb3J5O1xcbm1tL21lbXJlbWFwLmMtMjM3LVxcbi0tXFxubW0vbWVtcmVtYXAuYy0yNDktXFxubW0vbWVtcmVtYXAuYzoyNTA6ZXJyX2FkZF9tZW1vcnk6XFxubW0vbWVtcmVtYXAuYy0yNTEtXFx0aWYgKCFpc19wcml2YXRlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxMDo0Ni41MzU2NDExODFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzgxMzY0ODcyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1lbW9yeSBIb3RwbHVnIFBhdGNoKipcblxuT2theSwgc28gYGFkZF9tZW1vcnlgIGlzIHRoZSBmdW5jdGlvbiB3ZSdyZSBpbnRlcmVzdGVkIGluLiBJdCdzIHVzZWQgYnkgc2V2ZXJhbCBrZXkgZHJpdmVycyDigJMgYGh2X2JhbGxvb24uY2AsIGB2aXJ0aW9fbWVtLmNgLCBgZGF4L2ttZW0uY2AsIGFuZCBgYWNwaV9tZW1ob3RwbHVnLmNgIOKAkyBhbmQgY3J1Y2lhbGx5LCBhbHNvIGJ5IHRoZSBzeXNmcyBwcm9iZSBzdG9yZSBpbiBgYmFzZS9tZW1vcnkuY2AuIFRoYXQncyBpbnRlcmVzdGluZywgYmVjYXVzZSBpdCBtZWFucyB3ZSBjYW4gdHJpZ2dlciBtZW1vcnkgaG90cGx1ZyBmcm9tIHVzZXJzcGFjZSB2aWEgYC9zeXMvZGV2aWNlcy9zeXN0ZW0vbWVtb3J5L3Byb2JlYCwgYXNzdW1pbmcgYENPTkZJR19BUkNIX01FTU9SWV9QUk9CRWAgaXMgZW5hYmxlZC4gV2FpdCwgYGRyaXZlcnMvYmFzZS9tZW1vcnkuY2AgYWN0dWFsbHkgY2FsbHMgYF9fYWRkX21lbW9yeWAgdGhyb3VnaCB0aGUgYHByb2JlX3N0b3JlYCBwYXRoLCBhbmQgYHZpcnRpb19tZW1gIGFuZCBgaHZfYmFsbG9vbmAgYWxzbyBkbyBpdC4gU28sIGl0J3MgZGVmaW5pdGVseSBzb21ldGhpbmcgd2UgY2FuIHJlYWNoIGFuZCB0ZXN0IGVhc2lseSB3aXRoaW4gYSBWTSBlbnZpcm9ubWVudC4gRXhjZWxsZW50LlxuXG5Ob3csIGxldCdzIGRpdmUgYmFjayBpbnRvIHRoaXMgcGF0Y2guIEkgc2VlIHRoZSBtYWluIGNoYW5nZSBpcyBoZXJlOlxuXG5gYGBjXG4gXHQvKiBpbml0IG5vZGUncyB6b25lcyBhcyBlbXB0eSB6b25lcywgd2UgZG9uJ3QgaGF2ZSBhbnkgcHJlc2VudCBwYWdlcy4qL1xuLVx0ZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHBnZGF0KTtcbitcdGlmIChmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcocGdkYXQpKVxuK1x0XHRyZXR1cm4gTlVMTDtcbmBgYFxuXG5BbmQgYWxzbywgd2l0aGluIHRoZSBgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnYCBmdW5jdGlvbjpcblxuYGBgY1xuLXZvaWQgX19yZWYgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpXG4raW50IF9fcmVmIGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1ZyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KVxuIHtcbiBcdGludCBuaWQgPSBwZ2RhdC1cdTAwM2Vub2RlX2lkO1xuIFx0ZW51bSB6b25lX3R5cGUgejtcbkBAIC0xNTM0LDggKzE1MzQsMTQgQEAgdm9pZCBfX3JlZiBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdClcbiBcbiBcdHBnZGF0X2luaXRfaW50ZXJuYWxzKHBnZGF0KTtcbiBcbi1cdGlmIChwZ2RhdC1cdTAwM2VwZXJfY3B1X25vZGVzdGF0cyA9PSBcdTAwMjZib290X25vZGVzdGF0cylcbi1cdFx0cGdkYXQtXHUwMDNlcGVyX2NwdV9ub2Rlc3RhdHMgPSBhbGxvY19wZXJjcHUoc3RydWN0IHBlcl9jcHVfbm9kZXN0YXQpO1xuK1x0aWYgKHBnZGF0LVx1MDAzZXBlcl9jcHVfbm9kZXN0YXRzID09IFx1MDAyNmJvb3Rfbm9kZXN0YXRzKSB7XG4rXHRcdHN0cnVjdCBwZXJfY3B1X25vZGVzdGF0IF9fcGVyY3B1ICpwO1xuK1xuK1x0XHRwID0gYWxsb2NfcGVyY3B1KHN0cnVjdCBwZXJfY3B1X25vZGVzdGF0KTtcbitcdFx0aWYgKCFwKVxuK1x0XHRcdHJldHVybiAtRU5PTUVNO1xuK1x0XHRwZ2RhdC1cdTAwM2VwZXJfY3B1X25vZGVzdGF0cyA9IHA7XG4rXHR9XG5gYGBcblxuVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBUaGUgcGF0Y2ggbm93IGhhbmRsZXMgcG90ZW50aWFsIGZhaWx1cmVzIG9mIHRoZSBgYWxsb2NfcGVyY3B1YCBjYWxsLiBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZyB0byBlbnN1cmUgaXQgaGFuZGxlcyBtZW1vcnkgYWxsb2NhdGlvbiBlcnJvcnMgZ3JhY2VmdWxseS4gVGhlIHByZXZpb3VzIHZlcnNpb24gbWlnaHQgaGF2ZSBzaW1wbHkgY3Jhc2hlZCBpZiBgYWxsb2NfcGVyY3B1YCBmYWlsZWQsIHdoaWNoIGNvdWxkIGxlYWQgdG8gYSBkZW5pYWwtb2Ytc2VydmljZSB2dWxuZXJhYmlsaXR5LlxuXG5Ob3csIHdoYXQgYXJlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucz8gSSdsbCBuZWVkIGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgIGF0IGEgbWluaW11bS4gSSBzaG91bGQgY2hlY2sgZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXMgd2VsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc5MzUsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6MTA6NTQuMzQ5MjkzNTE4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzY4MTEzOTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19NRU1PUllfSE9UUExVR1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDc0NSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3Q9Mjc2PVRoZSBmb2xsb3dpbmcgZmlsZXMgYXJlIGN1cnJlbnRseSBkZWZpbmVkOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3QtMzAwLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vbWVtb3J5LWhvdHBsdWcucnN0OjMwMTpcXHRcXHQgICAgICAgQXZhaWxhYmlsaXR5IGRlcGVuZHMgb24gdGhlIENPTkZJR19NRU1PUllfSE9UUExVRyBrZXJuZWxcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL21lbW9yeS1ob3RwbHVnLnJzdC0zMDItXFx0XFx0ICAgICAgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0PTIxMD1HZW5lcmFsXFxuLS1cXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtMjQ2LSAgQSBsb2NrIHRoYXQgcHJvdGVjdHMgdGhlIGZpZWxkcyBkZWZpbmluZyB0aGUgbm9kZSBleHRlbnRzLiBPbmx5IGRlZmluZWQgd2hlblxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdDoyNDc6ICBhdCBsZWFzdCBvbmUgb2YgYGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgYCBvclxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yNDgtICBgYENPTkZJR19ERUZFUlJFRF9TVFJVQ1RfUEFHRV9JTklUYGAgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBlbmFibGVkLlxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yNDktICBgYHBnZGF0X3Jlc2l6ZV9sb2NrKClgYCBhbmQgYGBwZ2RhdF9yZXNpemVfdW5sb2NrKClgYCBhcmUgcHJvdmlkZWQgdG9cXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q6MjUwOiAgbWFuaXB1bGF0ZSBgYG5vZGVfc2l6ZV9sb2NrYGAgd2l0aG91dCBjaGVja2luZyBmb3IgYGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgYFxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yNTEtICBvciBgYENPTkZJR19ERUZFUlJFRF9TVFJVQ1RfUEFHRV9JTklUYGAuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q9Mzc3PUdlbmVyYWxcXG4tLVxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC00ODgtICBlYXJseSBib290LCBleGNsdWRpbmcgaG90cGx1Z2dlZCBtZW1vcnkuIERlZmluZWQgb25seSB3aGVuXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjQ4OTogIGBgQ09ORklHX01FTU9SWV9IT1RQTFVHYGAgaXMgZW5hYmxlZCBhbmQgaW5pdGlhbGl6ZWQgYnlcXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtNDkwLSAgYGBjYWxjdWxhdGVfbm9kZV90b3RhbHBhZ2VzKClgYC5cXG4tLVxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC01MDgtICB0aGUgbWFpbiBhbGxvY2F0b3IgcGF0aC4gSG93ZXZlciwgdGhlIHNlcWxvY2sgaXMgd3JpdHRlbiBxdWl0ZSBpbmZyZXF1ZW50bHkuXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjUwOTogIERlZmluZWQgb25seSB3aGVuIGBgQ09ORklHX01FTU9SWV9IT1RQTFVHYGAgaXMgZW5hYmxlZC5cXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtNTEwLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdD0yMDU9bm9kZV96b25lbGlzdHPlvJXnlKjjgIJcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtMjM0LWBgbm9kZV9zaXplX2xvY2tgYFxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q6MjM1OuS4gOS4quS/neaKpOWumuS5ieiKgueCueiMg+WbtOWtl+auteeahOmUgeOAguS7heWcqOW8gOWQr+S6hiBgYENPTkZJR19NRU1PUllfSE9UUExVR2BgIOaIllxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtMjM2LWBgQ09ORklHX0RFRkVSUkVEX1NUUlVDVF9QQUdFX0lOSVRgYCDphY3nva7pgInpobnkuK3nmoTmn5DkuIDkuKrml7bmiY3lrprkuYnjgILmj5BcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTIzNy3kvpvkuoYgYGBwZ2RhdF9yZXNpemVfbG9jaygpYGAg5ZKMIGBgcGdkYXRfcmVzaXplX3VubG9jaygpYGAg55So5p2l5pON5L2cXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdDoyMzg6YGBub2RlX3NpemVfbG9ja2Bg77yM6ICM5peg6ZyA5qOA5p+lIGBgQ09ORklHX01FTU9SWV9IT1RQTFVHYGAg5oiWXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yMzktYGBDT05GSUdfREVGRVJSRURfU1RSVUNUX1BBR0VfSU5JVGBgIOmAiemhueOAglxcbi0tXFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz0xMzA9Q09ORklHX0JMS19JTkxJTkVfRU5DUllQVElPTj15XFxuLS1cXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTEzMi0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjEzMzpDT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWctMTM0LUNPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXlcXG4tLVxcbmFyY2gvYXJtNjQvbW0vbW11LmM9MTQyNj12b2lkIF9faW5pdCBwYWdpbmdfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm02NC9tbS9tbXUuYy0xNDM1LVxcbmFyY2gvYXJtNjQvbW0vbW11LmM6MTQzNjojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9hcm02NC9tbS9tbXUuYy0xNDM3LXN0YXRpYyB2b2lkIGZyZWVfaG90cGx1Z19wYWdlX3JhbmdlKHN0cnVjdCBwYWdlICpwYWdlLCBzaXplX3Qgc2l6ZSxcXG4tLVxcbmFyY2gvYXJtNjQvbW0vbW11LmM9MTc4NT1pbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIGludCBub2RlLFxcbi0tXFxuYXJjaC9hcm02NC9tbS9tbXUuYy0xNzk4LVxcbmFyY2gvYXJtNjQvbW0vbW11LmM6MTc5OTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9hcm02NC9tbS9tbXUuYy0xODAwLXZvaWQgdm1lbW1hcF9mcmVlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbi0tXFxuYXJjaC9hcm02NC9tbS9tbXUuYy0xODA3LX1cXG5hcmNoL2FybTY0L21tL21tdS5jOjE4MDg6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xcbmFyY2gvYXJtNjQvbW0vbW11LmMtMTgwOS1cXG4tLVxcbmFyY2gvYXJtNjQvbW0vbW11LmM9MTg5Mj1pbnQgcHVkX2ZyZWVfcG1kX3BhZ2UocHVkX3QgKnB1ZHAsIHVuc2lnbmVkIGxvbmcgYWRkcilcXG4tLVxcbmFyY2gvYXJtNjQvbW0vbW11LmMtMTk0MC1cXG5hcmNoL2FybTY0L21tL21tdS5jOjE5NDE6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvYXJtNjQvbW0vbW11LmMtMTk0Mi1zdGF0aWMgdm9pZCBfX3JlbW92ZV9wZ2RfbWFwcGluZyhwZ2RfdCAqcGdkaXIsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHU2NCBzaXplKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz05Nz1DT05GSUdfWlNNQUxMT0M9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWctOTgtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzo5OTpDT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWctMTAwLSMgQ09ORklHX01IUF9ERUZBVUxUX09OTElORV9UWVBFX09GRkxJTkUgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZz0xMTI9Q09ORklHX1pTTUFMTE9DPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTExMy0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnOjExNDpDT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTE1LSMgQ09ORklHX01IUF9ERUZBVUxUX09OTElORV9UWVBFX09GRkxJTkUgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jPTY0PXZvaWQgX19pbml0IGZpeHJhbmdlX2luaXQodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIHBnZF90ICpwZ2RfYmFzZSlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL21tL2luaXQuYy0xMDUtXFxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jOjEwNjojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTEwNy1pbnQgYXJjaF9hZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCBtaHBfcGFyYW1zICpwYXJhbXMpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmM9MTQzPWludCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL21tL2luaXQuYy0xNTItXFxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jOjE1MzojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTE1NC12b2lkIHZtZW1tYXBfZnJlZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXApXFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZz01Nz1DT05GSUdfTlVNQT15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6NTg6Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZy01OS1DT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc9ODY9Q09ORklHX1NIVUZGTEVfUEFHRV9BTExPQ0FUT1I9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZy04Ny0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc6ODg6Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctODktQ09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ3RhYmxlLmg9MTAxNT1zdGF0aWMgaW5saW5lIGludCBfX21lbWluaXQgdm1lbW1hcF9jcmVhdGVfbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ3RhYmxlLmgtMTAyMy1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUuaDoxMDI0OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUuaC0xMDI1LXN0YXRpYyBpbmxpbmUgdm9pZCB2bWVtbWFwX3JlbW92ZV9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4Lmg9MzMzPXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyByYWRpeF9fZ2V0X3RyZWVfc2l6ZSh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9yYWRpeC5oLTM0OC1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4Lmg6MzQ5OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4LmgtMzUwLWludCByYWRpeF9fY3JlYXRlX3NlY3Rpb25fbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaD0zNTI9aW50IHJhZGl4X19yZW1vdmVfc2VjdGlvbl9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTtcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4Lmg6MzUzOiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4LmgtMzU0LVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21hY2hkZXAuaD0yNj1zdHJ1Y3QgbWFjaGRlcF9jYWxscyB7XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbWFjaGRlcC5oLTMzLSNlbmRpZlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9tYWNoZGVwLmg6MzQ6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9tYWNoZGVwLmgtMzUtXFx0dW5zaWduZWQgbG9uZ1xcdCgqbWVtb3J5X2Jsb2NrX3NpemUpKHZvaWQpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21tem9uZS5oPTI4PWV4dGVybiBjcHVtYXNrX3Zhcl90IG5vZGVfdG9fY3B1bWFza19tYXBbXTtcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbW16b25lLmg6Mjk6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9tbXpvbmUuaC0zMC1leHRlcm4gdW5zaWduZWQgbG9uZyBtYXhfcGZuO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NwYXJzZW1lbS5oLTE0LVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9zcGFyc2VtZW0uaDoxNTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NwYXJzZW1lbS5oLTE2LWV4dGVybiBpbnQgcmVtb3ZlX3NlY3Rpb25fbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3BhcnNlbWVtLmg9MjM9c3RhdGljIGlubGluZSBpbnQgaG90X2FkZF9zY25fdG9fbmlkKHVuc2lnbmVkIGxvbmcgc2NuX2FkZHIpXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3BhcnNlbWVtLmgtMjctI2VuZGlmIC8qIENPTkZJR19OVU1BICovXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NwYXJzZW1lbS5oOjI4OiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3BhcnNlbWVtLmgtMjktI2VuZGlmIC8qIF9fS0VSTkVMX18gKi9cXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvc2V0dXBfNjQuYz04MzI9dm9pZCBfX2luaXQgc2V0dXBfcGVyX2NwdV9hcmVhcyh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zZXR1cF82NC5jLTg4MS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3NldHVwXzY0LmM6ODgyOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Bvd2VycGMva2VybmVsL3NldHVwXzY0LmMtODgzLXVuc2lnbmVkIGxvbmcgbWVtb3J5X2Jsb2NrX3NpemVfYnl0ZXModm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXhlYy9jcmFzaC5jPTQ3Mj11bnNpZ25lZCBpbnQgYXJjaF9jcmFzaF9nZXRfZWxmY29yZWhkcl9zaXplKHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMva2V4ZWMvY3Jhc2guYy00NzctXFx0cGhkcl9jbnQgPSBudW1fcG9zc2libGVfY3B1cygpICsgMTtcXG5hcmNoL3Bvd2VycGMva2V4ZWMvY3Jhc2guYzo0Nzg6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01FTU9SWV9IT1RQTFVHKSlcXG5hcmNoL3Bvd2VycGMva2V4ZWMvY3Jhc2guYy00NzktXFx0XFx0cGhkcl9jbnQgKz0gQ09ORklHX0NSQVNIX01BWF9NRU1PUllfUkFOR0VTO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2tleGVjL2ZpbGVfbG9hZF82NC5jPTM3Nz1zdGF0aWMgdW5zaWduZWQgaW50IGtkdW1wX2V4dHJhX2VsZmNvcmVoZHJfc2l6ZShzdHJ1Y3QgY3Jhc2hfbWVtICpjbWVtKVxcbmFyY2gvcG93ZXJwYy9rZXhlYy9maWxlX2xvYWRfNjQuYy0zNzgte1xcbmFyY2gvcG93ZXJwYy9rZXhlYy9maWxlX2xvYWRfNjQuYzozNzk6I2lmIGRlZmluZWQoQ09ORklHX0NSQVNIX0hPVFBMVUcpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX01FTU9SWV9IT1RQTFVHKVxcbmFyY2gvcG93ZXJwYy9rZXhlYy9maWxlX2xvYWRfNjQuYy0zODAtXFx0dW5zaWduZWQgaW50IGV4dHJhX3N6ID0gMDtcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYz0xMDc9aW50IF9fbWVtaW5pdCBoYXNoX192bWVtbWFwX2NyZWF0ZV9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmMtMTI5LVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYzoxMzA6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYy0xMzEtdm9pZCBoYXNoX192bWVtbWFwX3JlbW92ZV9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jPTExOTY9c3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IGh0YWJfZ2V0X3RhYmxlX3NpemUodm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTIxMC1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jOjEyMTE6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTIxMi1zdGF0aWMgaW50IHJlc2l6ZV9ocHRfZm9yX2hvdHBsdWcodW5zaWduZWQgbG9uZyBuZXdfbWVtX3NpemUpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jPTEyNjI9aW50IGhhc2hfX3JlbW92ZV9zZWN0aW9uX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTEyNzUtfVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM6MTI3NjojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0xMjc3LVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYz0yNzU9bm90cmFjZSB2b2lkIG1tdV9jbGVhbnVwX2FsbCh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYy0yODQtXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYzoyODU6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmMtMjg2LWludCBfX21lbWluaXQgY3JlYXRlX3NlY3Rpb25fbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM9Mjk1PWludCBfX21lbWluaXQgcmVtb3ZlX3NlY3Rpb25fbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmMtMzAxLX1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jOjMwMjojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYy0zMDMtXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jPTY3OT1ub3RyYWNlIHZvaWQgcmFkaXhfX21tdV9jbGVhbnVwX2FsbCh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYy02OTEtXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYzo2OTI6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtNjkzLXN0YXRpYyB2b2lkIGZyZWVfcHRlX3RhYmxlKHB0ZV90ICpwdGVfc3RhcnQsIHBtZF90ICpwbWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jPTk0Nj1pbnQgX19tZW1pbml0IHJhZGl4X19yZW1vdmVfc2VjdGlvbl9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYy05NTAtfVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM6OTUxOiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTk1Mi1cXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM9MTMwNj1pbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGVfY29tcG91bmRfcGFnZXModW5zaWduZWQgbG9uZyBzdGFydF9wZm4sXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTE0MDgtXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYzoxNDA5OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTE0MTAtdm9pZCBfX21lbWluaXQgcmFkaXhfX3ZtZW1tYXBfcmVtb3ZlX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBwYWdlX3NpemUpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jPTI3Nj1pbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIGludCBub2RlLFxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYy0yODctXFxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYzoyODg6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmMtMjg5LXN0YXRpYyB1bnNpZ25lZCBsb25nIHZtZW1tYXBfbGlzdF9mcmVlKHVuc2lnbmVkIGxvbmcgc3RhcnQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jPTQ2Nj1zdGF0aWMgaW50IF9faW5pdCBkdF9zY2FuX21tdV9waWRfd2lkdGgodW5zaWduZWQgbG9uZyBub2RlLFxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYy00OTgtICovXFxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYzo0OTk6I2lmbmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jLTUwMC0jZGVmaW5lIERFRkFVTFRfTUVNT1JZX0JMT0NLX1NJWkVcXHRTWl8xNk1cXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9tZW0uYz01Mj1FWFBPUlRfU1lNQk9MKF9fcGh5c19tZW1fYWNjZXNzX3Byb3QpO1xcbmFyY2gvcG93ZXJwYy9tbS9tZW0uYy01My1cXG5hcmNoL3Bvd2VycGMvbW0vbWVtLmM6NTQ6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9tbS9tZW0uYy01NS1zdGF0aWMgREVGSU5FX01VVEVYKGxpbmVhcl9tYXBwaW5nX211dGV4KTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9tbXVfZGVjbC5oPTE3ND1zdGF0aWMgaW5saW5lIGJvb2wgZGVidWdfcGFnZWFsbG9jX2VuYWJsZWRfb3Jfa2ZlbmNlKHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vbW11X2RlY2wuaC0xNzgtXFxuYXJjaC9wb3dlcnBjL21tL21tdV9kZWNsLmg6MTc5OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Bvd2VycGMvbW0vbW11X2RlY2wuaC0xODAtaW50IGNyZWF0ZV9zZWN0aW9uX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL2Jvb2szZV9wZ3RhYmxlLmM9MjM9aW50IF9fbWVtaW5pdCB2bWVtbWFwX2NyZWF0ZV9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL2Jvb2szZV9wZ3RhYmxlLmMtNDYtXFxuYXJjaC9wb3dlcnBjL21tL25vaGFzaC9ib29rM2VfcGd0YWJsZS5jOjQ3OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL2Jvb2szZV9wZ3RhYmxlLmMtNDgtdm9pZCB2bWVtbWFwX3JlbW92ZV9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vbnVtYS5jPTEyNDE9ZWFybHlfcGFyYW0oXFxcIm51bWFcXFwiLCBlYXJseV9udW1hKTtcXG5hcmNoL3Bvd2VycGMvbW0vbnVtYS5jLTEyNDItXFxuYXJjaC9wb3dlcnBjL21tL251bWEuYzoxMjQzOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Bvd2VycGMvbW0vbnVtYS5jLTEyNDQtLypcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9udW1hLmM9MTM2NT11NjQgbWVtb3J5X2hvdHBsdWdfbWF4KHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vbnVtYS5jLTEzNjgtfVxcbmFyY2gvcG93ZXJwYy9tbS9udW1hLmM6MTM2OTojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXFxuYXJjaC9wb3dlcnBjL21tL251bWEuYy0xMzcwLVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3NldHVwLmM9NDM3PXN0YXRpYyB2b2lkIHBudl9rZXhlY19jcHVfZG93bihpbnQgY3Jhc2hfc2h1dGRvd24sIGludCBzZWNvbmRhcnkpXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvc2V0dXAuYy00ODItXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3NldHVwLmM6NDgzOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvc2V0dXAuYy00ODQtc3RhdGljIHVuc2lnbmVkIGxvbmcgcG52X21lbW9yeV9ibG9ja19zaXplKHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvc2V0dXAuYz01Njk9ZGVmaW5lX21hY2hpbmUocG93ZXJudikge1xcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3NldHVwLmMtNTg0LSNlbmRpZlxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9zZXR1cC5jOjU4NTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3NldHVwLmMtNTg2LVxcdC5tZW1vcnlfYmxvY2tfc2l6ZVxcdD0gcG52X21lbW9yeV9ibG9ja19zaXplLFxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL01ha2VmaWxlPTE3PW9iai0kKENPTkZJR19IT1RQTFVHX0NQVSlcXHQrPSBob3RwbHVnLWNwdS5vXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19NRU1PUllfSE9UUExVRylcXHQrPSBob3RwbHVnLW1lbW9yeS5vIHBtZW0ub1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9NYWtlZmlsZS0xOS1cXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9pb21tdS5jPTEyODY9c3RhdGljIHBoeXNfYWRkcl90IGRkd19tZW1vcnlfaG90cGx1Z19tYXgodm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9pb21tdS5jLTEyODktXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2lvbW11LmM6MTI5MDojaWYgZGVmaW5lZChDT05GSUdfTlVNQSkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfTUVNT1JZX0hPVFBMVUcpXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2lvbW11LmMtMTI5MS1cXHRtYXhfYWRkciA9IGhvdF9hZGRfZHJjb25mX21lbW9yeV9tYXgoKTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9wc2VyaWVzLmg9NjA9aW50IGhhbmRsZV9kbHBhcl9lcnJvcmxvZyhzdHJ1Y3QgcHNlcmllc19ocF9lcnJvcmxvZyAqaHBfZXJybG9nKTtcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvcHNlcmllcy5oLTYxLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9wc2VyaWVzLmg6NjI6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9wc2VyaWVzLmgtNjMtaW50IGRscGFyX21lbW9yeShzdHJ1Y3QgcHNlcmllc19ocF9lcnJvcmxvZyAqaHBfZWxvZyk7XFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYz0xMTE5PXN0YXRpYyBpbnQgcFNlcmllc19wY2lfcHJvYmVfbW9kZShzdHJ1Y3QgcGNpX2J1cyAqYnVzKVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmMtMTEyNS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYzoxMTI2OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYy0xMTI3LXN0YXRpYyB1bnNpZ25lZCBsb25nIHBzZXJpZXNfbWVtb3J5X2Jsb2NrX3NpemUodm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jPTExNDA9ZGVmaW5lX21hY2hpbmUocHNlcmllcykge1xcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmMtMTE2Mi0jZW5kaWZcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYzoxMTYzOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYy0xMTY0LVxcdC5tZW1vcnlfYmxvY2tfc2l6ZVxcdD0gcHNlcmllc19tZW1vcnlfYmxvY2tfc2l6ZSxcXG4tLVxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jPTE0Mjk9dm9pZCBfX2luaXQgcGd0YWJsZV9jYWNoZV9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL3Jpc2N2L21tL2luaXQuYy0xNDMzLVxcdFxcdHByZWFsbG9jYXRlX3BnZF9wYWdlc19yYW5nZShNT0RVTEVTX1ZBRERSLCBNT0RVTEVTX0VORCwgXFxcImJwZi9tb2R1bGVzXFxcIik7XFxuYXJjaC9yaXNjdi9tbS9pbml0LmM6MTQzNDpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfTUVNT1JZX0hPVFBMVUcpKSB7XFxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTQzNS1cXHRcXHRwcmVhbGxvY2F0ZV9wZ2RfcGFnZXNfcmFuZ2UoVk1FTU1BUF9TVEFSVCwgVk1FTU1BUF9FTkQsIFxcXCJ2bWVtbWFwXFxcIik7XFxuLS1cXG5hcmNoL3Jpc2N2L21tL2luaXQuYz0xNDQ3PXN0cnVjdCBleGVjbWVtX2luZm8gX19pbml0ICpleGVjbWVtX2FyY2hfc2V0dXAodm9pZClcXG4tLVxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTE0NzYtXFxuYXJjaC9yaXNjdi9tbS9pbml0LmM6MTQ3NzojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTQ3OC1zdGF0aWMgdm9pZCBfX21lbWluaXQgZnJlZV9wdGVfdGFibGUocHRlX3QgKnB0ZV9zdGFydCwgcG1kX3QgKnBtZClcXG4tLVxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jPTE3NDA9dm9pZCBfX3JlZiB2bWVtbWFwX2ZyZWUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwKVxcbi0tXFxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTc0My19XFxuYXJjaC9yaXNjdi9tbS9pbml0LmM6MTc0NDojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9MTAzPUNPTkZJR19TTFVCX1NUQVRTPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctMTA0LSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxMDU6Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctMTA2LUNPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz05Nj1DT05GSUdfU0xBQl9CVUNLRVRTPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctOTctIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjk4OkNPTkZJR19NRU1PUllfSE9UUExVRz15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTk5LUNPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXlcXG4tLVxcbmFyY2gvczM5MC9tbS9pbml0LmM9MTg4PXZvaWQgX19pbml0IHNldHVwX3Blcl9jcHVfYXJlYXModm9pZClcXG4tLVxcbmFyY2gvczM5MC9tbS9pbml0LmMtMjA5LVxcbmFyY2gvczM5MC9tbS9pbml0LmM6MjEwOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3MzOTAvbW0vaW5pdC5jLTIxMS1cXG4tLVxcbmFyY2gvczM5MC9tbS9pbml0LmM9MjgxPXZvaWQgYXJjaF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxcbi0tXFxuYXJjaC9zMzkwL21tL2luaXQuYy0yODktfVxcbmFyY2gvczM5MC9tbS9pbml0LmM6MjkwOiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cXG5hcmNoL3MzOTAvbW0vaW5pdC5jLTI5MS1cXG4tLVxcbmFyY2gvczM5MC9tbS92bWVtLmM9NTEzPWludCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgaW50IG5vZGUsXFxuLS1cXG5hcmNoL3MzOTAvbW0vdm1lbS5jLTUyNi1cXG5hcmNoL3MzOTAvbW0vdm1lbS5jOjUyNzojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9zMzkwL21tL3ZtZW0uYy01MjgtXFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvY3Jhc2guYz00MTY9aW50IGNyYXNoX2xvYWRfc2VnbWVudHMoc3RydWN0IGtpbWFnZSAqaW1hZ2UpXFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvY3Jhc2guYy00MzYtXFx0ICovXFxuYXJjaC94ODYva2VybmVsL2NyYXNoLmM6NDM3OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19NRU1PUllfSE9UUExVRykpXFxuYXJjaC94ODYva2VybmVsL2NyYXNoLmMtNDM4LVxcdFxcdHBudW0gPSAyICsgQ09ORklHX05SX0NQVVNfREVGQVVMVCArIENPTkZJR19DUkFTSF9NQVhfTUVNT1JZX1JBTkdFUztcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9jcmFzaC5jPTQ5ND11bnNpZ25lZCBpbnQgYXJjaF9jcmFzaF9nZXRfZWxmY29yZWhkcl9zaXplKHZvaWQpXFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvY3Jhc2guYy00OTktXFx0c3ogPSAyICsgQ09ORklHX05SX0NQVVNfREVGQVVMVDtcXG5hcmNoL3g4Ni9rZXJuZWwvY3Jhc2guYzo1MDA6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01FTU9SWV9IT1RQTFVHKSlcXG5hcmNoL3g4Ni9rZXJuZWwvY3Jhc2guYy01MDEtXFx0XFx0c3ogKz0gQ09ORklHX0NSQVNIX01BWF9NRU1PUllfUkFOR0VTO1xcbi0tXFxuYXJjaC94ODYva2VybmVsL2U4MjAuYz05MDk9X19pbml0IHN0YXRpYyBpbnQgcGFyc2VfbWVtb3B0KGNoYXIgKnApXFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvZTgyMC5jLTkzNC1cXG5hcmNoL3g4Ni9rZXJuZWwvZTgyMC5jOjkzNTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC94ODYva2VybmVsL2U4MjAuYy05MzYtXFx0bWF4X21lbV9zaXplID0gbWVtX3NpemU7XFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvZTgyMC5jPTEyODg9X19pbml0IHZvaWQgZTgyMF9fbWVtYmxvY2tfc2V0dXAodm9pZClcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9lODIwLmMtMTI5Mi1cXG5hcmNoL3g4Ni9rZXJuZWwvZTgyMC5jOjEyOTM6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gveDg2L2tlcm5lbC9lODIwLmMtMTI5NC1cXHQvKlxcbi0tXFxuYXJjaC94ODYvbW0vaW5pdF82NC5jPTg1ND1zdGF0aWMgdm9pZCBfX21lbWluaXQgdm1lbW1hcF9mbHVzaF91bnVzZWRfcG1kKHZvaWQpXFxuLS1cXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmMtODY1LVxcbmFyY2gveDg2L21tL2luaXRfNjQuYzo4NjY6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gveDg2L21tL2luaXRfNjQuYy04NjctLyogUmV0dXJucyB0cnVlIGlmIHRoZSBQTUQgaXMgY29tcGxldGVseSB1bnVzZWQgYW5kIHRodXMgaXQgY2FuIGJlIGZyZWVkICovXFxuLS1cXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM9OTE4PXN0YXRpYyB2b2lkIF9fbWVtaW5pdCB2bWVtbWFwX3VzZV9uZXdfc3ViX3BtZCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcXG4tLVxcbmFyY2gveDg2L21tL2luaXRfNjQuYy05NDctICovXFxuYXJjaC94ODYvbW0vaW5pdF82NC5jOjk0ODojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC94ODYvbW0vaW5pdF82NC5jLTk0OS0vKlxcbi0tXFxuYXJjaC94ODYvbW0vaW5pdF82NC5jPTEzMDM9dm9pZCBfX3JlZiBhcmNoX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXAsXFxuLS1cXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmMtMTMxMS19XFxuYXJjaC94ODYvbW0vaW5pdF82NC5jOjEzMTI6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xcbmFyY2gveDg2L21tL2luaXRfNjQuYy0xMzEzLVxcbi0tXFxuYXJjaC94ODYveGVuL3NldHVwLmM9NTM3PXN0YXRpYyB2b2lkIF9faW5pdCB4ZW5fYWxpZ25fYW5kX2FkZF9lODIwX3JlZ2lvbihwaHlzX2FkZHJfdCBzdGFydCxcXG4tLVxcbmFyY2gveDg2L3hlbi9zZXR1cC5jLTU0NS1cXHRcXHRlbmQgXFx1MDAyNj0gfigocGh5c19hZGRyX3QpUEFHRV9TSVpFIC0gMSk7XFxuYXJjaC94ODYveGVuL3NldHVwLmM6NTQ2OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3g4Ni94ZW4vc2V0dXAuYy01NDctXFx0XFx0LypcXG4tLVxcbmFyY2gveDg2L3hlbi9zZXR1cC5jPTc5ND1jaGFyICogX19pbml0IHhlbl9tZW1vcnlfc2V0dXAodm9pZClcXG4tLVxcbmFyY2gveDg2L3hlbi9zZXR1cC5jLTgxMy1cXG5hcmNoL3g4Ni94ZW4vc2V0dXAuYzo4MTQ6I2lmIGRlZmluZWQoQ09ORklHX01FTU9SWV9IT1RQTFVHKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19YRU5fQkFMTE9PTilcXG5hcmNoL3g4Ni94ZW4vc2V0dXAuYy04MTUtXFx0eGVuX3NhdmVkX21heF9tZW1fc2l6ZSA9IG1heF9tZW1fc2l6ZTtcXG4tLVxcbmRyaXZlcnMvYWNwaS9udW1hL3NyYXQuYz0zNTk9YWNwaV9wYXJzZV9tZW1vcnlfYWZmaW5pdHkodW5pb24gYWNwaV9zdWJ0YWJsZV9oZWFkZXJzICpoZWFkZXIsXFxuLS1cXG5kcml2ZXJzL2FjcGkvbnVtYS9zcmF0LmMtMzc5LVxcdFxcdHJldHVybiAwO1xcbmRyaXZlcnMvYWNwaS9udW1hL3NyYXQuYzozODA6XFx0aG90cGx1Z2dhYmxlID0gSVNfRU5BQkxFRChDT05GSUdfTUVNT1JZX0hPVFBMVUcpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9hY3BpL251bWEvc3JhdC5jLTM4MS1cXHRcXHQobWEtXFx1MDAzZWZsYWdzIFxcdTAwMjYgQUNQSV9TUkFUX01FTV9IT1RfUExVR0dBQkxFKTtcXG4tLVxcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jPTQyOD1zdGF0aWMgdTMyIGNhbGN1bGF0ZV9zdXBwb3J0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYy00NTEtICogQmFja2dyb3VuZCBvbiBob3RwbHVnIHN1cHBvcnQsIGFuZCBtYWtpbmcgaXQgZGVwZW5kIG9uIG9ubHlcXG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYzo0NTI6ICogQ09ORklHX0hPVFBMVUdfUENJX1BDSUUgdnMuIGFsc28gY29uc2lkZXJpbmcgQ09ORklHX01FTU9SWV9IT1RQTFVHOlxcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jLTQ1My0gKlxcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jOjQ1NDogKiBDT05GSUdfQUNQSV9IT1RQTFVHX01FTU9SWSBkb2VzIGRlcGVuZCBvbiBDT05GSUdfTUVNT1JZX0hPVFBMVUcsIGJ1dFxcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jLTQ1NS0gKiB0aGVyZSBpcyBubyBleGlzdGluZyBfT1NDIGZvciBtZW1vcnkgaG90cGx1ZyBzdXBwb3J0LiBUaGUgcmVhc29uIGlzIHRoYXRcXG4tLVxcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jLTQ3MC0gKiBub3Qgc3VwcG9ydCBibG9ja2luZyBob3RwbHVnLCBpcyB0byByZXF1aXJlIHRoZSBtZW1vcnkgZGV2aWNlIHRvIGJlXFxuZHJpdmVycy9hY3BpL3BjaV9yb290LmM6NDcxOiAqIGRpc2FibGVkIGJlZm9yZSBob3RwbHVnIGlzIGF0dGVtcHRlZC4gV2hlbiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgaXNcXG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYy00NzItICogZGlzYWJsZWQgdGhhdCBzdGVwIHdpbGwgZmFpbCBhbmQgdGhlIHJlbW92ZSBhdHRlbXB0IGNhbmNlbGxlZCBieSB0aGVcXG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYy00NzMtICogdXNlci4gSWYgdGhhdCBpcyBub3QgaG9ub3JlZCBhbmQgdGhlIGNhcmQgaXMgcmVtb3ZlZCBhbnl3YXkgdGhlbiBpdFxcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jOjQ3NDogKiBkb2VzIG5vdCBtYXR0ZXIgaWYgQ09ORklHX01FTU9SWV9IT1RQTFVHIGlzIGVuYWJsZWQgb3Igbm90LCBpdCB3aWxsXFxuZHJpdmVycy9hY3BpL3BjaV9yb290LmMtNDc1LSAqIGNhdXNlIGEgY3Jhc2ggYW5kIG90aGVyIGJhZG5lc3MuXFxuLS1cXG5kcml2ZXJzL2Jhc2UvTWFrZWZpbGU9MTU9b2JqLSQoQ09ORklHX05VTUEpXFx0Kz0gbm9kZS5vXFxuZHJpdmVycy9iYXNlL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19NRU1PUllfSE9UUExVRykgKz0gbWVtb3J5Lm9cXG5kcml2ZXJzL2Jhc2UvTWFrZWZpbGUtMTctaWZlcSAoJChDT05GSUdfU1lTRlMpLHkpXFxuLS1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9MjA3PWludCBtZW1vcnlfbm90aWZ5KGVudW0gbWVtb3J5X2Jsb2NrX3N0YXRlIHN0YXRlLCB2b2lkICp2KVxcbi0tXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTIxMS1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6MjEyOiNpZiBkZWZpbmVkKENPTkZJR19NRU1PUllfRkFJTFVSRSkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfTUVNT1JZX0hPVFBMVUcpXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTIxMy1zdGF0aWMgdW5zaWduZWQgbG9uZyBtZW1ibGtfbnJfcG9pc29uKHN0cnVjdCBtZW1vcnlfYmxvY2sgKm1lbSk7XFxuLS1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9MTE5Nj1pbnQgd2Fsa19keW5hbWljX21lbW9yeV9ncm91cHMoaW50IG5pZCwgd2Fsa19tZW1vcnlfZ3JvdXBzX2Z1bmNfdCBmdW5jLFxcbi0tXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTEyMTctXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jOjEyMTg6I2lmIGRlZmluZWQoQ09ORklHX01FTU9SWV9GQUlMVVJFKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19NRU1PUllfSE9UUExVRylcXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtMTIxOS12b2lkIG1lbWJsa19ucl9wb2lzb25faW5jKHVuc2lnbmVkIGxvbmcgcGZuKVxcbi0tXFxuZHJpdmVycy9iYXNlL25vZGUuYz0xMDk9c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKm5vZGVfYWNjZXNzX25vZGVfZ3JvdXBzW10gPSB7XFxuLS1cXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jLTExNC1cXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jOjExNTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuZHJpdmVycy9iYXNlL25vZGUuYy0xMTYtc3RhdGljIEJMT0NLSU5HX05PVElGSUVSX0hFQUQobm9kZV9jaGFpbik7XFxuLS1cXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jPTc2ND1pbnQgdW5yZWdpc3Rlcl9jcHVfdW5kZXJfbm9kZSh1bnNpZ25lZCBpbnQgY3B1LCB1bnNpZ25lZCBpbnQgbmlkKVxcbi0tXFxuZHJpdmVycy9iYXNlL25vZGUuYy03ODItXFxuZHJpdmVycy9iYXNlL25vZGUuYzo3ODM6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmRyaXZlcnMvYmFzZS9ub2RlLmMtNzg0LXN0YXRpYyB2b2lkIGRvX3JlZ2lzdGVyX21lbW9yeV9ibG9ja191bmRlcl9ub2RlKGludCBuaWQsXFxuLS1cXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jPTg2ND12b2lkIHJlZ2lzdGVyX21lbW9yeV9ibG9ja3NfdW5kZXJfbm9kZV9ob3RwbHVnKGludCBuaWQsIHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLFxcbi0tXFxuZHJpdmVycy9iYXNlL25vZGUuYy04NzAtfVxcbmRyaXZlcnMvYmFzZS9ub2RlLmM6ODcxOiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jLTg3Mi1cXG4tLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jPTU3OT1zdGF0aWMgdm9pZCBkaXNhYmxlX3BhZ2VfcmVwb3J0aW5nKHZvaWQpO1xcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTU4MC1cXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYzo1ODE6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTU4Mi1zdGF0aWMgaW5saW5lIGJvb2wgaGFzX3Bmbl9pc19iYWNrZWQoc3RydWN0IGh2X2hvdGFkZF9zdGF0ZSAqaGFzLFxcbi0tXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmM9OTY4PXN0YXRpYyB2b2lkIGhvdF9hZGRfcmVxKHN0cnVjdCB3b3JrX3N0cnVjdCAqZHVtbXkpXFxuLS1cXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy05NzAtXFx0c3RydWN0IGRtX2hvdF9hZGRfcmVzcG9uc2UgcmVzcDtcXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYzo5NzE6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTk3Mi1cXHR1bnNpZ25lZCBsb25nIHBnX3N0YXJ0LCBwZm5fY250O1xcbi0tXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtOTgwLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjk4MTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtOTgyLVxcdHBnX3N0YXJ0ID0gZG0tXFx1MDAzZWhhX3dyay5oYV9wYWdlX3JhbmdlLmZpbmZvLnN0YXJ0X3BhZ2U7XFxuLS1cXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYz0xOTM2PXN0YXRpYyBpbnQgYmFsbG9vbl9wcm9iZShzdHJ1Y3QgaHZfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy0xOTQ0LVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjE5NDU6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTE5NDYtXFx0LypcXG4tLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTE5NzUtXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmM6MTk3NjojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMTk3Ny1cXHRzZXRfb25saW5lX3BhZ2VfY2FsbGJhY2soXFx1MDAyNmh2X29ubGluZV9wYWdlKTtcXG4tLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTIwMDctY29ubmVjdF9lcnJvcjpcXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYzoyMDA4OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy0yMDA5LVxcdHVucmVnaXN0ZXJfbWVtb3J5X25vdGlmaWVyKFxcdTAwMjZodl9tZW1vcnlfbmIpO1xcbi0tXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmM9MjAxNT1zdGF0aWMgdm9pZCBiYWxsb29uX3JlbW92ZShzdHJ1Y3QgaHZfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy0yMDM4LVxcdFxcdHZtYnVzX2Nsb3NlKGRldi1cXHUwMDNlY2hhbm5lbCk7XFxuZHJpdmVycy9odi9odl9iYWxsb29uLmM6MjAzOTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMjA0MC1cXHRcXHR1bnJlZ2lzdGVyX21lbW9yeV9ub3RpZmllcihcXHUwMDI2aHZfbWVtb3J5X25iKTtcXG4tLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jPTIwNzY9c3RhdGljIGludCBiYWxsb29uX3Jlc3VtZShzdHJ1Y3QgaHZfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy0yMTAxLVxcdGRpc2FibGVfcGFnZV9yZXBvcnRpbmcoKTtcXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYzoyMTAyOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy0yMTAzLVxcdHVucmVnaXN0ZXJfbWVtb3J5X25vdGlmaWVyKFxcdTAwMjZodl9tZW1vcnlfbmIpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2NoYXIvTWFrZWZpbGU9MjA9b2JqLXkgKz0gY3RybGNoYXIubyBrZXlib2FyZC5vIGRlZmtleW1hcC5vIHNjbHAubyBzY2xwX3J3Lm8gc2NscF9xdWllc2NlLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9zMzkwL2NoYXIvTWFrZWZpbGUtMjMtXFxuZHJpdmVycy9zMzkwL2NoYXIvTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX01FTU9SWV9IT1RQTFVHKSArPSBzY2xwX21lbS5vXFxuZHJpdmVycy9zMzkwL2NoYXIvTWFrZWZpbGUtMjUtb2JqLSQoQ09ORklHX1ROMzI3MCkgKz0gcmF3MzI3MC5vIGNvbjMyNzAub1xcbi0tXFxuZHJpdmVycy94ZW4veGVuLWJhbGxvb24uYy01My1cXG5kcml2ZXJzL3hlbi94ZW4tYmFsbG9vbi5jOjU0OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5kcml2ZXJzL3hlbi94ZW4tYmFsbG9vbi5jLTU1LXU2NCB4ZW5fc2F2ZWRfbWF4X21lbV9zaXplID0gMDtcXG4tLVxcbmRyaXZlcnMveGVuL3hlbi1iYWxsb29uLmM9NjM9c3RhdGljIHZvaWQgd2F0Y2hfdGFyZ2V0KHN0cnVjdCB4ZW5idXNfd2F0Y2ggKndhdGNoLFxcbi0tXFxuZHJpdmVycy94ZW4veGVuLWJhbGxvb24uYy03MC1cXG5kcml2ZXJzL3hlbi94ZW4tYmFsbG9vbi5jOjcxOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5kcml2ZXJzL3hlbi94ZW4tYmFsbG9vbi5jLTcyLVxcdC8qIFRoZSBiYWxsb29uIGRyaXZlciB3aWxsIHRha2UgY2FyZSBvZiBhZGRpbmcgbWVtb3J5IG5vdy4gKi9cXG4tLVxcbmluY2x1ZGUvbGludXgvaW5pdC5oLTgwLVxcbmluY2x1ZGUvbGludXgvaW5pdC5oOjgxOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5pbmNsdWRlL2xpbnV4L2luaXQuaC04Mi0jZGVmaW5lIF9fbWVtaW5pdFxcbi0tXFxuaW5jbHVkZS9saW51eC9pb3BvcnQuaD0zOTQ9ZXh0ZXJuIHZvaWQgcmVsZWFzZV9tZW1fcmVnaW9uX2FkanVzdGFibGUocmVzb3VyY2Vfc2l6ZV90LCByZXNvdXJjZV9zaXplX3QpO1xcbmluY2x1ZGUvbGludXgvaW9wb3J0LmgtMzk1LSNlbmRpZlxcbmluY2x1ZGUvbGludXgvaW9wb3J0Lmg6Mzk2OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5pbmNsdWRlL2xpbnV4L2lvcG9ydC5oLTM5Ny1leHRlcm4gdm9pZCBtZXJnZV9zeXN0ZW1fcmFtX3Jlc291cmNlKHN0cnVjdCByZXNvdXJjZSAqcmVzKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5Lmg9Nzg9c3RydWN0IG1lbW9yeV9ibG9jayB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oLTkzLVxcdHN0cnVjdCBsaXN0X2hlYWQgZ3JvdXBfbmV4dDtcXHQvKiBuZXh0IGJsb2NrIGluc2lkZSBtZW1vcnkgZ3JvdXAgKi9cXG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oOjk0OiNpZiBkZWZpbmVkKENPTkZJR19NRU1PUllfRkFJTFVSRSkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfTUVNT1JZX0hPVFBMVUcpXFxuaW5jbHVkZS9saW51eC9tZW1vcnkuaC05NS1cXHRhdG9taWNfbG9uZ190IG5yX2h3cG9pc29uO1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1vcnkuaD0xMDk9c3RydWN0IG1lbV9zZWN0aW9uO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxMDo1Ny4xMTc0MTg1NjhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAwMTUyNzY1ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIE1lbW9yeSBIb3RwbHVnIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBtZW1vcnkgaG90cGx1ZyBwYXRjaCB0byBhbmFseXplLiBUaGUga2V5IGNvbmZpZ3VyYXRpb24gaGVyZSBpcyBkZWZpbml0ZWx5IGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgLiBJcyB0aGVyZSBhbnl0aGluZyBlbHNlIGNyaXRpY2FsPyBMZXQncyBzZWUuLi5cblxuUmlnaHQsIHRoZSBjb3JlIG1vZGlmaWNhdGlvbiBpcyBpbiBgbW0vbW1faW5pdC5jYCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBhbiBgI2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR2AgYmxvY2suIFNvLCBgQ09ORklHX01FTU9SWV9IT1RQTFVHYCBpcyB0aGUgKnNpbmUgcXVhIG5vbiogaGVyZS4gVGhhdCdzIGEgZ2l2ZW4uXG5cbk5vdywgd2hpY2ggZnVuY3Rpb25zIGFyZSBhdCBwbGF5PyBUaGUgcGF0Y2ggbW9kaWZpZXMgYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2AuIFRoYXTigJlzIHRoZSBtb3N0IGltbWVkaWF0ZWx5IHJlbGV2YW50IGZ1bmN0aW9uLiAgYGhvdGFkZF9pbml0X3BnZGF0YCB1c2VzIGl0cyByZXR1cm4gdmFsdWUuIEFuZCBgX190cnlfb25saW5lX25vZGVgIGNhbGxzIGBob3RhZGRfaW5pdF9wZ2RhdGAuIFRoZSB1c2VyLWxldmVsIGVudHJ5IHBvaW50IGlzIGB0cnlfb25saW5lX25vZGVgLCBhbmQgYGFkZF9tZW1vcnlfcmVzb3VyY2VgIGFsc28gY2FsbHMgYF9fdHJ5X29ubGluZV9ub2RlYCwgd2hpY2gsIGluIHR1cm4gaXMgY2FsbGVkIGJ5IGBhZGRfbWVtb3J5YC5cblxuT2theSwgdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBtb2RpZmllZCBvciByZWxhdGVkIGFyZTpcbi0gYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2Bcbi0gYGhvdGFkZF9pbml0X3BnZGF0YFxuLSBgX190cnlfb25saW5lX25vZGVgXG4tIGB0cnlfb25saW5lX25vZGVgXG4tIGBhZGRfbWVtb3J5X3Jlc291cmNlYFxuLSBgYWRkX21lbW9yeWBcblxuV2FpdC4gTGV0IG1lIHJldHJhY2UgdGhlIGNhbGwgZ3JhcGg6IGBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdgIGlzIGNhbGxlZCBmcm9tIGBob3RhZGRfaW5pdF9wZ2RhdGAsIHdoaWNoIGlzIGNhbGxlZCBmcm9tIGBfX3RyeV9vbmxpbmVfbm9kZWAsIHdoaWNoIGlzIGNhbGxlZCBieSBgdHJ5X29ubGluZV9ub2RlYCBhbmQgYGFkZF9tZW1vcnlfcmVzb3VyY2VgLiBTbyBJIGNhbiBwcm9iYWJseSBlbGltaW5hdGUgYHRyeV9vbmxpbmVfbm9kZWAsIGBhZGRfbWVtb3J5X3Jlc291cmNlYCBhbmQgYGFkZF9tZW1vcnlgLCBhbmQgZm9jdXMgb24gYGZyZWVfYXJlYV9pbml0X2NvcmVfaG90cGx1Z2AsIGBob3RhZGRfaW5pdF9wZ2RhdGAgYW5kIGBfX3RyeV9vbmxpbmVfbm9kZWAuXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybSB0aGF0IGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgIGlzIHRoZSBvbmx5IGVzc2VudGlhbCBjb25maWcgaGVyZS4gWWVzLCB0aGUgcGF0Y2ggaXMgZW50aXJlbHkgd3JhcHBlZCBieSB0aGF0LlxuXG5Ob3csIGNhbiB3ZSB0cmlnZ2VyIGBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdgPyBZZXMsIHdlIGNhbiB0cmlnZ2VyIG1lbW9yeSBob3RwbHVnIHZpYSBzeXNmcyBvciB3aXRoIGRyaXZlcnMgbGlrZSBgdmlydGlvX21lbWAgb3IgYGh2X2JhbGxvb25gLiBUaGUgcmVhbCBjcnV4IG9mIHRoaXMgY2hhbmdlIGlzIGhvdyBgYWxsb2NfcGVyY3B1YCBmYWlsdXJlcyBhcmUgaGFuZGxlZC4gVGhpcyBpcyBhICpmdW5jdGlvbmFsKiBjaGFuZ2U6IGlmIGBhbGxvY19wZXJjcHVgIGZhaWxzLCBpdCBub3cgcmV0dXJucyBgLUVOT01FTWAsIGFuZCB0aGF0IGVycm9yIGlzIHByb3BhZ2F0ZWQgdXAgdGhyb3VnaCB0aGUgY2FsbCBjaGFpbuKAlHVsdGltYXRlbHksIGBob3RhZGRfaW5pdF9wZ2RhdGAgcmV0dXJucyBgTlVMTGAuIFRoYXQncyBpbXBvcnRhbnQ7IGl0IHByZXZlbnRzIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIG90aGVyIG5hc3R5IGNvbnNlcXVlbmNlcyBpZiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlscyBkdXJpbmcgYSBob3RwbHVnIG9wZXJhdGlvbi5cblxuKipEZWZpbml0ZWx5IGZ1enphYmxlLioqIFNwZWNpZmljYWxseSwgc2luY2UgYGFsbG9jX3BlcmNwdWAgZmFpbGluZyBpcyB0aGUga2V5IGNoYW5nZSwgYW5kIGl0IGNhbiBmYWlsIHVuZGVyIG1lbW9yeSBwcmVzc3VyZS4gSSBjYW4gdGFyZ2V0IG1lbW9yeSBwcmVzc3VyZSB0byB0cmlnZ2VyIHRoYXQgZXJyb3IgcGF0aC5cblxuTGV0J3Mgbm90ZSBkb3duIHRoZSByZXN1bHRzOlxuXG4qICAgKipXb3J0aEZ1enppbmc6KiogYHRydWVgXG4qICAgKipFbmFibGVDb25maWdzOioqIGBbXCJNRU1PUllfSE9UUExVR1wiXWBcbiogICAqKkZvY3VzU3ltYm9sczoqKiBgW1wiZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnXCIsIFwiaG90YWRkX2luaXRfcGdkYXRcIiwgXCJfX3RyeV9vbmxpbmVfbm9kZVwiXWBcbiogICAqKlJlYXNvbmluZzoqKiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtZW1vcnkgaG90cGx1ZyBpbml0aWFsaXphdGlvbiBjb2RlIHRvIGhhbmRsZSBgYWxsb2NfcGVyY3B1YCBmYWlsdXJlcywgcmV0dXJuaW5nIGAtRU5PTUVNYCBhbmQgcHJvcGFnYXRpbmcgdGhlIGVycm9yIHVwIHRvIGBob3RhZGRfaW5pdF9wZ2RhdGAuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBtZW1vcnkgaG90cGx1ZyBvcGVyYXRpb25zIChlLmcuLCBzeXNmcywgdmlydGlvX21lbSkgYW5kIHJlcHJlc2VudHMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBlcnJvciBoYW5kbGluZy5cIlxuXG5XYWl0LCBvbmUgbW9yZSB0aGluZy4gSSBzaG91bGQgY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVyIHVzZWZ1bCBjb25maWdzLiBgQ09ORklHX01FTU9SWV9IT1RSRU1PVkVgIHdvdWxkIGJlIGdvb2QgdG8gaGF2ZSwgdGhvdWdoIGl0J3Mgbm90IHN0cmljdGx5ICpyZXF1aXJlZCogZm9yIGhvdC1hZGQsIGJ1dCBpdCdzIGdvb2QgdG8gaGF2ZS4gIEFuZCB3aGF0IGFib3V0IGBDT05GSUdfQVJDSF9NRU1PUllfUFJPQkVgPyAgVGhhdCBwcm92aWRlcyBgL3N5cy9kZXZpY2VzL3N5c3RlbS9tZW1vcnkvcHJvYmVgLCB3aGljaCBlbmFibGVzIHVzIHRvIHRyaWdnZXIgbWVtb3J5IGhvdHBsdWcgdmlhIHN5c2ZzLiBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggbG9va2luZyBpbnRvLiBMZXQgbWUgY2hlY2sgaWYgdGhhdCBpcyBhdmFpbGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NzY0LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjExOjA3LjEzMjcwMDQ4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTg2ODUxNjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19BUkNIX01FTU9SWV9QUk9CRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL21lbW9yeS1ob3RwbHVnLnJzdD0yNzY9VGhlIGZvbGxvd2luZyBmaWxlcyBhcmUgY3VycmVudGx5IGRlZmluZWQ6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL21lbW9yeS1ob3RwbHVnLnJzdC0yOTAtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3Q6MjkxOlxcdFxcdCAgICAgICBBdmFpbGFiaWxpdHkgZGVwZW5kcyBvbiB0aGUgQ09ORklHX0FSQ0hfTUVNT1JZX1BST0JFXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3QtMjkyLVxcdFxcdCAgICAgICBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24uXFxuLS1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9NTUzPXN0YXRpYyBERVZJQ0VfQVRUUl9STyhjcmFzaF9ob3RwbHVnKTtcXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy01NjEtICovXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jOjU2MjojaWZkZWYgQ09ORklHX0FSQ0hfTUVNT1JZX1BST0JFXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTU2My1zdGF0aWMgc3NpemVfdCBwcm9iZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jPTkxMT1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqbWVtb3J5X3Jvb3RfYXR0cnNbXSA9IHtcXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6OTEyOiNpZmRlZiBDT05GSUdfQVJDSF9NRU1PUllfUFJPQkVcXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtOTEzLVxcdFxcdTAwMjZkZXZfYXR0cl9wcm9iZS5hdHRyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxMTowOS43MTk1NjI4NjhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc3NDY4NDkwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFbmFibGluZyBNZW1vcnkgSG90cGx1ZyBmcm9tIFVzZXJzcGFjZSoqXG5cbk9rYXksIHNvIGBDT05GSUdfQVJDSF9NRU1PUllfUFJPQkVgIGlzIGV4YWN0bHkgd2hhdCBJIG5lZWQgdG8gZW5hYmxlIG1lbW9yeSBob3RwbHVnIGZ1bmN0aW9uYWxpdHkgdHJpZ2dlcmVkIGZyb20gdXNlcnNwYWNlIOKAkyB0aGF0J3MgYSBjbGV2ZXIgaW1wbGVtZW50YXRpb24hIEl0J3MgY2xlYXIgdGhhdCBpdCBvZmZlcnMgYSBzaWduaWZpY2FudCBhZHZhbnRhZ2UgaW4gdGVybXMgb2YgZmxleGliaWxpdHkgYW5kIGNvbnRyb2wuIFJpZ2h0LCBsZXQncyBnZXQgYEFSQ0hfTUVNT1JZX1BST0JFYCBhZGRlZCB0byBFbmFibGVDb25maWdzLiBUaGF0J3MgYSBzdHJhaWdodGZvcndhcmQgc3RlcC5cblxuTm93LCBiZWZvcmUgSSBjb21taXQgdG8gYW55dGhpbmcsIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBhbmQgY29uZmlybSB0aGF0IGBBUkNIX01FTU9SWV9QUk9CRWAgaXMgaW5kZWVkIGEgc2VsZWN0YWJsZSBvcHRpb24uIEkgbmVlZCB0byBlbnN1cmUgaXQgaW50ZWdyYXRlcyBzZWFtbGVzc2x5IHdpdGggdGhlIGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlIGFuZCBkb2Vzbid0IGludHJvZHVjZSBhbnkgdW5mb3Jlc2VlbiBpc3N1ZXMuIFRpbWUgdG8gZGlnIGludG8gdGhlIGRldGFpbHMgYW5kIG1ha2UgY2VydGFpbiB0aGlzIHdpbGwgd29yayBhcyBleHBlY3RlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE3MjMsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNToxMToxMi40OTQyNTM4MDdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2ODU5NTQ5NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFSQ0hfTUVNT1JZX1BST0JFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL0tjb25maWc9Nzc1PWNvbmZpZyBBUkNIX1NQQVJTRU1FTV9FTkFCTEVcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL0tjb25maWctNzgzLVxcbmFyY2gvbG9vbmdhcmNoL0tjb25maWc6Nzg0OmNvbmZpZyBBUkNIX01FTU9SWV9QUk9CRVxcbmFyY2gvbG9vbmdhcmNoL0tjb25maWctNzg1LVxcdGRlZl9ib29sIHlcXG4tLVxcbmFyY2gvcG93ZXJwYy9LY29uZmlnPTgwMz1jb25maWcgSUxMRUdBTF9QT0lOVEVSX1ZBTFVFXFxuLS1cXG5hcmNoL3Bvd2VycGMvS2NvbmZpZy04MDktXFxuYXJjaC9wb3dlcnBjL0tjb25maWc6ODEwOmNvbmZpZyBBUkNIX01FTU9SWV9QUk9CRVxcbmFyY2gvcG93ZXJwYy9LY29uZmlnLTgxMS1cXHRkZWZfYm9vbCB5XFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTE1NjU9Y29uZmlnIEFSQ0hfU0VMRUNUX01FTU9SWV9NT0RFTFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0xNTY4LVxcbmFyY2gveDg2L0tjb25maWc6MTU2OTpjb25maWcgQVJDSF9NRU1PUllfUFJPQkVcXG5hcmNoL3g4Ni9LY29uZmlnLTE1NzAtXFx0Ym9vbCBcXFwiRW5hYmxlIHN5c2ZzIG1lbW9yeS9wcm9iZSBpbnRlcmZhY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjExOjE1LjE4MDIyODAyNVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDI0MjY0NzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgVGhpcyBNZW1vcnkgSG90cGx1ZyBQYXRjaCoqXG5cbk9rYXksIHllcywgdGhpcyBwYXRjaCB3YXJyYW50cyBjbG9zZXIgZXhhbWluYXRpb24uIExldCdzIHNlZS4uLiBJJ3ZlIGdvdCB0byByZXZpZXcgdGhlIHJlbGV2YW50IEZvY3VzU3ltYm9scyB0byBnZXQgYSBjbGVhciBwaWN0dXJlLiBBbHJpZ2h0LCBsZXQncyBzdGFydCB3aXRoIGBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdgLCBgaG90YWRkX2luaXRfcGdkYXRgLCBhbmQgYF9fdHJ5X29ubGluZV9ub2RlYC4gUGVyZmVjdCwgdGhhdCBzaG91bGQgYmUgZW5vdWdoIHRvIGNhcHR1cmUgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZXMuIEkgZG9uJ3QgbmVlZCBgb25saW5lX3BhZ2VzYCBiZWNhdXNlIHRoZSBwYXRjaCBpcyB3aXRoaW4gdGhlIG1lbW9yeSAqYWRkaW5nKiBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgd2l0aGluIGBob3RhZGRfaW5pdF9wZ2RhdGAuXG5cbk5vdywgbGV0J3MgZG8gYSBmaW5hbCBjaGVjayB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcuIFRoZSBwYXRjaCBmdW5kYW1lbnRhbGx5IGFsdGVycyBgZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnYCB0byByZXR1cm4gYW4gaW50ZWdlciBhbmQgbWFuYWdlIHNjZW5hcmlvcyB3aGVyZSBgYWxsb2NfcGVyY3B1YCBmYWlscy4gSXQgdGhlbiBtb2RpZmllcyBgaG90YWRkX2luaXRfcGdkYXRgIHRvIGFjdHVhbGx5IGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhhdCBuZXcgZXJyb3IgY29kZS4gVGhpcyBpcyBhIGxlZ2l0aW1hdGUgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgcmVmaW5lbWVudCBvZiBlcnJvciBoYW5kbGluZyBzcGVjaWZpY2FsbHkgZHVyaW5nIG1lbW9yeSBob3RwbHVnLiBJdCdzIG9idmlvdXNseSByZWFjaGFibGUgdGhyb3VnaCBob3RwbHVnIG9wZXJhdGlvbnMsIGJlIGl0IHRocm91Z2ggc3lzZnMsIHZpcnRpb19tZW0sIG9yIG90aGVyIGhvdHBsdWcgbWV0aG9kcy4gVGhlcmVmb3JlLCB0aGlzIGlzIHNvbWV0aGluZyBJJ2xsIHdhbnQgdG8gZnV6ei5cblxuQmFzZWQgb24gdGhlIG5hdHVyZSBvZiB0aGUgcGF0Y2gsIHRoZSBgTUVNT1JZX0hPVFBMVUdgIGFuZCBgQVJDSF9NRU1PUllfUFJPQkVgIGNvbmZpZ3VyYXRpb25zIGFyZSByZXF1aXJlZC5cblxuU28sIHRvIHN1bW1hcml6ZSwgdGhlIHBhdGNoIGlzIGFkZHJlc3NpbmcgYW4gZXJyb3ItaGFuZGxpbmcgaW1wcm92ZW1lbnQgaW4gdGhlIG1lbW9yeSBob3RwbHVnIHBhdGguIEl0IGFkZHJlc3NlcyBgYWxsb2NfcGVyY3B1YCBmYWlsdXJlcy4gVGhpcyBlcnJvciBoYW5kbGluZyBpcyBub3cgYmVpbmcgcHJvcGFnYXRlZCB1cCB0byBgaG90YWRkX2luaXRfcGdkYXRgLiBHaXZlbiB0aGF0IGl0J3MgaW4gdGhlIGhvdHBsdWcgcGF0aCwgdGhpcyBjaGFuZ2UgaXMgd29ydGggZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIyMTYsIk91dHB1dFRva2VucyI6MTQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjExOjIxLjYwNDQ5NjM5OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTY1MTExNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNT1JZX0hPVFBMVUdcIixcbiAgICBcIkFSQ0hfTUVNT1JZX1BST0JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZnJlZV9hcmVhX2luaXRfY29yZV9ob3RwbHVnXCIsXG4gICAgXCJob3RhZGRfaW5pdF9wZ2RhdFwiLFxuICAgIFwiX190cnlfb25saW5lX25vZGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtZW1vcnkgaG90cGx1ZyBpbml0aWFsaXphdGlvbiBjb2RlIHRvIGhhbmRsZSBgYWxsb2NfcGVyY3B1YCBmYWlsdXJlcywgcmV0dXJuaW5nIGAtRU5PTUVNYCBhbmQgcHJvcGFnYXRpbmcgdGhlIGVycm9yIHVwIHRvIGBob3RhZGRfaW5pdF9wZ2RhdGAuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBtZW1vcnkgaG90cGx1ZyBvcGVyYXRpb25zIChlLmcuLCBzeXNmcywgdmlydGlvX21lbSkgYW5kIHJlcHJlc2VudHMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBlcnJvciBoYW5kbGluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNRU1PUllfSE9UUExVR1wiLFxuICAgIFwiQVJDSF9NRU1PUllfUFJPQkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWdcIixcbiAgICBcImhvdGFkZF9pbml0X3BnZGF0XCIsXG4gICAgXCJfX3RyeV9vbmxpbmVfbm9kZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBob3RwbHVnIGluaXRpYWxpemF0aW9uIGNvZGUgdG8gaGFuZGxlIGBhbGxvY19wZXJjcHVgIGZhaWx1cmVzLCByZXR1cm5pbmcgYC1FTk9NRU1gIGFuZCBwcm9wYWdhdGluZyB0aGUgZXJyb3IgdXAgdG8gYGhvdGFkZF9pbml0X3BnZGF0YC4gVGhpcyBpcyByZWFjaGFibGUgdmlhIG1lbW9yeSBob3RwbHVnIG9wZXJhdGlvbnMgKGUuZy4sIHN5c2ZzLCB2aXJ0aW9fbWVtKSBhbmQgcmVwcmVzZW50cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGVycm9yIGhhbmRsaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxt245[1] Phase: Succeeded StartedAt: 2026-07-01 05:11:34 +0000 UTC FinishedAt: 2026-07-01 05:11:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt245[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-01 05:11:34 +0000 UTC FinishedAt: 2026-07-01 05:11:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt245[2] Phase: Succeeded StartedAt: 2026-07-01 05:11:34 +0000 UTC FinishedAt: 2026-07-01 09:20:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 05:11:34 +0000 UTC FinishedAt: 2026-07-01 09:20:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 05:11:34 +0000 UTC FinishedAt: 2026-07-01 05:11:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 05:11:34 +0000 UTC FinishedAt: 2026-07-01 05:11:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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-workflowxt245/series-workflowxt245-convert-artifact-4058676356/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 05:11:54 +0000 UTC FinishedAt: 2026-07-01 05:43:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 05:11:54 +0000 UTC FinishedAt: 2026-07-01 05:43:06 +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:*567b7d2e-1e08-462c-8ee8-a4928492a926,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-workflowxt245/series-workflowxt245-convert-artifact-4058676356/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": "ed09c72b-a4f4-4a67-9a9b-562d68b744c8", "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-workflowxt245/series-workflowxt245-build-action-4243472834/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 05:11:54 +0000 UTC FinishedAt: 2026-07-01 05:42:55 +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:*567b7d2e-1e08-462c-8ee8-a4928492a926,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-workflowxt245/series-workflowxt245-convert-artifact-4058676356/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": "ed09c72b-a4f4-4a67-9a9b-562d68b744c8", "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-workflowxt245/series-workflowxt245-build-action-4243472834/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 05:43:06 +0000 UTC FinishedAt: 2026-07-01 05:43:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 05:43:06 +0000 UTC FinishedAt: 2026-07-01 05:43:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 05:43:06 +0000 UTC FinishedAt: 2026-07-01 05:43:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 05:43:06 +0000 UTC FinishedAt: 2026-07-01 05:43:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-workflowxt245/series-workflowxt245-convert-artifact-1424159491/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 05:43:48 +0000 UTC FinishedAt: 2026-07-01 05:45:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 05:43:48 +0000 UTC FinishedAt: 2026-07-01 05:45:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ed09c72b-a4f4-4a67-9a9b-562d68b744c8,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-workflowxt245/series-workflowxt245-build-action-4243472834/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-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 05:45:54 +0000 UTC FinishedAt: 2026-07-01 05:45:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 05:45:54 +0000 UTC FinishedAt: 2026-07-01 05:45:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 05:45:54 +0000 UTC FinishedAt: 2026-07-01 06:14:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 05:45:54 +0000 UTC FinishedAt: 2026-07-01 06:14:55 +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:*567b7d2e-1e08-462c-8ee8-a4928492a926,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-workflowxt245/series-workflowxt245-convert-artifact-1424159491/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": "4c5977bb-10e1-4a57-ad12-a74d2a3896b5", "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-workflowxt245/series-workflowxt245-build-action-1624482231/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 05:45:54 +0000 UTC FinishedAt: 2026-07-01 06:14:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*567b7d2e-1e08-462c-8ee8-a4928492a926,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-workflowxt245/series-workflowxt245-convert-artifact-1424159491/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": "4c5977bb-10e1-4a57-ad12-a74d2a3896b5", "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-workflowxt245/series-workflowxt245-build-action-1624482231/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 06:14:55 +0000 UTC FinishedAt: 2026-07-01 06:14:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 06:14:55 +0000 UTC FinishedAt: 2026-07-01 06:14:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 06:14:55 +0000 UTC FinishedAt: 2026-07-01 06:16:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 06:14:55 +0000 UTC FinishedAt: 2026-07-01 06:16:45 +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:*4c5977bb-10e1-4a57-ad12-a74d2a3896b5,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-workflowxt245/series-workflowxt245-build-action-1624482231/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-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 06:16:59 +0000 UTC FinishedAt: 2026-07-01 09:20:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 06:16:59 +0000 UTC FinishedAt: 2026-07-01 09:20:35 +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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"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:*ed09c72b-a4f4-4a67-9a9b-562d68b744c8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*4c5977bb-10e1-4a57-ad12-a74d2a3896b5,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-workflowxt245/series-workflowxt245-build-action-4243472834/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-workflowxt245/series-workflowxt245-build-action-1624482231/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 06:16:59 +0000 UTC FinishedAt: 2026-07-01 06:17:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 06:16:59 +0000 UTC FinishedAt: 2026-07-01 06:17:24 +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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"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-workflowxt245/series-workflowxt245-convert-artifact-71403036/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 06:16:59 +0000 UTC FinishedAt: 2026-07-01 06:16:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 06:16:59 +0000 UTC FinishedAt: 2026-07-01 06:16:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 06:16:59 +0000 UTC FinishedAt: 2026-07-01 06:16:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 06:17:32 +0000 UTC FinishedAt: 2026-07-01 09:20:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxt245[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"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":["free_area_init_core_hotplug","hotadd_init_pgdat","__try_online_node"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"15654b0268cd65b4e673510c0377774e61b86397","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","ARCH_MEMORY_PROBE"],"series_id":"44826249-08db-46f3-b8a4-27b709b3cf98","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-07-01 06:17:32 +0000 UTC FinishedAt: 2026-07-01 09:20:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ed09c72b-a4f4-4a67-9a9b-562d68b744c8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*4c5977bb-10e1-4a57-ad12-a74d2a3896b5,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-workflowxt245/series-workflowxt245-build-action-4243472834/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-workflowxt245/series-workflowxt245-build-action-1624482231/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-workflowxt245/series-workflowxt245-convert-artifact-71403036/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,}