Name: series-workflow4cj2h Phase: Succeeded StartedAt: 2026-09-05 04:23:23 +0000 UTC FinishedAt: 2026-09-05 05:30:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cj2h[0] Phase: Succeeded StartedAt: 2026-09-05 04:23:23 +0000 UTC FinishedAt: 2026-09-05 04:47:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cj2h[0].run-triage Phase: Succeeded StartedAt: 2026-09-05 04:23:23 +0000 UTC FinishedAt: 2026-09-05 04:47:14 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b60ed34f712e9f606d80951f1586f4274ebadf1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT76_CORE", "MT792x_LIB", "MT7921U", "MAC80211", "CFG80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b60ed34f712e9f606d80951f1586f4274ebadf1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT76_CORE", "MT792x_LIB", "MT7921U", "MAC80211", "CFG80211" ], "series_id": "d7ba9719-a26b-4068-b5c8-953e085f96b2" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt792x_init_wiphy", "mt76_register_device", "mt76_register_phy" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDA0OjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzZfQ09SRSYjMzQ7LAogICAgJiMzNDtNVDc5MnhfTElCJiMzNDssCiAgICAmIzM0O01UNzkyMVUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MnhfaW5pdF93aXBoeSYjMzQ7LAogICAgJiMzNDttdDc2X3JlZ2lzdGVyX2RldmljZSYjMzQ7LAogICAgJiMzNDttdDc2X3JlZ2lzdGVyX3BoeSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGVuYWJsZXMgdGhlIE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiBmZWF0dXJlIGZsYWcgdW5jb25kaXRpb25hbGx5IGZvciBhbGwgbXQ3NiB3aXJlbGVzcyBkZXZpY2VzIGJ5IHJlbW92aW5nIHRoZSBgbm9fYWN0aXZlX21vbml0b3JgIGZsYWcgZnJvbSBgc3RydWN0IG10NzZfcGh5YCBhbmQgdGhlIG92ZXJyaWRlIGluIGBtdDc5MnhfaW5pdF93aXBoeWAuXG5cblRoaXMgY2hhbmdlIG9ubHkgbW9kaWZpZXMgYSBmZWF0dXJlIGJpdG1hc2sgZmxhZyBvbiB0aGUgd2lwaHkgZGV2aWNlIGFuZCByZW1vdmVzIGEgc3RydWN0IGZpZWxkLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGRhdGEgc3RydWN0dXJlcywgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHBhZGRpbmcvZmllbGRzIGNvcGllZCB0byB1c2Vyc3BhY2UsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgaW5mb3JtYXRpb24gbGVhayByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gZnV6emluZywgYW5kIHN0YW5kYXJkIEtBU0FOL3N5emthbGxlciB0ZXN0aW5nIGlzIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgdGhlIG5vX2FjdGl2ZV9tb25pdG9yIGZsYWcgYW5kIHVuY29uZGl0aW9uYWxseSBlbmFibGVzIE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiBmb3IgTWVkaWFUZWsgbXQ3NiAvIG10NzkyeCB3aXJlbGVzcyBkcml2ZXJzLiBUaGVzZSBkcml2ZXJzIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uIChlLmcuIG10NzkyMXUpLCBhbGxvd2luZyBhY3RpdmUgbW9uaXRvciBpbnRlcmZhY2UgY3JlYXRpb24gYW5kIGhhbmRsaW5nIHZpYSBubDgwMjExLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDA0OjQyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMGI2MzQ1M2RiODcwMWY4OTEyMTI1ZDVhY2ZjMjUwZDU0NTA3YmVjYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgU2VwIDUgMDQ6NDI6MTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jXG5pbmRleCBhYmJlNjVjYmNkODllLi5mOTIyNzc3NzA0ODhhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmNcbkBAIC00MzksOSAmIzQzOzQzOSw4IEBAIG10NzZfcGh5X2luaXQoc3RydWN0IG10NzZfcGh5ICpwaHksIHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuIFx0U0VUX0lFRUU4MDIxMV9ERVYoaHcsIGRldi1cdTAwM2VkZXYpO1xuIFx0U0VUX0lFRUU4MDIxMV9QRVJNX0FERFIoaHcsIHBoeS1cdTAwM2VtYWNhZGRyKTtcbiBcbi1cdHdpcGh5LVx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BUF9NT0RFX0NIQU5fV0lEVEhfQ0hBTkdFO1xuLVx0aWYgKCFwaHktXHUwMDNlbm9fYWN0aXZlX21vbml0b3IpXG4tXHRcdHdpcGh5LVx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUjtcbiYjNDM7XHR3aXBoeS1cdTAwM2VmZWF0dXJlcyB8PSBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1IgfFxuJiM0MztcdFx0XHQgICBOTDgwMjExX0ZFQVRVUkVfQVBfTU9ERV9DSEFOX1dJRFRIX0NIQU5HRTtcbiBcdHdpcGh5LVx1MDAzZWZsYWdzIHw9IFdJUEhZX0ZMQUdfSEFTX0NIQU5ORUxfU1dJVENIIHxcbiBcdFx0XHRXSVBIWV9GTEFHX1NVUFBPUlRTX1RETFMgfFxuIFx0XHRcdFdJUEhZX0ZMQUdfQVBfVUFQU0Q7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaFxuaW5kZXggNjJiNDFjOGJiN2MwZC4uNjFlZjFiODBmZWI4NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaFxuQEAgLTg3Myw3ICYjNDM7ODczLDYgQEAgc3RydWN0IG10NzZfcGh5IHtcbiBcdHN0cnVjdCBjZmc4MDIxMV9jaGFuX2RlZiBtYWluX2NoYW5kZWY7XG4gXHRib29sIG9mZmNoYW5uZWw7XG4gXHRib29sIHJhZGFyX2VuYWJsZWQ7XG4tXHRib29sIG5vX2FjdGl2ZV9tb25pdG9yO1xuIFxuIFx0c3RydWN0IGRlbGF5ZWRfd29yayByb2Nfd29yaztcbiBcdHN0cnVjdCBpZWVlODAyMTFfdmlmICpyb2NfdmlmO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuY1xuaW5kZXggMGFkMzNmNzRjMjI4NS4uODM3ZDdhZjk4NGU4NiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jXG5AQCAtODIwLDcgJiM0Mzs4MjAsNiBAQCBpbnQgbXQ3OTJ4X2luaXRfd2lwaHkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG4gXG4gXHR3aXBoeS1cdTAwM2VmZWF0dXJlcyB8PSBOTDgwMjExX0ZFQVRVUkVfU0NIRURfU0NBTl9SQU5ET01fTUFDX0FERFIgfFxuIFx0XHRcdCAgIE5MODAyMTFfRkVBVFVSRV9TQ0FOX1JBTkRPTV9NQUNfQUREUjtcbi1cdHBoeS1cdTAwM2VtdDc2LVx1MDAzZW5vX2FjdGl2ZV9tb25pdG9yID0gdHJ1ZTtcbiBcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9TRVRfU0NBTl9EV0VMTCk7XG4gXHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQkVBQ09OX1JBVEVfTEVHQUNZKTtcbiBcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9CRUFDT05fUkFURV9IVCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3Nl9DT1JFJiMzNDssCiAgICAmIzM0O01UNzkyeF9MSUImIzM0OywKICAgICYjMzQ7TVQ3OTIxVSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyeF9pbml0X3dpcGh5JiMzNDssCiAgICAmIzM0O210NzZfcmVnaXN0ZXJfZGV2aWNlJiMzNDssCiAgICAmIzM0O210NzZfcmVnaXN0ZXJfcGh5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgdGhlIG5vX2FjdGl2ZV9tb25pdG9yIGZsYWcgYW5kIHVuY29uZGl0aW9uYWxseSBlbmFibGVzIE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiBmb3IgTWVkaWFUZWsgbXQ3NiAvIG10NzkyeCB3aXJlbGVzcyBkcml2ZXJzLiBUaGVzZSBkcml2ZXJzIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uIChlLmcuIG10NzkyMXUpLCBhbGxvd2luZyBhY3RpdmUgbW9uaXRvciBpbnRlcmZhY2UgY3JlYXRpb24gYW5kIGhhbmRsaW5nIHZpYSBubDgwMjExLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMGI2MzQ1M2RiODcwMWY4OTEyMTI1ZDVhY2ZjMjUwZDU0NTA3YmVjYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgU2VwIDUgMDQ6NDI6MTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMKaW5kZXggYWJiZTY1Y2JjZDg5ZS4uZjkyMjc3NzcwNDg4YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYwpAQCAtNDM5LDkgJiM0Mzs0MzksOCBAQCBtdDc2X3BoeV9pbml0KHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodykKIAlTRVRfSUVFRTgwMjExX0RFVihodywgZGV2LSZndDtkZXYpOwogCVNFVF9JRUVFODAyMTFfUEVSTV9BRERSKGh3LCBwaHktJmd0O21hY2FkZHIpOwogCi0Jd2lwaHktJmd0O2ZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BUF9NT0RFX0NIQU5fV0lEVEhfQ0hBTkdFOwotCWlmICghcGh5LSZndDtub19hY3RpdmVfbW9uaXRvcikKLQkJd2lwaHktJmd0O2ZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUjsKJiM0MzsJd2lwaHktJmd0O2ZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiB8CiYjNDM7CQkJICAgTkw4MDIxMV9GRUFUVVJFX0FQX01PREVfQ0hBTl9XSURUSF9DSEFOR0U7CiAJd2lwaHktJmd0O2ZsYWdzIHw9IFdJUEhZX0ZMQUdfSEFTX0NIQU5ORUxfU1dJVENIIHwKIAkJCVdJUEhZX0ZMQUdfU1VQUE9SVFNfVERMUyB8CiAJCQlXSVBIWV9GTEFHX0FQX1VBUFNEOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaAppbmRleCA2MmI0MWM4YmI3YzBkLi42MWVmMWI4MGZlYjg1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaApAQCAtODczLDcgJiM0Mzs4NzMsNiBAQCBzdHJ1Y3QgbXQ3Nl9waHkgewogCXN0cnVjdCBjZmc4MDIxMV9jaGFuX2RlZiBtYWluX2NoYW5kZWY7CiAJYm9vbCBvZmZjaGFubmVsOwogCWJvb2wgcmFkYXJfZW5hYmxlZDsKLQlib29sIG5vX2FjdGl2ZV9tb25pdG9yOwogCiAJc3RydWN0IGRlbGF5ZWRfd29yayByb2Nfd29yazsKIAlzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqcm9jX3ZpZjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYwppbmRleCAwYWQzM2Y3NGMyMjg1Li44MzdkN2FmOTg0ZTg2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jCkBAIC04MjAsNyAmIzQzOzgyMCw2IEBAIGludCBtdDc5MnhfaW5pdF93aXBoeShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodykKIAogCXdpcGh5LSZndDtmZWF0dXJlcyB8PSBOTDgwMjExX0ZFQVRVUkVfU0NIRURfU0NBTl9SQU5ET01fTUFDX0FERFIgfAogCQkJICAgTkw4MDIxMV9GRUFUVVJFX1NDQU5fUkFORE9NX01BQ19BRERSOwotCXBoeS0mZ3Q7bXQ3Ni0mZ3Q7bm9fYWN0aXZlX21vbml0b3IgPSB0cnVlOwogCXdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9TRVRfU0NBTl9EV0VMTCk7CiAJd2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0JFQUNPTl9SQVRFX0xFR0FDWSk7CiAJd2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0JFQUNPTl9SQVRFX0hUKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYwOAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDQwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVGhpcyBQYXRjaCBmb3IgU3l6a2FsbGVyIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIHBhdGNoIGlzIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIEZyb20gdGhlIHN1bW1hcnksIGl0IGxvb2tzIGxpa2UgaXQgdG91Y2hlcyB0aGUgTWVkaWFUZWsgd2lyZWxlc3MgZHJpdmVyczogYG10NzZgIGFuZCBgbXQ3OTJ4YC4gU3BlY2lmaWNhbGx5LCBgbWFjODAyMTEuY2AsIGBtdDc2LmhgLCBhbmQgYG10NzkyeF9jb3JlLmNgIGhhdmUgYmVlbiBtb2RpZmllZC4gSXQgc2VlbXMgbGlrZSB0aGUgcGF0Y2ggcmVtb3ZlcyBhIGNoZWNrIGFuZCBhIHZhcmlhYmxlIHJlbGF0ZWQgdG8gYWN0aXZlIG1vbml0b3JpbmcgaW4gdGhlIGBtdDc2X3BoeV9pbml0YCBhbmQgYG10NzkyeF9pbml0X3dpcGh5YCBmdW5jdGlvbnMuIFRoaXMgbWlnaHQgY2hhbmdlIGhvdyBhY3RpdmUgbW9uaXRvcmluZyBmZWF0dXJlcyBhcmUgaGFuZGxlZC4KCk5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzOiBjYW4gdGhlc2UgZHJpdmVycyBiZSBmdXp6ZWQgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRoIHN5emthbGxlcj8gQXJlIHRoZXNlIGRyaXZlcnMgdGllZCB0byBzcGVjaWZpYyBoYXJkd2FyZSwgb3IgYXJlIHRoZXJlIGVtdWxhdGVkIG9yIHZpcnR1YWwgaW50ZXJmYWNlcyBJIGNhbiBsZXZlcmFnZT8gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGFyZSB0aGUgYG10NzZgIGRldmljZXMgVVNCLCBQQ0llLCBvciBzb21ldGhpbmcgdmlydHVhbD8gSSByZW1lbWJlciBzZWVpbmcgYG10NzZgIFVTQiBkcml2ZXJzLCBsaWtlIGBtdDc2eDB1YCwgYG10NzZ4MnVgLCBhbmQgYG10NzkyMXVgLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhvc2UgYXJlIHJlbGV2YW50LiBBcmUgdGhlc2UgZHJpdmVycyBwdXJlbHkgaGFyZHdhcmUtZGVwZW5kZW50LCBvciBjYW4gSSByZWFjaCB0aGVtIHRocm91Z2ggVVNCIFJhdyBHYWRnZXQgb3IgYG1hYzgwMjExX2h3c2ltYCBmb3IgZnV6emluZz8KCldhaXQsIGhvbGQgb24uLi5JIG5lZWQgdG8gY2xhcmlmeTogYG10NzZgIGRyaXZlcnMgYXJlIGZvciBNZWRpYVRlayBoYXJkd2FyZSAoTVQ3Nnh4IC8gTVQ3OTJ4KS4gSSBuZWVkIHRvIGNoZWNrIGlmIHRob3NlIGRldmljZXMgYXJlIFVTQiBiYXNlZCwgYW5kIGlmIFVTQiBmdXp6aW5nIHJlYWNoZXMgdGhlbS4gU2luY2UgSSYjMzk7bSBub3QgZW50aXJlbHkgY2xlYXIgb24gdGhlIGJ1cyBpbnRlcmZhY2UgZm9yIHRoaXMgaGFyZHdhcmUsIEkmIzM5O2xsIG5lZWQgdG8gc2VhcmNoIHRoZSBrZXJuZWwgdHJlZSBmb3IgYG10NzZgIGFuZCBgbXQ3OTJ4YCBtb3JlIHRob3JvdWdobHkgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGV5IGFyZSByZWFjaGVkIGFuZCB0aGVpciBvdmVyYWxsIHJlYWNoYWJpbGl0eS4gVGhhdCB3aWxsIGRpY3RhdGUgdGhlIGJlc3QgYXBwcm9hY2ggZm9yIHN5emthbGxlciBpbnRlZ3JhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MnhfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjI0MiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT0yOD1DRkxBR1NfbXQ3NngwMl90cmFjZS5vIDo9IC1JJChzcmMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjI5OkNGTEFHU19tdDc5MnhfdHJhY2UubyA6PSAtSSQoc3JjKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS0zMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTM4PW10NzYtY29ubmFjLWxpYi15IDo9IG10NzZfY29ubmFjX21jdS5vIG10NzZfY29ubmFjX21hYy5vIG10NzZfY29ubmFjM19tYWMub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS0zOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6NDA6bXQ3OTJ4LWxpYi15IDo9IG10NzkyeF9jb3JlLm8gbXQ3OTJ4X21hYy5vIG10NzkyeF90cmFjZS5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjQxOlx0XHRtdDc5MnhfZGVidWdmcy5vIG10NzkyeF9kbWEub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo0MjptdDc5MngtbGliLSQoQ09ORklHX0FDUEkpICYjNDM7PSBtdDc5MnhfYWNwaV9zYXIub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo0MzptdDc5MngtdXNiLXkgOj0gbXQ3OTJ4X3VzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTQ0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtNi0jaW5jbHVkZSBcJiMzNDttdDc2X2Nvbm5hY19tY3UuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYzo3OiNpbmNsdWRlIFwmIzM0O210NzkyeF9yZWdzLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9Nz1tdDc5MjFfcmVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjk6XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxMTpcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTItXHRtdDc2X3dyKGRldiwgZGV2LVx1MDAzZW10NzYuZGVidWdmc19yZWcsIHZhbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTM6XHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTE0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0xOT1tdDc5MjFfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjE6XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyMzpcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjQtXHQqdmFsID0gbXQ3Nl9ycihkZXYsIGRldi1cdTAwM2VtdDc2LmRlYnVnZnNfcmVnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyNTpcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTMzPW10NzkyMV9md19kZWJ1Z19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0zNC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MzU6XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzozNzpcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMzgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjQyOlx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy00My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9NDg9bXQ3OTIxX2Z3X2RlYnVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy00OS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6NTA6XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy01MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9NTc9REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWcsIG10NzkyMV9md19kZWJ1Z19nZXQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjYwOkRFRklORV9TSE9XX0FUVFJJQlVURShtdDc5MnhfdHhfc3RhdHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTYxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz05MT1tdDc5MjFfdHhwd3Ioc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTkyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzo5MzpcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cdTAwM2Vwcml2YXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy05NC1cdHN0cnVjdCBtdDc5MjFfdHhwd3IgdHhwd3I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjk3Olx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy05OC1cdHJldCA9IG10NzkyMV9nZXRfdHhwd3JfaW5mbyhkZXYsIFx1MDAyNnR4cHdyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzo5OTpcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTAwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0xNDM9bXQ3OTIxX3BtX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTE0NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTQ1Olx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTQ2LVx0c3RydWN0IG10NzZfY29ubmFjX3BtICpwbSA9IFx1MDAyNmRldi1cdTAwM2VwbTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MTc2PW10NzkyMV9wbV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTc3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxNzg6XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xNzktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTE4OD1tdDc5MjFfZGVlcF9zbGVlcF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xODkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjE5MDpcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTE5MS1cdHN0cnVjdCBtdDc2X2Nvbm5hY19wbSAqcG0gPSBcdTAwMjZkZXYtXHUwMDNlcG07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTE5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxOTg6XHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTE5OS1cdGlmIChwbS1cdTAwM2Vkc19lbmFibGVfdXNlciA9PSBlbmFibGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIwNS1vdXQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjA2Olx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMDctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTIxMj1tdDc5MjFfZGVlcF9zbGVlcF9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjEzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyMTQ6XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTIyMT1ERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19kcywgbXQ3OTIxX2RlZXBfc2xlZXBfZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjI0OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3BtX2lkbGVfdGltZW91dCwgbXQ3OTJ4X3BtX2lkbGVfdGltZW91dF9nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjI1Olx0XHRcdCBtdDc5MnhfcG1faWRsZV90aW1lb3V0X3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTIyNz1zdGF0aWMgaW50IG10NzkyMV9jaGlwX3Jlc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjI4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyMjk6XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMzAtXHRpbnQgcmV0ID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjM0LVx0XHQvKiBSZXNldCB3aWZpc3lzIGRpcmVjdGx5LiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjIzNTpcdFx0bXQ3OTJ4X3Jlc2V0KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMzYtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMzgtXHRcdC8qIENvbGxlY3QgdGhlIGNvcmUgZHVtcCBiZWZvcmUgcmVzZXQgd2lmaXN5cy4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyMzk6XHRcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjQwLVx0XHRyZXQgPSBtdDc2X2Nvbm5hY19tY3VfY2hpcF9jb25maWcoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI0MTpcdFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNDItXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0yNTE9bXQ3OTIxc19zY2hlZF9xdW90YV9yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNTIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI1MzpcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cdTAwM2Vwcml2YXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNTQtXHRzdHJ1Y3QgbXQ3Nl9zZGlvICpzZGlvID0gXHUwMDI2ZGV2LVx1MDAzZW10NzYuc2Rpbztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI2NDppbnQgbXQ3OTIxX2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI2NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI3MS1cdFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7eG1pdC1xdWV1ZXNcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjcyOlx0XHRcdFx0XHQgICAgZGlyLCBtdDc5MnhfcXVldWVzX3JlYWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI3My1cdGVsc2Vcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjc3LVx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7YWNxXCYjMzQ7LCBkaXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6Mjc4Olx0XHRcdFx0ICAgIG10NzkyeF9xdWV1ZXNfYWNxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNzktXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDt0eHBvd2VyX3NrdVwmIzM0OywgZGlyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI4MC1cdFx0XHRcdCAgICBtdDc5MjFfdHhwd3IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI4MTpcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7dHhfc3RhdHNcJiMzNDssIDA0MDAsIGRpciwgZGV2LCBcdTAwMjZtdDc5MnhfdHhfc3RhdHNfZm9wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjgyLVx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtmd19kZWJ1Z1wmIzM0OywgMDYwMCwgZGlyLCBkZXYsIFx1MDAyNmZvcHNfZndfZGVidWcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yODctXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtydW50aW1lX3BtX3N0YXRzXCYjMzQ7LCBkaXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6Mjg4Olx0XHRcdFx0ICAgIG10NzkyeF9wbV9zdGF0cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjg5LVx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtkZWVwLXNsZWVwXCYjMzQ7LCAwNjAwLCBkaXIsIGRldiwgXHUwMDI2Zm9wc19kcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jPTE0PXN0YXRpYyBzc2l6ZV90IG10NzkyMV90aGVybWFsX3RlbXBfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE5LVx0Y2FzZSAwOiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MjA6XHRcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoyMTpcdFx0c3RydWN0IG10NzkyeF9kZXYgKm1kZXYgPSBwaHktXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIyLVx0XHRpbnQgdGVtcGVyYXR1cmU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MjQ6XHRcdG10NzkyeF9tdXRleF9hY3F1aXJlKG1kZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTI1LVx0XHR0ZW1wZXJhdHVyZSA9IG10NzkyMV9tY3VfZ2V0X3RlbXBlcmF0dXJlKHBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MjY6XHRcdG10NzkyeF9tdXRleF9yZWxlYXNlKG1kZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTI3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYz00Mz1BVFRSSUJVVEVfR1JPVVBTKG10NzkyMV9od21vbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6NDU6c3RhdGljIGludCBtdDc5MjFfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtNDYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy02My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzo2NDppbnQgbXQ3OTIxX21hY19pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtNjUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy03Ny1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIDI7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjc4Olx0XHRtdDc5MnhfbWFjX2luaXRfYmFuZChkZXYsIGkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTc5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYz04Mj1FWFBPUlRfU1lNQk9MX0dQTChtdDc5MjFfbWFjX2luaXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjg0OnN0YXRpYyBpbnQgX19tdDc5MjFfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtOTEtXHRtdDc2X3dyKGRldiwgTVRfU1dERUZfTU9ERSwgTVRfU1dERUZfTk9STUFMX01PREUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjkyOlx0cmV0ID0gbXQ3OTJ4X21jdV9pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtOTMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xMDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTA5OnN0YXRpYyBpbnQgbXQ3OTIxX2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xMTAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTIwOlx0XHRtdDc5MnhfaW5pdF9yZXNldChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEyMS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM9MTMxPXN0YXRpYyB2b2lkIG10NzkyMV9pbml0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEzMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTMzOlx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbXQ3OTJ4X2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xMzQtXHRcdFx0XHRcdCAgICAgIGluaXRfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE0Mi1cdG10NzkyMV9zZXRfc3RyZWFtX2hlX2NhcHMoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTQzOlx0bXQ3OTJ4X2NvbmZpZ19tYWNfYWRkcl9saXN0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTQ0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xNjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTcwOmludCBtdDc5MjFfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTcxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTc3LVx0ZGV2LVx1MDAzZW10NzYucGh5LnByaXYgPSBcdTAwMjZkZXYtXHUwMDNlcGh5O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjE3ODpcdGRldi1cdTAwM2VtdDc2LnR4X3dvcmtlci5mbiA9IG10NzkyeF90eF93b3JrZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjE4MDpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2VwbS5wc193b3JrLCBtdDc5MnhfcG1fcG93ZXJfc2F2ZV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxODE6XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBtLndha2Vfd29yaywgbXQ3OTJ4X3BtX3dha2Vfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTgyLVx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZGV2LVx1MDAzZXBtLndha2UubG9jayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE4OC1cdHNwaW5fbG9ja19pbml0KFx1MDAyNmRldi1cdTAwM2VwbS50eHFfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTg5Olx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZW1waHkubWFjX3dvcmssIG10NzkyeF9tYWNfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTkwLVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBoeS5zY2FuX3dvcmssIG10NzkyMV9zY2FuX3dvcmspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0yMDItXHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBoeS5yb2Nfd29yaywgbXQ3OTIxX3JvY193b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoyMDM6XHR0aW1lcl9zZXR1cChcdTAwMjZkZXYtXHUwMDNlcGh5LnJvY190aW1lciwgbXQ3OTJ4X3JvY190aW1lciwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjA0LVx0aW5pdF93YWl0cXVldWVfaGVhZChcdTAwMjZkZXYtXHUwMDNlcGh5LnJvY193YWl0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjIyMTpcdG10NzkyeF9pbml0X2FjcGlfc2FyKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjIyMzpcdHJldCA9IG10NzkyeF9pbml0X3djaWQoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0yMjQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0yMjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MjI3Olx0cmV0ID0gbXQ3OTJ4X2luaXRfd2lwaHkoaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIyOC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoxOTpib29sIG10NzkyMV9tYWNfd3RibF91cGRhdGUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgaW50IGlkeCwgdTMyIG1hc2spXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0yMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9Mjg9c3RhdGljIHUzMiBtdDc5MjFfbWFjX3d0YmxfbG1hY19hZGRyKGludCBpZHgsIHU4IG9mZnNldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0zMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjMzOnN0YXRpYyB2b2lkIG10NzkyMV9tYWNfc3RhX3BvbGwoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTM0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy00MS1cdHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo0MjpcdHN0cnVjdCBtdDc5Mnhfc3RhICptc3RhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NDM6XHRzdHJ1Y3QgbXQ3OTJ4X2xpbmtfc3RhICptbGluaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTQ0LVx0dTMyIHR4X3RpbWVbSUVFRTgwMjExX05VTV9BQ1NdLCByeF90aW1lW0lFRUU4MDIxMV9OVU1fQUNTXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02NS1cdFx0bWxpbmsgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNnN0YV9wb2xsX2xpc3QsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo2NjpcdFx0XHRcdFx0IHN0cnVjdCBtdDc5MnhfbGlua19zdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02Ny1cdFx0XHRcdFx0IHdjaWQucG9sbF9saXN0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjY4Olx0XHRtc3RhID0gY29udGFpbmVyX29mKG1saW5rLCBzdHJ1Y3QgbXQ3OTJ4X3N0YSwgZGVmbGluayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02OS1cdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZtbGluay1cdTAwM2V3Y2lkLnBvbGxfbGlzdCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9MTY4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjE2OTptdDc5MjFfbWFjX2ZpbGxfcngoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTE3MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMTc3LVx0c3RydWN0IG10NzZfcGh5ICptcGh5ID0gXHUwMDI2ZGV2LVx1MDAzZW10NzYucGh5O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6MTc4Olx0c3RydWN0IG10NzkyeF9waHkgKnBoeSA9IFx1MDAyNmRldi1cdTAwM2VwaHk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0xNzktXHRzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0xODUtXHR1MzIgcnhkNCA9IGxlMzJfdG9fY3B1KHJ4ZFs0XSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoxODY6XHRzdHJ1Y3QgbXQ3OTJ4X3N0YSAqbXN0YSA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoxODc6XHRzdHJ1Y3QgbXQ3OTJ4X2xpbmtfc3RhICptbGluaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTE4OC1cdHUxNiBzZXFfY3RybCA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMjE0LVx0aWR4ID0gRklFTERfR0VUKE1UX1JYRDFfTk9STUFMX1dMQU5fSURYLCByeGQxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjIxNTpcdHN0YXR1cy1cdTAwM2V3Y2lkID0gbXQ3OTJ4X3J4X2dldF93Y2lkKGRldiwgaWR4LCB1bmljYXN0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTIxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTIxNy1cdGlmIChzdGF0dXMtXHUwMDNld2NpZCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6MjE4Olx0XHRtbGluayA9IGNvbnRhaW5lcl9vZihzdGF0dXMtXHUwMDNld2NpZCwgc3RydWN0IG10NzkyeF9saW5rX3N0YSwgd2NpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoyMTk6XHRcdG1zdGEgPSBjb250YWluZXJfb2YobWxpbmssIHN0cnVjdCBtdDc5Mnhfc3RhLCBkZWZsaW5rKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTIyMC1cdFx0bXQ3Nl93Y2lkX2FkZF9wb2xsKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBcdTAwMjZtbGluay1cdTAwM2V3Y2lkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0yMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoyMjM6XHRtdDc5MnhfZ2V0X3N0YXR1c19mcmVxX2luZm8oc3RhdHVzLCBjaGZyZXEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMjI0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTQzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjQzMjpcdG10NzkyeF9tYWNfYXNzb2NfcnNzaShkZXYsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy00MzMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNDQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NDQ3OnZvaWQgbXQ3OTIxX21hY19hZGRfdHhzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy00NDgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NDQ5Olx0c3RydWN0IG10NzkyeF9saW5rX3N0YSAqbWxpbms7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy00NTAtXHRzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTQ3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjQ3MzpcdG1saW5rID0gY29udGFpbmVyX29mKHdjaWQsIHN0cnVjdCBtdDc5MnhfbGlua19zdGEsIHdjaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNDc0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTQ4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjQ4NTpzdGF0aWMgdm9pZCBtdDc5MjFfbWFjX3R4X2ZyZWUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdm9pZCAqZGF0YSwgaW50IGxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTQ4Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNTE0LVx0XHRpZiAoaW5mbyBcdTAwMjYgTVRfVFhfRlJFRV9QQUlSKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo1MTU6XHRcdFx0c3RydWN0IG10NzkyeF9saW5rX3N0YSAqbWxpbms7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01MTYtXHRcdFx0dTE2IGlkeDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01MjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo1MjU6XHRcdFx0bWxpbmsgPSBjb250YWluZXJfb2Yod2NpZCwgc3RydWN0IG10NzkyeF9saW5rX3N0YSwgd2NpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01MjYtXHRcdFx0bXQ3Nl93Y2lkX2FkZF9wb2xsKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBcdTAwMjZtbGluay1cdTAwM2V3Y2lkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYz01NjI9Ym9vbCBtdDc5MjFfcnhfY2hlY2soc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICpkYXRhLCBpbnQgbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNTYzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjU2NDpcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzkyeF9kZXYsIG10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNTY1LVx0X19sZTMyICpyeGQgPSAoX19sZTMyICopZGF0YTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYz01ODc9dm9pZCBtdDc5MjFfcXVldWVfcnhfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgZW51bSBtdDc2X3J4cV9pZCBxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTU4OS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo1OTA6XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MnhfZGV2LCBtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTU5MS1cdF9fbGUzMiAqcnhkID0gKF9fbGUzMiAqKXNrYi1cdTAwM2VkYXRhO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTYzND1tdDc5MjFfdmlmX2Nvbm5lY3RfaXRlcih2b2lkICpwcml2LCB1OCAqbWFjLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTYzNi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo2Mzc6XHRzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqbXZpZiA9IChzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqKXZpZi1cdTAwM2VkcnZfcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjYzODpcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBtdmlmLVx1MDAzZXBoeS1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02MzktXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IG10NzZfaHcoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYz02NTk9dm9pZCBtdDc5MjFfbWFjX3Jlc2V0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjYwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjY2MTpcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG10NzkyeF9kZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02NjItXHRcdFx0XHRcdCAgICAgIHJlc2V0X3dvcmspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTY4MC1cdFx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tdXRleCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo2ODE6XHRcdHJldCA9IG10NzkyeF9kZXZfcmVzZXQoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTY4Mi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm11dGV4KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYz03MTU9dm9pZCBtdDc5MjFfY29yZWR1bXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy03MTYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NzE3Olx0c3RydWN0IG10NzkyeF9kZXYgKmRldjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTcxOC1cdGNoYXIgKmR1bXAsICpkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NzIwOlx0ZGV2ID0gKHN0cnVjdCBtdDc5MnhfZGV2ICopY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBtdDc5MnhfZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzIxLVx0XHRcdFx0XHRcdGNvcmVkdW1wLndvcmsud29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NzU5Olx0bXQ3OTJ4X3Jlc2V0KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc2MC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9NzYzPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo3NjQ6bXQ3OTIxX3VzYl9zZGlvX3dyaXRlX3R4d2koc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc2NS1cdFx0XHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYz03NzY9aW50IG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc4MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo3ODE6XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MnhfZGV2LCBtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc4Mi1cdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbyA9IElFRUU4MDIxMV9TS0JfQ0IodHhfaW5mby1cdTAwM2Vza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc5Ny1cdGlmIChzdGEpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjc5ODpcdFx0c3RydWN0IG10NzkyeF9zdGEgKm1zdGEgPSAoc3RydWN0IG10NzkyeF9zdGEgKilzdGEtXHUwMDNlZHJ2X3ByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy03OTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODA5LVx0dHlwZSA9IG10NzZfaXNfc2RpbyhtZGV2KSA/IE1UNzkyMV9TRElPX0RBVEEgOiAwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODEwOlx0bXQ3OTJ4X3NrYl9hZGRfdXNiX3NkaW9faGRyKGRldiwgc2tiLCB0eXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTgxMS1cdHBhZCA9IHJvdW5kX3VwKHNrYi1cdTAwM2VsZW4sIDQpIC0gc2tiLVx1MDAzZWxlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYz04NDU9Ym9vbCBtdDc5MjFfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODQ2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjg0NzpcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzkyeF9kZXYsIG10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODQ5Olx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTg1MC1cdG10NzkyMV9tYWNfc3RhX3BvbGwoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjg1MTpcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NTItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9ODU4PXZvaWQgbXQ3OTIxX3NldF9pcHY2X25zX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODU5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjg2MDpcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG10NzkyeF9kZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NjEtXHRcdFx0XHRcdCAgICAgIGlwdjZfbnNfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODcxOlx0XHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODcyLVx0XHRyZXQgPSBtdDc2X21jdV9za2Jfc2VuZF9tc2coXHUwMDI2ZGV2LVx1MDAzZW10NzYsIHNrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTg3My1cdFx0XHRcdFx0ICAgIE1DVV9VTklfQ01EKE9GRkxPQUQpLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjg3NDpcdFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTg3NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM9MTM9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjE0Om10NzkyMV9pbml0X2hlX2NhcHMoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgZW51bSBubDgwMjExX2JhbmQgYmFuZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0xNS1cdFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfc2JhbmRfaWZ0eXBlX2RhdGEgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTE5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzoxOTY6dm9pZCBtdDc5MjFfc2V0X3N0cmVhbV9oZV9jYXBzKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMTk3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjIyNzppbnQgX19tdDc5MjFfc3RhcnQoc3RydWN0IG10NzkyeF9waHkgKnBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yMjgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjQ4Olx0bXQ3OTJ4X21hY19yZXNldF9jb3VudGVycyhwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI0OS1cdHNldF9iaXQoTVQ3Nl9TVEFURV9SVU5OSU5HLCBcdTAwMjZtcGh5LVx1MDAzZXN0YXRlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM9MjcyPXN0YXRpYyBpbnQgbXQ3OTIxX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI3My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6Mjc0Olx0c3RydWN0IG10NzkyeF9waHkgKnBoeSA9IG10NzkyeF9od19waHkoaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI3NS1cdGludCBlcnI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI3NzpcdG10NzkyeF9tdXRleF9hY3F1aXJlKHBoeS1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI3OC1cdGVyciA9IF9fbXQ3OTIxX3N0YXJ0KHBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6Mjc5Olx0bXQ3OTJ4X211dGV4X3JlbGVhc2UocGh5LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjgwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYz0yODQ9c3RhdGljIHZvaWQgbXQ3OTIxX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yODUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI4NjpcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBtdDc5MnhfaHdfZGV2KGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yODctXHRpbnQgZXJyID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjg5LVx0aWYgKG10NzZfaXNfbW1pbyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzoyOTA6XHRcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjkxLVx0XHRlcnIgPSBtdDc5MjFfbWN1X3JhZGlvX2xlZF9jdHJsKGRldiwgRVhUX0NNRF9SQURJT19PRkZfTEVEKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzoyOTI6XHRcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjkzLVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yOTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6Mjk3Olx0bXQ3OTJ4X3N0b3AoaHcsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yOTgtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYz0zMDE9bXQ3OTIxX2FkZF9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzAyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozMDM6XHRzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqbXZpZiA9IChzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqKXZpZi1cdTAwM2VkcnZfcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozMDQ6XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gbXQ3OTJ4X2h3X2Rldihodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzA1Olx0c3RydWN0IG10NzkyeF9waHkgKnBoeSA9IG10NzkyeF9od19waHkoaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTMwNi1cdHN0cnVjdCBtdDc2X3R4cSAqbXR4cTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjMwOTpcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzEwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zNTQtXHRJTklUX1dPUksoXHUwMDI2bXZpZi1cdTAwM2Vjc2Ffd29yaywgbXQ3OTIxX2NzYV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozNTU6XHR0aW1lcl9zZXR1cChcdTAwMjZtdmlmLVx1MDAzZWNzYV90aW1lciwgbXQ3OTJ4X2NzYV90aW1lciwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzU2LW91dDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozNTc6XHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM1OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM9MzYyPXN0YXRpYyB2b2lkIG10NzkyMV9yb2NfaXRlcih2b2lkICpwcml2LCB1OCAqbWFjLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zNjQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjM2NTpcdHN0cnVjdCBtdDc5MnhfdmlmICptdmlmID0gKHN0cnVjdCBtdDc5MnhfdmlmICopdmlmLVx1MDAzZWRydl9wcml2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjM2NjpcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBwcml2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM2Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjM3MTp2b2lkIG10NzkyMV9yb2NfYWJvcnRfc3luYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM3Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzczOlx0c3RydWN0IG10NzkyeF9waHkgKnBoeSA9IFx1MDAyNmRldi1cdTAwM2VwaHk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzc0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYz0zODc9dm9pZCBtdDc5MjFfcm9jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM4OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6Mzg5Olx0c3RydWN0IG10NzkyeF9waHkgKnBoeTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zOTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzkxOlx0cGh5ID0gKHN0cnVjdCBtdDc5MnhfcGh5ICopY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBtdDc5MnhfcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM5Mi1cdFx0XHRcdFx0XHRyb2Nfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjM5NDpcdG10NzkyeF9tdXRleF9hY3F1aXJlKHBoeS1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM5NS1cdGlmICghdGVzdF9hbmRfY2xlYXJfYml0KE1UNzZfU1RBVEVfUk9DLCBcdTAwMjZwaHktXHUwMDNlbXQ3Ni1cdTAwM2VzdGF0ZSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozOTY6XHRcdG10NzkyeF9tdXRleF9yZWxlYXNlKHBoeS1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM5Ny1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00MDEtXHRcdFx0XHRcdCAgICBtdDc5MjFfcm9jX2l0ZXIsIHBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6NDAyOlx0bXQ3OTJ4X211dGV4X3JlbGVhc2UocGh5LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtNDAzLVx0aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQocGh5LVx1MDAzZW10NzYtXHUwMDNlaHcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00MDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6NDA2OnN0YXRpYyBpbnQgbXQ3OTIxX2Fib3J0X3JvYyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqdmlmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQwNy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQxMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0MTM6XHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShwaHktXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00MTQtXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE1UNzZfU1RBVEVfUk9DLCBcdTAwMjZwaHktXHUwMDNlbXQ3Ni1cdTAwM2VzdGF0ZSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtNDE1LVx0XHRlcnIgPSBtdDc5MjFfbWN1X2Fib3J0X3JvYyhwaHksIHZpZiwgcGh5LVx1MDAzZXJvY190b2tlbl9pZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6NDE2Olx0bXQ3OTJ4X211dGV4X3JlbGVhc2UocGh5LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtNDE3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00MjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6NDIxOnN0YXRpYyBpbnQgbXQ3OTIxX3NldF9yb2Moc3RydWN0IG10NzkyeF9waHkgKnBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0MjI6XHRcdFx0ICBzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqdmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQyMy1cdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM9NDUxPXN0YXRpYyBpbnQgbXQ3OTIxX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00NTYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjQ1NzpcdHN0cnVjdCBtdDc5MnhfdmlmICptdmlmID0gKHN0cnVjdCBtdDc5MnhfdmlmICopdmlmLVx1MDAzZWRydl9wcml2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjQ1ODpcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBtdDc5MnhfaHdfcGh5KGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00NTktXHRpbnQgZXJyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQ2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0NjE6XHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShwaHktXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00NjItXHRlcnIgPSBtdDc5MjFfc2V0X3JvYyhwaHksIG12aWYsIGNoYW4sIGR1cmF0aW9uLCBNVDc5MjFfUk9DX1JFUV9ST0MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjQ2MzpcdG10NzkyeF9tdXRleF9yZWxlYXNlKHBoeS1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQ2NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM9NDY4PXN0YXRpYyBpbnQgbXQ3OTIxX2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtNDcwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0NzE6XHRzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqbXZpZiA9IChzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqKXZpZi1cdTAwM2VkcnZfcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0NzI6XHRzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5ID0gbXQ3OTJ4X2h3X3BoeShodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtNDczLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYz00Nzc9aW50IG10NzkyMV9zZXRfY2hhbm5lbChzdHJ1Y3QgbXQ3Nl9waHkgKm1waHkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtNDc4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0Nzk6XHRzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5ID0gbXBoeS1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjQ4MDpcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQ4MS1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQ4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0ODg6XHRtdDc5MnhfbWFjX3NldF90aW1laW5nKHBoeSk7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTAyOAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE1UNzkyMVUgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgbXQ3OTIxdWAsIHdoaWNoIEkga25vdyBpcyB0aGUgVVNCIGRyaXZlciBmb3IgdGhlIE1UNzkyMSBjaGlwc2V0LiBNeSBmaXJzdCB0aG91Z2h0IGlzOiBjYW4gd2UgZnV6eiB0aGlzIHRoaW5nIGVmZmVjdGl2ZWx5IHdpdGggc3l6a2FsbGVyPyBTcGVjaWZpY2FsbHksIGRvZXMgc3l6a2FsbGVyIGhhdmUgZ29vZCBjb3ZlcmFnZSBmb3IgVVNCIHdpcmVsZXNzIGRldmljZXM/IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIHN0YW5kYXJkIG1ldGhvZHMg4oCTIHRoZSBgdXNiIHJhdyBnYWRnZXRgIGFuZCB0aGUgYHZoY2lgIGFwcHJvYWNoLgoKUmlnaHQsIHN5emthbGxlciAqZG9lcyogaGF2ZSBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMsIGluY2x1ZGluZyB0aGUgZW11bGF0aW9uIG9mIFVTQiBkZXZpY2VzLiBUaGF04oCZcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFNvLCB3aGVuIGEgVVNCIGRldmljZSBpcyAmIzM0O2F0dGFjaGVkLCYjMzQ7IHdoZXRoZXIgdGhyb3VnaCBhIFVTQiBnYWRnZXQgc2V0dXAgb3IgdXNpbmcgYHN5el91c2JfY29ubmVjdGAsIHRoZSBrZXJuZWwgcHJvYmUgZnVuY3Rpb25zIGZvciB0aGUgYXR0YWNoZWQgZGV2aWNlIHdpbGwgYmUgY2FsbGVkLiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHdoYXQgaGFwcGVucyBpbiB0aGF0IHByb2JlLgoKTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBzZWUgaWYgdGhlIGBtdDc5MjF1YCBwcm9iZSBmdW5jdGlvbiBoYW5kbGVzIGVtdWxhdGVkIFVTQiBkZXNjcmlwdG9ycyBhbmQgcmVxdWVzdHMgY29ycmVjdGx5LiBBcmUgdGhlcmUgYW55IG9idmlvdXMgYXJlYXMgd2hlcmUgdGhlIGVtdWxhdGlvbiBtaWdodCBmYWlsPyBJIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyBzcGVjaWZpY2FsbHkgd2l0aGluIGBtdDc2X3BoeV9pbml0YCBhbmQgYG10NzkyeF9pbml0X3dpcGh5YCDigJMgdGhlc2UgYXJlIGxpa2VseSBrZXkgdG8gdGhlIHdpcmVsZXNzIGludGVyZmFjZSBpbml0aWFsaXphdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBmb2xsb3cgdGhlIGV4ZWN1dGlvbiBwYXRoIHRvIHNlZSBpZiBhbnkgYXNzdW1wdGlvbnMgYXJlIGJlaW5nIG1hZGUgdGhhdCB3b3VsZCBiZSBicm9rZW4gYnkgYW4gZW11bGF0ZWQgZW52aXJvbm1lbnQuCgpUbyBnZXQgc3RhcnRlZCwgSSYjMzk7bGwgbmVlZCB0byBkaXZlIGludG8gdGhlIGNvZGUuIEkmIzM5O2xsIHN0YXJ0IHdpdGggYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jYCwgb3IgcmVhbGx5IGFueSBvdGhlciByZWxldmFudCBVU0IgZHJpdmVyIHdpdGhpbiB0aGUgYG10NzZgIGRpcmVjdG9yeS4gSSYjMzk7bGwgbmVlZCB0byBjb3JyZWxhdGUgdGhlIGRlc2NyaXB0b3IgZGVmaW5pdGlvbnMgdG8gdGhlIGluaXRpYWxpemF0aW9uIHN0ZXBzIHRvIGdldCBhIHNlbnNlIG9mIHdoZXJlIGZ1enppbmcgbWlnaHQgYmUgbW9zdCBlZmZlY3RpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3VzYl9kcml2ZXJ8dXNiX3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYz0yNjU9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzY2M3VfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI3Ny19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6Mjc4Om1vZHVsZV91c2JfZHJpdmVyKG10NzY2M3VfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI3OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYz0zNDU9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzZ4MF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzU1LX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzozNTY6bW9kdWxlX3VzYl9kcml2ZXIobXQ3NngwX2RyaXZlcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmM9MTM3PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc2eDJ1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy0xNDktfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jOjE1MDptb2R1bGVfdXNiX2RyaXZlcihtdDc2eDJ1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy0xNTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MzM4PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc5MjF1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNTAtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjM1MTptb2R1bGVfdXNiX2RyaXZlcihtdDc5MjF1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNTItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MzU1PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc5MjV1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNjctfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM2ODptb2R1bGVfdXNiX2RyaXZlcihtdDc5MjV1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNjktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzMzUKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAxMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGl2aW5nIGludG8gdGhlIE1lZGlhdGVrIERyaXZlciBDb2RlKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIE1lZGlhdGVrIFdpLUZpIHNpdHVhdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGNvcmUgb2YgdGhlIHByb2JsZW0uIFRoYXQgbWVhbnMgY3JhY2tpbmcgb3BlbiB0aGUgZHJpdmVyIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIGBtYWM4MDIxMS5jYCBhbmQgYG10NzkyeF9jb3JlLmNgIGZpbGVzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZgIGRpcmVjdG9yeS4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSB0YWtpbmcgYSBjbG9zZSBsb29rIGF0IGBtYWM4MDIxMS5jYCBhcm91bmQgbGluZSA0MzksIGFuZCB0aGVuIHNoaWZ0IG15IGF0dGVudGlvbiB0byBgbXQ3OTJ4X2NvcmUuY2AsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSA4MjAuIEhvcGVmdWxseSwgdGhlIGluZm9ybWF0aW9uIEkgZmluZCBpbiB0aGVzZSBzcGVjaWZpYyBzZWN0aW9ucyB3aWxsIGlsbHVtaW5hdGUgdGhlIGlzc3VlLiBJJiMzOTttIGhvcGluZyB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBlbGVtZW50cyBpbnRlcnJlbGF0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDI1Olx0XG4gNDI2Olx0c3RhdGljIGludFxuIDQyNzpcdG10NzZfcGh5X2luaXQoc3RydWN0IG10NzZfcGh5ICpwaHksIHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuIDQyODpcdHtcbiA0Mjk6XHRcdHN0cnVjdCBtdDc2X2RldiAqZGV2ID0gcGh5LVx1MDAzZWRldjtcbiA0MzA6XHRcdHN0cnVjdCB3aXBoeSAqd2lwaHkgPSBody1cdTAwM2V3aXBoeTtcbiA0MzE6XHRcbiA0MzI6XHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNnBoeS1cdTAwM2V0eF9saXN0KTtcbiA0MzM6XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNnBoeS1cdTAwM2V0eF9sb2NrKTtcbiA0MzQ6XHRcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNnBoeS1cdTAwM2Vyb2Nfd29yaywgbXQ3Nl9yb2NfY29tcGxldGVfd29yayk7XG4gNDM1Olx0XG4gNDM2Olx0XHRpZiAoKHZvaWQgKilwaHkgIT0gaHctXHUwMDNlcHJpdilcbiA0Mzc6XHRcdFx0cmV0dXJuIDA7XG4gNDM4Olx0XG4gNDM5Olx0XHRTRVRfSUVFRTgwMjExX0RFVihodywgZGV2LVx1MDAzZWRldik7XG4gNDQwOlx0XHRTRVRfSUVFRTgwMjExX1BFUk1fQUREUihodywgcGh5LVx1MDAzZW1hY2FkZHIpO1xuIDQ0MTpcdFxuIDQ0MjpcdFx0d2lwaHktXHUwMDNlZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SIHxcbiA0NDM6XHRcdFx0XHQgICBOTDgwMjExX0ZFQVRVUkVfQVBfTU9ERV9DSEFOX1dJRFRIX0NIQU5HRTtcbiA0NDQ6XHRcdHdpcGh5LVx1MDAzZWZsYWdzIHw9IFdJUEhZX0ZMQUdfSEFTX0NIQU5ORUxfU1dJVENIIHxcbiA0NDU6XHRcdFx0XHRXSVBIWV9GTEFHX1NVUFBPUlRTX1RETFMgfFxuIDQ0NjpcdFx0XHRcdFdJUEhZX0ZMQUdfQVBfVUFQU0Q7XG4gNDQ3Olx0XG4gNDQ4Olx0XHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQ1FNX1JTU0lfTElTVCk7XG4gNDQ5Olx0XHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQUlSVElNRV9GQUlSTkVTUyk7XG4gNDUwOlx0XHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQVFMKTtcbiA0NTE6XHRcbiA0NTI6XHRcdGlmICghd2lwaHktXHUwMDNlbWF4X3JlbWFpbl9vbl9jaGFubmVsX2R1cmF0aW9uKVxuIDQ1MzpcdFx0XHR3aXBoeS1cdTAwM2VtYXhfcmVtYWluX29uX2NoYW5uZWxfZHVyYXRpb24gPSA1MDAwO1xuIDQ1NDpcdFx0aWYgKCF3aXBoeS1cdTAwM2VhdmFpbGFibGVfYW50ZW5uYXNfdHgpXG4gNDU1Olx0XHRcdHdpcGh5LVx1MDAzZWF2YWlsYWJsZV9hbnRlbm5hc190eCA9IHBoeS1cdTAwM2VhbnRlbm5hX21hc2s7XG4gNDU2Olx0XHRpZiAoIXdpcGh5LVx1MDAzZWF2YWlsYWJsZV9hbnRlbm5hc19yeClcbiA0NTc6XHRcdFx0d2lwaHktXHUwMDNlYXZhaWxhYmxlX2FudGVubmFzX3J4ID0gcGh5LVx1MDAzZWFudGVubmFfbWFzaztcbiA0NTg6XHRcbiA0NTk6XHRcdHdpcGh5LVx1MDAzZXNhcl9jYXBhID0gXHUwMDI2bXQ3Nl9zYXJfY2FwYTtcbiA0NjA6XHRcdHBoeS1cdTAwM2VmcnAgPSBkZXZtX2tjYWxsb2MoZGV2LVx1MDAzZWRldiwgd2lwaHktXHUwMDNlc2FyX2NhcGEtXHUwMDNlbnVtX2ZyZXFfcmFuZ2VzLFxuIDQ2MTpcdFx0XHRcdFx0c2l6ZW9mKHN0cnVjdCBtdDc2X2ZyZXFfcmFuZ2VfcG93ZXIpLFxuIDQ2MjpcdFx0XHRcdFx0R0ZQX0tFUk5FTCk7XG4gNDYzOlx0XHRpZiAoIXBoeS1cdTAwM2VmcnApXG4gNDY0Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDA0OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNDY5CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipEaXZpbmcgaW50byB0aGUgTVQ3OTJ4IEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIHdlIG5lZWQgdG8gdGhvcm91Z2hseSB1bmRlcnN0YW5kIGhvdyB0aGlzIE1UNzkyeCBkcml2ZXIgaXMgaW5pdGlhbGl6aW5nIHRoZSBXaS1GaSBQSFkuIEkgc2hvdWxkIGRlZmluaXRlbHkgY2hlY2sgb3V0IGBtdDc5MnhfaW5pdF93aXBoeWAgdG8gZ3Jhc3AgdGhpcy4gVGhhdCBmdW5jdGlvbiwgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmNgLCBpcyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGNvcmUgV2ktRmkgZnVuY3Rpb25hbGl0eSBpcyBiZWluZyBzZXQgdXAuIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSB0aGluZ3MgbGlrZSB0aGUgcmVnaXN0cmF0aW9uIG9mIHRoZSBXaS1GaSBkZXZpY2Ugd2l0aCB0aGUga2VybmVsJiMzOTtzIHdpcmVsZXNzIHN1YnN5c3RlbSwgYW5kIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHJhZGlvIGFuZCBNQUMgbGF5ZXJzLiBVbmRlcnN0YW5kaW5nIHRoaXMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgaXMgY3JpdGljYWwgZm9yIGFueSB0cm91Ymxlc2hvb3Rpbmcgb3IgbW9kaWZpY2F0aW9uIGVmZm9ydHMgZnVydGhlciBkb3duIHRoZSBsaW5lLiBJIHdhbnQgdG8gc2VlIGV4YWN0bHkgaG93IHRoZXkmIzM5O3JlIGhhbmRsaW5nIHRoZSBoYXJkd2FyZSBhbmQgd2hhdCB0aGUgaW5pdGlhbCBzdGF0ZSBpcy4gVGltZSB0byBkaWcgaW4hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDA0OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODA1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA4MDU6XHRcdFx0d2lwaHktXHUwMDNlbmFuX2NhcGEubWF4X2NoYW5uZWxfc3dpdGNoX3RpbWUgPSAxMjtcbiA4MDY6XHRcdFx0d2lwaHktXHUwMDNlbmFuX2NhcGEuZGV2X2NhcGFiaWxpdGllcyA9IE5BTl9ERVZfQ0FQQV9FWFRfS0VZX0lEX1NVUFBPUlRFRDtcbiA4MDc6XHRcdFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX1NFQ1VSRV9OQU4pO1xuIDgwODpcdFx0fVxuIDgwOTpcdFxuIDgxMDpcdFx0d2lwaHktXHUwMDNlbWF4X3NjYW5faWVfbGVuID0gTVQ3Nl9DT05OQUNfU0NBTl9JRV9MRU47XG4gODExOlx0XHR3aXBoeS1cdTAwM2VtYXhfc2Nhbl9zc2lkcyA9IDQ7XG4gODEyOlx0XHR3aXBoeS1cdTAwM2VtYXhfc2NoZWRfc2Nhbl9wbGFuX2ludGVydmFsID1cbiA4MTM6XHRcdFx0TVQ3Nl9DT05OQUNfTUFYX1RJTUVfU0NIRURfU0NBTl9JTlRFUlZBTDtcbiA4MTQ6XHRcdHdpcGh5LVx1MDAzZW1heF9zY2hlZF9zY2FuX2llX2xlbiA9IElFRUU4MDIxMV9NQVhfREFUQV9MRU47XG4gODE1Olx0XHR3aXBoeS1cdTAwM2VtYXhfc2NoZWRfc2Nhbl9zc2lkcyA9IE1UNzZfQ09OTkFDX01BWF9TQ0hFRF9TQ0FOX1NTSUQ7XG4gODE2Olx0XHR3aXBoeS1cdTAwM2VtYXhfbWF0Y2hfc2V0cyA9IE1UNzZfQ09OTkFDX01BWF9TQ0FOX01BVENIO1xuIDgxNzpcdFx0d2lwaHktXHUwMDNlbWF4X3NjaGVkX3NjYW5fcmVxcyA9IDE7XG4gODE4Olx0XHR3aXBoeS1cdTAwM2VmbGFncyB8PSBXSVBIWV9GTEFHX0hBU19DSEFOTkVMX1NXSVRDSCB8XG4gODE5Olx0XHRcdFx0V0lQSFlfRkxBR19TUExJVF9TQ0FOXzZHSFo7XG4gODIwOlx0XG4gODIxOlx0XHR3aXBoeS1cdTAwM2VmZWF0dXJlcyB8PSBOTDgwMjExX0ZFQVRVUkVfU0NIRURfU0NBTl9SQU5ET01fTUFDX0FERFIgfFxuIDgyMjpcdFx0XHRcdCAgIE5MODAyMTFfRkVBVFVSRV9TQ0FOX1JBTkRPTV9NQUNfQUREUjtcbiA4MjM6XHRcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9TRVRfU0NBTl9EV0VMTCk7XG4gODI0Olx0XHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQkVBQ09OX1JBVEVfTEVHQUNZKTtcbiA4MjU6XHRcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9CRUFDT05fUkFURV9IVCk7XG4gODI2Olx0XHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQkVBQ09OX1JBVEVfVkhUKTtcbiA4Mjc6XHRcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9CRUFDT05fUkFURV9IRSk7XG4gODI4Olx0XHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQUNLX1NJR05BTF9TVVBQT1JUKTtcbiA4Mjk6XHRcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9DQU5fUkVQTEFDRV9QVEswKTtcbiA4MzA6XHRcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9NVUxUSUNBU1RfUkVHSVNUUkFUSU9OUyk7XG4gODMxOlx0XG4gODMyOlx0XHRpZWVlODAyMTFfaHdfc2V0KGh3LCBTSU5HTEVfU0NBTl9PTl9BTExfQkFORFMpO1xuIDgzMzpcdFx0aWVlZTgwMjExX2h3X3NldChodywgSEFTX1JBVEVfQ09OVFJPTCk7XG4gODM0Olx0XHRpZWVlODAyMTFfaHdfc2V0KGh3LCBTVVBQT1JUU19UWF9FTkNBUF9PRkZMT0FEKTtcbiA4MzU6XHRcdGllZWU4MDIxMV9od19zZXQoaHcsIFNVUFBPUlRTX1JYX0RFQ0FQX09GRkxPQUQpO1xuIDgzNjpcdFx0aWYgKGlzX210NzkyNyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG4gODM3Olx0XHRcdGllZWU4MDIxMV9od19zZXQoaHcsIE5PX1ZJUlRVQUxfTU9OSVRPUik7XG4gODM4Olx0XHRlbHNlXG4gODM5Olx0XHRcdGllZWU4MDIxMV9od19zZXQoaHcsIFdBTlRfTU9OSVRPUl9WSUYpO1xuIDg0MDpcdFx0aWVlZTgwMjExX2h3X3NldChodywgU1VQUE9SVFNfUFMpO1xuIDg0MTpcdFx0aWVlZTgwMjExX2h3X3NldChodywgU1VQUE9SVFNfRFlOQU1JQ19QUyk7XG4gODQyOlx0XHRpZWVlODAyMTFfaHdfc2V0KGh3LCBTVVBQT1JUU19WSFRfRVhUX05TU19CVyk7XG4gODQzOlx0XHRpZWVlODAyMTFfaHdfc2V0KGh3LCBDT05ORUNUSU9OX01PTklUT1IpO1xuIDg0NDpcdFx0aWVlZTgwMjExX2h3X3NldChodywgU1VQUE9SVFNfTVVMVElfQlNTSUQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDg3MwoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBhIENvZGUgQ29tbWl0KioKCkFscmlnaHQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSAqd2h5KiBiZWhpbmQgdGhpcyBjb21taXQuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8ganVtcCBzdHJhaWdodCBpbnRvIHRoZSBjb2RlIGNoYW5nZXMsIHNlZSB3aGF0JiMzOTtzIGRpZmZlcmVudCBhbmQgaG93LCBidXQgdGhhdCYjMzk7cyBvZnRlbiBhIHNob3J0Y3V0IHRvIG1pc3VuZGVyc3RhbmRpbmcuIEkgbmVlZCBjb250ZXh0IGZpcnN0LiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgdGhlIGNvbW1pdCBtZXNzYWdlIGFuZCBkaWcgdGhyb3VnaCB0aGUgZ2l0IGhpc3RvcnkuIE1heWJlIHRoaXMgaXMgYSBxdWljayBmaXgsIG1heWJlIGEgbGFyZ2VyIHJlZmFjdG9yIOKAkyBjb250ZXh0IGlzIGtpbmcgaGVyZS4gVGhlIG1lc3NhZ2Ugc2hvdWxkIGlkZWFsbHkgdGVsbCBtZSB0aGUgc3RvcnkuIExldCYjMzk7cyBzZWUgaWYgdGhlIGxvZyBjYW4gZ2l2ZSBtZSBzb21lIHJlY2VudCBjb21taXRzIG9yIHN1cnJvdW5kaW5nIGNvbnRleHQuIFRoaXMgd2lsbCBob3BlZnVsbHkgc2F2ZSBtZSBzb21lIHRpbWUgYW5kIGFsbG93IG1lIHRvIGRldGVybWluZSB0aGUgdHJ1ZSBuYXR1cmUgb2YgdGhpcyBjb21taXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDA0OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bm9fYWN0aXZlX21vbml0b3ImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTExMQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS2VybmVsIFBhdGNoOiBEaXNzZWN0aW5nIHRoZSBSZW1vdmFsIG9mIGBub19hY3RpdmVfbW9uaXRvcmAqKgoKT2theSwgc28gdGhpcyBwYXRjaCBudWtlZCBgbm9fYWN0aXZlX21vbml0b3JgIGZyb20gdGhlIGtlcm5lbCB0cmVlLCBiYXNpY2FsbHkgZXZlcnl3aGVyZS4gSW50ZXJlc3RpbmcuIFRpbWUgdG8gZGlnIGluIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBhY3QuIEkgbmVlZCB0byBzZWUgKndoZXJlKiB0aGlzIHZhcmlhYmxlIHdhcyBiZWluZyB1c2VkIGFuZCBob3cgaXRzIHJlbW92YWwgY2hhbmdlcyB0aGUgbGFuZHNjYXBlLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCB0aGUgY2FsbHMgdG8gYG10NzZfcGh5X2luaXRgIGFuZCBgbXQ3OTJ4X2luaXRfd2lwaHlgLiBUaG9zZSBzZWVtIGxpa2UgbG9naWNhbCBlbnRyeSBwb2ludHMgZm9yIG1vbml0b3IgbW9kZSBmdW5jdGlvbmFsaXR5IGFuZCBpbml0aWFsaXphdGlvbiwgc28gSSYjMzk7bSBndWVzc2luZyB0aGF0JiMzOTtzIHdoZXJlIHRoZSByYW1pZmljYXRpb25zIG9mIHJlbW92aW5nIHRoaXMgdmFyaWFibGUgd2lsbCBiZSBtb3N0IHJlYWRpbHkgYXBwYXJlbnQuIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgc29tZSBwb3RlbnRpYWwgcmFtaWZpY2F0aW9ucyBvbiB0aGUgZHJpdmVyJiMzOTtzIGFiaWxpdHkgdG8gcHJvcGVybHkgaGFuZGxlIG1vbml0b3IgbW9kZS4gRGVwZW5kaW5nIG9uICpob3cqIGBub19hY3RpdmVfbW9uaXRvcmAgd2FzIHVzZWQsIGl0IGNvdWxkIHJlcHJlc2VudCBhIGNoYW5nZSBpbiBiZWhhdmlvciwgZnVuY3Rpb25hbGl0eSBvciwgcG90ZW50aWFsbHksIGEgYnVnLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgd2FzIGEgY2xlYW51cCwgYSByZWZhY3Rvciwgb3Igc29tZXRoaW5nIG1vcmUuIEFscmlnaHQsIGxldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29kZSBzYXlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X3BoeV9pbml0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz00MjY9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjQyNzptdDc2X3BoeV9pbml0KHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy00Mjgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz01NTA9aW50IG10NzZfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBib29sIHZodCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNTU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjU1NTpcdHJldCA9IG10NzZfcGh5X2luaXQocGh5LCBwaHktXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTU1Ni1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTc0Nz1pbnQgbXQ3Nl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYsIGJvb2wgdmh0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy03NTUtXHRtdDc2X3djaWRfaW5pdChcdTAwMjZkZXYtXHUwMDNlZ2xvYmFsX3djaWQsIHBoeS1cdTAwM2ViYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6NzU2Olx0cmV0ID0gbXQ3Nl9waHlfaW5pdChwaHksIGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy03NTctXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTg1NgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqVHJhY2luZyB0aGUgSW5pdGlhbGl6YXRpb24gb2YgbXQ3OTJ4X3dpcGh5KioKCk9rYXksIHRpbWUgdG8gZGlnIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBtdDc5Mnhfd2lwaHlgIGlzIGluaXRpYWxpemVkLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGNhbGwgY2hhaW4sIHdoZXJlIGRvZXMgdGhlIGBtdDc5MnhfaW5pdF93aXBoeWAgZnVuY3Rpb24gY29tZSBpbnRvIHBsYXk/IEkgbmVlZCB0byBmaW5kIGFsbCB0aGUgcGxhY2VzIGl0JiMzOTtzIGFjdHVhbGx5IGludm9rZWQuIEtub3dpbmcgdGhlIHBvaW50cyBvZiBlbnRyeSB3aWxsIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBhbmQgdGhlIGJyb2FkZXIgc3lzdGVtIGJlaGF2aW9yIHRoYXQgcmVsaWVzIG9uIGl0LiBJIG5lZWQgdG8gbG9jYXRlIGFsbCByZWZlcmVuY2VzIHRvIHRoYXQgZnVuY3Rpb24uIFRpbWUgdG8gc3RhcnQgc2VhcmNoaW5nIHRoZSBjb2RlIGJhc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDA0OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyeF9pbml0X3dpcGh5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYz0xNzA9aW50IG10NzkyMV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjIyNzpcdHJldCA9IG10NzkyeF9pbml0X3dpcGh5KGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0yMjgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYz0yNDM9aW50IG10NzkyNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI5ODpcdHJldCA9IG10NzkyeF9pbml0X3dpcGh5KGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yOTktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg9NTIxPWludCBtdDc5MnhfcG1faWRsZV90aW1lb3V0X2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oOjUyMjppbnQgbXQ3OTJ4X2luaXRfd2lwaHkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC01MjMtc3RydWN0IGllZWU4MDIxMV9vcHMgKlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYz03NDg9RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTJ4X3NldF9jb3ZlcmFnZV9jbGFzcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmMtNzQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jOjc1MDppbnQgbXQ3OTJ4X2luaXRfd2lwaHkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmMtNzUxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmMtODU2LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYzo4NTc6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTJ4X2luaXRfd2lwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jLTg1OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY3NzgKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAxMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgbXQ3OTIxYCBEcml2ZXIgUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIGBtdDc5MjFgIGRyaXZlciBnZXRzIGluaXRpYWxpemVkLiBUaGUgY29yZSBmdW5jdGlvbiBoZXJlLCBgbXQ3OTIxX3JlZ2lzdGVyX2RldmljZWAsIGlzIHRyaWdnZXJlZCBiYXNlZCBvbiB0aGUgYnVzIHR5cGU6IFVTQiAoYG10NzkyMXVgKSwgUENJZSAoYG10NzkyMWVgKSwgb3IgU0RJTyAoYG10NzkyMXNgKS4gTm93LCBJJiMzOTttIGdldHRpbmcgYSBsaXR0bGUgY3VyaW91cyBhYm91dCB0aGUgZnV6emluZyBwb3RlbnRpYWwuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB3b25kZXJpbmcgaWYgYSBVU0ItYmFzZWQgcHJvYmUgdXNpbmcgYG10NzkyMXVgIGNvdWxkIGJlIGEgdmlhYmxlIHRhcmdldCBmb3IgZnV6emluZy4gSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgVVNCIGltcGxlbWVudGF0aW9uIHRvIGFzc2VzcyB0aGUgYXR0YWNrIHN1cmZhY2UuIFRpbWUgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuY2AgYW5kIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZyB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjkwOlx0XG4gMjkxOlx0c3RhdGljIGludCBtdDc5MjF1X3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbiAyOTI6XHR7XG4gMjkzOlx0XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcbiAyOTQ6XHRcdHN0cnVjdCBtdDc2X2Nvbm5hY19wbSAqcG0gPSBcdTAwMjZkZXYtXHUwMDNlcG07XG4gMjk1Olx0XHRib29sIHJlaW5pdCA9IHRydWU7XG4gMjk2Olx0XHRpbnQgZXJyLCBpO1xuIDI5NzpcdFxuIDI5ODpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgMTA7IGkmIzQzOyYjNDM7KSB7XG4gMjk5Olx0XHRcdHUzMiB2YWwgPSBtdDc2X3JyKGRldiwgTVRfV0ZfU1dfREVGX0NSX1VTQl9NQ1VfRVZFTlQpO1xuIDMwMDpcdFxuIDMwMTpcdFx0XHRpZiAoISh2YWwgXHUwMDI2IE1UX1dGX1NXX1NFUl9UUklHR0VSX1NVU1BFTkQpKSB7XG4gMzAyOlx0XHRcdFx0cmVpbml0ID0gZmFsc2U7XG4gMzAzOlx0XHRcdFx0YnJlYWs7XG4gMzA0Olx0XHRcdH1cbiAzMDU6XHRcdFx0aWYgKHZhbCBcdTAwMjYgTVRfV0ZfU1dfU0VSX0RPTkVfU1VTUEVORCkge1xuIDMwNjpcdFx0XHRcdG10NzZfd3IoZGV2LCBNVF9XRl9TV19ERUZfQ1JfVVNCX01DVV9FVkVOVCwgMCk7XG4gMzA3Olx0XHRcdFx0YnJlYWs7XG4gMzA4Olx0XHRcdH1cbiAzMDk6XHRcbiAzMTA6XHRcdFx0bXNsZWVwKDIwKTtcbiAzMTE6XHRcdH1cbiAzMTI6XHRcbiAzMTM6XHRcdGlmIChyZWluaXQgfHwgbXQ3OTJ4X2RtYV9uZWVkX3JlaW5pdChkZXYpKSB7XG4gMzE0Olx0XHRcdGVyciA9IG10NzkyeHVfZG1hX2luaXQoZGV2LCB0cnVlKTtcbiAzMTU6XHRcdFx0aWYgKGVycilcbiAzMTY6XHRcdFx0XHRnb3RvIGZhaWxlZDtcbiAzMTc6XHRcdH1cbiAzMTg6XHRcbiAzMTk6XHRcdGVyciA9IG10NzZ1X3Jlc3VtZV9yeChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gMzIwOlx0XHRpZiAoZXJyIFx1MDAzYyAwKVxuIDMyMTpcdFx0XHRnb3RvIGZhaWxlZDtcbiAzMjI6XHRcbiAzMjM6XHRcdGVyciA9IG10NzZfY29ubmFjX21jdV9zZXRfaGlmX3N1c3BlbmQoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIGZhbHNlLCB0cnVlKTtcbiAzMjQ6XHRmYWlsZWQ6XG4gMzI1Olx0XHRwbS1cdTAwM2VzdXNwZW5kZWQgPSBmYWxzZTtcbiAzMjY6XHRcbiAzMjc6XHRcdGlmIChlcnIgXHUwMDNjIDApXG4gMzI4Olx0XHRcdG10NzkyeF9yZXNldChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gMzI5Olx0XG4gMzMwOlx0XHRyZXR1cm4gZXJyO1xuIDMzMTpcdH1cbiAzMzI6XHQjZW5kaWYgLyogQ09ORklHX1BNICovXG4gMzMzOlx0XG4gMzM0Olx0TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIG10NzkyMXVfZGV2aWNlX3RhYmxlKTtcbiAzMzU6XHRNT0RVTEVfRklSTVdBUkUoTVQ3OTIxX0ZJUk1XQVJFX1dNKTtcbiAzMzY6XHRNT0RVTEVfRklSTVdBUkUoTVQ3OTIxX1JPTV9QQVRDSCk7XG4gMzM3Olx0XG4gMzM4Olx0c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzkyMXVfZHJpdmVyID0ge1xuIDMzOTpcdFx0Lm5hbWVcdFx0PSBLQlVJTERfTU9ETkFNRSxcbiAzNDA6XHRcdC5pZF90YWJsZVx0PSBtdDc5MjF1X2RldmljZV90YWJsZSxcbiAzNDE6XHRcdC5wcm9iZVx0XHQ9IG10NzkyMXVfcHJvYmUsXG4gMzQyOlx0XHQuZGlzY29ubmVjdFx0PSBtdDc5Mnh1X2Rpc2Nvbm5lY3QsXG4gMzQzOlx0I2lmZGVmIENPTkZJR19QTVxuIDM0NDpcdFx0LnN1c3BlbmRcdD0gbXQ3OTIxdV9zdXNwZW5kLFxuIDM0NTpcdFx0LnJlc3VtZVx0XHQ9IG10NzkyMXVfcmVzdW1lLFxuIDM0NjpcdFx0LnJlc2V0X3Jlc3VtZVx0PSBtdDc5MjF1X3Jlc3VtZSxcbiAzNDc6XHQjZW5kaWYgLyogQ09ORklHX1BNICovXG4gMzQ4Olx0XHQuc29mdF91bmJpbmRcdD0gMSxcbiAzNDk6XHRcdC5kaXNhYmxlX2h1Yl9pbml0aWF0ZWRfbHBtID0gMSxcbiAzNTA6XHR9O1xuIDM1MTpcdG1vZHVsZV91c2JfZHJpdmVyKG10NzkyMXVfZHJpdmVyKTtcbiAzNTI6XHRcbiAzNTM6XHRNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7TWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSB3aXJlbGVzcyBkcml2ZXJcJiMzNDspO1xuIDM1NDpcdE1PRFVMRV9BVVRIT1IoXCYjMzQ7TG9yZW56byBCaWFuY29uaSBcdTAwM2Nsb3JlbnpvQGtlcm5lbC5vcmdcdTAwM2VcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODE3MQoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYG10NzkyMXVfcHJvYmVgIGZ1bmN0aW9uLi4uCgoqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiBgbXQ3OTIxdV9wcm9iZWAqKgoKQWxyaWdodCwgSSYjMzk7bSBsb29raW5nIGF0IGBtdDc5MjF1X3Byb2JlYC4gVGhhdCBuYW1pbmcgY29udmVudGlvbiBzdWdnZXN0cyB0aGlzIGlzIGxpa2VseSB0aGUgcHJvYmUgZnVuY3Rpb24gZm9yIGEgTWVkaWFUZWsgTVQ3OTIxVS1iYXNlZCBVU0IgZGV2aWNlLiAgR2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIHNpbWlsYXIgZHJpdmVycywgSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyBhIGZldyBrZXkgdGhpbmdzIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yLiBJIGV4cGVjdCB0byBzZWUgdGhlIHR5cGljYWwgVVNCIGRldmljZSBpbml0aWFsaXphdGlvbiBmbG93OiAgZGV2aWNlIGRlc2NyaXB0b3IgYWNxdWlzaXRpb24sIGVuZHBvaW50IGNvbmZpZ3VyYXRpb24sIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCwgaWRlYWxseSwgc29tZSBzb3J0IG9mIHNhbml0eSBjaGVjayB0byBlbnN1cmUgdGhlIFVTQiBkZXZpY2UgaXMgYWN0dWFsbHkgYSBjb21wYXRpYmxlIE1UNzkyMVUgdmFyaWFudCBhbmQgaXNuJiMzOTt0IHNvbWV0aGluZyBtYXNxdWVyYWRpbmcgYXMgb25lLiAgVGhlcmUmIzM5O3MgYWxzbyBnb2luZyB0byBiZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBkZXZpY2Utc3BlY2lmaWMgcmVnaXN0ZXJzLiBJJiMzOTtsbCBleHBlY3QgdG8gc2VlIHRoaXMgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAgdGhlIG5lY2Vzc2FyeSB3b3JrcXVldWVzLCBpbml0aWFsaXppbmcgbXV0ZXhlcyBvciBzcGlubG9ja3MgZm9yIGNvbmN1cnJlbnQgYWNjZXNzIGlmIG5lY2Vzc2FyeS4gSG9wZWZ1bGx5LCB0aGV5IGhhdmVuJiMzOTt0IGZvcmdvdHRlbiBlcnJvciBoYW5kbGluZyDigJMgZ29vZCBwcm9iZSBmdW5jdGlvbnMgYXJlIHJlc2lsaWVudC4gSSYjMzk7bSBrZWVuIHRvIG9ic2VydmUgaG93IHRoZXkgaGFuZGxlIHBvdGVudGlhbCBmYWlsdXJlIHNjZW5hcmlvcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIGxpa2UgVVNCIHRyYW5zZmVyIGVycm9ycyBvciBoYXJkd2FyZSBtYWxmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDA0OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIzMDpcdFx0cmV0ID0gbXQ3NnVfYWxsb2NfbWN1X3F1ZXVlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbiAyMzE6XHRcdGlmIChyZXQpXG4gMjMyOlx0XHRcdGdvdG8gZXJyb3I7XG4gMjMzOlx0XG4gMjM0Olx0XHRyZXQgPSBtdDc2dV9hbGxvY19xdWV1ZXMoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuIDIzNTpcdFx0aWYgKHJldClcbiAyMzY6XHRcdFx0Z290byBlcnJvcjtcbiAyMzc6XHRcbiAyMzg6XHRcdHJldCA9IG10NzkyeHVfZG1hX2luaXQoZGV2LCBmYWxzZSk7XG4gMjM5Olx0XHRpZiAocmV0KVxuIDI0MDpcdFx0XHRnb3RvIGVycm9yO1xuIDI0MTpcdFxuIDI0MjpcdFx0aHcgPSBtdDc2X2h3KGRldik7XG4gMjQzOlx0XHQvKiBjaGVjayBodyBzZyBzdXBwb3J0IGluIG9yZGVyIHRvIGVuYWJsZSBBTVNEVSAqL1xuIDI0NDpcdFx0aHctXHUwMDNlbWF4X3R4X2ZyYWdtZW50cyA9IG1kZXYtXHUwMDNldXNiLnNnX2VuID8gTVRfSFdfVFhQX01BWF9CVUZfTlVNIDogMTtcbiAyNDU6XHRcbiAyNDY6XHRcdHJldCA9IG10NzkyMV9yZWdpc3Rlcl9kZXZpY2UoZGV2KTtcbiAyNDc6XHRcdGlmIChyZXQpXG4gMjQ4Olx0XHRcdGdvdG8gZXJyb3I7XG4gMjQ5Olx0XG4gMjUwOlx0XHRyZXR1cm4gMDtcbiAyNTE6XHRcbiAyNTI6XHRlcnJvcjpcbiAyNTM6XHRcdG10NzZ1X3F1ZXVlc19kZWluaXQoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuIDI1NDpcdFx0bXQ3OTJ4dV9yZXNldF93b3JrX2NsZWFudXAoZGV2KTtcbiAyNTU6XHRcbiAyNTY6XHRcdHVzYl9zZXRfaW50ZmRhdGEodXNiX2ludGYsIE5VTEwpO1xuIDI1NzpcdFxuIDI1ODpcdFx0bXQ3Nl9mcmVlX2RldmljZShcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gMjU5Olx0XG4gMjYwOlx0XHRyZXR1cm4gcmV0O1xuIDI2MTpcdH1cbiAyNjI6XHRcbiAyNjM6XHQjaWZkZWYgQ09ORklHX1BNXG4gMjY0Olx0c3RhdGljIGludCBtdDc5MjF1X3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcbiAyNjU6XHR7XG4gMjY2Olx0XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcbiAyNjc6XHRcdHN0cnVjdCBtdDc2X2Nvbm5hY19wbSAqcG0gPSBcdTAwMjZkZXYtXHUwMDNlcG07XG4gMjY4Olx0XHRpbnQgZXJyO1xuIDI2OTpcdFxuIDI3MDpcdFx0cG0tXHUwMDNlc3VzcGVuZGVkID0gdHJ1ZTtcbiAyNzE6XHRcdGZsdXNoX3dvcmsoXHUwMDI2ZGV2LVx1MDAzZXJlc2V0X3dvcmspO1xuIDI3MjpcdFxuIDI3MzpcdFx0ZXJyID0gbXQ3Nl9jb25uYWNfbWN1X3NldF9oaWZfc3VzcGVuZChcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgdHJ1ZSwgdHJ1ZSk7XG4gMjc0Olx0XHRpZiAoZXJyKVxuIDI3NTpcdFx0XHRnb3RvIGZhaWxlZDtcbiAyNzY6XHRcbiAyNzc6XHRcdG10NzZ1X3N0b3BfcngoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuIDI3ODpcdFx0bXQ3NnVfc3RvcF90eChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gMjc5Olx0XG4gMjgwOlx0XHRyZXR1cm4gMDtcbiAyODE6XHRcbiAyODI6XHRmYWlsZWQ6XG4gMjgzOlx0XHRwbS1cdTAwM2VzdXNwZW5kZWQgPSBmYWxzZTtcbiAyODQ6XHRcbiAyODU6XHRcdGlmIChlcnIgXHUwMDNjIDApXG4gMjg2Olx0XHRcdG10NzkyeF9yZXNldChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gMjg3Olx0XG4gMjg4Olx0XHRyZXR1cm4gZXJyO1xuIDI4OTpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkzMzAKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGl2aW5nIERlZXBlciBpbnRvIHRoZSBtdDc5MjF1IFByb2JlKioKCkFscmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IHRoZSByZW1haW5kZXIgb2YgdGhlIGBtdDc5MjF1X3Byb2JlYCBmdW5jdGlvbi4gSSBhbHJlYWR5IGhhdmUgYSBkZWNlbnQgZ3Jhc3Agb2YgdGhlIG92ZXJhbGwgZHJpdmVyIGFyY2hpdGVjdHVyZSBmb3IgdGhpcyBNZWRpYVRlayBjaGlwLCBhbmQgSSYjMzk7dmUgcHJvYmFibHkgYWxyZWFkeSBpZGVudGlmaWVkIGtleSBhc3BlY3RzIG9mIHRoZSBmdW5jdGlvbiYjMzk7cyBpbml0aWFsIHNldHVwLiBOb3csIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7TGV0JiMzOTtzIGRpZyBpbiBhbmQgZXhhbWluZSB0aGUgbml0dHktZ3JpdHR5IGRldGFpbHMgb2YgaG93IHRoaXMgZnVuY3Rpb24gc2V0cyB1cCB0aGUgVVNCIGRldmljZS4mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGhhcmR3YXJlIGlzIGluaXRpYWxpemVkLCBob3cgdGhlIGRldmljZSBpcyBjb25maWd1cmVkLCBhbmQgd2hhdCByZXNvdXJjZXMgYXJlIGFsbG9jYXRlZC4gV2hhdCBlcnJvciBoYW5kbGluZyBpcyBwcmVzZW50PyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbGx5IHByb2JsZW1hdGljIGFyZWFzIGluIHRoZSBpbml0aWFsIHByb2Jpbmcgc2VxdWVuY2U/IEkmIzM5O20gcHJvYmFibHkgbWVudGFsbHkgY2hlY2tpbmcgZm9yIHRoaW5ncyBsaWtlIERNQSBzZXR1cCwgZW5kcG9pbnQgaW5pdGlhbGl6YXRpb24sIGFuZCB0aGUgcmVnaXN0cmF0aW9uIG9mIGludGVycnVwdCBoYW5kbGVycy4gSSYjMzk7bSBhbHNvIGxvb2tpbmcgZm9yIGFueSBlYXJseSBpbmRpY2F0aW9ucyBvZiBwb3dlciBtYW5hZ2VtZW50IGNvbmZpZ3VyYXRpb24gb3IgZmlybXdhcmUgbG9hZGluZyBwcm9jZWR1cmVzLiBUaGlzICYjMzQ7cmVzdCBvZiBgbXQ3OTIxdV9wcm9iZWAmIzM0OyBpcyBjcml0aWNhbCwgYmVjYXVzZSBpdCYjMzk7cyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLiBJdCYjMzk7cyB0aGUgbGF1bmNocGFkIGZvciB0aGUgZW50aXJlIGRldmljZSBvcGVyYXRpb24sIGFuZCBhbnkgbWlzdGFrZXMgaGVyZSB3aWxsIGNhc2NhZGUgaW50byBtYWpvciBwcm9ibGVtcyBsYXRlciBvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgcHJvYmUgZXN0YWJsaXNoZXMgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciBldmVyeXRoaW5nIHRoYXQgZm9sbG93cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTgwOlx0XHRcdC5yZWFkX2NvcHkgPSBtdDc2dV9yZWFkX2NvcHksXG4gMTgxOlx0XHRcdC53cml0ZV9jb3B5ID0gbXQ3OTJ4dV9jb3B5LFxuIDE4MjpcdFx0XHQudHlwZSA9IE1UNzZfQlVTX1VTQixcbiAxODM6XHRcdH07XG4gMTg0Olx0XHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYodXNiX2ludGYpO1xuIDE4NTpcdFx0c3RydWN0IGllZWU4MDIxMV9vcHMgKm9wcztcbiAxODY6XHRcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xuIDE4NzpcdFx0c3RydWN0IG10NzkyeF9kZXYgKmRldjtcbiAxODg6XHRcdHN0cnVjdCBtdDc2X2RldiAqbWRldjtcbiAxODk6XHRcdHU4IGZlYXR1cmVzO1xuIDE5MDpcdFx0aW50IHJldDtcbiAxOTE6XHRcbiAxOTI6XHRcdG9wcyA9IG10NzkyeF9nZXRfbWFjODAyMTFfb3BzKFx1MDAyNnVzYl9pbnRmLVx1MDAzZWRldiwgXHUwMDI2bXQ3OTIxX29wcyxcbiAxOTM6XHRcdFx0XHRcdCAgICAgICh2b2lkICopaWQtXHUwMDNlZHJpdmVyX2luZm8sIFx1MDAyNmZlYXR1cmVzKTtcbiAxOTQ6XHRcdGlmICghb3BzKVxuIDE5NTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAxOTY6XHRcbiAxOTc6XHRcdG9wcy1cdTAwM2VzdG9wID0gbXQ3OTJ4dV9zdG9wO1xuIDE5ODpcdFx0bWRldiA9IG10NzZfYWxsb2NfZGV2aWNlKFx1MDAyNnVzYl9pbnRmLVx1MDAzZWRldiwgc2l6ZW9mKCpkZXYpLCBvcHMsIFx1MDAyNmRydl9vcHMpO1xuIDE5OTpcdFx0aWYgKCFtZGV2KVxuIDIwMDpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAyMDE6XHRcbiAyMDI6XHRcdGRldiA9IGNvbnRhaW5lcl9vZihtZGV2LCBzdHJ1Y3QgbXQ3OTJ4X2RldiwgbXQ3Nik7XG4gMjAzOlx0XHRkZXYtXHUwMDNlZndfZmVhdHVyZXMgPSBmZWF0dXJlcztcbiAyMDQ6XHRcdGRldi1cdTAwM2VoaWZfb3BzID0gXHUwMDI2aGlmX29wcztcbiAyMDU6XHRcdGF0b21pY19zZXQoXHUwMDI2ZGV2LVx1MDAzZW10NzYuYnVzX2h1bmcsIGZhbHNlKTtcbiAyMDY6XHRcdG10NzkyeHVfcmVzZXRfd29ya19pbml0KGRldik7XG4gMjA3Olx0XG4gMjA4Olx0XHR1c2JfcmVzZXRfZGV2aWNlKHVkZXYpO1xuIDIwOTpcdFxuIDIxMDpcdFx0dXNiX3NldF9pbnRmZGF0YSh1c2JfaW50ZiwgZGV2KTtcbiAyMTE6XHRcbiAyMTI6XHRcdHJldCA9IF9fbXQ3NnVfaW5pdChtZGV2LCB1c2JfaW50ZiwgXHUwMDI2YnVzX29wcyk7XG4gMjEzOlx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDIxNDpcdFx0XHRnb3RvIGVycm9yO1xuIDIxNTpcdFxuIDIxNjpcdFx0bWRldi1cdTAwM2VyZXYgPSAobXQ3Nl9ycihkZXYsIE1UX0hXX0NISVBJRCkgXHUwMDNjXHUwMDNjIDE2KSB8XG4gMjE3Olx0XHRcdCAgICAobXQ3Nl9ycihkZXYsIE1UX0hXX1JFVikgXHUwMDI2IDB4ZmYpO1xuIDIxODpcdFx0ZGV2X2RiZyhtZGV2LVx1MDAzZWRldiwgXCYjMzQ7QVNJQyByZXZpc2lvbjogJTA0eFxcblwmIzM0OywgbWRldi1cdTAwM2VyZXYpO1xuIDIxOTpcdFxuIDIyMDpcdFx0aWYgKG10NzZfZ2V0X2ZpZWxkKGRldiwgTVRfQ09OTl9PTl9NSVNDLCBNVF9UT1BfTUlTQzJfRldfTjlfUkRZKSkge1xuIDIyMTpcdFx0XHRyZXQgPSBtdDc5Mnh1X3dmc3lzX3Jlc2V0KGRldik7XG4gMjIyOlx0XHRcdGlmIChyZXQpXG4gMjIzOlx0XHRcdFx0Z290byBlcnJvcjtcbiAyMjQ6XHRcdH1cbiAyMjU6XHRcbiAyMjY6XHRcdHJldCA9IG10NzkyeHVfbWN1X3Bvd2VyX29uKGRldik7XG4gMjI3Olx0XHRpZiAocmV0KVxuIDIyODpcdFx0XHRnb3RvIGVycm9yO1xuIDIyOTpcdFxuIDIzMDpcdFx0cmV0ID0gbXQ3NnVfYWxsb2NfbWN1X3F1ZXVlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbiAyMzE6XHRcdGlmIChyZXQpXG4gMjMyOlx0XHRcdGdvdG8gZXJyb3I7XG4gMjMzOlx0XG4gMjM0Olx0XHRyZXQgPSBtdDc2dV9hbGxvY19xdWV1ZXMoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDYzMwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipLY29uZmlnIEluc3BlY3Rpb24gZm9yIG10NzYgYW5kIG10NzkyMSoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW4uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSB1cC10by1kYXRlIG9uIHRoZSBjb25maWd1cmF0aW9ucyBmb3IgdGhvc2UgTVRLIHdpcmVsZXNzIGRyaXZlcnMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIHJlbGF0ZWQgdG8gYG10NzZgIGFuZCBgbXQ3OTIxYC4gVGhlc2UgS2NvbmZpZyBmaWxlcyBhcmUgdGhlIGhlYXJ0IG9mIHRoZSBrZXJuZWwmIzM5O3MgY29uZmlndXJhdGlvbiBzeXN0ZW0uIFRoZXkgZGVmaW5lIHRoZSBidWlsZCBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBoZWxwIHRleHQgdGhhdCBkZXRlcm1pbmUgd2hldGhlciBhIHBhcnRpY3VsYXIgZHJpdmVyIG9yIGZlYXR1cmUgaXMgZW5hYmxlZCBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBkcml2ZXJzIGFyZSBiZWluZyBtYW5hZ2VkIOKAkyBhcmUgdGhleSBtb2R1bGVzLCBidWlsdC1pbiwgb3Igb3B0aW9uYWxseSBpbmNsdWRlZD8gQXJlIHRoZXJlIGFueSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMgSSBzaG91bGQgYmUgYXdhcmUgb2YsIHBlcmhhcHMgb24gb3RoZXIga2VybmVsIHN1YnN5c3RlbXMgb3IgYm9hcmQgc3VwcG9ydCBwYWNrYWdlcz8gSSBuZWVkIHRvIGxvb2sgZm9yIGFueSBkZWZhdWx0IHNldHRpbmdzIHRoYXQgbWlnaHQgaW1wYWN0IG15IGN1cnJlbnQgcHJvamVjdCBvciBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cy4gSSBhbHNvIGhhdmUgdG8ga2VlcCBhbiBleWUgb3V0IGZvciBhbnkgcmVjZW50IGNoYW5nZXMgb3IgYWRkaXRpb25zIHRoYXQgbWF5IGhhdmUgYmVlbiBpbnRyb2R1Y2VkIGluIHVwc3RyZWFtIGtlcm5lbHMuIFRoaXMgaXMgYWJvdXQgbWFraW5nIHN1cmUgZXZlcnl0aGluZyB3aWxsIHdvcmsgYXMgZXhwZWN0ZWQgd2l0aCBteSB0YXJnZXQgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1UNzZ8Y29uZmlnIE1UNzkyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyOmNvbmZpZyBNVDc2X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzo2OmNvbmZpZyBNVDc2X0xFRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy03LVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoxMjpjb25maWcgTVQ3Nl9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjE2OmNvbmZpZyBNVDc2X1NESU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xNy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjIwOmNvbmZpZyBNVDc2eDAyX0xJQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTIxLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MjQ6Y29uZmlnIE1UNzZ4MDJfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMjUtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyODpjb25maWcgTVQ3Nl9DT05OQUNfTElCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMjktXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzozMjpjb25maWcgTVQ3OTJ4X0xJQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMzLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MzY6Y29uZmlnIE1UNzkyeF9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zNy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjQwOmNvbmZpZyBNVDc2X05QVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTQxLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnOjI6Y29uZmlnIE1UNzYwM0VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzYwM0UgKFBDSWUpIGFuZCBNVDc2eDggV0xBTiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0yLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzozOmNvbmZpZyBNVDc2MTVfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTQtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6ODpjb25maWcgTVQ3NjE1RVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NjE1RSBhbmQgTVQ3NjYzRSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjIxOmNvbmZpZyBNVDc2MjJfV01BQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0yMi1cdGJvb2wgXCYjMzQ7TVQ3NjIyIChTb0MpIFdNQUMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjMyOmNvbmZpZyBNVDc2NjNfVVNCX1NESU9fQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTMzLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzozNjpjb25maWcgTVQ3NjYzVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0zNy1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzY2M1UgKFVTQikgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctNDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjQ3OmNvbmZpZyBNVDc2NjNTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTQ4LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NjYzUyAoU0RJTykgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc6Mjpjb25maWcgTVQ3NngwX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnOjY6Y29uZmlnIE1UNzZ4MFVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzZ4MFUgKFVTQikgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnOjE5OmNvbmZpZyBNVDc2eDBFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NngwRSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWc6Mjpjb25maWcgTVQ3NngyX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnOjY6Y29uZmlnIE1UNzZ4MkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzZ4MkUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZzoxODpjb25maWcgTVQ3NngyVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0xOS1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzZ4MlUgKFVTQikgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjpjb25maWcgTVQ3OTIxX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyMUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoxNzpjb25maWcgTVQ3OTIxU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoyODpjb25maWcgTVQ3OTIxVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yOS1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Mjpjb25maWcgTVQ3OTI1X0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyNUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoxOTpjb25maWcgTVQ3OTI1VVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yMC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzc1MQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDMwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgbXQ3NiBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBpbml0aWFsaXphdGlvbiBmbG93IG9mIHRoZXNlIG10NzYgZHJpdmVycywgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBgbXQ3Nl9waHlfaW5pdGAgZnVuY3Rpb24uIEl0IHNlZW1zIGl0JiMzOTtzIHRoZSBjb3JlIG9mIGJyaW5naW5nIHRoZSBoYXJkd2FyZSBvbmxpbmUsIGNhbGxlZCBieSBgbXQ3Nl9yZWdpc3Rlcl9waHlgIGFuZCBgbXQ3Nl9yZWdpc3Rlcl9kZXZpY2VgLiBUaGlzIG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IHRoZSBQSFkgaW5pdGlhbGl6YXRpb24gaXMgZnVuZGFtZW50YWwuIEFsbCB0aGUgbXQ3NiBkcml2ZXJzIEkmIzM5O20gZmFtaWxpYXIgd2l0aCDigJMgdGhlIE1UNzZ4MFUsIE1UNzZ4MlUsIE1UNzY2M1UsIE1UNzkyMVUsIE1UNzkyNVUgZmFtaWxpZXMg4oCTIHRoZXkgYWxsIGJ1aWxkIG9uIHRoZSBtdDc2IGNvcmUsIHNvIHRoaXMgYXBwcm9hY2ggaXMgY29uc2lzdGVudC4KCk5vdywgY29uc2lkZXJpbmcgdGhlIGNvbnRleHQgb2YgVVNCIGRldmljZSBhdHRhY2htZW50LCBzcGVjaWZpY2FsbHkgd2hlbiB3ZSYjMzk7cmUgdXNpbmcgc29tZXRoaW5nIGxpa2Ugc3l6a2FsbGVyIGZvciBmdXp6aW5nLCBJJiMzOTttIHRyeWluZyB0byB2aXN1YWxpemUgdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLiBXaXRoIGBzeXpfdXNiX2Nvbm5lY3RgIGxldmVyYWdpbmcgdGhvc2Ugc3BlY2lmaWMgdmVuZG9yL3Byb2R1Y3QgSURzIGZvciBtdDc2eDB1LCBtdDc2eDJ1LCBldGMuLCBJIG5lZWQgdG8gYXNjZXJ0YWluICpleGFjdGx5KiBob3cgdGhlIGRldmljZSByZWdpc3RlcnMgd2l0aCBtYWM4MDIxMSBhbmQgY2ZnODAyMTEuIFRoaXMgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHN1YnNlcXVlbnQgYmVoYXZpb3IgdW5kZXIgZnV6emluZy4KCkhhbmcgb24uIFRoZXJlJiMzOTtzIGEgZmxhZyBiZWluZyBzZXQgd2l0aGluIGBtdDc2X3BoeV9pbml0YCwgbmFtZWx5OiBgd2lwaHktJmd0O2ZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiB8IE5MODAyMTFfRkVBVFVSRV9BUF9NT0RFX0NIQU5fV0lEVEhfQ0hBTkdFO2AuIFRoaXMgaW1tZWRpYXRlbHkgZmxhZ3Mgc29tZXRoaW5nIGludGVyZXN0aW5nLiBBbmQgaW4gYG10NzkyeF9jb3JlLmNgIEkgc2VlIHRoZSBsaW5lIHRoYXQgcmVtb3ZlcyB0aGUgZmxhZyBgcGh5LSZndDttdDc2LSZndDtub19hY3RpdmVfbW9uaXRvciA9IHRydWVgLgoKSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SYCAqYWN0dWFsbHkqIGRvZXMuIEl0IHdhcnJhbnRzIGEgZGVlcCBkaXZlIGludG8gdGhlIGtlcm5lbCwgbWFjODAyMTEsIGNmZzgwMjExLCBhbmQgdGhlIG5sODAyMTEgc3Vic3lzdGVtLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBhbmQgdW5kZXJzdGFuZGluZyB0aGUgcm9sZSBvZiB0aGlzIGZlYXR1cmUgaXMga2V5IHRvIGFudGljaXBhdGluZyBob3cgdGhlIGRyaXZlciB3aWxsIGhhbmRsZSBtb25pdG9yZWQgdHJhZmZpYyBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIGJyb2FkZXIgd2lyZWxlc3Mgc3RhY2ssIGVzcGVjaWFsbHkgdW5kZXIgZnV6emluZyBjb25kaXRpb25zLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGUgbW9uaXRvciBtb2RlIGlzbiYjMzk7dCBpbnRlcmZlcmluZyB3aXRoIG91ciB0ZXN0IHNjZW5hcmlvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1ImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYz05MDM9c3RhdGljIHZvaWQgYXRoOWtfc2V0X2h3X2NhcGFiKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTkzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6OTMzOlx0aHctXHUwMDNld2lwaHktXHUwMDNlZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SIHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtOTM0LVx0XHRcdCAgICAgICBOTDgwMjExX0ZFQVRVUkVfQVBfTU9ERV9DSEFOX1dJRFRIX0NIQU5HRSB8XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTQyNz1tdDc2X3BoeV9pbml0KHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNDQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjQ0MjpcdHdpcGh5LVx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiB8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNDQzLVx0XHRcdCAgIE5MODAyMTFfRkVBVFVSRV9BUF9NT0RFX0NIQU5fV0lEVEhfQ0hBTkdFO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYwMXUvaW5pdC5jPTU3ND1pbnQgbXQ3NjAxdV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzYwMXVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS9pbml0LmMtNjEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS9pbml0LmM6NjExOlx0d2lwaHktXHUwMDNlZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS9pbml0LmMtNjEyLVx0d2lwaHktXHUwMDNlaW50ZXJmYWNlX21vZGVzID0gQklUKE5MODAyMTFfSUZUWVBFX1NUQVRJT04pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTU2NzQ9c3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8oc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01OTQzLVx0aHctXHUwMDNld2lwaHktXHUwMDNlZmxhZ3MgfD0gV0lQSFlfRkxBR19JQlNTX1JTTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjU5NDQ6XHRody1cdTAwM2V3aXBoeS1cdTAwM2VmZWF0dXJlcyB8PSBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1IgfFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTk0NS1cdFx0XHQgICAgICAgTkw4MDIxMV9GRUFUVVJFX0FQX01PREVfQ0hBTl9XSURUSF9DSEFOR0UgfFxuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmg9NjczOT1lbnVtIG5sODAyMTFfYXBfc21lX2ZlYXR1cmVzIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTY3ODYtICpcdHN0aWxsIGdlbmVyYXRlZCBieSB0aGUgZHJpdmVyLlxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaDo2Nzg3OiAqIEBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1I6IFRoaXMgZHJpdmVyIHN1cHBvcnRzIGFuIGFjdGl2ZSBtb25pdG9yXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTY3ODgtICpcdGludGVyZmFjZS4gQW4gYWN0aXZlIG1vbml0b3IgaW50ZXJmYWNlIGJlaGF2ZXMgbGlrZSBhIG5vcm1hbCBtb25pdG9yXG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaD02ODM2PWVudW0gbmw4MDIxMV9mZWF0dXJlX2ZsYWdzIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTY4NTMtXHROTDgwMjExX0ZFQVRVUkVfVVNFUlNQQUNFX01QTVx0XHRcdD0gMSBcdTAwM2NcdTAwM2MgMTYsXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oOjY4NTQ6XHROTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1JcdFx0XHQ9IDEgXHUwMDNjXHUwMDNjIDE3LFxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaC02ODU1LVx0Tkw4MDIxMV9GRUFUVVJFX0FQX01PREVfQ0hBTl9XSURUSF9DSEFOR0VcdD0gMSBcdTAwM2NcdTAwM2MgMTgsXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz00OTM0PXN0YXRpYyBpbnQgbmw4MDIxMV9wYXJzZV9tb25fb3B0aW9ucyhzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy00OTU4LVx0aWYgKHBhcmFtcy1cdTAwM2VmbGFncyBcdTAwMjYgTU9OSVRPUl9GTEFHX0FDVElWRSBcdTAwMjZcdTAwMjZcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDk1OTpcdCAgICAhKHJkZXYtXHUwMDNld2lwaHkuZmVhdHVyZXMgXHUwMDI2IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUikpXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTQ5NjAtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU3OTIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIE1UNzkyMS9NVDc5MjUgQWN0aXZlIE1vbml0b3IgSW1wbGVtZW50YXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgZW5hYmxpbmcgYE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUmAgZm9yIHRoZSBNVDc5MjEgYW5kIE1UNzkyNSBkZXZpY2VzLCBhbGxvd2luZyB1c2Vyc3BhY2UgY29udHJvbCBvZiBtb25pdG9yIGludGVyZmFjZXMgd2l0aCB0aGUgYE1PTklUT1JfRkxBR19BQ1RJVkVgIGZsYWcgdmlhIG5sODAyMTEuIFByZXZpb3VzbHksIHRoZSBgbm9fYWN0aXZlX21vbml0b3IgPSB0cnVlYCBzZXR0aW5nIGVmZmVjdGl2ZWx5IGJsb2NrZWQgdGhpcy4gSSByZWNhbGwgdGhhdCBgbXQ3Nl9waHlfaW5pdGAgd2FzIHdoZXJlIHRoaXMgd2FzIGhhbmRsZWQsIGJ1dCB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHdpcGh5IGluIGBtdDc5MnhfaW5pdF93aXBoeWAgd2FzIHNldHRpbmcgdGhpcyBmbGFnIHRvIHRydWUgYmVmb3JlIGBtdDc2X3BoeV9pbml0YCB3YXMgY2FsbGVkLiBUaGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guCgpOb3csIEkgbmVlZCB0byB2ZXJpZnkgaG93IGBub19hY3RpdmVfbW9uaXRvcmAgd2FzIHVzZWQgcHJpb3IgdG8gdGhpcyBjaGFuZ2UuIFNjYW5uaW5nIGBtYWM4MDIxMS5jYCwgSSBzZWUgdGhhdCBgbXQ3Nl9waHlfaW5pdGAgdXNlZCB0byBjaGVjayBgcGh5LSZndDtub19hY3RpdmVfbW9uaXRvcmAgYW5kIG9ubHkgZW5hYmxlIGBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1JgIGlmIGl0IHdhcyBmYWxzZS4gVGhlIGNoYW5nZSBub3cgdW5jb25kaXRpb25hbGx5IGFkZHMgYE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUmAsIGFsb25nIHdpdGggYE5MODAyMTFfRkVBVFVSRV9BUF9NT0RFX0NIQU5fV0lEVEhfQ0hBTkdFYC4gT2theSwgdGhhdCYjMzk7cyBhIGtleSBkZXRhaWwg4oCTIHRoZSBmZWF0dXJlIGlzIG5vdyB1bmNvbmRpdGlvbmFsbHkgZW5hYmxlZC4gQW5kIGluIGBtdDc5MnhfY29yZS5jYCBhbmQgc3BlY2lmaWNhbGx5IGBtdDc5MnhfaW5pdF93aXBoeWAgSSBjYW4gY2xlYXJseSBzZWUgd2hlcmUgYHBoeS0mZ3Q7bXQ3Ni0mZ3Q7bm9fYWN0aXZlX21vbml0b3IgPSB0cnVlYCB3YXMgc2V0LgoKVGhlIHF1ZXN0aW9uIHRoZW4gaXMsICp3aHkqIHdhcyBgbm9fYWN0aXZlX21vbml0b3JgIHNldCB0byB0cnVlIGluIHRoZSBmaXJzdCBwbGFjZSBmb3IgdGhlIE1UNzkyeCBzZXJpZXM/IE15IGh5cG90aGVzaXMgaXMgdGhhdCB0aGVzZSBjaGlwcyBlaXRoZXIgZGlkbiYjMzk7dCBzdXBwb3J0IGFjdGl2ZSBtb25pdG9yLCBvciB0aGF0IHRoZXkgZGlkIGJ1dCBpdCB3YXNuJiMzOTt0IHlldCBlbmFibGVkLiBJIG5lZWQgdG8gY29uZmlybSBpZiBhY3RpdmUgbW9uaXRvciBpcyBhY3R1YWxseSBzdXBwb3J0ZWQgbm93LCBvciBpZiB0aGlzIGNvbW1pdCBzaW1wbHkgZW5hYmxlcyBpdC4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvbW1pdCBoaXN0b3J5IG9yIGRvIGEgcXVpY2sgZ2l0IHNlYXJjaCB3aXRoaW4gdGhlIG10NzYgcmVwbyB0byBzaGVkIHNvbWUgbGlnaHQgb24gdGhpcy4gVGhlIGhpc3Rvcnkgc2hvdWxkIHRlbGwgbWUgZXhhY3RseSB3aGVuIHRoaXMgbGltaXRhdGlvbiB3YXMgaW50cm9kdWNlZCwgYW5kIGlmIGl0IHdhcyBsaWZ0ZWQgZHVlIHRvIGEgc3BlY2lmaWMgaGFyZHdhcmUgY2hhbmdlIG9yIG5ldyBkcml2ZXIgY2FwYWJpbGl0aWVzLiBUaGF0IHdpbGwgY29uZmlybSB3aGF0JiMzOTtzIHJlYWxseSBoYXBwZW5pbmcgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthY3RpdmVfbW9uaXRvciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjcxMgoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDEwNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTVQ3Ni9NVDc5MnggVVNCIERyaXZlciBSZWFjaGFiaWxpdHkgQW5hbHlzaXMgZm9yIFN5emthbGxlcioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIGRldGVybWluZSBpZiB0aGUgTVQ3NiBhbmQgTVQ3OTJ4IFVTQiBkcml2ZXJzIGFyZSByZWFjaGFibGUgYnkgc3l6a2FsbGVyLiBUaGUga2V5IGlzIHRoYXQgc3l6a2FsbGVyIGNhbiBlbXVsYXRlIFVTQiBkZXZpY2VzIHVzaW5nIGBzeXpfdXNiX2Nvbm5lY3RgLCB3aGljaCBvZmZlcnMgYSBwb3RlbnRpYWwgZW50cnkgcG9pbnQuCgpJIG5lZWQgdG8gY29uZmlybSBpZiB0aGVzZSBkcml2ZXJzIGFyZSBhY2Nlc3NpYmxlIHZpYSBhIHZpcnR1YWwgYnVzLCBzcGVjaWZpY2FsbHkgVVNCLCB3aXRoaW4gYSBzdGFuZGFyZCBzeXprYWxsZXIgZW52aXJvbm1lbnQuIFRoZSBwcmVzZW5jZSBvZiBgTVQ3Nl9DT1JFYCwgYE1UNzkyeF9MSUJgLCBgTVQ3OTIxVWAsIGBNVDc5MjVVYCwgYE1UNzZ4MFVgLCBgTVQ3NngyVWAsIGFuZCBgTVQ3NjYzVWAgcG9pbnRzIHRvIGEgcmVsZXZhbnQgZHJpdmVyIGxhbmRzY2FwZS4KCkEgcXVpY2sgcmV2aWV3IG9mIGBtdDc5MjF1X3Byb2JlYCBpcyBlc3NlbnRpYWwuIFRoZSBkcml2ZXIgaW5pdGlhbGl6ZXMgYSBkZXZpY2UgdmlhIGBtdDc5MnhfZ2V0X21hYzgwMjExX29wc2AsIGFsbG9jYXRlcyBtZW1vcnkgdXNpbmcgYG10NzZfYWxsb2NfZGV2aWNlYCwgdGhlbiBpbml0aWFsaXplcyB3aXRoIGBfX210NzZ1X2luaXRgLiBUaGlzIHByb2JpbmcgcHJvY2VzcyB0aGVuIGludGVyYWN0cyB3aXRoIGhhcmR3YXJlIChjaGlwIElELCByZXZpc2lvbikgYW5kIGhhcmR3YXJlIHJlc291cmNlcywgd2hpY2ggc3VnZ2VzdHMgYSBoYXJkd2FyZSBkZXBlbmRlbmNlIHRoYXQgbmVlZHMgY2FyZWZ1bCBhbmFseXNpcy4gSXQgYWxzbyBjYWxscyBmdW5jdGlvbnMgbGlrZSBgbXQ3OTJ4dV9tY3VfcG93ZXJfb25gLCBgbXQ3NnVfYWxsb2NfbWN1X3F1ZXVlYCwgYG10NzZ1X2FsbG9jX3F1ZXVlc2AsIGBtdDc5Mnh1X2RtYV9pbml0YCwgYW5kIGZpbmFsbHkgcmVnaXN0ZXJzIHRoZSBkZXZpY2UgdmlhIGBtdDc5MjFfcmVnaXN0ZXJfZGV2aWNlYC4gVGhlIGxhdHRlciBjYWxscyBgbXQ3OTJ4X2luaXRfd2lwaHlgIGFuZCBgbXQ3Nl9yZWdpc3Rlcl9kZXZpY2VgLCBldmVudHVhbGx5IHJlYWNoaW5nIGBtdDc2X3BoeV9pbml0YC4KClRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIHJlbHkgb24gYSByZWFsIFVTQiBjb25uZWN0aW9uLCBvciBpcyBpdCBhIHZpcnR1YWwgYnVzPyBUaGUgcmVsZXZhbnQgY3JpdGVyaWEgZm9yIGRldGVybWluaW5nIHdoZXRoZXIgdGhpcyBpcyB3b3J0aCBmdXp6aW5nIGFyZSB0aGUgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIGNyaXRlcmlhLiBJbiB0aGUgcG9zaXRpdmUgY3JpdGVyaWEsIGRyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAobGlrZSBVU0IpIGFyZSB3b3J0aCBmdXp6aW5nLiBUaGUgbmVnYXRpdmUgY3JpdGVyaWEgZ2l2ZSBleGFtcGxlcyBvZiB3aGF0IGlzIG5vdCB3b3J0aCBmdXp6aW5nLCBzdWNoIGFzIHVucmVhY2hhYmxlIGhhcmR3YXJlLCB2ZW5kb3Itc3BlY2lmaWMgZGV2aWNlcywgZXRjLgoKU2luY2UgVVNCIGlzIGEgdmlydHVhbCBidXMgaW4gdGhlIHN5emthbGxlciBjb250ZXh0IChsZXZlcmFnaW5nIGByYXdfZ2FkZ2V0YCAvIGB2aGNpYCksIGFuZCB0aGUgTVQ3NiBkcml2ZXJzIChgTVQ3NngwVWAsIGV0Yy4pIGFyZSBVU0IgZGV2aWNlIGRyaXZlcnMgaW4gdGhlIGtlcm5lbCwgSSBhbSBpbmNsaW5lZCB0byBjb25jbHVkZSB0aGF0IGl0IGlzIHJlYWNoYWJsZS4gVGhlIGZhY3QgdGhhdCBgbXQ3Nl9waHlfaW5pdGAgaXMgY2FsbGVkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gZm9yIGFsbCBNVDc2IGRldmljZXMsIGluY2x1ZGluZyB0aGUgVVNCIG9uZXMsIGFuZCBgbXQ3OTJ4X2luaXRfd2lwaHlgIGlzIGNhbGxlZCBmb3IgdGhlIE1UNzkyMS9NVDc5MjUgaW5jbHVkaW5nIFVTQiB2YXJpYW50cyBjb25maXJtcyBteSBhc3Nlc3NtZW50LiBGdXJ0aGVybW9yZSwgYWZ0ZXIgcmVnaXN0cmF0aW9uLCB0aGUgYGNmZzgwMjExIC8gbmw4MDIxMWAgaW50ZXJmYWNlcyBpbnRlcmFjdCB3aXRoIHRoZSB3aXBoeSBmZWF0dXJlcy4KClRoZXJlZm9yZSwgdGhlIE1UNzYgLyBNVDc5MnggZHJpdmVycyBfYXJlXyBsaWtlbHkgcmVhY2hhYmxlIHZpYSBVU0Igd2l0aGluIHN5emthbGxlci4KClRvIGNvbmZpcm0sIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgYE1UNzZfQ09SRWAsIGBNVDc5MjFVYCwgZXRjLiwgYXJlIHN0YW5kYXJkIGRyaXZlcnMgKG5vdCBzb21lIHZlbmRvci1zcGVjaWZpYyBhYnN0cmFjdGlvbikgYnkgZXhhbWluaW5nIHRoZSBgS2NvbmZpZ2AgZmlsZXMgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ2AgYW5kIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzkyMV9DT01NT05cbiAgIDM6XHRcdHRyaXN0YXRlXG4gICA0Olx0XHRzZWxlY3QgTVQ3OTJ4X0xJQlxuICAgNTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gICA2Olx0XG4gICA3Olx0Y29uZmlnIE1UNzkyMUVcbiAgIDg6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbiAgIDk6XHRcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXG4gIDEwOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDExOlx0XHRkZXBlbmRzIG9uIFBDSVxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxRSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIE1UNzkyMVNcbiAgMTg6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHN1cHBvcnRcJiMzNDtcbiAgMTk6XHRcdHNlbGVjdCBNVDc2X1NESU9cbiAgMjA6XHRcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXG4gIDIxOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDIyOlx0XHRkZXBlbmRzIG9uIE1NQ1xuICAyMzpcdFx0aGVscFxuICAyNDpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxUyA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXG4gIDI1Olx0XG4gIDI2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDI3Olx0XG4gIDI4Olx0Y29uZmlnIE1UNzkyMVVcbiAgMjk6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuICAzMDpcdFx0c2VsZWN0IE1UNzkyeF9VU0JcbiAgMzE6XHRcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXG4gIDMyOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDMzOlx0XHRkZXBlbmRzIG9uIFVTQlxuICAzNDpcdFx0aGVscFxuICAzNTpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxVSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXG4gIDM2Olx0XG4gIDM3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDA0OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MDc0CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBNZWRpYXRlayBXaXJlbGVzcyBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBNZWRpYXRlayB3aXJlbGVzcyBkcml2ZXIgc2l0dWF0aW9uLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbiBmaWxlLCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIGJ1aWxkIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhhdCBzcGVjaWZpYyBkcml2ZXIgc2hvdWxkIGJlIGRlZmluZWQuIEZyb20gdGhlIEtjb25maWcsIEkgY2FuIGRldGVybWluZSB3aGljaCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LCB3aGF0IG1vZHVsZXMgYXJlIGF2YWlsYWJsZSwgaG93IHRvIGVuYWJsZS9kaXNhYmxlIHNwZWNpZmljIGhhcmR3YXJlIHN1cHBvcnQsIGFuZCB3aGF0IG90aGVyIGtlcm5lbCBjb21wb25lbnRzIGl0IG1pZ2h0IGRlcGVuZCBvbi4gVGhpcyB3aWxsIGdpdmUgbWUgYSBzb2xpZCBiYXNlIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgZHJpdmVyIGlzIHN0cnVjdHVyZWQgYW5kIGhvdyB0byBjb250cm9sIGl0IGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy4gSXQmIzM5O3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZHJpdmVyIGludGVncmF0ZXMgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEtub3dpbmcgaG93IGl0JiMzOTtzIGNvbmZpZ3VyZWQgaXMga2V5IHRvIG1ha2luZyBhbnkgcHJvZ3Jlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDA0OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzZfQ09SRVxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgTVQ3Nl9MRURTXG4gICA3Olx0XHRib29sXG4gICA4Olx0XHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxuICAgOTpcdFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTVQ3Nl9DT1JFPUxFRFNfQ0xBU1NcbiAgMTA6XHRcdGRlZmF1bHQgeVxuICAxMTpcdFxuICAxMjpcdGNvbmZpZyBNVDc2X1VTQlxuICAxMzpcdFx0dHJpc3RhdGVcbiAgMTQ6XHRcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG4gIDE1Olx0XG4gIDE2Olx0Y29uZmlnIE1UNzZfU0RJT1xuICAxNzpcdFx0dHJpc3RhdGVcbiAgMTg6XHRcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIE1UNzZ4MDJfTElCXG4gIDIxOlx0XHR0cmlzdGF0ZVxuICAyMjpcdFx0c2VsZWN0IE1UNzZfQ09SRVxuICAyMzpcdFxuICAyNDpcdGNvbmZpZyBNVDc2eDAyX1VTQlxuICAyNTpcdFx0dHJpc3RhdGVcbiAgMjY6XHRcdHNlbGVjdCBNVDc2X1VTQlxuICAyNzpcdFxuICAyODpcdGNvbmZpZyBNVDc2X0NPTk5BQ19MSUJcbiAgMjk6XHRcdHRyaXN0YXRlXG4gIDMwOlx0XHRzZWxlY3QgTVQ3Nl9DT1JFXG4gIDMxOlx0XG4gIDMyOlx0Y29uZmlnIE1UNzkyeF9MSUJcbiAgMzM6XHRcdHRyaXN0YXRlXG4gIDM0Olx0XHRzZWxlY3QgTVQ3Nl9DT05OQUNfTElCXG4gIDM1Olx0XG4gIDM2Olx0Y29uZmlnIE1UNzkyeF9VU0JcbiAgMzc6XHRcdHRyaXN0YXRlXG4gIDM4Olx0XHRzZWxlY3QgTVQ3Nl9VU0JcbiAgMzk6XHRcbiAgNDA6XHRjb25maWcgTVQ3Nl9OUFVcbiAgNDE6XHRcdHRyaXN0YXRlXG4gIDQyOlx0XHRkZXBlbmRzIG9uIE5FVF9BSVJPSEFfTlBVPXkgfHwgTVQ3Nl9DT1JFPU5FVF9BSVJPSEFfTlBVXG4gIDQzOlx0XG4gIDQ0Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWdcJiMzNDtcbiAgNDU6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZ1wmIzM0O1xuICA0NjpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnXCYjMzQ7XG4gIDQ3Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWdcJiMzNDtcbiAgNDg6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZ1wmIzM0O1xuICA0OTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnXCYjMzQ7XG4gIDUwOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAwMTAKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgTWVkaWF0ZWsgV2lyZWxlc3MgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgdGhlIGhlYXJ0IG9mIHRoZSBNZWRpYXRlayB3aXJlbGVzcyBkcml2ZXImIzM5O3MgY29uZmlndXJhdGlvbi4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBnZXR0aW5nIGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0JiMzOTtzIGJlZW4gZGVmaW5lZCBhbmQgaG93IHRoZSBvcHRpb25zIGFyZSBzdHJ1Y3R1cmVkLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBkZXBlbmRlbmNpZXMsIGRlZmF1bHRzLCBhbmQgYW55IHVudXN1YWwgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBiZSB3b3J0aCBmdXJ0aGVyIGludmVzdGlnYXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyB0aGUgZmVhdHVyZXMgYXJlIGVuYWJsZWQvZGlzYWJsZWQgYXQgY29tcGlsZSB0aW1lLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHZhcmlhYmxlcyBhcmUgZ29pbmcgdG8gYmUgc2V0IGJ5IHRoZSBrZXJuZWwgYnVpbGQsIGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRob3NlIHZhcmlhYmxlcyBmb3IgdGhlIHBlcmZvcm1hbmNlIGFuZCByb2J1c3RuZXNzIG9mIHRoZSBkcml2ZXIuIExldCYjMzk7cyBzZWUgd2hhdCBnZW1zIGFyZSBoaWRkZW4gaW4gdGhpcyBjb25maWd1cmF0aW9uIGZpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDA0OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01UNzYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTk0OCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX01UNzYwMVUpXHQmIzQzOz0gbXQ3NjAxdS9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX01UNzZfQ09SRSlcdCYjNDM7PSBtdDc2L1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjI6Y29uZmlnIE1UNzZfQ09SRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjY6Y29uZmlnIE1UNzZfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTctXHRib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6ODpcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6OTpcdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IE1UNzZfQ09SRT1MRURTX0NMQVNTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTAtXHRkZWZhdWx0IHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoxMjpjb25maWcgTVQ3Nl9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xMy1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MTQ6XHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjE2OmNvbmZpZyBNVDc2X1NESU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xNy1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MTg6XHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjIwOmNvbmZpZyBNVDc2eDAyX0xJQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTIxLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyMjpcdHNlbGVjdCBNVDc2X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyNDpjb25maWcgTVQ3NngwMl9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yNS1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MjY6XHRzZWxlY3QgTVQ3Nl9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyODpjb25maWcgTVQ3Nl9DT05OQUNfTElCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMjktXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjMwOlx0c2VsZWN0IE1UNzZfQ09SRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTMyPWNvbmZpZyBNVDc5MnhfTElCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzMtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjM0Olx0c2VsZWN0IE1UNzZfQ09OTkFDX0xJQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTM2PWNvbmZpZyBNVDc5MnhfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzctXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjM4Olx0c2VsZWN0IE1UNzZfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NDA6Y29uZmlnIE1UNzZfTlBVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNDEtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjQyOlx0ZGVwZW5kcyBvbiBORVRfQUlST0hBX05QVT15IHx8IE1UNzZfQ09SRT1ORVRfQUlST0hBX05QVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTQzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTVQ3Nl9DT1JFKSAmIzQzOz0gbXQ3Ni5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX01UNzZfVVNCKSAmIzQzOz0gbXQ3Ni11c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19NVDc2X1NESU8pICYjNDM7PSBtdDc2LXNkaW8ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19NVDc2eDAyX0xJQikgJiM0Mzs9IG10NzZ4MDItbGliLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTVQ3NngwMl9VU0IpICYjNDM7PSBtdDc2eDAyLXVzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX01UNzZfQ09OTkFDX0xJQikgJiM0Mzs9IG10NzYtY29ubmFjLWxpYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTgtb2JqLSQoQ09ORklHX01UNzkyeF9MSUIpICYjNDM7PSBtdDc5MngtbGliLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTExPW10NzYteSA6PSBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjE1OmlmZGVmIENPTkZJR19NVDc2X05QVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZToxNjojIENPTkZJR19NVDc2X05QVSBpcyB0cmlzdGF0ZSB0byBzaW1wbGlmeSBkZXBlbmRlbmN5IHRyYWNraW5nLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS0xNy0jIGJ1dCBpdCBiZWhhdmVzIGFzIGEgYm9vbCBzeW1ib2wgaGVyZS5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTQzPW10NzkyeC11c2IteSA6PSBtdDc5MnhfdXNiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjQ1Om9iai0kKENPTkZJR19NVDc2eDBfQ09NTU9OKSAmIzQzOz0gbXQ3NngwL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo0NjpvYmotJChDT05GSUdfTVQ3NngyX0NPTU1PTikgJiM0Mzs9IG10NzZ4Mi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6NDc6b2JqLSQoQ09ORklHX01UNzYwM0UpICYjNDM7PSBtdDc2MDMvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjQ4Om9iai0kKENPTkZJR19NVDc2MTVfQ09NTU9OKSAmIzQzOz0gbXQ3NjE1L1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS00OS1vYmotJChDT05GSUdfTVQ3OTE1RSkgJiM0Mzs9IG10NzkxNS9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2NoYW5uZWwuYz0zMTk9dm9pZCBtdDc2X3JvY19jb21wbGV0ZShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2NoYW5uZWwuYy0zMjktXHRpZiAocGh5LVx1MDAzZWNoYW5jdHggXHUwMDI2XHUwMDI2IHBoeS1cdTAwM2VtYWluX2NoYW5kZWYuY2hhbiBcdTAwMjZcdTAwMjYgcGh5LVx1MDAzZW9mZmNoYW5uZWwgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2NoYW5uZWwuYzozMzA6XHQgICAgIXRlc3RfYml0KE1UNzZfTUNVX1JFU0VULCBcdTAwMjZkZXYtXHUwMDNlcGh5LnN0YXRlKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9jaGFubmVsLmMtMzMxLVx0XHRfX210NzZfc2V0X2NoYW5uZWwocGh5LCBcdTAwMjZwaHktXHUwMDNlbWFpbl9jaGFuZGVmLCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9jaGFubmVsLmMtMzM2LVx0cGh5LVx1MDAzZXJvY19saW5rID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvY2hhbm5lbC5jOjMzNzpcdGlmICghdGVzdF9iaXQoTVQ3Nl9NQ1VfUkVTRVQsIFx1MDAyNmRldi1cdTAwM2VwaHkuc3RhdGUpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9jaGFubmVsLmMtMzM4LVx0XHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChwaHktXHUwMDNlaHcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvY2hhbm5lbC5jPTM2Mz1pbnQgbXQ3Nl9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2NoYW5uZWwuYy0zODItXHRpZiAocGh5LVx1MDAzZXJvY192aWYgfHwgZGV2LVx1MDAzZXNjYW4ucGh5ID09IHBoeSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9jaGFubmVsLmM6MzgzOlx0ICAgIHRlc3RfYml0KE1UNzZfTUNVX1JFU0VULCBcdTAwMjZkZXYtXHUwMDNlcGh5LnN0YXRlKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9jaGFubmVsLmMtMzg0LVx0XHRyZXQgPSAtRUJVU1k7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYz02MzQ9bXQ3Nl9kbWFfdHhfcXVldWVfc2tiX3JhdyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy02MzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjY0MDpcdGlmICh0ZXN0X2JpdChNVDc2X01DVV9SRVNFVCwgXHUwMDI2ZGV2LVx1MDAzZXBoeS5zdGF0ZSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTY0MS1cdFx0Z290byBlcnJvcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTY2Nz1tdDc2X2RtYV90eF9xdWV1ZV9za2Ioc3RydWN0IG10NzZfcGh5ICpwaHksIHN0cnVjdCBtdDc2X3F1ZXVlICpxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtNjg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzo2ODU6XHRpZiAodGVzdF9iaXQoTVQ3Nl9SRVNFVCwgXHUwMDI2cGh5LVx1MDAzZXN0YXRlKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtNjg2LVx0XHRnb3RvIGZyZWVfc2tiO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmgtNC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmg6NTojaWZuZGVmIF9fTVQ3Nl9ETUFfSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaDo2OiNkZWZpbmUgX19NVDc2X0RNQV9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oLTctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaD01Mj1tdDc2X2RtYV9oYW5kbGVfcmVhZChzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSwgdTMyIG9mZnNldCwgdTMyICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaC02MC0jZW5kaWZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmg6NjE6I2lmIElTX0VOQUJMRUQoQ09ORklHX01UNzZfTlBVKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaC02Mi1cdGlmIChxLVx1MDAzZWZsYWdzIFx1MDAyNiBNVF9RRkxBR19OUFUpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oPTgwPW10NzZfZG1hX2hhbmRsZV93cml0ZShzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSwgdTMyIG9mZnNldCwgdTMyIHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oLTg4LSNlbmRpZlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaDo4OTojaWYgSVNfRU5BQkxFRChDT05GSUdfTVQ3Nl9OUFUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oLTkwLVx0aWYgKHEtXHUwMDNlZmxhZ3MgXHUwMDI2IE1UX1FGTEFHX05QVSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM9MTQ9ZW51bSBtdDc2X3NrdV90eXBlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6MTU6XHRNVDc2X1NLVV9SQVRFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYzoxNjpcdE1UNzZfU0tVX0JBQ0tPRkYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjE3Olx0TVQ3Nl9TS1VfQkFDS09GRl9CRl9PRkZTRVQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTE4LX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYz0zMzA9bXQ3Nl9hcHBseV9hcnJheV9saW1pdChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgczggKnB3ciwgc2l6ZV90IHB3cl9sZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy0zNDUtXHRcdHN3aXRjaCAodHlwZSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYzozNDY6XHRcdGNhc2UgTVQ3Nl9TS1VfUkFURTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtMzQ3LVx0XHRcdGRlbHRhID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTM1MC1cdFx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6MzUxOlx0XHRjYXNlIE1UNzZfU0tVX0JBQ0tPRkZfQkZfT0ZGU0VUOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy0zNTItXHRcdFx0YmFja29mZl9jaGFpbl9pZHggJiM0Mzs9IDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTM1My1cdFx0XHRmYWxsdGhyb3VnaDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6MzU0Olx0XHRjYXNlIE1UNzZfU0tVX0JBQ0tPRkY6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTM1NS1cdFx0XHRkZWx0YSA9IG10NzZfdHhfcG93ZXJfcGF0aF9kZWx0YShuX2NoYWlucyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy0zNjktXHRcdC8qIG9ubHkgY29uc2lkZXIgYmFja29mZiB2YWx1ZSBmb3IgdGhlIGNvbmZpZ3VyZWQgY2hhaW4gbnVtYmVyICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjM3MDpcdFx0aWYgKHR5cGUgIT0gTVQ3Nl9TS1VfUkFURSBcdTAwMjZcdTAwMjYgbl9jaGFpbnMgIT0gYmFja29mZl9uX2NoYWlucylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtMzcxLVx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM9Mzc4PW10NzZfYXBwbHlfbXVsdGlfYXJyYXlfbGltaXQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHM4ICpwd3IsIHNpemVfdCBwd3JfbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtNDA2LVx0XHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6NDA3Olx0XHRpZiAoIWlzX210Nzk5eChkZXYpIFx1MDAyNlx1MDAyNiB0eXBlID09IE1UNzZfU0tVX0JBQ0tPRkYgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTQwOC1cdFx0ICAgIGkgXHUwMDNlIGNvbm5hYzJfYmFja29mZl9ydV9pZHgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjQwOTpcdFx0XHR0eXBlID0gTVQ3Nl9TS1VfQkFDS09GRl9CRl9PRkZTRVQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTQxMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jPTQyNj1zOCBtdDc2X2dldF9yYXRlX3Bvd2VyX2xpbWl0cyhzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTQ3Ny1cdG10NzZfYXBwbHlfYXJyYXlfbGltaXQoZGV2LCBkZXN0LVx1MDAzZWNjaywgQVJSQVlfU0laRShkZXN0LVx1MDAzZWNjayksIHZhbCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6NDc4Olx0XHRcdCAgICAgICB0YXJnZXRfcG93ZXIsIHR4c19kZWx0YSwgXHUwMDI2bWF4X3Bvd2VyLCBuX2NoYWlucywgTVQ3Nl9TS1VfUkFURSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTQ3OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTQ4MS1cdG10NzZfYXBwbHlfYXJyYXlfbGltaXQoZGV2LCBkZXN0LVx1MDAzZW9mZG0sIEFSUkFZX1NJWkUoZGVzdC1cdTAwM2VvZmRtKSwgdmFsLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYzo0ODI6XHRcdFx0ICAgICAgIHRhcmdldF9wb3dlciwgdHhzX2RlbHRhLCBcdTAwMjZtYXhfcG93ZXIsIG5fY2hhaW5zLCBNVDc2X1NLVV9SQVRFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtNDgzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtNDg2LVx0XHRcdFx0ICAgICBBUlJBWV9TSVpFKGRlc3QtXHUwMDNlbWNzKSwgdmFsLCBsZW4sIHRhcmdldF9wb3dlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6NDg3Olx0XHRcdFx0ICAgICB0eHNfZGVsdGEsIFx1MDAyNm1heF9wb3dlciwgbl9jaGFpbnMsIE1UNzZfU0tVX1JBVEUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy00ODgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy00OTEtXHRcdFx0XHQgICAgIEFSUkFZX1NJWkUoZGVzdC1cdTAwM2VydSksIHZhbCwgbGVuLCB0YXJnZXRfcG93ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjQ5MjpcdFx0XHRcdCAgICAgdHhzX2RlbHRhLCBcdTAwMjZtYXhfcG93ZXIsIG5fY2hhaW5zLCBNVDc2X1NLVV9SQVRFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtNDkzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtNDk1LVx0bXQ3Nl9hcHBseV9hcnJheV9saW1pdChkZXYsIGRlc3QtXHUwMDNlcGF0aC5jY2ssIEFSUkFZX1NJWkUoZGVzdC1cdTAwM2VwYXRoLmNjayksIHZhbCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6NDk2Olx0XHRcdCAgICAgICB0YXJnZXRfcG93ZXIsIHR4c19kZWx0YSwgXHUwMDI2bWF4X3Bvd2VyLCBuX2NoYWlucywgTVQ3Nl9TS1VfQkFDS09GRik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTQ5Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTQ5OS1cdG10NzZfYXBwbHlfYXJyYXlfbGltaXQoZGV2LCBkZXN0LVx1MDAzZXBhdGgub2ZkbSwgQVJSQVlfU0laRShkZXN0LVx1MDAzZXBhdGgub2ZkbSksIHZhbCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6NTAwOlx0XHRcdCAgICAgICB0YXJnZXRfcG93ZXIsIHR4c19kZWx0YSwgXHUwMDI2bWF4X3Bvd2VyLCBuX2NoYWlucywgTVQ3Nl9TS1VfQkFDS09GRik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTUwMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTUwNC1cdFx0XHQgICAgICAgdGFyZ2V0X3Bvd2VyLCB0eHNfZGVsdGEsIFx1MDAyNm1heF9wb3dlciwgbl9jaGFpbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjUwNTpcdFx0XHQgICAgICAgTVQ3Nl9TS1VfQkFDS09GRl9CRl9PRkZTRVQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy01MDYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy01MDktXHRcdFx0XHQgICAgIEFSUkFZX1NJWkUoZGVzdC1cdTAwM2VwYXRoLnJ1KSwgdmFsLCBsZW4sIHRhcmdldF9wb3dlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6NTEwOlx0XHRcdFx0ICAgICB0eHNfZGVsdGEsIFx1MDAyNm1heF9wb3dlciwgbl9jaGFpbnMsIE1UNzZfU0tVX0JBQ0tPRkYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy01MTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy01MTQtXHRcdFx0XHQgICAgIEFSUkFZX1NJWkUoZGVzdC1cdTAwM2VwYXRoLnJ1X2JmKSwgdmFsLCBsZW4sIHRhcmdldF9wb3dlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6NTE1Olx0XHRcdFx0ICAgICB0eHNfZGVsdGEsIFx1MDAyNm1heF9wb3dlciwgbl9jaGFpbnMsIE1UNzZfU0tVX0JBQ0tPRkYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy01MTYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTU1MD1pbnQgbXQ3Nl9yZWdpc3Rlcl9waHkoc3RydWN0IG10NzZfcGh5ICpwaHksIGJvb2wgdmh0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy01NzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6NTc3Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01UNzZfTEVEUykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy01NzgtXHRcdHJldCA9IG10NzZfbGVkX2luaXQocGh5KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNTkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjU5NDpcdHNldF9iaXQoTVQ3Nl9TVEFURV9SRUdJU1RFUkVELCBcdTAwMjZwaHktXHUwMDNlc3RhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTU5NS1cdHBoeS1cdTAwM2VkZXYtXHUwMDNlcGh5c1twaHktXHUwMDNlYmFuZF9pZHhdID0gcGh5O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz02MDE9dm9pZCBtdDc2X3VucmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy02MDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6NjA1Olx0aWYgKCF0ZXN0X2JpdChNVDc2X1NUQVRFX1JFR0lTVEVSRUQsIFx1MDAyNnBoeS1cdTAwM2VzdGF0ZSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNjA2LVx0XHRyZXR1cm47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNjA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjYwODpcdGlmIChJU19FTkFCTEVEKENPTkZJR19NVDc2X0xFRFMpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTYwOS1cdFx0bXQ3Nl9sZWRfY2xlYW51cChwaHkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz03NDc9aW50IG10NzZfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBib29sIHZodCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNzg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjc4OTpcdGlmIChJU19FTkFCTEVEKENPTkZJR19NVDc2X0xFRFMpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNzkwLVx0XHRyZXQgPSBtdDc2X2xlZF9pbml0KHBoeSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTc5OS1cdFdBUk5fT04obXQ3Nl93b3JrZXJfc2V0dXAoaHcsIFx1MDAyNmRldi1cdTAwM2V0eF93b3JrZXIsIE5VTEwsIFwmIzM0O3R4XCYjMzQ7KSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6ODAwOlx0c2V0X2JpdChNVDc2X1NUQVRFX1JFR0lTVEVSRUQsIFx1MDAyNnBoeS1cdTAwM2VzdGF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODAxLVx0c2NoZWRfc2V0X2ZpZm9fbG93KGRldi1cdTAwM2V0eF93b3JrZXIudGFzayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTgwNz12b2lkIG10NzZfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTgxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo4MTE6XHRpZiAoIXRlc3RfYml0KE1UNzZfU1RBVEVfUkVHSVNURVJFRCwgXHUwMDI2ZGV2LVx1MDAzZXBoeS5zdGF0ZSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODEyLVx0XHRyZXR1cm47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjgxNDpcdGlmIChJU19FTkFCTEVEKENPTkZJR19NVDc2X0xFRFMpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTgxNS1cdFx0bXQ3Nl9sZWRfY2xlYW51cChcdTAwMjZkZXYtXHUwMDNlcGh5KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9ODkxPXN0YXRpYyB2b2lkIG10NzZfcnhfcmVsZWFzZV9hbXNkdShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSwgZW51bSBtdDc2X3J4cV9pZCBxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy05MjgtXHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo5Mjk6XHRpZiAobXQ3Nl9xdWV1ZV9pc193ZWRfcnJvX2RhdGEocnhxKSBcdTAwMjZcdTAwMjYgZGV2LVx1MDAzZWh3cnJvX21vZGUgPT0gTVQ3Nl9IV1JST19WMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy05MzAtXHRcdHEgPSBNVF9SWFFfUlJPX0lORDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9OTU4PXZvaWQgbXQ3Nl9yeChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgZW51bSBtdDc2X3J4cV9pZCBxLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy05NjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6OTYzOlx0aWYgKCF0ZXN0X2JpdChNVDc2X1NUQVRFX1JVTk5JTkcsIFx1MDAyNnBoeS1cdTAwM2VzdGF0ZSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy05NjQtXHRcdGRldl9rZnJlZV9za2Ioc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtOTY4LSNpZmRlZiBDT05GSUdfTkw4MDIxMV9URVNUTU9ERVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjk2OTpcdGlmIChwaHktXHUwMDNldGVzdC5zdGF0ZSA9PSBNVDc2X1RNX1NUQVRFX1JYX0ZSQU1FUykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTk3MC1cdFx0cGh5LVx1MDAzZXRlc3Qucnhfc3RhdHMucGFja2V0c1txXSYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTEwNDc9aW50IF9fbXQ3Nl9zZXRfY2hhbm5lbChzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSwgc3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICpjaGFuZGVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xMDU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjEwNTc6XHRzZXRfYml0KE1UNzZfUkVTRVQsIFx1MDAyNnBoeS1cdTAwM2VzdGF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTA1OC1cdHdhaXRfZXZlbnRfdGltZW91dChkZXYtXHUwMDNldHhfd2FpdCwgIW10NzZfaGFzX3R4X3BlbmRpbmcocGh5KSwgdGltZW91dCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTEwNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTA3NzpcdGNsZWFyX2JpdChNVDc2X1JFU0VULCBcdTAwMjZwaHktXHUwMDNlc3RhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTEwNzgtXHRtdDc2X3dvcmtlcl9lbmFibGUoXHUwMDI2ZGV2LVx1MDAzZXR4X3dvcmtlcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE2NjY9aW50IG10NzZfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNjkxLVx0ICAgIG5ld19zdGF0ZSA9PSBJRUVFODAyMTFfU1RBX0FTU09DKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjE2OTI6XHRcdGV2ID0gTVQ3Nl9TVEFfRVZFTlRfQVNTT0M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTY5My1cdGVsc2UgaWYgKG9sZF9zdGF0ZSA9PSBJRUVFODAyMTFfU1RBX0FTU09DIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE2OTQtXHRcdCBuZXdfc3RhdGUgPT0gSUVFRTgwMjExX1NUQV9BVVRIT1JJWkVEKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjE2OTU6XHRcdGV2ID0gTVQ3Nl9TVEFfRVZFTlRfQVVUSE9SSVpFO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE2OTYtXHRlbHNlIGlmIChvbGRfc3RhdGUgPT0gSUVFRTgwMjExX1NUQV9BU1NPQyBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNjk3LVx0XHQgbmV3X3N0YXRlID09IElFRUU4MDIxMV9TVEFfQVVUSClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxNjk4Olx0XHRldiA9IE1UNzZfU1RBX0VWRU5UX0RJU0FTU09DO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE2OTktXHRlbHNlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE3ODI9dm9pZCBtdDc2X3djaWRfYWRkX3BvbGwoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTc4My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTc4NDpcdGlmICh0ZXN0X2JpdChNVDc2X01DVV9SRVNFVCwgXHUwMDI2ZGV2LVx1MDAzZXBoeS5zdGF0ZSkgfHwgIXdjaWQtXHUwMDNlc3RhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE3ODUtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9MTk2OT12b2lkIG10NzZfc3dfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTk3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxOTc0Olx0c2V0X2JpdChNVDc2X1NDQU5OSU5HLCBcdTAwMjZwaHktXHUwMDNlc3RhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE5NzUtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz0xOTc4PXZvaWQgbXQ3Nl9zd19zY2FuX2NvbXBsZXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xOTgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjE5ODI6XHRjbGVhcl9iaXQoTVQ3Nl9TQ0FOTklORywgXHUwMDI2cGh5LVx1MDAzZXN0YXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xOTgzLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9MjA3OD1lbnVtIG10NzZfZGZzX3N0YXRlIG10NzZfcGh5X2Rmc19zdGF0ZShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMjA4My1cdGlmIChkZXYtXHUwMDNlcmVnaW9uID09IE5MODAyMTFfREZTX1VOU0VUIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MjA4NDpcdCAgICB0ZXN0X2JpdChNVDc2X1NDQU5OSU5HLCBcdTAwMjZwaHktXHUwMDNlc3RhdGUpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTIwODUtXHRcdHJldHVybiBNVF9ERlNfU1RBVEVfRElTQUJMRUQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTIzMzc9c3RhdGljIHZvaWQgbXQ3Nl9iZWFjb25fbW9uX2l0ZXIodm9pZCAqZGF0YSwgdTggKm1hYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMjM2MC1cdFx0XHQgICAgICAgUkVBRF9PTkNFKG1saW5rLVx1MDAzZWJlYWNvbl9tb25fbGFzdCkgJiM0MztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoyMzYxOlx0XHRcdCAgICAgICBNVDc2X0JFQUNPTl9NT05fTUFYX01JU1MgKiBtbGluay1cdTAwM2ViZWFjb25fbW9uX2ludGVydmFsKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0yMzYyLVx0XHRcdGllZWU4MDIxMV9iZWFjb25fbG9zcyh2aWYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmM9MzI9c3RydWN0IHNrX2J1ZmYgKm10NzZfbWN1X2dldF9yZXNwb25zZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jLTQyLVx0XHRcdCAgICghc2tiX3F1ZXVlX2VtcHR5KFx1MDAyNmRldi1cdTAwM2VtY3UucmVzX3EpIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jOjQzOlx0XHRcdCAgICB0ZXN0X2JpdChNVDc2X01DVV9SRVNFVCwgXHUwMDI2ZGV2LVx1MDAzZXBoeS5zdGF0ZSkpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tY3UuYy00NC1cdFx0XHQgICB0aW1lb3V0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jPTcyPWludCBtdDc2X21jdV9za2Jfc2VuZF9hbmRfZ2V0X21zZyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jLTg2LVx0aWYgKChtdDc2X2lzX21taW8oZGV2KSBcdTAwMjZcdTAwMjYgYXRvbWljX3JlYWQoXHUwMDI2ZGV2LVx1MDAzZWJ1c19odW5nKSkgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmM6ODc6XHQgICAgKG10NzZfaXNfc2RpbyhkZXYpIFx1MDAyNlx1MDAyNiB0ZXN0X2JpdChNVDc2X1JFU0VULCBcdTAwMjZkZXYtXHUwMDNlcGh5LnN0YXRlKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmMtODgtXHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGV2LVx1MDAzZWJ1c19odW5nKSkpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jLTExNy1cdFx0c2tiID0gbXQ3Nl9tY3VfZ2V0X3Jlc3BvbnNlKGRldiwgZXhwaXJlcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jOjExODpcdFx0aWYgKCFza2IgXHUwMDI2XHUwMDI2ICF0ZXN0X2JpdChNVDc2X01DVV9SRVNFVCwgXHUwMDI2ZGV2LVx1MDAzZXBoeS5zdGF0ZSkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jLTExOS1cdFx0ICAgIG9yaWdfc2tiIFx1MDAyNlx1MDAyNiByZXRyeSYjNDM7JiM0MzsgXHUwMDNjIGRldi1cdTAwM2VtY3Vfb3BzLVx1MDAzZW1heF9yZXRyeSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbW1pby5jPTExMD12b2lkIG10NzZfbW1pb19pbml0KHN0cnVjdCBtdDc2X2RldiAqZGV2LCB2b2lkIF9faW9tZW0gKnJlZ3MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tbWlvLmMtMTE5LVx0XHQucmRfcnAgPSBtdDc2X21taW9fcmRfcnAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21taW8uYzoxMjA6XHRcdC50eXBlID0gTVQ3Nl9CVVNfTU1JTyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbW1pby5jLTEyMS1cdH07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjY6I2lmbmRlZiBfX01UNzZfSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NzojZGVmaW5lIF9fTVQ3Nl9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC04LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MzA6I2RlZmluZSBNVDc2X1RPS0VOX0ZSRUVfVEhSXHQ2NFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMzEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo0NTojZGVmaW5lIE1UX1dFRF9RX1RYKF9uKVx0XHRfX01UX1dFRF9RKE1UNzZfV0VEX1FfVFgsIF9uKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NDY6I2RlZmluZSBNVF9XRURfUV9SWChfbilcdFx0X19NVF9XRURfUShNVDc2X1dFRF9RX1JYLCBfbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjQ3OiNkZWZpbmUgTVRfV0VEX1FfVFhGUkVFXHRcdF9fTVRfV0VEX1EoTVQ3Nl9XRURfUV9UWEZSRUUsIDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo0ODojZGVmaW5lIE1UX1dFRF9SUk9fUV9EQVRBKF9uKVx0X19NVF9XRURfUlJPX1EoTVQ3Nl9XRURfUlJPX1FfREFUQSwgX24pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo0OTojZGVmaW5lIE1UX1dFRF9SUk9fUV9NU0RVX1BHKF9uKVx0X19NVF9XRURfUlJPX1EoTVQ3Nl9XRURfUlJPX1FfTVNEVV9QRywgX24pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MDojZGVmaW5lIE1UX1dFRF9SUk9fUV9JTkRcdF9fTVRfV0VEX1JST19RKE1UNzZfV0VEX1JST19RX0lORCwgMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUxOiNkZWZpbmUgTVRfV0VEX1JST19RX1JYRE1BRF9DXHRfX01UX1dFRF9SUk9fUShNVDc2X1dFRF9SUk9fUV9SWERNQURfQywgMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTUyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTU1LVx0XHRcdFx0IEZJRUxEX1BSRVAoTVRfUUZMQUdfV0VEX1JJTkcsIF9uKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjU2OiNkZWZpbmUgTVRfTlBVX1FfVFgoX24pXHRcdF9fTVRfTlBVX1EoTVQ3Nl9XRURfUV9UWCwgX24pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1NzojZGVmaW5lIE1UX05QVV9RX1JYKF9uKVx0XHRfX01UX05QVV9RKE1UNzZfV0VEX1FfUlgsIF9uKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTg6I2RlZmluZSBNVF9OUFVfUV9UWEZSRUUoX24pXHQoRklFTERfUFJFUChNVF9RRkxBR19XRURfVFlQRSwgTVQ3Nl9XRURfUV9UWEZSRUUpIHwgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTU5LVx0XHRcdFx0IEZJRUxEX1BSRVAoTVRfUUZMQUdfV0VEX1JJTkcsIF9uKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD03Mz1lbnVtIG10NzZfYnVzX3R5cGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NzQ6XHRNVDc2X0JVU19NTUlPLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NzU6XHRNVDc2X0JVU19VU0IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo3NjpcdE1UNzZfQlVTX1NESU8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC03Ny19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTc5PWVudW0gbXQ3Nl93ZWRfdHlwZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo4MDpcdE1UNzZfV0VEX1FfVFgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo4MTpcdE1UNzZfV0VEX1FfVFhGUkVFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6ODI6XHRNVDc2X1dFRF9RX1JYLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6ODM6XHRNVDc2X1dFRF9SUk9fUV9EQVRBLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6ODQ6XHRNVDc2X1dFRF9SUk9fUV9NU0RVX1BHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6ODU6XHRNVDc2X1dFRF9SUk9fUV9JTkQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo4NjpcdE1UNzZfV0VEX1JST19RX1JYRE1BRF9DLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtODctfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD04OT1lbnVtIG10NzZfaHdycm9fbW9kZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo5MDpcdE1UNzZfSFdSUk9fT0ZGLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6OTE6XHRNVDc2X0hXUlJPX1YzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6OTI6XHRNVDc2X0hXUlJPX1YzXzEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC05My19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTk1PXN0cnVjdCBtdDc2X2J1c19vcHMge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjExMDojZGVmaW5lIG10NzZfaXNfdXNiKGRldikgKChkZXYpLVx1MDAzZWJ1cy1cdTAwM2V0eXBlID09IE1UNzZfQlVTX1VTQilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjExMTojZGVmaW5lIG10NzZfaXNfbW1pbyhkZXYpICgoZGV2KS1cdTAwM2VidXMtXHUwMDNldHlwZSA9PSBNVDc2X0JVU19NTUlPKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTEyOiNkZWZpbmUgbXQ3Nl9pc19zZGlvKGRldikgKChkZXYpLVx1MDAzZWJ1cy1cdTAwM2V0eXBlID09IE1UNzZfQlVTX1NESU8pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTgwPWVudW0gbXQ3Nl9kZnNfc3RhdGUge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE4NzojZGVmaW5lIE1UNzZfUk5SX1NDQU5fTUFYX0JTU0lEUyAgICAgICAxNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTg4LXN0cnVjdCBtdDc2X3NjYW5fcm5yX3BhcmFtIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE4OTpcdHU4IGJzc2lkW01UNzZfUk5SX1NDQU5fTUFYX0JTU0lEU11bRVRIX0FMRU5dO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTkwOlx0dTggY2hhbm5lbFtNVDc2X1JOUl9TQ0FOX01BWF9CU1NJRFNdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTkxLVx0dTggcmFuZG9tX21hY1tFVEhfQUxFTl07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MzU5PWVudW0gbXQ3Nl93Y2lkX2ZsYWdzIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0zNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDozNjc6I2RlZmluZSBNVDc2X05fV0NJRFMgMTA4OFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MzY4OiNkZWZpbmUgTVQ3Nl9CRUFDT05fTU9OX01BWF9NSVNTXHQ3XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0zNjktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9NTAzPWVudW0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTA0Olx0TVQ3Nl9TVEFURV9JTklUSUFMSVpFRCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUwNTpcdE1UNzZfU1RBVEVfUkVHSVNURVJFRCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUwNjpcdE1UNzZfU1RBVEVfUlVOTklORyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUwNzpcdE1UNzZfU1RBVEVfTUNVX1JVTk5JTkcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MDg6XHRNVDc2X1NDQU5OSU5HLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTA5Olx0TVQ3Nl9IV19TQ0FOTklORyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUxMDpcdE1UNzZfSFdfU0NIRURfU0NBTk5JTkcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MTE6XHRNVDc2X1JFU1RBUlQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MTI6XHRNVDc2X1JFU0VULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTEzOlx0TVQ3Nl9NQ1VfUkVTRVQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MTQ6XHRNVDc2X1JFTU9WRUQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MTU6XHRNVDc2X1JFQURJTkdfU1RBVFMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MTY6XHRNVDc2X1NUQVRFX1BPV0VSX09GRixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUxNzpcdE1UNzZfU1RBVEVfU1VTUEVORCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUxODpcdE1UNzZfU1RBVEVfUk9DLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTE5Olx0TVQ3Nl9TVEFURV9QTSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUyMDpcdE1UNzZfU1RBVEVfV0VEX1JFU0VULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNTIxLX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9NTIzPWVudW0gbXQ3Nl9zdGFfZXZlbnQge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTI0Olx0TVQ3Nl9TVEFfRVZFTlRfQVNTT0MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MjU6XHRNVDc2X1NUQV9FVkVOVF9BVVRIT1JJWkUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MjY6XHRNVDc2X1NUQV9FVkVOVF9ESVNBU1NPQyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTUyNy19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTY2ND1zdHJ1Y3QgbXQ3Nl91c2Ige1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTY4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjY4ODojZGVmaW5lIE1UNzZTX1hNSVRfQlVGX1NaXHQweDNmZTAwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo2ODk6I2RlZmluZSBNVDc2U19OVU1fVFhfRU5UUklFU1x0MjU2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo2OTA6I2RlZmluZSBNVDc2U19OVU1fUlhfRU5UUklFU1x0NTEyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC02OTEtc3RydWN0IG10NzZfc2RpbyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9Nzg3PXN0cnVjdCBtdDc2X3Rlc3Rtb2RlX2RhdGEge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTc4OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjc5MDpcdHUzMiBwYXJhbV9zZXRbRElWX1JPVU5EX1VQKE5VTV9NVDc2X1RNX0FUVFJTLCAzMildO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNzkxLVx0c3RydWN0IHNrX2J1ZmYgKnR4X3NrYjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD05MjM9c3RydWN0IG10NzZfZGV2IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC05ODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo5ODY6XHR1MzIgd2NpZF9tYXNrW0RJVl9ST1VORF9VUChNVDc2X05fV0NJRFMsIDMyKV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC05ODctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtOTkwLVx0c3RydWN0IG10NzZfd2NpZCBnbG9iYWxfd2NpZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjk5MTpcdHN0cnVjdCBtdDc2X3djaWQgX19yY3UgKndjaWRbTVQ3Nl9OX1dDSURTXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTk5Mi1cdHN0cnVjdCBsaXN0X2hlYWQgd2NpZF9saXN0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE0OTg9c3RhdGljIGlubGluZSBib29sIG10NzZfdGVzdG1vZGVfZW5hYmxlZChzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNTAwLSNpZmRlZiBDT05GSUdfTkw4MDIxMV9URVNUTU9ERVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTUwMTpcdHJldHVybiBwaHktXHUwMDNldGVzdC5zdGF0ZSAhPSBNVDc2X1RNX1NUQVRFX09GRjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE1MDItI2Vsc2Vcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xNjU1PWludCBtdDc2X3Rlc3Rtb2RlX2FsbG9jX3NrYihzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSwgdTMyIGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNjU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTY1NzojaWYgSVNfRU5BQkxFRChDT05GSUdfTVQ3Nl9OUFUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNjU4LXZvaWQgbXQ3Nl9ucHVfY2hlY2tfcHBlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE3MzY9c3RhdGljIGlubGluZSBpbnQgbXQ3Nl9ucHVfc2VuZF90eHJ4X2FkZHIoc3RydWN0IG10NzZfZGV2ICpkZXYsIGludCBpZmluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3NDEtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTc0MjojZW5kaWYgLyogQ09ORklHX01UNzZfTlBVICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNzQzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE3NzA9c3RhdGljIGlubGluZSB2b2lkIG10NzZfdGVzdG1vZGVfcmVzZXQoc3RydWN0IG10NzZfcGh5ICpwaHksIGJvb2wgZGlzYWJsZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNzcyLSNpZmRlZiBDT05GSUdfTkw4MDIxMV9URVNUTU9ERVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTc3MzpcdGVudW0gbXQ3Nl90ZXN0bW9kZV9zdGF0ZSBzdGF0ZSA9IE1UNzZfVE1fU1RBVEVfSURMRTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3NzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxNzc1Olx0aWYgKGRpc2FibGUgfHwgcGh5LVx1MDAzZXRlc3Quc3RhdGUgPT0gTVQ3Nl9UTV9TVEFURV9PRkYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxNzc2Olx0XHRzdGF0ZSA9IE1UNzZfVE1fU1RBVEVfT0ZGO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTc3Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xOTc3PXN0YXRpYyBpbmxpbmUgYm9vbCBtdDc2X3F1ZXVlX2lzX3dlZF90eF9mcmVlKHN0cnVjdCBtdDc2X3F1ZXVlICpxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE5NzktXHRyZXR1cm4gKHEtXHUwMDNlZmxhZ3MgXHUwMDI2IE1UX1FGTEFHX1dFRCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxOTgwOlx0ICAgICAgIEZJRUxEX0dFVChNVF9RRkxBR19XRURfVFlQRSwgcS1cdTAwM2VmbGFncykgPT0gTVQ3Nl9XRURfUV9UWEZSRUU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xOTgxLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xOTg4PXN0YXRpYyBpbmxpbmUgYm9vbCBtdDc2X3F1ZXVlX2lzX3dlZF9ycm9faW5kKHN0cnVjdCBtdDc2X3F1ZXVlICpxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE5OTAtXHRyZXR1cm4gbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvKHEpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTk5MTpcdCAgICAgICBGSUVMRF9HRVQoTVRfUUZMQUdfV0VEX1RZUEUsIHEtXHUwMDNlZmxhZ3MpID09IE1UNzZfV0VEX1JST19RX0lORDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE5OTItfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE5OTQ9c3RhdGljIGlubGluZSBib29sIG10NzZfcXVldWVfaXNfd2VkX3Jyb19yeGRtYWRfYyhzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xOTk2LVx0cmV0dXJuIG10NzZfcXVldWVfaXNfd2VkX3JybyhxKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE5OTc6XHQgICAgICAgRklFTERfR0VUKE1UX1FGTEFHX1dFRF9UWVBFLCBxLVx1MDAzZWZsYWdzKSA9PSBNVDc2X1dFRF9SUk9fUV9SWERNQURfQztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE5OTgtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTIwMDA9c3RhdGljIGlubGluZSBib29sIG10NzZfcXVldWVfaXNfd2VkX3Jyb19kYXRhKHN0cnVjdCBtdDc2X3F1ZXVlICpxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTIwMDItXHRyZXR1cm4gbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvKHEpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MjAwMzpcdCAgICAgICBGSUVMRF9HRVQoTVRfUUZMQUdfV0VEX1RZUEUsIHEtXHUwMDNlZmxhZ3MpID09IE1UNzZfV0VEX1JST19RX0RBVEE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0yMDA0LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0yMDA2PXN0YXRpYyBpbmxpbmUgYm9vbCBtdDc2X3F1ZXVlX2lzX3dlZF9ycm9fbXNkdV9wZyhzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0yMDA5LVx0ICAgICAgIEZJRUxEX0dFVChNVF9RRkxBR19XRURfVFlQRSwgcS1cdTAwM2VmbGFncykgPT1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjIwMTA6XHQgICAgICAgTVQ3Nl9XRURfUlJPX1FfTVNEVV9QRztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTIwMTEtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTIwMTM9c3RhdGljIGlubGluZSBib29sIG10NzZfcXVldWVfaXNfd2VkX3J4KHN0cnVjdCBtdDc2X3F1ZXVlICpxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTIwMTUtXHRyZXR1cm4gKHEtXHUwMDNlZmxhZ3MgXHUwMDI2IE1UX1FGTEFHX1dFRCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoyMDE2Olx0ICAgICAgIEZJRUxEX0dFVChNVF9RRkxBR19XRURfVFlQRSwgcS1cdTAwM2VmbGFncykgPT0gTVQ3Nl9XRURfUV9SWDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTIwMTctfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTIwMjk9c3RhdGljIGlubGluZSBib29sIG10NzZfcXVldWVfaXNfbnB1X3R4KHN0cnVjdCBtdDc2X3F1ZXVlICpxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTIwMzEtXHRyZXR1cm4gbXQ3Nl9xdWV1ZV9pc19ucHUocSkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoyMDMyOlx0ICAgICAgIEZJRUxEX0dFVChNVF9RRkxBR19XRURfVFlQRSwgcS1cdTAwM2VmbGFncykgPT0gTVQ3Nl9XRURfUV9UWDtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDkzOQoJCQkJCQkJb3V0cHV0OiAxODcKCQkJCQkJCXRob3VnaHRzOiA5MzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgTWVkaWFUZWsgV2lyZWxlc3MgRHJpdmVyIENoYW5nZXMgZm9yIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGlkZW50aWZ5IHBvdGVudGlhbCBmdXp6aW5nIHRhcmdldHMsIGFuZCB0aGlzIHBhdGNoIGltbWVkaWF0ZWx5IGNhdGNoZXMgbXkgYXR0ZW50aW9uLgoKRmlyc3QsIEkgbmVlZCB0byBrbm93IHdoZXJlIHdlJiMzOTtyZSB3b3JraW5nLiBJIHNlZSBgbXQ3Nl9waHlfaW5pdGAgYW5kIGBtdDc5MnhfaW5pdF93aXBoeWAgYXJlIHRoZSBrZXkgZnVuY3Rpb25zLiBTcGVjaWZpY2FsbHksIGBtdDc2X3BoeV9pbml0YCBpcyBhIHN0YXRpYyBmdW5jdGlvbiB3aXRoaW4gYG1hYzgwMjExLmNgLCBjYWxsZWQgYnkgYG10NzZfcmVnaXN0ZXJfcGh5YCBhbmQgYG10NzZfcmVnaXN0ZXJfZGV2aWNlYC4gYG10NzkyeF9pbml0X3dpcGh5YCBpcyBpbiBgbXQ3OTJ4X2NvcmUuY2AuIFRoZXNlIGFyZSBjcnVjaWFsIGVudHJ5IHBvaW50cyBpbnRvIHRoZSBNZWRpYVRlayB3aXJlbGVzcyBkcml2ZXIgc3RhY2suCgpUaGUgcGF0Y2gmIzM5O3MgY29yZSBtb2RpZmljYXRpb24gc2VlbXMgdG8gaW52b2x2ZSBlbmFibGluZyB0aGUgYE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUmAgZmVhdHVyZS4gSXQgYWZmZWN0cyBNZWRpYVRlayB3aXJlbGVzcyBkcml2ZXJzIGRpcmVjdGx5LCBlc3BlY2lhbGx5IFVTQiB2YXJpYW50cyBsaWtlIGBtdDc5MjF1YCwgYG10NzZ4MHVgLCBhbmQgb3RoZXJzIOKAkyB0aGUgb25lcyB0aGF0IGFyZSBsaWtlbHkgYWNjZXNzaWJsZSBpbiBhIHZpcnR1YWxpemVkIFVTQiBnYWRnZXQgZW52aXJvbm1lbnQuICBXaGVuIHRoZXNlIFVTQiBkZXZpY2VzIGFyZSBjb25uZWN0ZWQsIHRoZSBtZW50aW9uZWQgZnVuY3Rpb25zIChgbXQ3Nl9waHlfaW5pdGAgYW5kIGBtdDc5MnhfaW5pdF93aXBoeWApIGFyZSBleGVjdXRlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIFRoaXMgc2V0cyB0aGUgc3RhZ2UgZm9yIGNyZWF0aW5nIGFuZCBjb25maWd1cmluZyBhY3RpdmUgbW9uaXRvciBtb2RlIGludGVyZmFjZXMgdXNpbmcgbmV0bGluayAobmw4MDIxMSkuCgpUaGVyZWZvcmUsIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCB0aGlzIGxvb2tzIHByb21pc2luZy4gTXkgYXNzZXNzbWVudCBpczoKCiogICAqKldvcnRoRnV6emluZzogVHJ1ZS4qKiBUaGUgbW9kaWZpY2F0aW9uIGRpcmVjdGx5IGVuYWJsZXMgbmV3IGZ1bmN0aW9uYWxpdHkgcmVsYXRlZCB0byBhY3RpdmUgbW9uaXRvcmluZywgd2hpY2ggaW5jcmVhc2VzIHRoZSBhdHRhY2sgc3VyZmFjZSBmb3IgZnV6emluZy4KKiAgICoqRm9jdXMgU3ltYm9sczoqKiBNeSBmb2N1cyBzaG91bGQgYmUgb24gdGhlIGVudHJ5IHBvaW50czoKICAgICogICBgbXQ3OTJ4X2luaXRfd2lwaHlgCiAgICAqICAgYG10NzZfcmVnaXN0ZXJfZGV2aWNlYAogICAgKiAgIGBtdDc2X3JlZ2lzdGVyX3BoeWAKKiAgICoqRW5hYmxlQ29uZmlnczoqKiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSByaWdodCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHNldC4gIFRoZSByZWxldmFudCBjb25maWdzIGFyZTogYE1UNzZfQ09SRWAsIGBNVDc5MnhfTElCYCwgYE1UNzkyMVVgLCBgTUFDODAyMTFgLCBgQ0ZHODAyMTFgLiBTcGVjaWZpY2FsbHksIGBNVDc2X0NPUkVgIHNlZW1zIHRvIGJlIHNlbGVjdGVkIGJ5IHRoaW5ncyBsaWtlIGBNVDc2X0NPTk5BQ19MSUJgLCBgTVQ3NngwMl9MSUJgLiBgTVQ3OTIxVWAgc2VsZWN0cyBgTVQ3OTJ4X1VTQmAgYW5kIGBNVDc5MjFfQ09NTU9OYC4KKiAgIERvdWJsZS1jaGVja2luZyB0aGlzLCBJIGNvbmZpcm0gdGhhdCB0aGUgYEZvY3VzU3ltYm9sc2AgYW5kIGBFbmFibGVDb25maWdzYCBhYm92ZSBhcmUgY29ycmVjdC4KCk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IFRoZSBwYXRjaCByZW1vdmVzIGEgbGltaXRhdGlvbiBhbmQgdW5jb25kaXRpb25hbGx5IGVuYWJsZXMgdGhlIGFjdGl2ZSBtb25pdG9yIGZlYXR1cmUuIFRoaXMgbWVhbnMgdXNlcnNwYWNlIGNhbiBjb25maWd1cmUgYWN0aXZlIG1vbml0b3IgaW50ZXJmYWNlcyB2aWEgbmw4MDIxMSBvbiBNZWRpYVRlayB3aXJlbGVzcyBkZXZpY2VzLCBlc3BlY2lhbGx5IHRoZSBVU0ItYmFzZWQgb25lcywgc28gdGhpcyBpcyB3b3J0aCBmdXp6aW5nLgpBbHJpZ2h0LCB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoaXMgaW5mb3JtYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDA0OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc2X0NPUkUmIzM0OywKICAgICYjMzQ7TVQ3OTJ4X0xJQiYjMzQ7LAogICAgJiMzNDtNVDc5MjFVJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTJ4X2luaXRfd2lwaHkmIzM0OywKICAgICYjMzQ7bXQ3Nl9yZWdpc3Rlcl9kZXZpY2UmIzM0OywKICAgICYjMzQ7bXQ3Nl9yZWdpc3Rlcl9waHkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyB0aGUgbm9fYWN0aXZlX21vbml0b3IgZmxhZyBhbmQgdW5jb25kaXRpb25hbGx5IGVuYWJsZXMgTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SIGZvciBNZWRpYVRlayBtdDc2IC8gbXQ3OTJ4IHdpcmVsZXNzIGRyaXZlcnMuIFRoZXNlIGRyaXZlcnMgYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24gKGUuZy4gbXQ3OTIxdSksIGFsbG93aW5nIGFjdGl2ZSBtb25pdG9yIGludGVyZmFjZSBjcmVhdGlvbiBhbmQgaGFuZGxpbmcgdmlhIG5sODAyMTEuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzZfQ09SRSYjMzQ7LAogICAgJiMzNDtNVDc5MnhfTElCJiMzNDssCiAgICAmIzM0O01UNzkyMVUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MnhfaW5pdF93aXBoeSYjMzQ7LAogICAgJiMzNDttdDc2X3JlZ2lzdGVyX2RldmljZSYjMzQ7LAogICAgJiMzNDttdDc2X3JlZ2lzdGVyX3BoeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIHRoZSBub19hY3RpdmVfbW9uaXRvciBmbGFnIGFuZCB1bmNvbmRpdGlvbmFsbHkgZW5hYmxlcyBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1IgZm9yIE1lZGlhVGVrIG10NzYgLyBtdDc5Mnggd2lyZWxlc3MgZHJpdmVycy4gVGhlc2UgZHJpdmVycyBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbiAoZS5nLiBtdDc5MjF1KSwgYWxsb3dpbmcgYWN0aXZlIG1vbml0b3IgaW50ZXJmYWNlIGNyZWF0aW9uIGFuZCBoYW5kbGluZyB2aWEgbmw4MDIxMS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGVuYWJsZXMgdGhlIE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiBmZWF0dXJlIGZsYWcgdW5jb25kaXRpb25hbGx5IGZvciBhbGwgbXQ3NiB3aXJlbGVzcyBkZXZpY2VzIGJ5IHJlbW92aW5nIHRoZSBgbm9fYWN0aXZlX21vbml0b3JgIGZsYWcgZnJvbSBgc3RydWN0IG10NzZfcGh5YCBhbmQgdGhlIG92ZXJyaWRlIGluIGBtdDc5MnhfaW5pdF93aXBoeWAuXG5cblRoaXMgY2hhbmdlIG9ubHkgbW9kaWZpZXMgYSBmZWF0dXJlIGJpdG1hc2sgZmxhZyBvbiB0aGUgd2lwaHkgZGV2aWNlIGFuZCByZW1vdmVzIGEgc3RydWN0IGZpZWxkLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGRhdGEgc3RydWN0dXJlcywgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHBhZGRpbmcvZmllbGRzIGNvcGllZCB0byB1c2Vyc3BhY2UsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgaW5mb3JtYXRpb24gbGVhayByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gZnV6emluZywgYW5kIHN0YW5kYXJkIEtBU0FOL3N5emthbGxlciB0ZXN0aW5nIGlzIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwYjYzNDUzZGI4NzAxZjg5MTIxMjVkNWFjZmMyNTBkNTQ1MDdiZWNhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBTZXAgNSAwNDo0MjoxNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYwppbmRleCBhYmJlNjVjYmNkODllLi5mOTIyNzc3NzA0ODhhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jCkBAIC00MzksOSAmIzQzOzQzOSw4IEBAIG10NzZfcGh5X2luaXQoc3RydWN0IG10NzZfcGh5ICpwaHksIHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KQogCVNFVF9JRUVFODAyMTFfREVWKGh3LCBkZXYtJmd0O2Rldik7CiAJU0VUX0lFRUU4MDIxMV9QRVJNX0FERFIoaHcsIHBoeS0mZ3Q7bWFjYWRkcik7CiAKLQl3aXBoeS0mZ3Q7ZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FQX01PREVfQ0hBTl9XSURUSF9DSEFOR0U7Ci0JaWYgKCFwaHktJmd0O25vX2FjdGl2ZV9tb25pdG9yKQotCQl3aXBoeS0mZ3Q7ZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SOwomIzQzOwl3aXBoeS0mZ3Q7ZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SIHwKJiM0MzsJCQkgICBOTDgwMjExX0ZFQVRVUkVfQVBfTU9ERV9DSEFOX1dJRFRIX0NIQU5HRTsKIAl3aXBoeS0mZ3Q7ZmxhZ3MgfD0gV0lQSFlfRkxBR19IQVNfQ0hBTk5FTF9TV0lUQ0ggfAogCQkJV0lQSFlfRkxBR19TVVBQT1JUU19URExTIHwKIAkJCVdJUEhZX0ZMQUdfQVBfVUFQU0Q7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oCmluZGV4IDYyYjQxYzhiYjdjMGQuLjYxZWYxYjgwZmViODUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oCkBAIC04NzMsNyAmIzQzOzg3Myw2IEBAIHN0cnVjdCBtdDc2X3BoeSB7CiAJc3RydWN0IGNmZzgwMjExX2NoYW5fZGVmIG1haW5fY2hhbmRlZjsKIAlib29sIG9mZmNoYW5uZWw7CiAJYm9vbCByYWRhcl9lbmFibGVkOwotCWJvb2wgbm9fYWN0aXZlX21vbml0b3I7CiAKIAlzdHJ1Y3QgZGVsYXllZF93b3JrIHJvY193b3JrOwogCXN0cnVjdCBpZWVlODAyMTFfdmlmICpyb2NfdmlmOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jCmluZGV4IDBhZDMzZjc0YzIyODUuLjgzN2Q3YWY5ODRlODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmMKQEAgLTgyMCw3ICYjNDM7ODIwLDYgQEAgaW50IG10NzkyeF9pbml0X3dpcGh5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KQogCiAJd2lwaHktJmd0O2ZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9TQ0hFRF9TQ0FOX1JBTkRPTV9NQUNfQUREUiB8CiAJCQkgICBOTDgwMjExX0ZFQVRVUkVfU0NBTl9SQU5ET01fTUFDX0FERFI7Ci0JcGh5LSZndDttdDc2LSZndDtub19hY3RpdmVfbW9uaXRvciA9IHRydWU7CiAJd2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX1NFVF9TQ0FOX0RXRUxMKTsKIAl3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQkVBQ09OX1JBVEVfTEVHQUNZKTsKIAl3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQkVBQ09OX1JBVEVfSFQpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgyMAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDI2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1UNzYgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSB0YXJnZXRpbmcgdGhlIE1lZGlhVGVrIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgbXQ3NmAgZmFtaWx5LiBMZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgY2hhbmdlcy4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSBtb2RpZmljYXRpb24gdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuY2AuIFRoZXkmIzM5O3ZlIHJlbW92ZWQgYSBjb25kaXRpb24gcmVsYXRlZCB0byBgTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SYCBhbmQgYE5MODAyMTFfRkVBVFVSRV9BUF9NT0RFX0NIQU5fV0lEVEhfQ0hBTkdFYC4gU3BlY2lmaWNhbGx5LCB0aGF0IGBpZiAoIXBoeS0mZ3Q7bm9fYWN0aXZlX21vbml0b3IpYCBjaGVjayBpcyBnb25lLiBSaWdodCBhd2F5LCB0aGF0IHNheXMgKnNvbWV0aGluZyogYWJvdXQgYWN0aXZlIG1vbml0b3Igc3VwcG9ydCBpcyBjaGFuZ2luZyBhY3Jvc3MgdGhlIGJvYXJkLCBvciBwZXJoYXBzIGZvciAqYWxsKiBNZWRpYVRlayBkZXZpY2VzIG5vdy4KClRoZW4sIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oYCwgdGhleSYjMzk7dmUgY29tcGxldGVseSByZW1vdmVkIHRoZSBgYm9vbCBub19hY3RpdmVfbW9uaXRvcjtgIG1lbWJlciBmcm9tIHRoZSBgc3RydWN0IG10NzZfcGh5YC4gVGhhdCYjMzk7cyBhIHNpZ25pZmljYW50IGluZGljYXRvci4gRXNzZW50aWFsbHksIHRoZSBkcml2ZXIgc2VlbXMgdG8gaGF2ZSBsb3N0IHRoZSBjYXBhYmlsaXR5IHRvIGV4cGxpY2l0bHkgZGlzYWJsZSBhY3RpdmUgbW9uaXRvcmluZy4KCkFuZCBsYXN0bHksIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmNgLCB0aGV5JiMzOTt2ZSByZW1vdmVkIHRoZSBsaW5lIHRoYXQgd2FzIHNldHRpbmcgYHBoeS0mZ3Q7bXQ3Ni0mZ3Q7bm9fYWN0aXZlX21vbml0b3IgPSB0cnVlO2Agd2l0aGluIHRoZSBgbXQ3OTJ4X2luaXRfd2lwaHlgIGZ1bmN0aW9uLiBUaGlzIGNvbmZpcm1zIHRoYXQgYSBzcGVjaWZpYyBtb2RlbCB3YXMgYmVpbmcgZXhwbGljaXRseSB0b2xkICpub3QqIHRvIHVzZSBhY3RpdmUgbW9uaXRvci4gVGhpcyBpcyBhbGwgY29taW5nIHRvZ2V0aGVyIG5vdyAtIHRoZXkmIzM5O3JlIG1ha2luZyBhIHN0cm9uZyBjaGFuZ2UgaW4gdGhlIGRlZmF1bHQgYmVoYXZpb3IuCgpOb3csIEkgbmVlZCB0byBjaGVjayBmb3IgYW55IGRlZXBlciBpbXBsaWNhdGlvbnMuIFdlJiMzOTtsbCBuZWVkIHRvIHJ1biBhIHF1aWNrIGdyZXAgdG8gdW5kZXJzdGFuZCBob3cgYGFjdGl2ZV9tb25pdG9yYCBpcyBoYW5kbGVkIGluIGBtdDc2YCwgbm93IHRoYXQgaXQmIzM5O3MgcG90ZW50aWFsbHkgZW5hYmxlZCBmb3IgYWxsIGluc3RhbmNlcy4gQXJlIHRoZXJlIGFueSBhc3N1bXB0aW9ucyBiYXNlZCBvbiBpdHMgcHJldmlvdXMgZGlzYWJsZWQgc3RhdGU/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIHJlZ3Jlc3Npb25zPyBMZXQmIzM5O3MgZ2V0IHRoYXQgZ3JlcHBlciBmaXJlZCB1cCBhbmQgc2VlIHdoYXQgaXQgcmV2ZWFscy4gVGhpcyBwYXRjaCBjb3VsZCBiZSBhIGJpZyBkZWFsIGZvciB0aG9zZSB1c2luZyB0aGVzZSBjaGlwcyBpbiBtb25pdG9yIG1vZGUgb3IgaW4gYWNjZXNzIHBvaW50IG1vZGUsIGFuZCB3ZSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNpZGUgZWZmZWN0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Tkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9NDI3PW10NzZfcGh5X2luaXQoc3RydWN0IG10NzZfcGh5ICpwaHksIHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy00NDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6NDQyOlx0d2lwaHktXHUwMDNlZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SIHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy00NDMtXHRcdFx0ICAgTkw4MDIxMV9GRUFUVVJFX0FQX01PREVfQ0hBTl9XSURUSF9DSEFOR0U7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDA0OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NzkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGNvZGUuCgoqKkludmVzdGlnYXRpbmcgYSBOZXR3b3JrIFdpcmVsZXNzIFBhdGNoKioKCkFscmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgcGF0Y2gsIG9yIHBlcmhhcHMgSSYjMzk7bSB0cnlpbmcgdG8gZ2V0IGEgYmV0dGVyIGdyYXNwIG9uIHdoYXQgdGhpcyBgTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SYCBmZWF0dXJlIGFjdHVhbGx5ICpkb2VzKi4gTXkgaW5zdGluY3QgaXMgdG8gdHJhY2UgaXRzIHVzYWdlLiBJJiMzOTtsbCBpbml0aWF0ZSBhIHNlYXJjaCBhY3Jvc3MgdGhlIHJlbGV2YW50IGtlcm5lbCBkaXJlY3Rvcmllcy4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBiZSBsb29raW5nIGluIGBuZXQvd2lyZWxlc3MvYCBhbmQgYG5ldC9tYWM4MDIxMS9gLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBpbXBsZW1lbnRhdGlvbiwgaXRzIHVzZSBjYXNlcywgYW5kIGxpa2VseSwgYW55IGFzc29jaWF0ZWQgY29uZmlndXJhdGlvbiBvciBBUEkgY2FsbHMuIEZyb20gdGhlcmUsIEkgY2FuIGRldGVybWluZSBob3cgdGhpcyBmZWF0dXJlIGltcGFjdHMgdGhlIHdpcmVsZXNzIHN1YnN5c3RlbSBhbmQgaG9wZWZ1bGx5IGRldGVybWluZSB3aHkgdGhpcyBwYXRjaCB3YXMgbWFkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Tkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTQ5MzQ9c3RhdGljIGludCBubDgwMjExX3BhcnNlX21vbl9vcHRpb25zKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTQ5NTgtXHRpZiAocGFyYW1zLVx1MDAzZWZsYWdzIFx1MDAyNiBNT05JVE9SX0ZMQUdfQUNUSVZFIFx1MDAyNlx1MDAyNlxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0OTU5Olx0ICAgICEocmRldi1cdTAwM2V3aXBoeS5mZWF0dXJlcyBcdTAwMjYgTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SKSlcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNDk2MC1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjAyCgkJCQkJCQlvdXRwdXQ6IDE3NQoJCQkJCQkJdGhvdWdodHM6IDU3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBBY3RpdmUgTW9uaXRvciBGZWF0dXJlIEZsYWcgQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgY2hhbmdlIGluIHRoZSBtdDc2IHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IHJlZ2FyZGluZyBgTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SYCwgaGFzIGNhdWdodCBteSBleWUuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGFib3V0IGVuYWJsaW5nIHRoZSBgTU9OSVRPUl9GTEFHX0FDVElWRWAgZmxhZyB3aGVuIGNyZWF0aW5nIG9yIHNldHRpbmcgdXAgbW9uaXRvciBpbnRlcmZhY2VzLCB3aGljaCBpcyBhIGRlcGFydHVyZSBmcm9tIGhvdyBtdDc5MnggdXNlZCB0byBoYW5kbGUgaXQsIHdoZXJlIGl0IGRpc2FibGVkIGFjdGl2ZSBtb25pdG9yLiBOb3csIGFsbCBtdDc2IGRldmljZXMgYXJlIGdvaW5nIHRvIGFkdmVydGlzZSB0aGlzIGZlYXR1cmUuCgpNeSBpbW1lZGlhdGUgY29uY2VybiwgYXMgYWx3YXlzIHdpdGggdGhlc2Uga2luZHMgb2YgY2hhbmdlcywgaXMgd2hldGhlciB0aGlzIGludHJvZHVjZXMgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBMZXQmIzM5O3MgYnJlYWsgaXQgZG93bjoKCiogICAqKktlcm5lbCAtJmd0OyBVc2Vyc3BhY2U6KiogTXkgZmlyc3QgdGhvdWdodCBpcyBhbHdheXMsIGFyZSB3ZSBzZW5kaW5nIGFueSBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlciBzcGFjZT8gV2UgaGF2ZSB0byBjb25zaWRlciBob3cgZGF0YSBpcyBjb21tdW5pY2F0ZWQgKGNvcHlcX3RvXF91c2VyLCBuZXRsaW5rLCBpb2N0bHMsIGV0Yy4pLiBCdXQgbm8sIGluIHRoaXMgY2FzZSwgaXQmIzM5O3MganVzdCBhIGZlYXR1cmUgZmxhZyDigJMgYE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUmAgYmVpbmcgYWRkZWQgdG8gYHdpcGh5LSZndDtmZWF0dXJlc2AuIEl0JiMzOTtzIGEgc2ltcGxlIGFkdmVydGlzZW1lbnQuIE5vIGRpcmVjdCBkYXRhIGV4cG9zdXJlLgoKKiAgICoqQ29uZGl0aW9uYWwgTG9naWM6KiogVGhlIHNlY29uZCB0aGluZyBJIGNoZWNrIGlzIGJyYW5jaGluZyBiYXNlZCBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhpcyBpcyBhIGJpZyBhcmVhIGZvciBwb3RlbnRpYWwgaXNzdWVzLiBUaGUgZ29vZCBuZXdzIGlzIHRoYXQgdGhlIGNoYW5nZSAqcmVtb3ZlcyogYSBmaWVsZCBgbm9fYWN0aXZlX21vbml0b3JgIGZyb20gYHN0cnVjdCBtdDc2X3BoeWAuIFRoaXMgc2ltcGxpZmllcyB0aGluZ3MsIGFjdHVhbGx5LiBObyBuZXcgY29uZGl0aW9uYWwgbG9naWMgaXMgYmVpbmcgaW50cm9kdWNlZCwgYW5kIGV4aXN0aW5nIGxvZ2ljIGlzIGJlaW5nIGNsZWFuZWQgdXAuCgoqICAgKipEYXRhIFN0cnVjdHVyZSBJbml0aWFsaXphdGlvbjoqKiBXaGF0IGFib3V0IGFsbG9jYXRlZCBkYXRhIHN0cnVjdHVyZXM/IENvdWxkIHdlIGJlIGxlYXZpbmcgc29tZSBmaWVsZHMgdW5pbml0aWFsaXplZCBhbmQgdGhlbiByZWFkaW5nIHRoZW0gbGF0ZXI/IFRoaXMgY291bGQgbGVhZCB0byBpbmZvcm1hdGlvbiBsZWFrcyBvciBldmVuIGNyYXNoZXMuIE5vcGUuIFRoZSBkcml2ZXIgaXNuJiMzOTt0IGludHJvZHVjaW5nIGFueSBjb21wbGV4IGRhdGEgc3RydWN0dXJlIGluaXRpYWxpemF0aW9uIGluIHRoaXMgcGF0Y2guCgoqICAgKipCb3VuZHMgQ2hlY2tzIGFuZCBMb2dpYzoqKiBXaGF0IGFib3V0IHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3dzLCBhbmQgdGhlIGxpa2U/IFRoZSBjaGFuZ2UgZG9lc24mIzM5O3QgbW9kaWZ5IGFueSBib3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBhY2Nlc3MgZXhpc3RpbmcgYnVmZmVycyBpbiBhIHdheSB0aGF0IG1pZ2h0IGludHJvZHVjZSB1bmluaXRpYWxpemVkIGJ5dGVzLgoKTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgYWN0aXZlIG1vbml0b3IgbW9kZSBpdHNlbGYsIHdpdGggdGhlIG5ldyBmZWF0dXJlIGZsYWcsIG1pZ2h0IGhhdmUgYW55IGltcGxpY2F0aW9ucy4gRG9lcyB0aGUgbXQ3NiBkcml2ZXIgdHJhbnNtaXQgQUNLcyBvciBhbnl0aGluZyB0aGF0IG1pZ2h0IHBvdGVudGlhbGx5IHJlYWQgdW5pbml0aWFsaXplZCBkYXRhPyBJdCBsb29rcyBsaWtlIHRoZSBhY3RpdmUgbW9uaXRvciBtb2RlLCBpbmNsdWRpbmcgc2VuZGluZyBBQ0tzLCBpcyBoYW5kbGVkIGluIGhhcmR3YXJlIG9yIGZpcm13YXJlLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBleHBvc2VkIHRvIHVzZXIgc3BhY2UuCgpTbywgc3VtbWluZyBpdCB1cCwgdGhpcyBhcHBlYXJzIHRvIGJlIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBmZWF0dXJlIGZsYWcgZW5hYmxlbWVudCBhbmQgZmllbGQgY2xlYW51cCBpbiB0aGUgbXQ3NiB3aXJlbGVzcyBkcml2ZXIuIEl0JiMzOTtzIGVzc2VudGlhbGx5IHJlbW92aW5nIGEgZmxhZyBhbmQgYWRkaW5nIGFub3RoZXIgZmVhdHVyZS4gVGhlcmUgYXJlIG5vIG9idmlvdXMgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIG5vIGluZm9ybWF0aW9uIGxlYWtzLCBvciBhbnkgY29uY2VybnMgYWJvdXQgdGhlIG92ZXJhbGwgbWVtb3J5IHNhZmV0eSBvZiB0aGUgd2lyZWxlc3Mgc3RhY2suCgpMZXQgbWUgZG91YmxlLWNoZWNrOiB0aGUgcGF0Y2ggc2ltcGx5IGluY2x1ZGVzIGBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1JgIGluIGB3aXBoeS0mZ3Q7ZmVhdHVyZXNgLCByZW1vdmVzIHRoZSBgbm9fYWN0aXZlX21vbml0b3JgIGZpZWxkLCBhbmQgYWxzbyByZW1vdmVzIHRoZSBgcGh5LSZndDttdDc2LSZndDtub19hY3RpdmVfbW9uaXRvciA9IHRydWVgIHNldHRpbmcgZnJvbSBgbXQ3OTJ4X2luaXRfd2lwaHlgLiBObyByZWFsIGNvbXBsZXhpdHkgaGVyZS4KCkZpbmFsbHksIHJlZ2FyZGluZyB0ZXN0aW5nLCB0aGUgY2hhbmdlIGRvZXMgbm90IHJlcXVpcmUgS01TQU4uIEtBU0FOIGFuZCBzdGFuZGFyZCB0ZXN0aW5nIG1ldGhvZG9sb2dpZXMgYXJlIHN1ZmZpY2llbnQgdG8gdmVyaWZ5IGFueSBtZW1vcnkgc2FmZXR5IGluIHBhY2tldCBoYW5kbGluZyBhbmQgYnVmZmVyIGFsbG9jYXRpb24uIEtNU0FOIGlzIG92ZXJraWxsIGhlcmUuCgpJJiMzOTttIHJlYWR5IHRvIGNhbGwgdGhlIGBzZXQtcmVzdWx0c2AgbWV0aG9kLiBJJiMzOTttIGNvbmZpZGVudCBpbiBteSBhc3Nlc3NtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBlbmFibGVzIHRoZSBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1IgZmVhdHVyZSBmbGFnIHVuY29uZGl0aW9uYWxseSBmb3IgYWxsIG10NzYgd2lyZWxlc3MgZGV2aWNlcyBieSByZW1vdmluZyB0aGUgYG5vX2FjdGl2ZV9tb25pdG9yYCBmbGFnIGZyb20gYHN0cnVjdCBtdDc2X3BoeWAgYW5kIHRoZSBvdmVycmlkZSBpbiBgbXQ3OTJ4X2luaXRfd2lwaHlgLlxuXG5UaGlzIGNoYW5nZSBvbmx5IG1vZGlmaWVzIGEgZmVhdHVyZSBiaXRtYXNrIGZsYWcgb24gdGhlIHdpcGh5IGRldmljZSBhbmQgcmVtb3ZlcyBhIHN0cnVjdCBmaWVsZC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBkYXRhIHN0cnVjdHVyZXMsIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCBwYWRkaW5nL2ZpZWxkcyBjb3BpZWQgdG8gdXNlcnNwYWNlLCBvciBicmFuY2hpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGluZm9ybWF0aW9uIGxlYWsgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIGZ1enppbmcsIGFuZCBzdGFuZGFyZCBLQVNBTi9zeXprYWxsZXIgdGVzdGluZyBpcyBzdWZmaWNpZW50LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZW5hYmxlcyB0aGUgTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SIGZlYXR1cmUgZmxhZyB1bmNvbmRpdGlvbmFsbHkgZm9yIGFsbCBtdDc2IHdpcmVsZXNzIGRldmljZXMgYnkgcmVtb3ZpbmcgdGhlIGBub19hY3RpdmVfbW9uaXRvcmAgZmxhZyBmcm9tIGBzdHJ1Y3QgbXQ3Nl9waHlgIGFuZCB0aGUgb3ZlcnJpZGUgaW4gYG10NzkyeF9pbml0X3dpcGh5YC5cblxuVGhpcyBjaGFuZ2Ugb25seSBtb2RpZmllcyBhIGZlYXR1cmUgYml0bWFzayBmbGFnIG9uIHRoZSB3aXBoeSBkZXZpY2UgYW5kIHJlbW92ZXMgYSBzdHJ1Y3QgZmllbGQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgcGFkZGluZy9maWVsZHMgY29waWVkIHRvIHVzZXJzcGFjZSwgb3IgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBvciBpbmZvcm1hdGlvbiBsZWFrIHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiBmdXp6aW5nLCBhbmQgc3RhbmRhcmQgS0FTQU4vc3l6a2FsbGVyIHRlc3RpbmcgaXMgc3VmZmljaWVudC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDI6MTUuNzI5Nzg0NjE2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODUwMDEzMDA5MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3Nl9DT1JFXCIsXG4gICAgXCJNVDc5MnhfTElCXCIsXG4gICAgXCJNVDc5MjFVXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiQ0ZHODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MnhfaW5pdF93aXBoeVwiLFxuICAgIFwibXQ3Nl9yZWdpc3Rlcl9kZXZpY2VcIixcbiAgICBcIm10NzZfcmVnaXN0ZXJfcGh5XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBlbmFibGVzIHRoZSBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1IgZmVhdHVyZSBmbGFnIHVuY29uZGl0aW9uYWxseSBmb3IgYWxsIG10NzYgd2lyZWxlc3MgZGV2aWNlcyBieSByZW1vdmluZyB0aGUgYG5vX2FjdGl2ZV9tb25pdG9yYCBmbGFnIGZyb20gYHN0cnVjdCBtdDc2X3BoeWAgYW5kIHRoZSBvdmVycmlkZSBpbiBgbXQ3OTJ4X2luaXRfd2lwaHlgLlxcblxcblRoaXMgY2hhbmdlIG9ubHkgbW9kaWZpZXMgYSBmZWF0dXJlIGJpdG1hc2sgZmxhZyBvbiB0aGUgd2lwaHkgZGV2aWNlIGFuZCByZW1vdmVzIGEgc3RydWN0IGZpZWxkLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGRhdGEgc3RydWN0dXJlcywgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHBhZGRpbmcvZmllbGRzIGNvcGllZCB0byB1c2Vyc3BhY2UsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgaW5mb3JtYXRpb24gbGVhayByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gZnV6emluZywgYW5kIHN0YW5kYXJkIEtBU0FOL3N5emthbGxlciB0ZXN0aW5nIGlzIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyB0aGUgbm9fYWN0aXZlX21vbml0b3IgZmxhZyBhbmQgdW5jb25kaXRpb25hbGx5IGVuYWJsZXMgTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SIGZvciBNZWRpYVRlayBtdDc2IC8gbXQ3OTJ4IHdpcmVsZXNzIGRyaXZlcnMuIFRoZXNlIGRyaXZlcnMgYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24gKGUuZy4gbXQ3OTIxdSksIGFsbG93aW5nIGFjdGl2ZSBtb25pdG9yIGludGVyZmFjZSBjcmVhdGlvbiBhbmQgaGFuZGxpbmcgdmlhIG5sODAyMTEuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQyOjE1LjcyOTc4OTQ2NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI4ODE1MTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMGI2MzQ1M2RiODcwMWY4OTEyMTI1ZDVhY2ZjMjUwZDU0NTA3YmVjYVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IFNlcCA1IDA0OjQyOjE0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuY1xcbmluZGV4IGFiYmU2NWNiY2Q4OWUuLmY5MjI3Nzc3MDQ4OGEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jXFxuQEAgLTQzOSw5ICs0MzksOCBAQCBtdDc2X3BoeV9pbml0KHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcXG4gXFx0U0VUX0lFRUU4MDIxMV9ERVYoaHcsIGRldi1cXHUwMDNlZGV2KTtcXG4gXFx0U0VUX0lFRUU4MDIxMV9QRVJNX0FERFIoaHcsIHBoeS1cXHUwMDNlbWFjYWRkcik7XFxuIFxcbi1cXHR3aXBoeS1cXHUwMDNlZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FQX01PREVfQ0hBTl9XSURUSF9DSEFOR0U7XFxuLVxcdGlmICghcGh5LVxcdTAwM2Vub19hY3RpdmVfbW9uaXRvcilcXG4tXFx0XFx0d2lwaHktXFx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUjtcXG4rXFx0d2lwaHktXFx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiB8XFxuK1xcdFxcdFxcdCAgIE5MODAyMTFfRkVBVFVSRV9BUF9NT0RFX0NIQU5fV0lEVEhfQ0hBTkdFO1xcbiBcXHR3aXBoeS1cXHUwMDNlZmxhZ3MgfD0gV0lQSFlfRkxBR19IQVNfQ0hBTk5FTF9TV0lUQ0ggfFxcbiBcXHRcXHRcXHRXSVBIWV9GTEFHX1NVUFBPUlRTX1RETFMgfFxcbiBcXHRcXHRcXHRXSVBIWV9GTEFHX0FQX1VBUFNEO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oXFxuaW5kZXggNjJiNDFjOGJiN2MwZC4uNjFlZjFiODBmZWI4NSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oXFxuQEAgLTg3Myw3ICs4NzMsNiBAQCBzdHJ1Y3QgbXQ3Nl9waHkge1xcbiBcXHRzdHJ1Y3QgY2ZnODAyMTFfY2hhbl9kZWYgbWFpbl9jaGFuZGVmO1xcbiBcXHRib29sIG9mZmNoYW5uZWw7XFxuIFxcdGJvb2wgcmFkYXJfZW5hYmxlZDtcXG4tXFx0Ym9vbCBub19hY3RpdmVfbW9uaXRvcjtcXG4gXFxuIFxcdHN0cnVjdCBkZWxheWVkX3dvcmsgcm9jX3dvcms7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICpyb2NfdmlmO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmNcXG5pbmRleCAwYWQzM2Y3NGMyMjg1Li44MzdkN2FmOTg0ZTg2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuY1xcbkBAIC04MjAsNyArODIwLDYgQEAgaW50IG10NzkyeF9pbml0X3dpcGh5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbiBcXG4gXFx0d2lwaHktXFx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9TQ0hFRF9TQ0FOX1JBTkRPTV9NQUNfQUREUiB8XFxuIFxcdFxcdFxcdCAgIE5MODAyMTFfRkVBVFVSRV9TQ0FOX1JBTkRPTV9NQUNfQUREUjtcXG4tXFx0cGh5LVxcdTAwM2VtdDc2LVxcdTAwM2Vub19hY3RpdmVfbW9uaXRvciA9IHRydWU7XFxuIFxcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9TRVRfU0NBTl9EV0VMTCk7XFxuIFxcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9CRUFDT05fUkFURV9MRUdBQ1kpO1xcbiBcXHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQkVBQ09OX1JBVEVfSFQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwNDo0MjoxNi4yNTk3MDA0MjdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjcwNzA0NjAyNTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzZfQ09SRVwiLFxuICAgIFwiTVQ3OTJ4X0xJQlwiLFxuICAgIFwiTVQ3OTIxVVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTJ4X2luaXRfd2lwaHlcIixcbiAgICBcIm10NzZfcmVnaXN0ZXJfZGV2aWNlXCIsXG4gICAgXCJtdDc2X3JlZ2lzdGVyX3BoeVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgdGhlIG5vX2FjdGl2ZV9tb25pdG9yIGZsYWcgYW5kIHVuY29uZGl0aW9uYWxseSBlbmFibGVzIE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiBmb3IgTWVkaWFUZWsgbXQ3NiAvIG10NzkyeCB3aXJlbGVzcyBkcml2ZXJzLiBUaGVzZSBkcml2ZXJzIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uIChlLmcuIG10NzkyMXUpLCBhbGxvd2luZyBhY3RpdmUgbW9uaXRvciBpbnRlcmZhY2UgY3JlYXRpb24gYW5kIGhhbmRsaW5nIHZpYSBubDgwMjExLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDBiNjM0NTNkYjg3MDFmODkxMjEyNWQ1YWNmYzI1MGQ1NDUwN2JlY2FcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IFNlcCA1IDA0OjQyOjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jXG5pbmRleCBhYmJlNjVjYmNkODllLi5mOTIyNzc3NzA0ODhhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmNcbkBAIC00MzksOSArNDM5LDggQEAgbXQ3Nl9waHlfaW5pdChzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSwgc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG4gXHRTRVRfSUVFRTgwMjExX0RFVihodywgZGV2LVx1MDAzZWRldik7XG4gXHRTRVRfSUVFRTgwMjExX1BFUk1fQUREUihodywgcGh5LVx1MDAzZW1hY2FkZHIpO1xuIFxuLVx0d2lwaHktXHUwMDNlZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FQX01PREVfQ0hBTl9XSURUSF9DSEFOR0U7XG4tXHRpZiAoIXBoeS1cdTAwM2Vub19hY3RpdmVfbW9uaXRvcilcbi1cdFx0d2lwaHktXHUwMDNlZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SO1xuK1x0d2lwaHktXHUwMDNlZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SIHxcbitcdFx0XHQgICBOTDgwMjExX0ZFQVRVUkVfQVBfTU9ERV9DSEFOX1dJRFRIX0NIQU5HRTtcbiBcdHdpcGh5LVx1MDAzZWZsYWdzIHw9IFdJUEhZX0ZMQUdfSEFTX0NIQU5ORUxfU1dJVENIIHxcbiBcdFx0XHRXSVBIWV9GTEFHX1NVUFBPUlRTX1RETFMgfFxuIFx0XHRcdFdJUEhZX0ZMQUdfQVBfVUFQU0Q7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaFxuaW5kZXggNjJiNDFjOGJiN2MwZC4uNjFlZjFiODBmZWI4NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaFxuQEAgLTg3Myw3ICs4NzMsNiBAQCBzdHJ1Y3QgbXQ3Nl9waHkge1xuIFx0c3RydWN0IGNmZzgwMjExX2NoYW5fZGVmIG1haW5fY2hhbmRlZjtcbiBcdGJvb2wgb2ZmY2hhbm5lbDtcbiBcdGJvb2wgcmFkYXJfZW5hYmxlZDtcbi1cdGJvb2wgbm9fYWN0aXZlX21vbml0b3I7XG4gXG4gXHRzdHJ1Y3QgZGVsYXllZF93b3JrIHJvY193b3JrO1xuIFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnJvY192aWY7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jXG5pbmRleCAwYWQzM2Y3NGMyMjg1Li44MzdkN2FmOTg0ZTg2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmNcbkBAIC04MjAsNyArODIwLDYgQEAgaW50IG10NzkyeF9pbml0X3dpcGh5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuIFxuIFx0d2lwaHktXHUwMDNlZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX1NDSEVEX1NDQU5fUkFORE9NX01BQ19BRERSIHxcbiBcdFx0XHQgICBOTDgwMjExX0ZFQVRVUkVfU0NBTl9SQU5ET01fTUFDX0FERFI7XG4tXHRwaHktXHUwMDNlbXQ3Ni1cdTAwM2Vub19hY3RpdmVfbW9uaXRvciA9IHRydWU7XG4gXHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfU0VUX1NDQU5fRFdFTEwpO1xuIFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0JFQUNPTl9SQVRFX0xFR0FDWSk7XG4gXHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQkVBQ09OX1JBVEVfSFQpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDI6MTYuMjU5NzAzOTY3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDU2NjE4NDgyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVGhpcyBQYXRjaCBmb3IgU3l6a2FsbGVyIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBwYXRjaCBpcyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLiBGcm9tIHRoZSBzdW1tYXJ5LCBpdCBsb29rcyBsaWtlIGl0IHRvdWNoZXMgdGhlIE1lZGlhVGVrIHdpcmVsZXNzIGRyaXZlcnM6IGBtdDc2YCBhbmQgYG10NzkyeGAuIFNwZWNpZmljYWxseSwgYG1hYzgwMjExLmNgLCBgbXQ3Ni5oYCwgYW5kIGBtdDc5MnhfY29yZS5jYCBoYXZlIGJlZW4gbW9kaWZpZWQuIEl0IHNlZW1zIGxpa2UgdGhlIHBhdGNoIHJlbW92ZXMgYSBjaGVjayBhbmQgYSB2YXJpYWJsZSByZWxhdGVkIHRvIGFjdGl2ZSBtb25pdG9yaW5nIGluIHRoZSBgbXQ3Nl9waHlfaW5pdGAgYW5kIGBtdDc5MnhfaW5pdF93aXBoeWAgZnVuY3Rpb25zLiBUaGlzIG1pZ2h0IGNoYW5nZSBob3cgYWN0aXZlIG1vbml0b3JpbmcgZmVhdHVyZXMgYXJlIGhhbmRsZWQuXG5cbk5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzOiBjYW4gdGhlc2UgZHJpdmVycyBiZSBmdXp6ZWQgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRoIHN5emthbGxlcj8gQXJlIHRoZXNlIGRyaXZlcnMgdGllZCB0byBzcGVjaWZpYyBoYXJkd2FyZSwgb3IgYXJlIHRoZXJlIGVtdWxhdGVkIG9yIHZpcnR1YWwgaW50ZXJmYWNlcyBJIGNhbiBsZXZlcmFnZT8gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGFyZSB0aGUgYG10NzZgIGRldmljZXMgVVNCLCBQQ0llLCBvciBzb21ldGhpbmcgdmlydHVhbD8gSSByZW1lbWJlciBzZWVpbmcgYG10NzZgIFVTQiBkcml2ZXJzLCBsaWtlIGBtdDc2eDB1YCwgYG10NzZ4MnVgLCBhbmQgYG10NzkyMXVgLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhvc2UgYXJlIHJlbGV2YW50LiBBcmUgdGhlc2UgZHJpdmVycyBwdXJlbHkgaGFyZHdhcmUtZGVwZW5kZW50LCBvciBjYW4gSSByZWFjaCB0aGVtIHRocm91Z2ggVVNCIFJhdyBHYWRnZXQgb3IgYG1hYzgwMjExX2h3c2ltYCBmb3IgZnV6emluZz9cblxuV2FpdCwgaG9sZCBvbi4uLkkgbmVlZCB0byBjbGFyaWZ5OiBgbXQ3NmAgZHJpdmVycyBhcmUgZm9yIE1lZGlhVGVrIGhhcmR3YXJlIChNVDc2eHggLyBNVDc5MngpLiBJIG5lZWQgdG8gY2hlY2sgaWYgdGhvc2UgZGV2aWNlcyBhcmUgVVNCIGJhc2VkLCBhbmQgaWYgVVNCIGZ1enppbmcgcmVhY2hlcyB0aGVtLiBTaW5jZSBJJ20gbm90IGVudGlyZWx5IGNsZWFyIG9uIHRoZSBidXMgaW50ZXJmYWNlIGZvciB0aGlzIGhhcmR3YXJlLCBJJ2xsIG5lZWQgdG8gc2VhcmNoIHRoZSBrZXJuZWwgdHJlZSBmb3IgYG10NzZgIGFuZCBgbXQ3OTJ4YCBtb3JlIHRob3JvdWdobHkgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGV5IGFyZSByZWFjaGVkIGFuZCB0aGVpciBvdmVyYWxsIHJlYWNoYWJpbGl0eS4gVGhhdCB3aWxsIGRpY3RhdGUgdGhlIGJlc3QgYXBwcm9hY2ggZm9yIHN5emthbGxlciBpbnRlZ3JhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYwOCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQyOjIwLjgyNTg5MjcyOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjY4MTk5MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTJ4X1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjI0MiBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT0yOD1DRkxBR1NfbXQ3NngwMl90cmFjZS5vIDo9IC1JJChzcmMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZToyOTpDRkxBR1NfbXQ3OTJ4X3RyYWNlLm8gOj0gLUkkKHNyYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTMwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT0zOD1tdDc2LWNvbm5hYy1saWIteSA6PSBtdDc2X2Nvbm5hY19tY3UubyBtdDc2X2Nvbm5hY19tYWMubyBtdDc2X2Nvbm5hYzNfbWFjLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6NDA6bXQ3OTJ4LWxpYi15IDo9IG10NzkyeF9jb3JlLm8gbXQ3OTJ4X21hYy5vIG10NzkyeF90cmFjZS5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjQxOlxcdFxcdG10NzkyeF9kZWJ1Z2ZzLm8gbXQ3OTJ4X2RtYS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo0MjptdDc5MngtbGliLSQoQ09ORklHX0FDUEkpICs9IG10NzkyeF9hY3BpX3Nhci5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo0MzptdDc5MngtdXNiLXkgOj0gbXQ3OTJ4X3VzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS00NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtNi0jaW5jbHVkZSBcXFwibXQ3Nl9jb25uYWNfbWN1LmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYzo3OiNpbmNsdWRlIFxcXCJtdDc5MnhfcmVncy5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz03PW10NzkyMV9yZWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzo5OlxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTE6XFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTItXFx0bXQ3Nl93cihkZXYsIGRldi1cXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgdmFsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTM6XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MTk9bXQ3OTIxX3JlZ19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjE6XFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyMzpcXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNC1cXHQqdmFsID0gbXQ3Nl9ycihkZXYsIGRldi1cXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI1OlxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTMzPW10NzkyMV9md19kZWJ1Z19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMzQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzozNTpcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjM3OlxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTM4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzo0MjpcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy00My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz00OD1tdDc5MjFfZndfZGVidWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy00OS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjUwOlxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy01MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz01Nz1ERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1ZywgbXQ3OTIxX2Z3X2RlYnVnX2dldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy01OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6NjA6REVGSU5FX1NIT1dfQVRUUklCVVRFKG10NzkyeF90eF9zdGF0cyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTYxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTkxPW10NzkyMV90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTkyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6OTM6XFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGRldl9nZXRfZHJ2ZGF0YShzLVxcdTAwM2Vwcml2YXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtOTQtXFx0c3RydWN0IG10NzkyMV90eHB3ciB0eHB3cjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy05Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6OTc6XFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtOTgtXFx0cmV0ID0gbXQ3OTIxX2dldF90eHB3cl9pbmZvKGRldiwgXFx1MDAyNnR4cHdyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6OTk6XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTAwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTE0Mz1tdDc5MjFfcG1fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTE0NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjE0NTpcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTQ2LVxcdHN0cnVjdCBtdDc2X2Nvbm5hY19wbSAqcG0gPSBcXHUwMDI2ZGV2LVxcdTAwM2VwbTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0xNzY9bXQ3OTIxX3BtX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTc3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTc4OlxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xNzktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MTg4PW10NzkyMV9kZWVwX3NsZWVwX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xODkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxOTA6XFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTE5MS1cXHRzdHJ1Y3QgbXQ3Nl9jb25uYWNfcG0gKnBtID0gXFx1MDAyNmRldi1cXHUwMDNlcG07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxOTg6XFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTk5LVxcdGlmIChwbS1cXHUwMDNlZHNfZW5hYmxlX3VzZXIgPT0gZW5hYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIwNS1vdXQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjIwNjpcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMDctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MjEyPW10NzkyMV9kZWVwX3NsZWVwX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjEzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjE0OlxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMTUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MjIxPURFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2RzLCBtdDc5MjFfZGVlcF9zbGVlcF9nZXQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyMjQ6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcG1faWRsZV90aW1lb3V0LCBtdDc5MnhfcG1faWRsZV90aW1lb3V0X2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjI1OlxcdFxcdFxcdCBtdDc5MnhfcG1faWRsZV90aW1lb3V0X3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTIyNz1zdGF0aWMgaW50IG10NzkyMV9jaGlwX3Jlc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIyOC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjIyOTpcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjMwLVxcdGludCByZXQgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIzNC1cXHRcXHQvKiBSZXNldCB3aWZpc3lzIGRpcmVjdGx5LiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyMzU6XFx0XFx0bXQ3OTJ4X3Jlc2V0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMzYtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjM4LVxcdFxcdC8qIENvbGxlY3QgdGhlIGNvcmUgZHVtcCBiZWZvcmUgcmVzZXQgd2lmaXN5cy4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjM5OlxcdFxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI0MC1cXHRcXHRyZXQgPSBtdDc2X2Nvbm5hY19tY3VfY2hpcF9jb25maWcoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI0MTpcXHRcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNDItXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MjUxPW10NzkyMXNfc2NoZWRfcXVvdGFfcmVhZChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI1Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI1MzpcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKHMtXFx1MDAzZXByaXZhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNTQtXFx0c3RydWN0IG10NzZfc2RpbyAqc2RpbyA9IFxcdTAwMjZkZXYtXFx1MDAzZW10NzYuc2RpbztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI2NDppbnQgbXQ3OTIxX2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNjUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI3MS1cXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcInhtaXQtcXVldWVzXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjcyOlxcdFxcdFxcdFxcdFxcdCAgICBkaXIsIG10NzkyeF9xdWV1ZXNfcmVhZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI3My1cXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjc3LVxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiYWNxXFxcIiwgZGlyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyNzg6XFx0XFx0XFx0XFx0ICAgIG10NzkyeF9xdWV1ZXNfYWNxKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjc5LVxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwidHhwb3dlcl9za3VcXFwiLCBkaXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI4MC1cXHRcXHRcXHRcXHQgICAgbXQ3OTIxX3R4cHdyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjgxOlxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInR4X3N0YXRzXFxcIiwgMDQwMCwgZGlyLCBkZXYsIFxcdTAwMjZtdDc5MnhfdHhfc3RhdHNfZm9wcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI4Mi1cXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJmd19kZWJ1Z1xcXCIsIDA2MDAsIGRpciwgZGV2LCBcXHUwMDI2Zm9wc19md19kZWJ1Zyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjg3LVxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwicnVudGltZV9wbV9zdGF0c1xcXCIsIGRpcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6Mjg4OlxcdFxcdFxcdFxcdCAgICBtdDc5MnhfcG1fc3RhdHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yODktXFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwiZGVlcC1zbGVlcFxcXCIsIDA2MDAsIGRpciwgZGV2LCBcXHUwMDI2Zm9wc19kcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM9MTQ9c3RhdGljIHNzaXplX3QgbXQ3OTIxX3RoZXJtYWxfdGVtcF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xOS1cXHRjYXNlIDA6IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MjA6XFx0XFx0c3RydWN0IG10NzkyeF9waHkgKnBoeSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoyMTpcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqbWRldiA9IHBoeS1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0yMi1cXHRcXHRpbnQgdGVtcGVyYXR1cmU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoyNDpcXHRcXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShtZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjUtXFx0XFx0dGVtcGVyYXR1cmUgPSBtdDc5MjFfbWN1X2dldF90ZW1wZXJhdHVyZShwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoyNjpcXHRcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShtZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM9NDM9QVRUUklCVVRFX0dST1VQUyhtdDc5MjFfaHdtb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy00NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6NDU6c3RhdGljIGludCBtdDc5MjFfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy02My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6NjQ6aW50IG10NzkyMV9tYWNfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy02NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtNzctXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIDI7IGkrKylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6Nzg6XFx0XFx0bXQ3OTJ4X21hY19pbml0X2JhbmQoZGV2LCBpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtNzktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM9ODI9RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX21hY19pbml0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjg0OnN0YXRpYyBpbnQgX19tdDc5MjFfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy04NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtOTEtXFx0bXQ3Nl93cihkZXYsIE1UX1NXREVGX01PREUsIE1UX1NXREVGX05PUk1BTF9NT0RFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6OTI6XFx0cmV0ID0gbXQ3OTJ4X21jdV9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTkzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxMDk6c3RhdGljIGludCBtdDc5MjFfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xMTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTExOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTIwOlxcdFxcdG10NzkyeF9pbml0X3Jlc2V0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEyMS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM9MTMxPXN0YXRpYyB2b2lkIG10NzkyMV9pbml0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xMzIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxMzM6XFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbXQ3OTJ4X2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTM0LVxcdFxcdFxcdFxcdFxcdCAgICAgIGluaXRfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTQyLVxcdG10NzkyMV9zZXRfc3RyZWFtX2hlX2NhcHMoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTQzOlxcdG10NzkyeF9jb25maWdfbWFjX2FkZHJfbGlzdChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xNDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxNzA6aW50IG10NzkyMV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTcxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xNzctXFx0ZGV2LVxcdTAwM2VtdDc2LnBoeS5wcml2ID0gXFx1MDAyNmRldi1cXHUwMDNlcGh5O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxNzg6XFx0ZGV2LVxcdTAwM2VtdDc2LnR4X3dvcmtlci5mbiA9IG10NzkyeF90eF93b3JrZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTgwOlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXBtLnBzX3dvcmssIG10NzkyeF9wbV9wb3dlcl9zYXZlX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxODE6XFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXBtLndha2Vfd29yaywgbXQ3OTJ4X3BtX3dha2Vfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE4Mi1cXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VwbS53YWtlLmxvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE4OC1cXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VwbS50eHFfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjE4OTpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5Lm1hY193b3JrLCBtdDc5MnhfbWFjX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xOTAtXFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlcGh5LnNjYW5fd29yaywgbXQ3OTIxX3NjYW5fd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjAyLVxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VwaHkucm9jX3dvcmssIG10NzkyMV9yb2Nfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjIwMzpcXHR0aW1lcl9zZXR1cChcXHUwMDI2ZGV2LVxcdTAwM2VwaHkucm9jX3RpbWVyLCBtdDc5Mnhfcm9jX3RpbWVyLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjA0LVxcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXFx1MDAyNmRldi1cXHUwMDNlcGh5LnJvY193YWl0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0yMjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjIyMTpcXHRtdDc5MnhfaW5pdF9hY3BpX3NhcihkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0yMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjIyMzpcXHRyZXQgPSBtdDc5MnhfaW5pdF93Y2lkKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIyNC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MjI3OlxcdHJldCA9IG10NzkyeF9pbml0X3dpcGh5KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjI4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0xOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoxOTpib29sIG10NzkyMV9tYWNfd3RibF91cGRhdGUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgaW50IGlkeCwgdTMyIG1hc2spXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9Mjg9c3RhdGljIHUzMiBtdDc5MjFfbWFjX3d0YmxfbG1hY19hZGRyKGludCBpZHgsIHU4IG9mZnNldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjMzOnN0YXRpYyB2b2lkIG10NzkyMV9tYWNfc3RhX3BvbGwoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0zNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy00MS1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjQyOlxcdHN0cnVjdCBtdDc5Mnhfc3RhICptc3RhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjQzOlxcdHN0cnVjdCBtdDc5MnhfbGlua19zdGEgKm1saW5rO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTQ0LVxcdHUzMiB0eF90aW1lW0lFRUU4MDIxMV9OVU1fQUNTXSwgcnhfdGltZVtJRUVFODAyMTFfTlVNX0FDU107XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02NS1cXHRcXHRtbGluayA9IGxpc3RfZmlyc3RfZW50cnkoXFx1MDAyNnN0YV9wb2xsX2xpc3QsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NjY6XFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBtdDc5MnhfbGlua19zdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjctXFx0XFx0XFx0XFx0XFx0IHdjaWQucG9sbF9saXN0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo2ODpcXHRcXHRtc3RhID0gY29udGFpbmVyX29mKG1saW5rLCBzdHJ1Y3QgbXQ3OTJ4X3N0YSwgZGVmbGluayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjktXFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2bWxpbmstXFx1MDAzZXdjaWQucG9sbF9saXN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTE2OD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6MTY5Om10NzkyMV9tYWNfZmlsbF9yeChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTE3MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0xNzctXFx0c3RydWN0IG10NzZfcGh5ICptcGh5ID0gXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5waHk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6MTc4OlxcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBcXHUwMDI2ZGV2LVxcdTAwM2VwaHk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMTc5LVxcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMTg1LVxcdHUzMiByeGQ0ID0gbGUzMl90b19jcHUocnhkWzRdKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoxODY6XFx0c3RydWN0IG10NzkyeF9zdGEgKm1zdGEgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjE4NzpcXHRzdHJ1Y3QgbXQ3OTJ4X2xpbmtfc3RhICptbGluaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0xODgtXFx0dTE2IHNlcV9jdHJsID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTIxNC1cXHRpZHggPSBGSUVMRF9HRVQoTVRfUlhEMV9OT1JNQUxfV0xBTl9JRFgsIHJ4ZDEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjIxNTpcXHRzdGF0dXMtXFx1MDAzZXdjaWQgPSBtdDc5MnhfcnhfZ2V0X3djaWQoZGV2LCBpZHgsIHVuaWNhc3QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTIxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0yMTctXFx0aWYgKHN0YXR1cy1cXHUwMDNld2NpZCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjIxODpcXHRcXHRtbGluayA9IGNvbnRhaW5lcl9vZihzdGF0dXMtXFx1MDAzZXdjaWQsIHN0cnVjdCBtdDc5MnhfbGlua19zdGEsIHdjaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjIxOTpcXHRcXHRtc3RhID0gY29udGFpbmVyX29mKG1saW5rLCBzdHJ1Y3QgbXQ3OTJ4X3N0YSwgZGVmbGluayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMjIwLVxcdFxcdG10NzZfd2NpZF9hZGRfcG9sbChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBcXHUwMDI2bWxpbmstXFx1MDAzZXdjaWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMjIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjIyMzpcXHRtdDc5MnhfZ2V0X3N0YXR1c19mcmVxX2luZm8oc3RhdHVzLCBjaGZyZXEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTIyNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTQzMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo0MzI6XFx0bXQ3OTJ4X21hY19hc3NvY19yc3NpKGRldiwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy00MzMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy00NDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NDQ3OnZvaWQgbXQ3OTIxX21hY19hZGRfdHhzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNDQ4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo0NDk6XFx0c3RydWN0IG10NzkyeF9saW5rX3N0YSAqbWxpbms7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNDUwLVxcdHN0cnVjdCBtdDc2X3djaWQgKndjaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy00NzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NDczOlxcdG1saW5rID0gY29udGFpbmVyX29mKHdjaWQsIHN0cnVjdCBtdDc5MnhfbGlua19zdGEsIHdjaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTQ3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTQ4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo0ODU6c3RhdGljIHZvaWQgbXQ3OTIxX21hY190eF9mcmVlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEsIGludCBsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNDg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTUxNC1cXHRcXHRpZiAoaW5mbyBcXHUwMDI2IE1UX1RYX0ZSRUVfUEFJUikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjUxNTpcXHRcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X2xpbmtfc3RhICptbGluaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01MTYtXFx0XFx0XFx0dTE2IGlkeDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTUyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo1MjU6XFx0XFx0XFx0bWxpbmsgPSBjb250YWluZXJfb2Yod2NpZCwgc3RydWN0IG10NzkyeF9saW5rX3N0YSwgd2NpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNTI2LVxcdFxcdFxcdG10NzZfd2NpZF9hZGRfcG9sbChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBcXHUwMDI2bWxpbmstXFx1MDAzZXdjaWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9NTYyPWJvb2wgbXQ3OTIxX3J4X2NoZWNrKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqZGF0YSwgaW50IGxlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01NjMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjU2NDpcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MnhfZGV2LCBtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01NjUtXFx0X19sZTMyICpyeGQgPSAoX19sZTMyICopZGF0YTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTU4Nz12b2lkIG10NzkyMV9xdWV1ZV9yeF9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCBlbnVtIG10NzZfcnhxX2lkIHEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01ODkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjU5MDpcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MnhfZGV2LCBtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01OTEtXFx0X19sZTMyICpyeGQgPSAoX19sZTMyICopc2tiLVxcdTAwM2VkYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9NjM0PW10NzkyMV92aWZfY29ubmVjdF9pdGVyKHZvaWQgKnByaXYsIHU4ICptYWMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02MzYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjYzNzpcXHRzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqbXZpZiA9IChzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqKXZpZi1cXHUwMDNlZHJ2X3ByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NjM4OlxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBtdmlmLVxcdTAwM2VwaHktXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02MzktXFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBtdDc2X2h3KGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYz02NTk9dm9pZCBtdDc5MjFfbWFjX3Jlc2V0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTY2MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NjYxOlxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG10NzkyeF9kZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjYyLVxcdFxcdFxcdFxcdFxcdCAgICAgIHJlc2V0X3dvcmspO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjgwLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tdXRleCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NjgxOlxcdFxcdHJldCA9IG10NzkyeF9kZXZfcmVzZXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02ODItXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubXV0ZXgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9NzE1PXZvaWQgbXQ3OTIxX2NvcmVkdW1wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTcxNi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NzE3OlxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzE4LVxcdGNoYXIgKmR1bXAsICpkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTcxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo3MjA6XFx0ZGV2ID0gKHN0cnVjdCBtdDc5MnhfZGV2ICopY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBtdDc5MnhfZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTcyMS1cXHRcXHRcXHRcXHRcXHRcXHRjb3JlZHVtcC53b3JrLndvcmspO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjc1OTpcXHRtdDc5MnhfcmVzZXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzYwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTc2Mz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjc2NDptdDc5MjFfdXNiX3NkaW9fd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc2NS1cXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTc3Nj1pbnQgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy03ODAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjc4MTpcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MnhfZGV2LCBtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy03ODItXFx0c3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvID0gSUVFRTgwMjExX1NLQl9DQih0eF9pbmZvLVxcdTAwM2Vza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzk3LVxcdGlmIChzdGEpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo3OTg6XFx0XFx0c3RydWN0IG10NzkyeF9zdGEgKm1zdGEgPSAoc3RydWN0IG10NzkyeF9zdGEgKilzdGEtXFx1MDAzZWRydl9wcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTgwOS1cXHR0eXBlID0gbXQ3Nl9pc19zZGlvKG1kZXYpID8gTVQ3OTIxX1NESU9fREFUQSA6IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODEwOlxcdG10NzkyeF9za2JfYWRkX3VzYl9zZGlvX2hkcihkZXYsIHNrYiwgdHlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODExLVxcdHBhZCA9IHJvdW5kX3VwKHNrYi1cXHUwMDNlbGVuLCA0KSAtIHNrYi1cXHUwMDNlbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9ODQ1PWJvb2wgbXQ3OTIxX3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NDYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjg0NzpcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MnhfZGV2LCBtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODQ5OlxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODUwLVxcdG10NzkyMV9tYWNfc3RhX3BvbGwoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4NTE6XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYz04NTg9dm9pZCBtdDc5MjFfc2V0X2lwdjZfbnNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODU5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4NjA6XFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbXQ3OTJ4X2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NjEtXFx0XFx0XFx0XFx0XFx0ICAgICAgaXB2Nl9uc193b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTg3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4NzE6XFx0XFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NzItXFx0XFx0cmV0ID0gbXQ3Nl9tY3Vfc2tiX3NlbmRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIHNrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NzMtXFx0XFx0XFx0XFx0XFx0ICAgIE1DVV9VTklfQ01EKE9GRkxPQUQpLCB0cnVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4NzQ6XFx0XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NzUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM9MTM9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzoxNDptdDc5MjFfaW5pdF9oZV9jYXBzKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGVudW0gbmw4MDIxMV9iYW5kIGJhbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTE1LVxcdFxcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX3NiYW5kX2lmdHlwZV9kYXRhICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTE5NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MTk2OnZvaWQgbXQ3OTIxX3NldF9zdHJlYW1faGVfY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0xOTcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTIyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjI3OmludCBfX210NzkyMV9zdGFydChzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yMjgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjQ4OlxcdG10NzkyeF9tYWNfcmVzZXRfY291bnRlcnMocGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjQ5LVxcdHNldF9iaXQoTVQ3Nl9TVEFURV9SVU5OSU5HLCBcXHUwMDI2bXBoeS1cXHUwMDNlc3RhdGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jPTI3Mj1zdGF0aWMgaW50IG10NzkyMV9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjczLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6Mjc0OlxcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBtdDc5MnhfaHdfcGh5KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjc1LVxcdGludCBlcnI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6Mjc3OlxcdG10NzkyeF9tdXRleF9hY3F1aXJlKHBoeS1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjc4LVxcdGVyciA9IF9fbXQ3OTIxX3N0YXJ0KHBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI3OTpcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShwaHktXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI4MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYz0yODQ9c3RhdGljIHZvaWQgbXQ3OTIxX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjg1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6Mjg2OlxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBtdDc5MnhfaHdfZGV2KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjg3LVxcdGludCBlcnIgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI4OS1cXHRpZiAobXQ3Nl9pc19tbWlvKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI5MDpcXHRcXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yOTEtXFx0XFx0ZXJyID0gbXQ3OTIxX21jdV9yYWRpb19sZWRfY3RybChkZXYsIEVYVF9DTURfUkFESU9fT0ZGX0xFRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI5MjpcXHRcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yOTMtXFx0XFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yOTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI5NzpcXHRtdDc5Mnhfc3RvcChodywgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yOTgtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jPTMwMT1tdDc5MjFfYWRkX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzAyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzAzOlxcdHN0cnVjdCBtdDc5MnhfdmlmICptdmlmID0gKHN0cnVjdCBtdDc5MnhfdmlmICopdmlmLVxcdTAwM2VkcnZfcHJpdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzA0OlxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBtdDc5MnhfaHdfZGV2KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzA1OlxcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBtdDc5MnhfaHdfcGh5KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzA2LVxcdHN0cnVjdCBtdDc2X3R4cSAqbXR4cTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zMDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjMwOTpcXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zMTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzU0LVxcdElOSVRfV09SSyhcXHUwMDI2bXZpZi1cXHUwMDNlY3NhX3dvcmssIG10NzkyMV9jc2Ffd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjM1NTpcXHR0aW1lcl9zZXR1cChcXHUwMDI2bXZpZi1cXHUwMDNlY3NhX3RpbWVyLCBtdDc5MnhfY3NhX3RpbWVyLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzU2LW91dDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzU3OlxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYz0zNjI9c3RhdGljIHZvaWQgbXQ3OTIxX3JvY19pdGVyKHZvaWQgKnByaXYsIHU4ICptYWMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzY0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzY1OlxcdHN0cnVjdCBtdDc5MnhfdmlmICptdmlmID0gKHN0cnVjdCBtdDc5MnhfdmlmICopdmlmLVxcdTAwM2VkcnZfcHJpdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzY2OlxcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBwcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zNjctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozNzE6dm9pZCBtdDc5MjFfcm9jX2Fib3J0X3N5bmMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzcyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzczOlxcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBcXHUwMDI2ZGV2LVxcdTAwM2VwaHk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYz0zODc9dm9pZCBtdDc5MjFfcm9jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zODgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozODk6XFx0c3RydWN0IG10NzkyeF9waHkgKnBoeTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozOTE6XFx0cGh5ID0gKHN0cnVjdCBtdDc5MnhfcGh5ICopY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBtdDc5MnhfcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zOTItXFx0XFx0XFx0XFx0XFx0XFx0cm9jX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjM5NDpcXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShwaHktXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM5NS1cXHRpZiAoIXRlc3RfYW5kX2NsZWFyX2JpdChNVDc2X1NUQVRFX1JPQywgXFx1MDAyNnBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlc3RhdGUpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjM5NjpcXHRcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShwaHktXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM5Ny1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtNDAxLVxcdFxcdFxcdFxcdFxcdCAgICBtdDc5MjFfcm9jX2l0ZXIsIHBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjQwMjpcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShwaHktXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQwMy1cXHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChwaHktXFx1MDAzZW10NzYtXFx1MDAzZWh3KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00MDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjQwNjpzdGF0aWMgaW50IG10NzkyMV9hYm9ydF9yb2Moc3RydWN0IG10NzkyeF9waHkgKnBoeSwgc3RydWN0IG10NzkyeF92aWYgKnZpZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtNDA3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00MTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjQxMzpcXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShwaHktXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQxNC1cXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE1UNzZfU1RBVEVfUk9DLCBcXHUwMDI2cGh5LVxcdTAwM2VtdDc2LVxcdTAwM2VzdGF0ZSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQxNS1cXHRcXHRlcnIgPSBtdDc5MjFfbWN1X2Fib3J0X3JvYyhwaHksIHZpZiwgcGh5LVxcdTAwM2Vyb2NfdG9rZW5faWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0MTY6XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UocGh5LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00MTctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtNDIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0MjE6c3RhdGljIGludCBtdDc5MjFfc2V0X3JvYyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0MjI6XFx0XFx0XFx0ICBzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqdmlmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00MjMtXFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM9NDUxPXN0YXRpYyBpbnQgbXQ3OTIxX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQ1Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjQ1NzpcXHRzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqbXZpZiA9IChzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqKXZpZi1cXHUwMDNlZHJ2X3ByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjQ1ODpcXHRzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5ID0gbXQ3OTJ4X2h3X3BoeShodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQ1OS1cXHRpbnQgZXJyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00NjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjQ2MTpcXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShwaHktXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQ2Mi1cXHRlcnIgPSBtdDc5MjFfc2V0X3JvYyhwaHksIG12aWYsIGNoYW4sIGR1cmF0aW9uLCBNVDc5MjFfUk9DX1JFUV9ST0MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0NjM6XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UocGh5LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00NjQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM9NDY4PXN0YXRpYyBpbnQgbXQ3OTIxX2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00NzAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0NzE6XFx0c3RydWN0IG10NzkyeF92aWYgKm12aWYgPSAoc3RydWN0IG10NzkyeF92aWYgKil2aWYtXFx1MDAzZWRydl9wcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0NzI6XFx0c3RydWN0IG10NzkyeF9waHkgKnBoeSA9IG10NzkyeF9od19waHkoaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00NzMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM9NDc3PWludCBtdDc5MjFfc2V0X2NoYW5uZWwoc3RydWN0IG10NzZfcGh5ICptcGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00Nzgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0Nzk6XFx0c3RydWN0IG10NzkyeF9waHkgKnBoeSA9IG1waHktXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjQ4MDpcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gcGh5LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQ4MS1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQ4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6NDg4OlxcdG10NzkyeF9tYWNfc2V0X3RpbWVpbmcocGh5KTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDI6MjEuMTUyNzE4NDA0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzEzMDg0Njc4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE1UNzkyMVUgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYG10NzkyMXVgLCB3aGljaCBJIGtub3cgaXMgdGhlIFVTQiBkcml2ZXIgZm9yIHRoZSBNVDc5MjEgY2hpcHNldC4gTXkgZmlyc3QgdGhvdWdodCBpczogY2FuIHdlIGZ1enogdGhpcyB0aGluZyBlZmZlY3RpdmVseSB3aXRoIHN5emthbGxlcj8gU3BlY2lmaWNhbGx5LCBkb2VzIHN5emthbGxlciBoYXZlIGdvb2QgY292ZXJhZ2UgZm9yIFVTQiB3aXJlbGVzcyBkZXZpY2VzPyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIHN0YW5kYXJkIG1ldGhvZHMg4oCTIHRoZSBgdXNiIHJhdyBnYWRnZXRgIGFuZCB0aGUgYHZoY2lgIGFwcHJvYWNoLlxuXG5SaWdodCwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcywgaW5jbHVkaW5nIHRoZSBlbXVsYXRpb24gb2YgVVNCIGRldmljZXMuIFRoYXTigJlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gU28sIHdoZW4gYSBVU0IgZGV2aWNlIGlzIFwiYXR0YWNoZWQsXCIgd2hldGhlciB0aHJvdWdoIGEgVVNCIGdhZGdldCBzZXR1cCBvciB1c2luZyBgc3l6X3VzYl9jb25uZWN0YCwgdGhlIGtlcm5lbCBwcm9iZSBmdW5jdGlvbnMgZm9yIHRoZSBhdHRhY2hlZCBkZXZpY2Ugd2lsbCBiZSBjYWxsZWQuIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gd2hhdCBoYXBwZW5zIGluIHRoYXQgcHJvYmUuXG5cbk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gc2VlIGlmIHRoZSBgbXQ3OTIxdWAgcHJvYmUgZnVuY3Rpb24gaGFuZGxlcyBlbXVsYXRlZCBVU0IgZGVzY3JpcHRvcnMgYW5kIHJlcXVlc3RzIGNvcnJlY3RseS4gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGFyZWFzIHdoZXJlIHRoZSBlbXVsYXRpb24gbWlnaHQgZmFpbD8gSSB3YW50IHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyBzcGVjaWZpY2FsbHkgd2l0aGluIGBtdDc2X3BoeV9pbml0YCBhbmQgYG10NzkyeF9pbml0X3dpcGh5YCDigJMgdGhlc2UgYXJlIGxpa2VseSBrZXkgdG8gdGhlIHdpcmVsZXNzIGludGVyZmFjZSBpbml0aWFsaXphdGlvbi4gSSdsbCBuZWVkIHRvIGZvbGxvdyB0aGUgZXhlY3V0aW9uIHBhdGggdG8gc2VlIGlmIGFueSBhc3N1bXB0aW9ucyBhcmUgYmVpbmcgbWFkZSB0aGF0IHdvdWxkIGJlIGJyb2tlbiBieSBhbiBlbXVsYXRlZCBlbnZpcm9ubWVudC5cblxuVG8gZ2V0IHN0YXJ0ZWQsIEknbGwgbmVlZCB0byBkaXZlIGludG8gdGhlIGNvZGUuIEknbGwgc3RhcnQgd2l0aCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmNgLCBvciByZWFsbHkgYW55IG90aGVyIHJlbGV2YW50IFVTQiBkcml2ZXIgd2l0aGluIHRoZSBgbXQ3NmAgZGlyZWN0b3J5LiBJJ2xsIG5lZWQgdG8gY29ycmVsYXRlIHRoZSBkZXNjcmlwdG9yIGRlZmluaXRpb25zIHRvIHRoZSBpbml0aWFsaXphdGlvbiBzdGVwcyB0byBnZXQgYSBzZW5zZSBvZiB3aGVyZSBmdXp6aW5nIG1pZ2h0IGJlIG1vc3QgZWZmZWN0aXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTAyOCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwNDo0MjoyOC4yODM1NjkxOTVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY5MzcwMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3VzYl9kcml2ZXJ8dXNiX3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM9MjY1PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc2NjN1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI3Ny19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjI3ODptb2R1bGVfdXNiX2RyaXZlcihtdDc2NjN1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjc5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM9MzQ1PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc2eDBfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzU1LX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzU2Om1vZHVsZV91c2JfZHJpdmVyKG10NzZ4MF9kcml2ZXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmM9MTM3PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc2eDJ1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTE0OS19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jOjE1MDptb2R1bGVfdXNiX2RyaXZlcihtdDc2eDJ1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmMtMTUxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MzM4PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc5MjF1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTM1MC19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjM1MTptb2R1bGVfdXNiX2RyaXZlcihtdDc5MjF1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMzUyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MzU1PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc5MjV1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM2Ny19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM2ODptb2R1bGVfdXNiX2RyaXZlcihtdDc5MjV1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzY5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwNDo0MjoyOC4zNTA1MTA2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mzc2NTk2OTMwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byB0aGUgTWVkaWF0ZWsgRHJpdmVyIENvZGUqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIE1lZGlhdGVrIFdpLUZpIHNpdHVhdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGNvcmUgb2YgdGhlIHByb2JsZW0uIFRoYXQgbWVhbnMgY3JhY2tpbmcgb3BlbiB0aGUgZHJpdmVyIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIGBtYWM4MDIxMS5jYCBhbmQgYG10NzkyeF9jb3JlLmNgIGZpbGVzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZgIGRpcmVjdG9yeS4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IHRha2luZyBhIGNsb3NlIGxvb2sgYXQgYG1hYzgwMjExLmNgIGFyb3VuZCBsaW5lIDQzOSwgYW5kIHRoZW4gc2hpZnQgbXkgYXR0ZW50aW9uIHRvIGBtdDc5MnhfY29yZS5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDgyMC4gSG9wZWZ1bGx5LCB0aGUgaW5mb3JtYXRpb24gSSBmaW5kIGluIHRoZXNlIHNwZWNpZmljIHNlY3Rpb25zIHdpbGwgaWxsdW1pbmF0ZSB0aGUgaXNzdWUuIEknbSBob3BpbmcgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgZWxlbWVudHMgaW50ZXJyZWxhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMzM1LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQyOjMyLjExNjQ4MjkwMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMTI5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDI1LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDI1OlxcdFxcbiA0MjY6XFx0c3RhdGljIGludFxcbiA0Mjc6XFx0bXQ3Nl9waHlfaW5pdChzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSwgc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXFxuIDQyODpcXHR7XFxuIDQyOTpcXHRcXHRzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiA9IHBoeS1cXHUwMDNlZGV2O1xcbiA0MzA6XFx0XFx0c3RydWN0IHdpcGh5ICp3aXBoeSA9IGh3LVxcdTAwM2V3aXBoeTtcXG4gNDMxOlxcdFxcbiA0MzI6XFx0XFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNnBoeS1cXHUwMDNldHhfbGlzdCk7XFxuIDQzMzpcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2cGh5LVxcdTAwM2V0eF9sb2NrKTtcXG4gNDM0OlxcdFxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZwaHktXFx1MDAzZXJvY193b3JrLCBtdDc2X3JvY19jb21wbGV0ZV93b3JrKTtcXG4gNDM1OlxcdFxcbiA0MzY6XFx0XFx0aWYgKCh2b2lkICopcGh5ICE9IGh3LVxcdTAwM2Vwcml2KVxcbiA0Mzc6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDQzODpcXHRcXG4gNDM5OlxcdFxcdFNFVF9JRUVFODAyMTFfREVWKGh3LCBkZXYtXFx1MDAzZWRldik7XFxuIDQ0MDpcXHRcXHRTRVRfSUVFRTgwMjExX1BFUk1fQUREUihodywgcGh5LVxcdTAwM2VtYWNhZGRyKTtcXG4gNDQxOlxcdFxcbiA0NDI6XFx0XFx0d2lwaHktXFx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiB8XFxuIDQ0MzpcXHRcXHRcXHRcXHQgICBOTDgwMjExX0ZFQVRVUkVfQVBfTU9ERV9DSEFOX1dJRFRIX0NIQU5HRTtcXG4gNDQ0OlxcdFxcdHdpcGh5LVxcdTAwM2VmbGFncyB8PSBXSVBIWV9GTEFHX0hBU19DSEFOTkVMX1NXSVRDSCB8XFxuIDQ0NTpcXHRcXHRcXHRcXHRXSVBIWV9GTEFHX1NVUFBPUlRTX1RETFMgfFxcbiA0NDY6XFx0XFx0XFx0XFx0V0lQSFlfRkxBR19BUF9VQVBTRDtcXG4gNDQ3OlxcdFxcbiA0NDg6XFx0XFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0NRTV9SU1NJX0xJU1QpO1xcbiA0NDk6XFx0XFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0FJUlRJTUVfRkFJUk5FU1MpO1xcbiA0NTA6XFx0XFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0FRTCk7XFxuIDQ1MTpcXHRcXG4gNDUyOlxcdFxcdGlmICghd2lwaHktXFx1MDAzZW1heF9yZW1haW5fb25fY2hhbm5lbF9kdXJhdGlvbilcXG4gNDUzOlxcdFxcdFxcdHdpcGh5LVxcdTAwM2VtYXhfcmVtYWluX29uX2NoYW5uZWxfZHVyYXRpb24gPSA1MDAwO1xcbiA0NTQ6XFx0XFx0aWYgKCF3aXBoeS1cXHUwMDNlYXZhaWxhYmxlX2FudGVubmFzX3R4KVxcbiA0NTU6XFx0XFx0XFx0d2lwaHktXFx1MDAzZWF2YWlsYWJsZV9hbnRlbm5hc190eCA9IHBoeS1cXHUwMDNlYW50ZW5uYV9tYXNrO1xcbiA0NTY6XFx0XFx0aWYgKCF3aXBoeS1cXHUwMDNlYXZhaWxhYmxlX2FudGVubmFzX3J4KVxcbiA0NTc6XFx0XFx0XFx0d2lwaHktXFx1MDAzZWF2YWlsYWJsZV9hbnRlbm5hc19yeCA9IHBoeS1cXHUwMDNlYW50ZW5uYV9tYXNrO1xcbiA0NTg6XFx0XFxuIDQ1OTpcXHRcXHR3aXBoeS1cXHUwMDNlc2FyX2NhcGEgPSBcXHUwMDI2bXQ3Nl9zYXJfY2FwYTtcXG4gNDYwOlxcdFxcdHBoeS1cXHUwMDNlZnJwID0gZGV2bV9rY2FsbG9jKGRldi1cXHUwMDNlZGV2LCB3aXBoeS1cXHUwMDNlc2FyX2NhcGEtXFx1MDAzZW51bV9mcmVxX3JhbmdlcyxcXG4gNDYxOlxcdFxcdFxcdFxcdFxcdHNpemVvZihzdHJ1Y3QgbXQ3Nl9mcmVxX3JhbmdlX3Bvd2VyKSxcXG4gNDYyOlxcdFxcdFxcdFxcdFxcdEdGUF9LRVJORUwpO1xcbiA0NjM6XFx0XFx0aWYgKCFwaHktXFx1MDAzZWZycClcXG4gNDY0OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwNDo0MjozMi4xMTY2MDU3MDFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMzU0MzUzMjAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVDc5MnggSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyB3ZSBuZWVkIHRvIHRob3JvdWdobHkgdW5kZXJzdGFuZCBob3cgdGhpcyBNVDc5MnggZHJpdmVyIGlzIGluaXRpYWxpemluZyB0aGUgV2ktRmkgUEhZLiBJIHNob3VsZCBkZWZpbml0ZWx5IGNoZWNrIG91dCBgbXQ3OTJ4X2luaXRfd2lwaHlgIHRvIGdyYXNwIHRoaXMuIFRoYXQgZnVuY3Rpb24sIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jYCwgaXMgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBjb3JlIFdpLUZpIGZ1bmN0aW9uYWxpdHkgaXMgYmVpbmcgc2V0IHVwLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSB0aGluZ3MgbGlrZSB0aGUgcmVnaXN0cmF0aW9uIG9mIHRoZSBXaS1GaSBkZXZpY2Ugd2l0aCB0aGUga2VybmVsJ3Mgd2lyZWxlc3Mgc3Vic3lzdGVtLCBhbmQgY29uZmlndXJhdGlvbiBvZiB0aGUgcmFkaW8gYW5kIE1BQyBsYXllcnMuIFVuZGVyc3RhbmRpbmcgdGhpcyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBpcyBjcml0aWNhbCBmb3IgYW55IHRyb3VibGVzaG9vdGluZyBvciBtb2RpZmljYXRpb24gZWZmb3J0cyBmdXJ0aGVyIGRvd24gdGhlIGxpbmUuIEkgd2FudCB0byBzZWUgZXhhY3RseSBob3cgdGhleSdyZSBoYW5kbGluZyB0aGUgaGFyZHdhcmUgYW5kIHdoYXQgdGhlIGluaXRpYWwgc3RhdGUgaXMuIFRpbWUgdG8gZGlnIGluIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzQ2OSwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDI6MzUuNDcwOTYzODkyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzOTM2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogODA1LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODA1OlxcdFxcdFxcdHdpcGh5LVxcdTAwM2VuYW5fY2FwYS5tYXhfY2hhbm5lbF9zd2l0Y2hfdGltZSA9IDEyO1xcbiA4MDY6XFx0XFx0XFx0d2lwaHktXFx1MDAzZW5hbl9jYXBhLmRldl9jYXBhYmlsaXRpZXMgPSBOQU5fREVWX0NBUEFfRVhUX0tFWV9JRF9TVVBQT1JURUQ7XFxuIDgwNzpcXHRcXHRcXHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfU0VDVVJFX05BTik7XFxuIDgwODpcXHRcXHR9XFxuIDgwOTpcXHRcXG4gODEwOlxcdFxcdHdpcGh5LVxcdTAwM2VtYXhfc2Nhbl9pZV9sZW4gPSBNVDc2X0NPTk5BQ19TQ0FOX0lFX0xFTjtcXG4gODExOlxcdFxcdHdpcGh5LVxcdTAwM2VtYXhfc2Nhbl9zc2lkcyA9IDQ7XFxuIDgxMjpcXHRcXHR3aXBoeS1cXHUwMDNlbWF4X3NjaGVkX3NjYW5fcGxhbl9pbnRlcnZhbCA9XFxuIDgxMzpcXHRcXHRcXHRNVDc2X0NPTk5BQ19NQVhfVElNRV9TQ0hFRF9TQ0FOX0lOVEVSVkFMO1xcbiA4MTQ6XFx0XFx0d2lwaHktXFx1MDAzZW1heF9zY2hlZF9zY2FuX2llX2xlbiA9IElFRUU4MDIxMV9NQVhfREFUQV9MRU47XFxuIDgxNTpcXHRcXHR3aXBoeS1cXHUwMDNlbWF4X3NjaGVkX3NjYW5fc3NpZHMgPSBNVDc2X0NPTk5BQ19NQVhfU0NIRURfU0NBTl9TU0lEO1xcbiA4MTY6XFx0XFx0d2lwaHktXFx1MDAzZW1heF9tYXRjaF9zZXRzID0gTVQ3Nl9DT05OQUNfTUFYX1NDQU5fTUFUQ0g7XFxuIDgxNzpcXHRcXHR3aXBoeS1cXHUwMDNlbWF4X3NjaGVkX3NjYW5fcmVxcyA9IDE7XFxuIDgxODpcXHRcXHR3aXBoeS1cXHUwMDNlZmxhZ3MgfD0gV0lQSFlfRkxBR19IQVNfQ0hBTk5FTF9TV0lUQ0ggfFxcbiA4MTk6XFx0XFx0XFx0XFx0V0lQSFlfRkxBR19TUExJVF9TQ0FOXzZHSFo7XFxuIDgyMDpcXHRcXG4gODIxOlxcdFxcdHdpcGh5LVxcdTAwM2VmZWF0dXJlcyB8PSBOTDgwMjExX0ZFQVRVUkVfU0NIRURfU0NBTl9SQU5ET01fTUFDX0FERFIgfFxcbiA4MjI6XFx0XFx0XFx0XFx0ICAgTkw4MDIxMV9GRUFUVVJFX1NDQU5fUkFORE9NX01BQ19BRERSO1xcbiA4MjM6XFx0XFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX1NFVF9TQ0FOX0RXRUxMKTtcXG4gODI0OlxcdFxcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9CRUFDT05fUkFURV9MRUdBQ1kpO1xcbiA4MjU6XFx0XFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0JFQUNPTl9SQVRFX0hUKTtcXG4gODI2OlxcdFxcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9CRUFDT05fUkFURV9WSFQpO1xcbiA4Mjc6XFx0XFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0JFQUNPTl9SQVRFX0hFKTtcXG4gODI4OlxcdFxcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9BQ0tfU0lHTkFMX1NVUFBPUlQpO1xcbiA4Mjk6XFx0XFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0NBTl9SRVBMQUNFX1BUSzApO1xcbiA4MzA6XFx0XFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX01VTFRJQ0FTVF9SRUdJU1RSQVRJT05TKTtcXG4gODMxOlxcdFxcbiA4MzI6XFx0XFx0aWVlZTgwMjExX2h3X3NldChodywgU0lOR0xFX1NDQU5fT05fQUxMX0JBTkRTKTtcXG4gODMzOlxcdFxcdGllZWU4MDIxMV9od19zZXQoaHcsIEhBU19SQVRFX0NPTlRST0wpO1xcbiA4MzQ6XFx0XFx0aWVlZTgwMjExX2h3X3NldChodywgU1VQUE9SVFNfVFhfRU5DQVBfT0ZGTE9BRCk7XFxuIDgzNTpcXHRcXHRpZWVlODAyMTFfaHdfc2V0KGh3LCBTVVBQT1JUU19SWF9ERUNBUF9PRkZMT0FEKTtcXG4gODM2OlxcdFxcdGlmIChpc19tdDc5MjcoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuIDgzNzpcXHRcXHRcXHRpZWVlODAyMTFfaHdfc2V0KGh3LCBOT19WSVJUVUFMX01PTklUT1IpO1xcbiA4Mzg6XFx0XFx0ZWxzZVxcbiA4Mzk6XFx0XFx0XFx0aWVlZTgwMjExX2h3X3NldChodywgV0FOVF9NT05JVE9SX1ZJRik7XFxuIDg0MDpcXHRcXHRpZWVlODAyMTFfaHdfc2V0KGh3LCBTVVBQT1JUU19QUyk7XFxuIDg0MTpcXHRcXHRpZWVlODAyMTFfaHdfc2V0KGh3LCBTVVBQT1JUU19EWU5BTUlDX1BTKTtcXG4gODQyOlxcdFxcdGllZWU4MDIxMV9od19zZXQoaHcsIFNVUFBPUlRTX1ZIVF9FWFRfTlNTX0JXKTtcXG4gODQzOlxcdFxcdGllZWU4MDIxMV9od19zZXQoaHcsIENPTk5FQ1RJT05fTU9OSVRPUik7XFxuIDg0NDpcXHRcXHRpZWVlODAyMTFfaHdfc2V0KGh3LCBTVVBQT1JUU19NVUxUSV9CU1NJRCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQyOjM1LjQ3MTEwNzM0MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNDIwMzg2OTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgYSBDb2RlIENvbW1pdCoqXG5cbkFscmlnaHQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSAqd2h5KiBiZWhpbmQgdGhpcyBjb21taXQuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8ganVtcCBzdHJhaWdodCBpbnRvIHRoZSBjb2RlIGNoYW5nZXMsIHNlZSB3aGF0J3MgZGlmZmVyZW50IGFuZCBob3csIGJ1dCB0aGF0J3Mgb2Z0ZW4gYSBzaG9ydGN1dCB0byBtaXN1bmRlcnN0YW5kaW5nLiBJIG5lZWQgY29udGV4dCBmaXJzdC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgdGhlIGNvbW1pdCBtZXNzYWdlIGFuZCBkaWcgdGhyb3VnaCB0aGUgZ2l0IGhpc3RvcnkuIE1heWJlIHRoaXMgaXMgYSBxdWljayBmaXgsIG1heWJlIGEgbGFyZ2VyIHJlZmFjdG9yIOKAkyBjb250ZXh0IGlzIGtpbmcgaGVyZS4gVGhlIG1lc3NhZ2Ugc2hvdWxkIGlkZWFsbHkgdGVsbCBtZSB0aGUgc3RvcnkuIExldCdzIHNlZSBpZiB0aGUgbG9nIGNhbiBnaXZlIG1lIHNvbWUgcmVjZW50IGNvbW1pdHMgb3Igc3Vycm91bmRpbmcgY29udGV4dC4gVGhpcyB3aWxsIGhvcGVmdWxseSBzYXZlIG1lIHNvbWUgdGltZSBhbmQgYWxsb3cgbWUgdG8gZGV0ZXJtaW5lIHRoZSB0cnVlIG5hdHVyZSBvZiB0aGlzIGNvbW1pdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ4NzMsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQyOjM4Ljg5MTQ5NzIzOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4NjgxODU0NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibm9fYWN0aXZlX21vbml0b3JcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQyOjQwLjU3ODMyNjU1NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjc0MTU3NDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS2VybmVsIFBhdGNoOiBEaXNzZWN0aW5nIHRoZSBSZW1vdmFsIG9mIGBub19hY3RpdmVfbW9uaXRvcmAqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIG51a2VkIGBub19hY3RpdmVfbW9uaXRvcmAgZnJvbSB0aGUga2VybmVsIHRyZWUsIGJhc2ljYWxseSBldmVyeXdoZXJlLiBJbnRlcmVzdGluZy4gVGltZSB0byBkaWcgaW4gYW5kIHVuZGVyc3RhbmQgdGhlIGltcGFjdC4gSSBuZWVkIHRvIHNlZSAqd2hlcmUqIHRoaXMgdmFyaWFibGUgd2FzIGJlaW5nIHVzZWQgYW5kIGhvdyBpdHMgcmVtb3ZhbCBjaGFuZ2VzIHRoZSBsYW5kc2NhcGUuIExldCdzIHN0YXJ0IHdpdGggdGhlIGNhbGxzIHRvIGBtdDc2X3BoeV9pbml0YCBhbmQgYG10NzkyeF9pbml0X3dpcGh5YC4gVGhvc2Ugc2VlbSBsaWtlIGxvZ2ljYWwgZW50cnkgcG9pbnRzIGZvciBtb25pdG9yIG1vZGUgZnVuY3Rpb25hbGl0eSBhbmQgaW5pdGlhbGl6YXRpb24sIHNvIEknbSBndWVzc2luZyB0aGF0J3Mgd2hlcmUgdGhlIHJhbWlmaWNhdGlvbnMgb2YgcmVtb3ZpbmcgdGhpcyB2YXJpYWJsZSB3aWxsIGJlIG1vc3QgcmVhZGlseSBhcHBhcmVudC4gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHNvbWUgcG90ZW50aWFsIHJhbWlmaWNhdGlvbnMgb24gdGhlIGRyaXZlcidzIGFiaWxpdHkgdG8gcHJvcGVybHkgaGFuZGxlIG1vbml0b3IgbW9kZS4gRGVwZW5kaW5nIG9uICpob3cqIGBub19hY3RpdmVfbW9uaXRvcmAgd2FzIHVzZWQsIGl0IGNvdWxkIHJlcHJlc2VudCBhIGNoYW5nZSBpbiBiZWhhdmlvciwgZnVuY3Rpb25hbGl0eSBvciwgcG90ZW50aWFsbHksIGEgYnVnLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgd2FzIGEgY2xlYW51cCwgYSByZWZhY3Rvciwgb3Igc29tZXRoaW5nIG1vcmUuIEFscmlnaHQsIGxldCdzIHNlZSB3aGF0IHRoZSBjb2RlIHNheXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MTExLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDI6NDIuODUyNDg4MTI1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjg2MzAwODk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfcGh5X2luaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTQyNj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjQyNzptdDc2X3BoeV9pbml0KHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNDI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz01NTA9aW50IG10NzZfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBib29sIHZodCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy01NTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjU1NTpcXHRyZXQgPSBtdDc2X3BoeV9pbml0KHBoeSwgcGh5LVxcdTAwM2Vodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTU1Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTc0Nz1pbnQgbXQ3Nl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYsIGJvb2wgdmh0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTc1NS1cXHRtdDc2X3djaWRfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VnbG9iYWxfd2NpZCwgcGh5LVxcdTAwM2ViYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjc1NjpcXHRyZXQgPSBtdDc2X3BoeV9pbml0KHBoeSwgaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy03NTctXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDI6NDQuNTM4Nzk0NTlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQzNzkzOTAwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipUcmFjaW5nIHRoZSBJbml0aWFsaXphdGlvbiBvZiBtdDc5Mnhfd2lwaHkqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgbXQ3OTJ4X3dpcGh5YCBpcyBpbml0aWFsaXplZC4gTXkgZmlyc3Qgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHRoZSBjYWxsIGNoYWluLCB3aGVyZSBkb2VzIHRoZSBgbXQ3OTJ4X2luaXRfd2lwaHlgIGZ1bmN0aW9uIGNvbWUgaW50byBwbGF5PyBJIG5lZWQgdG8gZmluZCBhbGwgdGhlIHBsYWNlcyBpdCdzIGFjdHVhbGx5IGludm9rZWQuIEtub3dpbmcgdGhlIHBvaW50cyBvZiBlbnRyeSB3aWxsIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBhbmQgdGhlIGJyb2FkZXIgc3lzdGVtIGJlaGF2aW9yIHRoYXQgcmVsaWVzIG9uIGl0LiBJIG5lZWQgdG8gbG9jYXRlIGFsbCByZWZlcmVuY2VzIHRvIHRoYXQgZnVuY3Rpb24uIFRpbWUgdG8gc3RhcnQgc2VhcmNoaW5nIHRoZSBjb2RlIGJhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1ODU2LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDI6NDYuOTc2NzM2NDQ5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDk3NDM4MjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyeF9pbml0X3dpcGh5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYz0xNzA9aW50IG10NzkyMV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0yMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjIyNzpcXHRyZXQgPSBtdDc5MnhfaW5pdF93aXBoeShodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIyOC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jPTI0Mz1pbnQgbXQ3OTI1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6Mjk4OlxcdHJldCA9IG10NzkyeF9pbml0X3dpcGh5KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjk5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oPTUyMT1pbnQgbXQ3OTJ4X3BtX2lkbGVfdGltZW91dF9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg6NTIyOmludCBtdDc5MnhfaW5pdF93aXBoeShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC01MjMtc3RydWN0IGllZWU4MDIxMV9vcHMgKlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jPTc0OD1FWFBPUlRfU1lNQk9MX0dQTChtdDc5Mnhfc2V0X2NvdmVyYWdlX2NsYXNzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmMtNzQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYzo3NTA6aW50IG10NzkyeF9pbml0X3dpcGh5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYy03NTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jLTg1Ni19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jOjg1NzpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MnhfaW5pdF93aXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jLTg1OC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDI6NDguNDc0MTk2NjA4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ2MDk5MDgwODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgbXQ3OTIxYCBEcml2ZXIgUmVnaXN0cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoZSBgbXQ3OTIxYCBkcml2ZXIgZ2V0cyBpbml0aWFsaXplZC4gVGhlIGNvcmUgZnVuY3Rpb24gaGVyZSwgYG10NzkyMV9yZWdpc3Rlcl9kZXZpY2VgLCBpcyB0cmlnZ2VyZWQgYmFzZWQgb24gdGhlIGJ1cyB0eXBlOiBVU0IgKGBtdDc5MjF1YCksIFBDSWUgKGBtdDc5MjFlYCksIG9yIFNESU8gKGBtdDc5MjFzYCkuIE5vdywgSSdtIGdldHRpbmcgYSBsaXR0bGUgY3VyaW91cyBhYm91dCB0aGUgZnV6emluZyBwb3RlbnRpYWwuIFNwZWNpZmljYWxseSwgSSdtIHdvbmRlcmluZyBpZiBhIFVTQi1iYXNlZCBwcm9iZSB1c2luZyBgbXQ3OTIxdWAgY291bGQgYmUgYSB2aWFibGUgdGFyZ2V0IGZvciBmdXp6aW5nLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBVU0IgaW1wbGVtZW50YXRpb24gdG8gYXNzZXNzIHRoZSBhdHRhY2sgc3VyZmFjZS4gVGltZSB0byBkaXZlIGludG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jYCBhbmQgc2VlIHdoYXQncyBoYXBwZW5pbmcgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2Nzc4LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQyOjUzLjA4NDEwNzc5NloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTA3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyOTAsXG4gIFwiTGluZUNvdW50XCI6IDY1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyOTA6XFx0XFxuIDI5MTpcXHRzdGF0aWMgaW50IG10NzkyMXVfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbiAyOTI6XFx0e1xcbiAyOTM6XFx0XFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XFxuIDI5NDpcXHRcXHRzdHJ1Y3QgbXQ3Nl9jb25uYWNfcG0gKnBtID0gXFx1MDAyNmRldi1cXHUwMDNlcG07XFxuIDI5NTpcXHRcXHRib29sIHJlaW5pdCA9IHRydWU7XFxuIDI5NjpcXHRcXHRpbnQgZXJyLCBpO1xcbiAyOTc6XFx0XFxuIDI5ODpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgMTA7IGkrKykge1xcbiAyOTk6XFx0XFx0XFx0dTMyIHZhbCA9IG10NzZfcnIoZGV2LCBNVF9XRl9TV19ERUZfQ1JfVVNCX01DVV9FVkVOVCk7XFxuIDMwMDpcXHRcXG4gMzAxOlxcdFxcdFxcdGlmICghKHZhbCBcXHUwMDI2IE1UX1dGX1NXX1NFUl9UUklHR0VSX1NVU1BFTkQpKSB7XFxuIDMwMjpcXHRcXHRcXHRcXHRyZWluaXQgPSBmYWxzZTtcXG4gMzAzOlxcdFxcdFxcdFxcdGJyZWFrO1xcbiAzMDQ6XFx0XFx0XFx0fVxcbiAzMDU6XFx0XFx0XFx0aWYgKHZhbCBcXHUwMDI2IE1UX1dGX1NXX1NFUl9ET05FX1NVU1BFTkQpIHtcXG4gMzA2OlxcdFxcdFxcdFxcdG10NzZfd3IoZGV2LCBNVF9XRl9TV19ERUZfQ1JfVVNCX01DVV9FVkVOVCwgMCk7XFxuIDMwNzpcXHRcXHRcXHRcXHRicmVhaztcXG4gMzA4OlxcdFxcdFxcdH1cXG4gMzA5OlxcdFxcbiAzMTA6XFx0XFx0XFx0bXNsZWVwKDIwKTtcXG4gMzExOlxcdFxcdH1cXG4gMzEyOlxcdFxcbiAzMTM6XFx0XFx0aWYgKHJlaW5pdCB8fCBtdDc5MnhfZG1hX25lZWRfcmVpbml0KGRldikpIHtcXG4gMzE0OlxcdFxcdFxcdGVyciA9IG10NzkyeHVfZG1hX2luaXQoZGV2LCB0cnVlKTtcXG4gMzE1OlxcdFxcdFxcdGlmIChlcnIpXFxuIDMxNjpcXHRcXHRcXHRcXHRnb3RvIGZhaWxlZDtcXG4gMzE3OlxcdFxcdH1cXG4gMzE4OlxcdFxcbiAzMTk6XFx0XFx0ZXJyID0gbXQ3NnVfcmVzdW1lX3J4KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbiAzMjA6XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIDMyMTpcXHRcXHRcXHRnb3RvIGZhaWxlZDtcXG4gMzIyOlxcdFxcbiAzMjM6XFx0XFx0ZXJyID0gbXQ3Nl9jb25uYWNfbWN1X3NldF9oaWZfc3VzcGVuZChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBmYWxzZSwgdHJ1ZSk7XFxuIDMyNDpcXHRmYWlsZWQ6XFxuIDMyNTpcXHRcXHRwbS1cXHUwMDNlc3VzcGVuZGVkID0gZmFsc2U7XFxuIDMyNjpcXHRcXG4gMzI3OlxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbiAzMjg6XFx0XFx0XFx0bXQ3OTJ4X3Jlc2V0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbiAzMjk6XFx0XFxuIDMzMDpcXHRcXHRyZXR1cm4gZXJyO1xcbiAzMzE6XFx0fVxcbiAzMzI6XFx0I2VuZGlmIC8qIENPTkZJR19QTSAqL1xcbiAzMzM6XFx0XFxuIDMzNDpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgbXQ3OTIxdV9kZXZpY2VfdGFibGUpO1xcbiAzMzU6XFx0TU9EVUxFX0ZJUk1XQVJFKE1UNzkyMV9GSVJNV0FSRV9XTSk7XFxuIDMzNjpcXHRNT0RVTEVfRklSTVdBUkUoTVQ3OTIxX1JPTV9QQVRDSCk7XFxuIDMzNzpcXHRcXG4gMzM4OlxcdHN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc5MjF1X2RyaXZlciA9IHtcXG4gMzM5OlxcdFxcdC5uYW1lXFx0XFx0PSBLQlVJTERfTU9ETkFNRSxcXG4gMzQwOlxcdFxcdC5pZF90YWJsZVxcdD0gbXQ3OTIxdV9kZXZpY2VfdGFibGUsXFxuIDM0MTpcXHRcXHQucHJvYmVcXHRcXHQ9IG10NzkyMXVfcHJvYmUsXFxuIDM0MjpcXHRcXHQuZGlzY29ubmVjdFxcdD0gbXQ3OTJ4dV9kaXNjb25uZWN0LFxcbiAzNDM6XFx0I2lmZGVmIENPTkZJR19QTVxcbiAzNDQ6XFx0XFx0LnN1c3BlbmRcXHQ9IG10NzkyMXVfc3VzcGVuZCxcXG4gMzQ1OlxcdFxcdC5yZXN1bWVcXHRcXHQ9IG10NzkyMXVfcmVzdW1lLFxcbiAzNDY6XFx0XFx0LnJlc2V0X3Jlc3VtZVxcdD0gbXQ3OTIxdV9yZXN1bWUsXFxuIDM0NzpcXHQjZW5kaWYgLyogQ09ORklHX1BNICovXFxuIDM0ODpcXHRcXHQuc29mdF91bmJpbmRcXHQ9IDEsXFxuIDM0OTpcXHRcXHQuZGlzYWJsZV9odWJfaW5pdGlhdGVkX2xwbSA9IDEsXFxuIDM1MDpcXHR9O1xcbiAzNTE6XFx0bW9kdWxlX3VzYl9kcml2ZXIobXQ3OTIxdV9kcml2ZXIpO1xcbiAzNTI6XFx0XFxuIDM1MzpcXHRNT0RVTEVfREVTQ1JJUFRJT04oXFxcIk1lZGlhVGVrIE1UNzkyMVUgKFVTQikgd2lyZWxlc3MgZHJpdmVyXFxcIik7XFxuIDM1NDpcXHRNT0RVTEVfQVVUSE9SKFxcXCJMb3JlbnpvIEJpYW5jb25pIFxcdTAwM2Nsb3JlbnpvQGtlcm5lbC5vcmdcXHUwMDNlXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQyOjUzLjA4NDE5NDUyNloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzg5NjgwOTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgbXQ3OTIxdV9wcm9iZWAgZnVuY3Rpb24uLi5cblxuKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgYG10NzkyMXVfcHJvYmVgKipcblxuQWxyaWdodCwgSSdtIGxvb2tpbmcgYXQgYG10NzkyMXVfcHJvYmVgLiBUaGF0IG5hbWluZyBjb252ZW50aW9uIHN1Z2dlc3RzIHRoaXMgaXMgbGlrZWx5IHRoZSBwcm9iZSBmdW5jdGlvbiBmb3IgYSBNZWRpYVRlayBNVDc5MjFVLWJhc2VkIFVTQiBkZXZpY2UuICBHaXZlbiBteSBleHBlcmllbmNlIHdpdGggc2ltaWxhciBkcml2ZXJzLCBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgYSBmZXcga2V5IHRoaW5ncyBJJ2xsIGJlIGxvb2tpbmcgZm9yLiBJIGV4cGVjdCB0byBzZWUgdGhlIHR5cGljYWwgVVNCIGRldmljZSBpbml0aWFsaXphdGlvbiBmbG93OiAgZGV2aWNlIGRlc2NyaXB0b3IgYWNxdWlzaXRpb24sIGVuZHBvaW50IGNvbmZpZ3VyYXRpb24sIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCwgaWRlYWxseSwgc29tZSBzb3J0IG9mIHNhbml0eSBjaGVjayB0byBlbnN1cmUgdGhlIFVTQiBkZXZpY2UgaXMgYWN0dWFsbHkgYSBjb21wYXRpYmxlIE1UNzkyMVUgdmFyaWFudCBhbmQgaXNuJ3Qgc29tZXRoaW5nIG1hc3F1ZXJhZGluZyBhcyBvbmUuICBUaGVyZSdzIGFsc28gZ29pbmcgdG8gYmUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgZGV2aWNlLXNwZWNpZmljIHJlZ2lzdGVycy4gSSdsbCBleHBlY3QgdG8gc2VlIHRoaXMgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAgdGhlIG5lY2Vzc2FyeSB3b3JrcXVldWVzLCBpbml0aWFsaXppbmcgbXV0ZXhlcyBvciBzcGlubG9ja3MgZm9yIGNvbmN1cnJlbnQgYWNjZXNzIGlmIG5lY2Vzc2FyeS4gSG9wZWZ1bGx5LCB0aGV5IGhhdmVuJ3QgZm9yZ290dGVuIGVycm9yIGhhbmRsaW5nIOKAkyBnb29kIHByb2JlIGZ1bmN0aW9ucyBhcmUgcmVzaWxpZW50LiBJJ20ga2VlbiB0byBvYnNlcnZlIGhvdyB0aGV5IGhhbmRsZSBwb3RlbnRpYWwgZmFpbHVyZSBzY2VuYXJpb3MgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBsaWtlIFVTQiB0cmFuc2ZlciBlcnJvcnMgb3IgaGFyZHdhcmUgbWFsZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODE3MSwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDI6NTUuNDczODc3NzY5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4MzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIzMCxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIzMDpcXHRcXHRyZXQgPSBtdDc2dV9hbGxvY19tY3VfcXVldWUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuIDIzMTpcXHRcXHRpZiAocmV0KVxcbiAyMzI6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4gMjMzOlxcdFxcbiAyMzQ6XFx0XFx0cmV0ID0gbXQ3NnVfYWxsb2NfcXVldWVzKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbiAyMzU6XFx0XFx0aWYgKHJldClcXG4gMjM2OlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDIzNzpcXHRcXG4gMjM4OlxcdFxcdHJldCA9IG10NzkyeHVfZG1hX2luaXQoZGV2LCBmYWxzZSk7XFxuIDIzOTpcXHRcXHRpZiAocmV0KVxcbiAyNDA6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4gMjQxOlxcdFxcbiAyNDI6XFx0XFx0aHcgPSBtdDc2X2h3KGRldik7XFxuIDI0MzpcXHRcXHQvKiBjaGVjayBodyBzZyBzdXBwb3J0IGluIG9yZGVyIHRvIGVuYWJsZSBBTVNEVSAqL1xcbiAyNDQ6XFx0XFx0aHctXFx1MDAzZW1heF90eF9mcmFnbWVudHMgPSBtZGV2LVxcdTAwM2V1c2Iuc2dfZW4gPyBNVF9IV19UWFBfTUFYX0JVRl9OVU0gOiAxO1xcbiAyNDU6XFx0XFxuIDI0NjpcXHRcXHRyZXQgPSBtdDc5MjFfcmVnaXN0ZXJfZGV2aWNlKGRldik7XFxuIDI0NzpcXHRcXHRpZiAocmV0KVxcbiAyNDg6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4gMjQ5OlxcdFxcbiAyNTA6XFx0XFx0cmV0dXJuIDA7XFxuIDI1MTpcXHRcXG4gMjUyOlxcdGVycm9yOlxcbiAyNTM6XFx0XFx0bXQ3NnVfcXVldWVzX2RlaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4gMjU0OlxcdFxcdG10NzkyeHVfcmVzZXRfd29ya19jbGVhbnVwKGRldik7XFxuIDI1NTpcXHRcXG4gMjU2OlxcdFxcdHVzYl9zZXRfaW50ZmRhdGEodXNiX2ludGYsIE5VTEwpO1xcbiAyNTc6XFx0XFxuIDI1ODpcXHRcXHRtdDc2X2ZyZWVfZGV2aWNlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbiAyNTk6XFx0XFxuIDI2MDpcXHRcXHRyZXR1cm4gcmV0O1xcbiAyNjE6XFx0fVxcbiAyNjI6XFx0XFxuIDI2MzpcXHQjaWZkZWYgQ09ORklHX1BNXFxuIDI2NDpcXHRzdGF0aWMgaW50IG10NzkyMXVfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IHN0YXRlKVxcbiAyNjU6XFx0e1xcbiAyNjY6XFx0XFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XFxuIDI2NzpcXHRcXHRzdHJ1Y3QgbXQ3Nl9jb25uYWNfcG0gKnBtID0gXFx1MDAyNmRldi1cXHUwMDNlcG07XFxuIDI2ODpcXHRcXHRpbnQgZXJyO1xcbiAyNjk6XFx0XFxuIDI3MDpcXHRcXHRwbS1cXHUwMDNlc3VzcGVuZGVkID0gdHJ1ZTtcXG4gMjcxOlxcdFxcdGZsdXNoX3dvcmsoXFx1MDAyNmRldi1cXHUwMDNlcmVzZXRfd29yayk7XFxuIDI3MjpcXHRcXG4gMjczOlxcdFxcdGVyciA9IG10NzZfY29ubmFjX21jdV9zZXRfaGlmX3N1c3BlbmQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgdHJ1ZSwgdHJ1ZSk7XFxuIDI3NDpcXHRcXHRpZiAoZXJyKVxcbiAyNzU6XFx0XFx0XFx0Z290byBmYWlsZWQ7XFxuIDI3NjpcXHRcXG4gMjc3OlxcdFxcdG10NzZ1X3N0b3BfcngoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuIDI3ODpcXHRcXHRtdDc2dV9zdG9wX3R4KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbiAyNzk6XFx0XFxuIDI4MDpcXHRcXHRyZXR1cm4gMDtcXG4gMjgxOlxcdFxcbiAyODI6XFx0ZmFpbGVkOlxcbiAyODM6XFx0XFx0cG0tXFx1MDAzZXN1c3BlbmRlZCA9IGZhbHNlO1xcbiAyODQ6XFx0XFxuIDI4NTpcXHRcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4gMjg2OlxcdFxcdFxcdG10NzkyeF9yZXNldChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4gMjg3OlxcdFxcbiAyODg6XFx0XFx0cmV0dXJuIGVycjtcXG4gMjg5OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDI6NTUuNDczOTU3NDQ5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzNjA4MjAyMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEaXZpbmcgRGVlcGVyIGludG8gdGhlIG10NzkyMXUgUHJvYmUqKlxuXG5BbHJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IHRoZSByZW1haW5kZXIgb2YgdGhlIGBtdDc5MjF1X3Byb2JlYCBmdW5jdGlvbi4gSSBhbHJlYWR5IGhhdmUgYSBkZWNlbnQgZ3Jhc3Agb2YgdGhlIG92ZXJhbGwgZHJpdmVyIGFyY2hpdGVjdHVyZSBmb3IgdGhpcyBNZWRpYVRlayBjaGlwLCBhbmQgSSd2ZSBwcm9iYWJseSBhbHJlYWR5IGlkZW50aWZpZWQga2V5IGFzcGVjdHMgb2YgdGhlIGZ1bmN0aW9uJ3MgaW5pdGlhbCBzZXR1cC4gTm93LCBJJ20gdGhpbmtpbmcsIFwiTGV0J3MgZGlnIGluIGFuZCBleGFtaW5lIHRoZSBuaXR0eS1ncml0dHkgZGV0YWlscyBvZiBob3cgdGhpcyBmdW5jdGlvbiBzZXRzIHVwIHRoZSBVU0IgZGV2aWNlLlwiIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgaGFyZHdhcmUgaXMgaW5pdGlhbGl6ZWQsIGhvdyB0aGUgZGV2aWNlIGlzIGNvbmZpZ3VyZWQsIGFuZCB3aGF0IHJlc291cmNlcyBhcmUgYWxsb2NhdGVkLiBXaGF0IGVycm9yIGhhbmRsaW5nIGlzIHByZXNlbnQ/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgYXJlYXMgaW4gdGhlIGluaXRpYWwgcHJvYmluZyBzZXF1ZW5jZT8gSSdtIHByb2JhYmx5IG1lbnRhbGx5IGNoZWNraW5nIGZvciB0aGluZ3MgbGlrZSBETUEgc2V0dXAsIGVuZHBvaW50IGluaXRpYWxpemF0aW9uLCBhbmQgdGhlIHJlZ2lzdHJhdGlvbiBvZiBpbnRlcnJ1cHQgaGFuZGxlcnMuIEknbSBhbHNvIGxvb2tpbmcgZm9yIGFueSBlYXJseSBpbmRpY2F0aW9ucyBvZiBwb3dlciBtYW5hZ2VtZW50IGNvbmZpZ3VyYXRpb24gb3IgZmlybXdhcmUgbG9hZGluZyBwcm9jZWR1cmVzLiBUaGlzIFwicmVzdCBvZiBgbXQ3OTIxdV9wcm9iZWBcIiBpcyBjcml0aWNhbCwgYmVjYXVzZSBpdCdzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQuIEl0J3MgdGhlIGxhdW5jaHBhZCBmb3IgdGhlIGVudGlyZSBkZXZpY2Ugb3BlcmF0aW9uLCBhbmQgYW55IG1pc3Rha2VzIGhlcmUgd2lsbCBjYXNjYWRlIGludG8gbWFqb3IgcHJvYmxlbXMgbGF0ZXIgb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHByb2JlIGVzdGFibGlzaGVzIGEgc29saWQgZm91bmRhdGlvbiBmb3IgZXZlcnl0aGluZyB0aGF0IGZvbGxvd3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MzMwLCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwNDo0Mjo1Ny44MzQ3ODAxNTRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxNjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4MCxcbiAgXCJMaW5lQ291bnRcIjogNTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE4MDpcXHRcXHRcXHQucmVhZF9jb3B5ID0gbXQ3NnVfcmVhZF9jb3B5LFxcbiAxODE6XFx0XFx0XFx0LndyaXRlX2NvcHkgPSBtdDc5Mnh1X2NvcHksXFxuIDE4MjpcXHRcXHRcXHQudHlwZSA9IE1UNzZfQlVTX1VTQixcXG4gMTgzOlxcdFxcdH07XFxuIDE4NDpcXHRcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYodXNiX2ludGYpO1xcbiAxODU6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9vcHMgKm9wcztcXG4gMTg2OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xcbiAxODc6XFx0XFx0c3RydWN0IG10NzkyeF9kZXYgKmRldjtcXG4gMTg4OlxcdFxcdHN0cnVjdCBtdDc2X2RldiAqbWRldjtcXG4gMTg5OlxcdFxcdHU4IGZlYXR1cmVzO1xcbiAxOTA6XFx0XFx0aW50IHJldDtcXG4gMTkxOlxcdFxcbiAxOTI6XFx0XFx0b3BzID0gbXQ3OTJ4X2dldF9tYWM4MDIxMV9vcHMoXFx1MDAyNnVzYl9pbnRmLVxcdTAwM2VkZXYsIFxcdTAwMjZtdDc5MjFfb3BzLFxcbiAxOTM6XFx0XFx0XFx0XFx0XFx0ICAgICAgKHZvaWQgKilpZC1cXHUwMDNlZHJpdmVyX2luZm8sIFxcdTAwMjZmZWF0dXJlcyk7XFxuIDE5NDpcXHRcXHRpZiAoIW9wcylcXG4gMTk1OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAxOTY6XFx0XFxuIDE5NzpcXHRcXHRvcHMtXFx1MDAzZXN0b3AgPSBtdDc5Mnh1X3N0b3A7XFxuIDE5ODpcXHRcXHRtZGV2ID0gbXQ3Nl9hbGxvY19kZXZpY2UoXFx1MDAyNnVzYl9pbnRmLVxcdTAwM2VkZXYsIHNpemVvZigqZGV2KSwgb3BzLCBcXHUwMDI2ZHJ2X29wcyk7XFxuIDE5OTpcXHRcXHRpZiAoIW1kZXYpXFxuIDIwMDpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMjAxOlxcdFxcbiAyMDI6XFx0XFx0ZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MnhfZGV2LCBtdDc2KTtcXG4gMjAzOlxcdFxcdGRldi1cXHUwMDNlZndfZmVhdHVyZXMgPSBmZWF0dXJlcztcXG4gMjA0OlxcdFxcdGRldi1cXHUwMDNlaGlmX29wcyA9IFxcdTAwMjZoaWZfb3BzO1xcbiAyMDU6XFx0XFx0YXRvbWljX3NldChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LmJ1c19odW5nLCBmYWxzZSk7XFxuIDIwNjpcXHRcXHRtdDc5Mnh1X3Jlc2V0X3dvcmtfaW5pdChkZXYpO1xcbiAyMDc6XFx0XFxuIDIwODpcXHRcXHR1c2JfcmVzZXRfZGV2aWNlKHVkZXYpO1xcbiAyMDk6XFx0XFxuIDIxMDpcXHRcXHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBkZXYpO1xcbiAyMTE6XFx0XFxuIDIxMjpcXHRcXHRyZXQgPSBfX210NzZ1X2luaXQobWRldiwgdXNiX2ludGYsIFxcdTAwMjZidXNfb3BzKTtcXG4gMjEzOlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiAyMTQ6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4gMjE1OlxcdFxcbiAyMTY6XFx0XFx0bWRldi1cXHUwMDNlcmV2ID0gKG10NzZfcnIoZGV2LCBNVF9IV19DSElQSUQpIFxcdTAwM2NcXHUwMDNjIDE2KSB8XFxuIDIxNzpcXHRcXHRcXHQgICAgKG10NzZfcnIoZGV2LCBNVF9IV19SRVYpIFxcdTAwMjYgMHhmZik7XFxuIDIxODpcXHRcXHRkZXZfZGJnKG1kZXYtXFx1MDAzZWRldiwgXFxcIkFTSUMgcmV2aXNpb246ICUwNHhcXFxcblxcXCIsIG1kZXYtXFx1MDAzZXJldik7XFxuIDIxOTpcXHRcXG4gMjIwOlxcdFxcdGlmIChtdDc2X2dldF9maWVsZChkZXYsIE1UX0NPTk5fT05fTUlTQywgTVRfVE9QX01JU0MyX0ZXX045X1JEWSkpIHtcXG4gMjIxOlxcdFxcdFxcdHJldCA9IG10NzkyeHVfd2ZzeXNfcmVzZXQoZGV2KTtcXG4gMjIyOlxcdFxcdFxcdGlmIChyZXQpXFxuIDIyMzpcXHRcXHRcXHRcXHRnb3RvIGVycm9yO1xcbiAyMjQ6XFx0XFx0fVxcbiAyMjU6XFx0XFxuIDIyNjpcXHRcXHRyZXQgPSBtdDc5Mnh1X21jdV9wb3dlcl9vbihkZXYpO1xcbiAyMjc6XFx0XFx0aWYgKHJldClcXG4gMjI4OlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDIyOTpcXHRcXG4gMjMwOlxcdFxcdHJldCA9IG10NzZ1X2FsbG9jX21jdV9xdWV1ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4gMjMxOlxcdFxcdGlmIChyZXQpXFxuIDIzMjpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbiAyMzM6XFx0XFxuIDIzNDpcXHRcXHRyZXQgPSBtdDc2dV9hbGxvY19xdWV1ZXMoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQyOjU3LjgzNDkwMzM4NFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozOTA4MDk0MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqS2NvbmZpZyBJbnNwZWN0aW9uIGZvciBtdDc2IGFuZCBtdDc5MjEqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW4uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIHVwLXRvLWRhdGUgb24gdGhlIGNvbmZpZ3VyYXRpb25zIGZvciB0aG9zZSBNVEsgd2lyZWxlc3MgZHJpdmVycy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgcmVsYXRlZCB0byBgbXQ3NmAgYW5kIGBtdDc5MjFgLiBUaGVzZSBLY29uZmlnIGZpbGVzIGFyZSB0aGUgaGVhcnQgb2YgdGhlIGtlcm5lbCdzIGNvbmZpZ3VyYXRpb24gc3lzdGVtLiBUaGV5IGRlZmluZSB0aGUgYnVpbGQgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgaGVscCB0ZXh0IHRoYXQgZGV0ZXJtaW5lIHdoZXRoZXIgYSBwYXJ0aWN1bGFyIGRyaXZlciBvciBmZWF0dXJlIGlzIGVuYWJsZWQgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgZHJpdmVycyBhcmUgYmVpbmcgbWFuYWdlZCDigJMgYXJlIHRoZXkgbW9kdWxlcywgYnVpbHQtaW4sIG9yIG9wdGlvbmFsbHkgaW5jbHVkZWQ/IEFyZSB0aGVyZSBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mLCBwZXJoYXBzIG9uIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zIG9yIGJvYXJkIHN1cHBvcnQgcGFja2FnZXM/IEkgbmVlZCB0byBsb29rIGZvciBhbnkgZGVmYXVsdCBzZXR0aW5ncyB0aGF0IG1pZ2h0IGltcGFjdCBteSBjdXJyZW50IHByb2plY3Qgb3IgYW55IHBvdGVudGlhbCBjb25mbGljdHMuIEkgYWxzbyBoYXZlIHRvIGtlZXAgYW4gZXllIG91dCBmb3IgYW55IHJlY2VudCBjaGFuZ2VzIG9yIGFkZGl0aW9ucyB0aGF0IG1heSBoYXZlIGJlZW4gaW50cm9kdWNlZCBpbiB1cHN0cmVhbSBrZXJuZWxzLiBUaGlzIGlzIGFib3V0IG1ha2luZyBzdXJlIGV2ZXJ5dGhpbmcgd2lsbCB3b3JrIGFzIGV4cGVjdGVkIHdpdGggbXkgdGFyZ2V0IGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNjMzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwNDo0MzowMS43NDMwMDA0MDRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NTkwNDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNVDc2fGNvbmZpZyBNVDc5MlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyOmNvbmZpZyBNVDc2X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjY6Y29uZmlnIE1UNzZfTEVEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy03LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MTI6Y29uZmlnIE1UNzZfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTEzLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjE2OmNvbmZpZyBNVDc2X1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTctXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MjA6Y29uZmlnIE1UNzZ4MDJfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTIxLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjI0OmNvbmZpZyBNVDc2eDAyX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yNS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyODpjb25maWcgTVQ3Nl9DT05OQUNfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI5LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjMyOmNvbmZpZyBNVDc5MnhfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMzLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjM2OmNvbmZpZyBNVDc5MnhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTM3LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjQwOmNvbmZpZyBNVDc2X05QVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy00MS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWc6Mjpjb25maWcgTVQ3NjAzRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NjAzRSAoUENJZSkgYW5kIE1UNzZ4OCBXTEFOIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzozOmNvbmZpZyBNVDc2MTVfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy00LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzo4OmNvbmZpZyBNVDc2MTVFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy05LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2MTVFIGFuZCBNVDc2NjNFIChQQ0llKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjIxOmNvbmZpZyBNVDc2MjJfV01BQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMjItXFx0Ym9vbCBcXFwiTVQ3NjIyIChTb0MpIFdNQUMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzozMjpjb25maWcgTVQ3NjYzX1VTQl9TRElPX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzozNjpjb25maWcgTVQ3NjYzVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzctXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzY2M1UgKFVTQikgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzo0Nzpjb25maWcgTVQ3NjYzU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctNDgtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzY2M1MgKFNESU8pIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZzoyOmNvbmZpZyBNVDc2eDBfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZzo2OmNvbmZpZyBNVDc2eDBVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2eDBVIChVU0IpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc6MTk6Y29uZmlnIE1UNzZ4MEVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2eDBFIChQQ0llKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWc6Mjpjb25maWcgTVQ3NngyX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy01LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWc6Njpjb25maWcgTVQ3NngyRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NngyRSAoUENJZSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZzoxODpjb25maWcgTVQ3NngyVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMTktXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzZ4MlUgKFVTQikgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI6Y29uZmlnIE1UNzkyMV9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyMUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTgtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyMUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6MTc6Y29uZmlnIE1UNzkyMVNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjFTIChTRElPKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI4OmNvbmZpZyBNVDc5MjFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yOS1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Mjpjb25maWcgTVQ3OTI1X0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Nzpjb25maWcgTVQ3OTI1RVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctOC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1RSAoUENJZSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoxOTpjb25maWcgTVQ3OTI1VVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMjAtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDM6MDEuODAxNTk1NjNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDA0MDA5ODUwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgbXQ3NiBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgaW5pdGlhbGl6YXRpb24gZmxvdyBvZiB0aGVzZSBtdDc2IGRyaXZlcnMsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgYG10NzZfcGh5X2luaXRgIGZ1bmN0aW9uLiBJdCBzZWVtcyBpdCdzIHRoZSBjb3JlIG9mIGJyaW5naW5nIHRoZSBoYXJkd2FyZSBvbmxpbmUsIGNhbGxlZCBieSBgbXQ3Nl9yZWdpc3Rlcl9waHlgIGFuZCBgbXQ3Nl9yZWdpc3Rlcl9kZXZpY2VgLiBUaGlzIG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IHRoZSBQSFkgaW5pdGlhbGl6YXRpb24gaXMgZnVuZGFtZW50YWwuIEFsbCB0aGUgbXQ3NiBkcml2ZXJzIEknbSBmYW1pbGlhciB3aXRoIOKAkyB0aGUgTVQ3NngwVSwgTVQ3NngyVSwgTVQ3NjYzVSwgTVQ3OTIxVSwgTVQ3OTI1VSBmYW1pbGllcyDigJMgdGhleSBhbGwgYnVpbGQgb24gdGhlIG10NzYgY29yZSwgc28gdGhpcyBhcHByb2FjaCBpcyBjb25zaXN0ZW50LlxuXG5Ob3csIGNvbnNpZGVyaW5nIHRoZSBjb250ZXh0IG9mIFVTQiBkZXZpY2UgYXR0YWNobWVudCwgc3BlY2lmaWNhbGx5IHdoZW4gd2UncmUgdXNpbmcgc29tZXRoaW5nIGxpa2Ugc3l6a2FsbGVyIGZvciBmdXp6aW5nLCBJJ20gdHJ5aW5nIHRvIHZpc3VhbGl6ZSB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3MuIFdpdGggYHN5el91c2JfY29ubmVjdGAgbGV2ZXJhZ2luZyB0aG9zZSBzcGVjaWZpYyB2ZW5kb3IvcHJvZHVjdCBJRHMgZm9yIG10NzZ4MHUsIG10NzZ4MnUsIGV0Yy4sIEkgbmVlZCB0byBhc2NlcnRhaW4gKmV4YWN0bHkqIGhvdyB0aGUgZGV2aWNlIHJlZ2lzdGVycyB3aXRoIG1hYzgwMjExIGFuZCBjZmc4MDIxMS4gVGhpcyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgc3Vic2VxdWVudCBiZWhhdmlvciB1bmRlciBmdXp6aW5nLlxuXG5IYW5nIG9uLiBUaGVyZSdzIGEgZmxhZyBiZWluZyBzZXQgd2l0aGluIGBtdDc2X3BoeV9pbml0YCwgbmFtZWx5OiBgd2lwaHktXHUwMDNlZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SIHwgTkw4MDIxMV9GRUFUVVJFX0FQX01PREVfQ0hBTl9XSURUSF9DSEFOR0U7YC4gVGhpcyBpbW1lZGlhdGVseSBmbGFncyBzb21ldGhpbmcgaW50ZXJlc3RpbmcuIEFuZCBpbiBgbXQ3OTJ4X2NvcmUuY2AgSSBzZWUgdGhlIGxpbmUgdGhhdCByZW1vdmVzIHRoZSBmbGFnIGBwaHktXHUwMDNlbXQ3Ni1cdTAwM2Vub19hY3RpdmVfbW9uaXRvciA9IHRydWVgLlxuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1JgICphY3R1YWxseSogZG9lcy4gSXQgd2FycmFudHMgYSBkZWVwIGRpdmUgaW50byB0aGUga2VybmVsLCBtYWM4MDIxMSwgY2ZnODAyMTEsIGFuZCB0aGUgbmw4MDIxMSBzdWJzeXN0ZW0uIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIGFuZCB1bmRlcnN0YW5kaW5nIHRoZSByb2xlIG9mIHRoaXMgZmVhdHVyZSBpcyBrZXkgdG8gYW50aWNpcGF0aW5nIGhvdyB0aGUgZHJpdmVyIHdpbGwgaGFuZGxlIG1vbml0b3JlZCB0cmFmZmljIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgYnJvYWRlciB3aXJlbGVzcyBzdGFjaywgZXNwZWNpYWxseSB1bmRlciBmdXp6aW5nIGNvbmRpdGlvbnMuIEkgbmVlZCB0byBiZSBzdXJlIHRoZSBtb25pdG9yIG1vZGUgaXNuJ3QgaW50ZXJmZXJpbmcgd2l0aCBvdXIgdGVzdCBzY2VuYXJpby5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM3NTEsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDM6MDUuODQxNjk3MDhaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1Mzc3NTcxMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9OTAzPXN0YXRpYyB2b2lkIGF0aDlrX3NldF9od19jYXBhYihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTkzMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjkzMzpcXHRody1cXHUwMDNld2lwaHktXFx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiB8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy05MzQtXFx0XFx0XFx0ICAgICAgIE5MODAyMTFfRkVBVFVSRV9BUF9NT0RFX0NIQU5fV0lEVEhfQ0hBTkdFIHxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz00Mjc9bXQ3Nl9waHlfaW5pdChzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSwgc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNDQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo0NDI6XFx0d2lwaHktXFx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiB8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTQ0My1cXHRcXHRcXHQgICBOTDgwMjExX0ZFQVRVUkVfQVBfTU9ERV9DSEFOX1dJRFRIX0NIQU5HRTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYwMXUvaW5pdC5jPTU3ND1pbnQgbXQ3NjAxdV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzYwMXVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2MDF1L2luaXQuYy02MTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS9pbml0LmM6NjExOlxcdHdpcGh5LVxcdTAwM2VmZWF0dXJlcyB8PSBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS9pbml0LmMtNjEyLVxcdHdpcGh5LVxcdTAwM2VpbnRlcmZhY2VfbW9kZXMgPSBCSVQoTkw4MDIxMV9JRlRZUEVfU1RBVElPTik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz01Njc0PXN0YXRpYyBpbnQgbWFjODAyMTFfaHdzaW1fbmV3X3JhZGlvKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01OTQzLVxcdGh3LVxcdTAwM2V3aXBoeS1cXHUwMDNlZmxhZ3MgfD0gV0lQSFlfRkxBR19JQlNTX1JTTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo1OTQ0OlxcdGh3LVxcdTAwM2V3aXBoeS1cXHUwMDNlZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SIHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01OTQ1LVxcdFxcdFxcdCAgICAgICBOTDgwMjExX0ZFQVRVUkVfQVBfTU9ERV9DSEFOX1dJRFRIX0NIQU5HRSB8XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oPTY3Mzk9ZW51bSBubDgwMjExX2FwX3NtZV9mZWF0dXJlcyB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTY3ODYtICpcXHRzdGlsbCBnZW5lcmF0ZWQgYnkgdGhlIGRyaXZlci5cXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oOjY3ODc6ICogQE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUjogVGhpcyBkcml2ZXIgc3VwcG9ydHMgYW4gYWN0aXZlIG1vbml0b3JcXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTY3ODgtICpcXHRpbnRlcmZhY2UuIEFuIGFjdGl2ZSBtb25pdG9yIGludGVyZmFjZSBiZWhhdmVzIGxpa2UgYSBub3JtYWwgbW9uaXRvclxcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaD02ODM2PWVudW0gbmw4MDIxMV9mZWF0dXJlX2ZsYWdzIHtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmgtNjg1My1cXHROTDgwMjExX0ZFQVRVUkVfVVNFUlNQQUNFX01QTVxcdFxcdFxcdD0gMSBcXHUwMDNjXFx1MDAzYyAxNixcXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oOjY4NTQ6XFx0Tkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SXFx0XFx0XFx0PSAxIFxcdTAwM2NcXHUwMDNjIDE3LFxcbmluY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmgtNjg1NS1cXHROTDgwMjExX0ZFQVRVUkVfQVBfTU9ERV9DSEFOX1dJRFRIX0NIQU5HRVxcdD0gMSBcXHUwMDNjXFx1MDAzYyAxOCxcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9NDkzND1zdGF0aWMgaW50IG5sODAyMTFfcGFyc2VfbW9uX29wdGlvbnMoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy00OTU4LVxcdGlmIChwYXJhbXMtXFx1MDAzZWZsYWdzIFxcdTAwMjYgTU9OSVRPUl9GTEFHX0FDVElWRSBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDk1OTpcXHQgICAgIShyZGV2LVxcdTAwM2V3aXBoeS5mZWF0dXJlcyBcXHUwMDI2IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUikpXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy00OTYwLVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDM6MDcuMzc5NDYxMjA2WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM5Mjc1NzA0NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIE1UNzkyMS9NVDc5MjUgQWN0aXZlIE1vbml0b3IgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2Ugd2UncmUgZW5hYmxpbmcgYE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUmAgZm9yIHRoZSBNVDc5MjEgYW5kIE1UNzkyNSBkZXZpY2VzLCBhbGxvd2luZyB1c2Vyc3BhY2UgY29udHJvbCBvZiBtb25pdG9yIGludGVyZmFjZXMgd2l0aCB0aGUgYE1PTklUT1JfRkxBR19BQ1RJVkVgIGZsYWcgdmlhIG5sODAyMTEuIFByZXZpb3VzbHksIHRoZSBgbm9fYWN0aXZlX21vbml0b3IgPSB0cnVlYCBzZXR0aW5nIGVmZmVjdGl2ZWx5IGJsb2NrZWQgdGhpcy4gSSByZWNhbGwgdGhhdCBgbXQ3Nl9waHlfaW5pdGAgd2FzIHdoZXJlIHRoaXMgd2FzIGhhbmRsZWQsIGJ1dCB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHdpcGh5IGluIGBtdDc5MnhfaW5pdF93aXBoeWAgd2FzIHNldHRpbmcgdGhpcyBmbGFnIHRvIHRydWUgYmVmb3JlIGBtdDc2X3BoeV9pbml0YCB3YXMgY2FsbGVkLiBUaGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guXG5cbk5vdywgSSBuZWVkIHRvIHZlcmlmeSBob3cgYG5vX2FjdGl2ZV9tb25pdG9yYCB3YXMgdXNlZCBwcmlvciB0byB0aGlzIGNoYW5nZS4gU2Nhbm5pbmcgYG1hYzgwMjExLmNgLCBJIHNlZSB0aGF0IGBtdDc2X3BoeV9pbml0YCB1c2VkIHRvIGNoZWNrIGBwaHktXHUwMDNlbm9fYWN0aXZlX21vbml0b3JgIGFuZCBvbmx5IGVuYWJsZSBgTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SYCBpZiBpdCB3YXMgZmFsc2UuIFRoZSBjaGFuZ2Ugbm93IHVuY29uZGl0aW9uYWxseSBhZGRzIGBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1JgLCBhbG9uZyB3aXRoIGBOTDgwMjExX0ZFQVRVUkVfQVBfTU9ERV9DSEFOX1dJRFRIX0NIQU5HRWAuIE9rYXksIHRoYXQncyBhIGtleSBkZXRhaWwg4oCTIHRoZSBmZWF0dXJlIGlzIG5vdyB1bmNvbmRpdGlvbmFsbHkgZW5hYmxlZC4gQW5kIGluIGBtdDc5MnhfY29yZS5jYCBhbmQgc3BlY2lmaWNhbGx5IGBtdDc5MnhfaW5pdF93aXBoeWAgSSBjYW4gY2xlYXJseSBzZWUgd2hlcmUgYHBoeS1cdTAwM2VtdDc2LVx1MDAzZW5vX2FjdGl2ZV9tb25pdG9yID0gdHJ1ZWAgd2FzIHNldC5cblxuVGhlIHF1ZXN0aW9uIHRoZW4gaXMsICp3aHkqIHdhcyBgbm9fYWN0aXZlX21vbml0b3JgIHNldCB0byB0cnVlIGluIHRoZSBmaXJzdCBwbGFjZSBmb3IgdGhlIE1UNzkyeCBzZXJpZXM/IE15IGh5cG90aGVzaXMgaXMgdGhhdCB0aGVzZSBjaGlwcyBlaXRoZXIgZGlkbid0IHN1cHBvcnQgYWN0aXZlIG1vbml0b3IsIG9yIHRoYXQgdGhleSBkaWQgYnV0IGl0IHdhc24ndCB5ZXQgZW5hYmxlZC4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgYWN0aXZlIG1vbml0b3IgaXMgYWN0dWFsbHkgc3VwcG9ydGVkIG5vdywgb3IgaWYgdGhpcyBjb21taXQgc2ltcGx5IGVuYWJsZXMgaXQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb21taXQgaGlzdG9yeSBvciBkbyBhIHF1aWNrIGdpdCBzZWFyY2ggd2l0aGluIHRoZSBtdDc2IHJlcG8gdG8gc2hlZCBzb21lIGxpZ2h0IG9uIHRoaXMuIFRoZSBoaXN0b3J5IHNob3VsZCB0ZWxsIG1lIGV4YWN0bHkgd2hlbiB0aGlzIGxpbWl0YXRpb24gd2FzIGludHJvZHVjZWQsIGFuZCBpZiBpdCB3YXMgbGlmdGVkIGR1ZSB0byBhIHNwZWNpZmljIGhhcmR3YXJlIGNoYW5nZSBvciBuZXcgZHJpdmVyIGNhcGFiaWxpdGllcy4gVGhhdCB3aWxsIGNvbmZpcm0gd2hhdCdzIHJlYWxseSBoYXBwZW5pbmcgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU3OTIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDM6MTEuMzA3MDM0NzY1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjAxNzk1NiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWN0aXZlX21vbml0b3JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDM6MTEuMzU5MDU5NDkxWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU4OTg4MDI3ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTVQ3Ni9NVDc5MnggVVNCIERyaXZlciBSZWFjaGFiaWxpdHkgQW5hbHlzaXMgZm9yIFN5emthbGxlcioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBpcyB0byBkZXRlcm1pbmUgaWYgdGhlIE1UNzYgYW5kIE1UNzkyeCBVU0IgZHJpdmVycyBhcmUgcmVhY2hhYmxlIGJ5IHN5emthbGxlci4gVGhlIGtleSBpcyB0aGF0IHN5emthbGxlciBjYW4gZW11bGF0ZSBVU0IgZGV2aWNlcyB1c2luZyBgc3l6X3VzYl9jb25uZWN0YCwgd2hpY2ggb2ZmZXJzIGEgcG90ZW50aWFsIGVudHJ5IHBvaW50LlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiB0aGVzZSBkcml2ZXJzIGFyZSBhY2Nlc3NpYmxlIHZpYSBhIHZpcnR1YWwgYnVzLCBzcGVjaWZpY2FsbHkgVVNCLCB3aXRoaW4gYSBzdGFuZGFyZCBzeXprYWxsZXIgZW52aXJvbm1lbnQuIFRoZSBwcmVzZW5jZSBvZiBgTVQ3Nl9DT1JFYCwgYE1UNzkyeF9MSUJgLCBgTVQ3OTIxVWAsIGBNVDc5MjVVYCwgYE1UNzZ4MFVgLCBgTVQ3NngyVWAsIGFuZCBgTVQ3NjYzVWAgcG9pbnRzIHRvIGEgcmVsZXZhbnQgZHJpdmVyIGxhbmRzY2FwZS5cblxuQSBxdWljayByZXZpZXcgb2YgYG10NzkyMXVfcHJvYmVgIGlzIGVzc2VudGlhbC4gVGhlIGRyaXZlciBpbml0aWFsaXplcyBhIGRldmljZSB2aWEgYG10NzkyeF9nZXRfbWFjODAyMTFfb3BzYCwgYWxsb2NhdGVzIG1lbW9yeSB1c2luZyBgbXQ3Nl9hbGxvY19kZXZpY2VgLCB0aGVuIGluaXRpYWxpemVzIHdpdGggYF9fbXQ3NnVfaW5pdGAuIFRoaXMgcHJvYmluZyBwcm9jZXNzIHRoZW4gaW50ZXJhY3RzIHdpdGggaGFyZHdhcmUgKGNoaXAgSUQsIHJldmlzaW9uKSBhbmQgaGFyZHdhcmUgcmVzb3VyY2VzLCB3aGljaCBzdWdnZXN0cyBhIGhhcmR3YXJlIGRlcGVuZGVuY2UgdGhhdCBuZWVkcyBjYXJlZnVsIGFuYWx5c2lzLiBJdCBhbHNvIGNhbGxzIGZ1bmN0aW9ucyBsaWtlIGBtdDc5Mnh1X21jdV9wb3dlcl9vbmAsIGBtdDc2dV9hbGxvY19tY3VfcXVldWVgLCBgbXQ3NnVfYWxsb2NfcXVldWVzYCwgYG10NzkyeHVfZG1hX2luaXRgLCBhbmQgZmluYWxseSByZWdpc3RlcnMgdGhlIGRldmljZSB2aWEgYG10NzkyMV9yZWdpc3Rlcl9kZXZpY2VgLiBUaGUgbGF0dGVyIGNhbGxzIGBtdDc5MnhfaW5pdF93aXBoeWAgYW5kIGBtdDc2X3JlZ2lzdGVyX2RldmljZWAsIGV2ZW50dWFsbHkgcmVhY2hpbmcgYG10NzZfcGh5X2luaXRgLlxuXG5UaGUgY3JpdGljYWwgcXVlc3Rpb24gaXMsIGRvZXMgdGhpcyByZWx5IG9uIGEgcmVhbCBVU0IgY29ubmVjdGlvbiwgb3IgaXMgaXQgYSB2aXJ0dWFsIGJ1cz8gVGhlIHJlbGV2YW50IGNyaXRlcmlhIGZvciBkZXRlcm1pbmluZyB3aGV0aGVyIHRoaXMgaXMgd29ydGggZnV6emluZyBhcmUgdGhlIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBjcml0ZXJpYS4gSW4gdGhlIHBvc2l0aXZlIGNyaXRlcmlhLCBkcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKGxpa2UgVVNCKSBhcmUgd29ydGggZnV6emluZy4gVGhlIG5lZ2F0aXZlIGNyaXRlcmlhIGdpdmUgZXhhbXBsZXMgb2Ygd2hhdCBpcyBub3Qgd29ydGggZnV6emluZywgc3VjaCBhcyB1bnJlYWNoYWJsZSBoYXJkd2FyZSwgdmVuZG9yLXNwZWNpZmljIGRldmljZXMsIGV0Yy5cblxuU2luY2UgVVNCIGlzIGEgdmlydHVhbCBidXMgaW4gdGhlIHN5emthbGxlciBjb250ZXh0IChsZXZlcmFnaW5nIGByYXdfZ2FkZ2V0YCAvIGB2aGNpYCksIGFuZCB0aGUgTVQ3NiBkcml2ZXJzIChgTVQ3NngwVWAsIGV0Yy4pIGFyZSBVU0IgZGV2aWNlIGRyaXZlcnMgaW4gdGhlIGtlcm5lbCwgSSBhbSBpbmNsaW5lZCB0byBjb25jbHVkZSB0aGF0IGl0IGlzIHJlYWNoYWJsZS4gVGhlIGZhY3QgdGhhdCBgbXQ3Nl9waHlfaW5pdGAgaXMgY2FsbGVkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gZm9yIGFsbCBNVDc2IGRldmljZXMsIGluY2x1ZGluZyB0aGUgVVNCIG9uZXMsIGFuZCBgbXQ3OTJ4X2luaXRfd2lwaHlgIGlzIGNhbGxlZCBmb3IgdGhlIE1UNzkyMS9NVDc5MjUgaW5jbHVkaW5nIFVTQiB2YXJpYW50cyBjb25maXJtcyBteSBhc3Nlc3NtZW50LiBGdXJ0aGVybW9yZSwgYWZ0ZXIgcmVnaXN0cmF0aW9uLCB0aGUgYGNmZzgwMjExIC8gbmw4MDIxMWAgaW50ZXJmYWNlcyBpbnRlcmFjdCB3aXRoIHRoZSB3aXBoeSBmZWF0dXJlcy5cblxuVGhlcmVmb3JlLCB0aGUgTVQ3NiAvIE1UNzkyeCBkcml2ZXJzIF9hcmVfIGxpa2VseSByZWFjaGFibGUgdmlhIFVTQiB3aXRoaW4gc3l6a2FsbGVyLlxuXG5UbyBjb25maXJtLCBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgYE1UNzZfQ09SRWAsIGBNVDc5MjFVYCwgZXRjLiwgYXJlIHN0YW5kYXJkIGRyaXZlcnMgKG5vdCBzb21lIHZlbmRvci1zcGVjaWZpYyBhYnN0cmFjdGlvbikgYnkgZXhhbWluaW5nIHRoZSBgS2NvbmZpZ2AgZmlsZXMgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ2AgYW5kIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY3MTIsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQzOjE3LjI1Nzg2NjIzNFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTQxMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0Y29uZmlnIE1UNzkyMV9DT01NT05cXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXHRzZWxlY3QgTVQ3OTJ4X0xJQlxcbiAgIDU6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICAgNjpcXHRcXG4gICA3OlxcdGNvbmZpZyBNVDc5MjFFXFxuICAgODpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxRSAoUENJZSkgc3VwcG9ydFxcXCJcXG4gICA5OlxcdFxcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXFxuICAxMDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAxMTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxRSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXFxuICAxNDpcXHRcXG4gIDE1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIE1UNzkyMVNcXG4gIDE4OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjFTIChTRElPKSBzdXBwb3J0XFxcIlxcbiAgMTk6XFx0XFx0c2VsZWN0IE1UNzZfU0RJT1xcbiAgMjA6XFx0XFx0c2VsZWN0IE1UNzkyMV9DT01NT05cXG4gIDIxOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDIyOlxcdFxcdGRlcGVuZHMgb24gTU1DXFxuICAyMzpcXHRcXHRoZWxwXFxuICAyNDpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjFTIDgwMi4xMWF4IDJ4MjoyU1Mgd2lyZWxlc3MgZGV2aWNlcy5cXG4gIDI1OlxcdFxcbiAgMjY6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiAgMjc6XFx0XFxuICAyODpcXHRjb25maWcgTVQ3OTIxVVxcbiAgMjk6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyMVUgKFVTQikgc3VwcG9ydFxcXCJcXG4gIDMwOlxcdFxcdHNlbGVjdCBNVDc5MnhfVVNCXFxuICAzMTpcXHRcXHRzZWxlY3QgTVQ3OTIxX0NPTU1PTlxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMzM6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gIDM0OlxcdFxcdGhlbHBcXG4gIDM1OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyMVUgODAyLjExYXggMngyOjJTUyB3aXJlbGVzcyBkZXZpY2VzLlxcbiAgMzY6XFx0XFxuICAzNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQzOjE3LjI1ODA2MzQ4M1oiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzc1MDE3MjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIE1lZGlhdGVrIFdpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVyIHNpdHVhdGlvbi4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGxvb2sgYXQgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSBhbGwgdGhlIGJ1aWxkIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhhdCBzcGVjaWZpYyBkcml2ZXIgc2hvdWxkIGJlIGRlZmluZWQuIEZyb20gdGhlIEtjb25maWcsIEkgY2FuIGRldGVybWluZSB3aGljaCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LCB3aGF0IG1vZHVsZXMgYXJlIGF2YWlsYWJsZSwgaG93IHRvIGVuYWJsZS9kaXNhYmxlIHNwZWNpZmljIGhhcmR3YXJlIHN1cHBvcnQsIGFuZCB3aGF0IG90aGVyIGtlcm5lbCBjb21wb25lbnRzIGl0IG1pZ2h0IGRlcGVuZCBvbi4gVGhpcyB3aWxsIGdpdmUgbWUgYSBzb2xpZCBiYXNlIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgZHJpdmVyIGlzIHN0cnVjdHVyZWQgYW5kIGhvdyB0byBjb250cm9sIGl0IGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy4gSXQncyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBkcml2ZXIgaW50ZWdyYXRlcyBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gS25vd2luZyBob3cgaXQncyBjb25maWd1cmVkIGlzIGtleSB0byBtYWtpbmcgYW55IHByb2dyZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTA3NCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDM6MTkuMDMzMDg0MTEyWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3NTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0Y29uZmlnIE1UNzZfQ09SRVxcbiAgIDM6XFx0XFx0dHJpc3RhdGVcXG4gICA0OlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE1UNzZfTEVEU1xcbiAgIDc6XFx0XFx0Ym9vbFxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcXG4gICA5OlxcdFxcdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IE1UNzZfQ09SRT1MRURTX0NMQVNTXFxuICAxMDpcXHRcXHRkZWZhdWx0IHlcXG4gIDExOlxcdFxcbiAgMTI6XFx0Y29uZmlnIE1UNzZfVVNCXFxuICAxMzpcXHRcXHR0cmlzdGF0ZVxcbiAgMTQ6XFx0XFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcXG4gIDE1OlxcdFxcbiAgMTY6XFx0Y29uZmlnIE1UNzZfU0RJT1xcbiAgMTc6XFx0XFx0dHJpc3RhdGVcXG4gIDE4OlxcdFxcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBNVDc2eDAyX0xJQlxcbiAgMjE6XFx0XFx0dHJpc3RhdGVcXG4gIDIyOlxcdFxcdHNlbGVjdCBNVDc2X0NPUkVcXG4gIDIzOlxcdFxcbiAgMjQ6XFx0Y29uZmlnIE1UNzZ4MDJfVVNCXFxuICAyNTpcXHRcXHR0cmlzdGF0ZVxcbiAgMjY6XFx0XFx0c2VsZWN0IE1UNzZfVVNCXFxuICAyNzpcXHRcXG4gIDI4OlxcdGNvbmZpZyBNVDc2X0NPTk5BQ19MSUJcXG4gIDI5OlxcdFxcdHRyaXN0YXRlXFxuICAzMDpcXHRcXHRzZWxlY3QgTVQ3Nl9DT1JFXFxuICAzMTpcXHRcXG4gIDMyOlxcdGNvbmZpZyBNVDc5MnhfTElCXFxuICAzMzpcXHRcXHR0cmlzdGF0ZVxcbiAgMzQ6XFx0XFx0c2VsZWN0IE1UNzZfQ09OTkFDX0xJQlxcbiAgMzU6XFx0XFxuICAzNjpcXHRjb25maWcgTVQ3OTJ4X1VTQlxcbiAgMzc6XFx0XFx0dHJpc3RhdGVcXG4gIDM4OlxcdFxcdHNlbGVjdCBNVDc2X1VTQlxcbiAgMzk6XFx0XFxuICA0MDpcXHRjb25maWcgTVQ3Nl9OUFVcXG4gIDQxOlxcdFxcdHRyaXN0YXRlXFxuICA0MjpcXHRcXHRkZXBlbmRzIG9uIE5FVF9BSVJPSEFfTlBVPXkgfHwgTVQ3Nl9DT1JFPU5FVF9BSVJPSEFfTlBVXFxuICA0MzpcXHRcXG4gIDQ0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZ1xcXCJcXG4gIDQ1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZ1xcXCJcXG4gIDQ2OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZ1xcXCJcXG4gIDQ3OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZ1xcXCJcXG4gIDQ4OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZ1xcXCJcXG4gIDQ5OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZ1xcXCJcXG4gIDUwOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDM6MTkuMDMzMTUzMDQyWiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3MzE2MjQzNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNZWRpYXRlayBXaXJlbGVzcyBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIHRoZSBoZWFydCBvZiB0aGUgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVyJ3MgY29uZmlndXJhdGlvbi4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGdldHRpbmcgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQncyBiZWVuIGRlZmluZWQgYW5kIGhvdyB0aGUgb3B0aW9ucyBhcmUgc3RydWN0dXJlZC4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBkZXBlbmRlbmNpZXMsIGRlZmF1bHRzLCBhbmQgYW55IHVudXN1YWwgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBiZSB3b3J0aCBmdXJ0aGVyIGludmVzdGlnYXRpb24uIEknbGwgbmVlZCB0byBzZWUgaG93IHRoZSBmZWF0dXJlcyBhcmUgZW5hYmxlZC9kaXNhYmxlZCBhdCBjb21waWxlIHRpbWUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdmFyaWFibGVzIGFyZSBnb2luZyB0byBiZSBzZXQgYnkgdGhlIGtlcm5lbCBidWlsZCwgYW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhvc2UgdmFyaWFibGVzIGZvciB0aGUgcGVyZm9ybWFuY2UgYW5kIHJvYnVzdG5lc3Mgb2YgdGhlIGRyaXZlci4gTGV0J3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIGluIHRoaXMgY29uZmlndXJhdGlvbiBmaWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDAxMCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDM6MjAuNzY0NzgwMjE0WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjA5NzI4NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTVQ3NlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRla1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDU5NDggbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTVQ3NjAxVSlcXHQrPSBtdDc2MDF1L1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX01UNzZfQ09SRSlcXHQrPSBtdDc2L1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjI6Y29uZmlnIE1UNzZfQ09SRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6Njpjb25maWcgTVQ3Nl9MRURTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTctXFx0Ym9vbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzo4OlxcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjk6XFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTVQ3Nl9DT1JFPUxFRFNfQ0xBU1NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTAtXFx0ZGVmYXVsdCB5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoxMjpjb25maWcgTVQ3Nl9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTMtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MTQ6XFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjE2OmNvbmZpZyBNVDc2X1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTctXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MTg6XFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjIwOmNvbmZpZyBNVDc2eDAyX0xJQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyMjpcXHRzZWxlY3QgTVQ3Nl9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyNDpjb25maWcgTVQ3NngwMl9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMjUtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MjY6XFx0c2VsZWN0IE1UNzZfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyODpjb25maWcgTVQ3Nl9DT05OQUNfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI5LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjMwOlxcdHNlbGVjdCBNVDc2X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTMyPWNvbmZpZyBNVDc5MnhfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMzLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjM0OlxcdHNlbGVjdCBNVDc2X0NPTk5BQ19MSUJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTM2PWNvbmZpZyBNVDc5MnhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTM3LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjM4OlxcdHNlbGVjdCBNVDc2X1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NDA6Y29uZmlnIE1UNzZfTlBVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTQxLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjQyOlxcdGRlcGVuZHMgb24gTkVUX0FJUk9IQV9OUFU9eSB8fCBNVDc2X0NPUkU9TkVUX0FJUk9IQV9OUFVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNDMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZToyOm9iai0kKENPTkZJR19NVDc2X0NPUkUpICs9IG10NzYub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTVQ3Nl9VU0IpICs9IG10NzYtdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX01UNzZfU0RJTykgKz0gbXQ3Ni1zZGlvLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX01UNzZ4MDJfTElCKSArPSBtdDc2eDAyLWxpYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19NVDc2eDAyX1VTQikgKz0gbXQ3NngwMi11c2Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfTVQ3Nl9DT05OQUNfTElCKSArPSBtdDc2LWNvbm5hYy1saWIub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtOC1vYmotJChDT05GSUdfTVQ3OTJ4X0xJQikgKz0gbXQ3OTJ4LWxpYi5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTExPW10NzYteSA6PSBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6MTU6aWZkZWYgQ09ORklHX01UNzZfTlBVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZToxNjojIENPTkZJR19NVDc2X05QVSBpcyB0cmlzdGF0ZSB0byBzaW1wbGlmeSBkZXBlbmRlbmN5IHRyYWNraW5nLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtMTctIyBidXQgaXQgYmVoYXZlcyBhcyBhIGJvb2wgc3ltYm9sIGhlcmUuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTQzPW10NzkyeC11c2IteSA6PSBtdDc5MnhfdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX01UNzZ4MF9DT01NT04pICs9IG10NzZ4MC9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjQ2Om9iai0kKENPTkZJR19NVDc2eDJfQ09NTU9OKSArPSBtdDc2eDIvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo0NzpvYmotJChDT05GSUdfTVQ3NjAzRSkgKz0gbXQ3NjAzL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6NDg6b2JqLSQoQ09ORklHX01UNzYxNV9DT01NT04pICs9IG10NzYxNS9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTQ5LW9iai0kKENPTkZJR19NVDc5MTVFKSArPSBtdDc5MTUvXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2NoYW5uZWwuYz0zMTk9dm9pZCBtdDc2X3JvY19jb21wbGV0ZShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvY2hhbm5lbC5jLTMyOS1cXHRpZiAocGh5LVxcdTAwM2VjaGFuY3R4IFxcdTAwMjZcXHUwMDI2IHBoeS1cXHUwMDNlbWFpbl9jaGFuZGVmLmNoYW4gXFx1MDAyNlxcdTAwMjYgcGh5LVxcdTAwM2VvZmZjaGFubmVsIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9jaGFubmVsLmM6MzMwOlxcdCAgICAhdGVzdF9iaXQoTVQ3Nl9NQ1VfUkVTRVQsIFxcdTAwMjZkZXYtXFx1MDAzZXBoeS5zdGF0ZSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2NoYW5uZWwuYy0zMzEtXFx0XFx0X19tdDc2X3NldF9jaGFubmVsKHBoeSwgXFx1MDAyNnBoeS1cXHUwMDNlbWFpbl9jaGFuZGVmLCBmYWxzZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2NoYW5uZWwuYy0zMzYtXFx0cGh5LVxcdTAwM2Vyb2NfbGluayA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9jaGFubmVsLmM6MzM3OlxcdGlmICghdGVzdF9iaXQoTVQ3Nl9NQ1VfUkVTRVQsIFxcdTAwMjZkZXYtXFx1MDAzZXBoeS5zdGF0ZSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9jaGFubmVsLmMtMzM4LVxcdFxcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKHBoeS1cXHUwMDNlaHcpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9jaGFubmVsLmM9MzYzPWludCBtdDc2X3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9jaGFubmVsLmMtMzgyLVxcdGlmIChwaHktXFx1MDAzZXJvY192aWYgfHwgZGV2LVxcdTAwM2VzY2FuLnBoeSA9PSBwaHkgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2NoYW5uZWwuYzozODM6XFx0ICAgIHRlc3RfYml0KE1UNzZfTUNVX1JFU0VULCBcXHUwMDI2ZGV2LVxcdTAwM2VwaHkuc3RhdGUpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9jaGFubmVsLmMtMzg0LVxcdFxcdHJldCA9IC1FQlVTWTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM9NjM0PW10NzZfZG1hX3R4X3F1ZXVlX3NrYl9yYXcoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlICpxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy02MzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzo2NDA6XFx0aWYgKHRlc3RfYml0KE1UNzZfTUNVX1JFU0VULCBcXHUwMDI2ZGV2LVxcdTAwM2VwaHkuc3RhdGUpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtNjQxLVxcdFxcdGdvdG8gZXJyb3I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTY2Nz1tdDc2X2RtYV90eF9xdWV1ZV9za2Ioc3RydWN0IG10NzZfcGh5ICpwaHksIHN0cnVjdCBtdDc2X3F1ZXVlICpxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy02ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzo2ODU6XFx0aWYgKHRlc3RfYml0KE1UNzZfUkVTRVQsIFxcdTAwMjZwaHktXFx1MDAzZXN0YXRlKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTY4Ni1cXHRcXHRnb3RvIGZyZWVfc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaC00LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmg6NTojaWZuZGVmIF9fTVQ3Nl9ETUFfSFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmg6NjojZGVmaW5lIF9fTVQ3Nl9ETUFfSFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmgtNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmg9NTI9bXQ3Nl9kbWFfaGFuZGxlX3JlYWQoc3RydWN0IG10NzZfcXVldWUgKnEsIHUzMiBvZmZzZXQsIHUzMiAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaC02MC0jZW5kaWZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oOjYxOiNpZiBJU19FTkFCTEVEKENPTkZJR19NVDc2X05QVSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oLTYyLVxcdGlmIChxLVxcdTAwM2VmbGFncyBcXHUwMDI2IE1UX1FGTEFHX05QVSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaD04MD1tdDc2X2RtYV9oYW5kbGVfd3JpdGUoc3RydWN0IG10NzZfcXVldWUgKnEsIHUzMiBvZmZzZXQsIHUzMiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oLTg4LSNlbmRpZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmg6ODk6I2lmIElTX0VOQUJMRUQoQ09ORklHX01UNzZfTlBVKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmgtOTAtXFx0aWYgKHEtXFx1MDAzZWZsYWdzIFxcdTAwMjYgTVRfUUZMQUdfTlBVKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jPTE0PWVudW0gbXQ3Nl9za3VfdHlwZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYzoxNTpcXHRNVDc2X1NLVV9SQVRFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6MTY6XFx0TVQ3Nl9TS1VfQkFDS09GRixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjE3OlxcdE1UNzZfU0tVX0JBQ0tPRkZfQkZfT0ZGU0VULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtMTgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM9MzMwPW10NzZfYXBwbHlfYXJyYXlfbGltaXQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHM4ICpwd3IsIHNpemVfdCBwd3JfbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy0zNDUtXFx0XFx0c3dpdGNoICh0eXBlKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYzozNDY6XFx0XFx0Y2FzZSBNVDc2X1NLVV9SQVRFOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtMzQ3LVxcdFxcdFxcdGRlbHRhID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtMzUwLVxcdFxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6MzUxOlxcdFxcdGNhc2UgTVQ3Nl9TS1VfQkFDS09GRl9CRl9PRkZTRVQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy0zNTItXFx0XFx0XFx0YmFja29mZl9jaGFpbl9pZHggKz0gMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTM1My1cXHRcXHRcXHRmYWxsdGhyb3VnaDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjM1NDpcXHRcXHRjYXNlIE1UNzZfU0tVX0JBQ0tPRkY6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy0zNTUtXFx0XFx0XFx0ZGVsdGEgPSBtdDc2X3R4X3Bvd2VyX3BhdGhfZGVsdGEobl9jaGFpbnMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy0zNjktXFx0XFx0Lyogb25seSBjb25zaWRlciBiYWNrb2ZmIHZhbHVlIGZvciB0aGUgY29uZmlndXJlZCBjaGFpbiBudW1iZXIgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjM3MDpcXHRcXHRpZiAodHlwZSAhPSBNVDc2X1NLVV9SQVRFIFxcdTAwMjZcXHUwMDI2IG5fY2hhaW5zICE9IGJhY2tvZmZfbl9jaGFpbnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy0zNzEtXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jPTM3OD1tdDc2X2FwcGx5X211bHRpX2FycmF5X2xpbWl0KHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzOCAqcHdyLCBzaXplX3QgcHdyX2xlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtNDA2LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6NDA3OlxcdFxcdGlmICghaXNfbXQ3OTl4KGRldikgXFx1MDAyNlxcdTAwMjYgdHlwZSA9PSBNVDc2X1NLVV9CQUNLT0ZGIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy00MDgtXFx0XFx0ICAgIGkgXFx1MDAzZSBjb25uYWMyX2JhY2tvZmZfcnVfaWR4KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6NDA5OlxcdFxcdFxcdHR5cGUgPSBNVDc2X1NLVV9CQUNLT0ZGX0JGX09GRlNFVDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTQxMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM9NDI2PXM4IG10NzZfZ2V0X3JhdGVfcG93ZXJfbGltaXRzKHN0cnVjdCBtdDc2X3BoeSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy00NzctXFx0bXQ3Nl9hcHBseV9hcnJheV9saW1pdChkZXYsIGRlc3QtXFx1MDAzZWNjaywgQVJSQVlfU0laRShkZXN0LVxcdTAwM2VjY2spLCB2YWwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYzo0Nzg6XFx0XFx0XFx0ICAgICAgIHRhcmdldF9wb3dlciwgdHhzX2RlbHRhLCBcXHUwMDI2bWF4X3Bvd2VyLCBuX2NoYWlucywgTVQ3Nl9TS1VfUkFURSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy00NzktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTQ4MS1cXHRtdDc2X2FwcGx5X2FycmF5X2xpbWl0KGRldiwgZGVzdC1cXHUwMDNlb2ZkbSwgQVJSQVlfU0laRShkZXN0LVxcdTAwM2VvZmRtKSwgdmFsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6NDgyOlxcdFxcdFxcdCAgICAgICB0YXJnZXRfcG93ZXIsIHR4c19kZWx0YSwgXFx1MDAyNm1heF9wb3dlciwgbl9jaGFpbnMsIE1UNzZfU0tVX1JBVEUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtNDgzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy00ODYtXFx0XFx0XFx0XFx0ICAgICBBUlJBWV9TSVpFKGRlc3QtXFx1MDAzZW1jcyksIHZhbCwgbGVuLCB0YXJnZXRfcG93ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYzo0ODc6XFx0XFx0XFx0XFx0ICAgICB0eHNfZGVsdGEsIFxcdTAwMjZtYXhfcG93ZXIsIG5fY2hhaW5zLCBNVDc2X1NLVV9SQVRFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTQ4OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtNDkxLVxcdFxcdFxcdFxcdCAgICAgQVJSQVlfU0laRShkZXN0LVxcdTAwM2VydSksIHZhbCwgbGVuLCB0YXJnZXRfcG93ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYzo0OTI6XFx0XFx0XFx0XFx0ICAgICB0eHNfZGVsdGEsIFxcdTAwMjZtYXhfcG93ZXIsIG5fY2hhaW5zLCBNVDc2X1NLVV9SQVRFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTQ5My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtNDk1LVxcdG10NzZfYXBwbHlfYXJyYXlfbGltaXQoZGV2LCBkZXN0LVxcdTAwM2VwYXRoLmNjaywgQVJSQVlfU0laRShkZXN0LVxcdTAwM2VwYXRoLmNjayksIHZhbCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjQ5NjpcXHRcXHRcXHQgICAgICAgdGFyZ2V0X3Bvd2VyLCB0eHNfZGVsdGEsIFxcdTAwMjZtYXhfcG93ZXIsIG5fY2hhaW5zLCBNVDc2X1NLVV9CQUNLT0ZGKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTQ5Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtNDk5LVxcdG10NzZfYXBwbHlfYXJyYXlfbGltaXQoZGV2LCBkZXN0LVxcdTAwM2VwYXRoLm9mZG0sIEFSUkFZX1NJWkUoZGVzdC1cXHUwMDNlcGF0aC5vZmRtKSwgdmFsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6NTAwOlxcdFxcdFxcdCAgICAgICB0YXJnZXRfcG93ZXIsIHR4c19kZWx0YSwgXFx1MDAyNm1heF9wb3dlciwgbl9jaGFpbnMsIE1UNzZfU0tVX0JBQ0tPRkYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtNTAxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy01MDQtXFx0XFx0XFx0ICAgICAgIHRhcmdldF9wb3dlciwgdHhzX2RlbHRhLCBcXHUwMDI2bWF4X3Bvd2VyLCBuX2NoYWlucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjUwNTpcXHRcXHRcXHQgICAgICAgTVQ3Nl9TS1VfQkFDS09GRl9CRl9PRkZTRVQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtNTA2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy01MDktXFx0XFx0XFx0XFx0ICAgICBBUlJBWV9TSVpFKGRlc3QtXFx1MDAzZXBhdGgucnUpLCB2YWwsIGxlbiwgdGFyZ2V0X3Bvd2VyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6NTEwOlxcdFxcdFxcdFxcdCAgICAgdHhzX2RlbHRhLCBcXHUwMDI2bWF4X3Bvd2VyLCBuX2NoYWlucywgTVQ3Nl9TS1VfQkFDS09GRik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy01MTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTUxNC1cXHRcXHRcXHRcXHQgICAgIEFSUkFZX1NJWkUoZGVzdC1cXHUwMDNlcGF0aC5ydV9iZiksIHZhbCwgbGVuLCB0YXJnZXRfcG93ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYzo1MTU6XFx0XFx0XFx0XFx0ICAgICB0eHNfZGVsdGEsIFxcdTAwMjZtYXhfcG93ZXIsIG5fY2hhaW5zLCBNVDc2X1NLVV9CQUNLT0ZGKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTUxNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz01NTA9aW50IG10NzZfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBib29sIHZodCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy01NzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjU3NzpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfTVQ3Nl9MRURTKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy01NzgtXFx0XFx0cmV0ID0gbXQ3Nl9sZWRfaW5pdChwaHkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTU5My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6NTk0OlxcdHNldF9iaXQoTVQ3Nl9TVEFURV9SRUdJU1RFUkVELCBcXHUwMDI2cGh5LVxcdTAwM2VzdGF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTU5NS1cXHRwaHktXFx1MDAzZWRldi1cXHUwMDNlcGh5c1twaHktXFx1MDAzZWJhbmRfaWR4XSA9IHBoeTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz02MDE9dm9pZCBtdDc2X3VucmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTYwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6NjA1OlxcdGlmICghdGVzdF9iaXQoTVQ3Nl9TVEFURV9SRUdJU1RFUkVELCBcXHUwMDI2cGh5LVxcdTAwM2VzdGF0ZSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTYwNi1cXHRcXHRyZXR1cm47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTYwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6NjA4OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19NVDc2X0xFRFMpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy02MDktXFx0XFx0bXQ3Nl9sZWRfY2xlYW51cChwaHkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTc0Nz1pbnQgbXQ3Nl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYsIGJvb2wgdmh0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTc4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6Nzg5OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19NVDc2X0xFRFMpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTc5MC1cXHRcXHRyZXQgPSBtdDc2X2xlZF9pbml0KHBoeSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNzk5LVxcdFdBUk5fT04obXQ3Nl93b3JrZXJfc2V0dXAoaHcsIFxcdTAwMjZkZXYtXFx1MDAzZXR4X3dvcmtlciwgTlVMTCwgXFxcInR4XFxcIikpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo4MDA6XFx0c2V0X2JpdChNVDc2X1NUQVRFX1JFR0lTVEVSRUQsIFxcdTAwMjZwaHktXFx1MDAzZXN0YXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODAxLVxcdHNjaGVkX3NldF9maWZvX2xvdyhkZXYtXFx1MDAzZXR4X3dvcmtlci50YXNrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz04MDc9dm9pZCBtdDc2X3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTgxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6ODExOlxcdGlmICghdGVzdF9iaXQoTVQ3Nl9TVEFURV9SRUdJU1RFUkVELCBcXHUwMDI2ZGV2LVxcdTAwM2VwaHkuc3RhdGUpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04MTItXFx0XFx0cmV0dXJuO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04MTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjgxNDpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfTVQ3Nl9MRURTKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODE1LVxcdFxcdG10NzZfbGVkX2NsZWFudXAoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz04OTE9c3RhdGljIHZvaWQgbXQ3Nl9yeF9yZWxlYXNlX2Ftc2R1KHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBlbnVtIG10NzZfcnhxX2lkIHEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtOTI4LVxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo5Mjk6XFx0aWYgKG10NzZfcXVldWVfaXNfd2VkX3Jyb19kYXRhKHJ4cSkgXFx1MDAyNlxcdTAwMjYgZGV2LVxcdTAwM2Vod3Jyb19tb2RlID09IE1UNzZfSFdSUk9fVjMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTkzMC1cXHRcXHRxID0gTVRfUlhRX1JST19JTkQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9OTU4PXZvaWQgbXQ3Nl9yeChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgZW51bSBtdDc2X3J4cV9pZCBxLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTk2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6OTYzOlxcdGlmICghdGVzdF9iaXQoTVQ3Nl9TVEFURV9SVU5OSU5HLCBcXHUwMDI2cGh5LVxcdTAwM2VzdGF0ZSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtOTY0LVxcdFxcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy05NjgtI2lmZGVmIENPTkZJR19OTDgwMjExX1RFU1RNT0RFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjk2OTpcXHRpZiAocGh5LVxcdTAwM2V0ZXN0LnN0YXRlID09IE1UNzZfVE1fU1RBVEVfUlhfRlJBTUVTKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTk3MC1cXHRcXHRwaHktXFx1MDAzZXRlc3Qucnhfc3RhdHMucGFja2V0c1txXSsrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTEwNDc9aW50IF9fbXQ3Nl9zZXRfY2hhbm5lbChzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSwgc3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICpjaGFuZGVmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTEwNTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjEwNTc6XFx0c2V0X2JpdChNVDc2X1JFU0VULCBcXHUwMDI2cGh5LVxcdTAwM2VzdGF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTEwNTgtXFx0d2FpdF9ldmVudF90aW1lb3V0KGRldi1cXHUwMDNldHhfd2FpdCwgIW10NzZfaGFzX3R4X3BlbmRpbmcocGh5KSwgdGltZW91dCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTA3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTA3NzpcXHRjbGVhcl9iaXQoTVQ3Nl9SRVNFVCwgXFx1MDAyNnBoeS1cXHUwMDNlc3RhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xMDc4LVxcdG10NzZfd29ya2VyX2VuYWJsZShcXHUwMDI2ZGV2LVxcdTAwM2V0eF93b3JrZXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE2NjY9aW50IG10NzZfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE2OTEtXFx0ICAgIG5ld19zdGF0ZSA9PSBJRUVFODAyMTFfU1RBX0FTU09DKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxNjkyOlxcdFxcdGV2ID0gTVQ3Nl9TVEFfRVZFTlRfQVNTT0M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE2OTMtXFx0ZWxzZSBpZiAob2xkX3N0YXRlID09IElFRUU4MDIxMV9TVEFfQVNTT0MgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTY5NC1cXHRcXHQgbmV3X3N0YXRlID09IElFRUU4MDIxMV9TVEFfQVVUSE9SSVpFRClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTY5NTpcXHRcXHRldiA9IE1UNzZfU1RBX0VWRU5UX0FVVEhPUklaRTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTY5Ni1cXHRlbHNlIGlmIChvbGRfc3RhdGUgPT0gSUVFRTgwMjExX1NUQV9BU1NPQyBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNjk3LVxcdFxcdCBuZXdfc3RhdGUgPT0gSUVFRTgwMjExX1NUQV9BVVRIKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxNjk4OlxcdFxcdGV2ID0gTVQ3Nl9TVEFfRVZFTlRfRElTQVNTT0M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE2OTktXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE3ODI9dm9pZCBtdDc2X3djaWRfYWRkX3BvbGwoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE3ODMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxNzg0OlxcdGlmICh0ZXN0X2JpdChNVDc2X01DVV9SRVNFVCwgXFx1MDAyNmRldi1cXHUwMDNlcGh5LnN0YXRlKSB8fCAhd2NpZC1cXHUwMDNlc3RhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNzg1LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz0xOTY5PXZvaWQgbXQ3Nl9zd19zY2FuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE5NzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjE5NzQ6XFx0c2V0X2JpdChNVDc2X1NDQU5OSU5HLCBcXHUwMDI2cGh5LVxcdTAwM2VzdGF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE5NzUtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE5Nzg9dm9pZCBtdDc2X3N3X3NjYW5fY29tcGxldGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTk4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTk4MjpcXHRjbGVhcl9iaXQoTVQ3Nl9TQ0FOTklORywgXFx1MDAyNnBoeS1cXHUwMDNlc3RhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xOTgzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz0yMDc4PWVudW0gbXQ3Nl9kZnNfc3RhdGUgbXQ3Nl9waHlfZGZzX3N0YXRlKHN0cnVjdCBtdDc2X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTIwODMtXFx0aWYgKGRldi1cXHUwMDNlcmVnaW9uID09IE5MODAyMTFfREZTX1VOU0VUIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjIwODQ6XFx0ICAgIHRlc3RfYml0KE1UNzZfU0NBTk5JTkcsIFxcdTAwMjZwaHktXFx1MDAzZXN0YXRlKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMjA4NS1cXHRcXHRyZXR1cm4gTVRfREZTX1NUQVRFX0RJU0FCTEVEO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTIzMzc9c3RhdGljIHZvaWQgbXQ3Nl9iZWFjb25fbW9uX2l0ZXIodm9pZCAqZGF0YSwgdTggKm1hYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0yMzYwLVxcdFxcdFxcdCAgICAgICBSRUFEX09OQ0UobWxpbmstXFx1MDAzZWJlYWNvbl9tb25fbGFzdCkgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoyMzYxOlxcdFxcdFxcdCAgICAgICBNVDc2X0JFQUNPTl9NT05fTUFYX01JU1MgKiBtbGluay1cXHUwMDNlYmVhY29uX21vbl9pbnRlcnZhbCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTIzNjItXFx0XFx0XFx0aWVlZTgwMjExX2JlYWNvbl9sb3NzKHZpZik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jPTMyPXN0cnVjdCBza19idWZmICptdDc2X21jdV9nZXRfcmVzcG9uc2Uoc3RydWN0IG10NzZfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jLTQyLVxcdFxcdFxcdCAgICghc2tiX3F1ZXVlX2VtcHR5KFxcdTAwMjZkZXYtXFx1MDAzZW1jdS5yZXNfcSkgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jOjQzOlxcdFxcdFxcdCAgICB0ZXN0X2JpdChNVDc2X01DVV9SRVNFVCwgXFx1MDAyNmRldi1cXHUwMDNlcGh5LnN0YXRlKSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tY3UuYy00NC1cXHRcXHRcXHQgICB0aW1lb3V0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmM9NzI9aW50IG10NzZfbWN1X3NrYl9zZW5kX2FuZF9nZXRfbXNnKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tY3UuYy04Ni1cXHRpZiAoKG10NzZfaXNfbW1pbyhkZXYpIFxcdTAwMjZcXHUwMDI2IGF0b21pY19yZWFkKFxcdTAwMjZkZXYtXFx1MDAzZWJ1c19odW5nKSkgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jOjg3OlxcdCAgICAobXQ3Nl9pc19zZGlvKGRldikgXFx1MDAyNlxcdTAwMjYgdGVzdF9iaXQoTVQ3Nl9SRVNFVCwgXFx1MDAyNmRldi1cXHUwMDNlcGh5LnN0YXRlKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmMtODgtXFx0ICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXYtXFx1MDAzZWJ1c19odW5nKSkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmMtMTE3LVxcdFxcdHNrYiA9IG10NzZfbWN1X2dldF9yZXNwb25zZShkZXYsIGV4cGlyZXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmM6MTE4OlxcdFxcdGlmICghc2tiIFxcdTAwMjZcXHUwMDI2ICF0ZXN0X2JpdChNVDc2X01DVV9SRVNFVCwgXFx1MDAyNmRldi1cXHUwMDNlcGh5LnN0YXRlKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmMtMTE5LVxcdFxcdCAgICBvcmlnX3NrYiBcXHUwMDI2XFx1MDAyNiByZXRyeSsrIFxcdTAwM2MgZGV2LVxcdTAwM2VtY3Vfb3BzLVxcdTAwM2VtYXhfcmV0cnkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbW1pby5jPTExMD12b2lkIG10NzZfbW1pb19pbml0KHN0cnVjdCBtdDc2X2RldiAqZGV2LCB2b2lkIF9faW9tZW0gKnJlZ3MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21taW8uYy0xMTktXFx0XFx0LnJkX3JwID0gbXQ3Nl9tbWlvX3JkX3JwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbW1pby5jOjEyMDpcXHRcXHQudHlwZSA9IE1UNzZfQlVTX01NSU8sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tbWlvLmMtMTIxLVxcdH07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC01LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjY6I2lmbmRlZiBfX01UNzZfSFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjc6I2RlZmluZSBfX01UNzZfSFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0yOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDozMDojZGVmaW5lIE1UNzZfVE9LRU5fRlJFRV9USFJcXHQ2NFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTMxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NDU6I2RlZmluZSBNVF9XRURfUV9UWChfbilcXHRcXHRfX01UX1dFRF9RKE1UNzZfV0VEX1FfVFgsIF9uKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjQ2OiNkZWZpbmUgTVRfV0VEX1FfUlgoX24pXFx0XFx0X19NVF9XRURfUShNVDc2X1dFRF9RX1JYLCBfbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo0NzojZGVmaW5lIE1UX1dFRF9RX1RYRlJFRVxcdFxcdF9fTVRfV0VEX1EoTVQ3Nl9XRURfUV9UWEZSRUUsIDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NDg6I2RlZmluZSBNVF9XRURfUlJPX1FfREFUQShfbilcXHRfX01UX1dFRF9SUk9fUShNVDc2X1dFRF9SUk9fUV9EQVRBLCBfbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo0OTojZGVmaW5lIE1UX1dFRF9SUk9fUV9NU0RVX1BHKF9uKVxcdF9fTVRfV0VEX1JST19RKE1UNzZfV0VEX1JST19RX01TRFVfUEcsIF9uKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUwOiNkZWZpbmUgTVRfV0VEX1JST19RX0lORFxcdF9fTVRfV0VEX1JST19RKE1UNzZfV0VEX1JST19RX0lORCwgMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MTojZGVmaW5lIE1UX1dFRF9SUk9fUV9SWERNQURfQ1xcdF9fTVRfV0VEX1JST19RKE1UNzZfV0VEX1JST19RX1JYRE1BRF9DLCAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTUyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNTUtXFx0XFx0XFx0XFx0IEZJRUxEX1BSRVAoTVRfUUZMQUdfV0VEX1JJTkcsIF9uKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1NjojZGVmaW5lIE1UX05QVV9RX1RYKF9uKVxcdFxcdF9fTVRfTlBVX1EoTVQ3Nl9XRURfUV9UWCwgX24pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTc6I2RlZmluZSBNVF9OUFVfUV9SWChfbilcXHRcXHRfX01UX05QVV9RKE1UNzZfV0VEX1FfUlgsIF9uKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjU4OiNkZWZpbmUgTVRfTlBVX1FfVFhGUkVFKF9uKVxcdChGSUVMRF9QUkVQKE1UX1FGTEFHX1dFRF9UWVBFLCBNVDc2X1dFRF9RX1RYRlJFRSkgfCBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNTktXFx0XFx0XFx0XFx0IEZJRUxEX1BSRVAoTVRfUUZMQUdfV0VEX1JJTkcsIF9uKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTczPWVudW0gbXQ3Nl9idXNfdHlwZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NzQ6XFx0TVQ3Nl9CVVNfTU1JTyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo3NTpcXHRNVDc2X0JVU19VU0IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NzY6XFx0TVQ3Nl9CVVNfU0RJTyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC03Ny19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9Nzk9ZW51bSBtdDc2X3dlZF90eXBlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo4MDpcXHRNVDc2X1dFRF9RX1RYLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjgxOlxcdE1UNzZfV0VEX1FfVFhGUkVFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjgyOlxcdE1UNzZfV0VEX1FfUlgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6ODM6XFx0TVQ3Nl9XRURfUlJPX1FfREFUQSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo4NDpcXHRNVDc2X1dFRF9SUk9fUV9NU0RVX1BHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjg1OlxcdE1UNzZfV0VEX1JST19RX0lORCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo4NjpcXHRNVDc2X1dFRF9SUk9fUV9SWERNQURfQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC04Ny19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9ODk9ZW51bSBtdDc2X2h3cnJvX21vZGUge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjkwOlxcdE1UNzZfSFdSUk9fT0ZGLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjkxOlxcdE1UNzZfSFdSUk9fVjMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6OTI6XFx0TVQ3Nl9IV1JST19WM18xLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTkzLX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD05NT1zdHJ1Y3QgbXQ3Nl9idXNfb3BzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMTA6I2RlZmluZSBtdDc2X2lzX3VzYihkZXYpICgoZGV2KS1cXHUwMDNlYnVzLVxcdTAwM2V0eXBlID09IE1UNzZfQlVTX1VTQilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMTE6I2RlZmluZSBtdDc2X2lzX21taW8oZGV2KSAoKGRldiktXFx1MDAzZWJ1cy1cXHUwMDNldHlwZSA9PSBNVDc2X0JVU19NTUlPKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjExMjojZGVmaW5lIG10NzZfaXNfc2RpbyhkZXYpICgoZGV2KS1cXHUwMDNlYnVzLVxcdTAwM2V0eXBlID09IE1UNzZfQlVTX1NESU8pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTEzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTgwPWVudW0gbXQ3Nl9kZnNfc3RhdGUge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE4NzojZGVmaW5lIE1UNzZfUk5SX1NDQU5fTUFYX0JTU0lEUyAgICAgICAxNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE4OC1zdHJ1Y3QgbXQ3Nl9zY2FuX3Jucl9wYXJhbSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTg5OlxcdHU4IGJzc2lkW01UNzZfUk5SX1NDQU5fTUFYX0JTU0lEU11bRVRIX0FMRU5dO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE5MDpcXHR1OCBjaGFubmVsW01UNzZfUk5SX1NDQU5fTUFYX0JTU0lEU107XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTkxLVxcdHU4IHJhbmRvbV9tYWNbRVRIX0FMRU5dO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MzU5PWVudW0gbXQ3Nl93Y2lkX2ZsYWdzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTM2Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDozNjc6I2RlZmluZSBNVDc2X05fV0NJRFMgMTA4OFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjM2ODojZGVmaW5lIE1UNzZfQkVBQ09OX01PTl9NQVhfTUlTU1xcdDdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0zNjktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD01MDM9ZW51bSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTA0OlxcdE1UNzZfU1RBVEVfSU5JVElBTElaRUQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTA1OlxcdE1UNzZfU1RBVEVfUkVHSVNURVJFRCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MDY6XFx0TVQ3Nl9TVEFURV9SVU5OSU5HLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUwNzpcXHRNVDc2X1NUQVRFX01DVV9SVU5OSU5HLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUwODpcXHRNVDc2X1NDQU5OSU5HLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUwOTpcXHRNVDc2X0hXX1NDQU5OSU5HLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUxMDpcXHRNVDc2X0hXX1NDSEVEX1NDQU5OSU5HLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUxMTpcXHRNVDc2X1JFU1RBUlQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTEyOlxcdE1UNzZfUkVTRVQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTEzOlxcdE1UNzZfTUNVX1JFU0VULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUxNDpcXHRNVDc2X1JFTU9WRUQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTE1OlxcdE1UNzZfUkVBRElOR19TVEFUUyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MTY6XFx0TVQ3Nl9TVEFURV9QT1dFUl9PRkYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTE3OlxcdE1UNzZfU1RBVEVfU1VTUEVORCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MTg6XFx0TVQ3Nl9TVEFURV9ST0MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTE5OlxcdE1UNzZfU1RBVEVfUE0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTIwOlxcdE1UNzZfU1RBVEVfV0VEX1JFU0VULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTUyMS19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9NTIzPWVudW0gbXQ3Nl9zdGFfZXZlbnQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUyNDpcXHRNVDc2X1NUQV9FVkVOVF9BU1NPQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MjU6XFx0TVQ3Nl9TVEFfRVZFTlRfQVVUSE9SSVpFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUyNjpcXHRNVDc2X1NUQV9FVkVOVF9ESVNBU1NPQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC01MjctfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTY2ND1zdHJ1Y3QgbXQ3Nl91c2Ige1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNjg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjY4ODojZGVmaW5lIE1UNzZTX1hNSVRfQlVGX1NaXFx0MHgzZmUwMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjY4OTojZGVmaW5lIE1UNzZTX05VTV9UWF9FTlRSSUVTXFx0MjU2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NjkwOiNkZWZpbmUgTVQ3NlNfTlVNX1JYX0VOVFJJRVNcXHQ1MTJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC02OTEtc3RydWN0IG10NzZfc2RpbyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD03ODc9c3RydWN0IG10NzZfdGVzdG1vZGVfZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC03ODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NzkwOlxcdHUzMiBwYXJhbV9zZXRbRElWX1JPVU5EX1VQKE5VTV9NVDc2X1RNX0FUVFJTLCAzMildO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTc5MS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqdHhfc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9OTIzPXN0cnVjdCBtdDc2X2RldiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC05ODUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6OTg2OlxcdHUzMiB3Y2lkX21hc2tbRElWX1JPVU5EX1VQKE1UNzZfTl9XQ0lEUywgMzIpXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC05ODctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC05OTAtXFx0c3RydWN0IG10NzZfd2NpZCBnbG9iYWxfd2NpZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo5OTE6XFx0c3RydWN0IG10NzZfd2NpZCBfX3JjdSAqd2NpZFtNVDc2X05fV0NJRFNdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTk5Mi1cXHRzdHJ1Y3QgbGlzdF9oZWFkIHdjaWRfbGlzdDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE0OTg9c3RhdGljIGlubGluZSBib29sIG10NzZfdGVzdG1vZGVfZW5hYmxlZChzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE1MDAtI2lmZGVmIENPTkZJR19OTDgwMjExX1RFU1RNT0RFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTUwMTpcXHRyZXR1cm4gcGh5LVxcdTAwM2V0ZXN0LnN0YXRlICE9IE1UNzZfVE1fU1RBVEVfT0ZGO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE1MDItI2Vsc2VcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE2NTU9aW50IG10NzZfdGVzdG1vZGVfYWxsb2Nfc2tiKHN0cnVjdCBtdDc2X3BoeSAqcGh5LCB1MzIgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNjU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE2NTc6I2lmIElTX0VOQUJMRUQoQ09ORklHX01UNzZfTlBVKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE2NTgtdm9pZCBtdDc2X25wdV9jaGVja19wcGUoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xNzM2PXN0YXRpYyBpbmxpbmUgaW50IG10NzZfbnB1X3NlbmRfdHhyeF9hZGRyKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgaWZpbmRleCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3NDEtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE3NDI6I2VuZGlmIC8qIENPTkZJR19NVDc2X05QVSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3NDMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xNzcwPXN0YXRpYyBpbmxpbmUgdm9pZCBtdDc2X3Rlc3Rtb2RlX3Jlc2V0KHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBib29sIGRpc2FibGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNzcyLSNpZmRlZiBDT05GSUdfTkw4MDIxMV9URVNUTU9ERVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE3NzM6XFx0ZW51bSBtdDc2X3Rlc3Rtb2RlX3N0YXRlIHN0YXRlID0gTVQ3Nl9UTV9TVEFURV9JRExFO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTc3NTpcXHRpZiAoZGlzYWJsZSB8fCBwaHktXFx1MDAzZXRlc3Quc3RhdGUgPT0gTVQ3Nl9UTV9TVEFURV9PRkYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTc3NjpcXHRcXHRzdGF0ZSA9IE1UNzZfVE1fU1RBVEVfT0ZGO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3NzctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xOTc3PXN0YXRpYyBpbmxpbmUgYm9vbCBtdDc2X3F1ZXVlX2lzX3dlZF90eF9mcmVlKHN0cnVjdCBtdDc2X3F1ZXVlICpxKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTk3OS1cXHRyZXR1cm4gKHEtXFx1MDAzZWZsYWdzIFxcdTAwMjYgTVRfUUZMQUdfV0VEKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE5ODA6XFx0ICAgICAgIEZJRUxEX0dFVChNVF9RRkxBR19XRURfVFlQRSwgcS1cXHUwMDNlZmxhZ3MpID09IE1UNzZfV0VEX1FfVFhGUkVFO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE5ODEtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTk4OD1zdGF0aWMgaW5saW5lIGJvb2wgbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvX2luZChzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE5OTAtXFx0cmV0dXJuIG10NzZfcXVldWVfaXNfd2VkX3JybyhxKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE5OTE6XFx0ICAgICAgIEZJRUxEX0dFVChNVF9RRkxBR19XRURfVFlQRSwgcS1cXHUwMDNlZmxhZ3MpID09IE1UNzZfV0VEX1JST19RX0lORDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xOTkyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE5OTQ9c3RhdGljIGlubGluZSBib29sIG10NzZfcXVldWVfaXNfd2VkX3Jyb19yeGRtYWRfYyhzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE5OTYtXFx0cmV0dXJuIG10NzZfcXVldWVfaXNfd2VkX3JybyhxKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE5OTc6XFx0ICAgICAgIEZJRUxEX0dFVChNVF9RRkxBR19XRURfVFlQRSwgcS1cXHUwMDNlZmxhZ3MpID09IE1UNzZfV0VEX1JST19RX1JYRE1BRF9DO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE5OTgtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MjAwMD1zdGF0aWMgaW5saW5lIGJvb2wgbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvX2RhdGEoc3RydWN0IG10NzZfcXVldWUgKnEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0yMDAyLVxcdHJldHVybiBtdDc2X3F1ZXVlX2lzX3dlZF9ycm8ocSkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoyMDAzOlxcdCAgICAgICBGSUVMRF9HRVQoTVRfUUZMQUdfV0VEX1RZUEUsIHEtXFx1MDAzZWZsYWdzKSA9PSBNVDc2X1dFRF9SUk9fUV9EQVRBO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTIwMDQtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MjAwNj1zdGF0aWMgaW5saW5lIGJvb2wgbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvX21zZHVfcGcoc3RydWN0IG10NzZfcXVldWUgKnEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0yMDA5LVxcdCAgICAgICBGSUVMRF9HRVQoTVRfUUZMQUdfV0VEX1RZUEUsIHEtXFx1MDAzZWZsYWdzKSA9PVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjIwMTA6XFx0ICAgICAgIE1UNzZfV0VEX1JST19RX01TRFVfUEc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMjAxMS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0yMDEzPXN0YXRpYyBpbmxpbmUgYm9vbCBtdDc2X3F1ZXVlX2lzX3dlZF9yeChzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTIwMTUtXFx0cmV0dXJuIChxLVxcdTAwM2VmbGFncyBcXHUwMDI2IE1UX1FGTEFHX1dFRCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoyMDE2OlxcdCAgICAgICBGSUVMRF9HRVQoTVRfUUZMQUdfV0VEX1RZUEUsIHEtXFx1MDAzZWZsYWdzKSA9PSBNVDc2X1dFRF9RX1JYO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTIwMTctfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MjAyOT1zdGF0aWMgaW5saW5lIGJvb2wgbXQ3Nl9xdWV1ZV9pc19ucHVfdHgoc3RydWN0IG10NzZfcXVldWUgKnEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0yMDMxLVxcdHJldHVybiBtdDc2X3F1ZXVlX2lzX25wdShxKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjIwMzI6XFx0ICAgICAgIEZJRUxEX0dFVChNVF9RRkxBR19XRURfVFlQRSwgcS1cXHUwMDNlZmxhZ3MpID09IE1UNzZfV0VEX1FfVFg7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQzOjIwLjkyNTc2MDc4MloiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1OTU5OTIxMTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIE1lZGlhVGVrIFdpcmVsZXNzIERyaXZlciBDaGFuZ2VzIGZvciBGdXp6aW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgcG90ZW50aWFsIGZ1enppbmcgdGFyZ2V0cywgYW5kIHRoaXMgcGF0Y2ggaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBhdHRlbnRpb24uXG5cbkZpcnN0LCBJIG5lZWQgdG8ga25vdyB3aGVyZSB3ZSdyZSB3b3JraW5nLiBJIHNlZSBgbXQ3Nl9waHlfaW5pdGAgYW5kIGBtdDc5MnhfaW5pdF93aXBoeWAgYXJlIHRoZSBrZXkgZnVuY3Rpb25zLiBTcGVjaWZpY2FsbHksIGBtdDc2X3BoeV9pbml0YCBpcyBhIHN0YXRpYyBmdW5jdGlvbiB3aXRoaW4gYG1hYzgwMjExLmNgLCBjYWxsZWQgYnkgYG10NzZfcmVnaXN0ZXJfcGh5YCBhbmQgYG10NzZfcmVnaXN0ZXJfZGV2aWNlYC4gYG10NzkyeF9pbml0X3dpcGh5YCBpcyBpbiBgbXQ3OTJ4X2NvcmUuY2AuIFRoZXNlIGFyZSBjcnVjaWFsIGVudHJ5IHBvaW50cyBpbnRvIHRoZSBNZWRpYVRlayB3aXJlbGVzcyBkcml2ZXIgc3RhY2suXG5cblRoZSBwYXRjaCdzIGNvcmUgbW9kaWZpY2F0aW9uIHNlZW1zIHRvIGludm9sdmUgZW5hYmxpbmcgdGhlIGBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1JgIGZlYXR1cmUuIEl0IGFmZmVjdHMgTWVkaWFUZWsgd2lyZWxlc3MgZHJpdmVycyBkaXJlY3RseSwgZXNwZWNpYWxseSBVU0IgdmFyaWFudHMgbGlrZSBgbXQ3OTIxdWAsIGBtdDc2eDB1YCwgYW5kIG90aGVycyDigJMgdGhlIG9uZXMgdGhhdCBhcmUgbGlrZWx5IGFjY2Vzc2libGUgaW4gYSB2aXJ0dWFsaXplZCBVU0IgZ2FkZ2V0IGVudmlyb25tZW50LiAgV2hlbiB0aGVzZSBVU0IgZGV2aWNlcyBhcmUgY29ubmVjdGVkLCB0aGUgbWVudGlvbmVkIGZ1bmN0aW9ucyAoYG10NzZfcGh5X2luaXRgIGFuZCBgbXQ3OTJ4X2luaXRfd2lwaHlgKSBhcmUgZXhlY3V0ZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLiBUaGlzIHNldHMgdGhlIHN0YWdlIGZvciBjcmVhdGluZyBhbmQgY29uZmlndXJpbmcgYWN0aXZlIG1vbml0b3IgbW9kZSBpbnRlcmZhY2VzIHVzaW5nIG5ldGxpbmsgKG5sODAyMTEpLlxuXG5UaGVyZWZvcmUsIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCB0aGlzIGxvb2tzIHByb21pc2luZy4gTXkgYXNzZXNzbWVudCBpczpcblxuKiAgICoqV29ydGhGdXp6aW5nOiBUcnVlLioqIFRoZSBtb2RpZmljYXRpb24gZGlyZWN0bHkgZW5hYmxlcyBuZXcgZnVuY3Rpb25hbGl0eSByZWxhdGVkIHRvIGFjdGl2ZSBtb25pdG9yaW5nLCB3aGljaCBpbmNyZWFzZXMgdGhlIGF0dGFjayBzdXJmYWNlIGZvciBmdXp6aW5nLlxuKiAgICoqRm9jdXMgU3ltYm9sczoqKiBNeSBmb2N1cyBzaG91bGQgYmUgb24gdGhlIGVudHJ5IHBvaW50czpcbiAgICAqICAgYG10NzkyeF9pbml0X3dpcGh5YFxuICAgICogICBgbXQ3Nl9yZWdpc3Rlcl9kZXZpY2VgXG4gICAgKiAgIGBtdDc2X3JlZ2lzdGVyX3BoeWBcbiogICAqKkVuYWJsZUNvbmZpZ3M6KiogSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcmlnaHQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBzZXQuICBUaGUgcmVsZXZhbnQgY29uZmlncyBhcmU6IGBNVDc2X0NPUkVgLCBgTVQ3OTJ4X0xJQmAsIGBNVDc5MjFVYCwgYE1BQzgwMjExYCwgYENGRzgwMjExYC4gU3BlY2lmaWNhbGx5LCBgTVQ3Nl9DT1JFYCBzZWVtcyB0byBiZSBzZWxlY3RlZCBieSB0aGluZ3MgbGlrZSBgTVQ3Nl9DT05OQUNfTElCYCwgYE1UNzZ4MDJfTElCYC4gYE1UNzkyMVVgIHNlbGVjdHMgYE1UNzkyeF9VU0JgIGFuZCBgTVQ3OTIxX0NPTU1PTmAuXG4qICAgRG91YmxlLWNoZWNraW5nIHRoaXMsIEkgY29uZmlybSB0aGF0IHRoZSBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgIGFib3ZlIGFyZSBjb3JyZWN0LlxuXG5NeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiBUaGUgcGF0Y2ggcmVtb3ZlcyBhIGxpbWl0YXRpb24gYW5kIHVuY29uZGl0aW9uYWxseSBlbmFibGVzIHRoZSBhY3RpdmUgbW9uaXRvciBmZWF0dXJlLiBUaGlzIG1lYW5zIHVzZXJzcGFjZSBjYW4gY29uZmlndXJlIGFjdGl2ZSBtb25pdG9yIGludGVyZmFjZXMgdmlhIG5sODAyMTEgb24gTWVkaWFUZWsgd2lyZWxlc3MgZGV2aWNlcywgZXNwZWNpYWxseSB0aGUgVVNCLWJhc2VkIG9uZXMsIHNvIHRoaXMgaXMgd29ydGggZnV6emluZy5cbkFscmlnaHQsIHRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggdGhpcyBpbmZvcm1hdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ5MzksIk91dHB1dFRva2VucyI6MTg3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQzOjI2Ljg4NTY4NTMyWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg2MTQwMDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzZfQ09SRVwiLFxuICAgIFwiTVQ3OTJ4X0xJQlwiLFxuICAgIFwiTVQ3OTIxVVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTJ4X2luaXRfd2lwaHlcIixcbiAgICBcIm10NzZfcmVnaXN0ZXJfZGV2aWNlXCIsXG4gICAgXCJtdDc2X3JlZ2lzdGVyX3BoeVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgdGhlIG5vX2FjdGl2ZV9tb25pdG9yIGZsYWcgYW5kIHVuY29uZGl0aW9uYWxseSBlbmFibGVzIE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiBmb3IgTWVkaWFUZWsgbXQ3NiAvIG10NzkyeCB3aXJlbGVzcyBkcml2ZXJzLiBUaGVzZSBkcml2ZXJzIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uIChlLmcuIG10NzkyMXUpLCBhbGxvd2luZyBhY3RpdmUgbW9uaXRvciBpbnRlcmZhY2UgY3JlYXRpb24gYW5kIGhhbmRsaW5nIHZpYSBubDgwMjExLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzZfQ09SRVwiLFxuICAgIFwiTVQ3OTJ4X0xJQlwiLFxuICAgIFwiTVQ3OTIxVVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTJ4X2luaXRfd2lwaHlcIixcbiAgICBcIm10NzZfcmVnaXN0ZXJfZGV2aWNlXCIsXG4gICAgXCJtdDc2X3JlZ2lzdGVyX3BoeVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgdGhlIG5vX2FjdGl2ZV9tb25pdG9yIGZsYWcgYW5kIHVuY29uZGl0aW9uYWxseSBlbmFibGVzIE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiBmb3IgTWVkaWFUZWsgbXQ3NiAvIG10NzkyeCB3aXJlbGVzcyBkcml2ZXJzLiBUaGVzZSBkcml2ZXJzIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uIChlLmcuIG10NzkyMXUpLCBhbGxvd2luZyBhY3RpdmUgbW9uaXRvciBpbnRlcmZhY2UgY3JlYXRpb24gYW5kIGhhbmRsaW5nIHZpYSBubDgwMjExLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwNDo0MzoyNi45NjQzMDczODRaIiwiU2VxIjozNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzY2NzY5MjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDM6MjYuOTY0ODQwMDg0WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTM3NjYyMzE1MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGVuYWJsZXMgdGhlIE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiBmZWF0dXJlIGZsYWcgdW5jb25kaXRpb25hbGx5IGZvciBhbGwgbXQ3NiB3aXJlbGVzcyBkZXZpY2VzIGJ5IHJlbW92aW5nIHRoZSBgbm9fYWN0aXZlX21vbml0b3JgIGZsYWcgZnJvbSBgc3RydWN0IG10NzZfcGh5YCBhbmQgdGhlIG92ZXJyaWRlIGluIGBtdDc5MnhfaW5pdF93aXBoeWAuXFxuXFxuVGhpcyBjaGFuZ2Ugb25seSBtb2RpZmllcyBhIGZlYXR1cmUgYml0bWFzayBmbGFnIG9uIHRoZSB3aXBoeSBkZXZpY2UgYW5kIHJlbW92ZXMgYSBzdHJ1Y3QgZmllbGQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgcGFkZGluZy9maWVsZHMgY29waWVkIHRvIHVzZXJzcGFjZSwgb3IgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBvciBpbmZvcm1hdGlvbiBsZWFrIHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiBmdXp6aW5nLCBhbmQgc3RhbmRhcmQgS0FTQU4vc3l6a2FsbGVyIHRlc3RpbmcgaXMgc3VmZmljaWVudC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwYjYzNDUzZGI4NzAxZjg5MTIxMjVkNWFjZmMyNTBkNTQ1MDdiZWNhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBTZXAgNSAwNDo0MjoxNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuY1xuaW5kZXggYWJiZTY1Y2JjZDg5ZS4uZjkyMjc3NzcwNDg4YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jXG5AQCAtNDM5LDkgKzQzOSw4IEBAIG10NzZfcGh5X2luaXQoc3RydWN0IG10NzZfcGh5ICpwaHksIHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuIFx0U0VUX0lFRUU4MDIxMV9ERVYoaHcsIGRldi1cdTAwM2VkZXYpO1xuIFx0U0VUX0lFRUU4MDIxMV9QRVJNX0FERFIoaHcsIHBoeS1cdTAwM2VtYWNhZGRyKTtcbiBcbi1cdHdpcGh5LVx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BUF9NT0RFX0NIQU5fV0lEVEhfQ0hBTkdFO1xuLVx0aWYgKCFwaHktXHUwMDNlbm9fYWN0aXZlX21vbml0b3IpXG4tXHRcdHdpcGh5LVx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUjtcbitcdHdpcGh5LVx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiB8XG4rXHRcdFx0ICAgTkw4MDIxMV9GRUFUVVJFX0FQX01PREVfQ0hBTl9XSURUSF9DSEFOR0U7XG4gXHR3aXBoeS1cdTAwM2VmbGFncyB8PSBXSVBIWV9GTEFHX0hBU19DSEFOTkVMX1NXSVRDSCB8XG4gXHRcdFx0V0lQSFlfRkxBR19TVVBQT1JUU19URExTIHxcbiBcdFx0XHRXSVBIWV9GTEFHX0FQX1VBUFNEO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmhcbmluZGV4IDYyYjQxYzhiYjdjMGQuLjYxZWYxYjgwZmViODUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmhcbkBAIC04NzMsNyArODczLDYgQEAgc3RydWN0IG10NzZfcGh5IHtcbiBcdHN0cnVjdCBjZmc4MDIxMV9jaGFuX2RlZiBtYWluX2NoYW5kZWY7XG4gXHRib29sIG9mZmNoYW5uZWw7XG4gXHRib29sIHJhZGFyX2VuYWJsZWQ7XG4tXHRib29sIG5vX2FjdGl2ZV9tb25pdG9yO1xuIFxuIFx0c3RydWN0IGRlbGF5ZWRfd29yayByb2Nfd29yaztcbiBcdHN0cnVjdCBpZWVlODAyMTFfdmlmICpyb2NfdmlmO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuY1xuaW5kZXggMGFkMzNmNzRjMjI4NS4uODM3ZDdhZjk4NGU4NiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jXG5AQCAtODIwLDcgKzgyMCw2IEBAIGludCBtdDc5MnhfaW5pdF93aXBoeShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbiBcbiBcdHdpcGh5LVx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9TQ0hFRF9TQ0FOX1JBTkRPTV9NQUNfQUREUiB8XG4gXHRcdFx0ICAgTkw4MDIxMV9GRUFUVVJFX1NDQU5fUkFORE9NX01BQ19BRERSO1xuLVx0cGh5LVx1MDAzZW10NzYtXHUwMDNlbm9fYWN0aXZlX21vbml0b3IgPSB0cnVlO1xuIFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX1NFVF9TQ0FOX0RXRUxMKTtcbiBcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9CRUFDT05fUkFURV9MRUdBQ1kpO1xuIFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0JFQUNPTl9SQVRFX0hUKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQzOjI2Ljk2NDg0MTEzNFoiLCJTZXEiOjM5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MzczMzMzMDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTVQ3NiBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgdGFyZ2V0aW5nIHRoZSBNZWRpYVRlayB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgYG10NzZgIGZhbWlseS4gTGV0J3MgYnJlYWsgZG93biB0aGUgY2hhbmdlcy4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSBtb2RpZmljYXRpb24gdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuY2AuIFRoZXkndmUgcmVtb3ZlZCBhIGNvbmRpdGlvbiByZWxhdGVkIHRvIGBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1JgIGFuZCBgTkw4MDIxMV9GRUFUVVJFX0FQX01PREVfQ0hBTl9XSURUSF9DSEFOR0VgLiBTcGVjaWZpY2FsbHksIHRoYXQgYGlmICghcGh5LVx1MDAzZW5vX2FjdGl2ZV9tb25pdG9yKWAgY2hlY2sgaXMgZ29uZS4gUmlnaHQgYXdheSwgdGhhdCBzYXlzICpzb21ldGhpbmcqIGFib3V0IGFjdGl2ZSBtb25pdG9yIHN1cHBvcnQgaXMgY2hhbmdpbmcgYWNyb3NzIHRoZSBib2FyZCwgb3IgcGVyaGFwcyBmb3IgKmFsbCogTWVkaWFUZWsgZGV2aWNlcyBub3cuXG5cblRoZW4sIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oYCwgdGhleSd2ZSBjb21wbGV0ZWx5IHJlbW92ZWQgdGhlIGBib29sIG5vX2FjdGl2ZV9tb25pdG9yO2AgbWVtYmVyIGZyb20gdGhlIGBzdHJ1Y3QgbXQ3Nl9waHlgLiBUaGF0J3MgYSBzaWduaWZpY2FudCBpbmRpY2F0b3IuIEVzc2VudGlhbGx5LCB0aGUgZHJpdmVyIHNlZW1zIHRvIGhhdmUgbG9zdCB0aGUgY2FwYWJpbGl0eSB0byBleHBsaWNpdGx5IGRpc2FibGUgYWN0aXZlIG1vbml0b3JpbmcuXG5cbkFuZCBsYXN0bHksIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmNgLCB0aGV5J3ZlIHJlbW92ZWQgdGhlIGxpbmUgdGhhdCB3YXMgc2V0dGluZyBgcGh5LVx1MDAzZW10NzYtXHUwMDNlbm9fYWN0aXZlX21vbml0b3IgPSB0cnVlO2Agd2l0aGluIHRoZSBgbXQ3OTJ4X2luaXRfd2lwaHlgIGZ1bmN0aW9uLiBUaGlzIGNvbmZpcm1zIHRoYXQgYSBzcGVjaWZpYyBtb2RlbCB3YXMgYmVpbmcgZXhwbGljaXRseSB0b2xkICpub3QqIHRvIHVzZSBhY3RpdmUgbW9uaXRvci4gVGhpcyBpcyBhbGwgY29taW5nIHRvZ2V0aGVyIG5vdyAtIHRoZXkncmUgbWFraW5nIGEgc3Ryb25nIGNoYW5nZSBpbiB0aGUgZGVmYXVsdCBiZWhhdmlvci5cblxuTm93LCBJIG5lZWQgdG8gY2hlY2sgZm9yIGFueSBkZWVwZXIgaW1wbGljYXRpb25zLiBXZSdsbCBuZWVkIHRvIHJ1biBhIHF1aWNrIGdyZXAgdG8gdW5kZXJzdGFuZCBob3cgYGFjdGl2ZV9tb25pdG9yYCBpcyBoYW5kbGVkIGluIGBtdDc2YCwgbm93IHRoYXQgaXQncyBwb3RlbnRpYWxseSBlbmFibGVkIGZvciBhbGwgaW5zdGFuY2VzLiBBcmUgdGhlcmUgYW55IGFzc3VtcHRpb25zIGJhc2VkIG9uIGl0cyBwcmV2aW91cyBkaXNhYmxlZCBzdGF0ZT8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgcmVncmVzc2lvbnM/IExldCdzIGdldCB0aGF0IGdyZXBwZXIgZmlyZWQgdXAgYW5kIHNlZSB3aGF0IGl0IHJldmVhbHMuIFRoaXMgcGF0Y2ggY291bGQgYmUgYSBiaWcgZGVhbCBmb3IgdGhvc2UgdXNpbmcgdGhlc2UgY2hpcHMgaW4gbW9uaXRvciBtb2RlIG9yIGluIGFjY2VzcyBwb2ludCBtb2RlLCBhbmQgd2UgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzaWRlIGVmZmVjdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MjAsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwNDo0MzozMi4zMzgxOTU2NzVaIiwiU2VxIjo0MCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MDI5NzE2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9NDI3PW10NzZfcGh5X2luaXQoc3RydWN0IG10NzZfcGh5ICpwaHksIHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTQ0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6NDQyOlxcdHdpcGh5LVxcdTAwM2VmZWF0dXJlcyB8PSBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1IgfFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy00NDMtXFx0XFx0XFx0ICAgTkw4MDIxMV9GRUFUVVJFX0FQX01PREVfQ0hBTl9XSURUSF9DSEFOR0U7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQzOjMyLjYyODUwMDMwNFoiLCJTZXEiOjQxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODY0MzM4NzYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBjb2RlLlxuXG4qKkludmVzdGlnYXRpbmcgYSBOZXR3b3JrIFdpcmVsZXNzIFBhdGNoKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhpcyBwYXRjaCwgb3IgcGVyaGFwcyBJJ20gdHJ5aW5nIHRvIGdldCBhIGJldHRlciBncmFzcCBvbiB3aGF0IHRoaXMgYE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUmAgZmVhdHVyZSBhY3R1YWxseSAqZG9lcyouIE15IGluc3RpbmN0IGlzIHRvIHRyYWNlIGl0cyB1c2FnZS4gSSdsbCBpbml0aWF0ZSBhIHNlYXJjaCBhY3Jvc3MgdGhlIHJlbGV2YW50IGtlcm5lbCBkaXJlY3Rvcmllcy4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBiZSBsb29raW5nIGluIGBuZXQvd2lyZWxlc3MvYCBhbmQgYG5ldC9tYWM4MDIxMS9gLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGltcGxlbWVudGF0aW9uLCBpdHMgdXNlIGNhc2VzLCBhbmQgbGlrZWx5LCBhbnkgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9uIG9yIEFQSSBjYWxscy4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIGhvdyB0aGlzIGZlYXR1cmUgaW1wYWN0cyB0aGUgd2lyZWxlc3Mgc3Vic3lzdGVtIGFuZCBob3BlZnVsbHkgZGV0ZXJtaW5lIHdoeSB0aGlzIHBhdGNoIHdhcyBtYWRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzc5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDM6MzQuNDkyODQzNDE2WiIsIlNlcSI6NDIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mzc2ODMzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTQ5MzQ9c3RhdGljIGludCBubDgwMjExX3BhcnNlX21vbl9vcHRpb25zKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNDk1OC1cXHRpZiAocGFyYW1zLVxcdTAwM2VmbGFncyBcXHUwMDI2IE1PTklUT1JfRkxBR19BQ1RJVkUgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ5NTk6XFx0ICAgICEocmRldi1cXHUwMDNld2lwaHkuZmVhdHVyZXMgXFx1MDAyNiBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1IpKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNDk2MC1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQzOjM0LjU2NjYxNzk2WiIsIlNlcSI6NDMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYxNjQ0MzM0MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQWN0aXZlIE1vbml0b3IgRmVhdHVyZSBGbGFnIENoYW5nZSoqXG5cbk9rYXksIHNvIHRoaXMgY2hhbmdlIGluIHRoZSBtdDc2IHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IHJlZ2FyZGluZyBgTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SYCwgaGFzIGNhdWdodCBteSBleWUuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGFib3V0IGVuYWJsaW5nIHRoZSBgTU9OSVRPUl9GTEFHX0FDVElWRWAgZmxhZyB3aGVuIGNyZWF0aW5nIG9yIHNldHRpbmcgdXAgbW9uaXRvciBpbnRlcmZhY2VzLCB3aGljaCBpcyBhIGRlcGFydHVyZSBmcm9tIGhvdyBtdDc5MnggdXNlZCB0byBoYW5kbGUgaXQsIHdoZXJlIGl0IGRpc2FibGVkIGFjdGl2ZSBtb25pdG9yLiBOb3csIGFsbCBtdDc2IGRldmljZXMgYXJlIGdvaW5nIHRvIGFkdmVydGlzZSB0aGlzIGZlYXR1cmUuXG5cbk15IGltbWVkaWF0ZSBjb25jZXJuLCBhcyBhbHdheXMgd2l0aCB0aGVzZSBraW5kcyBvZiBjaGFuZ2VzLCBpcyB3aGV0aGVyIHRoaXMgaW50cm9kdWNlcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIExldCdzIGJyZWFrIGl0IGRvd246XG5cbiogICAqKktlcm5lbCAtXHUwMDNlIFVzZXJzcGFjZToqKiBNeSBmaXJzdCB0aG91Z2h0IGlzIGFsd2F5cywgYXJlIHdlIHNlbmRpbmcgYW55IHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2VyIHNwYWNlPyBXZSBoYXZlIHRvIGNvbnNpZGVyIGhvdyBkYXRhIGlzIGNvbW11bmljYXRlZCAoY29weVxcX3RvXFxfdXNlciwgbmV0bGluaywgaW9jdGxzLCBldGMuKS4gQnV0IG5vLCBpbiB0aGlzIGNhc2UsIGl0J3MganVzdCBhIGZlYXR1cmUgZmxhZyDigJMgYE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUmAgYmVpbmcgYWRkZWQgdG8gYHdpcGh5LVx1MDAzZWZlYXR1cmVzYC4gSXQncyBhIHNpbXBsZSBhZHZlcnRpc2VtZW50LiBObyBkaXJlY3QgZGF0YSBleHBvc3VyZS5cblxuKiAgICoqQ29uZGl0aW9uYWwgTG9naWM6KiogVGhlIHNlY29uZCB0aGluZyBJIGNoZWNrIGlzIGJyYW5jaGluZyBiYXNlZCBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhpcyBpcyBhIGJpZyBhcmVhIGZvciBwb3RlbnRpYWwgaXNzdWVzLiBUaGUgZ29vZCBuZXdzIGlzIHRoYXQgdGhlIGNoYW5nZSAqcmVtb3ZlcyogYSBmaWVsZCBgbm9fYWN0aXZlX21vbml0b3JgIGZyb20gYHN0cnVjdCBtdDc2X3BoeWAuIFRoaXMgc2ltcGxpZmllcyB0aGluZ3MsIGFjdHVhbGx5LiBObyBuZXcgY29uZGl0aW9uYWwgbG9naWMgaXMgYmVpbmcgaW50cm9kdWNlZCwgYW5kIGV4aXN0aW5nIGxvZ2ljIGlzIGJlaW5nIGNsZWFuZWQgdXAuXG5cbiogICAqKkRhdGEgU3RydWN0dXJlIEluaXRpYWxpemF0aW9uOioqIFdoYXQgYWJvdXQgYWxsb2NhdGVkIGRhdGEgc3RydWN0dXJlcz8gQ291bGQgd2UgYmUgbGVhdmluZyBzb21lIGZpZWxkcyB1bmluaXRpYWxpemVkIGFuZCB0aGVuIHJlYWRpbmcgdGhlbSBsYXRlcj8gVGhpcyBjb3VsZCBsZWFkIHRvIGluZm9ybWF0aW9uIGxlYWtzIG9yIGV2ZW4gY3Jhc2hlcy4gTm9wZS4gVGhlIGRyaXZlciBpc24ndCBpbnRyb2R1Y2luZyBhbnkgY29tcGxleCBkYXRhIHN0cnVjdHVyZSBpbml0aWFsaXphdGlvbiBpbiB0aGlzIHBhdGNoLlxuXG4qICAgKipCb3VuZHMgQ2hlY2tzIGFuZCBMb2dpYzoqKiBXaGF0IGFib3V0IHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3dzLCBhbmQgdGhlIGxpa2U/IFRoZSBjaGFuZ2UgZG9lc24ndCBtb2RpZnkgYW55IGJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGFjY2VzcyBleGlzdGluZyBidWZmZXJzIGluIGEgd2F5IHRoYXQgbWlnaHQgaW50cm9kdWNlIHVuaW5pdGlhbGl6ZWQgYnl0ZXMuXG5cbk5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGFjdGl2ZSBtb25pdG9yIG1vZGUgaXRzZWxmLCB3aXRoIHRoZSBuZXcgZmVhdHVyZSBmbGFnLCBtaWdodCBoYXZlIGFueSBpbXBsaWNhdGlvbnMuIERvZXMgdGhlIG10NzYgZHJpdmVyIHRyYW5zbWl0IEFDS3Mgb3IgYW55dGhpbmcgdGhhdCBtaWdodCBwb3RlbnRpYWxseSByZWFkIHVuaW5pdGlhbGl6ZWQgZGF0YT8gSXQgbG9va3MgbGlrZSB0aGUgYWN0aXZlIG1vbml0b3IgbW9kZSwgaW5jbHVkaW5nIHNlbmRpbmcgQUNLcywgaXMgaGFuZGxlZCBpbiBoYXJkd2FyZSBvciBmaXJtd2FyZS4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLlxuXG5Tbywgc3VtbWluZyBpdCB1cCwgdGhpcyBhcHBlYXJzIHRvIGJlIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBmZWF0dXJlIGZsYWcgZW5hYmxlbWVudCBhbmQgZmllbGQgY2xlYW51cCBpbiB0aGUgbXQ3NiB3aXJlbGVzcyBkcml2ZXIuIEl0J3MgZXNzZW50aWFsbHkgcmVtb3ZpbmcgYSBmbGFnIGFuZCBhZGRpbmcgYW5vdGhlciBmZWF0dXJlLiBUaGVyZSBhcmUgbm8gb2J2aW91cyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgbm8gaW5mb3JtYXRpb24gbGVha3MsIG9yIGFueSBjb25jZXJucyBhYm91dCB0aGUgb3ZlcmFsbCBtZW1vcnkgc2FmZXR5IG9mIHRoZSB3aXJlbGVzcyBzdGFjay5cblxuTGV0IG1lIGRvdWJsZS1jaGVjazogdGhlIHBhdGNoIHNpbXBseSBpbmNsdWRlcyBgTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SYCBpbiBgd2lwaHktXHUwMDNlZmVhdHVyZXNgLCByZW1vdmVzIHRoZSBgbm9fYWN0aXZlX21vbml0b3JgIGZpZWxkLCBhbmQgYWxzbyByZW1vdmVzIHRoZSBgcGh5LVx1MDAzZW10NzYtXHUwMDNlbm9fYWN0aXZlX21vbml0b3IgPSB0cnVlYCBzZXR0aW5nIGZyb20gYG10NzkyeF9pbml0X3dpcGh5YC4gTm8gcmVhbCBjb21wbGV4aXR5IGhlcmUuXG5cbkZpbmFsbHksIHJlZ2FyZGluZyB0ZXN0aW5nLCB0aGUgY2hhbmdlIGRvZXMgbm90IHJlcXVpcmUgS01TQU4uIEtBU0FOIGFuZCBzdGFuZGFyZCB0ZXN0aW5nIG1ldGhvZG9sb2dpZXMgYXJlIHN1ZmZpY2llbnQgdG8gdmVyaWZ5IGFueSBtZW1vcnkgc2FmZXR5IGluIHBhY2tldCBoYW5kbGluZyBhbmQgYnVmZmVyIGFsbG9jYXRpb24uIEtNU0FOIGlzIG92ZXJraWxsIGhlcmUuXG5cbkknbSByZWFkeSB0byBjYWxsIHRoZSBgc2V0LXJlc3VsdHNgIG1ldGhvZC4gSSdtIGNvbmZpZGVudCBpbiBteSBhc3Nlc3NtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjAyLCJPdXRwdXRUb2tlbnMiOjE3NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwNDo0Mzo0MC43MzEwNTM3MDNaIiwiU2VxIjo0NCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGVuYWJsZXMgdGhlIE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiBmZWF0dXJlIGZsYWcgdW5jb25kaXRpb25hbGx5IGZvciBhbGwgbXQ3NiB3aXJlbGVzcyBkZXZpY2VzIGJ5IHJlbW92aW5nIHRoZSBgbm9fYWN0aXZlX21vbml0b3JgIGZsYWcgZnJvbSBgc3RydWN0IG10NzZfcGh5YCBhbmQgdGhlIG92ZXJyaWRlIGluIGBtdDc5MnhfaW5pdF93aXBoeWAuXFxuXFxuVGhpcyBjaGFuZ2Ugb25seSBtb2RpZmllcyBhIGZlYXR1cmUgYml0bWFzayBmbGFnIG9uIHRoZSB3aXBoeSBkZXZpY2UgYW5kIHJlbW92ZXMgYSBzdHJ1Y3QgZmllbGQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgcGFkZGluZy9maWVsZHMgY29waWVkIHRvIHVzZXJzcGFjZSwgb3IgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBvciBpbmZvcm1hdGlvbiBsZWFrIHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiBmdXp6aW5nLCBhbmQgc3RhbmRhcmQgS0FTQU4vc3l6a2FsbGVyIHRlc3RpbmcgaXMgc3VmZmljaWVudC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBlbmFibGVzIHRoZSBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1IgZmVhdHVyZSBmbGFnIHVuY29uZGl0aW9uYWxseSBmb3IgYWxsIG10NzYgd2lyZWxlc3MgZGV2aWNlcyBieSByZW1vdmluZyB0aGUgYG5vX2FjdGl2ZV9tb25pdG9yYCBmbGFnIGZyb20gYHN0cnVjdCBtdDc2X3BoeWAgYW5kIHRoZSBvdmVycmlkZSBpbiBgbXQ3OTJ4X2luaXRfd2lwaHlgLlxcblxcblRoaXMgY2hhbmdlIG9ubHkgbW9kaWZpZXMgYSBmZWF0dXJlIGJpdG1hc2sgZmxhZyBvbiB0aGUgd2lwaHkgZGV2aWNlIGFuZCByZW1vdmVzIGEgc3RydWN0IGZpZWxkLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGRhdGEgc3RydWN0dXJlcywgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHBhZGRpbmcvZmllbGRzIGNvcGllZCB0byB1c2Vyc3BhY2UsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgaW5mb3JtYXRpb24gbGVhayByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gZnV6emluZywgYW5kIHN0YW5kYXJkIEtBU0FOL3N5emthbGxlciB0ZXN0aW5nIGlzIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4cj2h[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-05 04:23:23 +0000 UTC FinishedAt: 2026-09-05 04:43:42 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b60ed34f712e9f606d80951f1586f4274ebadf1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT76_CORE", "MT792x_LIB", "MT7921U", "MAC80211", "CFG80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b60ed34f712e9f606d80951f1586f4274ebadf1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT76_CORE", "MT792x_LIB", "MT7921U", "MAC80211", "CFG80211" ], "series_id": "d7ba9719-a26b-4068-b5c8-953e085f96b2" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt792x_init_wiphy", "mt76_register_device", "mt76_register_phy" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDA0OjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzZfQ09SRSYjMzQ7LAogICAgJiMzNDtNVDc5MnhfTElCJiMzNDssCiAgICAmIzM0O01UNzkyMVUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MnhfaW5pdF93aXBoeSYjMzQ7LAogICAgJiMzNDttdDc2X3JlZ2lzdGVyX2RldmljZSYjMzQ7LAogICAgJiMzNDttdDc2X3JlZ2lzdGVyX3BoeSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGVuYWJsZXMgdGhlIE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiBmZWF0dXJlIGZsYWcgdW5jb25kaXRpb25hbGx5IGZvciBhbGwgbXQ3NiB3aXJlbGVzcyBkZXZpY2VzIGJ5IHJlbW92aW5nIHRoZSBgbm9fYWN0aXZlX21vbml0b3JgIGZsYWcgZnJvbSBgc3RydWN0IG10NzZfcGh5YCBhbmQgdGhlIG92ZXJyaWRlIGluIGBtdDc5MnhfaW5pdF93aXBoeWAuXG5cblRoaXMgY2hhbmdlIG9ubHkgbW9kaWZpZXMgYSBmZWF0dXJlIGJpdG1hc2sgZmxhZyBvbiB0aGUgd2lwaHkgZGV2aWNlIGFuZCByZW1vdmVzIGEgc3RydWN0IGZpZWxkLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGRhdGEgc3RydWN0dXJlcywgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHBhZGRpbmcvZmllbGRzIGNvcGllZCB0byB1c2Vyc3BhY2UsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgaW5mb3JtYXRpb24gbGVhayByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gZnV6emluZywgYW5kIHN0YW5kYXJkIEtBU0FOL3N5emthbGxlciB0ZXN0aW5nIGlzIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgdGhlIG5vX2FjdGl2ZV9tb25pdG9yIGZsYWcgYW5kIHVuY29uZGl0aW9uYWxseSBlbmFibGVzIE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiBmb3IgTWVkaWFUZWsgbXQ3NiAvIG10NzkyeCB3aXJlbGVzcyBkcml2ZXJzLiBUaGVzZSBkcml2ZXJzIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uIChlLmcuIG10NzkyMXUpLCBhbGxvd2luZyBhY3RpdmUgbW9uaXRvciBpbnRlcmZhY2UgY3JlYXRpb24gYW5kIGhhbmRsaW5nIHZpYSBubDgwMjExLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDA0OjQyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMGI2MzQ1M2RiODcwMWY4OTEyMTI1ZDVhY2ZjMjUwZDU0NTA3YmVjYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgU2VwIDUgMDQ6NDI6MTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jXG5pbmRleCBhYmJlNjVjYmNkODllLi5mOTIyNzc3NzA0ODhhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmNcbkBAIC00MzksOSAmIzQzOzQzOSw4IEBAIG10NzZfcGh5X2luaXQoc3RydWN0IG10NzZfcGh5ICpwaHksIHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuIFx0U0VUX0lFRUU4MDIxMV9ERVYoaHcsIGRldi1cdTAwM2VkZXYpO1xuIFx0U0VUX0lFRUU4MDIxMV9QRVJNX0FERFIoaHcsIHBoeS1cdTAwM2VtYWNhZGRyKTtcbiBcbi1cdHdpcGh5LVx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BUF9NT0RFX0NIQU5fV0lEVEhfQ0hBTkdFO1xuLVx0aWYgKCFwaHktXHUwMDNlbm9fYWN0aXZlX21vbml0b3IpXG4tXHRcdHdpcGh5LVx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUjtcbiYjNDM7XHR3aXBoeS1cdTAwM2VmZWF0dXJlcyB8PSBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1IgfFxuJiM0MztcdFx0XHQgICBOTDgwMjExX0ZFQVRVUkVfQVBfTU9ERV9DSEFOX1dJRFRIX0NIQU5HRTtcbiBcdHdpcGh5LVx1MDAzZWZsYWdzIHw9IFdJUEhZX0ZMQUdfSEFTX0NIQU5ORUxfU1dJVENIIHxcbiBcdFx0XHRXSVBIWV9GTEFHX1NVUFBPUlRTX1RETFMgfFxuIFx0XHRcdFdJUEhZX0ZMQUdfQVBfVUFQU0Q7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaFxuaW5kZXggNjJiNDFjOGJiN2MwZC4uNjFlZjFiODBmZWI4NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaFxuQEAgLTg3Myw3ICYjNDM7ODczLDYgQEAgc3RydWN0IG10NzZfcGh5IHtcbiBcdHN0cnVjdCBjZmc4MDIxMV9jaGFuX2RlZiBtYWluX2NoYW5kZWY7XG4gXHRib29sIG9mZmNoYW5uZWw7XG4gXHRib29sIHJhZGFyX2VuYWJsZWQ7XG4tXHRib29sIG5vX2FjdGl2ZV9tb25pdG9yO1xuIFxuIFx0c3RydWN0IGRlbGF5ZWRfd29yayByb2Nfd29yaztcbiBcdHN0cnVjdCBpZWVlODAyMTFfdmlmICpyb2NfdmlmO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuY1xuaW5kZXggMGFkMzNmNzRjMjI4NS4uODM3ZDdhZjk4NGU4NiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jXG5AQCAtODIwLDcgJiM0Mzs4MjAsNiBAQCBpbnQgbXQ3OTJ4X2luaXRfd2lwaHkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG4gXG4gXHR3aXBoeS1cdTAwM2VmZWF0dXJlcyB8PSBOTDgwMjExX0ZFQVRVUkVfU0NIRURfU0NBTl9SQU5ET01fTUFDX0FERFIgfFxuIFx0XHRcdCAgIE5MODAyMTFfRkVBVFVSRV9TQ0FOX1JBTkRPTV9NQUNfQUREUjtcbi1cdHBoeS1cdTAwM2VtdDc2LVx1MDAzZW5vX2FjdGl2ZV9tb25pdG9yID0gdHJ1ZTtcbiBcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9TRVRfU0NBTl9EV0VMTCk7XG4gXHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQkVBQ09OX1JBVEVfTEVHQUNZKTtcbiBcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9CRUFDT05fUkFURV9IVCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3Nl9DT1JFJiMzNDssCiAgICAmIzM0O01UNzkyeF9MSUImIzM0OywKICAgICYjMzQ7TVQ3OTIxVSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyeF9pbml0X3dpcGh5JiMzNDssCiAgICAmIzM0O210NzZfcmVnaXN0ZXJfZGV2aWNlJiMzNDssCiAgICAmIzM0O210NzZfcmVnaXN0ZXJfcGh5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgdGhlIG5vX2FjdGl2ZV9tb25pdG9yIGZsYWcgYW5kIHVuY29uZGl0aW9uYWxseSBlbmFibGVzIE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiBmb3IgTWVkaWFUZWsgbXQ3NiAvIG10NzkyeCB3aXJlbGVzcyBkcml2ZXJzLiBUaGVzZSBkcml2ZXJzIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uIChlLmcuIG10NzkyMXUpLCBhbGxvd2luZyBhY3RpdmUgbW9uaXRvciBpbnRlcmZhY2UgY3JlYXRpb24gYW5kIGhhbmRsaW5nIHZpYSBubDgwMjExLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMGI2MzQ1M2RiODcwMWY4OTEyMTI1ZDVhY2ZjMjUwZDU0NTA3YmVjYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgU2VwIDUgMDQ6NDI6MTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMKaW5kZXggYWJiZTY1Y2JjZDg5ZS4uZjkyMjc3NzcwNDg4YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYwpAQCAtNDM5LDkgJiM0Mzs0MzksOCBAQCBtdDc2X3BoeV9pbml0KHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodykKIAlTRVRfSUVFRTgwMjExX0RFVihodywgZGV2LSZndDtkZXYpOwogCVNFVF9JRUVFODAyMTFfUEVSTV9BRERSKGh3LCBwaHktJmd0O21hY2FkZHIpOwogCi0Jd2lwaHktJmd0O2ZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BUF9NT0RFX0NIQU5fV0lEVEhfQ0hBTkdFOwotCWlmICghcGh5LSZndDtub19hY3RpdmVfbW9uaXRvcikKLQkJd2lwaHktJmd0O2ZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUjsKJiM0MzsJd2lwaHktJmd0O2ZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiB8CiYjNDM7CQkJICAgTkw4MDIxMV9GRUFUVVJFX0FQX01PREVfQ0hBTl9XSURUSF9DSEFOR0U7CiAJd2lwaHktJmd0O2ZsYWdzIHw9IFdJUEhZX0ZMQUdfSEFTX0NIQU5ORUxfU1dJVENIIHwKIAkJCVdJUEhZX0ZMQUdfU1VQUE9SVFNfVERMUyB8CiAJCQlXSVBIWV9GTEFHX0FQX1VBUFNEOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaAppbmRleCA2MmI0MWM4YmI3YzBkLi42MWVmMWI4MGZlYjg1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaApAQCAtODczLDcgJiM0Mzs4NzMsNiBAQCBzdHJ1Y3QgbXQ3Nl9waHkgewogCXN0cnVjdCBjZmc4MDIxMV9jaGFuX2RlZiBtYWluX2NoYW5kZWY7CiAJYm9vbCBvZmZjaGFubmVsOwogCWJvb2wgcmFkYXJfZW5hYmxlZDsKLQlib29sIG5vX2FjdGl2ZV9tb25pdG9yOwogCiAJc3RydWN0IGRlbGF5ZWRfd29yayByb2Nfd29yazsKIAlzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqcm9jX3ZpZjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYwppbmRleCAwYWQzM2Y3NGMyMjg1Li44MzdkN2FmOTg0ZTg2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jCkBAIC04MjAsNyAmIzQzOzgyMCw2IEBAIGludCBtdDc5MnhfaW5pdF93aXBoeShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodykKIAogCXdpcGh5LSZndDtmZWF0dXJlcyB8PSBOTDgwMjExX0ZFQVRVUkVfU0NIRURfU0NBTl9SQU5ET01fTUFDX0FERFIgfAogCQkJICAgTkw4MDIxMV9GRUFUVVJFX1NDQU5fUkFORE9NX01BQ19BRERSOwotCXBoeS0mZ3Q7bXQ3Ni0mZ3Q7bm9fYWN0aXZlX21vbml0b3IgPSB0cnVlOwogCXdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9TRVRfU0NBTl9EV0VMTCk7CiAJd2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0JFQUNPTl9SQVRFX0xFR0FDWSk7CiAJd2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0JFQUNPTl9SQVRFX0hUKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYwOAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDQwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVGhpcyBQYXRjaCBmb3IgU3l6a2FsbGVyIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIHBhdGNoIGlzIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIEZyb20gdGhlIHN1bW1hcnksIGl0IGxvb2tzIGxpa2UgaXQgdG91Y2hlcyB0aGUgTWVkaWFUZWsgd2lyZWxlc3MgZHJpdmVyczogYG10NzZgIGFuZCBgbXQ3OTJ4YC4gU3BlY2lmaWNhbGx5LCBgbWFjODAyMTEuY2AsIGBtdDc2LmhgLCBhbmQgYG10NzkyeF9jb3JlLmNgIGhhdmUgYmVlbiBtb2RpZmllZC4gSXQgc2VlbXMgbGlrZSB0aGUgcGF0Y2ggcmVtb3ZlcyBhIGNoZWNrIGFuZCBhIHZhcmlhYmxlIHJlbGF0ZWQgdG8gYWN0aXZlIG1vbml0b3JpbmcgaW4gdGhlIGBtdDc2X3BoeV9pbml0YCBhbmQgYG10NzkyeF9pbml0X3dpcGh5YCBmdW5jdGlvbnMuIFRoaXMgbWlnaHQgY2hhbmdlIGhvdyBhY3RpdmUgbW9uaXRvcmluZyBmZWF0dXJlcyBhcmUgaGFuZGxlZC4KCk5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzOiBjYW4gdGhlc2UgZHJpdmVycyBiZSBmdXp6ZWQgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRoIHN5emthbGxlcj8gQXJlIHRoZXNlIGRyaXZlcnMgdGllZCB0byBzcGVjaWZpYyBoYXJkd2FyZSwgb3IgYXJlIHRoZXJlIGVtdWxhdGVkIG9yIHZpcnR1YWwgaW50ZXJmYWNlcyBJIGNhbiBsZXZlcmFnZT8gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGFyZSB0aGUgYG10NzZgIGRldmljZXMgVVNCLCBQQ0llLCBvciBzb21ldGhpbmcgdmlydHVhbD8gSSByZW1lbWJlciBzZWVpbmcgYG10NzZgIFVTQiBkcml2ZXJzLCBsaWtlIGBtdDc2eDB1YCwgYG10NzZ4MnVgLCBhbmQgYG10NzkyMXVgLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhvc2UgYXJlIHJlbGV2YW50LiBBcmUgdGhlc2UgZHJpdmVycyBwdXJlbHkgaGFyZHdhcmUtZGVwZW5kZW50LCBvciBjYW4gSSByZWFjaCB0aGVtIHRocm91Z2ggVVNCIFJhdyBHYWRnZXQgb3IgYG1hYzgwMjExX2h3c2ltYCBmb3IgZnV6emluZz8KCldhaXQsIGhvbGQgb24uLi5JIG5lZWQgdG8gY2xhcmlmeTogYG10NzZgIGRyaXZlcnMgYXJlIGZvciBNZWRpYVRlayBoYXJkd2FyZSAoTVQ3Nnh4IC8gTVQ3OTJ4KS4gSSBuZWVkIHRvIGNoZWNrIGlmIHRob3NlIGRldmljZXMgYXJlIFVTQiBiYXNlZCwgYW5kIGlmIFVTQiBmdXp6aW5nIHJlYWNoZXMgdGhlbS4gU2luY2UgSSYjMzk7bSBub3QgZW50aXJlbHkgY2xlYXIgb24gdGhlIGJ1cyBpbnRlcmZhY2UgZm9yIHRoaXMgaGFyZHdhcmUsIEkmIzM5O2xsIG5lZWQgdG8gc2VhcmNoIHRoZSBrZXJuZWwgdHJlZSBmb3IgYG10NzZgIGFuZCBgbXQ3OTJ4YCBtb3JlIHRob3JvdWdobHkgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGV5IGFyZSByZWFjaGVkIGFuZCB0aGVpciBvdmVyYWxsIHJlYWNoYWJpbGl0eS4gVGhhdCB3aWxsIGRpY3RhdGUgdGhlIGJlc3QgYXBwcm9hY2ggZm9yIHN5emthbGxlciBpbnRlZ3JhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MnhfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjI0MiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT0yOD1DRkxBR1NfbXQ3NngwMl90cmFjZS5vIDo9IC1JJChzcmMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjI5OkNGTEFHU19tdDc5MnhfdHJhY2UubyA6PSAtSSQoc3JjKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS0zMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTM4PW10NzYtY29ubmFjLWxpYi15IDo9IG10NzZfY29ubmFjX21jdS5vIG10NzZfY29ubmFjX21hYy5vIG10NzZfY29ubmFjM19tYWMub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS0zOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6NDA6bXQ3OTJ4LWxpYi15IDo9IG10NzkyeF9jb3JlLm8gbXQ3OTJ4X21hYy5vIG10NzkyeF90cmFjZS5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjQxOlx0XHRtdDc5MnhfZGVidWdmcy5vIG10NzkyeF9kbWEub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo0MjptdDc5MngtbGliLSQoQ09ORklHX0FDUEkpICYjNDM7PSBtdDc5MnhfYWNwaV9zYXIub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo0MzptdDc5MngtdXNiLXkgOj0gbXQ3OTJ4X3VzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTQ0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtNi0jaW5jbHVkZSBcJiMzNDttdDc2X2Nvbm5hY19tY3UuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYzo3OiNpbmNsdWRlIFwmIzM0O210NzkyeF9yZWdzLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9Nz1tdDc5MjFfcmVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjk6XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxMTpcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTItXHRtdDc2X3dyKGRldiwgZGV2LVx1MDAzZW10NzYuZGVidWdmc19yZWcsIHZhbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTM6XHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTE0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0xOT1tdDc5MjFfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjE6XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyMzpcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjQtXHQqdmFsID0gbXQ3Nl9ycihkZXYsIGRldi1cdTAwM2VtdDc2LmRlYnVnZnNfcmVnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyNTpcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTMzPW10NzkyMV9md19kZWJ1Z19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0zNC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MzU6XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzozNzpcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMzgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjQyOlx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy00My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9NDg9bXQ3OTIxX2Z3X2RlYnVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy00OS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6NTA6XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy01MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9NTc9REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWcsIG10NzkyMV9md19kZWJ1Z19nZXQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjYwOkRFRklORV9TSE9XX0FUVFJJQlVURShtdDc5MnhfdHhfc3RhdHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTYxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz05MT1tdDc5MjFfdHhwd3Ioc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTkyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzo5MzpcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cdTAwM2Vwcml2YXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy05NC1cdHN0cnVjdCBtdDc5MjFfdHhwd3IgdHhwd3I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjk3Olx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy05OC1cdHJldCA9IG10NzkyMV9nZXRfdHhwd3JfaW5mbyhkZXYsIFx1MDAyNnR4cHdyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzo5OTpcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTAwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0xNDM9bXQ3OTIxX3BtX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTE0NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTQ1Olx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTQ2LVx0c3RydWN0IG10NzZfY29ubmFjX3BtICpwbSA9IFx1MDAyNmRldi1cdTAwM2VwbTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MTc2PW10NzkyMV9wbV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTc3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxNzg6XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xNzktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTE4OD1tdDc5MjFfZGVlcF9zbGVlcF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xODkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjE5MDpcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTE5MS1cdHN0cnVjdCBtdDc2X2Nvbm5hY19wbSAqcG0gPSBcdTAwMjZkZXYtXHUwMDNlcG07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTE5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxOTg6XHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTE5OS1cdGlmIChwbS1cdTAwM2Vkc19lbmFibGVfdXNlciA9PSBlbmFibGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIwNS1vdXQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjA2Olx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMDctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTIxMj1tdDc5MjFfZGVlcF9zbGVlcF9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjEzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyMTQ6XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTIyMT1ERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19kcywgbXQ3OTIxX2RlZXBfc2xlZXBfZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjI0OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3BtX2lkbGVfdGltZW91dCwgbXQ3OTJ4X3BtX2lkbGVfdGltZW91dF9nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjI1Olx0XHRcdCBtdDc5MnhfcG1faWRsZV90aW1lb3V0X3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTIyNz1zdGF0aWMgaW50IG10NzkyMV9jaGlwX3Jlc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjI4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyMjk6XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMzAtXHRpbnQgcmV0ID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjM0LVx0XHQvKiBSZXNldCB3aWZpc3lzIGRpcmVjdGx5LiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjIzNTpcdFx0bXQ3OTJ4X3Jlc2V0KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMzYtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMzgtXHRcdC8qIENvbGxlY3QgdGhlIGNvcmUgZHVtcCBiZWZvcmUgcmVzZXQgd2lmaXN5cy4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyMzk6XHRcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjQwLVx0XHRyZXQgPSBtdDc2X2Nvbm5hY19tY3VfY2hpcF9jb25maWcoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI0MTpcdFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNDItXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0yNTE9bXQ3OTIxc19zY2hlZF9xdW90YV9yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNTIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI1MzpcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cdTAwM2Vwcml2YXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNTQtXHRzdHJ1Y3QgbXQ3Nl9zZGlvICpzZGlvID0gXHUwMDI2ZGV2LVx1MDAzZW10NzYuc2Rpbztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI2NDppbnQgbXQ3OTIxX2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI2NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI3MS1cdFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7eG1pdC1xdWV1ZXNcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjcyOlx0XHRcdFx0XHQgICAgZGlyLCBtdDc5MnhfcXVldWVzX3JlYWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI3My1cdGVsc2Vcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjc3LVx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7YWNxXCYjMzQ7LCBkaXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6Mjc4Olx0XHRcdFx0ICAgIG10NzkyeF9xdWV1ZXNfYWNxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNzktXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDt0eHBvd2VyX3NrdVwmIzM0OywgZGlyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI4MC1cdFx0XHRcdCAgICBtdDc5MjFfdHhwd3IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI4MTpcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7dHhfc3RhdHNcJiMzNDssIDA0MDAsIGRpciwgZGV2LCBcdTAwMjZtdDc5MnhfdHhfc3RhdHNfZm9wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjgyLVx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtmd19kZWJ1Z1wmIzM0OywgMDYwMCwgZGlyLCBkZXYsIFx1MDAyNmZvcHNfZndfZGVidWcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yODctXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDtydW50aW1lX3BtX3N0YXRzXCYjMzQ7LCBkaXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6Mjg4Olx0XHRcdFx0ICAgIG10NzkyeF9wbV9zdGF0cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjg5LVx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtkZWVwLXNsZWVwXCYjMzQ7LCAwNjAwLCBkaXIsIGRldiwgXHUwMDI2Zm9wc19kcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jPTE0PXN0YXRpYyBzc2l6ZV90IG10NzkyMV90aGVybWFsX3RlbXBfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE5LVx0Y2FzZSAwOiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MjA6XHRcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoyMTpcdFx0c3RydWN0IG10NzkyeF9kZXYgKm1kZXYgPSBwaHktXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIyLVx0XHRpbnQgdGVtcGVyYXR1cmU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MjQ6XHRcdG10NzkyeF9tdXRleF9hY3F1aXJlKG1kZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTI1LVx0XHR0ZW1wZXJhdHVyZSA9IG10NzkyMV9tY3VfZ2V0X3RlbXBlcmF0dXJlKHBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MjY6XHRcdG10NzkyeF9tdXRleF9yZWxlYXNlKG1kZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTI3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYz00Mz1BVFRSSUJVVEVfR1JPVVBTKG10NzkyMV9od21vbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6NDU6c3RhdGljIGludCBtdDc5MjFfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtNDYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy02My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzo2NDppbnQgbXQ3OTIxX21hY19pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtNjUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy03Ny1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIDI7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjc4Olx0XHRtdDc5MnhfbWFjX2luaXRfYmFuZChkZXYsIGkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTc5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYz04Mj1FWFBPUlRfU1lNQk9MX0dQTChtdDc5MjFfbWFjX2luaXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjg0OnN0YXRpYyBpbnQgX19tdDc5MjFfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtOTEtXHRtdDc2X3dyKGRldiwgTVRfU1dERUZfTU9ERSwgTVRfU1dERUZfTk9STUFMX01PREUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjkyOlx0cmV0ID0gbXQ3OTJ4X21jdV9pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtOTMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xMDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTA5OnN0YXRpYyBpbnQgbXQ3OTIxX2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xMTAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTIwOlx0XHRtdDc5MnhfaW5pdF9yZXNldChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEyMS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM9MTMxPXN0YXRpYyB2b2lkIG10NzkyMV9pbml0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEzMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTMzOlx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbXQ3OTJ4X2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xMzQtXHRcdFx0XHRcdCAgICAgIGluaXRfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE0Mi1cdG10NzkyMV9zZXRfc3RyZWFtX2hlX2NhcHMoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTQzOlx0bXQ3OTJ4X2NvbmZpZ19tYWNfYWRkcl9saXN0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTQ0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xNjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTcwOmludCBtdDc5MjFfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTcxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTc3LVx0ZGV2LVx1MDAzZW10NzYucGh5LnByaXYgPSBcdTAwMjZkZXYtXHUwMDNlcGh5O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjE3ODpcdGRldi1cdTAwM2VtdDc2LnR4X3dvcmtlci5mbiA9IG10NzkyeF90eF93b3JrZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjE4MDpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2VwbS5wc193b3JrLCBtdDc5MnhfcG1fcG93ZXJfc2F2ZV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxODE6XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBtLndha2Vfd29yaywgbXQ3OTJ4X3BtX3dha2Vfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTgyLVx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZGV2LVx1MDAzZXBtLndha2UubG9jayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE4OC1cdHNwaW5fbG9ja19pbml0KFx1MDAyNmRldi1cdTAwM2VwbS50eHFfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTg5Olx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZW1waHkubWFjX3dvcmssIG10NzkyeF9tYWNfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTkwLVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBoeS5zY2FuX3dvcmssIG10NzkyMV9zY2FuX3dvcmspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0yMDItXHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBoeS5yb2Nfd29yaywgbXQ3OTIxX3JvY193b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoyMDM6XHR0aW1lcl9zZXR1cChcdTAwMjZkZXYtXHUwMDNlcGh5LnJvY190aW1lciwgbXQ3OTJ4X3JvY190aW1lciwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjA0LVx0aW5pdF93YWl0cXVldWVfaGVhZChcdTAwMjZkZXYtXHUwMDNlcGh5LnJvY193YWl0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjIyMTpcdG10NzkyeF9pbml0X2FjcGlfc2FyKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjIyMzpcdHJldCA9IG10NzkyeF9pbml0X3djaWQoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0yMjQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0yMjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MjI3Olx0cmV0ID0gbXQ3OTJ4X2luaXRfd2lwaHkoaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIyOC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoxOTpib29sIG10NzkyMV9tYWNfd3RibF91cGRhdGUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgaW50IGlkeCwgdTMyIG1hc2spXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0yMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9Mjg9c3RhdGljIHUzMiBtdDc5MjFfbWFjX3d0YmxfbG1hY19hZGRyKGludCBpZHgsIHU4IG9mZnNldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0zMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjMzOnN0YXRpYyB2b2lkIG10NzkyMV9tYWNfc3RhX3BvbGwoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTM0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy00MS1cdHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo0MjpcdHN0cnVjdCBtdDc5Mnhfc3RhICptc3RhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NDM6XHRzdHJ1Y3QgbXQ3OTJ4X2xpbmtfc3RhICptbGluaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTQ0LVx0dTMyIHR4X3RpbWVbSUVFRTgwMjExX05VTV9BQ1NdLCByeF90aW1lW0lFRUU4MDIxMV9OVU1fQUNTXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02NS1cdFx0bWxpbmsgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNnN0YV9wb2xsX2xpc3QsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo2NjpcdFx0XHRcdFx0IHN0cnVjdCBtdDc5MnhfbGlua19zdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02Ny1cdFx0XHRcdFx0IHdjaWQucG9sbF9saXN0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjY4Olx0XHRtc3RhID0gY29udGFpbmVyX29mKG1saW5rLCBzdHJ1Y3QgbXQ3OTJ4X3N0YSwgZGVmbGluayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02OS1cdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZtbGluay1cdTAwM2V3Y2lkLnBvbGxfbGlzdCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9MTY4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjE2OTptdDc5MjFfbWFjX2ZpbGxfcngoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTE3MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMTc3LVx0c3RydWN0IG10NzZfcGh5ICptcGh5ID0gXHUwMDI2ZGV2LVx1MDAzZW10NzYucGh5O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6MTc4Olx0c3RydWN0IG10NzkyeF9waHkgKnBoeSA9IFx1MDAyNmRldi1cdTAwM2VwaHk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0xNzktXHRzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0xODUtXHR1MzIgcnhkNCA9IGxlMzJfdG9fY3B1KHJ4ZFs0XSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoxODY6XHRzdHJ1Y3QgbXQ3OTJ4X3N0YSAqbXN0YSA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoxODc6XHRzdHJ1Y3QgbXQ3OTJ4X2xpbmtfc3RhICptbGluaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTE4OC1cdHUxNiBzZXFfY3RybCA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMjE0LVx0aWR4ID0gRklFTERfR0VUKE1UX1JYRDFfTk9STUFMX1dMQU5fSURYLCByeGQxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjIxNTpcdHN0YXR1cy1cdTAwM2V3Y2lkID0gbXQ3OTJ4X3J4X2dldF93Y2lkKGRldiwgaWR4LCB1bmljYXN0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTIxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTIxNy1cdGlmIChzdGF0dXMtXHUwMDNld2NpZCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6MjE4Olx0XHRtbGluayA9IGNvbnRhaW5lcl9vZihzdGF0dXMtXHUwMDNld2NpZCwgc3RydWN0IG10NzkyeF9saW5rX3N0YSwgd2NpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoyMTk6XHRcdG1zdGEgPSBjb250YWluZXJfb2YobWxpbmssIHN0cnVjdCBtdDc5Mnhfc3RhLCBkZWZsaW5rKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTIyMC1cdFx0bXQ3Nl93Y2lkX2FkZF9wb2xsKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBcdTAwMjZtbGluay1cdTAwM2V3Y2lkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0yMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoyMjM6XHRtdDc5MnhfZ2V0X3N0YXR1c19mcmVxX2luZm8oc3RhdHVzLCBjaGZyZXEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMjI0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTQzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjQzMjpcdG10NzkyeF9tYWNfYXNzb2NfcnNzaShkZXYsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy00MzMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNDQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NDQ3OnZvaWQgbXQ3OTIxX21hY19hZGRfdHhzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy00NDgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NDQ5Olx0c3RydWN0IG10NzkyeF9saW5rX3N0YSAqbWxpbms7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy00NTAtXHRzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTQ3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjQ3MzpcdG1saW5rID0gY29udGFpbmVyX29mKHdjaWQsIHN0cnVjdCBtdDc5MnhfbGlua19zdGEsIHdjaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNDc0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTQ4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjQ4NTpzdGF0aWMgdm9pZCBtdDc5MjFfbWFjX3R4X2ZyZWUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdm9pZCAqZGF0YSwgaW50IGxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTQ4Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNTE0LVx0XHRpZiAoaW5mbyBcdTAwMjYgTVRfVFhfRlJFRV9QQUlSKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo1MTU6XHRcdFx0c3RydWN0IG10NzkyeF9saW5rX3N0YSAqbWxpbms7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01MTYtXHRcdFx0dTE2IGlkeDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01MjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo1MjU6XHRcdFx0bWxpbmsgPSBjb250YWluZXJfb2Yod2NpZCwgc3RydWN0IG10NzkyeF9saW5rX3N0YSwgd2NpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01MjYtXHRcdFx0bXQ3Nl93Y2lkX2FkZF9wb2xsKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBcdTAwMjZtbGluay1cdTAwM2V3Y2lkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYz01NjI9Ym9vbCBtdDc5MjFfcnhfY2hlY2soc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICpkYXRhLCBpbnQgbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNTYzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjU2NDpcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzkyeF9kZXYsIG10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNTY1LVx0X19sZTMyICpyeGQgPSAoX19sZTMyICopZGF0YTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYz01ODc9dm9pZCBtdDc5MjFfcXVldWVfcnhfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgZW51bSBtdDc2X3J4cV9pZCBxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTU4OS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo1OTA6XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MnhfZGV2LCBtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTU5MS1cdF9fbGUzMiAqcnhkID0gKF9fbGUzMiAqKXNrYi1cdTAwM2VkYXRhO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTYzND1tdDc5MjFfdmlmX2Nvbm5lY3RfaXRlcih2b2lkICpwcml2LCB1OCAqbWFjLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTYzNi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo2Mzc6XHRzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqbXZpZiA9IChzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqKXZpZi1cdTAwM2VkcnZfcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjYzODpcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBtdmlmLVx1MDAzZXBoeS1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02MzktXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IG10NzZfaHcoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYz02NTk9dm9pZCBtdDc5MjFfbWFjX3Jlc2V0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjYwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjY2MTpcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG10NzkyeF9kZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02NjItXHRcdFx0XHRcdCAgICAgIHJlc2V0X3dvcmspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTY4MC1cdFx0bXV0ZXhfbG9jayhcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tdXRleCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo2ODE6XHRcdHJldCA9IG10NzkyeF9kZXZfcmVzZXQoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTY4Mi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm11dGV4KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYz03MTU9dm9pZCBtdDc5MjFfY29yZWR1bXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy03MTYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NzE3Olx0c3RydWN0IG10NzkyeF9kZXYgKmRldjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTcxOC1cdGNoYXIgKmR1bXAsICpkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NzIwOlx0ZGV2ID0gKHN0cnVjdCBtdDc5MnhfZGV2ICopY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBtdDc5MnhfZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzIxLVx0XHRcdFx0XHRcdGNvcmVkdW1wLndvcmsud29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NzU5Olx0bXQ3OTJ4X3Jlc2V0KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc2MC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9NzYzPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo3NjQ6bXQ3OTIxX3VzYl9zZGlvX3dyaXRlX3R4d2koc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc2NS1cdFx0XHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYz03NzY9aW50IG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc4MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo3ODE6XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MnhfZGV2LCBtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc4Mi1cdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbyA9IElFRUU4MDIxMV9TS0JfQ0IodHhfaW5mby1cdTAwM2Vza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc5Ny1cdGlmIChzdGEpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjc5ODpcdFx0c3RydWN0IG10NzkyeF9zdGEgKm1zdGEgPSAoc3RydWN0IG10NzkyeF9zdGEgKilzdGEtXHUwMDNlZHJ2X3ByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy03OTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODA5LVx0dHlwZSA9IG10NzZfaXNfc2RpbyhtZGV2KSA/IE1UNzkyMV9TRElPX0RBVEEgOiAwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODEwOlx0bXQ3OTJ4X3NrYl9hZGRfdXNiX3NkaW9faGRyKGRldiwgc2tiLCB0eXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTgxMS1cdHBhZCA9IHJvdW5kX3VwKHNrYi1cdTAwM2VsZW4sIDQpIC0gc2tiLVx1MDAzZWxlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYz04NDU9Ym9vbCBtdDc5MjFfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODQ2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjg0NzpcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzkyeF9kZXYsIG10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODQ5Olx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTg1MC1cdG10NzkyMV9tYWNfc3RhX3BvbGwoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjg1MTpcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NTItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9ODU4PXZvaWQgbXQ3OTIxX3NldF9pcHY2X25zX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODU5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjg2MDpcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG10NzkyeF9kZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NjEtXHRcdFx0XHRcdCAgICAgIGlwdjZfbnNfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODcxOlx0XHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODcyLVx0XHRyZXQgPSBtdDc2X21jdV9za2Jfc2VuZF9tc2coXHUwMDI2ZGV2LVx1MDAzZW10NzYsIHNrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTg3My1cdFx0XHRcdFx0ICAgIE1DVV9VTklfQ01EKE9GRkxPQUQpLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjg3NDpcdFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTg3NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM9MTM9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjE0Om10NzkyMV9pbml0X2hlX2NhcHMoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgZW51bSBubDgwMjExX2JhbmQgYmFuZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0xNS1cdFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfc2JhbmRfaWZ0eXBlX2RhdGEgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTE5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzoxOTY6dm9pZCBtdDc5MjFfc2V0X3N0cmVhbV9oZV9jYXBzKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMTk3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjIyNzppbnQgX19tdDc5MjFfc3RhcnQoc3RydWN0IG10NzkyeF9waHkgKnBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yMjgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjQ4Olx0bXQ3OTJ4X21hY19yZXNldF9jb3VudGVycyhwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI0OS1cdHNldF9iaXQoTVQ3Nl9TVEFURV9SVU5OSU5HLCBcdTAwMjZtcGh5LVx1MDAzZXN0YXRlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM9MjcyPXN0YXRpYyBpbnQgbXQ3OTIxX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI3My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6Mjc0Olx0c3RydWN0IG10NzkyeF9waHkgKnBoeSA9IG10NzkyeF9od19waHkoaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI3NS1cdGludCBlcnI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI3NzpcdG10NzkyeF9tdXRleF9hY3F1aXJlKHBoeS1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI3OC1cdGVyciA9IF9fbXQ3OTIxX3N0YXJ0KHBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6Mjc5Olx0bXQ3OTJ4X211dGV4X3JlbGVhc2UocGh5LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjgwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYz0yODQ9c3RhdGljIHZvaWQgbXQ3OTIxX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yODUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI4NjpcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBtdDc5MnhfaHdfZGV2KGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yODctXHRpbnQgZXJyID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjg5LVx0aWYgKG10NzZfaXNfbW1pbyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzoyOTA6XHRcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjkxLVx0XHRlcnIgPSBtdDc5MjFfbWN1X3JhZGlvX2xlZF9jdHJsKGRldiwgRVhUX0NNRF9SQURJT19PRkZfTEVEKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzoyOTI6XHRcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjkzLVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yOTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6Mjk3Olx0bXQ3OTJ4X3N0b3AoaHcsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yOTgtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYz0zMDE9bXQ3OTIxX2FkZF9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzAyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozMDM6XHRzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqbXZpZiA9IChzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqKXZpZi1cdTAwM2VkcnZfcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozMDQ6XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gbXQ3OTJ4X2h3X2Rldihodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzA1Olx0c3RydWN0IG10NzkyeF9waHkgKnBoeSA9IG10NzkyeF9od19waHkoaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTMwNi1cdHN0cnVjdCBtdDc2X3R4cSAqbXR4cTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjMwOTpcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzEwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zNTQtXHRJTklUX1dPUksoXHUwMDI2bXZpZi1cdTAwM2Vjc2Ffd29yaywgbXQ3OTIxX2NzYV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozNTU6XHR0aW1lcl9zZXR1cChcdTAwMjZtdmlmLVx1MDAzZWNzYV90aW1lciwgbXQ3OTJ4X2NzYV90aW1lciwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzU2LW91dDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozNTc6XHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM1OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM9MzYyPXN0YXRpYyB2b2lkIG10NzkyMV9yb2NfaXRlcih2b2lkICpwcml2LCB1OCAqbWFjLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zNjQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjM2NTpcdHN0cnVjdCBtdDc5MnhfdmlmICptdmlmID0gKHN0cnVjdCBtdDc5MnhfdmlmICopdmlmLVx1MDAzZWRydl9wcml2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjM2NjpcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBwcml2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM2Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjM3MTp2b2lkIG10NzkyMV9yb2NfYWJvcnRfc3luYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM3Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzczOlx0c3RydWN0IG10NzkyeF9waHkgKnBoeSA9IFx1MDAyNmRldi1cdTAwM2VwaHk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzc0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYz0zODc9dm9pZCBtdDc5MjFfcm9jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM4OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6Mzg5Olx0c3RydWN0IG10NzkyeF9waHkgKnBoeTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zOTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzkxOlx0cGh5ID0gKHN0cnVjdCBtdDc5MnhfcGh5ICopY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBtdDc5MnhfcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM5Mi1cdFx0XHRcdFx0XHRyb2Nfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjM5NDpcdG10NzkyeF9tdXRleF9hY3F1aXJlKHBoeS1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM5NS1cdGlmICghdGVzdF9hbmRfY2xlYXJfYml0KE1UNzZfU1RBVEVfUk9DLCBcdTAwMjZwaHktXHUwMDNlbXQ3Ni1cdTAwM2VzdGF0ZSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozOTY6XHRcdG10NzkyeF9tdXRleF9yZWxlYXNlKHBoeS1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM5Ny1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00MDEtXHRcdFx0XHRcdCAgICBtdDc5MjFfcm9jX2l0ZXIsIHBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6NDAyOlx0bXQ3OTJ4X211dGV4X3JlbGVhc2UocGh5LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtNDAzLVx0aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQocGh5LVx1MDAzZW10NzYtXHUwMDNlaHcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00MDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6NDA2OnN0YXRpYyBpbnQgbXQ3OTIxX2Fib3J0X3JvYyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqdmlmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQwNy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQxMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0MTM6XHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShwaHktXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00MTQtXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE1UNzZfU1RBVEVfUk9DLCBcdTAwMjZwaHktXHUwMDNlbXQ3Ni1cdTAwM2VzdGF0ZSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtNDE1LVx0XHRlcnIgPSBtdDc5MjFfbWN1X2Fib3J0X3JvYyhwaHksIHZpZiwgcGh5LVx1MDAzZXJvY190b2tlbl9pZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6NDE2Olx0bXQ3OTJ4X211dGV4X3JlbGVhc2UocGh5LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtNDE3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00MjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6NDIxOnN0YXRpYyBpbnQgbXQ3OTIxX3NldF9yb2Moc3RydWN0IG10NzkyeF9waHkgKnBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0MjI6XHRcdFx0ICBzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqdmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQyMy1cdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM9NDUxPXN0YXRpYyBpbnQgbXQ3OTIxX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00NTYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjQ1NzpcdHN0cnVjdCBtdDc5MnhfdmlmICptdmlmID0gKHN0cnVjdCBtdDc5MnhfdmlmICopdmlmLVx1MDAzZWRydl9wcml2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjQ1ODpcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBtdDc5MnhfaHdfcGh5KGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00NTktXHRpbnQgZXJyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQ2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0NjE6XHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShwaHktXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00NjItXHRlcnIgPSBtdDc5MjFfc2V0X3JvYyhwaHksIG12aWYsIGNoYW4sIGR1cmF0aW9uLCBNVDc5MjFfUk9DX1JFUV9ST0MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjQ2MzpcdG10NzkyeF9tdXRleF9yZWxlYXNlKHBoeS1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQ2NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM9NDY4PXN0YXRpYyBpbnQgbXQ3OTIxX2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtNDcwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0NzE6XHRzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqbXZpZiA9IChzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqKXZpZi1cdTAwM2VkcnZfcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0NzI6XHRzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5ID0gbXQ3OTJ4X2h3X3BoeShodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtNDczLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYz00Nzc9aW50IG10NzkyMV9zZXRfY2hhbm5lbChzdHJ1Y3QgbXQ3Nl9waHkgKm1waHkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtNDc4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0Nzk6XHRzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5ID0gbXBoeS1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjQ4MDpcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBwaHktXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQ4MS1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQ4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0ODg6XHRtdDc5MnhfbWFjX3NldF90aW1laW5nKHBoeSk7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTAyOAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE1UNzkyMVUgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgbXQ3OTIxdWAsIHdoaWNoIEkga25vdyBpcyB0aGUgVVNCIGRyaXZlciBmb3IgdGhlIE1UNzkyMSBjaGlwc2V0LiBNeSBmaXJzdCB0aG91Z2h0IGlzOiBjYW4gd2UgZnV6eiB0aGlzIHRoaW5nIGVmZmVjdGl2ZWx5IHdpdGggc3l6a2FsbGVyPyBTcGVjaWZpY2FsbHksIGRvZXMgc3l6a2FsbGVyIGhhdmUgZ29vZCBjb3ZlcmFnZSBmb3IgVVNCIHdpcmVsZXNzIGRldmljZXM/IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIHN0YW5kYXJkIG1ldGhvZHMg4oCTIHRoZSBgdXNiIHJhdyBnYWRnZXRgIGFuZCB0aGUgYHZoY2lgIGFwcHJvYWNoLgoKUmlnaHQsIHN5emthbGxlciAqZG9lcyogaGF2ZSBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMsIGluY2x1ZGluZyB0aGUgZW11bGF0aW9uIG9mIFVTQiBkZXZpY2VzLiBUaGF04oCZcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFNvLCB3aGVuIGEgVVNCIGRldmljZSBpcyAmIzM0O2F0dGFjaGVkLCYjMzQ7IHdoZXRoZXIgdGhyb3VnaCBhIFVTQiBnYWRnZXQgc2V0dXAgb3IgdXNpbmcgYHN5el91c2JfY29ubmVjdGAsIHRoZSBrZXJuZWwgcHJvYmUgZnVuY3Rpb25zIGZvciB0aGUgYXR0YWNoZWQgZGV2aWNlIHdpbGwgYmUgY2FsbGVkLiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHdoYXQgaGFwcGVucyBpbiB0aGF0IHByb2JlLgoKTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBzZWUgaWYgdGhlIGBtdDc5MjF1YCBwcm9iZSBmdW5jdGlvbiBoYW5kbGVzIGVtdWxhdGVkIFVTQiBkZXNjcmlwdG9ycyBhbmQgcmVxdWVzdHMgY29ycmVjdGx5LiBBcmUgdGhlcmUgYW55IG9idmlvdXMgYXJlYXMgd2hlcmUgdGhlIGVtdWxhdGlvbiBtaWdodCBmYWlsPyBJIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyBzcGVjaWZpY2FsbHkgd2l0aGluIGBtdDc2X3BoeV9pbml0YCBhbmQgYG10NzkyeF9pbml0X3dpcGh5YCDigJMgdGhlc2UgYXJlIGxpa2VseSBrZXkgdG8gdGhlIHdpcmVsZXNzIGludGVyZmFjZSBpbml0aWFsaXphdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBmb2xsb3cgdGhlIGV4ZWN1dGlvbiBwYXRoIHRvIHNlZSBpZiBhbnkgYXNzdW1wdGlvbnMgYXJlIGJlaW5nIG1hZGUgdGhhdCB3b3VsZCBiZSBicm9rZW4gYnkgYW4gZW11bGF0ZWQgZW52aXJvbm1lbnQuCgpUbyBnZXQgc3RhcnRlZCwgSSYjMzk7bGwgbmVlZCB0byBkaXZlIGludG8gdGhlIGNvZGUuIEkmIzM5O2xsIHN0YXJ0IHdpdGggYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jYCwgb3IgcmVhbGx5IGFueSBvdGhlciByZWxldmFudCBVU0IgZHJpdmVyIHdpdGhpbiB0aGUgYG10NzZgIGRpcmVjdG9yeS4gSSYjMzk7bGwgbmVlZCB0byBjb3JyZWxhdGUgdGhlIGRlc2NyaXB0b3IgZGVmaW5pdGlvbnMgdG8gdGhlIGluaXRpYWxpemF0aW9uIHN0ZXBzIHRvIGdldCBhIHNlbnNlIG9mIHdoZXJlIGZ1enppbmcgbWlnaHQgYmUgbW9zdCBlZmZlY3RpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3VzYl9kcml2ZXJ8dXNiX3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYz0yNjU9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzY2M3VfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI3Ny19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM6Mjc4Om1vZHVsZV91c2JfZHJpdmVyKG10NzY2M3VfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI3OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYz0zNDU9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzZ4MF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzU1LX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzozNTY6bW9kdWxlX3VzYl9kcml2ZXIobXQ3NngwX2RyaXZlcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmM9MTM3PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc2eDJ1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy0xNDktfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jOjE1MDptb2R1bGVfdXNiX2RyaXZlcihtdDc2eDJ1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy0xNTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MzM4PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc5MjF1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNTAtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjM1MTptb2R1bGVfdXNiX2RyaXZlcihtdDc5MjF1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNTItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MzU1PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc5MjV1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNjctfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM2ODptb2R1bGVfdXNiX2RyaXZlcihtdDc5MjV1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNjktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzMzUKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAxMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGl2aW5nIGludG8gdGhlIE1lZGlhdGVrIERyaXZlciBDb2RlKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIE1lZGlhdGVrIFdpLUZpIHNpdHVhdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGNvcmUgb2YgdGhlIHByb2JsZW0uIFRoYXQgbWVhbnMgY3JhY2tpbmcgb3BlbiB0aGUgZHJpdmVyIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIGBtYWM4MDIxMS5jYCBhbmQgYG10NzkyeF9jb3JlLmNgIGZpbGVzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZgIGRpcmVjdG9yeS4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSB0YWtpbmcgYSBjbG9zZSBsb29rIGF0IGBtYWM4MDIxMS5jYCBhcm91bmQgbGluZSA0MzksIGFuZCB0aGVuIHNoaWZ0IG15IGF0dGVudGlvbiB0byBgbXQ3OTJ4X2NvcmUuY2AsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSA4MjAuIEhvcGVmdWxseSwgdGhlIGluZm9ybWF0aW9uIEkgZmluZCBpbiB0aGVzZSBzcGVjaWZpYyBzZWN0aW9ucyB3aWxsIGlsbHVtaW5hdGUgdGhlIGlzc3VlLiBJJiMzOTttIGhvcGluZyB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBlbGVtZW50cyBpbnRlcnJlbGF0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDI1Olx0XG4gNDI2Olx0c3RhdGljIGludFxuIDQyNzpcdG10NzZfcGh5X2luaXQoc3RydWN0IG10NzZfcGh5ICpwaHksIHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuIDQyODpcdHtcbiA0Mjk6XHRcdHN0cnVjdCBtdDc2X2RldiAqZGV2ID0gcGh5LVx1MDAzZWRldjtcbiA0MzA6XHRcdHN0cnVjdCB3aXBoeSAqd2lwaHkgPSBody1cdTAwM2V3aXBoeTtcbiA0MzE6XHRcbiA0MzI6XHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNnBoeS1cdTAwM2V0eF9saXN0KTtcbiA0MzM6XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNnBoeS1cdTAwM2V0eF9sb2NrKTtcbiA0MzQ6XHRcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNnBoeS1cdTAwM2Vyb2Nfd29yaywgbXQ3Nl9yb2NfY29tcGxldGVfd29yayk7XG4gNDM1Olx0XG4gNDM2Olx0XHRpZiAoKHZvaWQgKilwaHkgIT0gaHctXHUwMDNlcHJpdilcbiA0Mzc6XHRcdFx0cmV0dXJuIDA7XG4gNDM4Olx0XG4gNDM5Olx0XHRTRVRfSUVFRTgwMjExX0RFVihodywgZGV2LVx1MDAzZWRldik7XG4gNDQwOlx0XHRTRVRfSUVFRTgwMjExX1BFUk1fQUREUihodywgcGh5LVx1MDAzZW1hY2FkZHIpO1xuIDQ0MTpcdFxuIDQ0MjpcdFx0d2lwaHktXHUwMDNlZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SIHxcbiA0NDM6XHRcdFx0XHQgICBOTDgwMjExX0ZFQVRVUkVfQVBfTU9ERV9DSEFOX1dJRFRIX0NIQU5HRTtcbiA0NDQ6XHRcdHdpcGh5LVx1MDAzZWZsYWdzIHw9IFdJUEhZX0ZMQUdfSEFTX0NIQU5ORUxfU1dJVENIIHxcbiA0NDU6XHRcdFx0XHRXSVBIWV9GTEFHX1NVUFBPUlRTX1RETFMgfFxuIDQ0NjpcdFx0XHRcdFdJUEhZX0ZMQUdfQVBfVUFQU0Q7XG4gNDQ3Olx0XG4gNDQ4Olx0XHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQ1FNX1JTU0lfTElTVCk7XG4gNDQ5Olx0XHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQUlSVElNRV9GQUlSTkVTUyk7XG4gNDUwOlx0XHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQVFMKTtcbiA0NTE6XHRcbiA0NTI6XHRcdGlmICghd2lwaHktXHUwMDNlbWF4X3JlbWFpbl9vbl9jaGFubmVsX2R1cmF0aW9uKVxuIDQ1MzpcdFx0XHR3aXBoeS1cdTAwM2VtYXhfcmVtYWluX29uX2NoYW5uZWxfZHVyYXRpb24gPSA1MDAwO1xuIDQ1NDpcdFx0aWYgKCF3aXBoeS1cdTAwM2VhdmFpbGFibGVfYW50ZW5uYXNfdHgpXG4gNDU1Olx0XHRcdHdpcGh5LVx1MDAzZWF2YWlsYWJsZV9hbnRlbm5hc190eCA9IHBoeS1cdTAwM2VhbnRlbm5hX21hc2s7XG4gNDU2Olx0XHRpZiAoIXdpcGh5LVx1MDAzZWF2YWlsYWJsZV9hbnRlbm5hc19yeClcbiA0NTc6XHRcdFx0d2lwaHktXHUwMDNlYXZhaWxhYmxlX2FudGVubmFzX3J4ID0gcGh5LVx1MDAzZWFudGVubmFfbWFzaztcbiA0NTg6XHRcbiA0NTk6XHRcdHdpcGh5LVx1MDAzZXNhcl9jYXBhID0gXHUwMDI2bXQ3Nl9zYXJfY2FwYTtcbiA0NjA6XHRcdHBoeS1cdTAwM2VmcnAgPSBkZXZtX2tjYWxsb2MoZGV2LVx1MDAzZWRldiwgd2lwaHktXHUwMDNlc2FyX2NhcGEtXHUwMDNlbnVtX2ZyZXFfcmFuZ2VzLFxuIDQ2MTpcdFx0XHRcdFx0c2l6ZW9mKHN0cnVjdCBtdDc2X2ZyZXFfcmFuZ2VfcG93ZXIpLFxuIDQ2MjpcdFx0XHRcdFx0R0ZQX0tFUk5FTCk7XG4gNDYzOlx0XHRpZiAoIXBoeS1cdTAwM2VmcnApXG4gNDY0Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDA0OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNDY5CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipEaXZpbmcgaW50byB0aGUgTVQ3OTJ4IEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIHdlIG5lZWQgdG8gdGhvcm91Z2hseSB1bmRlcnN0YW5kIGhvdyB0aGlzIE1UNzkyeCBkcml2ZXIgaXMgaW5pdGlhbGl6aW5nIHRoZSBXaS1GaSBQSFkuIEkgc2hvdWxkIGRlZmluaXRlbHkgY2hlY2sgb3V0IGBtdDc5MnhfaW5pdF93aXBoeWAgdG8gZ3Jhc3AgdGhpcy4gVGhhdCBmdW5jdGlvbiwgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmNgLCBpcyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGNvcmUgV2ktRmkgZnVuY3Rpb25hbGl0eSBpcyBiZWluZyBzZXQgdXAuIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSB0aGluZ3MgbGlrZSB0aGUgcmVnaXN0cmF0aW9uIG9mIHRoZSBXaS1GaSBkZXZpY2Ugd2l0aCB0aGUga2VybmVsJiMzOTtzIHdpcmVsZXNzIHN1YnN5c3RlbSwgYW5kIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHJhZGlvIGFuZCBNQUMgbGF5ZXJzLiBVbmRlcnN0YW5kaW5nIHRoaXMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgaXMgY3JpdGljYWwgZm9yIGFueSB0cm91Ymxlc2hvb3Rpbmcgb3IgbW9kaWZpY2F0aW9uIGVmZm9ydHMgZnVydGhlciBkb3duIHRoZSBsaW5lLiBJIHdhbnQgdG8gc2VlIGV4YWN0bHkgaG93IHRoZXkmIzM5O3JlIGhhbmRsaW5nIHRoZSBoYXJkd2FyZSBhbmQgd2hhdCB0aGUgaW5pdGlhbCBzdGF0ZSBpcy4gVGltZSB0byBkaWcgaW4hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDA0OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODA1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA4MDU6XHRcdFx0d2lwaHktXHUwMDNlbmFuX2NhcGEubWF4X2NoYW5uZWxfc3dpdGNoX3RpbWUgPSAxMjtcbiA4MDY6XHRcdFx0d2lwaHktXHUwMDNlbmFuX2NhcGEuZGV2X2NhcGFiaWxpdGllcyA9IE5BTl9ERVZfQ0FQQV9FWFRfS0VZX0lEX1NVUFBPUlRFRDtcbiA4MDc6XHRcdFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX1NFQ1VSRV9OQU4pO1xuIDgwODpcdFx0fVxuIDgwOTpcdFxuIDgxMDpcdFx0d2lwaHktXHUwMDNlbWF4X3NjYW5faWVfbGVuID0gTVQ3Nl9DT05OQUNfU0NBTl9JRV9MRU47XG4gODExOlx0XHR3aXBoeS1cdTAwM2VtYXhfc2Nhbl9zc2lkcyA9IDQ7XG4gODEyOlx0XHR3aXBoeS1cdTAwM2VtYXhfc2NoZWRfc2Nhbl9wbGFuX2ludGVydmFsID1cbiA4MTM6XHRcdFx0TVQ3Nl9DT05OQUNfTUFYX1RJTUVfU0NIRURfU0NBTl9JTlRFUlZBTDtcbiA4MTQ6XHRcdHdpcGh5LVx1MDAzZW1heF9zY2hlZF9zY2FuX2llX2xlbiA9IElFRUU4MDIxMV9NQVhfREFUQV9MRU47XG4gODE1Olx0XHR3aXBoeS1cdTAwM2VtYXhfc2NoZWRfc2Nhbl9zc2lkcyA9IE1UNzZfQ09OTkFDX01BWF9TQ0hFRF9TQ0FOX1NTSUQ7XG4gODE2Olx0XHR3aXBoeS1cdTAwM2VtYXhfbWF0Y2hfc2V0cyA9IE1UNzZfQ09OTkFDX01BWF9TQ0FOX01BVENIO1xuIDgxNzpcdFx0d2lwaHktXHUwMDNlbWF4X3NjaGVkX3NjYW5fcmVxcyA9IDE7XG4gODE4Olx0XHR3aXBoeS1cdTAwM2VmbGFncyB8PSBXSVBIWV9GTEFHX0hBU19DSEFOTkVMX1NXSVRDSCB8XG4gODE5Olx0XHRcdFx0V0lQSFlfRkxBR19TUExJVF9TQ0FOXzZHSFo7XG4gODIwOlx0XG4gODIxOlx0XHR3aXBoeS1cdTAwM2VmZWF0dXJlcyB8PSBOTDgwMjExX0ZFQVRVUkVfU0NIRURfU0NBTl9SQU5ET01fTUFDX0FERFIgfFxuIDgyMjpcdFx0XHRcdCAgIE5MODAyMTFfRkVBVFVSRV9TQ0FOX1JBTkRPTV9NQUNfQUREUjtcbiA4MjM6XHRcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9TRVRfU0NBTl9EV0VMTCk7XG4gODI0Olx0XHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQkVBQ09OX1JBVEVfTEVHQUNZKTtcbiA4MjU6XHRcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9CRUFDT05fUkFURV9IVCk7XG4gODI2Olx0XHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQkVBQ09OX1JBVEVfVkhUKTtcbiA4Mjc6XHRcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9CRUFDT05fUkFURV9IRSk7XG4gODI4Olx0XHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQUNLX1NJR05BTF9TVVBQT1JUKTtcbiA4Mjk6XHRcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9DQU5fUkVQTEFDRV9QVEswKTtcbiA4MzA6XHRcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9NVUxUSUNBU1RfUkVHSVNUUkFUSU9OUyk7XG4gODMxOlx0XG4gODMyOlx0XHRpZWVlODAyMTFfaHdfc2V0KGh3LCBTSU5HTEVfU0NBTl9PTl9BTExfQkFORFMpO1xuIDgzMzpcdFx0aWVlZTgwMjExX2h3X3NldChodywgSEFTX1JBVEVfQ09OVFJPTCk7XG4gODM0Olx0XHRpZWVlODAyMTFfaHdfc2V0KGh3LCBTVVBQT1JUU19UWF9FTkNBUF9PRkZMT0FEKTtcbiA4MzU6XHRcdGllZWU4MDIxMV9od19zZXQoaHcsIFNVUFBPUlRTX1JYX0RFQ0FQX09GRkxPQUQpO1xuIDgzNjpcdFx0aWYgKGlzX210NzkyNyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikpXG4gODM3Olx0XHRcdGllZWU4MDIxMV9od19zZXQoaHcsIE5PX1ZJUlRVQUxfTU9OSVRPUik7XG4gODM4Olx0XHRlbHNlXG4gODM5Olx0XHRcdGllZWU4MDIxMV9od19zZXQoaHcsIFdBTlRfTU9OSVRPUl9WSUYpO1xuIDg0MDpcdFx0aWVlZTgwMjExX2h3X3NldChodywgU1VQUE9SVFNfUFMpO1xuIDg0MTpcdFx0aWVlZTgwMjExX2h3X3NldChodywgU1VQUE9SVFNfRFlOQU1JQ19QUyk7XG4gODQyOlx0XHRpZWVlODAyMTFfaHdfc2V0KGh3LCBTVVBQT1JUU19WSFRfRVhUX05TU19CVyk7XG4gODQzOlx0XHRpZWVlODAyMTFfaHdfc2V0KGh3LCBDT05ORUNUSU9OX01PTklUT1IpO1xuIDg0NDpcdFx0aWVlZTgwMjExX2h3X3NldChodywgU1VQUE9SVFNfTVVMVElfQlNTSUQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDg3MwoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBhIENvZGUgQ29tbWl0KioKCkFscmlnaHQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSAqd2h5KiBiZWhpbmQgdGhpcyBjb21taXQuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8ganVtcCBzdHJhaWdodCBpbnRvIHRoZSBjb2RlIGNoYW5nZXMsIHNlZSB3aGF0JiMzOTtzIGRpZmZlcmVudCBhbmQgaG93LCBidXQgdGhhdCYjMzk7cyBvZnRlbiBhIHNob3J0Y3V0IHRvIG1pc3VuZGVyc3RhbmRpbmcuIEkgbmVlZCBjb250ZXh0IGZpcnN0LiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgdGhlIGNvbW1pdCBtZXNzYWdlIGFuZCBkaWcgdGhyb3VnaCB0aGUgZ2l0IGhpc3RvcnkuIE1heWJlIHRoaXMgaXMgYSBxdWljayBmaXgsIG1heWJlIGEgbGFyZ2VyIHJlZmFjdG9yIOKAkyBjb250ZXh0IGlzIGtpbmcgaGVyZS4gVGhlIG1lc3NhZ2Ugc2hvdWxkIGlkZWFsbHkgdGVsbCBtZSB0aGUgc3RvcnkuIExldCYjMzk7cyBzZWUgaWYgdGhlIGxvZyBjYW4gZ2l2ZSBtZSBzb21lIHJlY2VudCBjb21taXRzIG9yIHN1cnJvdW5kaW5nIGNvbnRleHQuIFRoaXMgd2lsbCBob3BlZnVsbHkgc2F2ZSBtZSBzb21lIHRpbWUgYW5kIGFsbG93IG1lIHRvIGRldGVybWluZSB0aGUgdHJ1ZSBuYXR1cmUgb2YgdGhpcyBjb21taXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDA0OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bm9fYWN0aXZlX21vbml0b3ImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTExMQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS2VybmVsIFBhdGNoOiBEaXNzZWN0aW5nIHRoZSBSZW1vdmFsIG9mIGBub19hY3RpdmVfbW9uaXRvcmAqKgoKT2theSwgc28gdGhpcyBwYXRjaCBudWtlZCBgbm9fYWN0aXZlX21vbml0b3JgIGZyb20gdGhlIGtlcm5lbCB0cmVlLCBiYXNpY2FsbHkgZXZlcnl3aGVyZS4gSW50ZXJlc3RpbmcuIFRpbWUgdG8gZGlnIGluIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBhY3QuIEkgbmVlZCB0byBzZWUgKndoZXJlKiB0aGlzIHZhcmlhYmxlIHdhcyBiZWluZyB1c2VkIGFuZCBob3cgaXRzIHJlbW92YWwgY2hhbmdlcyB0aGUgbGFuZHNjYXBlLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCB0aGUgY2FsbHMgdG8gYG10NzZfcGh5X2luaXRgIGFuZCBgbXQ3OTJ4X2luaXRfd2lwaHlgLiBUaG9zZSBzZWVtIGxpa2UgbG9naWNhbCBlbnRyeSBwb2ludHMgZm9yIG1vbml0b3IgbW9kZSBmdW5jdGlvbmFsaXR5IGFuZCBpbml0aWFsaXphdGlvbiwgc28gSSYjMzk7bSBndWVzc2luZyB0aGF0JiMzOTtzIHdoZXJlIHRoZSByYW1pZmljYXRpb25zIG9mIHJlbW92aW5nIHRoaXMgdmFyaWFibGUgd2lsbCBiZSBtb3N0IHJlYWRpbHkgYXBwYXJlbnQuIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgc29tZSBwb3RlbnRpYWwgcmFtaWZpY2F0aW9ucyBvbiB0aGUgZHJpdmVyJiMzOTtzIGFiaWxpdHkgdG8gcHJvcGVybHkgaGFuZGxlIG1vbml0b3IgbW9kZS4gRGVwZW5kaW5nIG9uICpob3cqIGBub19hY3RpdmVfbW9uaXRvcmAgd2FzIHVzZWQsIGl0IGNvdWxkIHJlcHJlc2VudCBhIGNoYW5nZSBpbiBiZWhhdmlvciwgZnVuY3Rpb25hbGl0eSBvciwgcG90ZW50aWFsbHksIGEgYnVnLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgd2FzIGEgY2xlYW51cCwgYSByZWZhY3Rvciwgb3Igc29tZXRoaW5nIG1vcmUuIEFscmlnaHQsIGxldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29kZSBzYXlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X3BoeV9pbml0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz00MjY9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjQyNzptdDc2X3BoeV9pbml0KHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy00Mjgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz01NTA9aW50IG10NzZfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBib29sIHZodCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNTU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjU1NTpcdHJldCA9IG10NzZfcGh5X2luaXQocGh5LCBwaHktXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTU1Ni1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTc0Nz1pbnQgbXQ3Nl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYsIGJvb2wgdmh0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy03NTUtXHRtdDc2X3djaWRfaW5pdChcdTAwMjZkZXYtXHUwMDNlZ2xvYmFsX3djaWQsIHBoeS1cdTAwM2ViYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6NzU2Olx0cmV0ID0gbXQ3Nl9waHlfaW5pdChwaHksIGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy03NTctXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTg1NgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqVHJhY2luZyB0aGUgSW5pdGlhbGl6YXRpb24gb2YgbXQ3OTJ4X3dpcGh5KioKCk9rYXksIHRpbWUgdG8gZGlnIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBtdDc5Mnhfd2lwaHlgIGlzIGluaXRpYWxpemVkLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGNhbGwgY2hhaW4sIHdoZXJlIGRvZXMgdGhlIGBtdDc5MnhfaW5pdF93aXBoeWAgZnVuY3Rpb24gY29tZSBpbnRvIHBsYXk/IEkgbmVlZCB0byBmaW5kIGFsbCB0aGUgcGxhY2VzIGl0JiMzOTtzIGFjdHVhbGx5IGludm9rZWQuIEtub3dpbmcgdGhlIHBvaW50cyBvZiBlbnRyeSB3aWxsIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBhbmQgdGhlIGJyb2FkZXIgc3lzdGVtIGJlaGF2aW9yIHRoYXQgcmVsaWVzIG9uIGl0LiBJIG5lZWQgdG8gbG9jYXRlIGFsbCByZWZlcmVuY2VzIHRvIHRoYXQgZnVuY3Rpb24uIFRpbWUgdG8gc3RhcnQgc2VhcmNoaW5nIHRoZSBjb2RlIGJhc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDA0OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyeF9pbml0X3dpcGh5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYz0xNzA9aW50IG10NzkyMV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjIyNzpcdHJldCA9IG10NzkyeF9pbml0X3dpcGh5KGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0yMjgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYz0yNDM9aW50IG10NzkyNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI5ODpcdHJldCA9IG10NzkyeF9pbml0X3dpcGh5KGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yOTktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg9NTIxPWludCBtdDc5MnhfcG1faWRsZV90aW1lb3V0X2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oOjUyMjppbnQgbXQ3OTJ4X2luaXRfd2lwaHkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC01MjMtc3RydWN0IGllZWU4MDIxMV9vcHMgKlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYz03NDg9RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTJ4X3NldF9jb3ZlcmFnZV9jbGFzcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmMtNzQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jOjc1MDppbnQgbXQ3OTJ4X2luaXRfd2lwaHkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmMtNzUxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmMtODU2LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYzo4NTc6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTJ4X2luaXRfd2lwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jLTg1OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY3NzgKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAxMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgbXQ3OTIxYCBEcml2ZXIgUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIGBtdDc5MjFgIGRyaXZlciBnZXRzIGluaXRpYWxpemVkLiBUaGUgY29yZSBmdW5jdGlvbiBoZXJlLCBgbXQ3OTIxX3JlZ2lzdGVyX2RldmljZWAsIGlzIHRyaWdnZXJlZCBiYXNlZCBvbiB0aGUgYnVzIHR5cGU6IFVTQiAoYG10NzkyMXVgKSwgUENJZSAoYG10NzkyMWVgKSwgb3IgU0RJTyAoYG10NzkyMXNgKS4gTm93LCBJJiMzOTttIGdldHRpbmcgYSBsaXR0bGUgY3VyaW91cyBhYm91dCB0aGUgZnV6emluZyBwb3RlbnRpYWwuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB3b25kZXJpbmcgaWYgYSBVU0ItYmFzZWQgcHJvYmUgdXNpbmcgYG10NzkyMXVgIGNvdWxkIGJlIGEgdmlhYmxlIHRhcmdldCBmb3IgZnV6emluZy4gSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgVVNCIGltcGxlbWVudGF0aW9uIHRvIGFzc2VzcyB0aGUgYXR0YWNrIHN1cmZhY2UuIFRpbWUgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuY2AgYW5kIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZyB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjkwOlx0XG4gMjkxOlx0c3RhdGljIGludCBtdDc5MjF1X3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbiAyOTI6XHR7XG4gMjkzOlx0XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcbiAyOTQ6XHRcdHN0cnVjdCBtdDc2X2Nvbm5hY19wbSAqcG0gPSBcdTAwMjZkZXYtXHUwMDNlcG07XG4gMjk1Olx0XHRib29sIHJlaW5pdCA9IHRydWU7XG4gMjk2Olx0XHRpbnQgZXJyLCBpO1xuIDI5NzpcdFxuIDI5ODpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgMTA7IGkmIzQzOyYjNDM7KSB7XG4gMjk5Olx0XHRcdHUzMiB2YWwgPSBtdDc2X3JyKGRldiwgTVRfV0ZfU1dfREVGX0NSX1VTQl9NQ1VfRVZFTlQpO1xuIDMwMDpcdFxuIDMwMTpcdFx0XHRpZiAoISh2YWwgXHUwMDI2IE1UX1dGX1NXX1NFUl9UUklHR0VSX1NVU1BFTkQpKSB7XG4gMzAyOlx0XHRcdFx0cmVpbml0ID0gZmFsc2U7XG4gMzAzOlx0XHRcdFx0YnJlYWs7XG4gMzA0Olx0XHRcdH1cbiAzMDU6XHRcdFx0aWYgKHZhbCBcdTAwMjYgTVRfV0ZfU1dfU0VSX0RPTkVfU1VTUEVORCkge1xuIDMwNjpcdFx0XHRcdG10NzZfd3IoZGV2LCBNVF9XRl9TV19ERUZfQ1JfVVNCX01DVV9FVkVOVCwgMCk7XG4gMzA3Olx0XHRcdFx0YnJlYWs7XG4gMzA4Olx0XHRcdH1cbiAzMDk6XHRcbiAzMTA6XHRcdFx0bXNsZWVwKDIwKTtcbiAzMTE6XHRcdH1cbiAzMTI6XHRcbiAzMTM6XHRcdGlmIChyZWluaXQgfHwgbXQ3OTJ4X2RtYV9uZWVkX3JlaW5pdChkZXYpKSB7XG4gMzE0Olx0XHRcdGVyciA9IG10NzkyeHVfZG1hX2luaXQoZGV2LCB0cnVlKTtcbiAzMTU6XHRcdFx0aWYgKGVycilcbiAzMTY6XHRcdFx0XHRnb3RvIGZhaWxlZDtcbiAzMTc6XHRcdH1cbiAzMTg6XHRcbiAzMTk6XHRcdGVyciA9IG10NzZ1X3Jlc3VtZV9yeChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gMzIwOlx0XHRpZiAoZXJyIFx1MDAzYyAwKVxuIDMyMTpcdFx0XHRnb3RvIGZhaWxlZDtcbiAzMjI6XHRcbiAzMjM6XHRcdGVyciA9IG10NzZfY29ubmFjX21jdV9zZXRfaGlmX3N1c3BlbmQoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIGZhbHNlLCB0cnVlKTtcbiAzMjQ6XHRmYWlsZWQ6XG4gMzI1Olx0XHRwbS1cdTAwM2VzdXNwZW5kZWQgPSBmYWxzZTtcbiAzMjY6XHRcbiAzMjc6XHRcdGlmIChlcnIgXHUwMDNjIDApXG4gMzI4Olx0XHRcdG10NzkyeF9yZXNldChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gMzI5Olx0XG4gMzMwOlx0XHRyZXR1cm4gZXJyO1xuIDMzMTpcdH1cbiAzMzI6XHQjZW5kaWYgLyogQ09ORklHX1BNICovXG4gMzMzOlx0XG4gMzM0Olx0TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIG10NzkyMXVfZGV2aWNlX3RhYmxlKTtcbiAzMzU6XHRNT0RVTEVfRklSTVdBUkUoTVQ3OTIxX0ZJUk1XQVJFX1dNKTtcbiAzMzY6XHRNT0RVTEVfRklSTVdBUkUoTVQ3OTIxX1JPTV9QQVRDSCk7XG4gMzM3Olx0XG4gMzM4Olx0c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzkyMXVfZHJpdmVyID0ge1xuIDMzOTpcdFx0Lm5hbWVcdFx0PSBLQlVJTERfTU9ETkFNRSxcbiAzNDA6XHRcdC5pZF90YWJsZVx0PSBtdDc5MjF1X2RldmljZV90YWJsZSxcbiAzNDE6XHRcdC5wcm9iZVx0XHQ9IG10NzkyMXVfcHJvYmUsXG4gMzQyOlx0XHQuZGlzY29ubmVjdFx0PSBtdDc5Mnh1X2Rpc2Nvbm5lY3QsXG4gMzQzOlx0I2lmZGVmIENPTkZJR19QTVxuIDM0NDpcdFx0LnN1c3BlbmRcdD0gbXQ3OTIxdV9zdXNwZW5kLFxuIDM0NTpcdFx0LnJlc3VtZVx0XHQ9IG10NzkyMXVfcmVzdW1lLFxuIDM0NjpcdFx0LnJlc2V0X3Jlc3VtZVx0PSBtdDc5MjF1X3Jlc3VtZSxcbiAzNDc6XHQjZW5kaWYgLyogQ09ORklHX1BNICovXG4gMzQ4Olx0XHQuc29mdF91bmJpbmRcdD0gMSxcbiAzNDk6XHRcdC5kaXNhYmxlX2h1Yl9pbml0aWF0ZWRfbHBtID0gMSxcbiAzNTA6XHR9O1xuIDM1MTpcdG1vZHVsZV91c2JfZHJpdmVyKG10NzkyMXVfZHJpdmVyKTtcbiAzNTI6XHRcbiAzNTM6XHRNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7TWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSB3aXJlbGVzcyBkcml2ZXJcJiMzNDspO1xuIDM1NDpcdE1PRFVMRV9BVVRIT1IoXCYjMzQ7TG9yZW56byBCaWFuY29uaSBcdTAwM2Nsb3JlbnpvQGtlcm5lbC5vcmdcdTAwM2VcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODE3MQoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYG10NzkyMXVfcHJvYmVgIGZ1bmN0aW9uLi4uCgoqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiBgbXQ3OTIxdV9wcm9iZWAqKgoKQWxyaWdodCwgSSYjMzk7bSBsb29raW5nIGF0IGBtdDc5MjF1X3Byb2JlYC4gVGhhdCBuYW1pbmcgY29udmVudGlvbiBzdWdnZXN0cyB0aGlzIGlzIGxpa2VseSB0aGUgcHJvYmUgZnVuY3Rpb24gZm9yIGEgTWVkaWFUZWsgTVQ3OTIxVS1iYXNlZCBVU0IgZGV2aWNlLiAgR2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIHNpbWlsYXIgZHJpdmVycywgSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyBhIGZldyBrZXkgdGhpbmdzIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yLiBJIGV4cGVjdCB0byBzZWUgdGhlIHR5cGljYWwgVVNCIGRldmljZSBpbml0aWFsaXphdGlvbiBmbG93OiAgZGV2aWNlIGRlc2NyaXB0b3IgYWNxdWlzaXRpb24sIGVuZHBvaW50IGNvbmZpZ3VyYXRpb24sIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCwgaWRlYWxseSwgc29tZSBzb3J0IG9mIHNhbml0eSBjaGVjayB0byBlbnN1cmUgdGhlIFVTQiBkZXZpY2UgaXMgYWN0dWFsbHkgYSBjb21wYXRpYmxlIE1UNzkyMVUgdmFyaWFudCBhbmQgaXNuJiMzOTt0IHNvbWV0aGluZyBtYXNxdWVyYWRpbmcgYXMgb25lLiAgVGhlcmUmIzM5O3MgYWxzbyBnb2luZyB0byBiZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBkZXZpY2Utc3BlY2lmaWMgcmVnaXN0ZXJzLiBJJiMzOTtsbCBleHBlY3QgdG8gc2VlIHRoaXMgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAgdGhlIG5lY2Vzc2FyeSB3b3JrcXVldWVzLCBpbml0aWFsaXppbmcgbXV0ZXhlcyBvciBzcGlubG9ja3MgZm9yIGNvbmN1cnJlbnQgYWNjZXNzIGlmIG5lY2Vzc2FyeS4gSG9wZWZ1bGx5LCB0aGV5IGhhdmVuJiMzOTt0IGZvcmdvdHRlbiBlcnJvciBoYW5kbGluZyDigJMgZ29vZCBwcm9iZSBmdW5jdGlvbnMgYXJlIHJlc2lsaWVudC4gSSYjMzk7bSBrZWVuIHRvIG9ic2VydmUgaG93IHRoZXkgaGFuZGxlIHBvdGVudGlhbCBmYWlsdXJlIHNjZW5hcmlvcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIGxpa2UgVVNCIHRyYW5zZmVyIGVycm9ycyBvciBoYXJkd2FyZSBtYWxmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDA0OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIzMDpcdFx0cmV0ID0gbXQ3NnVfYWxsb2NfbWN1X3F1ZXVlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbiAyMzE6XHRcdGlmIChyZXQpXG4gMjMyOlx0XHRcdGdvdG8gZXJyb3I7XG4gMjMzOlx0XG4gMjM0Olx0XHRyZXQgPSBtdDc2dV9hbGxvY19xdWV1ZXMoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuIDIzNTpcdFx0aWYgKHJldClcbiAyMzY6XHRcdFx0Z290byBlcnJvcjtcbiAyMzc6XHRcbiAyMzg6XHRcdHJldCA9IG10NzkyeHVfZG1hX2luaXQoZGV2LCBmYWxzZSk7XG4gMjM5Olx0XHRpZiAocmV0KVxuIDI0MDpcdFx0XHRnb3RvIGVycm9yO1xuIDI0MTpcdFxuIDI0MjpcdFx0aHcgPSBtdDc2X2h3KGRldik7XG4gMjQzOlx0XHQvKiBjaGVjayBodyBzZyBzdXBwb3J0IGluIG9yZGVyIHRvIGVuYWJsZSBBTVNEVSAqL1xuIDI0NDpcdFx0aHctXHUwMDNlbWF4X3R4X2ZyYWdtZW50cyA9IG1kZXYtXHUwMDNldXNiLnNnX2VuID8gTVRfSFdfVFhQX01BWF9CVUZfTlVNIDogMTtcbiAyNDU6XHRcbiAyNDY6XHRcdHJldCA9IG10NzkyMV9yZWdpc3Rlcl9kZXZpY2UoZGV2KTtcbiAyNDc6XHRcdGlmIChyZXQpXG4gMjQ4Olx0XHRcdGdvdG8gZXJyb3I7XG4gMjQ5Olx0XG4gMjUwOlx0XHRyZXR1cm4gMDtcbiAyNTE6XHRcbiAyNTI6XHRlcnJvcjpcbiAyNTM6XHRcdG10NzZ1X3F1ZXVlc19kZWluaXQoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuIDI1NDpcdFx0bXQ3OTJ4dV9yZXNldF93b3JrX2NsZWFudXAoZGV2KTtcbiAyNTU6XHRcbiAyNTY6XHRcdHVzYl9zZXRfaW50ZmRhdGEodXNiX2ludGYsIE5VTEwpO1xuIDI1NzpcdFxuIDI1ODpcdFx0bXQ3Nl9mcmVlX2RldmljZShcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gMjU5Olx0XG4gMjYwOlx0XHRyZXR1cm4gcmV0O1xuIDI2MTpcdH1cbiAyNjI6XHRcbiAyNjM6XHQjaWZkZWYgQ09ORklHX1BNXG4gMjY0Olx0c3RhdGljIGludCBtdDc5MjF1X3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcbiAyNjU6XHR7XG4gMjY2Olx0XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcbiAyNjc6XHRcdHN0cnVjdCBtdDc2X2Nvbm5hY19wbSAqcG0gPSBcdTAwMjZkZXYtXHUwMDNlcG07XG4gMjY4Olx0XHRpbnQgZXJyO1xuIDI2OTpcdFxuIDI3MDpcdFx0cG0tXHUwMDNlc3VzcGVuZGVkID0gdHJ1ZTtcbiAyNzE6XHRcdGZsdXNoX3dvcmsoXHUwMDI2ZGV2LVx1MDAzZXJlc2V0X3dvcmspO1xuIDI3MjpcdFxuIDI3MzpcdFx0ZXJyID0gbXQ3Nl9jb25uYWNfbWN1X3NldF9oaWZfc3VzcGVuZChcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgdHJ1ZSwgdHJ1ZSk7XG4gMjc0Olx0XHRpZiAoZXJyKVxuIDI3NTpcdFx0XHRnb3RvIGZhaWxlZDtcbiAyNzY6XHRcbiAyNzc6XHRcdG10NzZ1X3N0b3BfcngoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuIDI3ODpcdFx0bXQ3NnVfc3RvcF90eChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gMjc5Olx0XG4gMjgwOlx0XHRyZXR1cm4gMDtcbiAyODE6XHRcbiAyODI6XHRmYWlsZWQ6XG4gMjgzOlx0XHRwbS1cdTAwM2VzdXNwZW5kZWQgPSBmYWxzZTtcbiAyODQ6XHRcbiAyODU6XHRcdGlmIChlcnIgXHUwMDNjIDApXG4gMjg2Olx0XHRcdG10NzkyeF9yZXNldChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gMjg3Olx0XG4gMjg4Olx0XHRyZXR1cm4gZXJyO1xuIDI4OTpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkzMzAKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGl2aW5nIERlZXBlciBpbnRvIHRoZSBtdDc5MjF1IFByb2JlKioKCkFscmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IHRoZSByZW1haW5kZXIgb2YgdGhlIGBtdDc5MjF1X3Byb2JlYCBmdW5jdGlvbi4gSSBhbHJlYWR5IGhhdmUgYSBkZWNlbnQgZ3Jhc3Agb2YgdGhlIG92ZXJhbGwgZHJpdmVyIGFyY2hpdGVjdHVyZSBmb3IgdGhpcyBNZWRpYVRlayBjaGlwLCBhbmQgSSYjMzk7dmUgcHJvYmFibHkgYWxyZWFkeSBpZGVudGlmaWVkIGtleSBhc3BlY3RzIG9mIHRoZSBmdW5jdGlvbiYjMzk7cyBpbml0aWFsIHNldHVwLiBOb3csIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7TGV0JiMzOTtzIGRpZyBpbiBhbmQgZXhhbWluZSB0aGUgbml0dHktZ3JpdHR5IGRldGFpbHMgb2YgaG93IHRoaXMgZnVuY3Rpb24gc2V0cyB1cCB0aGUgVVNCIGRldmljZS4mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGhhcmR3YXJlIGlzIGluaXRpYWxpemVkLCBob3cgdGhlIGRldmljZSBpcyBjb25maWd1cmVkLCBhbmQgd2hhdCByZXNvdXJjZXMgYXJlIGFsbG9jYXRlZC4gV2hhdCBlcnJvciBoYW5kbGluZyBpcyBwcmVzZW50PyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbGx5IHByb2JsZW1hdGljIGFyZWFzIGluIHRoZSBpbml0aWFsIHByb2Jpbmcgc2VxdWVuY2U/IEkmIzM5O20gcHJvYmFibHkgbWVudGFsbHkgY2hlY2tpbmcgZm9yIHRoaW5ncyBsaWtlIERNQSBzZXR1cCwgZW5kcG9pbnQgaW5pdGlhbGl6YXRpb24sIGFuZCB0aGUgcmVnaXN0cmF0aW9uIG9mIGludGVycnVwdCBoYW5kbGVycy4gSSYjMzk7bSBhbHNvIGxvb2tpbmcgZm9yIGFueSBlYXJseSBpbmRpY2F0aW9ucyBvZiBwb3dlciBtYW5hZ2VtZW50IGNvbmZpZ3VyYXRpb24gb3IgZmlybXdhcmUgbG9hZGluZyBwcm9jZWR1cmVzLiBUaGlzICYjMzQ7cmVzdCBvZiBgbXQ3OTIxdV9wcm9iZWAmIzM0OyBpcyBjcml0aWNhbCwgYmVjYXVzZSBpdCYjMzk7cyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLiBJdCYjMzk7cyB0aGUgbGF1bmNocGFkIGZvciB0aGUgZW50aXJlIGRldmljZSBvcGVyYXRpb24sIGFuZCBhbnkgbWlzdGFrZXMgaGVyZSB3aWxsIGNhc2NhZGUgaW50byBtYWpvciBwcm9ibGVtcyBsYXRlciBvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgcHJvYmUgZXN0YWJsaXNoZXMgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciBldmVyeXRoaW5nIHRoYXQgZm9sbG93cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTgwOlx0XHRcdC5yZWFkX2NvcHkgPSBtdDc2dV9yZWFkX2NvcHksXG4gMTgxOlx0XHRcdC53cml0ZV9jb3B5ID0gbXQ3OTJ4dV9jb3B5LFxuIDE4MjpcdFx0XHQudHlwZSA9IE1UNzZfQlVTX1VTQixcbiAxODM6XHRcdH07XG4gMTg0Olx0XHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYodXNiX2ludGYpO1xuIDE4NTpcdFx0c3RydWN0IGllZWU4MDIxMV9vcHMgKm9wcztcbiAxODY6XHRcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xuIDE4NzpcdFx0c3RydWN0IG10NzkyeF9kZXYgKmRldjtcbiAxODg6XHRcdHN0cnVjdCBtdDc2X2RldiAqbWRldjtcbiAxODk6XHRcdHU4IGZlYXR1cmVzO1xuIDE5MDpcdFx0aW50IHJldDtcbiAxOTE6XHRcbiAxOTI6XHRcdG9wcyA9IG10NzkyeF9nZXRfbWFjODAyMTFfb3BzKFx1MDAyNnVzYl9pbnRmLVx1MDAzZWRldiwgXHUwMDI2bXQ3OTIxX29wcyxcbiAxOTM6XHRcdFx0XHRcdCAgICAgICh2b2lkICopaWQtXHUwMDNlZHJpdmVyX2luZm8sIFx1MDAyNmZlYXR1cmVzKTtcbiAxOTQ6XHRcdGlmICghb3BzKVxuIDE5NTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAxOTY6XHRcbiAxOTc6XHRcdG9wcy1cdTAwM2VzdG9wID0gbXQ3OTJ4dV9zdG9wO1xuIDE5ODpcdFx0bWRldiA9IG10NzZfYWxsb2NfZGV2aWNlKFx1MDAyNnVzYl9pbnRmLVx1MDAzZWRldiwgc2l6ZW9mKCpkZXYpLCBvcHMsIFx1MDAyNmRydl9vcHMpO1xuIDE5OTpcdFx0aWYgKCFtZGV2KVxuIDIwMDpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAyMDE6XHRcbiAyMDI6XHRcdGRldiA9IGNvbnRhaW5lcl9vZihtZGV2LCBzdHJ1Y3QgbXQ3OTJ4X2RldiwgbXQ3Nik7XG4gMjAzOlx0XHRkZXYtXHUwMDNlZndfZmVhdHVyZXMgPSBmZWF0dXJlcztcbiAyMDQ6XHRcdGRldi1cdTAwM2VoaWZfb3BzID0gXHUwMDI2aGlmX29wcztcbiAyMDU6XHRcdGF0b21pY19zZXQoXHUwMDI2ZGV2LVx1MDAzZW10NzYuYnVzX2h1bmcsIGZhbHNlKTtcbiAyMDY6XHRcdG10NzkyeHVfcmVzZXRfd29ya19pbml0KGRldik7XG4gMjA3Olx0XG4gMjA4Olx0XHR1c2JfcmVzZXRfZGV2aWNlKHVkZXYpO1xuIDIwOTpcdFxuIDIxMDpcdFx0dXNiX3NldF9pbnRmZGF0YSh1c2JfaW50ZiwgZGV2KTtcbiAyMTE6XHRcbiAyMTI6XHRcdHJldCA9IF9fbXQ3NnVfaW5pdChtZGV2LCB1c2JfaW50ZiwgXHUwMDI2YnVzX29wcyk7XG4gMjEzOlx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDIxNDpcdFx0XHRnb3RvIGVycm9yO1xuIDIxNTpcdFxuIDIxNjpcdFx0bWRldi1cdTAwM2VyZXYgPSAobXQ3Nl9ycihkZXYsIE1UX0hXX0NISVBJRCkgXHUwMDNjXHUwMDNjIDE2KSB8XG4gMjE3Olx0XHRcdCAgICAobXQ3Nl9ycihkZXYsIE1UX0hXX1JFVikgXHUwMDI2IDB4ZmYpO1xuIDIxODpcdFx0ZGV2X2RiZyhtZGV2LVx1MDAzZWRldiwgXCYjMzQ7QVNJQyByZXZpc2lvbjogJTA0eFxcblwmIzM0OywgbWRldi1cdTAwM2VyZXYpO1xuIDIxOTpcdFxuIDIyMDpcdFx0aWYgKG10NzZfZ2V0X2ZpZWxkKGRldiwgTVRfQ09OTl9PTl9NSVNDLCBNVF9UT1BfTUlTQzJfRldfTjlfUkRZKSkge1xuIDIyMTpcdFx0XHRyZXQgPSBtdDc5Mnh1X3dmc3lzX3Jlc2V0KGRldik7XG4gMjIyOlx0XHRcdGlmIChyZXQpXG4gMjIzOlx0XHRcdFx0Z290byBlcnJvcjtcbiAyMjQ6XHRcdH1cbiAyMjU6XHRcbiAyMjY6XHRcdHJldCA9IG10NzkyeHVfbWN1X3Bvd2VyX29uKGRldik7XG4gMjI3Olx0XHRpZiAocmV0KVxuIDIyODpcdFx0XHRnb3RvIGVycm9yO1xuIDIyOTpcdFxuIDIzMDpcdFx0cmV0ID0gbXQ3NnVfYWxsb2NfbWN1X3F1ZXVlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbiAyMzE6XHRcdGlmIChyZXQpXG4gMjMyOlx0XHRcdGdvdG8gZXJyb3I7XG4gMjMzOlx0XG4gMjM0Olx0XHRyZXQgPSBtdDc2dV9hbGxvY19xdWV1ZXMoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDYzMwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipLY29uZmlnIEluc3BlY3Rpb24gZm9yIG10NzYgYW5kIG10NzkyMSoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW4uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSB1cC10by1kYXRlIG9uIHRoZSBjb25maWd1cmF0aW9ucyBmb3IgdGhvc2UgTVRLIHdpcmVsZXNzIGRyaXZlcnMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIHJlbGF0ZWQgdG8gYG10NzZgIGFuZCBgbXQ3OTIxYC4gVGhlc2UgS2NvbmZpZyBmaWxlcyBhcmUgdGhlIGhlYXJ0IG9mIHRoZSBrZXJuZWwmIzM5O3MgY29uZmlndXJhdGlvbiBzeXN0ZW0uIFRoZXkgZGVmaW5lIHRoZSBidWlsZCBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBoZWxwIHRleHQgdGhhdCBkZXRlcm1pbmUgd2hldGhlciBhIHBhcnRpY3VsYXIgZHJpdmVyIG9yIGZlYXR1cmUgaXMgZW5hYmxlZCBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBkcml2ZXJzIGFyZSBiZWluZyBtYW5hZ2VkIOKAkyBhcmUgdGhleSBtb2R1bGVzLCBidWlsdC1pbiwgb3Igb3B0aW9uYWxseSBpbmNsdWRlZD8gQXJlIHRoZXJlIGFueSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMgSSBzaG91bGQgYmUgYXdhcmUgb2YsIHBlcmhhcHMgb24gb3RoZXIga2VybmVsIHN1YnN5c3RlbXMgb3IgYm9hcmQgc3VwcG9ydCBwYWNrYWdlcz8gSSBuZWVkIHRvIGxvb2sgZm9yIGFueSBkZWZhdWx0IHNldHRpbmdzIHRoYXQgbWlnaHQgaW1wYWN0IG15IGN1cnJlbnQgcHJvamVjdCBvciBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cy4gSSBhbHNvIGhhdmUgdG8ga2VlcCBhbiBleWUgb3V0IGZvciBhbnkgcmVjZW50IGNoYW5nZXMgb3IgYWRkaXRpb25zIHRoYXQgbWF5IGhhdmUgYmVlbiBpbnRyb2R1Y2VkIGluIHVwc3RyZWFtIGtlcm5lbHMuIFRoaXMgaXMgYWJvdXQgbWFraW5nIHN1cmUgZXZlcnl0aGluZyB3aWxsIHdvcmsgYXMgZXhwZWN0ZWQgd2l0aCBteSB0YXJnZXQgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1UNzZ8Y29uZmlnIE1UNzkyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyOmNvbmZpZyBNVDc2X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzo2OmNvbmZpZyBNVDc2X0xFRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy03LVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoxMjpjb25maWcgTVQ3Nl9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjE2OmNvbmZpZyBNVDc2X1NESU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xNy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjIwOmNvbmZpZyBNVDc2eDAyX0xJQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTIxLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MjQ6Y29uZmlnIE1UNzZ4MDJfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMjUtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyODpjb25maWcgTVQ3Nl9DT05OQUNfTElCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMjktXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzozMjpjb25maWcgTVQ3OTJ4X0xJQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMzLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MzY6Y29uZmlnIE1UNzkyeF9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zNy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjQwOmNvbmZpZyBNVDc2X05QVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTQxLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnOjI6Y29uZmlnIE1UNzYwM0VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzYwM0UgKFBDSWUpIGFuZCBNVDc2eDggV0xBTiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0yLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzozOmNvbmZpZyBNVDc2MTVfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTQtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWc6ODpjb25maWcgTVQ3NjE1RVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NjE1RSBhbmQgTVQ3NjYzRSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjIxOmNvbmZpZyBNVDc2MjJfV01BQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0yMi1cdGJvb2wgXCYjMzQ7TVQ3NjIyIChTb0MpIFdNQUMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjMyOmNvbmZpZyBNVDc2NjNfVVNCX1NESU9fQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTMzLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzozNjpjb25maWcgTVQ3NjYzVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0zNy1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzY2M1UgKFVTQikgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctNDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjQ3OmNvbmZpZyBNVDc2NjNTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTQ4LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NjYzUyAoU0RJTykgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc6Mjpjb25maWcgTVQ3NngwX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnOjY6Y29uZmlnIE1UNzZ4MFVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzZ4MFUgKFVTQikgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWctMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnOjE5OmNvbmZpZyBNVDc2eDBFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NngwRSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWc6Mjpjb25maWcgTVQ3NngyX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnOjY6Y29uZmlnIE1UNzZ4MkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzZ4MkUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZzoxODpjb25maWcgTVQ3NngyVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0xOS1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzZ4MlUgKFVTQikgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjpjb25maWcgTVQ3OTIxX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyMUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoxNzpjb25maWcgTVQ3OTIxU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoyODpjb25maWcgTVQ3OTIxVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yOS1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Mjpjb25maWcgTVQ3OTI1X0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyNUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoxOTpjb25maWcgTVQ3OTI1VVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yMC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzc1MQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDMwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgbXQ3NiBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBpbml0aWFsaXphdGlvbiBmbG93IG9mIHRoZXNlIG10NzYgZHJpdmVycywgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBgbXQ3Nl9waHlfaW5pdGAgZnVuY3Rpb24uIEl0IHNlZW1zIGl0JiMzOTtzIHRoZSBjb3JlIG9mIGJyaW5naW5nIHRoZSBoYXJkd2FyZSBvbmxpbmUsIGNhbGxlZCBieSBgbXQ3Nl9yZWdpc3Rlcl9waHlgIGFuZCBgbXQ3Nl9yZWdpc3Rlcl9kZXZpY2VgLiBUaGlzIG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IHRoZSBQSFkgaW5pdGlhbGl6YXRpb24gaXMgZnVuZGFtZW50YWwuIEFsbCB0aGUgbXQ3NiBkcml2ZXJzIEkmIzM5O20gZmFtaWxpYXIgd2l0aCDigJMgdGhlIE1UNzZ4MFUsIE1UNzZ4MlUsIE1UNzY2M1UsIE1UNzkyMVUsIE1UNzkyNVUgZmFtaWxpZXMg4oCTIHRoZXkgYWxsIGJ1aWxkIG9uIHRoZSBtdDc2IGNvcmUsIHNvIHRoaXMgYXBwcm9hY2ggaXMgY29uc2lzdGVudC4KCk5vdywgY29uc2lkZXJpbmcgdGhlIGNvbnRleHQgb2YgVVNCIGRldmljZSBhdHRhY2htZW50LCBzcGVjaWZpY2FsbHkgd2hlbiB3ZSYjMzk7cmUgdXNpbmcgc29tZXRoaW5nIGxpa2Ugc3l6a2FsbGVyIGZvciBmdXp6aW5nLCBJJiMzOTttIHRyeWluZyB0byB2aXN1YWxpemUgdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLiBXaXRoIGBzeXpfdXNiX2Nvbm5lY3RgIGxldmVyYWdpbmcgdGhvc2Ugc3BlY2lmaWMgdmVuZG9yL3Byb2R1Y3QgSURzIGZvciBtdDc2eDB1LCBtdDc2eDJ1LCBldGMuLCBJIG5lZWQgdG8gYXNjZXJ0YWluICpleGFjdGx5KiBob3cgdGhlIGRldmljZSByZWdpc3RlcnMgd2l0aCBtYWM4MDIxMSBhbmQgY2ZnODAyMTEuIFRoaXMgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHN1YnNlcXVlbnQgYmVoYXZpb3IgdW5kZXIgZnV6emluZy4KCkhhbmcgb24uIFRoZXJlJiMzOTtzIGEgZmxhZyBiZWluZyBzZXQgd2l0aGluIGBtdDc2X3BoeV9pbml0YCwgbmFtZWx5OiBgd2lwaHktJmd0O2ZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiB8IE5MODAyMTFfRkVBVFVSRV9BUF9NT0RFX0NIQU5fV0lEVEhfQ0hBTkdFO2AuIFRoaXMgaW1tZWRpYXRlbHkgZmxhZ3Mgc29tZXRoaW5nIGludGVyZXN0aW5nLiBBbmQgaW4gYG10NzkyeF9jb3JlLmNgIEkgc2VlIHRoZSBsaW5lIHRoYXQgcmVtb3ZlcyB0aGUgZmxhZyBgcGh5LSZndDttdDc2LSZndDtub19hY3RpdmVfbW9uaXRvciA9IHRydWVgLgoKSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SYCAqYWN0dWFsbHkqIGRvZXMuIEl0IHdhcnJhbnRzIGEgZGVlcCBkaXZlIGludG8gdGhlIGtlcm5lbCwgbWFjODAyMTEsIGNmZzgwMjExLCBhbmQgdGhlIG5sODAyMTEgc3Vic3lzdGVtLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBhbmQgdW5kZXJzdGFuZGluZyB0aGUgcm9sZSBvZiB0aGlzIGZlYXR1cmUgaXMga2V5IHRvIGFudGljaXBhdGluZyBob3cgdGhlIGRyaXZlciB3aWxsIGhhbmRsZSBtb25pdG9yZWQgdHJhZmZpYyBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIGJyb2FkZXIgd2lyZWxlc3Mgc3RhY2ssIGVzcGVjaWFsbHkgdW5kZXIgZnV6emluZyBjb25kaXRpb25zLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGUgbW9uaXRvciBtb2RlIGlzbiYjMzk7dCBpbnRlcmZlcmluZyB3aXRoIG91ciB0ZXN0IHNjZW5hcmlvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1ImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYz05MDM9c3RhdGljIHZvaWQgYXRoOWtfc2V0X2h3X2NhcGFiKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTkzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6OTMzOlx0aHctXHUwMDNld2lwaHktXHUwMDNlZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SIHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtOTM0LVx0XHRcdCAgICAgICBOTDgwMjExX0ZFQVRVUkVfQVBfTU9ERV9DSEFOX1dJRFRIX0NIQU5HRSB8XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTQyNz1tdDc2X3BoeV9pbml0KHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNDQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjQ0MjpcdHdpcGh5LVx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiB8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNDQzLVx0XHRcdCAgIE5MODAyMTFfRkVBVFVSRV9BUF9NT0RFX0NIQU5fV0lEVEhfQ0hBTkdFO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYwMXUvaW5pdC5jPTU3ND1pbnQgbXQ3NjAxdV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzYwMXVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS9pbml0LmMtNjEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS9pbml0LmM6NjExOlx0d2lwaHktXHUwMDNlZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS9pbml0LmMtNjEyLVx0d2lwaHktXHUwMDNlaW50ZXJmYWNlX21vZGVzID0gQklUKE5MODAyMTFfSUZUWVBFX1NUQVRJT04pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTU2NzQ9c3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8oc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01OTQzLVx0aHctXHUwMDNld2lwaHktXHUwMDNlZmxhZ3MgfD0gV0lQSFlfRkxBR19JQlNTX1JTTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjU5NDQ6XHRody1cdTAwM2V3aXBoeS1cdTAwM2VmZWF0dXJlcyB8PSBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1IgfFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTk0NS1cdFx0XHQgICAgICAgTkw4MDIxMV9GRUFUVVJFX0FQX01PREVfQ0hBTl9XSURUSF9DSEFOR0UgfFxuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmg9NjczOT1lbnVtIG5sODAyMTFfYXBfc21lX2ZlYXR1cmVzIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTY3ODYtICpcdHN0aWxsIGdlbmVyYXRlZCBieSB0aGUgZHJpdmVyLlxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaDo2Nzg3OiAqIEBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1I6IFRoaXMgZHJpdmVyIHN1cHBvcnRzIGFuIGFjdGl2ZSBtb25pdG9yXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTY3ODgtICpcdGludGVyZmFjZS4gQW4gYWN0aXZlIG1vbml0b3IgaW50ZXJmYWNlIGJlaGF2ZXMgbGlrZSBhIG5vcm1hbCBtb25pdG9yXG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaD02ODM2PWVudW0gbmw4MDIxMV9mZWF0dXJlX2ZsYWdzIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTY4NTMtXHROTDgwMjExX0ZFQVRVUkVfVVNFUlNQQUNFX01QTVx0XHRcdD0gMSBcdTAwM2NcdTAwM2MgMTYsXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oOjY4NTQ6XHROTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1JcdFx0XHQ9IDEgXHUwMDNjXHUwMDNjIDE3LFxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaC02ODU1LVx0Tkw4MDIxMV9GRUFUVVJFX0FQX01PREVfQ0hBTl9XSURUSF9DSEFOR0VcdD0gMSBcdTAwM2NcdTAwM2MgMTgsXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz00OTM0PXN0YXRpYyBpbnQgbmw4MDIxMV9wYXJzZV9tb25fb3B0aW9ucyhzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy00OTU4LVx0aWYgKHBhcmFtcy1cdTAwM2VmbGFncyBcdTAwMjYgTU9OSVRPUl9GTEFHX0FDVElWRSBcdTAwMjZcdTAwMjZcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDk1OTpcdCAgICAhKHJkZXYtXHUwMDNld2lwaHkuZmVhdHVyZXMgXHUwMDI2IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUikpXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTQ5NjAtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU3OTIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIE1UNzkyMS9NVDc5MjUgQWN0aXZlIE1vbml0b3IgSW1wbGVtZW50YXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgZW5hYmxpbmcgYE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUmAgZm9yIHRoZSBNVDc5MjEgYW5kIE1UNzkyNSBkZXZpY2VzLCBhbGxvd2luZyB1c2Vyc3BhY2UgY29udHJvbCBvZiBtb25pdG9yIGludGVyZmFjZXMgd2l0aCB0aGUgYE1PTklUT1JfRkxBR19BQ1RJVkVgIGZsYWcgdmlhIG5sODAyMTEuIFByZXZpb3VzbHksIHRoZSBgbm9fYWN0aXZlX21vbml0b3IgPSB0cnVlYCBzZXR0aW5nIGVmZmVjdGl2ZWx5IGJsb2NrZWQgdGhpcy4gSSByZWNhbGwgdGhhdCBgbXQ3Nl9waHlfaW5pdGAgd2FzIHdoZXJlIHRoaXMgd2FzIGhhbmRsZWQsIGJ1dCB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHdpcGh5IGluIGBtdDc5MnhfaW5pdF93aXBoeWAgd2FzIHNldHRpbmcgdGhpcyBmbGFnIHRvIHRydWUgYmVmb3JlIGBtdDc2X3BoeV9pbml0YCB3YXMgY2FsbGVkLiBUaGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guCgpOb3csIEkgbmVlZCB0byB2ZXJpZnkgaG93IGBub19hY3RpdmVfbW9uaXRvcmAgd2FzIHVzZWQgcHJpb3IgdG8gdGhpcyBjaGFuZ2UuIFNjYW5uaW5nIGBtYWM4MDIxMS5jYCwgSSBzZWUgdGhhdCBgbXQ3Nl9waHlfaW5pdGAgdXNlZCB0byBjaGVjayBgcGh5LSZndDtub19hY3RpdmVfbW9uaXRvcmAgYW5kIG9ubHkgZW5hYmxlIGBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1JgIGlmIGl0IHdhcyBmYWxzZS4gVGhlIGNoYW5nZSBub3cgdW5jb25kaXRpb25hbGx5IGFkZHMgYE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUmAsIGFsb25nIHdpdGggYE5MODAyMTFfRkVBVFVSRV9BUF9NT0RFX0NIQU5fV0lEVEhfQ0hBTkdFYC4gT2theSwgdGhhdCYjMzk7cyBhIGtleSBkZXRhaWwg4oCTIHRoZSBmZWF0dXJlIGlzIG5vdyB1bmNvbmRpdGlvbmFsbHkgZW5hYmxlZC4gQW5kIGluIGBtdDc5MnhfY29yZS5jYCBhbmQgc3BlY2lmaWNhbGx5IGBtdDc5MnhfaW5pdF93aXBoeWAgSSBjYW4gY2xlYXJseSBzZWUgd2hlcmUgYHBoeS0mZ3Q7bXQ3Ni0mZ3Q7bm9fYWN0aXZlX21vbml0b3IgPSB0cnVlYCB3YXMgc2V0LgoKVGhlIHF1ZXN0aW9uIHRoZW4gaXMsICp3aHkqIHdhcyBgbm9fYWN0aXZlX21vbml0b3JgIHNldCB0byB0cnVlIGluIHRoZSBmaXJzdCBwbGFjZSBmb3IgdGhlIE1UNzkyeCBzZXJpZXM/IE15IGh5cG90aGVzaXMgaXMgdGhhdCB0aGVzZSBjaGlwcyBlaXRoZXIgZGlkbiYjMzk7dCBzdXBwb3J0IGFjdGl2ZSBtb25pdG9yLCBvciB0aGF0IHRoZXkgZGlkIGJ1dCBpdCB3YXNuJiMzOTt0IHlldCBlbmFibGVkLiBJIG5lZWQgdG8gY29uZmlybSBpZiBhY3RpdmUgbW9uaXRvciBpcyBhY3R1YWxseSBzdXBwb3J0ZWQgbm93LCBvciBpZiB0aGlzIGNvbW1pdCBzaW1wbHkgZW5hYmxlcyBpdC4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvbW1pdCBoaXN0b3J5IG9yIGRvIGEgcXVpY2sgZ2l0IHNlYXJjaCB3aXRoaW4gdGhlIG10NzYgcmVwbyB0byBzaGVkIHNvbWUgbGlnaHQgb24gdGhpcy4gVGhlIGhpc3Rvcnkgc2hvdWxkIHRlbGwgbWUgZXhhY3RseSB3aGVuIHRoaXMgbGltaXRhdGlvbiB3YXMgaW50cm9kdWNlZCwgYW5kIGlmIGl0IHdhcyBsaWZ0ZWQgZHVlIHRvIGEgc3BlY2lmaWMgaGFyZHdhcmUgY2hhbmdlIG9yIG5ldyBkcml2ZXIgY2FwYWJpbGl0aWVzLiBUaGF0IHdpbGwgY29uZmlybSB3aGF0JiMzOTtzIHJlYWxseSBoYXBwZW5pbmcgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthY3RpdmVfbW9uaXRvciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjcxMgoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDEwNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTVQ3Ni9NVDc5MnggVVNCIERyaXZlciBSZWFjaGFiaWxpdHkgQW5hbHlzaXMgZm9yIFN5emthbGxlcioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIGRldGVybWluZSBpZiB0aGUgTVQ3NiBhbmQgTVQ3OTJ4IFVTQiBkcml2ZXJzIGFyZSByZWFjaGFibGUgYnkgc3l6a2FsbGVyLiBUaGUga2V5IGlzIHRoYXQgc3l6a2FsbGVyIGNhbiBlbXVsYXRlIFVTQiBkZXZpY2VzIHVzaW5nIGBzeXpfdXNiX2Nvbm5lY3RgLCB3aGljaCBvZmZlcnMgYSBwb3RlbnRpYWwgZW50cnkgcG9pbnQuCgpJIG5lZWQgdG8gY29uZmlybSBpZiB0aGVzZSBkcml2ZXJzIGFyZSBhY2Nlc3NpYmxlIHZpYSBhIHZpcnR1YWwgYnVzLCBzcGVjaWZpY2FsbHkgVVNCLCB3aXRoaW4gYSBzdGFuZGFyZCBzeXprYWxsZXIgZW52aXJvbm1lbnQuIFRoZSBwcmVzZW5jZSBvZiBgTVQ3Nl9DT1JFYCwgYE1UNzkyeF9MSUJgLCBgTVQ3OTIxVWAsIGBNVDc5MjVVYCwgYE1UNzZ4MFVgLCBgTVQ3NngyVWAsIGFuZCBgTVQ3NjYzVWAgcG9pbnRzIHRvIGEgcmVsZXZhbnQgZHJpdmVyIGxhbmRzY2FwZS4KCkEgcXVpY2sgcmV2aWV3IG9mIGBtdDc5MjF1X3Byb2JlYCBpcyBlc3NlbnRpYWwuIFRoZSBkcml2ZXIgaW5pdGlhbGl6ZXMgYSBkZXZpY2UgdmlhIGBtdDc5MnhfZ2V0X21hYzgwMjExX29wc2AsIGFsbG9jYXRlcyBtZW1vcnkgdXNpbmcgYG10NzZfYWxsb2NfZGV2aWNlYCwgdGhlbiBpbml0aWFsaXplcyB3aXRoIGBfX210NzZ1X2luaXRgLiBUaGlzIHByb2JpbmcgcHJvY2VzcyB0aGVuIGludGVyYWN0cyB3aXRoIGhhcmR3YXJlIChjaGlwIElELCByZXZpc2lvbikgYW5kIGhhcmR3YXJlIHJlc291cmNlcywgd2hpY2ggc3VnZ2VzdHMgYSBoYXJkd2FyZSBkZXBlbmRlbmNlIHRoYXQgbmVlZHMgY2FyZWZ1bCBhbmFseXNpcy4gSXQgYWxzbyBjYWxscyBmdW5jdGlvbnMgbGlrZSBgbXQ3OTJ4dV9tY3VfcG93ZXJfb25gLCBgbXQ3NnVfYWxsb2NfbWN1X3F1ZXVlYCwgYG10NzZ1X2FsbG9jX3F1ZXVlc2AsIGBtdDc5Mnh1X2RtYV9pbml0YCwgYW5kIGZpbmFsbHkgcmVnaXN0ZXJzIHRoZSBkZXZpY2UgdmlhIGBtdDc5MjFfcmVnaXN0ZXJfZGV2aWNlYC4gVGhlIGxhdHRlciBjYWxscyBgbXQ3OTJ4X2luaXRfd2lwaHlgIGFuZCBgbXQ3Nl9yZWdpc3Rlcl9kZXZpY2VgLCBldmVudHVhbGx5IHJlYWNoaW5nIGBtdDc2X3BoeV9pbml0YC4KClRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIHJlbHkgb24gYSByZWFsIFVTQiBjb25uZWN0aW9uLCBvciBpcyBpdCBhIHZpcnR1YWwgYnVzPyBUaGUgcmVsZXZhbnQgY3JpdGVyaWEgZm9yIGRldGVybWluaW5nIHdoZXRoZXIgdGhpcyBpcyB3b3J0aCBmdXp6aW5nIGFyZSB0aGUgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIGNyaXRlcmlhLiBJbiB0aGUgcG9zaXRpdmUgY3JpdGVyaWEsIGRyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAobGlrZSBVU0IpIGFyZSB3b3J0aCBmdXp6aW5nLiBUaGUgbmVnYXRpdmUgY3JpdGVyaWEgZ2l2ZSBleGFtcGxlcyBvZiB3aGF0IGlzIG5vdCB3b3J0aCBmdXp6aW5nLCBzdWNoIGFzIHVucmVhY2hhYmxlIGhhcmR3YXJlLCB2ZW5kb3Itc3BlY2lmaWMgZGV2aWNlcywgZXRjLgoKU2luY2UgVVNCIGlzIGEgdmlydHVhbCBidXMgaW4gdGhlIHN5emthbGxlciBjb250ZXh0IChsZXZlcmFnaW5nIGByYXdfZ2FkZ2V0YCAvIGB2aGNpYCksIGFuZCB0aGUgTVQ3NiBkcml2ZXJzIChgTVQ3NngwVWAsIGV0Yy4pIGFyZSBVU0IgZGV2aWNlIGRyaXZlcnMgaW4gdGhlIGtlcm5lbCwgSSBhbSBpbmNsaW5lZCB0byBjb25jbHVkZSB0aGF0IGl0IGlzIHJlYWNoYWJsZS4gVGhlIGZhY3QgdGhhdCBgbXQ3Nl9waHlfaW5pdGAgaXMgY2FsbGVkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gZm9yIGFsbCBNVDc2IGRldmljZXMsIGluY2x1ZGluZyB0aGUgVVNCIG9uZXMsIGFuZCBgbXQ3OTJ4X2luaXRfd2lwaHlgIGlzIGNhbGxlZCBmb3IgdGhlIE1UNzkyMS9NVDc5MjUgaW5jbHVkaW5nIFVTQiB2YXJpYW50cyBjb25maXJtcyBteSBhc3Nlc3NtZW50LiBGdXJ0aGVybW9yZSwgYWZ0ZXIgcmVnaXN0cmF0aW9uLCB0aGUgYGNmZzgwMjExIC8gbmw4MDIxMWAgaW50ZXJmYWNlcyBpbnRlcmFjdCB3aXRoIHRoZSB3aXBoeSBmZWF0dXJlcy4KClRoZXJlZm9yZSwgdGhlIE1UNzYgLyBNVDc5MnggZHJpdmVycyBfYXJlXyBsaWtlbHkgcmVhY2hhYmxlIHZpYSBVU0Igd2l0aGluIHN5emthbGxlci4KClRvIGNvbmZpcm0sIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgYE1UNzZfQ09SRWAsIGBNVDc5MjFVYCwgZXRjLiwgYXJlIHN0YW5kYXJkIGRyaXZlcnMgKG5vdCBzb21lIHZlbmRvci1zcGVjaWZpYyBhYnN0cmFjdGlvbikgYnkgZXhhbWluaW5nIHRoZSBgS2NvbmZpZ2AgZmlsZXMgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ2AgYW5kIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzkyMV9DT01NT05cbiAgIDM6XHRcdHRyaXN0YXRlXG4gICA0Olx0XHRzZWxlY3QgTVQ3OTJ4X0xJQlxuICAgNTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gICA2Olx0XG4gICA3Olx0Y29uZmlnIE1UNzkyMUVcbiAgIDg6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbiAgIDk6XHRcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXG4gIDEwOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDExOlx0XHRkZXBlbmRzIG9uIFBDSVxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxRSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIE1UNzkyMVNcbiAgMTg6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVMgKFNESU8pIHN1cHBvcnRcJiMzNDtcbiAgMTk6XHRcdHNlbGVjdCBNVDc2X1NESU9cbiAgMjA6XHRcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXG4gIDIxOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDIyOlx0XHRkZXBlbmRzIG9uIE1NQ1xuICAyMzpcdFx0aGVscFxuICAyNDpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxUyA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXG4gIDI1Olx0XG4gIDI2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDI3Olx0XG4gIDI4Olx0Y29uZmlnIE1UNzkyMVVcbiAgMjk6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuICAzMDpcdFx0c2VsZWN0IE1UNzkyeF9VU0JcbiAgMzE6XHRcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXG4gIDMyOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDMzOlx0XHRkZXBlbmRzIG9uIFVTQlxuICAzNDpcdFx0aGVscFxuICAzNTpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxVSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXG4gIDM2Olx0XG4gIDM3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDA0OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MDc0CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBNZWRpYXRlayBXaXJlbGVzcyBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBNZWRpYXRlayB3aXJlbGVzcyBkcml2ZXIgc2l0dWF0aW9uLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbiBmaWxlLCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIGJ1aWxkIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhhdCBzcGVjaWZpYyBkcml2ZXIgc2hvdWxkIGJlIGRlZmluZWQuIEZyb20gdGhlIEtjb25maWcsIEkgY2FuIGRldGVybWluZSB3aGljaCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LCB3aGF0IG1vZHVsZXMgYXJlIGF2YWlsYWJsZSwgaG93IHRvIGVuYWJsZS9kaXNhYmxlIHNwZWNpZmljIGhhcmR3YXJlIHN1cHBvcnQsIGFuZCB3aGF0IG90aGVyIGtlcm5lbCBjb21wb25lbnRzIGl0IG1pZ2h0IGRlcGVuZCBvbi4gVGhpcyB3aWxsIGdpdmUgbWUgYSBzb2xpZCBiYXNlIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgZHJpdmVyIGlzIHN0cnVjdHVyZWQgYW5kIGhvdyB0byBjb250cm9sIGl0IGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy4gSXQmIzM5O3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZHJpdmVyIGludGVncmF0ZXMgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEtub3dpbmcgaG93IGl0JiMzOTtzIGNvbmZpZ3VyZWQgaXMga2V5IHRvIG1ha2luZyBhbnkgcHJvZ3Jlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDA0OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzZfQ09SRVxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgTVQ3Nl9MRURTXG4gICA3Olx0XHRib29sXG4gICA4Olx0XHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxuICAgOTpcdFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTVQ3Nl9DT1JFPUxFRFNfQ0xBU1NcbiAgMTA6XHRcdGRlZmF1bHQgeVxuICAxMTpcdFxuICAxMjpcdGNvbmZpZyBNVDc2X1VTQlxuICAxMzpcdFx0dHJpc3RhdGVcbiAgMTQ6XHRcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG4gIDE1Olx0XG4gIDE2Olx0Y29uZmlnIE1UNzZfU0RJT1xuICAxNzpcdFx0dHJpc3RhdGVcbiAgMTg6XHRcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIE1UNzZ4MDJfTElCXG4gIDIxOlx0XHR0cmlzdGF0ZVxuICAyMjpcdFx0c2VsZWN0IE1UNzZfQ09SRVxuICAyMzpcdFxuICAyNDpcdGNvbmZpZyBNVDc2eDAyX1VTQlxuICAyNTpcdFx0dHJpc3RhdGVcbiAgMjY6XHRcdHNlbGVjdCBNVDc2X1VTQlxuICAyNzpcdFxuICAyODpcdGNvbmZpZyBNVDc2X0NPTk5BQ19MSUJcbiAgMjk6XHRcdHRyaXN0YXRlXG4gIDMwOlx0XHRzZWxlY3QgTVQ3Nl9DT1JFXG4gIDMxOlx0XG4gIDMyOlx0Y29uZmlnIE1UNzkyeF9MSUJcbiAgMzM6XHRcdHRyaXN0YXRlXG4gIDM0Olx0XHRzZWxlY3QgTVQ3Nl9DT05OQUNfTElCXG4gIDM1Olx0XG4gIDM2Olx0Y29uZmlnIE1UNzkyeF9VU0JcbiAgMzc6XHRcdHRyaXN0YXRlXG4gIDM4Olx0XHRzZWxlY3QgTVQ3Nl9VU0JcbiAgMzk6XHRcbiAgNDA6XHRjb25maWcgTVQ3Nl9OUFVcbiAgNDE6XHRcdHRyaXN0YXRlXG4gIDQyOlx0XHRkZXBlbmRzIG9uIE5FVF9BSVJPSEFfTlBVPXkgfHwgTVQ3Nl9DT1JFPU5FVF9BSVJPSEFfTlBVXG4gIDQzOlx0XG4gIDQ0Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWdcJiMzNDtcbiAgNDU6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZ1wmIzM0O1xuICA0NjpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnXCYjMzQ7XG4gIDQ3Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWdcJiMzNDtcbiAgNDg6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZ1wmIzM0O1xuICA0OTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnXCYjMzQ7XG4gIDUwOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAwMTAKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgTWVkaWF0ZWsgV2lyZWxlc3MgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgdGhlIGhlYXJ0IG9mIHRoZSBNZWRpYXRlayB3aXJlbGVzcyBkcml2ZXImIzM5O3MgY29uZmlndXJhdGlvbi4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBnZXR0aW5nIGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0JiMzOTtzIGJlZW4gZGVmaW5lZCBhbmQgaG93IHRoZSBvcHRpb25zIGFyZSBzdHJ1Y3R1cmVkLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBkZXBlbmRlbmNpZXMsIGRlZmF1bHRzLCBhbmQgYW55IHVudXN1YWwgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBiZSB3b3J0aCBmdXJ0aGVyIGludmVzdGlnYXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyB0aGUgZmVhdHVyZXMgYXJlIGVuYWJsZWQvZGlzYWJsZWQgYXQgY29tcGlsZSB0aW1lLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHZhcmlhYmxlcyBhcmUgZ29pbmcgdG8gYmUgc2V0IGJ5IHRoZSBrZXJuZWwgYnVpbGQsIGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRob3NlIHZhcmlhYmxlcyBmb3IgdGhlIHBlcmZvcm1hbmNlIGFuZCByb2J1c3RuZXNzIG9mIHRoZSBkcml2ZXIuIExldCYjMzk7cyBzZWUgd2hhdCBnZW1zIGFyZSBoaWRkZW4gaW4gdGhpcyBjb25maWd1cmF0aW9uIGZpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDA0OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01UNzYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTk0OCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX01UNzYwMVUpXHQmIzQzOz0gbXQ3NjAxdS9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX01UNzZfQ09SRSlcdCYjNDM7PSBtdDc2L1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjI6Y29uZmlnIE1UNzZfQ09SRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjY6Y29uZmlnIE1UNzZfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTctXHRib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6ODpcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6OTpcdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IE1UNzZfQ09SRT1MRURTX0NMQVNTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTAtXHRkZWZhdWx0IHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoxMjpjb25maWcgTVQ3Nl9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xMy1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MTQ6XHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjE2OmNvbmZpZyBNVDc2X1NESU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xNy1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MTg6XHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjIwOmNvbmZpZyBNVDc2eDAyX0xJQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTIxLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyMjpcdHNlbGVjdCBNVDc2X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyNDpjb25maWcgTVQ3NngwMl9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yNS1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MjY6XHRzZWxlY3QgTVQ3Nl9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyODpjb25maWcgTVQ3Nl9DT05OQUNfTElCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMjktXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjMwOlx0c2VsZWN0IE1UNzZfQ09SRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTMyPWNvbmZpZyBNVDc5MnhfTElCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzMtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjM0Olx0c2VsZWN0IE1UNzZfQ09OTkFDX0xJQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTM2PWNvbmZpZyBNVDc5MnhfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzctXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjM4Olx0c2VsZWN0IE1UNzZfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NDA6Y29uZmlnIE1UNzZfTlBVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNDEtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjQyOlx0ZGVwZW5kcyBvbiBORVRfQUlST0hBX05QVT15IHx8IE1UNzZfQ09SRT1ORVRfQUlST0hBX05QVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTQzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTVQ3Nl9DT1JFKSAmIzQzOz0gbXQ3Ni5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX01UNzZfVVNCKSAmIzQzOz0gbXQ3Ni11c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19NVDc2X1NESU8pICYjNDM7PSBtdDc2LXNkaW8ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19NVDc2eDAyX0xJQikgJiM0Mzs9IG10NzZ4MDItbGliLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTVQ3NngwMl9VU0IpICYjNDM7PSBtdDc2eDAyLXVzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX01UNzZfQ09OTkFDX0xJQikgJiM0Mzs9IG10NzYtY29ubmFjLWxpYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTgtb2JqLSQoQ09ORklHX01UNzkyeF9MSUIpICYjNDM7PSBtdDc5MngtbGliLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTExPW10NzYteSA6PSBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjE1OmlmZGVmIENPTkZJR19NVDc2X05QVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZToxNjojIENPTkZJR19NVDc2X05QVSBpcyB0cmlzdGF0ZSB0byBzaW1wbGlmeSBkZXBlbmRlbmN5IHRyYWNraW5nLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS0xNy0jIGJ1dCBpdCBiZWhhdmVzIGFzIGEgYm9vbCBzeW1ib2wgaGVyZS5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTQzPW10NzkyeC11c2IteSA6PSBtdDc5MnhfdXNiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjQ1Om9iai0kKENPTkZJR19NVDc2eDBfQ09NTU9OKSAmIzQzOz0gbXQ3NngwL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo0NjpvYmotJChDT05GSUdfTVQ3NngyX0NPTU1PTikgJiM0Mzs9IG10NzZ4Mi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6NDc6b2JqLSQoQ09ORklHX01UNzYwM0UpICYjNDM7PSBtdDc2MDMvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjQ4Om9iai0kKENPTkZJR19NVDc2MTVfQ09NTU9OKSAmIzQzOz0gbXQ3NjE1L1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS00OS1vYmotJChDT05GSUdfTVQ3OTE1RSkgJiM0Mzs9IG10NzkxNS9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2NoYW5uZWwuYz0zMTk9dm9pZCBtdDc2X3JvY19jb21wbGV0ZShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2NoYW5uZWwuYy0zMjktXHRpZiAocGh5LVx1MDAzZWNoYW5jdHggXHUwMDI2XHUwMDI2IHBoeS1cdTAwM2VtYWluX2NoYW5kZWYuY2hhbiBcdTAwMjZcdTAwMjYgcGh5LVx1MDAzZW9mZmNoYW5uZWwgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2NoYW5uZWwuYzozMzA6XHQgICAgIXRlc3RfYml0KE1UNzZfTUNVX1JFU0VULCBcdTAwMjZkZXYtXHUwMDNlcGh5LnN0YXRlKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9jaGFubmVsLmMtMzMxLVx0XHRfX210NzZfc2V0X2NoYW5uZWwocGh5LCBcdTAwMjZwaHktXHUwMDNlbWFpbl9jaGFuZGVmLCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9jaGFubmVsLmMtMzM2LVx0cGh5LVx1MDAzZXJvY19saW5rID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvY2hhbm5lbC5jOjMzNzpcdGlmICghdGVzdF9iaXQoTVQ3Nl9NQ1VfUkVTRVQsIFx1MDAyNmRldi1cdTAwM2VwaHkuc3RhdGUpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9jaGFubmVsLmMtMzM4LVx0XHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChwaHktXHUwMDNlaHcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvY2hhbm5lbC5jPTM2Mz1pbnQgbXQ3Nl9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2NoYW5uZWwuYy0zODItXHRpZiAocGh5LVx1MDAzZXJvY192aWYgfHwgZGV2LVx1MDAzZXNjYW4ucGh5ID09IHBoeSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9jaGFubmVsLmM6MzgzOlx0ICAgIHRlc3RfYml0KE1UNzZfTUNVX1JFU0VULCBcdTAwMjZkZXYtXHUwMDNlcGh5LnN0YXRlKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9jaGFubmVsLmMtMzg0LVx0XHRyZXQgPSAtRUJVU1k7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYz02MzQ9bXQ3Nl9kbWFfdHhfcXVldWVfc2tiX3JhdyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy02MzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jOjY0MDpcdGlmICh0ZXN0X2JpdChNVDc2X01DVV9SRVNFVCwgXHUwMDI2ZGV2LVx1MDAzZXBoeS5zdGF0ZSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTY0MS1cdFx0Z290byBlcnJvcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTY2Nz1tdDc2X2RtYV90eF9xdWV1ZV9za2Ioc3RydWN0IG10NzZfcGh5ICpwaHksIHN0cnVjdCBtdDc2X3F1ZXVlICpxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtNjg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzo2ODU6XHRpZiAodGVzdF9iaXQoTVQ3Nl9SRVNFVCwgXHUwMDI2cGh5LVx1MDAzZXN0YXRlKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtNjg2LVx0XHRnb3RvIGZyZWVfc2tiO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmgtNC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmg6NTojaWZuZGVmIF9fTVQ3Nl9ETUFfSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaDo2OiNkZWZpbmUgX19NVDc2X0RNQV9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oLTctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaD01Mj1tdDc2X2RtYV9oYW5kbGVfcmVhZChzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSwgdTMyIG9mZnNldCwgdTMyICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaC02MC0jZW5kaWZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmg6NjE6I2lmIElTX0VOQUJMRUQoQ09ORklHX01UNzZfTlBVKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaC02Mi1cdGlmIChxLVx1MDAzZWZsYWdzIFx1MDAyNiBNVF9RRkxBR19OUFUpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oPTgwPW10NzZfZG1hX2hhbmRsZV93cml0ZShzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSwgdTMyIG9mZnNldCwgdTMyIHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oLTg4LSNlbmRpZlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaDo4OTojaWYgSVNfRU5BQkxFRChDT05GSUdfTVQ3Nl9OUFUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oLTkwLVx0aWYgKHEtXHUwMDNlZmxhZ3MgXHUwMDI2IE1UX1FGTEFHX05QVSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM9MTQ9ZW51bSBtdDc2X3NrdV90eXBlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6MTU6XHRNVDc2X1NLVV9SQVRFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYzoxNjpcdE1UNzZfU0tVX0JBQ0tPRkYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjE3Olx0TVQ3Nl9TS1VfQkFDS09GRl9CRl9PRkZTRVQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTE4LX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYz0zMzA9bXQ3Nl9hcHBseV9hcnJheV9saW1pdChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgczggKnB3ciwgc2l6ZV90IHB3cl9sZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy0zNDUtXHRcdHN3aXRjaCAodHlwZSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYzozNDY6XHRcdGNhc2UgTVQ3Nl9TS1VfUkFURTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtMzQ3LVx0XHRcdGRlbHRhID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTM1MC1cdFx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6MzUxOlx0XHRjYXNlIE1UNzZfU0tVX0JBQ0tPRkZfQkZfT0ZGU0VUOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy0zNTItXHRcdFx0YmFja29mZl9jaGFpbl9pZHggJiM0Mzs9IDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTM1My1cdFx0XHRmYWxsdGhyb3VnaDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6MzU0Olx0XHRjYXNlIE1UNzZfU0tVX0JBQ0tPRkY6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTM1NS1cdFx0XHRkZWx0YSA9IG10NzZfdHhfcG93ZXJfcGF0aF9kZWx0YShuX2NoYWlucyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy0zNjktXHRcdC8qIG9ubHkgY29uc2lkZXIgYmFja29mZiB2YWx1ZSBmb3IgdGhlIGNvbmZpZ3VyZWQgY2hhaW4gbnVtYmVyICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjM3MDpcdFx0aWYgKHR5cGUgIT0gTVQ3Nl9TS1VfUkFURSBcdTAwMjZcdTAwMjYgbl9jaGFpbnMgIT0gYmFja29mZl9uX2NoYWlucylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtMzcxLVx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM9Mzc4PW10NzZfYXBwbHlfbXVsdGlfYXJyYXlfbGltaXQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHM4ICpwd3IsIHNpemVfdCBwd3JfbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtNDA2LVx0XHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6NDA3Olx0XHRpZiAoIWlzX210Nzk5eChkZXYpIFx1MDAyNlx1MDAyNiB0eXBlID09IE1UNzZfU0tVX0JBQ0tPRkYgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTQwOC1cdFx0ICAgIGkgXHUwMDNlIGNvbm5hYzJfYmFja29mZl9ydV9pZHgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjQwOTpcdFx0XHR0eXBlID0gTVQ3Nl9TS1VfQkFDS09GRl9CRl9PRkZTRVQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTQxMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jPTQyNj1zOCBtdDc2X2dldF9yYXRlX3Bvd2VyX2xpbWl0cyhzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTQ3Ny1cdG10NzZfYXBwbHlfYXJyYXlfbGltaXQoZGV2LCBkZXN0LVx1MDAzZWNjaywgQVJSQVlfU0laRShkZXN0LVx1MDAzZWNjayksIHZhbCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6NDc4Olx0XHRcdCAgICAgICB0YXJnZXRfcG93ZXIsIHR4c19kZWx0YSwgXHUwMDI2bWF4X3Bvd2VyLCBuX2NoYWlucywgTVQ3Nl9TS1VfUkFURSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTQ3OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTQ4MS1cdG10NzZfYXBwbHlfYXJyYXlfbGltaXQoZGV2LCBkZXN0LVx1MDAzZW9mZG0sIEFSUkFZX1NJWkUoZGVzdC1cdTAwM2VvZmRtKSwgdmFsLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYzo0ODI6XHRcdFx0ICAgICAgIHRhcmdldF9wb3dlciwgdHhzX2RlbHRhLCBcdTAwMjZtYXhfcG93ZXIsIG5fY2hhaW5zLCBNVDc2X1NLVV9SQVRFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtNDgzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtNDg2LVx0XHRcdFx0ICAgICBBUlJBWV9TSVpFKGRlc3QtXHUwMDNlbWNzKSwgdmFsLCBsZW4sIHRhcmdldF9wb3dlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6NDg3Olx0XHRcdFx0ICAgICB0eHNfZGVsdGEsIFx1MDAyNm1heF9wb3dlciwgbl9jaGFpbnMsIE1UNzZfU0tVX1JBVEUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy00ODgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy00OTEtXHRcdFx0XHQgICAgIEFSUkFZX1NJWkUoZGVzdC1cdTAwM2VydSksIHZhbCwgbGVuLCB0YXJnZXRfcG93ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjQ5MjpcdFx0XHRcdCAgICAgdHhzX2RlbHRhLCBcdTAwMjZtYXhfcG93ZXIsIG5fY2hhaW5zLCBNVDc2X1NLVV9SQVRFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtNDkzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtNDk1LVx0bXQ3Nl9hcHBseV9hcnJheV9saW1pdChkZXYsIGRlc3QtXHUwMDNlcGF0aC5jY2ssIEFSUkFZX1NJWkUoZGVzdC1cdTAwM2VwYXRoLmNjayksIHZhbCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6NDk2Olx0XHRcdCAgICAgICB0YXJnZXRfcG93ZXIsIHR4c19kZWx0YSwgXHUwMDI2bWF4X3Bvd2VyLCBuX2NoYWlucywgTVQ3Nl9TS1VfQkFDS09GRik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTQ5Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTQ5OS1cdG10NzZfYXBwbHlfYXJyYXlfbGltaXQoZGV2LCBkZXN0LVx1MDAzZXBhdGgub2ZkbSwgQVJSQVlfU0laRShkZXN0LVx1MDAzZXBhdGgub2ZkbSksIHZhbCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6NTAwOlx0XHRcdCAgICAgICB0YXJnZXRfcG93ZXIsIHR4c19kZWx0YSwgXHUwMDI2bWF4X3Bvd2VyLCBuX2NoYWlucywgTVQ3Nl9TS1VfQkFDS09GRik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTUwMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTUwNC1cdFx0XHQgICAgICAgdGFyZ2V0X3Bvd2VyLCB0eHNfZGVsdGEsIFx1MDAyNm1heF9wb3dlciwgbl9jaGFpbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjUwNTpcdFx0XHQgICAgICAgTVQ3Nl9TS1VfQkFDS09GRl9CRl9PRkZTRVQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy01MDYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy01MDktXHRcdFx0XHQgICAgIEFSUkFZX1NJWkUoZGVzdC1cdTAwM2VwYXRoLnJ1KSwgdmFsLCBsZW4sIHRhcmdldF9wb3dlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6NTEwOlx0XHRcdFx0ICAgICB0eHNfZGVsdGEsIFx1MDAyNm1heF9wb3dlciwgbl9jaGFpbnMsIE1UNzZfU0tVX0JBQ0tPRkYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy01MTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy01MTQtXHRcdFx0XHQgICAgIEFSUkFZX1NJWkUoZGVzdC1cdTAwM2VwYXRoLnJ1X2JmKSwgdmFsLCBsZW4sIHRhcmdldF9wb3dlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6NTE1Olx0XHRcdFx0ICAgICB0eHNfZGVsdGEsIFx1MDAyNm1heF9wb3dlciwgbl9jaGFpbnMsIE1UNzZfU0tVX0JBQ0tPRkYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy01MTYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTU1MD1pbnQgbXQ3Nl9yZWdpc3Rlcl9waHkoc3RydWN0IG10NzZfcGh5ICpwaHksIGJvb2wgdmh0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy01NzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6NTc3Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01UNzZfTEVEUykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy01NzgtXHRcdHJldCA9IG10NzZfbGVkX2luaXQocGh5KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNTkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjU5NDpcdHNldF9iaXQoTVQ3Nl9TVEFURV9SRUdJU1RFUkVELCBcdTAwMjZwaHktXHUwMDNlc3RhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTU5NS1cdHBoeS1cdTAwM2VkZXYtXHUwMDNlcGh5c1twaHktXHUwMDNlYmFuZF9pZHhdID0gcGh5O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz02MDE9dm9pZCBtdDc2X3VucmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy02MDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6NjA1Olx0aWYgKCF0ZXN0X2JpdChNVDc2X1NUQVRFX1JFR0lTVEVSRUQsIFx1MDAyNnBoeS1cdTAwM2VzdGF0ZSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNjA2LVx0XHRyZXR1cm47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNjA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjYwODpcdGlmIChJU19FTkFCTEVEKENPTkZJR19NVDc2X0xFRFMpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTYwOS1cdFx0bXQ3Nl9sZWRfY2xlYW51cChwaHkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz03NDc9aW50IG10NzZfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBib29sIHZodCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNzg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjc4OTpcdGlmIChJU19FTkFCTEVEKENPTkZJR19NVDc2X0xFRFMpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNzkwLVx0XHRyZXQgPSBtdDc2X2xlZF9pbml0KHBoeSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTc5OS1cdFdBUk5fT04obXQ3Nl93b3JrZXJfc2V0dXAoaHcsIFx1MDAyNmRldi1cdTAwM2V0eF93b3JrZXIsIE5VTEwsIFwmIzM0O3R4XCYjMzQ7KSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6ODAwOlx0c2V0X2JpdChNVDc2X1NUQVRFX1JFR0lTVEVSRUQsIFx1MDAyNnBoeS1cdTAwM2VzdGF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODAxLVx0c2NoZWRfc2V0X2ZpZm9fbG93KGRldi1cdTAwM2V0eF93b3JrZXIudGFzayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTgwNz12b2lkIG10NzZfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTgxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo4MTE6XHRpZiAoIXRlc3RfYml0KE1UNzZfU1RBVEVfUkVHSVNURVJFRCwgXHUwMDI2ZGV2LVx1MDAzZXBoeS5zdGF0ZSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODEyLVx0XHRyZXR1cm47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjgxNDpcdGlmIChJU19FTkFCTEVEKENPTkZJR19NVDc2X0xFRFMpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTgxNS1cdFx0bXQ3Nl9sZWRfY2xlYW51cChcdTAwMjZkZXYtXHUwMDNlcGh5KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9ODkxPXN0YXRpYyB2b2lkIG10NzZfcnhfcmVsZWFzZV9hbXNkdShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSwgZW51bSBtdDc2X3J4cV9pZCBxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy05MjgtXHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo5Mjk6XHRpZiAobXQ3Nl9xdWV1ZV9pc193ZWRfcnJvX2RhdGEocnhxKSBcdTAwMjZcdTAwMjYgZGV2LVx1MDAzZWh3cnJvX21vZGUgPT0gTVQ3Nl9IV1JST19WMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy05MzAtXHRcdHEgPSBNVF9SWFFfUlJPX0lORDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9OTU4PXZvaWQgbXQ3Nl9yeChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgZW51bSBtdDc2X3J4cV9pZCBxLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy05NjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6OTYzOlx0aWYgKCF0ZXN0X2JpdChNVDc2X1NUQVRFX1JVTk5JTkcsIFx1MDAyNnBoeS1cdTAwM2VzdGF0ZSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy05NjQtXHRcdGRldl9rZnJlZV9za2Ioc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtOTY4LSNpZmRlZiBDT05GSUdfTkw4MDIxMV9URVNUTU9ERVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjk2OTpcdGlmIChwaHktXHUwMDNldGVzdC5zdGF0ZSA9PSBNVDc2X1RNX1NUQVRFX1JYX0ZSQU1FUykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTk3MC1cdFx0cGh5LVx1MDAzZXRlc3Qucnhfc3RhdHMucGFja2V0c1txXSYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTEwNDc9aW50IF9fbXQ3Nl9zZXRfY2hhbm5lbChzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSwgc3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICpjaGFuZGVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xMDU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjEwNTc6XHRzZXRfYml0KE1UNzZfUkVTRVQsIFx1MDAyNnBoeS1cdTAwM2VzdGF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTA1OC1cdHdhaXRfZXZlbnRfdGltZW91dChkZXYtXHUwMDNldHhfd2FpdCwgIW10NzZfaGFzX3R4X3BlbmRpbmcocGh5KSwgdGltZW91dCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTEwNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTA3NzpcdGNsZWFyX2JpdChNVDc2X1JFU0VULCBcdTAwMjZwaHktXHUwMDNlc3RhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTEwNzgtXHRtdDc2X3dvcmtlcl9lbmFibGUoXHUwMDI2ZGV2LVx1MDAzZXR4X3dvcmtlcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE2NjY9aW50IG10NzZfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNjkxLVx0ICAgIG5ld19zdGF0ZSA9PSBJRUVFODAyMTFfU1RBX0FTU09DKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjE2OTI6XHRcdGV2ID0gTVQ3Nl9TVEFfRVZFTlRfQVNTT0M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTY5My1cdGVsc2UgaWYgKG9sZF9zdGF0ZSA9PSBJRUVFODAyMTFfU1RBX0FTU09DIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE2OTQtXHRcdCBuZXdfc3RhdGUgPT0gSUVFRTgwMjExX1NUQV9BVVRIT1JJWkVEKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjE2OTU6XHRcdGV2ID0gTVQ3Nl9TVEFfRVZFTlRfQVVUSE9SSVpFO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE2OTYtXHRlbHNlIGlmIChvbGRfc3RhdGUgPT0gSUVFRTgwMjExX1NUQV9BU1NPQyBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNjk3LVx0XHQgbmV3X3N0YXRlID09IElFRUU4MDIxMV9TVEFfQVVUSClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxNjk4Olx0XHRldiA9IE1UNzZfU1RBX0VWRU5UX0RJU0FTU09DO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE2OTktXHRlbHNlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE3ODI9dm9pZCBtdDc2X3djaWRfYWRkX3BvbGwoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTc4My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTc4NDpcdGlmICh0ZXN0X2JpdChNVDc2X01DVV9SRVNFVCwgXHUwMDI2ZGV2LVx1MDAzZXBoeS5zdGF0ZSkgfHwgIXdjaWQtXHUwMDNlc3RhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE3ODUtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9MTk2OT12b2lkIG10NzZfc3dfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTk3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxOTc0Olx0c2V0X2JpdChNVDc2X1NDQU5OSU5HLCBcdTAwMjZwaHktXHUwMDNlc3RhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE5NzUtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz0xOTc4PXZvaWQgbXQ3Nl9zd19zY2FuX2NvbXBsZXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xOTgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjE5ODI6XHRjbGVhcl9iaXQoTVQ3Nl9TQ0FOTklORywgXHUwMDI2cGh5LVx1MDAzZXN0YXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xOTgzLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9MjA3OD1lbnVtIG10NzZfZGZzX3N0YXRlIG10NzZfcGh5X2Rmc19zdGF0ZShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMjA4My1cdGlmIChkZXYtXHUwMDNlcmVnaW9uID09IE5MODAyMTFfREZTX1VOU0VUIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MjA4NDpcdCAgICB0ZXN0X2JpdChNVDc2X1NDQU5OSU5HLCBcdTAwMjZwaHktXHUwMDNlc3RhdGUpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTIwODUtXHRcdHJldHVybiBNVF9ERlNfU1RBVEVfRElTQUJMRUQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTIzMzc9c3RhdGljIHZvaWQgbXQ3Nl9iZWFjb25fbW9uX2l0ZXIodm9pZCAqZGF0YSwgdTggKm1hYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMjM2MC1cdFx0XHQgICAgICAgUkVBRF9PTkNFKG1saW5rLVx1MDAzZWJlYWNvbl9tb25fbGFzdCkgJiM0MztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoyMzYxOlx0XHRcdCAgICAgICBNVDc2X0JFQUNPTl9NT05fTUFYX01JU1MgKiBtbGluay1cdTAwM2ViZWFjb25fbW9uX2ludGVydmFsKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0yMzYyLVx0XHRcdGllZWU4MDIxMV9iZWFjb25fbG9zcyh2aWYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmM9MzI9c3RydWN0IHNrX2J1ZmYgKm10NzZfbWN1X2dldF9yZXNwb25zZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jLTQyLVx0XHRcdCAgICghc2tiX3F1ZXVlX2VtcHR5KFx1MDAyNmRldi1cdTAwM2VtY3UucmVzX3EpIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jOjQzOlx0XHRcdCAgICB0ZXN0X2JpdChNVDc2X01DVV9SRVNFVCwgXHUwMDI2ZGV2LVx1MDAzZXBoeS5zdGF0ZSkpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tY3UuYy00NC1cdFx0XHQgICB0aW1lb3V0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jPTcyPWludCBtdDc2X21jdV9za2Jfc2VuZF9hbmRfZ2V0X21zZyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jLTg2LVx0aWYgKChtdDc2X2lzX21taW8oZGV2KSBcdTAwMjZcdTAwMjYgYXRvbWljX3JlYWQoXHUwMDI2ZGV2LVx1MDAzZWJ1c19odW5nKSkgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmM6ODc6XHQgICAgKG10NzZfaXNfc2RpbyhkZXYpIFx1MDAyNlx1MDAyNiB0ZXN0X2JpdChNVDc2X1JFU0VULCBcdTAwMjZkZXYtXHUwMDNlcGh5LnN0YXRlKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmMtODgtXHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGV2LVx1MDAzZWJ1c19odW5nKSkpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jLTExNy1cdFx0c2tiID0gbXQ3Nl9tY3VfZ2V0X3Jlc3BvbnNlKGRldiwgZXhwaXJlcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jOjExODpcdFx0aWYgKCFza2IgXHUwMDI2XHUwMDI2ICF0ZXN0X2JpdChNVDc2X01DVV9SRVNFVCwgXHUwMDI2ZGV2LVx1MDAzZXBoeS5zdGF0ZSkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jLTExOS1cdFx0ICAgIG9yaWdfc2tiIFx1MDAyNlx1MDAyNiByZXRyeSYjNDM7JiM0MzsgXHUwMDNjIGRldi1cdTAwM2VtY3Vfb3BzLVx1MDAzZW1heF9yZXRyeSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbW1pby5jPTExMD12b2lkIG10NzZfbW1pb19pbml0KHN0cnVjdCBtdDc2X2RldiAqZGV2LCB2b2lkIF9faW9tZW0gKnJlZ3MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tbWlvLmMtMTE5LVx0XHQucmRfcnAgPSBtdDc2X21taW9fcmRfcnAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21taW8uYzoxMjA6XHRcdC50eXBlID0gTVQ3Nl9CVVNfTU1JTyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbW1pby5jLTEyMS1cdH07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjY6I2lmbmRlZiBfX01UNzZfSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NzojZGVmaW5lIF9fTVQ3Nl9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC04LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MzA6I2RlZmluZSBNVDc2X1RPS0VOX0ZSRUVfVEhSXHQ2NFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMzEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo0NTojZGVmaW5lIE1UX1dFRF9RX1RYKF9uKVx0XHRfX01UX1dFRF9RKE1UNzZfV0VEX1FfVFgsIF9uKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NDY6I2RlZmluZSBNVF9XRURfUV9SWChfbilcdFx0X19NVF9XRURfUShNVDc2X1dFRF9RX1JYLCBfbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjQ3OiNkZWZpbmUgTVRfV0VEX1FfVFhGUkVFXHRcdF9fTVRfV0VEX1EoTVQ3Nl9XRURfUV9UWEZSRUUsIDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo0ODojZGVmaW5lIE1UX1dFRF9SUk9fUV9EQVRBKF9uKVx0X19NVF9XRURfUlJPX1EoTVQ3Nl9XRURfUlJPX1FfREFUQSwgX24pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo0OTojZGVmaW5lIE1UX1dFRF9SUk9fUV9NU0RVX1BHKF9uKVx0X19NVF9XRURfUlJPX1EoTVQ3Nl9XRURfUlJPX1FfTVNEVV9QRywgX24pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MDojZGVmaW5lIE1UX1dFRF9SUk9fUV9JTkRcdF9fTVRfV0VEX1JST19RKE1UNzZfV0VEX1JST19RX0lORCwgMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUxOiNkZWZpbmUgTVRfV0VEX1JST19RX1JYRE1BRF9DXHRfX01UX1dFRF9SUk9fUShNVDc2X1dFRF9SUk9fUV9SWERNQURfQywgMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTUyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTU1LVx0XHRcdFx0IEZJRUxEX1BSRVAoTVRfUUZMQUdfV0VEX1JJTkcsIF9uKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjU2OiNkZWZpbmUgTVRfTlBVX1FfVFgoX24pXHRcdF9fTVRfTlBVX1EoTVQ3Nl9XRURfUV9UWCwgX24pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1NzojZGVmaW5lIE1UX05QVV9RX1JYKF9uKVx0XHRfX01UX05QVV9RKE1UNzZfV0VEX1FfUlgsIF9uKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTg6I2RlZmluZSBNVF9OUFVfUV9UWEZSRUUoX24pXHQoRklFTERfUFJFUChNVF9RRkxBR19XRURfVFlQRSwgTVQ3Nl9XRURfUV9UWEZSRUUpIHwgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTU5LVx0XHRcdFx0IEZJRUxEX1BSRVAoTVRfUUZMQUdfV0VEX1JJTkcsIF9uKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD03Mz1lbnVtIG10NzZfYnVzX3R5cGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NzQ6XHRNVDc2X0JVU19NTUlPLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NzU6XHRNVDc2X0JVU19VU0IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo3NjpcdE1UNzZfQlVTX1NESU8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC03Ny19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTc5PWVudW0gbXQ3Nl93ZWRfdHlwZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo4MDpcdE1UNzZfV0VEX1FfVFgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo4MTpcdE1UNzZfV0VEX1FfVFhGUkVFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6ODI6XHRNVDc2X1dFRF9RX1JYLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6ODM6XHRNVDc2X1dFRF9SUk9fUV9EQVRBLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6ODQ6XHRNVDc2X1dFRF9SUk9fUV9NU0RVX1BHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6ODU6XHRNVDc2X1dFRF9SUk9fUV9JTkQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo4NjpcdE1UNzZfV0VEX1JST19RX1JYRE1BRF9DLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtODctfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD04OT1lbnVtIG10NzZfaHdycm9fbW9kZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo5MDpcdE1UNzZfSFdSUk9fT0ZGLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6OTE6XHRNVDc2X0hXUlJPX1YzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6OTI6XHRNVDc2X0hXUlJPX1YzXzEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC05My19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTk1PXN0cnVjdCBtdDc2X2J1c19vcHMge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjExMDojZGVmaW5lIG10NzZfaXNfdXNiKGRldikgKChkZXYpLVx1MDAzZWJ1cy1cdTAwM2V0eXBlID09IE1UNzZfQlVTX1VTQilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjExMTojZGVmaW5lIG10NzZfaXNfbW1pbyhkZXYpICgoZGV2KS1cdTAwM2VidXMtXHUwMDNldHlwZSA9PSBNVDc2X0JVU19NTUlPKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTEyOiNkZWZpbmUgbXQ3Nl9pc19zZGlvKGRldikgKChkZXYpLVx1MDAzZWJ1cy1cdTAwM2V0eXBlID09IE1UNzZfQlVTX1NESU8pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xMTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTgwPWVudW0gbXQ3Nl9kZnNfc3RhdGUge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE4NzojZGVmaW5lIE1UNzZfUk5SX1NDQU5fTUFYX0JTU0lEUyAgICAgICAxNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTg4LXN0cnVjdCBtdDc2X3NjYW5fcm5yX3BhcmFtIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE4OTpcdHU4IGJzc2lkW01UNzZfUk5SX1NDQU5fTUFYX0JTU0lEU11bRVRIX0FMRU5dO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTkwOlx0dTggY2hhbm5lbFtNVDc2X1JOUl9TQ0FOX01BWF9CU1NJRFNdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTkxLVx0dTggcmFuZG9tX21hY1tFVEhfQUxFTl07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MzU5PWVudW0gbXQ3Nl93Y2lkX2ZsYWdzIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0zNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDozNjc6I2RlZmluZSBNVDc2X05fV0NJRFMgMTA4OFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MzY4OiNkZWZpbmUgTVQ3Nl9CRUFDT05fTU9OX01BWF9NSVNTXHQ3XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0zNjktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9NTAzPWVudW0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTA0Olx0TVQ3Nl9TVEFURV9JTklUSUFMSVpFRCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUwNTpcdE1UNzZfU1RBVEVfUkVHSVNURVJFRCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUwNjpcdE1UNzZfU1RBVEVfUlVOTklORyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUwNzpcdE1UNzZfU1RBVEVfTUNVX1JVTk5JTkcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MDg6XHRNVDc2X1NDQU5OSU5HLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTA5Olx0TVQ3Nl9IV19TQ0FOTklORyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUxMDpcdE1UNzZfSFdfU0NIRURfU0NBTk5JTkcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MTE6XHRNVDc2X1JFU1RBUlQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MTI6XHRNVDc2X1JFU0VULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTEzOlx0TVQ3Nl9NQ1VfUkVTRVQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MTQ6XHRNVDc2X1JFTU9WRUQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MTU6XHRNVDc2X1JFQURJTkdfU1RBVFMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MTY6XHRNVDc2X1NUQVRFX1BPV0VSX09GRixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUxNzpcdE1UNzZfU1RBVEVfU1VTUEVORCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUxODpcdE1UNzZfU1RBVEVfUk9DLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTE5Olx0TVQ3Nl9TVEFURV9QTSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUyMDpcdE1UNzZfU1RBVEVfV0VEX1JFU0VULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNTIxLX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9NTIzPWVudW0gbXQ3Nl9zdGFfZXZlbnQge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTI0Olx0TVQ3Nl9TVEFfRVZFTlRfQVNTT0MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MjU6XHRNVDc2X1NUQV9FVkVOVF9BVVRIT1JJWkUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MjY6XHRNVDc2X1NUQV9FVkVOVF9ESVNBU1NPQyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTUyNy19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTY2ND1zdHJ1Y3QgbXQ3Nl91c2Ige1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTY4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjY4ODojZGVmaW5lIE1UNzZTX1hNSVRfQlVGX1NaXHQweDNmZTAwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo2ODk6I2RlZmluZSBNVDc2U19OVU1fVFhfRU5UUklFU1x0MjU2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo2OTA6I2RlZmluZSBNVDc2U19OVU1fUlhfRU5UUklFU1x0NTEyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC02OTEtc3RydWN0IG10NzZfc2RpbyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9Nzg3PXN0cnVjdCBtdDc2X3Rlc3Rtb2RlX2RhdGEge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTc4OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjc5MDpcdHUzMiBwYXJhbV9zZXRbRElWX1JPVU5EX1VQKE5VTV9NVDc2X1RNX0FUVFJTLCAzMildO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNzkxLVx0c3RydWN0IHNrX2J1ZmYgKnR4X3NrYjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD05MjM9c3RydWN0IG10NzZfZGV2IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC05ODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo5ODY6XHR1MzIgd2NpZF9tYXNrW0RJVl9ST1VORF9VUChNVDc2X05fV0NJRFMsIDMyKV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC05ODctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtOTkwLVx0c3RydWN0IG10NzZfd2NpZCBnbG9iYWxfd2NpZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjk5MTpcdHN0cnVjdCBtdDc2X3djaWQgX19yY3UgKndjaWRbTVQ3Nl9OX1dDSURTXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTk5Mi1cdHN0cnVjdCBsaXN0X2hlYWQgd2NpZF9saXN0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE0OTg9c3RhdGljIGlubGluZSBib29sIG10NzZfdGVzdG1vZGVfZW5hYmxlZChzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNTAwLSNpZmRlZiBDT05GSUdfTkw4MDIxMV9URVNUTU9ERVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTUwMTpcdHJldHVybiBwaHktXHUwMDNldGVzdC5zdGF0ZSAhPSBNVDc2X1RNX1NUQVRFX09GRjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE1MDItI2Vsc2Vcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xNjU1PWludCBtdDc2X3Rlc3Rtb2RlX2FsbG9jX3NrYihzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSwgdTMyIGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNjU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTY1NzojaWYgSVNfRU5BQkxFRChDT05GSUdfTVQ3Nl9OUFUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNjU4LXZvaWQgbXQ3Nl9ucHVfY2hlY2tfcHBlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE3MzY9c3RhdGljIGlubGluZSBpbnQgbXQ3Nl9ucHVfc2VuZF90eHJ4X2FkZHIoc3RydWN0IG10NzZfZGV2ICpkZXYsIGludCBpZmluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3NDEtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTc0MjojZW5kaWYgLyogQ09ORklHX01UNzZfTlBVICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNzQzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE3NzA9c3RhdGljIGlubGluZSB2b2lkIG10NzZfdGVzdG1vZGVfcmVzZXQoc3RydWN0IG10NzZfcGh5ICpwaHksIGJvb2wgZGlzYWJsZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNzcyLSNpZmRlZiBDT05GSUdfTkw4MDIxMV9URVNUTU9ERVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTc3MzpcdGVudW0gbXQ3Nl90ZXN0bW9kZV9zdGF0ZSBzdGF0ZSA9IE1UNzZfVE1fU1RBVEVfSURMRTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3NzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxNzc1Olx0aWYgKGRpc2FibGUgfHwgcGh5LVx1MDAzZXRlc3Quc3RhdGUgPT0gTVQ3Nl9UTV9TVEFURV9PRkYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxNzc2Olx0XHRzdGF0ZSA9IE1UNzZfVE1fU1RBVEVfT0ZGO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTc3Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xOTc3PXN0YXRpYyBpbmxpbmUgYm9vbCBtdDc2X3F1ZXVlX2lzX3dlZF90eF9mcmVlKHN0cnVjdCBtdDc2X3F1ZXVlICpxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE5NzktXHRyZXR1cm4gKHEtXHUwMDNlZmxhZ3MgXHUwMDI2IE1UX1FGTEFHX1dFRCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxOTgwOlx0ICAgICAgIEZJRUxEX0dFVChNVF9RRkxBR19XRURfVFlQRSwgcS1cdTAwM2VmbGFncykgPT0gTVQ3Nl9XRURfUV9UWEZSRUU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xOTgxLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xOTg4PXN0YXRpYyBpbmxpbmUgYm9vbCBtdDc2X3F1ZXVlX2lzX3dlZF9ycm9faW5kKHN0cnVjdCBtdDc2X3F1ZXVlICpxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE5OTAtXHRyZXR1cm4gbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvKHEpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTk5MTpcdCAgICAgICBGSUVMRF9HRVQoTVRfUUZMQUdfV0VEX1RZUEUsIHEtXHUwMDNlZmxhZ3MpID09IE1UNzZfV0VEX1JST19RX0lORDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE5OTItfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE5OTQ9c3RhdGljIGlubGluZSBib29sIG10NzZfcXVldWVfaXNfd2VkX3Jyb19yeGRtYWRfYyhzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xOTk2LVx0cmV0dXJuIG10NzZfcXVldWVfaXNfd2VkX3JybyhxKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE5OTc6XHQgICAgICAgRklFTERfR0VUKE1UX1FGTEFHX1dFRF9UWVBFLCBxLVx1MDAzZWZsYWdzKSA9PSBNVDc2X1dFRF9SUk9fUV9SWERNQURfQztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE5OTgtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTIwMDA9c3RhdGljIGlubGluZSBib29sIG10NzZfcXVldWVfaXNfd2VkX3Jyb19kYXRhKHN0cnVjdCBtdDc2X3F1ZXVlICpxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTIwMDItXHRyZXR1cm4gbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvKHEpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MjAwMzpcdCAgICAgICBGSUVMRF9HRVQoTVRfUUZMQUdfV0VEX1RZUEUsIHEtXHUwMDNlZmxhZ3MpID09IE1UNzZfV0VEX1JST19RX0RBVEE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0yMDA0LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0yMDA2PXN0YXRpYyBpbmxpbmUgYm9vbCBtdDc2X3F1ZXVlX2lzX3dlZF9ycm9fbXNkdV9wZyhzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0yMDA5LVx0ICAgICAgIEZJRUxEX0dFVChNVF9RRkxBR19XRURfVFlQRSwgcS1cdTAwM2VmbGFncykgPT1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjIwMTA6XHQgICAgICAgTVQ3Nl9XRURfUlJPX1FfTVNEVV9QRztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTIwMTEtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTIwMTM9c3RhdGljIGlubGluZSBib29sIG10NzZfcXVldWVfaXNfd2VkX3J4KHN0cnVjdCBtdDc2X3F1ZXVlICpxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTIwMTUtXHRyZXR1cm4gKHEtXHUwMDNlZmxhZ3MgXHUwMDI2IE1UX1FGTEFHX1dFRCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoyMDE2Olx0ICAgICAgIEZJRUxEX0dFVChNVF9RRkxBR19XRURfVFlQRSwgcS1cdTAwM2VmbGFncykgPT0gTVQ3Nl9XRURfUV9SWDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTIwMTctfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTIwMjk9c3RhdGljIGlubGluZSBib29sIG10NzZfcXVldWVfaXNfbnB1X3R4KHN0cnVjdCBtdDc2X3F1ZXVlICpxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTIwMzEtXHRyZXR1cm4gbXQ3Nl9xdWV1ZV9pc19ucHUocSkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoyMDMyOlx0ICAgICAgIEZJRUxEX0dFVChNVF9RRkxBR19XRURfVFlQRSwgcS1cdTAwM2VmbGFncykgPT0gTVQ3Nl9XRURfUV9UWDtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDkzOQoJCQkJCQkJb3V0cHV0OiAxODcKCQkJCQkJCXRob3VnaHRzOiA5MzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgTWVkaWFUZWsgV2lyZWxlc3MgRHJpdmVyIENoYW5nZXMgZm9yIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGlkZW50aWZ5IHBvdGVudGlhbCBmdXp6aW5nIHRhcmdldHMsIGFuZCB0aGlzIHBhdGNoIGltbWVkaWF0ZWx5IGNhdGNoZXMgbXkgYXR0ZW50aW9uLgoKRmlyc3QsIEkgbmVlZCB0byBrbm93IHdoZXJlIHdlJiMzOTtyZSB3b3JraW5nLiBJIHNlZSBgbXQ3Nl9waHlfaW5pdGAgYW5kIGBtdDc5MnhfaW5pdF93aXBoeWAgYXJlIHRoZSBrZXkgZnVuY3Rpb25zLiBTcGVjaWZpY2FsbHksIGBtdDc2X3BoeV9pbml0YCBpcyBhIHN0YXRpYyBmdW5jdGlvbiB3aXRoaW4gYG1hYzgwMjExLmNgLCBjYWxsZWQgYnkgYG10NzZfcmVnaXN0ZXJfcGh5YCBhbmQgYG10NzZfcmVnaXN0ZXJfZGV2aWNlYC4gYG10NzkyeF9pbml0X3dpcGh5YCBpcyBpbiBgbXQ3OTJ4X2NvcmUuY2AuIFRoZXNlIGFyZSBjcnVjaWFsIGVudHJ5IHBvaW50cyBpbnRvIHRoZSBNZWRpYVRlayB3aXJlbGVzcyBkcml2ZXIgc3RhY2suCgpUaGUgcGF0Y2gmIzM5O3MgY29yZSBtb2RpZmljYXRpb24gc2VlbXMgdG8gaW52b2x2ZSBlbmFibGluZyB0aGUgYE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUmAgZmVhdHVyZS4gSXQgYWZmZWN0cyBNZWRpYVRlayB3aXJlbGVzcyBkcml2ZXJzIGRpcmVjdGx5LCBlc3BlY2lhbGx5IFVTQiB2YXJpYW50cyBsaWtlIGBtdDc5MjF1YCwgYG10NzZ4MHVgLCBhbmQgb3RoZXJzIOKAkyB0aGUgb25lcyB0aGF0IGFyZSBsaWtlbHkgYWNjZXNzaWJsZSBpbiBhIHZpcnR1YWxpemVkIFVTQiBnYWRnZXQgZW52aXJvbm1lbnQuICBXaGVuIHRoZXNlIFVTQiBkZXZpY2VzIGFyZSBjb25uZWN0ZWQsIHRoZSBtZW50aW9uZWQgZnVuY3Rpb25zIChgbXQ3Nl9waHlfaW5pdGAgYW5kIGBtdDc5MnhfaW5pdF93aXBoeWApIGFyZSBleGVjdXRlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIFRoaXMgc2V0cyB0aGUgc3RhZ2UgZm9yIGNyZWF0aW5nIGFuZCBjb25maWd1cmluZyBhY3RpdmUgbW9uaXRvciBtb2RlIGludGVyZmFjZXMgdXNpbmcgbmV0bGluayAobmw4MDIxMSkuCgpUaGVyZWZvcmUsIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCB0aGlzIGxvb2tzIHByb21pc2luZy4gTXkgYXNzZXNzbWVudCBpczoKCiogICAqKldvcnRoRnV6emluZzogVHJ1ZS4qKiBUaGUgbW9kaWZpY2F0aW9uIGRpcmVjdGx5IGVuYWJsZXMgbmV3IGZ1bmN0aW9uYWxpdHkgcmVsYXRlZCB0byBhY3RpdmUgbW9uaXRvcmluZywgd2hpY2ggaW5jcmVhc2VzIHRoZSBhdHRhY2sgc3VyZmFjZSBmb3IgZnV6emluZy4KKiAgICoqRm9jdXMgU3ltYm9sczoqKiBNeSBmb2N1cyBzaG91bGQgYmUgb24gdGhlIGVudHJ5IHBvaW50czoKICAgICogICBgbXQ3OTJ4X2luaXRfd2lwaHlgCiAgICAqICAgYG10NzZfcmVnaXN0ZXJfZGV2aWNlYAogICAgKiAgIGBtdDc2X3JlZ2lzdGVyX3BoeWAKKiAgICoqRW5hYmxlQ29uZmlnczoqKiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSByaWdodCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHNldC4gIFRoZSByZWxldmFudCBjb25maWdzIGFyZTogYE1UNzZfQ09SRWAsIGBNVDc5MnhfTElCYCwgYE1UNzkyMVVgLCBgTUFDODAyMTFgLCBgQ0ZHODAyMTFgLiBTcGVjaWZpY2FsbHksIGBNVDc2X0NPUkVgIHNlZW1zIHRvIGJlIHNlbGVjdGVkIGJ5IHRoaW5ncyBsaWtlIGBNVDc2X0NPTk5BQ19MSUJgLCBgTVQ3NngwMl9MSUJgLiBgTVQ3OTIxVWAgc2VsZWN0cyBgTVQ3OTJ4X1VTQmAgYW5kIGBNVDc5MjFfQ09NTU9OYC4KKiAgIERvdWJsZS1jaGVja2luZyB0aGlzLCBJIGNvbmZpcm0gdGhhdCB0aGUgYEZvY3VzU3ltYm9sc2AgYW5kIGBFbmFibGVDb25maWdzYCBhYm92ZSBhcmUgY29ycmVjdC4KCk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IFRoZSBwYXRjaCByZW1vdmVzIGEgbGltaXRhdGlvbiBhbmQgdW5jb25kaXRpb25hbGx5IGVuYWJsZXMgdGhlIGFjdGl2ZSBtb25pdG9yIGZlYXR1cmUuIFRoaXMgbWVhbnMgdXNlcnNwYWNlIGNhbiBjb25maWd1cmUgYWN0aXZlIG1vbml0b3IgaW50ZXJmYWNlcyB2aWEgbmw4MDIxMSBvbiBNZWRpYVRlayB3aXJlbGVzcyBkZXZpY2VzLCBlc3BlY2lhbGx5IHRoZSBVU0ItYmFzZWQgb25lcywgc28gdGhpcyBpcyB3b3J0aCBmdXp6aW5nLgpBbHJpZ2h0LCB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoaXMgaW5mb3JtYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDA0OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc2X0NPUkUmIzM0OywKICAgICYjMzQ7TVQ3OTJ4X0xJQiYjMzQ7LAogICAgJiMzNDtNVDc5MjFVJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTJ4X2luaXRfd2lwaHkmIzM0OywKICAgICYjMzQ7bXQ3Nl9yZWdpc3Rlcl9kZXZpY2UmIzM0OywKICAgICYjMzQ7bXQ3Nl9yZWdpc3Rlcl9waHkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyB0aGUgbm9fYWN0aXZlX21vbml0b3IgZmxhZyBhbmQgdW5jb25kaXRpb25hbGx5IGVuYWJsZXMgTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SIGZvciBNZWRpYVRlayBtdDc2IC8gbXQ3OTJ4IHdpcmVsZXNzIGRyaXZlcnMuIFRoZXNlIGRyaXZlcnMgYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24gKGUuZy4gbXQ3OTIxdSksIGFsbG93aW5nIGFjdGl2ZSBtb25pdG9yIGludGVyZmFjZSBjcmVhdGlvbiBhbmQgaGFuZGxpbmcgdmlhIG5sODAyMTEuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzZfQ09SRSYjMzQ7LAogICAgJiMzNDtNVDc5MnhfTElCJiMzNDssCiAgICAmIzM0O01UNzkyMVUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MnhfaW5pdF93aXBoeSYjMzQ7LAogICAgJiMzNDttdDc2X3JlZ2lzdGVyX2RldmljZSYjMzQ7LAogICAgJiMzNDttdDc2X3JlZ2lzdGVyX3BoeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIHRoZSBub19hY3RpdmVfbW9uaXRvciBmbGFnIGFuZCB1bmNvbmRpdGlvbmFsbHkgZW5hYmxlcyBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1IgZm9yIE1lZGlhVGVrIG10NzYgLyBtdDc5Mnggd2lyZWxlc3MgZHJpdmVycy4gVGhlc2UgZHJpdmVycyBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbiAoZS5nLiBtdDc5MjF1KSwgYWxsb3dpbmcgYWN0aXZlIG1vbml0b3IgaW50ZXJmYWNlIGNyZWF0aW9uIGFuZCBoYW5kbGluZyB2aWEgbmw4MDIxMS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGVuYWJsZXMgdGhlIE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiBmZWF0dXJlIGZsYWcgdW5jb25kaXRpb25hbGx5IGZvciBhbGwgbXQ3NiB3aXJlbGVzcyBkZXZpY2VzIGJ5IHJlbW92aW5nIHRoZSBgbm9fYWN0aXZlX21vbml0b3JgIGZsYWcgZnJvbSBgc3RydWN0IG10NzZfcGh5YCBhbmQgdGhlIG92ZXJyaWRlIGluIGBtdDc5MnhfaW5pdF93aXBoeWAuXG5cblRoaXMgY2hhbmdlIG9ubHkgbW9kaWZpZXMgYSBmZWF0dXJlIGJpdG1hc2sgZmxhZyBvbiB0aGUgd2lwaHkgZGV2aWNlIGFuZCByZW1vdmVzIGEgc3RydWN0IGZpZWxkLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGRhdGEgc3RydWN0dXJlcywgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHBhZGRpbmcvZmllbGRzIGNvcGllZCB0byB1c2Vyc3BhY2UsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgaW5mb3JtYXRpb24gbGVhayByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gZnV6emluZywgYW5kIHN0YW5kYXJkIEtBU0FOL3N5emthbGxlciB0ZXN0aW5nIGlzIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwYjYzNDUzZGI4NzAxZjg5MTIxMjVkNWFjZmMyNTBkNTQ1MDdiZWNhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBTZXAgNSAwNDo0MjoxNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYwppbmRleCBhYmJlNjVjYmNkODllLi5mOTIyNzc3NzA0ODhhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jCkBAIC00MzksOSAmIzQzOzQzOSw4IEBAIG10NzZfcGh5X2luaXQoc3RydWN0IG10NzZfcGh5ICpwaHksIHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KQogCVNFVF9JRUVFODAyMTFfREVWKGh3LCBkZXYtJmd0O2Rldik7CiAJU0VUX0lFRUU4MDIxMV9QRVJNX0FERFIoaHcsIHBoeS0mZ3Q7bWFjYWRkcik7CiAKLQl3aXBoeS0mZ3Q7ZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FQX01PREVfQ0hBTl9XSURUSF9DSEFOR0U7Ci0JaWYgKCFwaHktJmd0O25vX2FjdGl2ZV9tb25pdG9yKQotCQl3aXBoeS0mZ3Q7ZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SOwomIzQzOwl3aXBoeS0mZ3Q7ZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SIHwKJiM0MzsJCQkgICBOTDgwMjExX0ZFQVRVUkVfQVBfTU9ERV9DSEFOX1dJRFRIX0NIQU5HRTsKIAl3aXBoeS0mZ3Q7ZmxhZ3MgfD0gV0lQSFlfRkxBR19IQVNfQ0hBTk5FTF9TV0lUQ0ggfAogCQkJV0lQSFlfRkxBR19TVVBQT1JUU19URExTIHwKIAkJCVdJUEhZX0ZMQUdfQVBfVUFQU0Q7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oCmluZGV4IDYyYjQxYzhiYjdjMGQuLjYxZWYxYjgwZmViODUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oCkBAIC04NzMsNyAmIzQzOzg3Myw2IEBAIHN0cnVjdCBtdDc2X3BoeSB7CiAJc3RydWN0IGNmZzgwMjExX2NoYW5fZGVmIG1haW5fY2hhbmRlZjsKIAlib29sIG9mZmNoYW5uZWw7CiAJYm9vbCByYWRhcl9lbmFibGVkOwotCWJvb2wgbm9fYWN0aXZlX21vbml0b3I7CiAKIAlzdHJ1Y3QgZGVsYXllZF93b3JrIHJvY193b3JrOwogCXN0cnVjdCBpZWVlODAyMTFfdmlmICpyb2NfdmlmOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jCmluZGV4IDBhZDMzZjc0YzIyODUuLjgzN2Q3YWY5ODRlODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmMKQEAgLTgyMCw3ICYjNDM7ODIwLDYgQEAgaW50IG10NzkyeF9pbml0X3dpcGh5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KQogCiAJd2lwaHktJmd0O2ZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9TQ0hFRF9TQ0FOX1JBTkRPTV9NQUNfQUREUiB8CiAJCQkgICBOTDgwMjExX0ZFQVRVUkVfU0NBTl9SQU5ET01fTUFDX0FERFI7Ci0JcGh5LSZndDttdDc2LSZndDtub19hY3RpdmVfbW9uaXRvciA9IHRydWU7CiAJd2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX1NFVF9TQ0FOX0RXRUxMKTsKIAl3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQkVBQ09OX1JBVEVfTEVHQUNZKTsKIAl3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQkVBQ09OX1JBVEVfSFQpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgyMAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDI2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1UNzYgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSB0YXJnZXRpbmcgdGhlIE1lZGlhVGVrIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgbXQ3NmAgZmFtaWx5LiBMZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgY2hhbmdlcy4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSBtb2RpZmljYXRpb24gdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuY2AuIFRoZXkmIzM5O3ZlIHJlbW92ZWQgYSBjb25kaXRpb24gcmVsYXRlZCB0byBgTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SYCBhbmQgYE5MODAyMTFfRkVBVFVSRV9BUF9NT0RFX0NIQU5fV0lEVEhfQ0hBTkdFYC4gU3BlY2lmaWNhbGx5LCB0aGF0IGBpZiAoIXBoeS0mZ3Q7bm9fYWN0aXZlX21vbml0b3IpYCBjaGVjayBpcyBnb25lLiBSaWdodCBhd2F5LCB0aGF0IHNheXMgKnNvbWV0aGluZyogYWJvdXQgYWN0aXZlIG1vbml0b3Igc3VwcG9ydCBpcyBjaGFuZ2luZyBhY3Jvc3MgdGhlIGJvYXJkLCBvciBwZXJoYXBzIGZvciAqYWxsKiBNZWRpYVRlayBkZXZpY2VzIG5vdy4KClRoZW4sIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oYCwgdGhleSYjMzk7dmUgY29tcGxldGVseSByZW1vdmVkIHRoZSBgYm9vbCBub19hY3RpdmVfbW9uaXRvcjtgIG1lbWJlciBmcm9tIHRoZSBgc3RydWN0IG10NzZfcGh5YC4gVGhhdCYjMzk7cyBhIHNpZ25pZmljYW50IGluZGljYXRvci4gRXNzZW50aWFsbHksIHRoZSBkcml2ZXIgc2VlbXMgdG8gaGF2ZSBsb3N0IHRoZSBjYXBhYmlsaXR5IHRvIGV4cGxpY2l0bHkgZGlzYWJsZSBhY3RpdmUgbW9uaXRvcmluZy4KCkFuZCBsYXN0bHksIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmNgLCB0aGV5JiMzOTt2ZSByZW1vdmVkIHRoZSBsaW5lIHRoYXQgd2FzIHNldHRpbmcgYHBoeS0mZ3Q7bXQ3Ni0mZ3Q7bm9fYWN0aXZlX21vbml0b3IgPSB0cnVlO2Agd2l0aGluIHRoZSBgbXQ3OTJ4X2luaXRfd2lwaHlgIGZ1bmN0aW9uLiBUaGlzIGNvbmZpcm1zIHRoYXQgYSBzcGVjaWZpYyBtb2RlbCB3YXMgYmVpbmcgZXhwbGljaXRseSB0b2xkICpub3QqIHRvIHVzZSBhY3RpdmUgbW9uaXRvci4gVGhpcyBpcyBhbGwgY29taW5nIHRvZ2V0aGVyIG5vdyAtIHRoZXkmIzM5O3JlIG1ha2luZyBhIHN0cm9uZyBjaGFuZ2UgaW4gdGhlIGRlZmF1bHQgYmVoYXZpb3IuCgpOb3csIEkgbmVlZCB0byBjaGVjayBmb3IgYW55IGRlZXBlciBpbXBsaWNhdGlvbnMuIFdlJiMzOTtsbCBuZWVkIHRvIHJ1biBhIHF1aWNrIGdyZXAgdG8gdW5kZXJzdGFuZCBob3cgYGFjdGl2ZV9tb25pdG9yYCBpcyBoYW5kbGVkIGluIGBtdDc2YCwgbm93IHRoYXQgaXQmIzM5O3MgcG90ZW50aWFsbHkgZW5hYmxlZCBmb3IgYWxsIGluc3RhbmNlcy4gQXJlIHRoZXJlIGFueSBhc3N1bXB0aW9ucyBiYXNlZCBvbiBpdHMgcHJldmlvdXMgZGlzYWJsZWQgc3RhdGU/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIHJlZ3Jlc3Npb25zPyBMZXQmIzM5O3MgZ2V0IHRoYXQgZ3JlcHBlciBmaXJlZCB1cCBhbmQgc2VlIHdoYXQgaXQgcmV2ZWFscy4gVGhpcyBwYXRjaCBjb3VsZCBiZSBhIGJpZyBkZWFsIGZvciB0aG9zZSB1c2luZyB0aGVzZSBjaGlwcyBpbiBtb25pdG9yIG1vZGUgb3IgaW4gYWNjZXNzIHBvaW50IG1vZGUsIGFuZCB3ZSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNpZGUgZWZmZWN0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Tkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9NDI3PW10NzZfcGh5X2luaXQoc3RydWN0IG10NzZfcGh5ICpwaHksIHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy00NDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6NDQyOlx0d2lwaHktXHUwMDNlZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SIHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy00NDMtXHRcdFx0ICAgTkw4MDIxMV9GRUFUVVJFX0FQX01PREVfQ0hBTl9XSURUSF9DSEFOR0U7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDA0OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NzkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGNvZGUuCgoqKkludmVzdGlnYXRpbmcgYSBOZXR3b3JrIFdpcmVsZXNzIFBhdGNoKioKCkFscmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgcGF0Y2gsIG9yIHBlcmhhcHMgSSYjMzk7bSB0cnlpbmcgdG8gZ2V0IGEgYmV0dGVyIGdyYXNwIG9uIHdoYXQgdGhpcyBgTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SYCBmZWF0dXJlIGFjdHVhbGx5ICpkb2VzKi4gTXkgaW5zdGluY3QgaXMgdG8gdHJhY2UgaXRzIHVzYWdlLiBJJiMzOTtsbCBpbml0aWF0ZSBhIHNlYXJjaCBhY3Jvc3MgdGhlIHJlbGV2YW50IGtlcm5lbCBkaXJlY3Rvcmllcy4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBiZSBsb29raW5nIGluIGBuZXQvd2lyZWxlc3MvYCBhbmQgYG5ldC9tYWM4MDIxMS9gLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBpbXBsZW1lbnRhdGlvbiwgaXRzIHVzZSBjYXNlcywgYW5kIGxpa2VseSwgYW55IGFzc29jaWF0ZWQgY29uZmlndXJhdGlvbiBvciBBUEkgY2FsbHMuIEZyb20gdGhlcmUsIEkgY2FuIGRldGVybWluZSBob3cgdGhpcyBmZWF0dXJlIGltcGFjdHMgdGhlIHdpcmVsZXNzIHN1YnN5c3RlbSBhbmQgaG9wZWZ1bGx5IGRldGVybWluZSB3aHkgdGhpcyBwYXRjaCB3YXMgbWFkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Tkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTQ5MzQ9c3RhdGljIGludCBubDgwMjExX3BhcnNlX21vbl9vcHRpb25zKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTQ5NTgtXHRpZiAocGFyYW1zLVx1MDAzZWZsYWdzIFx1MDAyNiBNT05JVE9SX0ZMQUdfQUNUSVZFIFx1MDAyNlx1MDAyNlxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo0OTU5Olx0ICAgICEocmRldi1cdTAwM2V3aXBoeS5mZWF0dXJlcyBcdTAwMjYgTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SKSlcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNDk2MC1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjAyCgkJCQkJCQlvdXRwdXQ6IDE3NQoJCQkJCQkJdGhvdWdodHM6IDU3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBBY3RpdmUgTW9uaXRvciBGZWF0dXJlIEZsYWcgQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgY2hhbmdlIGluIHRoZSBtdDc2IHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IHJlZ2FyZGluZyBgTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SYCwgaGFzIGNhdWdodCBteSBleWUuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGFib3V0IGVuYWJsaW5nIHRoZSBgTU9OSVRPUl9GTEFHX0FDVElWRWAgZmxhZyB3aGVuIGNyZWF0aW5nIG9yIHNldHRpbmcgdXAgbW9uaXRvciBpbnRlcmZhY2VzLCB3aGljaCBpcyBhIGRlcGFydHVyZSBmcm9tIGhvdyBtdDc5MnggdXNlZCB0byBoYW5kbGUgaXQsIHdoZXJlIGl0IGRpc2FibGVkIGFjdGl2ZSBtb25pdG9yLiBOb3csIGFsbCBtdDc2IGRldmljZXMgYXJlIGdvaW5nIHRvIGFkdmVydGlzZSB0aGlzIGZlYXR1cmUuCgpNeSBpbW1lZGlhdGUgY29uY2VybiwgYXMgYWx3YXlzIHdpdGggdGhlc2Uga2luZHMgb2YgY2hhbmdlcywgaXMgd2hldGhlciB0aGlzIGludHJvZHVjZXMgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBMZXQmIzM5O3MgYnJlYWsgaXQgZG93bjoKCiogICAqKktlcm5lbCAtJmd0OyBVc2Vyc3BhY2U6KiogTXkgZmlyc3QgdGhvdWdodCBpcyBhbHdheXMsIGFyZSB3ZSBzZW5kaW5nIGFueSBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlciBzcGFjZT8gV2UgaGF2ZSB0byBjb25zaWRlciBob3cgZGF0YSBpcyBjb21tdW5pY2F0ZWQgKGNvcHlcX3RvXF91c2VyLCBuZXRsaW5rLCBpb2N0bHMsIGV0Yy4pLiBCdXQgbm8sIGluIHRoaXMgY2FzZSwgaXQmIzM5O3MganVzdCBhIGZlYXR1cmUgZmxhZyDigJMgYE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUmAgYmVpbmcgYWRkZWQgdG8gYHdpcGh5LSZndDtmZWF0dXJlc2AuIEl0JiMzOTtzIGEgc2ltcGxlIGFkdmVydGlzZW1lbnQuIE5vIGRpcmVjdCBkYXRhIGV4cG9zdXJlLgoKKiAgICoqQ29uZGl0aW9uYWwgTG9naWM6KiogVGhlIHNlY29uZCB0aGluZyBJIGNoZWNrIGlzIGJyYW5jaGluZyBiYXNlZCBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhpcyBpcyBhIGJpZyBhcmVhIGZvciBwb3RlbnRpYWwgaXNzdWVzLiBUaGUgZ29vZCBuZXdzIGlzIHRoYXQgdGhlIGNoYW5nZSAqcmVtb3ZlcyogYSBmaWVsZCBgbm9fYWN0aXZlX21vbml0b3JgIGZyb20gYHN0cnVjdCBtdDc2X3BoeWAuIFRoaXMgc2ltcGxpZmllcyB0aGluZ3MsIGFjdHVhbGx5LiBObyBuZXcgY29uZGl0aW9uYWwgbG9naWMgaXMgYmVpbmcgaW50cm9kdWNlZCwgYW5kIGV4aXN0aW5nIGxvZ2ljIGlzIGJlaW5nIGNsZWFuZWQgdXAuCgoqICAgKipEYXRhIFN0cnVjdHVyZSBJbml0aWFsaXphdGlvbjoqKiBXaGF0IGFib3V0IGFsbG9jYXRlZCBkYXRhIHN0cnVjdHVyZXM/IENvdWxkIHdlIGJlIGxlYXZpbmcgc29tZSBmaWVsZHMgdW5pbml0aWFsaXplZCBhbmQgdGhlbiByZWFkaW5nIHRoZW0gbGF0ZXI/IFRoaXMgY291bGQgbGVhZCB0byBpbmZvcm1hdGlvbiBsZWFrcyBvciBldmVuIGNyYXNoZXMuIE5vcGUuIFRoZSBkcml2ZXIgaXNuJiMzOTt0IGludHJvZHVjaW5nIGFueSBjb21wbGV4IGRhdGEgc3RydWN0dXJlIGluaXRpYWxpemF0aW9uIGluIHRoaXMgcGF0Y2guCgoqICAgKipCb3VuZHMgQ2hlY2tzIGFuZCBMb2dpYzoqKiBXaGF0IGFib3V0IHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3dzLCBhbmQgdGhlIGxpa2U/IFRoZSBjaGFuZ2UgZG9lc24mIzM5O3QgbW9kaWZ5IGFueSBib3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBhY2Nlc3MgZXhpc3RpbmcgYnVmZmVycyBpbiBhIHdheSB0aGF0IG1pZ2h0IGludHJvZHVjZSB1bmluaXRpYWxpemVkIGJ5dGVzLgoKTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgYWN0aXZlIG1vbml0b3IgbW9kZSBpdHNlbGYsIHdpdGggdGhlIG5ldyBmZWF0dXJlIGZsYWcsIG1pZ2h0IGhhdmUgYW55IGltcGxpY2F0aW9ucy4gRG9lcyB0aGUgbXQ3NiBkcml2ZXIgdHJhbnNtaXQgQUNLcyBvciBhbnl0aGluZyB0aGF0IG1pZ2h0IHBvdGVudGlhbGx5IHJlYWQgdW5pbml0aWFsaXplZCBkYXRhPyBJdCBsb29rcyBsaWtlIHRoZSBhY3RpdmUgbW9uaXRvciBtb2RlLCBpbmNsdWRpbmcgc2VuZGluZyBBQ0tzLCBpcyBoYW5kbGVkIGluIGhhcmR3YXJlIG9yIGZpcm13YXJlLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBleHBvc2VkIHRvIHVzZXIgc3BhY2UuCgpTbywgc3VtbWluZyBpdCB1cCwgdGhpcyBhcHBlYXJzIHRvIGJlIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBmZWF0dXJlIGZsYWcgZW5hYmxlbWVudCBhbmQgZmllbGQgY2xlYW51cCBpbiB0aGUgbXQ3NiB3aXJlbGVzcyBkcml2ZXIuIEl0JiMzOTtzIGVzc2VudGlhbGx5IHJlbW92aW5nIGEgZmxhZyBhbmQgYWRkaW5nIGFub3RoZXIgZmVhdHVyZS4gVGhlcmUgYXJlIG5vIG9idmlvdXMgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIG5vIGluZm9ybWF0aW9uIGxlYWtzLCBvciBhbnkgY29uY2VybnMgYWJvdXQgdGhlIG92ZXJhbGwgbWVtb3J5IHNhZmV0eSBvZiB0aGUgd2lyZWxlc3Mgc3RhY2suCgpMZXQgbWUgZG91YmxlLWNoZWNrOiB0aGUgcGF0Y2ggc2ltcGx5IGluY2x1ZGVzIGBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1JgIGluIGB3aXBoeS0mZ3Q7ZmVhdHVyZXNgLCByZW1vdmVzIHRoZSBgbm9fYWN0aXZlX21vbml0b3JgIGZpZWxkLCBhbmQgYWxzbyByZW1vdmVzIHRoZSBgcGh5LSZndDttdDc2LSZndDtub19hY3RpdmVfbW9uaXRvciA9IHRydWVgIHNldHRpbmcgZnJvbSBgbXQ3OTJ4X2luaXRfd2lwaHlgLiBObyByZWFsIGNvbXBsZXhpdHkgaGVyZS4KCkZpbmFsbHksIHJlZ2FyZGluZyB0ZXN0aW5nLCB0aGUgY2hhbmdlIGRvZXMgbm90IHJlcXVpcmUgS01TQU4uIEtBU0FOIGFuZCBzdGFuZGFyZCB0ZXN0aW5nIG1ldGhvZG9sb2dpZXMgYXJlIHN1ZmZpY2llbnQgdG8gdmVyaWZ5IGFueSBtZW1vcnkgc2FmZXR5IGluIHBhY2tldCBoYW5kbGluZyBhbmQgYnVmZmVyIGFsbG9jYXRpb24uIEtNU0FOIGlzIG92ZXJraWxsIGhlcmUuCgpJJiMzOTttIHJlYWR5IHRvIGNhbGwgdGhlIGBzZXQtcmVzdWx0c2AgbWV0aG9kLiBJJiMzOTttIGNvbmZpZGVudCBpbiBteSBhc3Nlc3NtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBlbmFibGVzIHRoZSBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1IgZmVhdHVyZSBmbGFnIHVuY29uZGl0aW9uYWxseSBmb3IgYWxsIG10NzYgd2lyZWxlc3MgZGV2aWNlcyBieSByZW1vdmluZyB0aGUgYG5vX2FjdGl2ZV9tb25pdG9yYCBmbGFnIGZyb20gYHN0cnVjdCBtdDc2X3BoeWAgYW5kIHRoZSBvdmVycmlkZSBpbiBgbXQ3OTJ4X2luaXRfd2lwaHlgLlxuXG5UaGlzIGNoYW5nZSBvbmx5IG1vZGlmaWVzIGEgZmVhdHVyZSBiaXRtYXNrIGZsYWcgb24gdGhlIHdpcGh5IGRldmljZSBhbmQgcmVtb3ZlcyBhIHN0cnVjdCBmaWVsZC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBkYXRhIHN0cnVjdHVyZXMsIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCBwYWRkaW5nL2ZpZWxkcyBjb3BpZWQgdG8gdXNlcnNwYWNlLCBvciBicmFuY2hpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGluZm9ybWF0aW9uIGxlYWsgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIGZ1enppbmcsIGFuZCBzdGFuZGFyZCBLQVNBTi9zeXprYWxsZXIgdGVzdGluZyBpcyBzdWZmaWNpZW50LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZW5hYmxlcyB0aGUgTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SIGZlYXR1cmUgZmxhZyB1bmNvbmRpdGlvbmFsbHkgZm9yIGFsbCBtdDc2IHdpcmVsZXNzIGRldmljZXMgYnkgcmVtb3ZpbmcgdGhlIGBub19hY3RpdmVfbW9uaXRvcmAgZmxhZyBmcm9tIGBzdHJ1Y3QgbXQ3Nl9waHlgIGFuZCB0aGUgb3ZlcnJpZGUgaW4gYG10NzkyeF9pbml0X3dpcGh5YC5cblxuVGhpcyBjaGFuZ2Ugb25seSBtb2RpZmllcyBhIGZlYXR1cmUgYml0bWFzayBmbGFnIG9uIHRoZSB3aXBoeSBkZXZpY2UgYW5kIHJlbW92ZXMgYSBzdHJ1Y3QgZmllbGQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgcGFkZGluZy9maWVsZHMgY29waWVkIHRvIHVzZXJzcGFjZSwgb3IgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBvciBpbmZvcm1hdGlvbiBsZWFrIHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiBmdXp6aW5nLCBhbmQgc3RhbmRhcmQgS0FTQU4vc3l6a2FsbGVyIHRlc3RpbmcgaXMgc3VmZmljaWVudC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDI6MTUuNzI5Nzg0NjE2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODUwMDEzMDA5MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3Nl9DT1JFXCIsXG4gICAgXCJNVDc5MnhfTElCXCIsXG4gICAgXCJNVDc5MjFVXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiQ0ZHODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MnhfaW5pdF93aXBoeVwiLFxuICAgIFwibXQ3Nl9yZWdpc3Rlcl9kZXZpY2VcIixcbiAgICBcIm10NzZfcmVnaXN0ZXJfcGh5XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBlbmFibGVzIHRoZSBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1IgZmVhdHVyZSBmbGFnIHVuY29uZGl0aW9uYWxseSBmb3IgYWxsIG10NzYgd2lyZWxlc3MgZGV2aWNlcyBieSByZW1vdmluZyB0aGUgYG5vX2FjdGl2ZV9tb25pdG9yYCBmbGFnIGZyb20gYHN0cnVjdCBtdDc2X3BoeWAgYW5kIHRoZSBvdmVycmlkZSBpbiBgbXQ3OTJ4X2luaXRfd2lwaHlgLlxcblxcblRoaXMgY2hhbmdlIG9ubHkgbW9kaWZpZXMgYSBmZWF0dXJlIGJpdG1hc2sgZmxhZyBvbiB0aGUgd2lwaHkgZGV2aWNlIGFuZCByZW1vdmVzIGEgc3RydWN0IGZpZWxkLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGRhdGEgc3RydWN0dXJlcywgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHBhZGRpbmcvZmllbGRzIGNvcGllZCB0byB1c2Vyc3BhY2UsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgaW5mb3JtYXRpb24gbGVhayByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gZnV6emluZywgYW5kIHN0YW5kYXJkIEtBU0FOL3N5emthbGxlciB0ZXN0aW5nIGlzIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyB0aGUgbm9fYWN0aXZlX21vbml0b3IgZmxhZyBhbmQgdW5jb25kaXRpb25hbGx5IGVuYWJsZXMgTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SIGZvciBNZWRpYVRlayBtdDc2IC8gbXQ3OTJ4IHdpcmVsZXNzIGRyaXZlcnMuIFRoZXNlIGRyaXZlcnMgYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24gKGUuZy4gbXQ3OTIxdSksIGFsbG93aW5nIGFjdGl2ZSBtb25pdG9yIGludGVyZmFjZSBjcmVhdGlvbiBhbmQgaGFuZGxpbmcgdmlhIG5sODAyMTEuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQyOjE1LjcyOTc4OTQ2NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI4ODE1MTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMGI2MzQ1M2RiODcwMWY4OTEyMTI1ZDVhY2ZjMjUwZDU0NTA3YmVjYVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IFNlcCA1IDA0OjQyOjE0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuY1xcbmluZGV4IGFiYmU2NWNiY2Q4OWUuLmY5MjI3Nzc3MDQ4OGEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jXFxuQEAgLTQzOSw5ICs0MzksOCBAQCBtdDc2X3BoeV9pbml0KHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcXG4gXFx0U0VUX0lFRUU4MDIxMV9ERVYoaHcsIGRldi1cXHUwMDNlZGV2KTtcXG4gXFx0U0VUX0lFRUU4MDIxMV9QRVJNX0FERFIoaHcsIHBoeS1cXHUwMDNlbWFjYWRkcik7XFxuIFxcbi1cXHR3aXBoeS1cXHUwMDNlZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FQX01PREVfQ0hBTl9XSURUSF9DSEFOR0U7XFxuLVxcdGlmICghcGh5LVxcdTAwM2Vub19hY3RpdmVfbW9uaXRvcilcXG4tXFx0XFx0d2lwaHktXFx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUjtcXG4rXFx0d2lwaHktXFx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiB8XFxuK1xcdFxcdFxcdCAgIE5MODAyMTFfRkVBVFVSRV9BUF9NT0RFX0NIQU5fV0lEVEhfQ0hBTkdFO1xcbiBcXHR3aXBoeS1cXHUwMDNlZmxhZ3MgfD0gV0lQSFlfRkxBR19IQVNfQ0hBTk5FTF9TV0lUQ0ggfFxcbiBcXHRcXHRcXHRXSVBIWV9GTEFHX1NVUFBPUlRTX1RETFMgfFxcbiBcXHRcXHRcXHRXSVBIWV9GTEFHX0FQX1VBUFNEO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oXFxuaW5kZXggNjJiNDFjOGJiN2MwZC4uNjFlZjFiODBmZWI4NSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oXFxuQEAgLTg3Myw3ICs4NzMsNiBAQCBzdHJ1Y3QgbXQ3Nl9waHkge1xcbiBcXHRzdHJ1Y3QgY2ZnODAyMTFfY2hhbl9kZWYgbWFpbl9jaGFuZGVmO1xcbiBcXHRib29sIG9mZmNoYW5uZWw7XFxuIFxcdGJvb2wgcmFkYXJfZW5hYmxlZDtcXG4tXFx0Ym9vbCBub19hY3RpdmVfbW9uaXRvcjtcXG4gXFxuIFxcdHN0cnVjdCBkZWxheWVkX3dvcmsgcm9jX3dvcms7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICpyb2NfdmlmO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmNcXG5pbmRleCAwYWQzM2Y3NGMyMjg1Li44MzdkN2FmOTg0ZTg2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuY1xcbkBAIC04MjAsNyArODIwLDYgQEAgaW50IG10NzkyeF9pbml0X3dpcGh5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbiBcXG4gXFx0d2lwaHktXFx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9TQ0hFRF9TQ0FOX1JBTkRPTV9NQUNfQUREUiB8XFxuIFxcdFxcdFxcdCAgIE5MODAyMTFfRkVBVFVSRV9TQ0FOX1JBTkRPTV9NQUNfQUREUjtcXG4tXFx0cGh5LVxcdTAwM2VtdDc2LVxcdTAwM2Vub19hY3RpdmVfbW9uaXRvciA9IHRydWU7XFxuIFxcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9TRVRfU0NBTl9EV0VMTCk7XFxuIFxcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9CRUFDT05fUkFURV9MRUdBQ1kpO1xcbiBcXHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQkVBQ09OX1JBVEVfSFQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwNDo0MjoxNi4yNTk3MDA0MjdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjcwNzA0NjAyNTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzZfQ09SRVwiLFxuICAgIFwiTVQ3OTJ4X0xJQlwiLFxuICAgIFwiTVQ3OTIxVVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTJ4X2luaXRfd2lwaHlcIixcbiAgICBcIm10NzZfcmVnaXN0ZXJfZGV2aWNlXCIsXG4gICAgXCJtdDc2X3JlZ2lzdGVyX3BoeVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgdGhlIG5vX2FjdGl2ZV9tb25pdG9yIGZsYWcgYW5kIHVuY29uZGl0aW9uYWxseSBlbmFibGVzIE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiBmb3IgTWVkaWFUZWsgbXQ3NiAvIG10NzkyeCB3aXJlbGVzcyBkcml2ZXJzLiBUaGVzZSBkcml2ZXJzIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uIChlLmcuIG10NzkyMXUpLCBhbGxvd2luZyBhY3RpdmUgbW9uaXRvciBpbnRlcmZhY2UgY3JlYXRpb24gYW5kIGhhbmRsaW5nIHZpYSBubDgwMjExLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDBiNjM0NTNkYjg3MDFmODkxMjEyNWQ1YWNmYzI1MGQ1NDUwN2JlY2FcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IFNlcCA1IDA0OjQyOjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jXG5pbmRleCBhYmJlNjVjYmNkODllLi5mOTIyNzc3NzA0ODhhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmNcbkBAIC00MzksOSArNDM5LDggQEAgbXQ3Nl9waHlfaW5pdChzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSwgc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG4gXHRTRVRfSUVFRTgwMjExX0RFVihodywgZGV2LVx1MDAzZWRldik7XG4gXHRTRVRfSUVFRTgwMjExX1BFUk1fQUREUihodywgcGh5LVx1MDAzZW1hY2FkZHIpO1xuIFxuLVx0d2lwaHktXHUwMDNlZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FQX01PREVfQ0hBTl9XSURUSF9DSEFOR0U7XG4tXHRpZiAoIXBoeS1cdTAwM2Vub19hY3RpdmVfbW9uaXRvcilcbi1cdFx0d2lwaHktXHUwMDNlZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SO1xuK1x0d2lwaHktXHUwMDNlZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SIHxcbitcdFx0XHQgICBOTDgwMjExX0ZFQVRVUkVfQVBfTU9ERV9DSEFOX1dJRFRIX0NIQU5HRTtcbiBcdHdpcGh5LVx1MDAzZWZsYWdzIHw9IFdJUEhZX0ZMQUdfSEFTX0NIQU5ORUxfU1dJVENIIHxcbiBcdFx0XHRXSVBIWV9GTEFHX1NVUFBPUlRTX1RETFMgfFxuIFx0XHRcdFdJUEhZX0ZMQUdfQVBfVUFQU0Q7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaFxuaW5kZXggNjJiNDFjOGJiN2MwZC4uNjFlZjFiODBmZWI4NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaFxuQEAgLTg3Myw3ICs4NzMsNiBAQCBzdHJ1Y3QgbXQ3Nl9waHkge1xuIFx0c3RydWN0IGNmZzgwMjExX2NoYW5fZGVmIG1haW5fY2hhbmRlZjtcbiBcdGJvb2wgb2ZmY2hhbm5lbDtcbiBcdGJvb2wgcmFkYXJfZW5hYmxlZDtcbi1cdGJvb2wgbm9fYWN0aXZlX21vbml0b3I7XG4gXG4gXHRzdHJ1Y3QgZGVsYXllZF93b3JrIHJvY193b3JrO1xuIFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnJvY192aWY7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jXG5pbmRleCAwYWQzM2Y3NGMyMjg1Li44MzdkN2FmOTg0ZTg2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmNcbkBAIC04MjAsNyArODIwLDYgQEAgaW50IG10NzkyeF9pbml0X3dpcGh5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuIFxuIFx0d2lwaHktXHUwMDNlZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX1NDSEVEX1NDQU5fUkFORE9NX01BQ19BRERSIHxcbiBcdFx0XHQgICBOTDgwMjExX0ZFQVRVUkVfU0NBTl9SQU5ET01fTUFDX0FERFI7XG4tXHRwaHktXHUwMDNlbXQ3Ni1cdTAwM2Vub19hY3RpdmVfbW9uaXRvciA9IHRydWU7XG4gXHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfU0VUX1NDQU5fRFdFTEwpO1xuIFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0JFQUNPTl9SQVRFX0xFR0FDWSk7XG4gXHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQkVBQ09OX1JBVEVfSFQpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDI6MTYuMjU5NzAzOTY3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDU2NjE4NDgyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVGhpcyBQYXRjaCBmb3IgU3l6a2FsbGVyIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBwYXRjaCBpcyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLiBGcm9tIHRoZSBzdW1tYXJ5LCBpdCBsb29rcyBsaWtlIGl0IHRvdWNoZXMgdGhlIE1lZGlhVGVrIHdpcmVsZXNzIGRyaXZlcnM6IGBtdDc2YCBhbmQgYG10NzkyeGAuIFNwZWNpZmljYWxseSwgYG1hYzgwMjExLmNgLCBgbXQ3Ni5oYCwgYW5kIGBtdDc5MnhfY29yZS5jYCBoYXZlIGJlZW4gbW9kaWZpZWQuIEl0IHNlZW1zIGxpa2UgdGhlIHBhdGNoIHJlbW92ZXMgYSBjaGVjayBhbmQgYSB2YXJpYWJsZSByZWxhdGVkIHRvIGFjdGl2ZSBtb25pdG9yaW5nIGluIHRoZSBgbXQ3Nl9waHlfaW5pdGAgYW5kIGBtdDc5MnhfaW5pdF93aXBoeWAgZnVuY3Rpb25zLiBUaGlzIG1pZ2h0IGNoYW5nZSBob3cgYWN0aXZlIG1vbml0b3JpbmcgZmVhdHVyZXMgYXJlIGhhbmRsZWQuXG5cbk5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzOiBjYW4gdGhlc2UgZHJpdmVycyBiZSBmdXp6ZWQgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB3aXRoIHN5emthbGxlcj8gQXJlIHRoZXNlIGRyaXZlcnMgdGllZCB0byBzcGVjaWZpYyBoYXJkd2FyZSwgb3IgYXJlIHRoZXJlIGVtdWxhdGVkIG9yIHZpcnR1YWwgaW50ZXJmYWNlcyBJIGNhbiBsZXZlcmFnZT8gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGFyZSB0aGUgYG10NzZgIGRldmljZXMgVVNCLCBQQ0llLCBvciBzb21ldGhpbmcgdmlydHVhbD8gSSByZW1lbWJlciBzZWVpbmcgYG10NzZgIFVTQiBkcml2ZXJzLCBsaWtlIGBtdDc2eDB1YCwgYG10NzZ4MnVgLCBhbmQgYG10NzkyMXVgLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhvc2UgYXJlIHJlbGV2YW50LiBBcmUgdGhlc2UgZHJpdmVycyBwdXJlbHkgaGFyZHdhcmUtZGVwZW5kZW50LCBvciBjYW4gSSByZWFjaCB0aGVtIHRocm91Z2ggVVNCIFJhdyBHYWRnZXQgb3IgYG1hYzgwMjExX2h3c2ltYCBmb3IgZnV6emluZz9cblxuV2FpdCwgaG9sZCBvbi4uLkkgbmVlZCB0byBjbGFyaWZ5OiBgbXQ3NmAgZHJpdmVycyBhcmUgZm9yIE1lZGlhVGVrIGhhcmR3YXJlIChNVDc2eHggLyBNVDc5MngpLiBJIG5lZWQgdG8gY2hlY2sgaWYgdGhvc2UgZGV2aWNlcyBhcmUgVVNCIGJhc2VkLCBhbmQgaWYgVVNCIGZ1enppbmcgcmVhY2hlcyB0aGVtLiBTaW5jZSBJJ20gbm90IGVudGlyZWx5IGNsZWFyIG9uIHRoZSBidXMgaW50ZXJmYWNlIGZvciB0aGlzIGhhcmR3YXJlLCBJJ2xsIG5lZWQgdG8gc2VhcmNoIHRoZSBrZXJuZWwgdHJlZSBmb3IgYG10NzZgIGFuZCBgbXQ3OTJ4YCBtb3JlIHRob3JvdWdobHkgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGV5IGFyZSByZWFjaGVkIGFuZCB0aGVpciBvdmVyYWxsIHJlYWNoYWJpbGl0eS4gVGhhdCB3aWxsIGRpY3RhdGUgdGhlIGJlc3QgYXBwcm9hY2ggZm9yIHN5emthbGxlciBpbnRlZ3JhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYwOCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQyOjIwLjgyNTg5MjcyOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjY4MTk5MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTJ4X1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjI0MiBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT0yOD1DRkxBR1NfbXQ3NngwMl90cmFjZS5vIDo9IC1JJChzcmMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZToyOTpDRkxBR1NfbXQ3OTJ4X3RyYWNlLm8gOj0gLUkkKHNyYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTMwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT0zOD1tdDc2LWNvbm5hYy1saWIteSA6PSBtdDc2X2Nvbm5hY19tY3UubyBtdDc2X2Nvbm5hY19tYWMubyBtdDc2X2Nvbm5hYzNfbWFjLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6NDA6bXQ3OTJ4LWxpYi15IDo9IG10NzkyeF9jb3JlLm8gbXQ3OTJ4X21hYy5vIG10NzkyeF90cmFjZS5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjQxOlxcdFxcdG10NzkyeF9kZWJ1Z2ZzLm8gbXQ3OTJ4X2RtYS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo0MjptdDc5MngtbGliLSQoQ09ORklHX0FDUEkpICs9IG10NzkyeF9hY3BpX3Nhci5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo0MzptdDc5MngtdXNiLXkgOj0gbXQ3OTJ4X3VzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS00NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtNi0jaW5jbHVkZSBcXFwibXQ3Nl9jb25uYWNfbWN1LmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYzo3OiNpbmNsdWRlIFxcXCJtdDc5MnhfcmVncy5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz03PW10NzkyMV9yZWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzo5OlxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTE6XFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTItXFx0bXQ3Nl93cihkZXYsIGRldi1cXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgdmFsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTM6XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MTk9bXQ3OTIxX3JlZ19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjE6XFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyMzpcXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNC1cXHQqdmFsID0gbXQ3Nl9ycihkZXYsIGRldi1cXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI1OlxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTMzPW10NzkyMV9md19kZWJ1Z19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMzQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzozNTpcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjM3OlxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTM4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzo0MjpcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy00My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz00OD1tdDc5MjFfZndfZGVidWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy00OS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjUwOlxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy01MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz01Nz1ERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1ZywgbXQ3OTIxX2Z3X2RlYnVnX2dldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy01OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6NjA6REVGSU5FX1NIT1dfQVRUUklCVVRFKG10NzkyeF90eF9zdGF0cyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTYxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTkxPW10NzkyMV90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTkyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6OTM6XFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGRldl9nZXRfZHJ2ZGF0YShzLVxcdTAwM2Vwcml2YXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtOTQtXFx0c3RydWN0IG10NzkyMV90eHB3ciB0eHB3cjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy05Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6OTc6XFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtOTgtXFx0cmV0ID0gbXQ3OTIxX2dldF90eHB3cl9pbmZvKGRldiwgXFx1MDAyNnR4cHdyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6OTk6XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTAwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTE0Mz1tdDc5MjFfcG1fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTE0NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjE0NTpcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTQ2LVxcdHN0cnVjdCBtdDc2X2Nvbm5hY19wbSAqcG0gPSBcXHUwMDI2ZGV2LVxcdTAwM2VwbTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0xNzY9bXQ3OTIxX3BtX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTc3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTc4OlxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xNzktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MTg4PW10NzkyMV9kZWVwX3NsZWVwX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xODkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxOTA6XFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTE5MS1cXHRzdHJ1Y3QgbXQ3Nl9jb25uYWNfcG0gKnBtID0gXFx1MDAyNmRldi1cXHUwMDNlcG07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxOTg6XFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTk5LVxcdGlmIChwbS1cXHUwMDNlZHNfZW5hYmxlX3VzZXIgPT0gZW5hYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIwNS1vdXQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjIwNjpcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMDctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MjEyPW10NzkyMV9kZWVwX3NsZWVwX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjEzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjE0OlxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMTUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MjIxPURFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2RzLCBtdDc5MjFfZGVlcF9zbGVlcF9nZXQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyMjQ6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcG1faWRsZV90aW1lb3V0LCBtdDc5MnhfcG1faWRsZV90aW1lb3V0X2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjI1OlxcdFxcdFxcdCBtdDc5MnhfcG1faWRsZV90aW1lb3V0X3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTIyNz1zdGF0aWMgaW50IG10NzkyMV9jaGlwX3Jlc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIyOC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjIyOTpcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjMwLVxcdGludCByZXQgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIzNC1cXHRcXHQvKiBSZXNldCB3aWZpc3lzIGRpcmVjdGx5LiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyMzU6XFx0XFx0bXQ3OTJ4X3Jlc2V0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMzYtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjM4LVxcdFxcdC8qIENvbGxlY3QgdGhlIGNvcmUgZHVtcCBiZWZvcmUgcmVzZXQgd2lmaXN5cy4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjM5OlxcdFxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI0MC1cXHRcXHRyZXQgPSBtdDc2X2Nvbm5hY19tY3VfY2hpcF9jb25maWcoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI0MTpcXHRcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNDItXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MjUxPW10NzkyMXNfc2NoZWRfcXVvdGFfcmVhZChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI1Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI1MzpcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKHMtXFx1MDAzZXByaXZhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNTQtXFx0c3RydWN0IG10NzZfc2RpbyAqc2RpbyA9IFxcdTAwMjZkZXYtXFx1MDAzZW10NzYuc2RpbztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI2NDppbnQgbXQ3OTIxX2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNjUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI3MS1cXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcInhtaXQtcXVldWVzXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjcyOlxcdFxcdFxcdFxcdFxcdCAgICBkaXIsIG10NzkyeF9xdWV1ZXNfcmVhZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI3My1cXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjc3LVxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiYWNxXFxcIiwgZGlyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyNzg6XFx0XFx0XFx0XFx0ICAgIG10NzkyeF9xdWV1ZXNfYWNxKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjc5LVxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwidHhwb3dlcl9za3VcXFwiLCBkaXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI4MC1cXHRcXHRcXHRcXHQgICAgbXQ3OTIxX3R4cHdyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjgxOlxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInR4X3N0YXRzXFxcIiwgMDQwMCwgZGlyLCBkZXYsIFxcdTAwMjZtdDc5MnhfdHhfc3RhdHNfZm9wcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI4Mi1cXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJmd19kZWJ1Z1xcXCIsIDA2MDAsIGRpciwgZGV2LCBcXHUwMDI2Zm9wc19md19kZWJ1Zyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjg3LVxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwicnVudGltZV9wbV9zdGF0c1xcXCIsIGRpcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6Mjg4OlxcdFxcdFxcdFxcdCAgICBtdDc5MnhfcG1fc3RhdHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yODktXFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwiZGVlcC1zbGVlcFxcXCIsIDA2MDAsIGRpciwgZGV2LCBcXHUwMDI2Zm9wc19kcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM9MTQ9c3RhdGljIHNzaXplX3QgbXQ3OTIxX3RoZXJtYWxfdGVtcF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xOS1cXHRjYXNlIDA6IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MjA6XFx0XFx0c3RydWN0IG10NzkyeF9waHkgKnBoeSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoyMTpcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqbWRldiA9IHBoeS1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0yMi1cXHRcXHRpbnQgdGVtcGVyYXR1cmU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoyNDpcXHRcXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShtZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjUtXFx0XFx0dGVtcGVyYXR1cmUgPSBtdDc5MjFfbWN1X2dldF90ZW1wZXJhdHVyZShwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoyNjpcXHRcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShtZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM9NDM9QVRUUklCVVRFX0dST1VQUyhtdDc5MjFfaHdtb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy00NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6NDU6c3RhdGljIGludCBtdDc5MjFfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy02My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6NjQ6aW50IG10NzkyMV9tYWNfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy02NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtNzctXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIDI7IGkrKylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6Nzg6XFx0XFx0bXQ3OTJ4X21hY19pbml0X2JhbmQoZGV2LCBpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtNzktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM9ODI9RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX21hY19pbml0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjg0OnN0YXRpYyBpbnQgX19tdDc5MjFfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy04NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtOTEtXFx0bXQ3Nl93cihkZXYsIE1UX1NXREVGX01PREUsIE1UX1NXREVGX05PUk1BTF9NT0RFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6OTI6XFx0cmV0ID0gbXQ3OTJ4X21jdV9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTkzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxMDk6c3RhdGljIGludCBtdDc5MjFfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xMTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTExOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTIwOlxcdFxcdG10NzkyeF9pbml0X3Jlc2V0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEyMS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM9MTMxPXN0YXRpYyB2b2lkIG10NzkyMV9pbml0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xMzIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxMzM6XFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbXQ3OTJ4X2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTM0LVxcdFxcdFxcdFxcdFxcdCAgICAgIGluaXRfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTQyLVxcdG10NzkyMV9zZXRfc3RyZWFtX2hlX2NhcHMoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTQzOlxcdG10NzkyeF9jb25maWdfbWFjX2FkZHJfbGlzdChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xNDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxNzA6aW50IG10NzkyMV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTcxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xNzctXFx0ZGV2LVxcdTAwM2VtdDc2LnBoeS5wcml2ID0gXFx1MDAyNmRldi1cXHUwMDNlcGh5O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxNzg6XFx0ZGV2LVxcdTAwM2VtdDc2LnR4X3dvcmtlci5mbiA9IG10NzkyeF90eF93b3JrZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTgwOlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXBtLnBzX3dvcmssIG10NzkyeF9wbV9wb3dlcl9zYXZlX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxODE6XFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXBtLndha2Vfd29yaywgbXQ3OTJ4X3BtX3dha2Vfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE4Mi1cXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VwbS53YWtlLmxvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE4OC1cXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VwbS50eHFfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjE4OTpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5Lm1hY193b3JrLCBtdDc5MnhfbWFjX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xOTAtXFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlcGh5LnNjYW5fd29yaywgbXQ3OTIxX3NjYW5fd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjAyLVxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VwaHkucm9jX3dvcmssIG10NzkyMV9yb2Nfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjIwMzpcXHR0aW1lcl9zZXR1cChcXHUwMDI2ZGV2LVxcdTAwM2VwaHkucm9jX3RpbWVyLCBtdDc5Mnhfcm9jX3RpbWVyLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjA0LVxcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXFx1MDAyNmRldi1cXHUwMDNlcGh5LnJvY193YWl0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0yMjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjIyMTpcXHRtdDc5MnhfaW5pdF9hY3BpX3NhcihkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0yMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjIyMzpcXHRyZXQgPSBtdDc5MnhfaW5pdF93Y2lkKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIyNC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MjI3OlxcdHJldCA9IG10NzkyeF9pbml0X3dpcGh5KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjI4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0xOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoxOTpib29sIG10NzkyMV9tYWNfd3RibF91cGRhdGUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgaW50IGlkeCwgdTMyIG1hc2spXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9Mjg9c3RhdGljIHUzMiBtdDc5MjFfbWFjX3d0YmxfbG1hY19hZGRyKGludCBpZHgsIHU4IG9mZnNldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjMzOnN0YXRpYyB2b2lkIG10NzkyMV9tYWNfc3RhX3BvbGwoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0zNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy00MS1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjQyOlxcdHN0cnVjdCBtdDc5Mnhfc3RhICptc3RhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjQzOlxcdHN0cnVjdCBtdDc5MnhfbGlua19zdGEgKm1saW5rO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTQ0LVxcdHUzMiB0eF90aW1lW0lFRUU4MDIxMV9OVU1fQUNTXSwgcnhfdGltZVtJRUVFODAyMTFfTlVNX0FDU107XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02NS1cXHRcXHRtbGluayA9IGxpc3RfZmlyc3RfZW50cnkoXFx1MDAyNnN0YV9wb2xsX2xpc3QsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NjY6XFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBtdDc5MnhfbGlua19zdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjctXFx0XFx0XFx0XFx0XFx0IHdjaWQucG9sbF9saXN0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo2ODpcXHRcXHRtc3RhID0gY29udGFpbmVyX29mKG1saW5rLCBzdHJ1Y3QgbXQ3OTJ4X3N0YSwgZGVmbGluayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjktXFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2bWxpbmstXFx1MDAzZXdjaWQucG9sbF9saXN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTE2OD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6MTY5Om10NzkyMV9tYWNfZmlsbF9yeChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTE3MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0xNzctXFx0c3RydWN0IG10NzZfcGh5ICptcGh5ID0gXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5waHk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6MTc4OlxcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBcXHUwMDI2ZGV2LVxcdTAwM2VwaHk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMTc5LVxcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMTg1LVxcdHUzMiByeGQ0ID0gbGUzMl90b19jcHUocnhkWzRdKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoxODY6XFx0c3RydWN0IG10NzkyeF9zdGEgKm1zdGEgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjE4NzpcXHRzdHJ1Y3QgbXQ3OTJ4X2xpbmtfc3RhICptbGluaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0xODgtXFx0dTE2IHNlcV9jdHJsID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTIxNC1cXHRpZHggPSBGSUVMRF9HRVQoTVRfUlhEMV9OT1JNQUxfV0xBTl9JRFgsIHJ4ZDEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjIxNTpcXHRzdGF0dXMtXFx1MDAzZXdjaWQgPSBtdDc5MnhfcnhfZ2V0X3djaWQoZGV2LCBpZHgsIHVuaWNhc3QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTIxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0yMTctXFx0aWYgKHN0YXR1cy1cXHUwMDNld2NpZCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjIxODpcXHRcXHRtbGluayA9IGNvbnRhaW5lcl9vZihzdGF0dXMtXFx1MDAzZXdjaWQsIHN0cnVjdCBtdDc5MnhfbGlua19zdGEsIHdjaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjIxOTpcXHRcXHRtc3RhID0gY29udGFpbmVyX29mKG1saW5rLCBzdHJ1Y3QgbXQ3OTJ4X3N0YSwgZGVmbGluayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMjIwLVxcdFxcdG10NzZfd2NpZF9hZGRfcG9sbChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBcXHUwMDI2bWxpbmstXFx1MDAzZXdjaWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMjIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjIyMzpcXHRtdDc5MnhfZ2V0X3N0YXR1c19mcmVxX2luZm8oc3RhdHVzLCBjaGZyZXEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTIyNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTQzMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo0MzI6XFx0bXQ3OTJ4X21hY19hc3NvY19yc3NpKGRldiwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy00MzMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy00NDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NDQ3OnZvaWQgbXQ3OTIxX21hY19hZGRfdHhzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNDQ4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo0NDk6XFx0c3RydWN0IG10NzkyeF9saW5rX3N0YSAqbWxpbms7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNDUwLVxcdHN0cnVjdCBtdDc2X3djaWQgKndjaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy00NzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NDczOlxcdG1saW5rID0gY29udGFpbmVyX29mKHdjaWQsIHN0cnVjdCBtdDc5MnhfbGlua19zdGEsIHdjaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTQ3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTQ4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo0ODU6c3RhdGljIHZvaWQgbXQ3OTIxX21hY190eF9mcmVlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEsIGludCBsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNDg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTUxNC1cXHRcXHRpZiAoaW5mbyBcXHUwMDI2IE1UX1RYX0ZSRUVfUEFJUikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjUxNTpcXHRcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X2xpbmtfc3RhICptbGluaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01MTYtXFx0XFx0XFx0dTE2IGlkeDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTUyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo1MjU6XFx0XFx0XFx0bWxpbmsgPSBjb250YWluZXJfb2Yod2NpZCwgc3RydWN0IG10NzkyeF9saW5rX3N0YSwgd2NpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNTI2LVxcdFxcdFxcdG10NzZfd2NpZF9hZGRfcG9sbChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBcXHUwMDI2bWxpbmstXFx1MDAzZXdjaWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9NTYyPWJvb2wgbXQ3OTIxX3J4X2NoZWNrKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqZGF0YSwgaW50IGxlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01NjMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjU2NDpcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MnhfZGV2LCBtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01NjUtXFx0X19sZTMyICpyeGQgPSAoX19sZTMyICopZGF0YTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTU4Nz12b2lkIG10NzkyMV9xdWV1ZV9yeF9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCBlbnVtIG10NzZfcnhxX2lkIHEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01ODkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjU5MDpcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MnhfZGV2LCBtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01OTEtXFx0X19sZTMyICpyeGQgPSAoX19sZTMyICopc2tiLVxcdTAwM2VkYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9NjM0PW10NzkyMV92aWZfY29ubmVjdF9pdGVyKHZvaWQgKnByaXYsIHU4ICptYWMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02MzYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjYzNzpcXHRzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqbXZpZiA9IChzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqKXZpZi1cXHUwMDNlZHJ2X3ByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NjM4OlxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBtdmlmLVxcdTAwM2VwaHktXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02MzktXFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBtdDc2X2h3KGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYz02NTk9dm9pZCBtdDc5MjFfbWFjX3Jlc2V0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTY2MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NjYxOlxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG10NzkyeF9kZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjYyLVxcdFxcdFxcdFxcdFxcdCAgICAgIHJlc2V0X3dvcmspO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjgwLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tdXRleCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NjgxOlxcdFxcdHJldCA9IG10NzkyeF9kZXZfcmVzZXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02ODItXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubXV0ZXgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9NzE1PXZvaWQgbXQ3OTIxX2NvcmVkdW1wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTcxNi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NzE3OlxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzE4LVxcdGNoYXIgKmR1bXAsICpkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTcxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo3MjA6XFx0ZGV2ID0gKHN0cnVjdCBtdDc5MnhfZGV2ICopY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBtdDc5MnhfZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTcyMS1cXHRcXHRcXHRcXHRcXHRcXHRjb3JlZHVtcC53b3JrLndvcmspO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjc1OTpcXHRtdDc5MnhfcmVzZXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzYwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTc2Mz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjc2NDptdDc5MjFfdXNiX3NkaW9fd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc2NS1cXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTc3Nj1pbnQgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy03ODAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjc4MTpcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MnhfZGV2LCBtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy03ODItXFx0c3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvID0gSUVFRTgwMjExX1NLQl9DQih0eF9pbmZvLVxcdTAwM2Vza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzk3LVxcdGlmIChzdGEpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo3OTg6XFx0XFx0c3RydWN0IG10NzkyeF9zdGEgKm1zdGEgPSAoc3RydWN0IG10NzkyeF9zdGEgKilzdGEtXFx1MDAzZWRydl9wcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTgwOS1cXHR0eXBlID0gbXQ3Nl9pc19zZGlvKG1kZXYpID8gTVQ3OTIxX1NESU9fREFUQSA6IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODEwOlxcdG10NzkyeF9za2JfYWRkX3VzYl9zZGlvX2hkcihkZXYsIHNrYiwgdHlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODExLVxcdHBhZCA9IHJvdW5kX3VwKHNrYi1cXHUwMDNlbGVuLCA0KSAtIHNrYi1cXHUwMDNlbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9ODQ1PWJvb2wgbXQ3OTIxX3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NDYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjg0NzpcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MnhfZGV2LCBtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODQ5OlxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODUwLVxcdG10NzkyMV9tYWNfc3RhX3BvbGwoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4NTE6XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYz04NTg9dm9pZCBtdDc5MjFfc2V0X2lwdjZfbnNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODU5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4NjA6XFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbXQ3OTJ4X2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NjEtXFx0XFx0XFx0XFx0XFx0ICAgICAgaXB2Nl9uc193b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTg3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4NzE6XFx0XFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NzItXFx0XFx0cmV0ID0gbXQ3Nl9tY3Vfc2tiX3NlbmRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIHNrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NzMtXFx0XFx0XFx0XFx0XFx0ICAgIE1DVV9VTklfQ01EKE9GRkxPQUQpLCB0cnVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4NzQ6XFx0XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NzUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM9MTM9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzoxNDptdDc5MjFfaW5pdF9oZV9jYXBzKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGVudW0gbmw4MDIxMV9iYW5kIGJhbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTE1LVxcdFxcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX3NiYW5kX2lmdHlwZV9kYXRhICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTE5NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MTk2OnZvaWQgbXQ3OTIxX3NldF9zdHJlYW1faGVfY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0xOTcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTIyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjI3OmludCBfX210NzkyMV9zdGFydChzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yMjgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjQ4OlxcdG10NzkyeF9tYWNfcmVzZXRfY291bnRlcnMocGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjQ5LVxcdHNldF9iaXQoTVQ3Nl9TVEFURV9SVU5OSU5HLCBcXHUwMDI2bXBoeS1cXHUwMDNlc3RhdGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jPTI3Mj1zdGF0aWMgaW50IG10NzkyMV9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjczLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6Mjc0OlxcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBtdDc5MnhfaHdfcGh5KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjc1LVxcdGludCBlcnI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6Mjc3OlxcdG10NzkyeF9tdXRleF9hY3F1aXJlKHBoeS1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjc4LVxcdGVyciA9IF9fbXQ3OTIxX3N0YXJ0KHBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI3OTpcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShwaHktXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI4MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYz0yODQ9c3RhdGljIHZvaWQgbXQ3OTIxX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjg1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6Mjg2OlxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBtdDc5MnhfaHdfZGV2KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjg3LVxcdGludCBlcnIgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI4OS1cXHRpZiAobXQ3Nl9pc19tbWlvKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI5MDpcXHRcXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yOTEtXFx0XFx0ZXJyID0gbXQ3OTIxX21jdV9yYWRpb19sZWRfY3RybChkZXYsIEVYVF9DTURfUkFESU9fT0ZGX0xFRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI5MjpcXHRcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yOTMtXFx0XFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yOTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI5NzpcXHRtdDc5Mnhfc3RvcChodywgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yOTgtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jPTMwMT1tdDc5MjFfYWRkX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzAyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzAzOlxcdHN0cnVjdCBtdDc5MnhfdmlmICptdmlmID0gKHN0cnVjdCBtdDc5MnhfdmlmICopdmlmLVxcdTAwM2VkcnZfcHJpdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzA0OlxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBtdDc5MnhfaHdfZGV2KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzA1OlxcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBtdDc5MnhfaHdfcGh5KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzA2LVxcdHN0cnVjdCBtdDc2X3R4cSAqbXR4cTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zMDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjMwOTpcXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zMTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzU0LVxcdElOSVRfV09SSyhcXHUwMDI2bXZpZi1cXHUwMDNlY3NhX3dvcmssIG10NzkyMV9jc2Ffd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjM1NTpcXHR0aW1lcl9zZXR1cChcXHUwMDI2bXZpZi1cXHUwMDNlY3NhX3RpbWVyLCBtdDc5MnhfY3NhX3RpbWVyLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzU2LW91dDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzU3OlxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYz0zNjI9c3RhdGljIHZvaWQgbXQ3OTIxX3JvY19pdGVyKHZvaWQgKnByaXYsIHU4ICptYWMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzY0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzY1OlxcdHN0cnVjdCBtdDc5MnhfdmlmICptdmlmID0gKHN0cnVjdCBtdDc5MnhfdmlmICopdmlmLVxcdTAwM2VkcnZfcHJpdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzY2OlxcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBwcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zNjctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozNzE6dm9pZCBtdDc5MjFfcm9jX2Fib3J0X3N5bmMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzcyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzczOlxcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBcXHUwMDI2ZGV2LVxcdTAwM2VwaHk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYz0zODc9dm9pZCBtdDc5MjFfcm9jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zODgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozODk6XFx0c3RydWN0IG10NzkyeF9waHkgKnBoeTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozOTE6XFx0cGh5ID0gKHN0cnVjdCBtdDc5MnhfcGh5ICopY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBtdDc5MnhfcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zOTItXFx0XFx0XFx0XFx0XFx0XFx0cm9jX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjM5NDpcXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShwaHktXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM5NS1cXHRpZiAoIXRlc3RfYW5kX2NsZWFyX2JpdChNVDc2X1NUQVRFX1JPQywgXFx1MDAyNnBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlc3RhdGUpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjM5NjpcXHRcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShwaHktXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM5Ny1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtNDAxLVxcdFxcdFxcdFxcdFxcdCAgICBtdDc5MjFfcm9jX2l0ZXIsIHBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjQwMjpcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShwaHktXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQwMy1cXHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChwaHktXFx1MDAzZW10NzYtXFx1MDAzZWh3KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00MDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjQwNjpzdGF0aWMgaW50IG10NzkyMV9hYm9ydF9yb2Moc3RydWN0IG10NzkyeF9waHkgKnBoeSwgc3RydWN0IG10NzkyeF92aWYgKnZpZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtNDA3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00MTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjQxMzpcXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShwaHktXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQxNC1cXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE1UNzZfU1RBVEVfUk9DLCBcXHUwMDI2cGh5LVxcdTAwM2VtdDc2LVxcdTAwM2VzdGF0ZSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQxNS1cXHRcXHRlcnIgPSBtdDc5MjFfbWN1X2Fib3J0X3JvYyhwaHksIHZpZiwgcGh5LVxcdTAwM2Vyb2NfdG9rZW5faWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0MTY6XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UocGh5LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00MTctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtNDIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0MjE6c3RhdGljIGludCBtdDc5MjFfc2V0X3JvYyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0MjI6XFx0XFx0XFx0ICBzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqdmlmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00MjMtXFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM9NDUxPXN0YXRpYyBpbnQgbXQ3OTIxX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQ1Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjQ1NzpcXHRzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqbXZpZiA9IChzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqKXZpZi1cXHUwMDNlZHJ2X3ByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjQ1ODpcXHRzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5ID0gbXQ3OTJ4X2h3X3BoeShodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQ1OS1cXHRpbnQgZXJyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00NjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjQ2MTpcXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShwaHktXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQ2Mi1cXHRlcnIgPSBtdDc5MjFfc2V0X3JvYyhwaHksIG12aWYsIGNoYW4sIGR1cmF0aW9uLCBNVDc5MjFfUk9DX1JFUV9ST0MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0NjM6XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UocGh5LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00NjQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM9NDY4PXN0YXRpYyBpbnQgbXQ3OTIxX2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00NzAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0NzE6XFx0c3RydWN0IG10NzkyeF92aWYgKm12aWYgPSAoc3RydWN0IG10NzkyeF92aWYgKil2aWYtXFx1MDAzZWRydl9wcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0NzI6XFx0c3RydWN0IG10NzkyeF9waHkgKnBoeSA9IG10NzkyeF9od19waHkoaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00NzMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM9NDc3PWludCBtdDc5MjFfc2V0X2NoYW5uZWwoc3RydWN0IG10NzZfcGh5ICptcGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00Nzgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0Nzk6XFx0c3RydWN0IG10NzkyeF9waHkgKnBoeSA9IG1waHktXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjQ4MDpcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gcGh5LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQ4MS1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQ4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6NDg4OlxcdG10NzkyeF9tYWNfc2V0X3RpbWVpbmcocGh5KTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDI6MjEuMTUyNzE4NDA0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzEzMDg0Njc4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE1UNzkyMVUgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYG10NzkyMXVgLCB3aGljaCBJIGtub3cgaXMgdGhlIFVTQiBkcml2ZXIgZm9yIHRoZSBNVDc5MjEgY2hpcHNldC4gTXkgZmlyc3QgdGhvdWdodCBpczogY2FuIHdlIGZ1enogdGhpcyB0aGluZyBlZmZlY3RpdmVseSB3aXRoIHN5emthbGxlcj8gU3BlY2lmaWNhbGx5LCBkb2VzIHN5emthbGxlciBoYXZlIGdvb2QgY292ZXJhZ2UgZm9yIFVTQiB3aXJlbGVzcyBkZXZpY2VzPyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIHN0YW5kYXJkIG1ldGhvZHMg4oCTIHRoZSBgdXNiIHJhdyBnYWRnZXRgIGFuZCB0aGUgYHZoY2lgIGFwcHJvYWNoLlxuXG5SaWdodCwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcywgaW5jbHVkaW5nIHRoZSBlbXVsYXRpb24gb2YgVVNCIGRldmljZXMuIFRoYXTigJlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gU28sIHdoZW4gYSBVU0IgZGV2aWNlIGlzIFwiYXR0YWNoZWQsXCIgd2hldGhlciB0aHJvdWdoIGEgVVNCIGdhZGdldCBzZXR1cCBvciB1c2luZyBgc3l6X3VzYl9jb25uZWN0YCwgdGhlIGtlcm5lbCBwcm9iZSBmdW5jdGlvbnMgZm9yIHRoZSBhdHRhY2hlZCBkZXZpY2Ugd2lsbCBiZSBjYWxsZWQuIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gd2hhdCBoYXBwZW5zIGluIHRoYXQgcHJvYmUuXG5cbk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gc2VlIGlmIHRoZSBgbXQ3OTIxdWAgcHJvYmUgZnVuY3Rpb24gaGFuZGxlcyBlbXVsYXRlZCBVU0IgZGVzY3JpcHRvcnMgYW5kIHJlcXVlc3RzIGNvcnJlY3RseS4gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGFyZWFzIHdoZXJlIHRoZSBlbXVsYXRpb24gbWlnaHQgZmFpbD8gSSB3YW50IHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyBzcGVjaWZpY2FsbHkgd2l0aGluIGBtdDc2X3BoeV9pbml0YCBhbmQgYG10NzkyeF9pbml0X3dpcGh5YCDigJMgdGhlc2UgYXJlIGxpa2VseSBrZXkgdG8gdGhlIHdpcmVsZXNzIGludGVyZmFjZSBpbml0aWFsaXphdGlvbi4gSSdsbCBuZWVkIHRvIGZvbGxvdyB0aGUgZXhlY3V0aW9uIHBhdGggdG8gc2VlIGlmIGFueSBhc3N1bXB0aW9ucyBhcmUgYmVpbmcgbWFkZSB0aGF0IHdvdWxkIGJlIGJyb2tlbiBieSBhbiBlbXVsYXRlZCBlbnZpcm9ubWVudC5cblxuVG8gZ2V0IHN0YXJ0ZWQsIEknbGwgbmVlZCB0byBkaXZlIGludG8gdGhlIGNvZGUuIEknbGwgc3RhcnQgd2l0aCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmNgLCBvciByZWFsbHkgYW55IG90aGVyIHJlbGV2YW50IFVTQiBkcml2ZXIgd2l0aGluIHRoZSBgbXQ3NmAgZGlyZWN0b3J5LiBJJ2xsIG5lZWQgdG8gY29ycmVsYXRlIHRoZSBkZXNjcmlwdG9yIGRlZmluaXRpb25zIHRvIHRoZSBpbml0aWFsaXphdGlvbiBzdGVwcyB0byBnZXQgYSBzZW5zZSBvZiB3aGVyZSBmdXp6aW5nIG1pZ2h0IGJlIG1vc3QgZWZmZWN0aXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTAyOCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwNDo0MjoyOC4yODM1NjkxOTVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY5MzcwMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3VzYl9kcml2ZXJ8dXNiX3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM9MjY1PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc2NjN1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTI3Ny19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jOjI3ODptb2R1bGVfdXNiX2RyaXZlcihtdDc2NjN1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMjc5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM9MzQ1PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc2eDBfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzU1LX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzU2Om1vZHVsZV91c2JfZHJpdmVyKG10NzZ4MF9kcml2ZXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmM9MTM3PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc2eDJ1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jLTE0OS19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYi5jOjE1MDptb2R1bGVfdXNiX2RyaXZlcihtdDc2eDJ1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmMtMTUxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MzM4PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc5MjF1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTM1MC19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjM1MTptb2R1bGVfdXNiX2RyaXZlcihtdDc5MjF1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMzUyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MzU1PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc5MjV1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM2Ny19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM2ODptb2R1bGVfdXNiX2RyaXZlcihtdDc5MjV1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzY5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwNDo0MjoyOC4zNTA1MTA2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mzc2NTk2OTMwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byB0aGUgTWVkaWF0ZWsgRHJpdmVyIENvZGUqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIE1lZGlhdGVrIFdpLUZpIHNpdHVhdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGNvcmUgb2YgdGhlIHByb2JsZW0uIFRoYXQgbWVhbnMgY3JhY2tpbmcgb3BlbiB0aGUgZHJpdmVyIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIGBtYWM4MDIxMS5jYCBhbmQgYG10NzkyeF9jb3JlLmNgIGZpbGVzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZgIGRpcmVjdG9yeS4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IHRha2luZyBhIGNsb3NlIGxvb2sgYXQgYG1hYzgwMjExLmNgIGFyb3VuZCBsaW5lIDQzOSwgYW5kIHRoZW4gc2hpZnQgbXkgYXR0ZW50aW9uIHRvIGBtdDc5MnhfY29yZS5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDgyMC4gSG9wZWZ1bGx5LCB0aGUgaW5mb3JtYXRpb24gSSBmaW5kIGluIHRoZXNlIHNwZWNpZmljIHNlY3Rpb25zIHdpbGwgaWxsdW1pbmF0ZSB0aGUgaXNzdWUuIEknbSBob3BpbmcgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgZWxlbWVudHMgaW50ZXJyZWxhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMzM1LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQyOjMyLjExNjQ4MjkwMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMTI5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDI1LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDI1OlxcdFxcbiA0MjY6XFx0c3RhdGljIGludFxcbiA0Mjc6XFx0bXQ3Nl9waHlfaW5pdChzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSwgc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXFxuIDQyODpcXHR7XFxuIDQyOTpcXHRcXHRzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiA9IHBoeS1cXHUwMDNlZGV2O1xcbiA0MzA6XFx0XFx0c3RydWN0IHdpcGh5ICp3aXBoeSA9IGh3LVxcdTAwM2V3aXBoeTtcXG4gNDMxOlxcdFxcbiA0MzI6XFx0XFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNnBoeS1cXHUwMDNldHhfbGlzdCk7XFxuIDQzMzpcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2cGh5LVxcdTAwM2V0eF9sb2NrKTtcXG4gNDM0OlxcdFxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZwaHktXFx1MDAzZXJvY193b3JrLCBtdDc2X3JvY19jb21wbGV0ZV93b3JrKTtcXG4gNDM1OlxcdFxcbiA0MzY6XFx0XFx0aWYgKCh2b2lkICopcGh5ICE9IGh3LVxcdTAwM2Vwcml2KVxcbiA0Mzc6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDQzODpcXHRcXG4gNDM5OlxcdFxcdFNFVF9JRUVFODAyMTFfREVWKGh3LCBkZXYtXFx1MDAzZWRldik7XFxuIDQ0MDpcXHRcXHRTRVRfSUVFRTgwMjExX1BFUk1fQUREUihodywgcGh5LVxcdTAwM2VtYWNhZGRyKTtcXG4gNDQxOlxcdFxcbiA0NDI6XFx0XFx0d2lwaHktXFx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiB8XFxuIDQ0MzpcXHRcXHRcXHRcXHQgICBOTDgwMjExX0ZFQVRVUkVfQVBfTU9ERV9DSEFOX1dJRFRIX0NIQU5HRTtcXG4gNDQ0OlxcdFxcdHdpcGh5LVxcdTAwM2VmbGFncyB8PSBXSVBIWV9GTEFHX0hBU19DSEFOTkVMX1NXSVRDSCB8XFxuIDQ0NTpcXHRcXHRcXHRcXHRXSVBIWV9GTEFHX1NVUFBPUlRTX1RETFMgfFxcbiA0NDY6XFx0XFx0XFx0XFx0V0lQSFlfRkxBR19BUF9VQVBTRDtcXG4gNDQ3OlxcdFxcbiA0NDg6XFx0XFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0NRTV9SU1NJX0xJU1QpO1xcbiA0NDk6XFx0XFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0FJUlRJTUVfRkFJUk5FU1MpO1xcbiA0NTA6XFx0XFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0FRTCk7XFxuIDQ1MTpcXHRcXG4gNDUyOlxcdFxcdGlmICghd2lwaHktXFx1MDAzZW1heF9yZW1haW5fb25fY2hhbm5lbF9kdXJhdGlvbilcXG4gNDUzOlxcdFxcdFxcdHdpcGh5LVxcdTAwM2VtYXhfcmVtYWluX29uX2NoYW5uZWxfZHVyYXRpb24gPSA1MDAwO1xcbiA0NTQ6XFx0XFx0aWYgKCF3aXBoeS1cXHUwMDNlYXZhaWxhYmxlX2FudGVubmFzX3R4KVxcbiA0NTU6XFx0XFx0XFx0d2lwaHktXFx1MDAzZWF2YWlsYWJsZV9hbnRlbm5hc190eCA9IHBoeS1cXHUwMDNlYW50ZW5uYV9tYXNrO1xcbiA0NTY6XFx0XFx0aWYgKCF3aXBoeS1cXHUwMDNlYXZhaWxhYmxlX2FudGVubmFzX3J4KVxcbiA0NTc6XFx0XFx0XFx0d2lwaHktXFx1MDAzZWF2YWlsYWJsZV9hbnRlbm5hc19yeCA9IHBoeS1cXHUwMDNlYW50ZW5uYV9tYXNrO1xcbiA0NTg6XFx0XFxuIDQ1OTpcXHRcXHR3aXBoeS1cXHUwMDNlc2FyX2NhcGEgPSBcXHUwMDI2bXQ3Nl9zYXJfY2FwYTtcXG4gNDYwOlxcdFxcdHBoeS1cXHUwMDNlZnJwID0gZGV2bV9rY2FsbG9jKGRldi1cXHUwMDNlZGV2LCB3aXBoeS1cXHUwMDNlc2FyX2NhcGEtXFx1MDAzZW51bV9mcmVxX3JhbmdlcyxcXG4gNDYxOlxcdFxcdFxcdFxcdFxcdHNpemVvZihzdHJ1Y3QgbXQ3Nl9mcmVxX3JhbmdlX3Bvd2VyKSxcXG4gNDYyOlxcdFxcdFxcdFxcdFxcdEdGUF9LRVJORUwpO1xcbiA0NjM6XFx0XFx0aWYgKCFwaHktXFx1MDAzZWZycClcXG4gNDY0OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwNDo0MjozMi4xMTY2MDU3MDFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMzU0MzUzMjAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVDc5MnggSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyB3ZSBuZWVkIHRvIHRob3JvdWdobHkgdW5kZXJzdGFuZCBob3cgdGhpcyBNVDc5MnggZHJpdmVyIGlzIGluaXRpYWxpemluZyB0aGUgV2ktRmkgUEhZLiBJIHNob3VsZCBkZWZpbml0ZWx5IGNoZWNrIG91dCBgbXQ3OTJ4X2luaXRfd2lwaHlgIHRvIGdyYXNwIHRoaXMuIFRoYXQgZnVuY3Rpb24sIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jYCwgaXMgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBjb3JlIFdpLUZpIGZ1bmN0aW9uYWxpdHkgaXMgYmVpbmcgc2V0IHVwLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSB0aGluZ3MgbGlrZSB0aGUgcmVnaXN0cmF0aW9uIG9mIHRoZSBXaS1GaSBkZXZpY2Ugd2l0aCB0aGUga2VybmVsJ3Mgd2lyZWxlc3Mgc3Vic3lzdGVtLCBhbmQgY29uZmlndXJhdGlvbiBvZiB0aGUgcmFkaW8gYW5kIE1BQyBsYXllcnMuIFVuZGVyc3RhbmRpbmcgdGhpcyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBpcyBjcml0aWNhbCBmb3IgYW55IHRyb3VibGVzaG9vdGluZyBvciBtb2RpZmljYXRpb24gZWZmb3J0cyBmdXJ0aGVyIGRvd24gdGhlIGxpbmUuIEkgd2FudCB0byBzZWUgZXhhY3RseSBob3cgdGhleSdyZSBoYW5kbGluZyB0aGUgaGFyZHdhcmUgYW5kIHdoYXQgdGhlIGluaXRpYWwgc3RhdGUgaXMuIFRpbWUgdG8gZGlnIGluIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzQ2OSwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDI6MzUuNDcwOTYzODkyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzOTM2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogODA1LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODA1OlxcdFxcdFxcdHdpcGh5LVxcdTAwM2VuYW5fY2FwYS5tYXhfY2hhbm5lbF9zd2l0Y2hfdGltZSA9IDEyO1xcbiA4MDY6XFx0XFx0XFx0d2lwaHktXFx1MDAzZW5hbl9jYXBhLmRldl9jYXBhYmlsaXRpZXMgPSBOQU5fREVWX0NBUEFfRVhUX0tFWV9JRF9TVVBQT1JURUQ7XFxuIDgwNzpcXHRcXHRcXHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfU0VDVVJFX05BTik7XFxuIDgwODpcXHRcXHR9XFxuIDgwOTpcXHRcXG4gODEwOlxcdFxcdHdpcGh5LVxcdTAwM2VtYXhfc2Nhbl9pZV9sZW4gPSBNVDc2X0NPTk5BQ19TQ0FOX0lFX0xFTjtcXG4gODExOlxcdFxcdHdpcGh5LVxcdTAwM2VtYXhfc2Nhbl9zc2lkcyA9IDQ7XFxuIDgxMjpcXHRcXHR3aXBoeS1cXHUwMDNlbWF4X3NjaGVkX3NjYW5fcGxhbl9pbnRlcnZhbCA9XFxuIDgxMzpcXHRcXHRcXHRNVDc2X0NPTk5BQ19NQVhfVElNRV9TQ0hFRF9TQ0FOX0lOVEVSVkFMO1xcbiA4MTQ6XFx0XFx0d2lwaHktXFx1MDAzZW1heF9zY2hlZF9zY2FuX2llX2xlbiA9IElFRUU4MDIxMV9NQVhfREFUQV9MRU47XFxuIDgxNTpcXHRcXHR3aXBoeS1cXHUwMDNlbWF4X3NjaGVkX3NjYW5fc3NpZHMgPSBNVDc2X0NPTk5BQ19NQVhfU0NIRURfU0NBTl9TU0lEO1xcbiA4MTY6XFx0XFx0d2lwaHktXFx1MDAzZW1heF9tYXRjaF9zZXRzID0gTVQ3Nl9DT05OQUNfTUFYX1NDQU5fTUFUQ0g7XFxuIDgxNzpcXHRcXHR3aXBoeS1cXHUwMDNlbWF4X3NjaGVkX3NjYW5fcmVxcyA9IDE7XFxuIDgxODpcXHRcXHR3aXBoeS1cXHUwMDNlZmxhZ3MgfD0gV0lQSFlfRkxBR19IQVNfQ0hBTk5FTF9TV0lUQ0ggfFxcbiA4MTk6XFx0XFx0XFx0XFx0V0lQSFlfRkxBR19TUExJVF9TQ0FOXzZHSFo7XFxuIDgyMDpcXHRcXG4gODIxOlxcdFxcdHdpcGh5LVxcdTAwM2VmZWF0dXJlcyB8PSBOTDgwMjExX0ZFQVRVUkVfU0NIRURfU0NBTl9SQU5ET01fTUFDX0FERFIgfFxcbiA4MjI6XFx0XFx0XFx0XFx0ICAgTkw4MDIxMV9GRUFUVVJFX1NDQU5fUkFORE9NX01BQ19BRERSO1xcbiA4MjM6XFx0XFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX1NFVF9TQ0FOX0RXRUxMKTtcXG4gODI0OlxcdFxcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9CRUFDT05fUkFURV9MRUdBQ1kpO1xcbiA4MjU6XFx0XFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0JFQUNPTl9SQVRFX0hUKTtcXG4gODI2OlxcdFxcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9CRUFDT05fUkFURV9WSFQpO1xcbiA4Mjc6XFx0XFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0JFQUNPTl9SQVRFX0hFKTtcXG4gODI4OlxcdFxcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9BQ0tfU0lHTkFMX1NVUFBPUlQpO1xcbiA4Mjk6XFx0XFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0NBTl9SRVBMQUNFX1BUSzApO1xcbiA4MzA6XFx0XFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX01VTFRJQ0FTVF9SRUdJU1RSQVRJT05TKTtcXG4gODMxOlxcdFxcbiA4MzI6XFx0XFx0aWVlZTgwMjExX2h3X3NldChodywgU0lOR0xFX1NDQU5fT05fQUxMX0JBTkRTKTtcXG4gODMzOlxcdFxcdGllZWU4MDIxMV9od19zZXQoaHcsIEhBU19SQVRFX0NPTlRST0wpO1xcbiA4MzQ6XFx0XFx0aWVlZTgwMjExX2h3X3NldChodywgU1VQUE9SVFNfVFhfRU5DQVBfT0ZGTE9BRCk7XFxuIDgzNTpcXHRcXHRpZWVlODAyMTFfaHdfc2V0KGh3LCBTVVBQT1JUU19SWF9ERUNBUF9PRkZMT0FEKTtcXG4gODM2OlxcdFxcdGlmIChpc19tdDc5MjcoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpXFxuIDgzNzpcXHRcXHRcXHRpZWVlODAyMTFfaHdfc2V0KGh3LCBOT19WSVJUVUFMX01PTklUT1IpO1xcbiA4Mzg6XFx0XFx0ZWxzZVxcbiA4Mzk6XFx0XFx0XFx0aWVlZTgwMjExX2h3X3NldChodywgV0FOVF9NT05JVE9SX1ZJRik7XFxuIDg0MDpcXHRcXHRpZWVlODAyMTFfaHdfc2V0KGh3LCBTVVBQT1JUU19QUyk7XFxuIDg0MTpcXHRcXHRpZWVlODAyMTFfaHdfc2V0KGh3LCBTVVBQT1JUU19EWU5BTUlDX1BTKTtcXG4gODQyOlxcdFxcdGllZWU4MDIxMV9od19zZXQoaHcsIFNVUFBPUlRTX1ZIVF9FWFRfTlNTX0JXKTtcXG4gODQzOlxcdFxcdGllZWU4MDIxMV9od19zZXQoaHcsIENPTk5FQ1RJT05fTU9OSVRPUik7XFxuIDg0NDpcXHRcXHRpZWVlODAyMTFfaHdfc2V0KGh3LCBTVVBQT1JUU19NVUxUSV9CU1NJRCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQyOjM1LjQ3MTEwNzM0MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNDIwMzg2OTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgYSBDb2RlIENvbW1pdCoqXG5cbkFscmlnaHQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSAqd2h5KiBiZWhpbmQgdGhpcyBjb21taXQuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8ganVtcCBzdHJhaWdodCBpbnRvIHRoZSBjb2RlIGNoYW5nZXMsIHNlZSB3aGF0J3MgZGlmZmVyZW50IGFuZCBob3csIGJ1dCB0aGF0J3Mgb2Z0ZW4gYSBzaG9ydGN1dCB0byBtaXN1bmRlcnN0YW5kaW5nLiBJIG5lZWQgY29udGV4dCBmaXJzdC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgdGhlIGNvbW1pdCBtZXNzYWdlIGFuZCBkaWcgdGhyb3VnaCB0aGUgZ2l0IGhpc3RvcnkuIE1heWJlIHRoaXMgaXMgYSBxdWljayBmaXgsIG1heWJlIGEgbGFyZ2VyIHJlZmFjdG9yIOKAkyBjb250ZXh0IGlzIGtpbmcgaGVyZS4gVGhlIG1lc3NhZ2Ugc2hvdWxkIGlkZWFsbHkgdGVsbCBtZSB0aGUgc3RvcnkuIExldCdzIHNlZSBpZiB0aGUgbG9nIGNhbiBnaXZlIG1lIHNvbWUgcmVjZW50IGNvbW1pdHMgb3Igc3Vycm91bmRpbmcgY29udGV4dC4gVGhpcyB3aWxsIGhvcGVmdWxseSBzYXZlIG1lIHNvbWUgdGltZSBhbmQgYWxsb3cgbWUgdG8gZGV0ZXJtaW5lIHRoZSB0cnVlIG5hdHVyZSBvZiB0aGlzIGNvbW1pdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ4NzMsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQyOjM4Ljg5MTQ5NzIzOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4NjgxODU0NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibm9fYWN0aXZlX21vbml0b3JcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQyOjQwLjU3ODMyNjU1NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjc0MTU3NDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS2VybmVsIFBhdGNoOiBEaXNzZWN0aW5nIHRoZSBSZW1vdmFsIG9mIGBub19hY3RpdmVfbW9uaXRvcmAqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIG51a2VkIGBub19hY3RpdmVfbW9uaXRvcmAgZnJvbSB0aGUga2VybmVsIHRyZWUsIGJhc2ljYWxseSBldmVyeXdoZXJlLiBJbnRlcmVzdGluZy4gVGltZSB0byBkaWcgaW4gYW5kIHVuZGVyc3RhbmQgdGhlIGltcGFjdC4gSSBuZWVkIHRvIHNlZSAqd2hlcmUqIHRoaXMgdmFyaWFibGUgd2FzIGJlaW5nIHVzZWQgYW5kIGhvdyBpdHMgcmVtb3ZhbCBjaGFuZ2VzIHRoZSBsYW5kc2NhcGUuIExldCdzIHN0YXJ0IHdpdGggdGhlIGNhbGxzIHRvIGBtdDc2X3BoeV9pbml0YCBhbmQgYG10NzkyeF9pbml0X3dpcGh5YC4gVGhvc2Ugc2VlbSBsaWtlIGxvZ2ljYWwgZW50cnkgcG9pbnRzIGZvciBtb25pdG9yIG1vZGUgZnVuY3Rpb25hbGl0eSBhbmQgaW5pdGlhbGl6YXRpb24sIHNvIEknbSBndWVzc2luZyB0aGF0J3Mgd2hlcmUgdGhlIHJhbWlmaWNhdGlvbnMgb2YgcmVtb3ZpbmcgdGhpcyB2YXJpYWJsZSB3aWxsIGJlIG1vc3QgcmVhZGlseSBhcHBhcmVudC4gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHNvbWUgcG90ZW50aWFsIHJhbWlmaWNhdGlvbnMgb24gdGhlIGRyaXZlcidzIGFiaWxpdHkgdG8gcHJvcGVybHkgaGFuZGxlIG1vbml0b3IgbW9kZS4gRGVwZW5kaW5nIG9uICpob3cqIGBub19hY3RpdmVfbW9uaXRvcmAgd2FzIHVzZWQsIGl0IGNvdWxkIHJlcHJlc2VudCBhIGNoYW5nZSBpbiBiZWhhdmlvciwgZnVuY3Rpb25hbGl0eSBvciwgcG90ZW50aWFsbHksIGEgYnVnLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgd2FzIGEgY2xlYW51cCwgYSByZWZhY3Rvciwgb3Igc29tZXRoaW5nIG1vcmUuIEFscmlnaHQsIGxldCdzIHNlZSB3aGF0IHRoZSBjb2RlIHNheXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MTExLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDI6NDIuODUyNDg4MTI1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjg2MzAwODk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfcGh5X2luaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTQyNj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjQyNzptdDc2X3BoeV9pbml0KHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNDI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz01NTA9aW50IG10NzZfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBib29sIHZodCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy01NTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjU1NTpcXHRyZXQgPSBtdDc2X3BoeV9pbml0KHBoeSwgcGh5LVxcdTAwM2Vodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTU1Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTc0Nz1pbnQgbXQ3Nl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYsIGJvb2wgdmh0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTc1NS1cXHRtdDc2X3djaWRfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VnbG9iYWxfd2NpZCwgcGh5LVxcdTAwM2ViYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjc1NjpcXHRyZXQgPSBtdDc2X3BoeV9pbml0KHBoeSwgaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy03NTctXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDI6NDQuNTM4Nzk0NTlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQzNzkzOTAwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipUcmFjaW5nIHRoZSBJbml0aWFsaXphdGlvbiBvZiBtdDc5Mnhfd2lwaHkqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgbXQ3OTJ4X3dpcGh5YCBpcyBpbml0aWFsaXplZC4gTXkgZmlyc3Qgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHRoZSBjYWxsIGNoYWluLCB3aGVyZSBkb2VzIHRoZSBgbXQ3OTJ4X2luaXRfd2lwaHlgIGZ1bmN0aW9uIGNvbWUgaW50byBwbGF5PyBJIG5lZWQgdG8gZmluZCBhbGwgdGhlIHBsYWNlcyBpdCdzIGFjdHVhbGx5IGludm9rZWQuIEtub3dpbmcgdGhlIHBvaW50cyBvZiBlbnRyeSB3aWxsIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBhbmQgdGhlIGJyb2FkZXIgc3lzdGVtIGJlaGF2aW9yIHRoYXQgcmVsaWVzIG9uIGl0LiBJIG5lZWQgdG8gbG9jYXRlIGFsbCByZWZlcmVuY2VzIHRvIHRoYXQgZnVuY3Rpb24uIFRpbWUgdG8gc3RhcnQgc2VhcmNoaW5nIHRoZSBjb2RlIGJhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1ODU2LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDI6NDYuOTc2NzM2NDQ5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDk3NDM4MjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyeF9pbml0X3dpcGh5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYz0xNzA9aW50IG10NzkyMV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0yMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjIyNzpcXHRyZXQgPSBtdDc5MnhfaW5pdF93aXBoeShodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIyOC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jPTI0Mz1pbnQgbXQ3OTI1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6Mjk4OlxcdHJldCA9IG10NzkyeF9pbml0X3dpcGh5KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjk5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oPTUyMT1pbnQgbXQ3OTJ4X3BtX2lkbGVfdGltZW91dF9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg6NTIyOmludCBtdDc5MnhfaW5pdF93aXBoeShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC01MjMtc3RydWN0IGllZWU4MDIxMV9vcHMgKlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jPTc0OD1FWFBPUlRfU1lNQk9MX0dQTChtdDc5Mnhfc2V0X2NvdmVyYWdlX2NsYXNzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmMtNzQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYzo3NTA6aW50IG10NzkyeF9pbml0X3dpcGh5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYy03NTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jLTg1Ni19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jOjg1NzpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MnhfaW5pdF93aXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jLTg1OC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDI6NDguNDc0MTk2NjA4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ2MDk5MDgwODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgbXQ3OTIxYCBEcml2ZXIgUmVnaXN0cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoZSBgbXQ3OTIxYCBkcml2ZXIgZ2V0cyBpbml0aWFsaXplZC4gVGhlIGNvcmUgZnVuY3Rpb24gaGVyZSwgYG10NzkyMV9yZWdpc3Rlcl9kZXZpY2VgLCBpcyB0cmlnZ2VyZWQgYmFzZWQgb24gdGhlIGJ1cyB0eXBlOiBVU0IgKGBtdDc5MjF1YCksIFBDSWUgKGBtdDc5MjFlYCksIG9yIFNESU8gKGBtdDc5MjFzYCkuIE5vdywgSSdtIGdldHRpbmcgYSBsaXR0bGUgY3VyaW91cyBhYm91dCB0aGUgZnV6emluZyBwb3RlbnRpYWwuIFNwZWNpZmljYWxseSwgSSdtIHdvbmRlcmluZyBpZiBhIFVTQi1iYXNlZCBwcm9iZSB1c2luZyBgbXQ3OTIxdWAgY291bGQgYmUgYSB2aWFibGUgdGFyZ2V0IGZvciBmdXp6aW5nLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBVU0IgaW1wbGVtZW50YXRpb24gdG8gYXNzZXNzIHRoZSBhdHRhY2sgc3VyZmFjZS4gVGltZSB0byBkaXZlIGludG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jYCBhbmQgc2VlIHdoYXQncyBoYXBwZW5pbmcgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2Nzc4LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQyOjUzLjA4NDEwNzc5NloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTA3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyOTAsXG4gIFwiTGluZUNvdW50XCI6IDY1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyOTA6XFx0XFxuIDI5MTpcXHRzdGF0aWMgaW50IG10NzkyMXVfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbiAyOTI6XFx0e1xcbiAyOTM6XFx0XFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XFxuIDI5NDpcXHRcXHRzdHJ1Y3QgbXQ3Nl9jb25uYWNfcG0gKnBtID0gXFx1MDAyNmRldi1cXHUwMDNlcG07XFxuIDI5NTpcXHRcXHRib29sIHJlaW5pdCA9IHRydWU7XFxuIDI5NjpcXHRcXHRpbnQgZXJyLCBpO1xcbiAyOTc6XFx0XFxuIDI5ODpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgMTA7IGkrKykge1xcbiAyOTk6XFx0XFx0XFx0dTMyIHZhbCA9IG10NzZfcnIoZGV2LCBNVF9XRl9TV19ERUZfQ1JfVVNCX01DVV9FVkVOVCk7XFxuIDMwMDpcXHRcXG4gMzAxOlxcdFxcdFxcdGlmICghKHZhbCBcXHUwMDI2IE1UX1dGX1NXX1NFUl9UUklHR0VSX1NVU1BFTkQpKSB7XFxuIDMwMjpcXHRcXHRcXHRcXHRyZWluaXQgPSBmYWxzZTtcXG4gMzAzOlxcdFxcdFxcdFxcdGJyZWFrO1xcbiAzMDQ6XFx0XFx0XFx0fVxcbiAzMDU6XFx0XFx0XFx0aWYgKHZhbCBcXHUwMDI2IE1UX1dGX1NXX1NFUl9ET05FX1NVU1BFTkQpIHtcXG4gMzA2OlxcdFxcdFxcdFxcdG10NzZfd3IoZGV2LCBNVF9XRl9TV19ERUZfQ1JfVVNCX01DVV9FVkVOVCwgMCk7XFxuIDMwNzpcXHRcXHRcXHRcXHRicmVhaztcXG4gMzA4OlxcdFxcdFxcdH1cXG4gMzA5OlxcdFxcbiAzMTA6XFx0XFx0XFx0bXNsZWVwKDIwKTtcXG4gMzExOlxcdFxcdH1cXG4gMzEyOlxcdFxcbiAzMTM6XFx0XFx0aWYgKHJlaW5pdCB8fCBtdDc5MnhfZG1hX25lZWRfcmVpbml0KGRldikpIHtcXG4gMzE0OlxcdFxcdFxcdGVyciA9IG10NzkyeHVfZG1hX2luaXQoZGV2LCB0cnVlKTtcXG4gMzE1OlxcdFxcdFxcdGlmIChlcnIpXFxuIDMxNjpcXHRcXHRcXHRcXHRnb3RvIGZhaWxlZDtcXG4gMzE3OlxcdFxcdH1cXG4gMzE4OlxcdFxcbiAzMTk6XFx0XFx0ZXJyID0gbXQ3NnVfcmVzdW1lX3J4KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbiAzMjA6XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIDMyMTpcXHRcXHRcXHRnb3RvIGZhaWxlZDtcXG4gMzIyOlxcdFxcbiAzMjM6XFx0XFx0ZXJyID0gbXQ3Nl9jb25uYWNfbWN1X3NldF9oaWZfc3VzcGVuZChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBmYWxzZSwgdHJ1ZSk7XFxuIDMyNDpcXHRmYWlsZWQ6XFxuIDMyNTpcXHRcXHRwbS1cXHUwMDNlc3VzcGVuZGVkID0gZmFsc2U7XFxuIDMyNjpcXHRcXG4gMzI3OlxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbiAzMjg6XFx0XFx0XFx0bXQ3OTJ4X3Jlc2V0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbiAzMjk6XFx0XFxuIDMzMDpcXHRcXHRyZXR1cm4gZXJyO1xcbiAzMzE6XFx0fVxcbiAzMzI6XFx0I2VuZGlmIC8qIENPTkZJR19QTSAqL1xcbiAzMzM6XFx0XFxuIDMzNDpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgbXQ3OTIxdV9kZXZpY2VfdGFibGUpO1xcbiAzMzU6XFx0TU9EVUxFX0ZJUk1XQVJFKE1UNzkyMV9GSVJNV0FSRV9XTSk7XFxuIDMzNjpcXHRNT0RVTEVfRklSTVdBUkUoTVQ3OTIxX1JPTV9QQVRDSCk7XFxuIDMzNzpcXHRcXG4gMzM4OlxcdHN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc5MjF1X2RyaXZlciA9IHtcXG4gMzM5OlxcdFxcdC5uYW1lXFx0XFx0PSBLQlVJTERfTU9ETkFNRSxcXG4gMzQwOlxcdFxcdC5pZF90YWJsZVxcdD0gbXQ3OTIxdV9kZXZpY2VfdGFibGUsXFxuIDM0MTpcXHRcXHQucHJvYmVcXHRcXHQ9IG10NzkyMXVfcHJvYmUsXFxuIDM0MjpcXHRcXHQuZGlzY29ubmVjdFxcdD0gbXQ3OTJ4dV9kaXNjb25uZWN0LFxcbiAzNDM6XFx0I2lmZGVmIENPTkZJR19QTVxcbiAzNDQ6XFx0XFx0LnN1c3BlbmRcXHQ9IG10NzkyMXVfc3VzcGVuZCxcXG4gMzQ1OlxcdFxcdC5yZXN1bWVcXHRcXHQ9IG10NzkyMXVfcmVzdW1lLFxcbiAzNDY6XFx0XFx0LnJlc2V0X3Jlc3VtZVxcdD0gbXQ3OTIxdV9yZXN1bWUsXFxuIDM0NzpcXHQjZW5kaWYgLyogQ09ORklHX1BNICovXFxuIDM0ODpcXHRcXHQuc29mdF91bmJpbmRcXHQ9IDEsXFxuIDM0OTpcXHRcXHQuZGlzYWJsZV9odWJfaW5pdGlhdGVkX2xwbSA9IDEsXFxuIDM1MDpcXHR9O1xcbiAzNTE6XFx0bW9kdWxlX3VzYl9kcml2ZXIobXQ3OTIxdV9kcml2ZXIpO1xcbiAzNTI6XFx0XFxuIDM1MzpcXHRNT0RVTEVfREVTQ1JJUFRJT04oXFxcIk1lZGlhVGVrIE1UNzkyMVUgKFVTQikgd2lyZWxlc3MgZHJpdmVyXFxcIik7XFxuIDM1NDpcXHRNT0RVTEVfQVVUSE9SKFxcXCJMb3JlbnpvIEJpYW5jb25pIFxcdTAwM2Nsb3JlbnpvQGtlcm5lbC5vcmdcXHUwMDNlXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQyOjUzLjA4NDE5NDUyNloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzg5NjgwOTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgbXQ3OTIxdV9wcm9iZWAgZnVuY3Rpb24uLi5cblxuKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgYG10NzkyMXVfcHJvYmVgKipcblxuQWxyaWdodCwgSSdtIGxvb2tpbmcgYXQgYG10NzkyMXVfcHJvYmVgLiBUaGF0IG5hbWluZyBjb252ZW50aW9uIHN1Z2dlc3RzIHRoaXMgaXMgbGlrZWx5IHRoZSBwcm9iZSBmdW5jdGlvbiBmb3IgYSBNZWRpYVRlayBNVDc5MjFVLWJhc2VkIFVTQiBkZXZpY2UuICBHaXZlbiBteSBleHBlcmllbmNlIHdpdGggc2ltaWxhciBkcml2ZXJzLCBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgYSBmZXcga2V5IHRoaW5ncyBJJ2xsIGJlIGxvb2tpbmcgZm9yLiBJIGV4cGVjdCB0byBzZWUgdGhlIHR5cGljYWwgVVNCIGRldmljZSBpbml0aWFsaXphdGlvbiBmbG93OiAgZGV2aWNlIGRlc2NyaXB0b3IgYWNxdWlzaXRpb24sIGVuZHBvaW50IGNvbmZpZ3VyYXRpb24sIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCwgaWRlYWxseSwgc29tZSBzb3J0IG9mIHNhbml0eSBjaGVjayB0byBlbnN1cmUgdGhlIFVTQiBkZXZpY2UgaXMgYWN0dWFsbHkgYSBjb21wYXRpYmxlIE1UNzkyMVUgdmFyaWFudCBhbmQgaXNuJ3Qgc29tZXRoaW5nIG1hc3F1ZXJhZGluZyBhcyBvbmUuICBUaGVyZSdzIGFsc28gZ29pbmcgdG8gYmUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgZGV2aWNlLXNwZWNpZmljIHJlZ2lzdGVycy4gSSdsbCBleHBlY3QgdG8gc2VlIHRoaXMgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAgdGhlIG5lY2Vzc2FyeSB3b3JrcXVldWVzLCBpbml0aWFsaXppbmcgbXV0ZXhlcyBvciBzcGlubG9ja3MgZm9yIGNvbmN1cnJlbnQgYWNjZXNzIGlmIG5lY2Vzc2FyeS4gSG9wZWZ1bGx5LCB0aGV5IGhhdmVuJ3QgZm9yZ290dGVuIGVycm9yIGhhbmRsaW5nIOKAkyBnb29kIHByb2JlIGZ1bmN0aW9ucyBhcmUgcmVzaWxpZW50LiBJJ20ga2VlbiB0byBvYnNlcnZlIGhvdyB0aGV5IGhhbmRsZSBwb3RlbnRpYWwgZmFpbHVyZSBzY2VuYXJpb3MgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBsaWtlIFVTQiB0cmFuc2ZlciBlcnJvcnMgb3IgaGFyZHdhcmUgbWFsZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODE3MSwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDI6NTUuNDczODc3NzY5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4MzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIzMCxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIzMDpcXHRcXHRyZXQgPSBtdDc2dV9hbGxvY19tY3VfcXVldWUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuIDIzMTpcXHRcXHRpZiAocmV0KVxcbiAyMzI6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4gMjMzOlxcdFxcbiAyMzQ6XFx0XFx0cmV0ID0gbXQ3NnVfYWxsb2NfcXVldWVzKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbiAyMzU6XFx0XFx0aWYgKHJldClcXG4gMjM2OlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDIzNzpcXHRcXG4gMjM4OlxcdFxcdHJldCA9IG10NzkyeHVfZG1hX2luaXQoZGV2LCBmYWxzZSk7XFxuIDIzOTpcXHRcXHRpZiAocmV0KVxcbiAyNDA6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4gMjQxOlxcdFxcbiAyNDI6XFx0XFx0aHcgPSBtdDc2X2h3KGRldik7XFxuIDI0MzpcXHRcXHQvKiBjaGVjayBodyBzZyBzdXBwb3J0IGluIG9yZGVyIHRvIGVuYWJsZSBBTVNEVSAqL1xcbiAyNDQ6XFx0XFx0aHctXFx1MDAzZW1heF90eF9mcmFnbWVudHMgPSBtZGV2LVxcdTAwM2V1c2Iuc2dfZW4gPyBNVF9IV19UWFBfTUFYX0JVRl9OVU0gOiAxO1xcbiAyNDU6XFx0XFxuIDI0NjpcXHRcXHRyZXQgPSBtdDc5MjFfcmVnaXN0ZXJfZGV2aWNlKGRldik7XFxuIDI0NzpcXHRcXHRpZiAocmV0KVxcbiAyNDg6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4gMjQ5OlxcdFxcbiAyNTA6XFx0XFx0cmV0dXJuIDA7XFxuIDI1MTpcXHRcXG4gMjUyOlxcdGVycm9yOlxcbiAyNTM6XFx0XFx0bXQ3NnVfcXVldWVzX2RlaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4gMjU0OlxcdFxcdG10NzkyeHVfcmVzZXRfd29ya19jbGVhbnVwKGRldik7XFxuIDI1NTpcXHRcXG4gMjU2OlxcdFxcdHVzYl9zZXRfaW50ZmRhdGEodXNiX2ludGYsIE5VTEwpO1xcbiAyNTc6XFx0XFxuIDI1ODpcXHRcXHRtdDc2X2ZyZWVfZGV2aWNlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbiAyNTk6XFx0XFxuIDI2MDpcXHRcXHRyZXR1cm4gcmV0O1xcbiAyNjE6XFx0fVxcbiAyNjI6XFx0XFxuIDI2MzpcXHQjaWZkZWYgQ09ORklHX1BNXFxuIDI2NDpcXHRzdGF0aWMgaW50IG10NzkyMXVfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IHN0YXRlKVxcbiAyNjU6XFx0e1xcbiAyNjY6XFx0XFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XFxuIDI2NzpcXHRcXHRzdHJ1Y3QgbXQ3Nl9jb25uYWNfcG0gKnBtID0gXFx1MDAyNmRldi1cXHUwMDNlcG07XFxuIDI2ODpcXHRcXHRpbnQgZXJyO1xcbiAyNjk6XFx0XFxuIDI3MDpcXHRcXHRwbS1cXHUwMDNlc3VzcGVuZGVkID0gdHJ1ZTtcXG4gMjcxOlxcdFxcdGZsdXNoX3dvcmsoXFx1MDAyNmRldi1cXHUwMDNlcmVzZXRfd29yayk7XFxuIDI3MjpcXHRcXG4gMjczOlxcdFxcdGVyciA9IG10NzZfY29ubmFjX21jdV9zZXRfaGlmX3N1c3BlbmQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgdHJ1ZSwgdHJ1ZSk7XFxuIDI3NDpcXHRcXHRpZiAoZXJyKVxcbiAyNzU6XFx0XFx0XFx0Z290byBmYWlsZWQ7XFxuIDI3NjpcXHRcXG4gMjc3OlxcdFxcdG10NzZ1X3N0b3BfcngoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuIDI3ODpcXHRcXHRtdDc2dV9zdG9wX3R4KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbiAyNzk6XFx0XFxuIDI4MDpcXHRcXHRyZXR1cm4gMDtcXG4gMjgxOlxcdFxcbiAyODI6XFx0ZmFpbGVkOlxcbiAyODM6XFx0XFx0cG0tXFx1MDAzZXN1c3BlbmRlZCA9IGZhbHNlO1xcbiAyODQ6XFx0XFxuIDI4NTpcXHRcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4gMjg2OlxcdFxcdFxcdG10NzkyeF9yZXNldChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4gMjg3OlxcdFxcbiAyODg6XFx0XFx0cmV0dXJuIGVycjtcXG4gMjg5OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDI6NTUuNDczOTU3NDQ5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzNjA4MjAyMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEaXZpbmcgRGVlcGVyIGludG8gdGhlIG10NzkyMXUgUHJvYmUqKlxuXG5BbHJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IHRoZSByZW1haW5kZXIgb2YgdGhlIGBtdDc5MjF1X3Byb2JlYCBmdW5jdGlvbi4gSSBhbHJlYWR5IGhhdmUgYSBkZWNlbnQgZ3Jhc3Agb2YgdGhlIG92ZXJhbGwgZHJpdmVyIGFyY2hpdGVjdHVyZSBmb3IgdGhpcyBNZWRpYVRlayBjaGlwLCBhbmQgSSd2ZSBwcm9iYWJseSBhbHJlYWR5IGlkZW50aWZpZWQga2V5IGFzcGVjdHMgb2YgdGhlIGZ1bmN0aW9uJ3MgaW5pdGlhbCBzZXR1cC4gTm93LCBJJ20gdGhpbmtpbmcsIFwiTGV0J3MgZGlnIGluIGFuZCBleGFtaW5lIHRoZSBuaXR0eS1ncml0dHkgZGV0YWlscyBvZiBob3cgdGhpcyBmdW5jdGlvbiBzZXRzIHVwIHRoZSBVU0IgZGV2aWNlLlwiIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgaGFyZHdhcmUgaXMgaW5pdGlhbGl6ZWQsIGhvdyB0aGUgZGV2aWNlIGlzIGNvbmZpZ3VyZWQsIGFuZCB3aGF0IHJlc291cmNlcyBhcmUgYWxsb2NhdGVkLiBXaGF0IGVycm9yIGhhbmRsaW5nIGlzIHByZXNlbnQ/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgYXJlYXMgaW4gdGhlIGluaXRpYWwgcHJvYmluZyBzZXF1ZW5jZT8gSSdtIHByb2JhYmx5IG1lbnRhbGx5IGNoZWNraW5nIGZvciB0aGluZ3MgbGlrZSBETUEgc2V0dXAsIGVuZHBvaW50IGluaXRpYWxpemF0aW9uLCBhbmQgdGhlIHJlZ2lzdHJhdGlvbiBvZiBpbnRlcnJ1cHQgaGFuZGxlcnMuIEknbSBhbHNvIGxvb2tpbmcgZm9yIGFueSBlYXJseSBpbmRpY2F0aW9ucyBvZiBwb3dlciBtYW5hZ2VtZW50IGNvbmZpZ3VyYXRpb24gb3IgZmlybXdhcmUgbG9hZGluZyBwcm9jZWR1cmVzLiBUaGlzIFwicmVzdCBvZiBgbXQ3OTIxdV9wcm9iZWBcIiBpcyBjcml0aWNhbCwgYmVjYXVzZSBpdCdzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQuIEl0J3MgdGhlIGxhdW5jaHBhZCBmb3IgdGhlIGVudGlyZSBkZXZpY2Ugb3BlcmF0aW9uLCBhbmQgYW55IG1pc3Rha2VzIGhlcmUgd2lsbCBjYXNjYWRlIGludG8gbWFqb3IgcHJvYmxlbXMgbGF0ZXIgb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHByb2JlIGVzdGFibGlzaGVzIGEgc29saWQgZm91bmRhdGlvbiBmb3IgZXZlcnl0aGluZyB0aGF0IGZvbGxvd3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MzMwLCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwNDo0Mjo1Ny44MzQ3ODAxNTRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxNjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4MCxcbiAgXCJMaW5lQ291bnRcIjogNTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE4MDpcXHRcXHRcXHQucmVhZF9jb3B5ID0gbXQ3NnVfcmVhZF9jb3B5LFxcbiAxODE6XFx0XFx0XFx0LndyaXRlX2NvcHkgPSBtdDc5Mnh1X2NvcHksXFxuIDE4MjpcXHRcXHRcXHQudHlwZSA9IE1UNzZfQlVTX1VTQixcXG4gMTgzOlxcdFxcdH07XFxuIDE4NDpcXHRcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYodXNiX2ludGYpO1xcbiAxODU6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9vcHMgKm9wcztcXG4gMTg2OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xcbiAxODc6XFx0XFx0c3RydWN0IG10NzkyeF9kZXYgKmRldjtcXG4gMTg4OlxcdFxcdHN0cnVjdCBtdDc2X2RldiAqbWRldjtcXG4gMTg5OlxcdFxcdHU4IGZlYXR1cmVzO1xcbiAxOTA6XFx0XFx0aW50IHJldDtcXG4gMTkxOlxcdFxcbiAxOTI6XFx0XFx0b3BzID0gbXQ3OTJ4X2dldF9tYWM4MDIxMV9vcHMoXFx1MDAyNnVzYl9pbnRmLVxcdTAwM2VkZXYsIFxcdTAwMjZtdDc5MjFfb3BzLFxcbiAxOTM6XFx0XFx0XFx0XFx0XFx0ICAgICAgKHZvaWQgKilpZC1cXHUwMDNlZHJpdmVyX2luZm8sIFxcdTAwMjZmZWF0dXJlcyk7XFxuIDE5NDpcXHRcXHRpZiAoIW9wcylcXG4gMTk1OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAxOTY6XFx0XFxuIDE5NzpcXHRcXHRvcHMtXFx1MDAzZXN0b3AgPSBtdDc5Mnh1X3N0b3A7XFxuIDE5ODpcXHRcXHRtZGV2ID0gbXQ3Nl9hbGxvY19kZXZpY2UoXFx1MDAyNnVzYl9pbnRmLVxcdTAwM2VkZXYsIHNpemVvZigqZGV2KSwgb3BzLCBcXHUwMDI2ZHJ2X29wcyk7XFxuIDE5OTpcXHRcXHRpZiAoIW1kZXYpXFxuIDIwMDpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMjAxOlxcdFxcbiAyMDI6XFx0XFx0ZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MnhfZGV2LCBtdDc2KTtcXG4gMjAzOlxcdFxcdGRldi1cXHUwMDNlZndfZmVhdHVyZXMgPSBmZWF0dXJlcztcXG4gMjA0OlxcdFxcdGRldi1cXHUwMDNlaGlmX29wcyA9IFxcdTAwMjZoaWZfb3BzO1xcbiAyMDU6XFx0XFx0YXRvbWljX3NldChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LmJ1c19odW5nLCBmYWxzZSk7XFxuIDIwNjpcXHRcXHRtdDc5Mnh1X3Jlc2V0X3dvcmtfaW5pdChkZXYpO1xcbiAyMDc6XFx0XFxuIDIwODpcXHRcXHR1c2JfcmVzZXRfZGV2aWNlKHVkZXYpO1xcbiAyMDk6XFx0XFxuIDIxMDpcXHRcXHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBkZXYpO1xcbiAyMTE6XFx0XFxuIDIxMjpcXHRcXHRyZXQgPSBfX210NzZ1X2luaXQobWRldiwgdXNiX2ludGYsIFxcdTAwMjZidXNfb3BzKTtcXG4gMjEzOlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiAyMTQ6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4gMjE1OlxcdFxcbiAyMTY6XFx0XFx0bWRldi1cXHUwMDNlcmV2ID0gKG10NzZfcnIoZGV2LCBNVF9IV19DSElQSUQpIFxcdTAwM2NcXHUwMDNjIDE2KSB8XFxuIDIxNzpcXHRcXHRcXHQgICAgKG10NzZfcnIoZGV2LCBNVF9IV19SRVYpIFxcdTAwMjYgMHhmZik7XFxuIDIxODpcXHRcXHRkZXZfZGJnKG1kZXYtXFx1MDAzZWRldiwgXFxcIkFTSUMgcmV2aXNpb246ICUwNHhcXFxcblxcXCIsIG1kZXYtXFx1MDAzZXJldik7XFxuIDIxOTpcXHRcXG4gMjIwOlxcdFxcdGlmIChtdDc2X2dldF9maWVsZChkZXYsIE1UX0NPTk5fT05fTUlTQywgTVRfVE9QX01JU0MyX0ZXX045X1JEWSkpIHtcXG4gMjIxOlxcdFxcdFxcdHJldCA9IG10NzkyeHVfd2ZzeXNfcmVzZXQoZGV2KTtcXG4gMjIyOlxcdFxcdFxcdGlmIChyZXQpXFxuIDIyMzpcXHRcXHRcXHRcXHRnb3RvIGVycm9yO1xcbiAyMjQ6XFx0XFx0fVxcbiAyMjU6XFx0XFxuIDIyNjpcXHRcXHRyZXQgPSBtdDc5Mnh1X21jdV9wb3dlcl9vbihkZXYpO1xcbiAyMjc6XFx0XFx0aWYgKHJldClcXG4gMjI4OlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDIyOTpcXHRcXG4gMjMwOlxcdFxcdHJldCA9IG10NzZ1X2FsbG9jX21jdV9xdWV1ZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4gMjMxOlxcdFxcdGlmIChyZXQpXFxuIDIzMjpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbiAyMzM6XFx0XFxuIDIzNDpcXHRcXHRyZXQgPSBtdDc2dV9hbGxvY19xdWV1ZXMoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQyOjU3LjgzNDkwMzM4NFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozOTA4MDk0MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqS2NvbmZpZyBJbnNwZWN0aW9uIGZvciBtdDc2IGFuZCBtdDc5MjEqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW4uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIHVwLXRvLWRhdGUgb24gdGhlIGNvbmZpZ3VyYXRpb25zIGZvciB0aG9zZSBNVEsgd2lyZWxlc3MgZHJpdmVycy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgcmVsYXRlZCB0byBgbXQ3NmAgYW5kIGBtdDc5MjFgLiBUaGVzZSBLY29uZmlnIGZpbGVzIGFyZSB0aGUgaGVhcnQgb2YgdGhlIGtlcm5lbCdzIGNvbmZpZ3VyYXRpb24gc3lzdGVtLiBUaGV5IGRlZmluZSB0aGUgYnVpbGQgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgaGVscCB0ZXh0IHRoYXQgZGV0ZXJtaW5lIHdoZXRoZXIgYSBwYXJ0aWN1bGFyIGRyaXZlciBvciBmZWF0dXJlIGlzIGVuYWJsZWQgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgZHJpdmVycyBhcmUgYmVpbmcgbWFuYWdlZCDigJMgYXJlIHRoZXkgbW9kdWxlcywgYnVpbHQtaW4sIG9yIG9wdGlvbmFsbHkgaW5jbHVkZWQ/IEFyZSB0aGVyZSBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mLCBwZXJoYXBzIG9uIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zIG9yIGJvYXJkIHN1cHBvcnQgcGFja2FnZXM/IEkgbmVlZCB0byBsb29rIGZvciBhbnkgZGVmYXVsdCBzZXR0aW5ncyB0aGF0IG1pZ2h0IGltcGFjdCBteSBjdXJyZW50IHByb2plY3Qgb3IgYW55IHBvdGVudGlhbCBjb25mbGljdHMuIEkgYWxzbyBoYXZlIHRvIGtlZXAgYW4gZXllIG91dCBmb3IgYW55IHJlY2VudCBjaGFuZ2VzIG9yIGFkZGl0aW9ucyB0aGF0IG1heSBoYXZlIGJlZW4gaW50cm9kdWNlZCBpbiB1cHN0cmVhbSBrZXJuZWxzLiBUaGlzIGlzIGFib3V0IG1ha2luZyBzdXJlIGV2ZXJ5dGhpbmcgd2lsbCB3b3JrIGFzIGV4cGVjdGVkIHdpdGggbXkgdGFyZ2V0IGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNjMzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwNDo0MzowMS43NDMwMDA0MDRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NTkwNDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNVDc2fGNvbmZpZyBNVDc5MlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyOmNvbmZpZyBNVDc2X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjY6Y29uZmlnIE1UNzZfTEVEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy03LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MTI6Y29uZmlnIE1UNzZfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTEzLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjE2OmNvbmZpZyBNVDc2X1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTctXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MjA6Y29uZmlnIE1UNzZ4MDJfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTIxLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjI0OmNvbmZpZyBNVDc2eDAyX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yNS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyODpjb25maWcgTVQ3Nl9DT05OQUNfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI5LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjMyOmNvbmZpZyBNVDc5MnhfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMzLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjM2OmNvbmZpZyBNVDc5MnhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTM3LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjQwOmNvbmZpZyBNVDc2X05QVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy00MS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWc6Mjpjb25maWcgTVQ3NjAzRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NjAzRSAoUENJZSkgYW5kIE1UNzZ4OCBXTEFOIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzozOmNvbmZpZyBNVDc2MTVfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy00LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnLTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzo4OmNvbmZpZyBNVDc2MTVFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy05LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2MTVFIGFuZCBNVDc2NjNFIChQQ0llKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnOjIxOmNvbmZpZyBNVDc2MjJfV01BQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMjItXFx0Ym9vbCBcXFwiTVQ3NjIyIChTb0MpIFdNQUMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzozMjpjb25maWcgTVQ3NjYzX1VTQl9TRElPX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzozNjpjb25maWcgTVQ3NjYzVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctMzctXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzY2M1UgKFVTQikgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZzo0Nzpjb25maWcgTVQ3NjYzU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWctNDgtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzY2M1MgKFNESU8pIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZzoyOmNvbmZpZyBNVDc2eDBfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZzo2OmNvbmZpZyBNVDc2eDBVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2eDBVIChVU0IpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWc6MTk6Y29uZmlnIE1UNzZ4MEVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2eDBFIChQQ0llKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWc6Mjpjb25maWcgTVQ3NngyX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy01LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWc6Njpjb25maWcgTVQ3NngyRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NngyRSAoUENJZSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZzoxODpjb25maWcgTVQ3NngyVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMTktXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzZ4MlUgKFVTQikgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI6Y29uZmlnIE1UNzkyMV9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyMUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTgtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyMUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6MTc6Y29uZmlnIE1UNzkyMVNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjFTIChTRElPKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI4OmNvbmZpZyBNVDc5MjFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yOS1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Mjpjb25maWcgTVQ3OTI1X0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Nzpjb25maWcgTVQ3OTI1RVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctOC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1RSAoUENJZSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoxOTpjb25maWcgTVQ3OTI1VVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMjAtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDM6MDEuODAxNTk1NjNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDA0MDA5ODUwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgbXQ3NiBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgaW5pdGlhbGl6YXRpb24gZmxvdyBvZiB0aGVzZSBtdDc2IGRyaXZlcnMsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgYG10NzZfcGh5X2luaXRgIGZ1bmN0aW9uLiBJdCBzZWVtcyBpdCdzIHRoZSBjb3JlIG9mIGJyaW5naW5nIHRoZSBoYXJkd2FyZSBvbmxpbmUsIGNhbGxlZCBieSBgbXQ3Nl9yZWdpc3Rlcl9waHlgIGFuZCBgbXQ3Nl9yZWdpc3Rlcl9kZXZpY2VgLiBUaGlzIG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IHRoZSBQSFkgaW5pdGlhbGl6YXRpb24gaXMgZnVuZGFtZW50YWwuIEFsbCB0aGUgbXQ3NiBkcml2ZXJzIEknbSBmYW1pbGlhciB3aXRoIOKAkyB0aGUgTVQ3NngwVSwgTVQ3NngyVSwgTVQ3NjYzVSwgTVQ3OTIxVSwgTVQ3OTI1VSBmYW1pbGllcyDigJMgdGhleSBhbGwgYnVpbGQgb24gdGhlIG10NzYgY29yZSwgc28gdGhpcyBhcHByb2FjaCBpcyBjb25zaXN0ZW50LlxuXG5Ob3csIGNvbnNpZGVyaW5nIHRoZSBjb250ZXh0IG9mIFVTQiBkZXZpY2UgYXR0YWNobWVudCwgc3BlY2lmaWNhbGx5IHdoZW4gd2UncmUgdXNpbmcgc29tZXRoaW5nIGxpa2Ugc3l6a2FsbGVyIGZvciBmdXp6aW5nLCBJJ20gdHJ5aW5nIHRvIHZpc3VhbGl6ZSB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3MuIFdpdGggYHN5el91c2JfY29ubmVjdGAgbGV2ZXJhZ2luZyB0aG9zZSBzcGVjaWZpYyB2ZW5kb3IvcHJvZHVjdCBJRHMgZm9yIG10NzZ4MHUsIG10NzZ4MnUsIGV0Yy4sIEkgbmVlZCB0byBhc2NlcnRhaW4gKmV4YWN0bHkqIGhvdyB0aGUgZGV2aWNlIHJlZ2lzdGVycyB3aXRoIG1hYzgwMjExIGFuZCBjZmc4MDIxMS4gVGhpcyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgc3Vic2VxdWVudCBiZWhhdmlvciB1bmRlciBmdXp6aW5nLlxuXG5IYW5nIG9uLiBUaGVyZSdzIGEgZmxhZyBiZWluZyBzZXQgd2l0aGluIGBtdDc2X3BoeV9pbml0YCwgbmFtZWx5OiBgd2lwaHktXHUwMDNlZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SIHwgTkw4MDIxMV9GRUFUVVJFX0FQX01PREVfQ0hBTl9XSURUSF9DSEFOR0U7YC4gVGhpcyBpbW1lZGlhdGVseSBmbGFncyBzb21ldGhpbmcgaW50ZXJlc3RpbmcuIEFuZCBpbiBgbXQ3OTJ4X2NvcmUuY2AgSSBzZWUgdGhlIGxpbmUgdGhhdCByZW1vdmVzIHRoZSBmbGFnIGBwaHktXHUwMDNlbXQ3Ni1cdTAwM2Vub19hY3RpdmVfbW9uaXRvciA9IHRydWVgLlxuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1JgICphY3R1YWxseSogZG9lcy4gSXQgd2FycmFudHMgYSBkZWVwIGRpdmUgaW50byB0aGUga2VybmVsLCBtYWM4MDIxMSwgY2ZnODAyMTEsIGFuZCB0aGUgbmw4MDIxMSBzdWJzeXN0ZW0uIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIGFuZCB1bmRlcnN0YW5kaW5nIHRoZSByb2xlIG9mIHRoaXMgZmVhdHVyZSBpcyBrZXkgdG8gYW50aWNpcGF0aW5nIGhvdyB0aGUgZHJpdmVyIHdpbGwgaGFuZGxlIG1vbml0b3JlZCB0cmFmZmljIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgYnJvYWRlciB3aXJlbGVzcyBzdGFjaywgZXNwZWNpYWxseSB1bmRlciBmdXp6aW5nIGNvbmRpdGlvbnMuIEkgbmVlZCB0byBiZSBzdXJlIHRoZSBtb25pdG9yIG1vZGUgaXNuJ3QgaW50ZXJmZXJpbmcgd2l0aCBvdXIgdGVzdCBzY2VuYXJpby5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM3NTEsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDM6MDUuODQxNjk3MDhaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1Mzc3NTcxMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9OTAzPXN0YXRpYyB2b2lkIGF0aDlrX3NldF9od19jYXBhYihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTkzMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjkzMzpcXHRody1cXHUwMDNld2lwaHktXFx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiB8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy05MzQtXFx0XFx0XFx0ICAgICAgIE5MODAyMTFfRkVBVFVSRV9BUF9NT0RFX0NIQU5fV0lEVEhfQ0hBTkdFIHxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz00Mjc9bXQ3Nl9waHlfaW5pdChzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSwgc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNDQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo0NDI6XFx0d2lwaHktXFx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiB8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTQ0My1cXHRcXHRcXHQgICBOTDgwMjExX0ZFQVRVUkVfQVBfTU9ERV9DSEFOX1dJRFRIX0NIQU5HRTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYwMXUvaW5pdC5jPTU3ND1pbnQgbXQ3NjAxdV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzYwMXVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2MDF1L2luaXQuYy02MTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS9pbml0LmM6NjExOlxcdHdpcGh5LVxcdTAwM2VmZWF0dXJlcyB8PSBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS9pbml0LmMtNjEyLVxcdHdpcGh5LVxcdTAwM2VpbnRlcmZhY2VfbW9kZXMgPSBCSVQoTkw4MDIxMV9JRlRZUEVfU1RBVElPTik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz01Njc0PXN0YXRpYyBpbnQgbWFjODAyMTFfaHdzaW1fbmV3X3JhZGlvKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01OTQzLVxcdGh3LVxcdTAwM2V3aXBoeS1cXHUwMDNlZmxhZ3MgfD0gV0lQSFlfRkxBR19JQlNTX1JTTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo1OTQ0OlxcdGh3LVxcdTAwM2V3aXBoeS1cXHUwMDNlZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SIHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01OTQ1LVxcdFxcdFxcdCAgICAgICBOTDgwMjExX0ZFQVRVUkVfQVBfTU9ERV9DSEFOX1dJRFRIX0NIQU5HRSB8XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oPTY3Mzk9ZW51bSBubDgwMjExX2FwX3NtZV9mZWF0dXJlcyB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTY3ODYtICpcXHRzdGlsbCBnZW5lcmF0ZWQgYnkgdGhlIGRyaXZlci5cXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oOjY3ODc6ICogQE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUjogVGhpcyBkcml2ZXIgc3VwcG9ydHMgYW4gYWN0aXZlIG1vbml0b3JcXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTY3ODgtICpcXHRpbnRlcmZhY2UuIEFuIGFjdGl2ZSBtb25pdG9yIGludGVyZmFjZSBiZWhhdmVzIGxpa2UgYSBub3JtYWwgbW9uaXRvclxcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaD02ODM2PWVudW0gbmw4MDIxMV9mZWF0dXJlX2ZsYWdzIHtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmgtNjg1My1cXHROTDgwMjExX0ZFQVRVUkVfVVNFUlNQQUNFX01QTVxcdFxcdFxcdD0gMSBcXHUwMDNjXFx1MDAzYyAxNixcXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oOjY4NTQ6XFx0Tkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SXFx0XFx0XFx0PSAxIFxcdTAwM2NcXHUwMDNjIDE3LFxcbmluY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmgtNjg1NS1cXHROTDgwMjExX0ZFQVRVUkVfQVBfTU9ERV9DSEFOX1dJRFRIX0NIQU5HRVxcdD0gMSBcXHUwMDNjXFx1MDAzYyAxOCxcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9NDkzND1zdGF0aWMgaW50IG5sODAyMTFfcGFyc2VfbW9uX29wdGlvbnMoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy00OTU4LVxcdGlmIChwYXJhbXMtXFx1MDAzZWZsYWdzIFxcdTAwMjYgTU9OSVRPUl9GTEFHX0FDVElWRSBcXHUwMDI2XFx1MDAyNlxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NDk1OTpcXHQgICAgIShyZGV2LVxcdTAwM2V3aXBoeS5mZWF0dXJlcyBcXHUwMDI2IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUikpXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy00OTYwLVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDM6MDcuMzc5NDYxMjA2WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM5Mjc1NzA0NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIE1UNzkyMS9NVDc5MjUgQWN0aXZlIE1vbml0b3IgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2Ugd2UncmUgZW5hYmxpbmcgYE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUmAgZm9yIHRoZSBNVDc5MjEgYW5kIE1UNzkyNSBkZXZpY2VzLCBhbGxvd2luZyB1c2Vyc3BhY2UgY29udHJvbCBvZiBtb25pdG9yIGludGVyZmFjZXMgd2l0aCB0aGUgYE1PTklUT1JfRkxBR19BQ1RJVkVgIGZsYWcgdmlhIG5sODAyMTEuIFByZXZpb3VzbHksIHRoZSBgbm9fYWN0aXZlX21vbml0b3IgPSB0cnVlYCBzZXR0aW5nIGVmZmVjdGl2ZWx5IGJsb2NrZWQgdGhpcy4gSSByZWNhbGwgdGhhdCBgbXQ3Nl9waHlfaW5pdGAgd2FzIHdoZXJlIHRoaXMgd2FzIGhhbmRsZWQsIGJ1dCB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHdpcGh5IGluIGBtdDc5MnhfaW5pdF93aXBoeWAgd2FzIHNldHRpbmcgdGhpcyBmbGFnIHRvIHRydWUgYmVmb3JlIGBtdDc2X3BoeV9pbml0YCB3YXMgY2FsbGVkLiBUaGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guXG5cbk5vdywgSSBuZWVkIHRvIHZlcmlmeSBob3cgYG5vX2FjdGl2ZV9tb25pdG9yYCB3YXMgdXNlZCBwcmlvciB0byB0aGlzIGNoYW5nZS4gU2Nhbm5pbmcgYG1hYzgwMjExLmNgLCBJIHNlZSB0aGF0IGBtdDc2X3BoeV9pbml0YCB1c2VkIHRvIGNoZWNrIGBwaHktXHUwMDNlbm9fYWN0aXZlX21vbml0b3JgIGFuZCBvbmx5IGVuYWJsZSBgTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SYCBpZiBpdCB3YXMgZmFsc2UuIFRoZSBjaGFuZ2Ugbm93IHVuY29uZGl0aW9uYWxseSBhZGRzIGBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1JgLCBhbG9uZyB3aXRoIGBOTDgwMjExX0ZFQVRVUkVfQVBfTU9ERV9DSEFOX1dJRFRIX0NIQU5HRWAuIE9rYXksIHRoYXQncyBhIGtleSBkZXRhaWwg4oCTIHRoZSBmZWF0dXJlIGlzIG5vdyB1bmNvbmRpdGlvbmFsbHkgZW5hYmxlZC4gQW5kIGluIGBtdDc5MnhfY29yZS5jYCBhbmQgc3BlY2lmaWNhbGx5IGBtdDc5MnhfaW5pdF93aXBoeWAgSSBjYW4gY2xlYXJseSBzZWUgd2hlcmUgYHBoeS1cdTAwM2VtdDc2LVx1MDAzZW5vX2FjdGl2ZV9tb25pdG9yID0gdHJ1ZWAgd2FzIHNldC5cblxuVGhlIHF1ZXN0aW9uIHRoZW4gaXMsICp3aHkqIHdhcyBgbm9fYWN0aXZlX21vbml0b3JgIHNldCB0byB0cnVlIGluIHRoZSBmaXJzdCBwbGFjZSBmb3IgdGhlIE1UNzkyeCBzZXJpZXM/IE15IGh5cG90aGVzaXMgaXMgdGhhdCB0aGVzZSBjaGlwcyBlaXRoZXIgZGlkbid0IHN1cHBvcnQgYWN0aXZlIG1vbml0b3IsIG9yIHRoYXQgdGhleSBkaWQgYnV0IGl0IHdhc24ndCB5ZXQgZW5hYmxlZC4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgYWN0aXZlIG1vbml0b3IgaXMgYWN0dWFsbHkgc3VwcG9ydGVkIG5vdywgb3IgaWYgdGhpcyBjb21taXQgc2ltcGx5IGVuYWJsZXMgaXQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb21taXQgaGlzdG9yeSBvciBkbyBhIHF1aWNrIGdpdCBzZWFyY2ggd2l0aGluIHRoZSBtdDc2IHJlcG8gdG8gc2hlZCBzb21lIGxpZ2h0IG9uIHRoaXMuIFRoZSBoaXN0b3J5IHNob3VsZCB0ZWxsIG1lIGV4YWN0bHkgd2hlbiB0aGlzIGxpbWl0YXRpb24gd2FzIGludHJvZHVjZWQsIGFuZCBpZiBpdCB3YXMgbGlmdGVkIGR1ZSB0byBhIHNwZWNpZmljIGhhcmR3YXJlIGNoYW5nZSBvciBuZXcgZHJpdmVyIGNhcGFiaWxpdGllcy4gVGhhdCB3aWxsIGNvbmZpcm0gd2hhdCdzIHJlYWxseSBoYXBwZW5pbmcgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU3OTIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDM6MTEuMzA3MDM0NzY1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjAxNzk1NiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWN0aXZlX21vbml0b3JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDM6MTEuMzU5MDU5NDkxWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU4OTg4MDI3ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTVQ3Ni9NVDc5MnggVVNCIERyaXZlciBSZWFjaGFiaWxpdHkgQW5hbHlzaXMgZm9yIFN5emthbGxlcioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBpcyB0byBkZXRlcm1pbmUgaWYgdGhlIE1UNzYgYW5kIE1UNzkyeCBVU0IgZHJpdmVycyBhcmUgcmVhY2hhYmxlIGJ5IHN5emthbGxlci4gVGhlIGtleSBpcyB0aGF0IHN5emthbGxlciBjYW4gZW11bGF0ZSBVU0IgZGV2aWNlcyB1c2luZyBgc3l6X3VzYl9jb25uZWN0YCwgd2hpY2ggb2ZmZXJzIGEgcG90ZW50aWFsIGVudHJ5IHBvaW50LlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiB0aGVzZSBkcml2ZXJzIGFyZSBhY2Nlc3NpYmxlIHZpYSBhIHZpcnR1YWwgYnVzLCBzcGVjaWZpY2FsbHkgVVNCLCB3aXRoaW4gYSBzdGFuZGFyZCBzeXprYWxsZXIgZW52aXJvbm1lbnQuIFRoZSBwcmVzZW5jZSBvZiBgTVQ3Nl9DT1JFYCwgYE1UNzkyeF9MSUJgLCBgTVQ3OTIxVWAsIGBNVDc5MjVVYCwgYE1UNzZ4MFVgLCBgTVQ3NngyVWAsIGFuZCBgTVQ3NjYzVWAgcG9pbnRzIHRvIGEgcmVsZXZhbnQgZHJpdmVyIGxhbmRzY2FwZS5cblxuQSBxdWljayByZXZpZXcgb2YgYG10NzkyMXVfcHJvYmVgIGlzIGVzc2VudGlhbC4gVGhlIGRyaXZlciBpbml0aWFsaXplcyBhIGRldmljZSB2aWEgYG10NzkyeF9nZXRfbWFjODAyMTFfb3BzYCwgYWxsb2NhdGVzIG1lbW9yeSB1c2luZyBgbXQ3Nl9hbGxvY19kZXZpY2VgLCB0aGVuIGluaXRpYWxpemVzIHdpdGggYF9fbXQ3NnVfaW5pdGAuIFRoaXMgcHJvYmluZyBwcm9jZXNzIHRoZW4gaW50ZXJhY3RzIHdpdGggaGFyZHdhcmUgKGNoaXAgSUQsIHJldmlzaW9uKSBhbmQgaGFyZHdhcmUgcmVzb3VyY2VzLCB3aGljaCBzdWdnZXN0cyBhIGhhcmR3YXJlIGRlcGVuZGVuY2UgdGhhdCBuZWVkcyBjYXJlZnVsIGFuYWx5c2lzLiBJdCBhbHNvIGNhbGxzIGZ1bmN0aW9ucyBsaWtlIGBtdDc5Mnh1X21jdV9wb3dlcl9vbmAsIGBtdDc2dV9hbGxvY19tY3VfcXVldWVgLCBgbXQ3NnVfYWxsb2NfcXVldWVzYCwgYG10NzkyeHVfZG1hX2luaXRgLCBhbmQgZmluYWxseSByZWdpc3RlcnMgdGhlIGRldmljZSB2aWEgYG10NzkyMV9yZWdpc3Rlcl9kZXZpY2VgLiBUaGUgbGF0dGVyIGNhbGxzIGBtdDc5MnhfaW5pdF93aXBoeWAgYW5kIGBtdDc2X3JlZ2lzdGVyX2RldmljZWAsIGV2ZW50dWFsbHkgcmVhY2hpbmcgYG10NzZfcGh5X2luaXRgLlxuXG5UaGUgY3JpdGljYWwgcXVlc3Rpb24gaXMsIGRvZXMgdGhpcyByZWx5IG9uIGEgcmVhbCBVU0IgY29ubmVjdGlvbiwgb3IgaXMgaXQgYSB2aXJ0dWFsIGJ1cz8gVGhlIHJlbGV2YW50IGNyaXRlcmlhIGZvciBkZXRlcm1pbmluZyB3aGV0aGVyIHRoaXMgaXMgd29ydGggZnV6emluZyBhcmUgdGhlIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBjcml0ZXJpYS4gSW4gdGhlIHBvc2l0aXZlIGNyaXRlcmlhLCBkcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKGxpa2UgVVNCKSBhcmUgd29ydGggZnV6emluZy4gVGhlIG5lZ2F0aXZlIGNyaXRlcmlhIGdpdmUgZXhhbXBsZXMgb2Ygd2hhdCBpcyBub3Qgd29ydGggZnV6emluZywgc3VjaCBhcyB1bnJlYWNoYWJsZSBoYXJkd2FyZSwgdmVuZG9yLXNwZWNpZmljIGRldmljZXMsIGV0Yy5cblxuU2luY2UgVVNCIGlzIGEgdmlydHVhbCBidXMgaW4gdGhlIHN5emthbGxlciBjb250ZXh0IChsZXZlcmFnaW5nIGByYXdfZ2FkZ2V0YCAvIGB2aGNpYCksIGFuZCB0aGUgTVQ3NiBkcml2ZXJzIChgTVQ3NngwVWAsIGV0Yy4pIGFyZSBVU0IgZGV2aWNlIGRyaXZlcnMgaW4gdGhlIGtlcm5lbCwgSSBhbSBpbmNsaW5lZCB0byBjb25jbHVkZSB0aGF0IGl0IGlzIHJlYWNoYWJsZS4gVGhlIGZhY3QgdGhhdCBgbXQ3Nl9waHlfaW5pdGAgaXMgY2FsbGVkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gZm9yIGFsbCBNVDc2IGRldmljZXMsIGluY2x1ZGluZyB0aGUgVVNCIG9uZXMsIGFuZCBgbXQ3OTJ4X2luaXRfd2lwaHlgIGlzIGNhbGxlZCBmb3IgdGhlIE1UNzkyMS9NVDc5MjUgaW5jbHVkaW5nIFVTQiB2YXJpYW50cyBjb25maXJtcyBteSBhc3Nlc3NtZW50LiBGdXJ0aGVybW9yZSwgYWZ0ZXIgcmVnaXN0cmF0aW9uLCB0aGUgYGNmZzgwMjExIC8gbmw4MDIxMWAgaW50ZXJmYWNlcyBpbnRlcmFjdCB3aXRoIHRoZSB3aXBoeSBmZWF0dXJlcy5cblxuVGhlcmVmb3JlLCB0aGUgTVQ3NiAvIE1UNzkyeCBkcml2ZXJzIF9hcmVfIGxpa2VseSByZWFjaGFibGUgdmlhIFVTQiB3aXRoaW4gc3l6a2FsbGVyLlxuXG5UbyBjb25maXJtLCBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgYE1UNzZfQ09SRWAsIGBNVDc5MjFVYCwgZXRjLiwgYXJlIHN0YW5kYXJkIGRyaXZlcnMgKG5vdCBzb21lIHZlbmRvci1zcGVjaWZpYyBhYnN0cmFjdGlvbikgYnkgZXhhbWluaW5nIHRoZSBgS2NvbmZpZ2AgZmlsZXMgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ2AgYW5kIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY3MTIsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQzOjE3LjI1Nzg2NjIzNFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTQxMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0Y29uZmlnIE1UNzkyMV9DT01NT05cXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXHRzZWxlY3QgTVQ3OTJ4X0xJQlxcbiAgIDU6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICAgNjpcXHRcXG4gICA3OlxcdGNvbmZpZyBNVDc5MjFFXFxuICAgODpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxRSAoUENJZSkgc3VwcG9ydFxcXCJcXG4gICA5OlxcdFxcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXFxuICAxMDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAxMTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxRSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXFxuICAxNDpcXHRcXG4gIDE1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIE1UNzkyMVNcXG4gIDE4OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjFTIChTRElPKSBzdXBwb3J0XFxcIlxcbiAgMTk6XFx0XFx0c2VsZWN0IE1UNzZfU0RJT1xcbiAgMjA6XFx0XFx0c2VsZWN0IE1UNzkyMV9DT01NT05cXG4gIDIxOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDIyOlxcdFxcdGRlcGVuZHMgb24gTU1DXFxuICAyMzpcXHRcXHRoZWxwXFxuICAyNDpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjFTIDgwMi4xMWF4IDJ4MjoyU1Mgd2lyZWxlc3MgZGV2aWNlcy5cXG4gIDI1OlxcdFxcbiAgMjY6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiAgMjc6XFx0XFxuICAyODpcXHRjb25maWcgTVQ3OTIxVVxcbiAgMjk6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyMVUgKFVTQikgc3VwcG9ydFxcXCJcXG4gIDMwOlxcdFxcdHNlbGVjdCBNVDc5MnhfVVNCXFxuICAzMTpcXHRcXHRzZWxlY3QgTVQ3OTIxX0NPTU1PTlxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMzM6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gIDM0OlxcdFxcdGhlbHBcXG4gIDM1OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyMVUgODAyLjExYXggMngyOjJTUyB3aXJlbGVzcyBkZXZpY2VzLlxcbiAgMzY6XFx0XFxuICAzNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQzOjE3LjI1ODA2MzQ4M1oiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzc1MDE3MjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIE1lZGlhdGVrIFdpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVyIHNpdHVhdGlvbi4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGxvb2sgYXQgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSBhbGwgdGhlIGJ1aWxkIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhhdCBzcGVjaWZpYyBkcml2ZXIgc2hvdWxkIGJlIGRlZmluZWQuIEZyb20gdGhlIEtjb25maWcsIEkgY2FuIGRldGVybWluZSB3aGljaCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LCB3aGF0IG1vZHVsZXMgYXJlIGF2YWlsYWJsZSwgaG93IHRvIGVuYWJsZS9kaXNhYmxlIHNwZWNpZmljIGhhcmR3YXJlIHN1cHBvcnQsIGFuZCB3aGF0IG90aGVyIGtlcm5lbCBjb21wb25lbnRzIGl0IG1pZ2h0IGRlcGVuZCBvbi4gVGhpcyB3aWxsIGdpdmUgbWUgYSBzb2xpZCBiYXNlIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgZHJpdmVyIGlzIHN0cnVjdHVyZWQgYW5kIGhvdyB0byBjb250cm9sIGl0IGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy4gSXQncyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBkcml2ZXIgaW50ZWdyYXRlcyBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gS25vd2luZyBob3cgaXQncyBjb25maWd1cmVkIGlzIGtleSB0byBtYWtpbmcgYW55IHByb2dyZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTA3NCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDM6MTkuMDMzMDg0MTEyWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3NTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0Y29uZmlnIE1UNzZfQ09SRVxcbiAgIDM6XFx0XFx0dHJpc3RhdGVcXG4gICA0OlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE1UNzZfTEVEU1xcbiAgIDc6XFx0XFx0Ym9vbFxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcXG4gICA5OlxcdFxcdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IE1UNzZfQ09SRT1MRURTX0NMQVNTXFxuICAxMDpcXHRcXHRkZWZhdWx0IHlcXG4gIDExOlxcdFxcbiAgMTI6XFx0Y29uZmlnIE1UNzZfVVNCXFxuICAxMzpcXHRcXHR0cmlzdGF0ZVxcbiAgMTQ6XFx0XFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcXG4gIDE1OlxcdFxcbiAgMTY6XFx0Y29uZmlnIE1UNzZfU0RJT1xcbiAgMTc6XFx0XFx0dHJpc3RhdGVcXG4gIDE4OlxcdFxcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBNVDc2eDAyX0xJQlxcbiAgMjE6XFx0XFx0dHJpc3RhdGVcXG4gIDIyOlxcdFxcdHNlbGVjdCBNVDc2X0NPUkVcXG4gIDIzOlxcdFxcbiAgMjQ6XFx0Y29uZmlnIE1UNzZ4MDJfVVNCXFxuICAyNTpcXHRcXHR0cmlzdGF0ZVxcbiAgMjY6XFx0XFx0c2VsZWN0IE1UNzZfVVNCXFxuICAyNzpcXHRcXG4gIDI4OlxcdGNvbmZpZyBNVDc2X0NPTk5BQ19MSUJcXG4gIDI5OlxcdFxcdHRyaXN0YXRlXFxuICAzMDpcXHRcXHRzZWxlY3QgTVQ3Nl9DT1JFXFxuICAzMTpcXHRcXG4gIDMyOlxcdGNvbmZpZyBNVDc5MnhfTElCXFxuICAzMzpcXHRcXHR0cmlzdGF0ZVxcbiAgMzQ6XFx0XFx0c2VsZWN0IE1UNzZfQ09OTkFDX0xJQlxcbiAgMzU6XFx0XFxuICAzNjpcXHRjb25maWcgTVQ3OTJ4X1VTQlxcbiAgMzc6XFx0XFx0dHJpc3RhdGVcXG4gIDM4OlxcdFxcdHNlbGVjdCBNVDc2X1VTQlxcbiAgMzk6XFx0XFxuICA0MDpcXHRjb25maWcgTVQ3Nl9OUFVcXG4gIDQxOlxcdFxcdHRyaXN0YXRlXFxuICA0MjpcXHRcXHRkZXBlbmRzIG9uIE5FVF9BSVJPSEFfTlBVPXkgfHwgTVQ3Nl9DT1JFPU5FVF9BSVJPSEFfTlBVXFxuICA0MzpcXHRcXG4gIDQ0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZ1xcXCJcXG4gIDQ1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZ1xcXCJcXG4gIDQ2OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZ1xcXCJcXG4gIDQ3OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZ1xcXCJcXG4gIDQ4OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZ1xcXCJcXG4gIDQ5OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZ1xcXCJcXG4gIDUwOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDM6MTkuMDMzMTUzMDQyWiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3MzE2MjQzNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNZWRpYXRlayBXaXJlbGVzcyBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIHRoZSBoZWFydCBvZiB0aGUgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVyJ3MgY29uZmlndXJhdGlvbi4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGdldHRpbmcgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQncyBiZWVuIGRlZmluZWQgYW5kIGhvdyB0aGUgb3B0aW9ucyBhcmUgc3RydWN0dXJlZC4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBkZXBlbmRlbmNpZXMsIGRlZmF1bHRzLCBhbmQgYW55IHVudXN1YWwgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBiZSB3b3J0aCBmdXJ0aGVyIGludmVzdGlnYXRpb24uIEknbGwgbmVlZCB0byBzZWUgaG93IHRoZSBmZWF0dXJlcyBhcmUgZW5hYmxlZC9kaXNhYmxlZCBhdCBjb21waWxlIHRpbWUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdmFyaWFibGVzIGFyZSBnb2luZyB0byBiZSBzZXQgYnkgdGhlIGtlcm5lbCBidWlsZCwgYW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhvc2UgdmFyaWFibGVzIGZvciB0aGUgcGVyZm9ybWFuY2UgYW5kIHJvYnVzdG5lc3Mgb2YgdGhlIGRyaXZlci4gTGV0J3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIGluIHRoaXMgY29uZmlndXJhdGlvbiBmaWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDAxMCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDM6MjAuNzY0NzgwMjE0WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjA5NzI4NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTVQ3NlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRla1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDU5NDggbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTVQ3NjAxVSlcXHQrPSBtdDc2MDF1L1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX01UNzZfQ09SRSlcXHQrPSBtdDc2L1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjI6Y29uZmlnIE1UNzZfQ09SRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6Njpjb25maWcgTVQ3Nl9MRURTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTctXFx0Ym9vbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzo4OlxcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjk6XFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTVQ3Nl9DT1JFPUxFRFNfQ0xBU1NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTAtXFx0ZGVmYXVsdCB5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoxMjpjb25maWcgTVQ3Nl9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTMtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MTQ6XFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjE2OmNvbmZpZyBNVDc2X1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTctXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MTg6XFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjIwOmNvbmZpZyBNVDc2eDAyX0xJQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyMjpcXHRzZWxlY3QgTVQ3Nl9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyNDpjb25maWcgTVQ3NngwMl9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMjUtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MjY6XFx0c2VsZWN0IE1UNzZfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyODpjb25maWcgTVQ3Nl9DT05OQUNfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTI5LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjMwOlxcdHNlbGVjdCBNVDc2X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTMyPWNvbmZpZyBNVDc5MnhfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMzLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjM0OlxcdHNlbGVjdCBNVDc2X0NPTk5BQ19MSUJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTM2PWNvbmZpZyBNVDc5MnhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTM3LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjM4OlxcdHNlbGVjdCBNVDc2X1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NDA6Y29uZmlnIE1UNzZfTlBVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTQxLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjQyOlxcdGRlcGVuZHMgb24gTkVUX0FJUk9IQV9OUFU9eSB8fCBNVDc2X0NPUkU9TkVUX0FJUk9IQV9OUFVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNDMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZToyOm9iai0kKENPTkZJR19NVDc2X0NPUkUpICs9IG10NzYub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTVQ3Nl9VU0IpICs9IG10NzYtdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX01UNzZfU0RJTykgKz0gbXQ3Ni1zZGlvLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX01UNzZ4MDJfTElCKSArPSBtdDc2eDAyLWxpYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19NVDc2eDAyX1VTQikgKz0gbXQ3NngwMi11c2Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfTVQ3Nl9DT05OQUNfTElCKSArPSBtdDc2LWNvbm5hYy1saWIub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtOC1vYmotJChDT05GSUdfTVQ3OTJ4X0xJQikgKz0gbXQ3OTJ4LWxpYi5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTExPW10NzYteSA6PSBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6MTU6aWZkZWYgQ09ORklHX01UNzZfTlBVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZToxNjojIENPTkZJR19NVDc2X05QVSBpcyB0cmlzdGF0ZSB0byBzaW1wbGlmeSBkZXBlbmRlbmN5IHRyYWNraW5nLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtMTctIyBidXQgaXQgYmVoYXZlcyBhcyBhIGJvb2wgc3ltYm9sIGhlcmUuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTQzPW10NzkyeC11c2IteSA6PSBtdDc5MnhfdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX01UNzZ4MF9DT01NT04pICs9IG10NzZ4MC9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjQ2Om9iai0kKENPTkZJR19NVDc2eDJfQ09NTU9OKSArPSBtdDc2eDIvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo0NzpvYmotJChDT05GSUdfTVQ3NjAzRSkgKz0gbXQ3NjAzL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6NDg6b2JqLSQoQ09ORklHX01UNzYxNV9DT01NT04pICs9IG10NzYxNS9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTQ5LW9iai0kKENPTkZJR19NVDc5MTVFKSArPSBtdDc5MTUvXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2NoYW5uZWwuYz0zMTk9dm9pZCBtdDc2X3JvY19jb21wbGV0ZShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvY2hhbm5lbC5jLTMyOS1cXHRpZiAocGh5LVxcdTAwM2VjaGFuY3R4IFxcdTAwMjZcXHUwMDI2IHBoeS1cXHUwMDNlbWFpbl9jaGFuZGVmLmNoYW4gXFx1MDAyNlxcdTAwMjYgcGh5LVxcdTAwM2VvZmZjaGFubmVsIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9jaGFubmVsLmM6MzMwOlxcdCAgICAhdGVzdF9iaXQoTVQ3Nl9NQ1VfUkVTRVQsIFxcdTAwMjZkZXYtXFx1MDAzZXBoeS5zdGF0ZSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2NoYW5uZWwuYy0zMzEtXFx0XFx0X19tdDc2X3NldF9jaGFubmVsKHBoeSwgXFx1MDAyNnBoeS1cXHUwMDNlbWFpbl9jaGFuZGVmLCBmYWxzZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2NoYW5uZWwuYy0zMzYtXFx0cGh5LVxcdTAwM2Vyb2NfbGluayA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9jaGFubmVsLmM6MzM3OlxcdGlmICghdGVzdF9iaXQoTVQ3Nl9NQ1VfUkVTRVQsIFxcdTAwMjZkZXYtXFx1MDAzZXBoeS5zdGF0ZSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9jaGFubmVsLmMtMzM4LVxcdFxcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKHBoeS1cXHUwMDNlaHcpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9jaGFubmVsLmM9MzYzPWludCBtdDc2X3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9jaGFubmVsLmMtMzgyLVxcdGlmIChwaHktXFx1MDAzZXJvY192aWYgfHwgZGV2LVxcdTAwM2VzY2FuLnBoeSA9PSBwaHkgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2NoYW5uZWwuYzozODM6XFx0ICAgIHRlc3RfYml0KE1UNzZfTUNVX1JFU0VULCBcXHUwMDI2ZGV2LVxcdTAwM2VwaHkuc3RhdGUpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9jaGFubmVsLmMtMzg0LVxcdFxcdHJldCA9IC1FQlVTWTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmM9NjM0PW10NzZfZG1hX3R4X3F1ZXVlX3NrYl9yYXcoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3F1ZXVlICpxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy02MzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzo2NDA6XFx0aWYgKHRlc3RfYml0KE1UNzZfTUNVX1JFU0VULCBcXHUwMDI2ZGV2LVxcdTAwM2VwaHkuc3RhdGUpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmMtNjQxLVxcdFxcdGdvdG8gZXJyb3I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jPTY2Nz1tdDc2X2RtYV90eF9xdWV1ZV9za2Ioc3RydWN0IG10NzZfcGh5ICpwaHksIHN0cnVjdCBtdDc2X3F1ZXVlICpxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYy02ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuYzo2ODU6XFx0aWYgKHRlc3RfYml0KE1UNzZfUkVTRVQsIFxcdTAwMjZwaHktXFx1MDAzZXN0YXRlKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5jLTY4Ni1cXHRcXHRnb3RvIGZyZWVfc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaC00LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmg6NTojaWZuZGVmIF9fTVQ3Nl9ETUFfSFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmg6NjojZGVmaW5lIF9fTVQ3Nl9ETUFfSFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmgtNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmg9NTI9bXQ3Nl9kbWFfaGFuZGxlX3JlYWQoc3RydWN0IG10NzZfcXVldWUgKnEsIHUzMiBvZmZzZXQsIHUzMiAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaC02MC0jZW5kaWZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oOjYxOiNpZiBJU19FTkFCTEVEKENPTkZJR19NVDc2X05QVSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oLTYyLVxcdGlmIChxLVxcdTAwM2VmbGFncyBcXHUwMDI2IE1UX1FGTEFHX05QVSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9kbWEuaD04MD1tdDc2X2RtYV9oYW5kbGVfd3JpdGUoc3RydWN0IG10NzZfcXVldWUgKnEsIHUzMiBvZmZzZXQsIHUzMiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2RtYS5oLTg4LSNlbmRpZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmg6ODk6I2lmIElTX0VOQUJMRUQoQ09ORklHX01UNzZfTlBVKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZG1hLmgtOTAtXFx0aWYgKHEtXFx1MDAzZWZsYWdzIFxcdTAwMjYgTVRfUUZMQUdfTlBVKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jPTE0PWVudW0gbXQ3Nl9za3VfdHlwZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYzoxNTpcXHRNVDc2X1NLVV9SQVRFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6MTY6XFx0TVQ3Nl9TS1VfQkFDS09GRixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjE3OlxcdE1UNzZfU0tVX0JBQ0tPRkZfQkZfT0ZGU0VULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtMTgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM9MzMwPW10NzZfYXBwbHlfYXJyYXlfbGltaXQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHM4ICpwd3IsIHNpemVfdCBwd3JfbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy0zNDUtXFx0XFx0c3dpdGNoICh0eXBlKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYzozNDY6XFx0XFx0Y2FzZSBNVDc2X1NLVV9SQVRFOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtMzQ3LVxcdFxcdFxcdGRlbHRhID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtMzUwLVxcdFxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6MzUxOlxcdFxcdGNhc2UgTVQ3Nl9TS1VfQkFDS09GRl9CRl9PRkZTRVQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy0zNTItXFx0XFx0XFx0YmFja29mZl9jaGFpbl9pZHggKz0gMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTM1My1cXHRcXHRcXHRmYWxsdGhyb3VnaDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjM1NDpcXHRcXHRjYXNlIE1UNzZfU0tVX0JBQ0tPRkY6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy0zNTUtXFx0XFx0XFx0ZGVsdGEgPSBtdDc2X3R4X3Bvd2VyX3BhdGhfZGVsdGEobl9jaGFpbnMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy0zNjktXFx0XFx0Lyogb25seSBjb25zaWRlciBiYWNrb2ZmIHZhbHVlIGZvciB0aGUgY29uZmlndXJlZCBjaGFpbiBudW1iZXIgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjM3MDpcXHRcXHRpZiAodHlwZSAhPSBNVDc2X1NLVV9SQVRFIFxcdTAwMjZcXHUwMDI2IG5fY2hhaW5zICE9IGJhY2tvZmZfbl9jaGFpbnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy0zNzEtXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jPTM3OD1tdDc2X2FwcGx5X211bHRpX2FycmF5X2xpbWl0KHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzOCAqcHdyLCBzaXplX3QgcHdyX2xlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtNDA2LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6NDA3OlxcdFxcdGlmICghaXNfbXQ3OTl4KGRldikgXFx1MDAyNlxcdTAwMjYgdHlwZSA9PSBNVDc2X1NLVV9CQUNLT0ZGIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy00MDgtXFx0XFx0ICAgIGkgXFx1MDAzZSBjb25uYWMyX2JhY2tvZmZfcnVfaWR4KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6NDA5OlxcdFxcdFxcdHR5cGUgPSBNVDc2X1NLVV9CQUNLT0ZGX0JGX09GRlNFVDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTQxMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM9NDI2PXM4IG10NzZfZ2V0X3JhdGVfcG93ZXJfbGltaXRzKHN0cnVjdCBtdDc2X3BoeSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy00NzctXFx0bXQ3Nl9hcHBseV9hcnJheV9saW1pdChkZXYsIGRlc3QtXFx1MDAzZWNjaywgQVJSQVlfU0laRShkZXN0LVxcdTAwM2VjY2spLCB2YWwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYzo0Nzg6XFx0XFx0XFx0ICAgICAgIHRhcmdldF9wb3dlciwgdHhzX2RlbHRhLCBcXHUwMDI2bWF4X3Bvd2VyLCBuX2NoYWlucywgTVQ3Nl9TS1VfUkFURSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy00NzktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTQ4MS1cXHRtdDc2X2FwcGx5X2FycmF5X2xpbWl0KGRldiwgZGVzdC1cXHUwMDNlb2ZkbSwgQVJSQVlfU0laRShkZXN0LVxcdTAwM2VvZmRtKSwgdmFsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6NDgyOlxcdFxcdFxcdCAgICAgICB0YXJnZXRfcG93ZXIsIHR4c19kZWx0YSwgXFx1MDAyNm1heF9wb3dlciwgbl9jaGFpbnMsIE1UNzZfU0tVX1JBVEUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtNDgzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy00ODYtXFx0XFx0XFx0XFx0ICAgICBBUlJBWV9TSVpFKGRlc3QtXFx1MDAzZW1jcyksIHZhbCwgbGVuLCB0YXJnZXRfcG93ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYzo0ODc6XFx0XFx0XFx0XFx0ICAgICB0eHNfZGVsdGEsIFxcdTAwMjZtYXhfcG93ZXIsIG5fY2hhaW5zLCBNVDc2X1NLVV9SQVRFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTQ4OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtNDkxLVxcdFxcdFxcdFxcdCAgICAgQVJSQVlfU0laRShkZXN0LVxcdTAwM2VydSksIHZhbCwgbGVuLCB0YXJnZXRfcG93ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYzo0OTI6XFx0XFx0XFx0XFx0ICAgICB0eHNfZGVsdGEsIFxcdTAwMjZtYXhfcG93ZXIsIG5fY2hhaW5zLCBNVDc2X1NLVV9SQVRFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTQ5My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtNDk1LVxcdG10NzZfYXBwbHlfYXJyYXlfbGltaXQoZGV2LCBkZXN0LVxcdTAwM2VwYXRoLmNjaywgQVJSQVlfU0laRShkZXN0LVxcdTAwM2VwYXRoLmNjayksIHZhbCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjQ5NjpcXHRcXHRcXHQgICAgICAgdGFyZ2V0X3Bvd2VyLCB0eHNfZGVsdGEsIFxcdTAwMjZtYXhfcG93ZXIsIG5fY2hhaW5zLCBNVDc2X1NLVV9CQUNLT0ZGKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTQ5Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtNDk5LVxcdG10NzZfYXBwbHlfYXJyYXlfbGltaXQoZGV2LCBkZXN0LVxcdTAwM2VwYXRoLm9mZG0sIEFSUkFZX1NJWkUoZGVzdC1cXHUwMDNlcGF0aC5vZmRtKSwgdmFsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6NTAwOlxcdFxcdFxcdCAgICAgICB0YXJnZXRfcG93ZXIsIHR4c19kZWx0YSwgXFx1MDAyNm1heF9wb3dlciwgbl9jaGFpbnMsIE1UNzZfU0tVX0JBQ0tPRkYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtNTAxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy01MDQtXFx0XFx0XFx0ICAgICAgIHRhcmdldF9wb3dlciwgdHhzX2RlbHRhLCBcXHUwMDI2bWF4X3Bvd2VyLCBuX2NoYWlucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjUwNTpcXHRcXHRcXHQgICAgICAgTVQ3Nl9TS1VfQkFDS09GRl9CRl9PRkZTRVQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtNTA2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy01MDktXFx0XFx0XFx0XFx0ICAgICBBUlJBWV9TSVpFKGRlc3QtXFx1MDAzZXBhdGgucnUpLCB2YWwsIGxlbiwgdGFyZ2V0X3Bvd2VyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6NTEwOlxcdFxcdFxcdFxcdCAgICAgdHhzX2RlbHRhLCBcXHUwMDI2bWF4X3Bvd2VyLCBuX2NoYWlucywgTVQ3Nl9TS1VfQkFDS09GRik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy01MTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTUxNC1cXHRcXHRcXHRcXHQgICAgIEFSUkFZX1NJWkUoZGVzdC1cXHUwMDNlcGF0aC5ydV9iZiksIHZhbCwgbGVuLCB0YXJnZXRfcG93ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYzo1MTU6XFx0XFx0XFx0XFx0ICAgICB0eHNfZGVsdGEsIFxcdTAwMjZtYXhfcG93ZXIsIG5fY2hhaW5zLCBNVDc2X1NLVV9CQUNLT0ZGKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTUxNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz01NTA9aW50IG10NzZfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBib29sIHZodCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy01NzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjU3NzpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfTVQ3Nl9MRURTKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy01NzgtXFx0XFx0cmV0ID0gbXQ3Nl9sZWRfaW5pdChwaHkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTU5My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6NTk0OlxcdHNldF9iaXQoTVQ3Nl9TVEFURV9SRUdJU1RFUkVELCBcXHUwMDI2cGh5LVxcdTAwM2VzdGF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTU5NS1cXHRwaHktXFx1MDAzZWRldi1cXHUwMDNlcGh5c1twaHktXFx1MDAzZWJhbmRfaWR4XSA9IHBoeTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz02MDE9dm9pZCBtdDc2X3VucmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTYwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6NjA1OlxcdGlmICghdGVzdF9iaXQoTVQ3Nl9TVEFURV9SRUdJU1RFUkVELCBcXHUwMDI2cGh5LVxcdTAwM2VzdGF0ZSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTYwNi1cXHRcXHRyZXR1cm47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTYwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6NjA4OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19NVDc2X0xFRFMpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy02MDktXFx0XFx0bXQ3Nl9sZWRfY2xlYW51cChwaHkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTc0Nz1pbnQgbXQ3Nl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYsIGJvb2wgdmh0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTc4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6Nzg5OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19NVDc2X0xFRFMpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTc5MC1cXHRcXHRyZXQgPSBtdDc2X2xlZF9pbml0KHBoeSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNzk5LVxcdFdBUk5fT04obXQ3Nl93b3JrZXJfc2V0dXAoaHcsIFxcdTAwMjZkZXYtXFx1MDAzZXR4X3dvcmtlciwgTlVMTCwgXFxcInR4XFxcIikpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo4MDA6XFx0c2V0X2JpdChNVDc2X1NUQVRFX1JFR0lTVEVSRUQsIFxcdTAwMjZwaHktXFx1MDAzZXN0YXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODAxLVxcdHNjaGVkX3NldF9maWZvX2xvdyhkZXYtXFx1MDAzZXR4X3dvcmtlci50YXNrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz04MDc9dm9pZCBtdDc2X3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTgxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6ODExOlxcdGlmICghdGVzdF9iaXQoTVQ3Nl9TVEFURV9SRUdJU1RFUkVELCBcXHUwMDI2ZGV2LVxcdTAwM2VwaHkuc3RhdGUpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04MTItXFx0XFx0cmV0dXJuO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy04MTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjgxNDpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfTVQ3Nl9MRURTKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtODE1LVxcdFxcdG10NzZfbGVkX2NsZWFudXAoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz04OTE9c3RhdGljIHZvaWQgbXQ3Nl9yeF9yZWxlYXNlX2Ftc2R1KHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBlbnVtIG10NzZfcnhxX2lkIHEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtOTI4LVxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzo5Mjk6XFx0aWYgKG10NzZfcXVldWVfaXNfd2VkX3Jyb19kYXRhKHJ4cSkgXFx1MDAyNlxcdTAwMjYgZGV2LVxcdTAwM2Vod3Jyb19tb2RlID09IE1UNzZfSFdSUk9fVjMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTkzMC1cXHRcXHRxID0gTVRfUlhRX1JST19JTkQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9OTU4PXZvaWQgbXQ3Nl9yeChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgZW51bSBtdDc2X3J4cV9pZCBxLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTk2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6OTYzOlxcdGlmICghdGVzdF9iaXQoTVQ3Nl9TVEFURV9SVU5OSU5HLCBcXHUwMDI2cGh5LVxcdTAwM2VzdGF0ZSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtOTY0LVxcdFxcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy05NjgtI2lmZGVmIENPTkZJR19OTDgwMjExX1RFU1RNT0RFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjk2OTpcXHRpZiAocGh5LVxcdTAwM2V0ZXN0LnN0YXRlID09IE1UNzZfVE1fU1RBVEVfUlhfRlJBTUVTKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTk3MC1cXHRcXHRwaHktXFx1MDAzZXRlc3Qucnhfc3RhdHMucGFja2V0c1txXSsrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTEwNDc9aW50IF9fbXQ3Nl9zZXRfY2hhbm5lbChzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSwgc3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICpjaGFuZGVmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTEwNTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjEwNTc6XFx0c2V0X2JpdChNVDc2X1JFU0VULCBcXHUwMDI2cGh5LVxcdTAwM2VzdGF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTEwNTgtXFx0d2FpdF9ldmVudF90aW1lb3V0KGRldi1cXHUwMDNldHhfd2FpdCwgIW10NzZfaGFzX3R4X3BlbmRpbmcocGh5KSwgdGltZW91dCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTA3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTA3NzpcXHRjbGVhcl9iaXQoTVQ3Nl9SRVNFVCwgXFx1MDAyNnBoeS1cXHUwMDNlc3RhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xMDc4LVxcdG10NzZfd29ya2VyX2VuYWJsZShcXHUwMDI2ZGV2LVxcdTAwM2V0eF93b3JrZXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE2NjY9aW50IG10NzZfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE2OTEtXFx0ICAgIG5ld19zdGF0ZSA9PSBJRUVFODAyMTFfU1RBX0FTU09DKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxNjkyOlxcdFxcdGV2ID0gTVQ3Nl9TVEFfRVZFTlRfQVNTT0M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE2OTMtXFx0ZWxzZSBpZiAob2xkX3N0YXRlID09IElFRUU4MDIxMV9TVEFfQVNTT0MgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTY5NC1cXHRcXHQgbmV3X3N0YXRlID09IElFRUU4MDIxMV9TVEFfQVVUSE9SSVpFRClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTY5NTpcXHRcXHRldiA9IE1UNzZfU1RBX0VWRU5UX0FVVEhPUklaRTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTY5Ni1cXHRlbHNlIGlmIChvbGRfc3RhdGUgPT0gSUVFRTgwMjExX1NUQV9BU1NPQyBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNjk3LVxcdFxcdCBuZXdfc3RhdGUgPT0gSUVFRTgwMjExX1NUQV9BVVRIKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxNjk4OlxcdFxcdGV2ID0gTVQ3Nl9TVEFfRVZFTlRfRElTQVNTT0M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE2OTktXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE3ODI9dm9pZCBtdDc2X3djaWRfYWRkX3BvbGwoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE3ODMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxNzg0OlxcdGlmICh0ZXN0X2JpdChNVDc2X01DVV9SRVNFVCwgXFx1MDAyNmRldi1cXHUwMDNlcGh5LnN0YXRlKSB8fCAhd2NpZC1cXHUwMDNlc3RhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xNzg1LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz0xOTY5PXZvaWQgbXQ3Nl9zd19zY2FuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE5NzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjE5NzQ6XFx0c2V0X2JpdChNVDc2X1NDQU5OSU5HLCBcXHUwMDI2cGh5LVxcdTAwM2VzdGF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE5NzUtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE5Nzg9dm9pZCBtdDc2X3N3X3NjYW5fY29tcGxldGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTk4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTk4MjpcXHRjbGVhcl9iaXQoTVQ3Nl9TQ0FOTklORywgXFx1MDAyNnBoeS1cXHUwMDNlc3RhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0xOTgzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz0yMDc4PWVudW0gbXQ3Nl9kZnNfc3RhdGUgbXQ3Nl9waHlfZGZzX3N0YXRlKHN0cnVjdCBtdDc2X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTIwODMtXFx0aWYgKGRldi1cXHUwMDNlcmVnaW9uID09IE5MODAyMTFfREZTX1VOU0VUIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjIwODQ6XFx0ICAgIHRlc3RfYml0KE1UNzZfU0NBTk5JTkcsIFxcdTAwMjZwaHktXFx1MDAzZXN0YXRlKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMjA4NS1cXHRcXHRyZXR1cm4gTVRfREZTX1NUQVRFX0RJU0FCTEVEO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTIzMzc9c3RhdGljIHZvaWQgbXQ3Nl9iZWFjb25fbW9uX2l0ZXIodm9pZCAqZGF0YSwgdTggKm1hYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy0yMzYwLVxcdFxcdFxcdCAgICAgICBSRUFEX09OQ0UobWxpbmstXFx1MDAzZWJlYWNvbl9tb25fbGFzdCkgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoyMzYxOlxcdFxcdFxcdCAgICAgICBNVDc2X0JFQUNPTl9NT05fTUFYX01JU1MgKiBtbGluay1cXHUwMDNlYmVhY29uX21vbl9pbnRlcnZhbCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTIzNjItXFx0XFx0XFx0aWVlZTgwMjExX2JlYWNvbl9sb3NzKHZpZik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jPTMyPXN0cnVjdCBza19idWZmICptdDc2X21jdV9nZXRfcmVzcG9uc2Uoc3RydWN0IG10NzZfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jLTQyLVxcdFxcdFxcdCAgICghc2tiX3F1ZXVlX2VtcHR5KFxcdTAwMjZkZXYtXFx1MDAzZW1jdS5yZXNfcSkgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jOjQzOlxcdFxcdFxcdCAgICB0ZXN0X2JpdChNVDc2X01DVV9SRVNFVCwgXFx1MDAyNmRldi1cXHUwMDNlcGh5LnN0YXRlKSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tY3UuYy00NC1cXHRcXHRcXHQgICB0aW1lb3V0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmM9NzI9aW50IG10NzZfbWN1X3NrYl9zZW5kX2FuZF9nZXRfbXNnKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tY3UuYy04Ni1cXHRpZiAoKG10NzZfaXNfbW1pbyhkZXYpIFxcdTAwMjZcXHUwMDI2IGF0b21pY19yZWFkKFxcdTAwMjZkZXYtXFx1MDAzZWJ1c19odW5nKSkgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jOjg3OlxcdCAgICAobXQ3Nl9pc19zZGlvKGRldikgXFx1MDAyNlxcdTAwMjYgdGVzdF9iaXQoTVQ3Nl9SRVNFVCwgXFx1MDAyNmRldi1cXHUwMDNlcGh5LnN0YXRlKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmMtODgtXFx0ICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXYtXFx1MDAzZWJ1c19odW5nKSkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmMtMTE3LVxcdFxcdHNrYiA9IG10NzZfbWN1X2dldF9yZXNwb25zZShkZXYsIGV4cGlyZXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmM6MTE4OlxcdFxcdGlmICghc2tiIFxcdTAwMjZcXHUwMDI2ICF0ZXN0X2JpdChNVDc2X01DVV9SRVNFVCwgXFx1MDAyNmRldi1cXHUwMDNlcGh5LnN0YXRlKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmMtMTE5LVxcdFxcdCAgICBvcmlnX3NrYiBcXHUwMDI2XFx1MDAyNiByZXRyeSsrIFxcdTAwM2MgZGV2LVxcdTAwM2VtY3Vfb3BzLVxcdTAwM2VtYXhfcmV0cnkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbW1pby5jPTExMD12b2lkIG10NzZfbW1pb19pbml0KHN0cnVjdCBtdDc2X2RldiAqZGV2LCB2b2lkIF9faW9tZW0gKnJlZ3MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21taW8uYy0xMTktXFx0XFx0LnJkX3JwID0gbXQ3Nl9tbWlvX3JkX3JwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbW1pby5jOjEyMDpcXHRcXHQudHlwZSA9IE1UNzZfQlVTX01NSU8sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tbWlvLmMtMTIxLVxcdH07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC01LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjY6I2lmbmRlZiBfX01UNzZfSFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjc6I2RlZmluZSBfX01UNzZfSFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0yOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDozMDojZGVmaW5lIE1UNzZfVE9LRU5fRlJFRV9USFJcXHQ2NFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTMxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NDU6I2RlZmluZSBNVF9XRURfUV9UWChfbilcXHRcXHRfX01UX1dFRF9RKE1UNzZfV0VEX1FfVFgsIF9uKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjQ2OiNkZWZpbmUgTVRfV0VEX1FfUlgoX24pXFx0XFx0X19NVF9XRURfUShNVDc2X1dFRF9RX1JYLCBfbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo0NzojZGVmaW5lIE1UX1dFRF9RX1RYRlJFRVxcdFxcdF9fTVRfV0VEX1EoTVQ3Nl9XRURfUV9UWEZSRUUsIDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NDg6I2RlZmluZSBNVF9XRURfUlJPX1FfREFUQShfbilcXHRfX01UX1dFRF9SUk9fUShNVDc2X1dFRF9SUk9fUV9EQVRBLCBfbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo0OTojZGVmaW5lIE1UX1dFRF9SUk9fUV9NU0RVX1BHKF9uKVxcdF9fTVRfV0VEX1JST19RKE1UNzZfV0VEX1JST19RX01TRFVfUEcsIF9uKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUwOiNkZWZpbmUgTVRfV0VEX1JST19RX0lORFxcdF9fTVRfV0VEX1JST19RKE1UNzZfV0VEX1JST19RX0lORCwgMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MTojZGVmaW5lIE1UX1dFRF9SUk9fUV9SWERNQURfQ1xcdF9fTVRfV0VEX1JST19RKE1UNzZfV0VEX1JST19RX1JYRE1BRF9DLCAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTUyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNTUtXFx0XFx0XFx0XFx0IEZJRUxEX1BSRVAoTVRfUUZMQUdfV0VEX1JJTkcsIF9uKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1NjojZGVmaW5lIE1UX05QVV9RX1RYKF9uKVxcdFxcdF9fTVRfTlBVX1EoTVQ3Nl9XRURfUV9UWCwgX24pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTc6I2RlZmluZSBNVF9OUFVfUV9SWChfbilcXHRcXHRfX01UX05QVV9RKE1UNzZfV0VEX1FfUlgsIF9uKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjU4OiNkZWZpbmUgTVRfTlBVX1FfVFhGUkVFKF9uKVxcdChGSUVMRF9QUkVQKE1UX1FGTEFHX1dFRF9UWVBFLCBNVDc2X1dFRF9RX1RYRlJFRSkgfCBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNTktXFx0XFx0XFx0XFx0IEZJRUxEX1BSRVAoTVRfUUZMQUdfV0VEX1JJTkcsIF9uKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTczPWVudW0gbXQ3Nl9idXNfdHlwZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NzQ6XFx0TVQ3Nl9CVVNfTU1JTyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo3NTpcXHRNVDc2X0JVU19VU0IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NzY6XFx0TVQ3Nl9CVVNfU0RJTyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC03Ny19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9Nzk9ZW51bSBtdDc2X3dlZF90eXBlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo4MDpcXHRNVDc2X1dFRF9RX1RYLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjgxOlxcdE1UNzZfV0VEX1FfVFhGUkVFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjgyOlxcdE1UNzZfV0VEX1FfUlgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6ODM6XFx0TVQ3Nl9XRURfUlJPX1FfREFUQSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo4NDpcXHRNVDc2X1dFRF9SUk9fUV9NU0RVX1BHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjg1OlxcdE1UNzZfV0VEX1JST19RX0lORCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo4NjpcXHRNVDc2X1dFRF9SUk9fUV9SWERNQURfQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC04Ny19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9ODk9ZW51bSBtdDc2X2h3cnJvX21vZGUge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjkwOlxcdE1UNzZfSFdSUk9fT0ZGLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjkxOlxcdE1UNzZfSFdSUk9fVjMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6OTI6XFx0TVQ3Nl9IV1JST19WM18xLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTkzLX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD05NT1zdHJ1Y3QgbXQ3Nl9idXNfb3BzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMTA6I2RlZmluZSBtdDc2X2lzX3VzYihkZXYpICgoZGV2KS1cXHUwMDNlYnVzLVxcdTAwM2V0eXBlID09IE1UNzZfQlVTX1VTQilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMTE6I2RlZmluZSBtdDc2X2lzX21taW8oZGV2KSAoKGRldiktXFx1MDAzZWJ1cy1cXHUwMDNldHlwZSA9PSBNVDc2X0JVU19NTUlPKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjExMjojZGVmaW5lIG10NzZfaXNfc2RpbyhkZXYpICgoZGV2KS1cXHUwMDNlYnVzLVxcdTAwM2V0eXBlID09IE1UNzZfQlVTX1NESU8pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTEzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTgwPWVudW0gbXQ3Nl9kZnNfc3RhdGUge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE4NzojZGVmaW5lIE1UNzZfUk5SX1NDQU5fTUFYX0JTU0lEUyAgICAgICAxNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE4OC1zdHJ1Y3QgbXQ3Nl9zY2FuX3Jucl9wYXJhbSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTg5OlxcdHU4IGJzc2lkW01UNzZfUk5SX1NDQU5fTUFYX0JTU0lEU11bRVRIX0FMRU5dO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE5MDpcXHR1OCBjaGFubmVsW01UNzZfUk5SX1NDQU5fTUFYX0JTU0lEU107XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTkxLVxcdHU4IHJhbmRvbV9tYWNbRVRIX0FMRU5dO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MzU5PWVudW0gbXQ3Nl93Y2lkX2ZsYWdzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTM2Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDozNjc6I2RlZmluZSBNVDc2X05fV0NJRFMgMTA4OFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjM2ODojZGVmaW5lIE1UNzZfQkVBQ09OX01PTl9NQVhfTUlTU1xcdDdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0zNjktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD01MDM9ZW51bSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTA0OlxcdE1UNzZfU1RBVEVfSU5JVElBTElaRUQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTA1OlxcdE1UNzZfU1RBVEVfUkVHSVNURVJFRCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MDY6XFx0TVQ3Nl9TVEFURV9SVU5OSU5HLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUwNzpcXHRNVDc2X1NUQVRFX01DVV9SVU5OSU5HLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUwODpcXHRNVDc2X1NDQU5OSU5HLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUwOTpcXHRNVDc2X0hXX1NDQU5OSU5HLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUxMDpcXHRNVDc2X0hXX1NDSEVEX1NDQU5OSU5HLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUxMTpcXHRNVDc2X1JFU1RBUlQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTEyOlxcdE1UNzZfUkVTRVQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTEzOlxcdE1UNzZfTUNVX1JFU0VULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUxNDpcXHRNVDc2X1JFTU9WRUQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTE1OlxcdE1UNzZfUkVBRElOR19TVEFUUyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MTY6XFx0TVQ3Nl9TVEFURV9QT1dFUl9PRkYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTE3OlxcdE1UNzZfU1RBVEVfU1VTUEVORCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MTg6XFx0TVQ3Nl9TVEFURV9ST0MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTE5OlxcdE1UNzZfU1RBVEVfUE0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NTIwOlxcdE1UNzZfU1RBVEVfV0VEX1JFU0VULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTUyMS19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9NTIzPWVudW0gbXQ3Nl9zdGFfZXZlbnQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUyNDpcXHRNVDc2X1NUQV9FVkVOVF9BU1NPQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo1MjU6XFx0TVQ3Nl9TVEFfRVZFTlRfQVVUSE9SSVpFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjUyNjpcXHRNVDc2X1NUQV9FVkVOVF9ESVNBU1NPQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC01MjctfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTY2ND1zdHJ1Y3QgbXQ3Nl91c2Ige1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtNjg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjY4ODojZGVmaW5lIE1UNzZTX1hNSVRfQlVGX1NaXFx0MHgzZmUwMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjY4OTojZGVmaW5lIE1UNzZTX05VTV9UWF9FTlRSSUVTXFx0MjU2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NjkwOiNkZWZpbmUgTVQ3NlNfTlVNX1JYX0VOVFJJRVNcXHQ1MTJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC02OTEtc3RydWN0IG10NzZfc2RpbyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD03ODc9c3RydWN0IG10NzZfdGVzdG1vZGVfZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC03ODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6NzkwOlxcdHUzMiBwYXJhbV9zZXRbRElWX1JPVU5EX1VQKE5VTV9NVDc2X1RNX0FUVFJTLCAzMildO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTc5MS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqdHhfc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9OTIzPXN0cnVjdCBtdDc2X2RldiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC05ODUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6OTg2OlxcdHUzMiB3Y2lkX21hc2tbRElWX1JPVU5EX1VQKE1UNzZfTl9XQ0lEUywgMzIpXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC05ODctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC05OTAtXFx0c3RydWN0IG10NzZfd2NpZCBnbG9iYWxfd2NpZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDo5OTE6XFx0c3RydWN0IG10NzZfd2NpZCBfX3JjdSAqd2NpZFtNVDc2X05fV0NJRFNdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTk5Mi1cXHRzdHJ1Y3QgbGlzdF9oZWFkIHdjaWRfbGlzdDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE0OTg9c3RhdGljIGlubGluZSBib29sIG10NzZfdGVzdG1vZGVfZW5hYmxlZChzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE1MDAtI2lmZGVmIENPTkZJR19OTDgwMjExX1RFU1RNT0RFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTUwMTpcXHRyZXR1cm4gcGh5LVxcdTAwM2V0ZXN0LnN0YXRlICE9IE1UNzZfVE1fU1RBVEVfT0ZGO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE1MDItI2Vsc2VcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE2NTU9aW50IG10NzZfdGVzdG1vZGVfYWxsb2Nfc2tiKHN0cnVjdCBtdDc2X3BoeSAqcGh5LCB1MzIgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNjU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE2NTc6I2lmIElTX0VOQUJMRUQoQ09ORklHX01UNzZfTlBVKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE2NTgtdm9pZCBtdDc2X25wdV9jaGVja19wcGUoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xNzM2PXN0YXRpYyBpbmxpbmUgaW50IG10NzZfbnB1X3NlbmRfdHhyeF9hZGRyKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgaWZpbmRleCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3NDEtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE3NDI6I2VuZGlmIC8qIENPTkZJR19NVDc2X05QVSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3NDMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xNzcwPXN0YXRpYyBpbmxpbmUgdm9pZCBtdDc2X3Rlc3Rtb2RlX3Jlc2V0KHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBib29sIGRpc2FibGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xNzcyLSNpZmRlZiBDT05GSUdfTkw4MDIxMV9URVNUTU9ERVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE3NzM6XFx0ZW51bSBtdDc2X3Rlc3Rtb2RlX3N0YXRlIHN0YXRlID0gTVQ3Nl9UTV9TVEFURV9JRExFO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTc3NTpcXHRpZiAoZGlzYWJsZSB8fCBwaHktXFx1MDAzZXRlc3Quc3RhdGUgPT0gTVQ3Nl9UTV9TVEFURV9PRkYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTc3NjpcXHRcXHRzdGF0ZSA9IE1UNzZfVE1fU1RBVEVfT0ZGO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE3NzctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xOTc3PXN0YXRpYyBpbmxpbmUgYm9vbCBtdDc2X3F1ZXVlX2lzX3dlZF90eF9mcmVlKHN0cnVjdCBtdDc2X3F1ZXVlICpxKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTk3OS1cXHRyZXR1cm4gKHEtXFx1MDAzZWZsYWdzIFxcdTAwMjYgTVRfUUZMQUdfV0VEKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE5ODA6XFx0ICAgICAgIEZJRUxEX0dFVChNVF9RRkxBR19XRURfVFlQRSwgcS1cXHUwMDNlZmxhZ3MpID09IE1UNzZfV0VEX1FfVFhGUkVFO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE5ODEtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTk4OD1zdGF0aWMgaW5saW5lIGJvb2wgbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvX2luZChzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE5OTAtXFx0cmV0dXJuIG10NzZfcXVldWVfaXNfd2VkX3JybyhxKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE5OTE6XFx0ICAgICAgIEZJRUxEX0dFVChNVF9RRkxBR19XRURfVFlQRSwgcS1cXHUwMDNlZmxhZ3MpID09IE1UNzZfV0VEX1JST19RX0lORDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xOTkyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE5OTQ9c3RhdGljIGlubGluZSBib29sIG10NzZfcXVldWVfaXNfd2VkX3Jyb19yeGRtYWRfYyhzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE5OTYtXFx0cmV0dXJuIG10NzZfcXVldWVfaXNfd2VkX3JybyhxKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjE5OTc6XFx0ICAgICAgIEZJRUxEX0dFVChNVF9RRkxBR19XRURfVFlQRSwgcS1cXHUwMDNlZmxhZ3MpID09IE1UNzZfV0VEX1JST19RX1JYRE1BRF9DO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE5OTgtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MjAwMD1zdGF0aWMgaW5saW5lIGJvb2wgbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvX2RhdGEoc3RydWN0IG10NzZfcXVldWUgKnEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0yMDAyLVxcdHJldHVybiBtdDc2X3F1ZXVlX2lzX3dlZF9ycm8ocSkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoyMDAzOlxcdCAgICAgICBGSUVMRF9HRVQoTVRfUUZMQUdfV0VEX1RZUEUsIHEtXFx1MDAzZWZsYWdzKSA9PSBNVDc2X1dFRF9SUk9fUV9EQVRBO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTIwMDQtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MjAwNj1zdGF0aWMgaW5saW5lIGJvb2wgbXQ3Nl9xdWV1ZV9pc193ZWRfcnJvX21zZHVfcGcoc3RydWN0IG10NzZfcXVldWUgKnEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0yMDA5LVxcdCAgICAgICBGSUVMRF9HRVQoTVRfUUZMQUdfV0VEX1RZUEUsIHEtXFx1MDAzZWZsYWdzKSA9PVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjIwMTA6XFx0ICAgICAgIE1UNzZfV0VEX1JST19RX01TRFVfUEc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMjAxMS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0yMDEzPXN0YXRpYyBpbmxpbmUgYm9vbCBtdDc2X3F1ZXVlX2lzX3dlZF9yeChzdHJ1Y3QgbXQ3Nl9xdWV1ZSAqcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTIwMTUtXFx0cmV0dXJuIChxLVxcdTAwM2VmbGFncyBcXHUwMDI2IE1UX1FGTEFHX1dFRCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoyMDE2OlxcdCAgICAgICBGSUVMRF9HRVQoTVRfUUZMQUdfV0VEX1RZUEUsIHEtXFx1MDAzZWZsYWdzKSA9PSBNVDc2X1dFRF9RX1JYO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTIwMTctfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MjAyOT1zdGF0aWMgaW5saW5lIGJvb2wgbXQ3Nl9xdWV1ZV9pc19ucHVfdHgoc3RydWN0IG10NzZfcXVldWUgKnEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0yMDMxLVxcdHJldHVybiBtdDc2X3F1ZXVlX2lzX25wdShxKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjIwMzI6XFx0ICAgICAgIEZJRUxEX0dFVChNVF9RRkxBR19XRURfVFlQRSwgcS1cXHUwMDNlZmxhZ3MpID09IE1UNzZfV0VEX1FfVFg7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQzOjIwLjkyNTc2MDc4MloiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1OTU5OTIxMTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIE1lZGlhVGVrIFdpcmVsZXNzIERyaXZlciBDaGFuZ2VzIGZvciBGdXp6aW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgcG90ZW50aWFsIGZ1enppbmcgdGFyZ2V0cywgYW5kIHRoaXMgcGF0Y2ggaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBhdHRlbnRpb24uXG5cbkZpcnN0LCBJIG5lZWQgdG8ga25vdyB3aGVyZSB3ZSdyZSB3b3JraW5nLiBJIHNlZSBgbXQ3Nl9waHlfaW5pdGAgYW5kIGBtdDc5MnhfaW5pdF93aXBoeWAgYXJlIHRoZSBrZXkgZnVuY3Rpb25zLiBTcGVjaWZpY2FsbHksIGBtdDc2X3BoeV9pbml0YCBpcyBhIHN0YXRpYyBmdW5jdGlvbiB3aXRoaW4gYG1hYzgwMjExLmNgLCBjYWxsZWQgYnkgYG10NzZfcmVnaXN0ZXJfcGh5YCBhbmQgYG10NzZfcmVnaXN0ZXJfZGV2aWNlYC4gYG10NzkyeF9pbml0X3dpcGh5YCBpcyBpbiBgbXQ3OTJ4X2NvcmUuY2AuIFRoZXNlIGFyZSBjcnVjaWFsIGVudHJ5IHBvaW50cyBpbnRvIHRoZSBNZWRpYVRlayB3aXJlbGVzcyBkcml2ZXIgc3RhY2suXG5cblRoZSBwYXRjaCdzIGNvcmUgbW9kaWZpY2F0aW9uIHNlZW1zIHRvIGludm9sdmUgZW5hYmxpbmcgdGhlIGBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1JgIGZlYXR1cmUuIEl0IGFmZmVjdHMgTWVkaWFUZWsgd2lyZWxlc3MgZHJpdmVycyBkaXJlY3RseSwgZXNwZWNpYWxseSBVU0IgdmFyaWFudHMgbGlrZSBgbXQ3OTIxdWAsIGBtdDc2eDB1YCwgYW5kIG90aGVycyDigJMgdGhlIG9uZXMgdGhhdCBhcmUgbGlrZWx5IGFjY2Vzc2libGUgaW4gYSB2aXJ0dWFsaXplZCBVU0IgZ2FkZ2V0IGVudmlyb25tZW50LiAgV2hlbiB0aGVzZSBVU0IgZGV2aWNlcyBhcmUgY29ubmVjdGVkLCB0aGUgbWVudGlvbmVkIGZ1bmN0aW9ucyAoYG10NzZfcGh5X2luaXRgIGFuZCBgbXQ3OTJ4X2luaXRfd2lwaHlgKSBhcmUgZXhlY3V0ZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLiBUaGlzIHNldHMgdGhlIHN0YWdlIGZvciBjcmVhdGluZyBhbmQgY29uZmlndXJpbmcgYWN0aXZlIG1vbml0b3IgbW9kZSBpbnRlcmZhY2VzIHVzaW5nIG5ldGxpbmsgKG5sODAyMTEpLlxuXG5UaGVyZWZvcmUsIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCB0aGlzIGxvb2tzIHByb21pc2luZy4gTXkgYXNzZXNzbWVudCBpczpcblxuKiAgICoqV29ydGhGdXp6aW5nOiBUcnVlLioqIFRoZSBtb2RpZmljYXRpb24gZGlyZWN0bHkgZW5hYmxlcyBuZXcgZnVuY3Rpb25hbGl0eSByZWxhdGVkIHRvIGFjdGl2ZSBtb25pdG9yaW5nLCB3aGljaCBpbmNyZWFzZXMgdGhlIGF0dGFjayBzdXJmYWNlIGZvciBmdXp6aW5nLlxuKiAgICoqRm9jdXMgU3ltYm9sczoqKiBNeSBmb2N1cyBzaG91bGQgYmUgb24gdGhlIGVudHJ5IHBvaW50czpcbiAgICAqICAgYG10NzkyeF9pbml0X3dpcGh5YFxuICAgICogICBgbXQ3Nl9yZWdpc3Rlcl9kZXZpY2VgXG4gICAgKiAgIGBtdDc2X3JlZ2lzdGVyX3BoeWBcbiogICAqKkVuYWJsZUNvbmZpZ3M6KiogSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcmlnaHQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBzZXQuICBUaGUgcmVsZXZhbnQgY29uZmlncyBhcmU6IGBNVDc2X0NPUkVgLCBgTVQ3OTJ4X0xJQmAsIGBNVDc5MjFVYCwgYE1BQzgwMjExYCwgYENGRzgwMjExYC4gU3BlY2lmaWNhbGx5LCBgTVQ3Nl9DT1JFYCBzZWVtcyB0byBiZSBzZWxlY3RlZCBieSB0aGluZ3MgbGlrZSBgTVQ3Nl9DT05OQUNfTElCYCwgYE1UNzZ4MDJfTElCYC4gYE1UNzkyMVVgIHNlbGVjdHMgYE1UNzkyeF9VU0JgIGFuZCBgTVQ3OTIxX0NPTU1PTmAuXG4qICAgRG91YmxlLWNoZWNraW5nIHRoaXMsIEkgY29uZmlybSB0aGF0IHRoZSBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgIGFib3ZlIGFyZSBjb3JyZWN0LlxuXG5NeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiBUaGUgcGF0Y2ggcmVtb3ZlcyBhIGxpbWl0YXRpb24gYW5kIHVuY29uZGl0aW9uYWxseSBlbmFibGVzIHRoZSBhY3RpdmUgbW9uaXRvciBmZWF0dXJlLiBUaGlzIG1lYW5zIHVzZXJzcGFjZSBjYW4gY29uZmlndXJlIGFjdGl2ZSBtb25pdG9yIGludGVyZmFjZXMgdmlhIG5sODAyMTEgb24gTWVkaWFUZWsgd2lyZWxlc3MgZGV2aWNlcywgZXNwZWNpYWxseSB0aGUgVVNCLWJhc2VkIG9uZXMsIHNvIHRoaXMgaXMgd29ydGggZnV6emluZy5cbkFscmlnaHQsIHRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggdGhpcyBpbmZvcm1hdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ5MzksIk91dHB1dFRva2VucyI6MTg3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQzOjI2Ljg4NTY4NTMyWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg2MTQwMDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzZfQ09SRVwiLFxuICAgIFwiTVQ3OTJ4X0xJQlwiLFxuICAgIFwiTVQ3OTIxVVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTJ4X2luaXRfd2lwaHlcIixcbiAgICBcIm10NzZfcmVnaXN0ZXJfZGV2aWNlXCIsXG4gICAgXCJtdDc2X3JlZ2lzdGVyX3BoeVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgdGhlIG5vX2FjdGl2ZV9tb25pdG9yIGZsYWcgYW5kIHVuY29uZGl0aW9uYWxseSBlbmFibGVzIE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiBmb3IgTWVkaWFUZWsgbXQ3NiAvIG10NzkyeCB3aXJlbGVzcyBkcml2ZXJzLiBUaGVzZSBkcml2ZXJzIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uIChlLmcuIG10NzkyMXUpLCBhbGxvd2luZyBhY3RpdmUgbW9uaXRvciBpbnRlcmZhY2UgY3JlYXRpb24gYW5kIGhhbmRsaW5nIHZpYSBubDgwMjExLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzZfQ09SRVwiLFxuICAgIFwiTVQ3OTJ4X0xJQlwiLFxuICAgIFwiTVQ3OTIxVVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTJ4X2luaXRfd2lwaHlcIixcbiAgICBcIm10NzZfcmVnaXN0ZXJfZGV2aWNlXCIsXG4gICAgXCJtdDc2X3JlZ2lzdGVyX3BoeVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgdGhlIG5vX2FjdGl2ZV9tb25pdG9yIGZsYWcgYW5kIHVuY29uZGl0aW9uYWxseSBlbmFibGVzIE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiBmb3IgTWVkaWFUZWsgbXQ3NiAvIG10NzkyeCB3aXJlbGVzcyBkcml2ZXJzLiBUaGVzZSBkcml2ZXJzIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uIChlLmcuIG10NzkyMXUpLCBhbGxvd2luZyBhY3RpdmUgbW9uaXRvciBpbnRlcmZhY2UgY3JlYXRpb24gYW5kIGhhbmRsaW5nIHZpYSBubDgwMjExLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwNDo0MzoyNi45NjQzMDczODRaIiwiU2VxIjozNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzY2NzY5MjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDM6MjYuOTY0ODQwMDg0WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTM3NjYyMzE1MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGVuYWJsZXMgdGhlIE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiBmZWF0dXJlIGZsYWcgdW5jb25kaXRpb25hbGx5IGZvciBhbGwgbXQ3NiB3aXJlbGVzcyBkZXZpY2VzIGJ5IHJlbW92aW5nIHRoZSBgbm9fYWN0aXZlX21vbml0b3JgIGZsYWcgZnJvbSBgc3RydWN0IG10NzZfcGh5YCBhbmQgdGhlIG92ZXJyaWRlIGluIGBtdDc5MnhfaW5pdF93aXBoeWAuXFxuXFxuVGhpcyBjaGFuZ2Ugb25seSBtb2RpZmllcyBhIGZlYXR1cmUgYml0bWFzayBmbGFnIG9uIHRoZSB3aXBoeSBkZXZpY2UgYW5kIHJlbW92ZXMgYSBzdHJ1Y3QgZmllbGQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgcGFkZGluZy9maWVsZHMgY29waWVkIHRvIHVzZXJzcGFjZSwgb3IgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBvciBpbmZvcm1hdGlvbiBsZWFrIHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiBmdXp6aW5nLCBhbmQgc3RhbmRhcmQgS0FTQU4vc3l6a2FsbGVyIHRlc3RpbmcgaXMgc3VmZmljaWVudC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwYjYzNDUzZGI4NzAxZjg5MTIxMjVkNWFjZmMyNTBkNTQ1MDdiZWNhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBTZXAgNSAwNDo0MjoxNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuY1xuaW5kZXggYWJiZTY1Y2JjZDg5ZS4uZjkyMjc3NzcwNDg4YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jXG5AQCAtNDM5LDkgKzQzOSw4IEBAIG10NzZfcGh5X2luaXQoc3RydWN0IG10NzZfcGh5ICpwaHksIHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuIFx0U0VUX0lFRUU4MDIxMV9ERVYoaHcsIGRldi1cdTAwM2VkZXYpO1xuIFx0U0VUX0lFRUU4MDIxMV9QRVJNX0FERFIoaHcsIHBoeS1cdTAwM2VtYWNhZGRyKTtcbiBcbi1cdHdpcGh5LVx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BUF9NT0RFX0NIQU5fV0lEVEhfQ0hBTkdFO1xuLVx0aWYgKCFwaHktXHUwMDNlbm9fYWN0aXZlX21vbml0b3IpXG4tXHRcdHdpcGh5LVx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUjtcbitcdHdpcGh5LVx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiB8XG4rXHRcdFx0ICAgTkw4MDIxMV9GRUFUVVJFX0FQX01PREVfQ0hBTl9XSURUSF9DSEFOR0U7XG4gXHR3aXBoeS1cdTAwM2VmbGFncyB8PSBXSVBIWV9GTEFHX0hBU19DSEFOTkVMX1NXSVRDSCB8XG4gXHRcdFx0V0lQSFlfRkxBR19TVVBQT1JUU19URExTIHxcbiBcdFx0XHRXSVBIWV9GTEFHX0FQX1VBUFNEO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmhcbmluZGV4IDYyYjQxYzhiYjdjMGQuLjYxZWYxYjgwZmViODUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmhcbkBAIC04NzMsNyArODczLDYgQEAgc3RydWN0IG10NzZfcGh5IHtcbiBcdHN0cnVjdCBjZmc4MDIxMV9jaGFuX2RlZiBtYWluX2NoYW5kZWY7XG4gXHRib29sIG9mZmNoYW5uZWw7XG4gXHRib29sIHJhZGFyX2VuYWJsZWQ7XG4tXHRib29sIG5vX2FjdGl2ZV9tb25pdG9yO1xuIFxuIFx0c3RydWN0IGRlbGF5ZWRfd29yayByb2Nfd29yaztcbiBcdHN0cnVjdCBpZWVlODAyMTFfdmlmICpyb2NfdmlmO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuY1xuaW5kZXggMGFkMzNmNzRjMjI4NS4uODM3ZDdhZjk4NGU4NiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jXG5AQCAtODIwLDcgKzgyMCw2IEBAIGludCBtdDc5MnhfaW5pdF93aXBoeShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbiBcbiBcdHdpcGh5LVx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9TQ0hFRF9TQ0FOX1JBTkRPTV9NQUNfQUREUiB8XG4gXHRcdFx0ICAgTkw4MDIxMV9GRUFUVVJFX1NDQU5fUkFORE9NX01BQ19BRERSO1xuLVx0cGh5LVx1MDAzZW10NzYtXHUwMDNlbm9fYWN0aXZlX21vbml0b3IgPSB0cnVlO1xuIFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX1NFVF9TQ0FOX0RXRUxMKTtcbiBcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9CRUFDT05fUkFURV9MRUdBQ1kpO1xuIFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0JFQUNPTl9SQVRFX0hUKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQzOjI2Ljk2NDg0MTEzNFoiLCJTZXEiOjM5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MzczMzMzMDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTVQ3NiBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgdGFyZ2V0aW5nIHRoZSBNZWRpYVRlayB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgYG10NzZgIGZhbWlseS4gTGV0J3MgYnJlYWsgZG93biB0aGUgY2hhbmdlcy4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSBtb2RpZmljYXRpb24gdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuY2AuIFRoZXkndmUgcmVtb3ZlZCBhIGNvbmRpdGlvbiByZWxhdGVkIHRvIGBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1JgIGFuZCBgTkw4MDIxMV9GRUFUVVJFX0FQX01PREVfQ0hBTl9XSURUSF9DSEFOR0VgLiBTcGVjaWZpY2FsbHksIHRoYXQgYGlmICghcGh5LVx1MDAzZW5vX2FjdGl2ZV9tb25pdG9yKWAgY2hlY2sgaXMgZ29uZS4gUmlnaHQgYXdheSwgdGhhdCBzYXlzICpzb21ldGhpbmcqIGFib3V0IGFjdGl2ZSBtb25pdG9yIHN1cHBvcnQgaXMgY2hhbmdpbmcgYWNyb3NzIHRoZSBib2FyZCwgb3IgcGVyaGFwcyBmb3IgKmFsbCogTWVkaWFUZWsgZGV2aWNlcyBub3cuXG5cblRoZW4sIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oYCwgdGhleSd2ZSBjb21wbGV0ZWx5IHJlbW92ZWQgdGhlIGBib29sIG5vX2FjdGl2ZV9tb25pdG9yO2AgbWVtYmVyIGZyb20gdGhlIGBzdHJ1Y3QgbXQ3Nl9waHlgLiBUaGF0J3MgYSBzaWduaWZpY2FudCBpbmRpY2F0b3IuIEVzc2VudGlhbGx5LCB0aGUgZHJpdmVyIHNlZW1zIHRvIGhhdmUgbG9zdCB0aGUgY2FwYWJpbGl0eSB0byBleHBsaWNpdGx5IGRpc2FibGUgYWN0aXZlIG1vbml0b3JpbmcuXG5cbkFuZCBsYXN0bHksIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmNgLCB0aGV5J3ZlIHJlbW92ZWQgdGhlIGxpbmUgdGhhdCB3YXMgc2V0dGluZyBgcGh5LVx1MDAzZW10NzYtXHUwMDNlbm9fYWN0aXZlX21vbml0b3IgPSB0cnVlO2Agd2l0aGluIHRoZSBgbXQ3OTJ4X2luaXRfd2lwaHlgIGZ1bmN0aW9uLiBUaGlzIGNvbmZpcm1zIHRoYXQgYSBzcGVjaWZpYyBtb2RlbCB3YXMgYmVpbmcgZXhwbGljaXRseSB0b2xkICpub3QqIHRvIHVzZSBhY3RpdmUgbW9uaXRvci4gVGhpcyBpcyBhbGwgY29taW5nIHRvZ2V0aGVyIG5vdyAtIHRoZXkncmUgbWFraW5nIGEgc3Ryb25nIGNoYW5nZSBpbiB0aGUgZGVmYXVsdCBiZWhhdmlvci5cblxuTm93LCBJIG5lZWQgdG8gY2hlY2sgZm9yIGFueSBkZWVwZXIgaW1wbGljYXRpb25zLiBXZSdsbCBuZWVkIHRvIHJ1biBhIHF1aWNrIGdyZXAgdG8gdW5kZXJzdGFuZCBob3cgYGFjdGl2ZV9tb25pdG9yYCBpcyBoYW5kbGVkIGluIGBtdDc2YCwgbm93IHRoYXQgaXQncyBwb3RlbnRpYWxseSBlbmFibGVkIGZvciBhbGwgaW5zdGFuY2VzLiBBcmUgdGhlcmUgYW55IGFzc3VtcHRpb25zIGJhc2VkIG9uIGl0cyBwcmV2aW91cyBkaXNhYmxlZCBzdGF0ZT8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgcmVncmVzc2lvbnM/IExldCdzIGdldCB0aGF0IGdyZXBwZXIgZmlyZWQgdXAgYW5kIHNlZSB3aGF0IGl0IHJldmVhbHMuIFRoaXMgcGF0Y2ggY291bGQgYmUgYSBiaWcgZGVhbCBmb3IgdGhvc2UgdXNpbmcgdGhlc2UgY2hpcHMgaW4gbW9uaXRvciBtb2RlIG9yIGluIGFjY2VzcyBwb2ludCBtb2RlLCBhbmQgd2UgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzaWRlIGVmZmVjdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MjAsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwNDo0MzozMi4zMzgxOTU2NzVaIiwiU2VxIjo0MCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MDI5NzE2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9NDI3PW10NzZfcGh5X2luaXQoc3RydWN0IG10NzZfcGh5ICpwaHksIHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTQ0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6NDQyOlxcdHdpcGh5LVxcdTAwM2VmZWF0dXJlcyB8PSBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1IgfFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy00NDMtXFx0XFx0XFx0ICAgTkw4MDIxMV9GRUFUVVJFX0FQX01PREVfQ0hBTl9XSURUSF9DSEFOR0U7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQzOjMyLjYyODUwMDMwNFoiLCJTZXEiOjQxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODY0MzM4NzYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBjb2RlLlxuXG4qKkludmVzdGlnYXRpbmcgYSBOZXR3b3JrIFdpcmVsZXNzIFBhdGNoKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhpcyBwYXRjaCwgb3IgcGVyaGFwcyBJJ20gdHJ5aW5nIHRvIGdldCBhIGJldHRlciBncmFzcCBvbiB3aGF0IHRoaXMgYE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUmAgZmVhdHVyZSBhY3R1YWxseSAqZG9lcyouIE15IGluc3RpbmN0IGlzIHRvIHRyYWNlIGl0cyB1c2FnZS4gSSdsbCBpbml0aWF0ZSBhIHNlYXJjaCBhY3Jvc3MgdGhlIHJlbGV2YW50IGtlcm5lbCBkaXJlY3Rvcmllcy4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBiZSBsb29raW5nIGluIGBuZXQvd2lyZWxlc3MvYCBhbmQgYG5ldC9tYWM4MDIxMS9gLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGltcGxlbWVudGF0aW9uLCBpdHMgdXNlIGNhc2VzLCBhbmQgbGlrZWx5LCBhbnkgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9uIG9yIEFQSSBjYWxscy4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIGhvdyB0aGlzIGZlYXR1cmUgaW1wYWN0cyB0aGUgd2lyZWxlc3Mgc3Vic3lzdGVtIGFuZCBob3BlZnVsbHkgZGV0ZXJtaW5lIHdoeSB0aGlzIHBhdGNoIHdhcyBtYWRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzc5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6NDM6MzQuNDkyODQzNDE2WiIsIlNlcSI6NDIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mzc2ODMzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTQ5MzQ9c3RhdGljIGludCBubDgwMjExX3BhcnNlX21vbl9vcHRpb25zKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNDk1OC1cXHRpZiAocGFyYW1zLVxcdTAwM2VmbGFncyBcXHUwMDI2IE1PTklUT1JfRkxBR19BQ1RJVkUgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjQ5NTk6XFx0ICAgICEocmRldi1cXHUwMDNld2lwaHkuZmVhdHVyZXMgXFx1MDAyNiBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1IpKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNDk2MC1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDA0OjQzOjM0LjU2NjYxNzk2WiIsIlNlcSI6NDMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYxNjQ0MzM0MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQWN0aXZlIE1vbml0b3IgRmVhdHVyZSBGbGFnIENoYW5nZSoqXG5cbk9rYXksIHNvIHRoaXMgY2hhbmdlIGluIHRoZSBtdDc2IHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IHJlZ2FyZGluZyBgTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SYCwgaGFzIGNhdWdodCBteSBleWUuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGFib3V0IGVuYWJsaW5nIHRoZSBgTU9OSVRPUl9GTEFHX0FDVElWRWAgZmxhZyB3aGVuIGNyZWF0aW5nIG9yIHNldHRpbmcgdXAgbW9uaXRvciBpbnRlcmZhY2VzLCB3aGljaCBpcyBhIGRlcGFydHVyZSBmcm9tIGhvdyBtdDc5MnggdXNlZCB0byBoYW5kbGUgaXQsIHdoZXJlIGl0IGRpc2FibGVkIGFjdGl2ZSBtb25pdG9yLiBOb3csIGFsbCBtdDc2IGRldmljZXMgYXJlIGdvaW5nIHRvIGFkdmVydGlzZSB0aGlzIGZlYXR1cmUuXG5cbk15IGltbWVkaWF0ZSBjb25jZXJuLCBhcyBhbHdheXMgd2l0aCB0aGVzZSBraW5kcyBvZiBjaGFuZ2VzLCBpcyB3aGV0aGVyIHRoaXMgaW50cm9kdWNlcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIExldCdzIGJyZWFrIGl0IGRvd246XG5cbiogICAqKktlcm5lbCAtXHUwMDNlIFVzZXJzcGFjZToqKiBNeSBmaXJzdCB0aG91Z2h0IGlzIGFsd2F5cywgYXJlIHdlIHNlbmRpbmcgYW55IHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2VyIHNwYWNlPyBXZSBoYXZlIHRvIGNvbnNpZGVyIGhvdyBkYXRhIGlzIGNvbW11bmljYXRlZCAoY29weVxcX3RvXFxfdXNlciwgbmV0bGluaywgaW9jdGxzLCBldGMuKS4gQnV0IG5vLCBpbiB0aGlzIGNhc2UsIGl0J3MganVzdCBhIGZlYXR1cmUgZmxhZyDigJMgYE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUmAgYmVpbmcgYWRkZWQgdG8gYHdpcGh5LVx1MDAzZWZlYXR1cmVzYC4gSXQncyBhIHNpbXBsZSBhZHZlcnRpc2VtZW50LiBObyBkaXJlY3QgZGF0YSBleHBvc3VyZS5cblxuKiAgICoqQ29uZGl0aW9uYWwgTG9naWM6KiogVGhlIHNlY29uZCB0aGluZyBJIGNoZWNrIGlzIGJyYW5jaGluZyBiYXNlZCBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhpcyBpcyBhIGJpZyBhcmVhIGZvciBwb3RlbnRpYWwgaXNzdWVzLiBUaGUgZ29vZCBuZXdzIGlzIHRoYXQgdGhlIGNoYW5nZSAqcmVtb3ZlcyogYSBmaWVsZCBgbm9fYWN0aXZlX21vbml0b3JgIGZyb20gYHN0cnVjdCBtdDc2X3BoeWAuIFRoaXMgc2ltcGxpZmllcyB0aGluZ3MsIGFjdHVhbGx5LiBObyBuZXcgY29uZGl0aW9uYWwgbG9naWMgaXMgYmVpbmcgaW50cm9kdWNlZCwgYW5kIGV4aXN0aW5nIGxvZ2ljIGlzIGJlaW5nIGNsZWFuZWQgdXAuXG5cbiogICAqKkRhdGEgU3RydWN0dXJlIEluaXRpYWxpemF0aW9uOioqIFdoYXQgYWJvdXQgYWxsb2NhdGVkIGRhdGEgc3RydWN0dXJlcz8gQ291bGQgd2UgYmUgbGVhdmluZyBzb21lIGZpZWxkcyB1bmluaXRpYWxpemVkIGFuZCB0aGVuIHJlYWRpbmcgdGhlbSBsYXRlcj8gVGhpcyBjb3VsZCBsZWFkIHRvIGluZm9ybWF0aW9uIGxlYWtzIG9yIGV2ZW4gY3Jhc2hlcy4gTm9wZS4gVGhlIGRyaXZlciBpc24ndCBpbnRyb2R1Y2luZyBhbnkgY29tcGxleCBkYXRhIHN0cnVjdHVyZSBpbml0aWFsaXphdGlvbiBpbiB0aGlzIHBhdGNoLlxuXG4qICAgKipCb3VuZHMgQ2hlY2tzIGFuZCBMb2dpYzoqKiBXaGF0IGFib3V0IHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3dzLCBhbmQgdGhlIGxpa2U/IFRoZSBjaGFuZ2UgZG9lc24ndCBtb2RpZnkgYW55IGJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGFjY2VzcyBleGlzdGluZyBidWZmZXJzIGluIGEgd2F5IHRoYXQgbWlnaHQgaW50cm9kdWNlIHVuaW5pdGlhbGl6ZWQgYnl0ZXMuXG5cbk5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGFjdGl2ZSBtb25pdG9yIG1vZGUgaXRzZWxmLCB3aXRoIHRoZSBuZXcgZmVhdHVyZSBmbGFnLCBtaWdodCBoYXZlIGFueSBpbXBsaWNhdGlvbnMuIERvZXMgdGhlIG10NzYgZHJpdmVyIHRyYW5zbWl0IEFDS3Mgb3IgYW55dGhpbmcgdGhhdCBtaWdodCBwb3RlbnRpYWxseSByZWFkIHVuaW5pdGlhbGl6ZWQgZGF0YT8gSXQgbG9va3MgbGlrZSB0aGUgYWN0aXZlIG1vbml0b3IgbW9kZSwgaW5jbHVkaW5nIHNlbmRpbmcgQUNLcywgaXMgaGFuZGxlZCBpbiBoYXJkd2FyZSBvciBmaXJtd2FyZS4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLlxuXG5Tbywgc3VtbWluZyBpdCB1cCwgdGhpcyBhcHBlYXJzIHRvIGJlIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBmZWF0dXJlIGZsYWcgZW5hYmxlbWVudCBhbmQgZmllbGQgY2xlYW51cCBpbiB0aGUgbXQ3NiB3aXJlbGVzcyBkcml2ZXIuIEl0J3MgZXNzZW50aWFsbHkgcmVtb3ZpbmcgYSBmbGFnIGFuZCBhZGRpbmcgYW5vdGhlciBmZWF0dXJlLiBUaGVyZSBhcmUgbm8gb2J2aW91cyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgbm8gaW5mb3JtYXRpb24gbGVha3MsIG9yIGFueSBjb25jZXJucyBhYm91dCB0aGUgb3ZlcmFsbCBtZW1vcnkgc2FmZXR5IG9mIHRoZSB3aXJlbGVzcyBzdGFjay5cblxuTGV0IG1lIGRvdWJsZS1jaGVjazogdGhlIHBhdGNoIHNpbXBseSBpbmNsdWRlcyBgTkw4MDIxMV9GRUFUVVJFX0FDVElWRV9NT05JVE9SYCBpbiBgd2lwaHktXHUwMDNlZmVhdHVyZXNgLCByZW1vdmVzIHRoZSBgbm9fYWN0aXZlX21vbml0b3JgIGZpZWxkLCBhbmQgYWxzbyByZW1vdmVzIHRoZSBgcGh5LVx1MDAzZW10NzYtXHUwMDNlbm9fYWN0aXZlX21vbml0b3IgPSB0cnVlYCBzZXR0aW5nIGZyb20gYG10NzkyeF9pbml0X3dpcGh5YC4gTm8gcmVhbCBjb21wbGV4aXR5IGhlcmUuXG5cbkZpbmFsbHksIHJlZ2FyZGluZyB0ZXN0aW5nLCB0aGUgY2hhbmdlIGRvZXMgbm90IHJlcXVpcmUgS01TQU4uIEtBU0FOIGFuZCBzdGFuZGFyZCB0ZXN0aW5nIG1ldGhvZG9sb2dpZXMgYXJlIHN1ZmZpY2llbnQgdG8gdmVyaWZ5IGFueSBtZW1vcnkgc2FmZXR5IGluIHBhY2tldCBoYW5kbGluZyBhbmQgYnVmZmVyIGFsbG9jYXRpb24uIEtNU0FOIGlzIG92ZXJraWxsIGhlcmUuXG5cbkknbSByZWFkeSB0byBjYWxsIHRoZSBgc2V0LXJlc3VsdHNgIG1ldGhvZC4gSSdtIGNvbmZpZGVudCBpbiBteSBhc3Nlc3NtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjAyLCJPdXRwdXRUb2tlbnMiOjE3NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwNDo0Mzo0MC43MzEwNTM3MDNaIiwiU2VxIjo0NCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGVuYWJsZXMgdGhlIE5MODAyMTFfRkVBVFVSRV9BQ1RJVkVfTU9OSVRPUiBmZWF0dXJlIGZsYWcgdW5jb25kaXRpb25hbGx5IGZvciBhbGwgbXQ3NiB3aXJlbGVzcyBkZXZpY2VzIGJ5IHJlbW92aW5nIHRoZSBgbm9fYWN0aXZlX21vbml0b3JgIGZsYWcgZnJvbSBgc3RydWN0IG10NzZfcGh5YCBhbmQgdGhlIG92ZXJyaWRlIGluIGBtdDc5MnhfaW5pdF93aXBoeWAuXFxuXFxuVGhpcyBjaGFuZ2Ugb25seSBtb2RpZmllcyBhIGZlYXR1cmUgYml0bWFzayBmbGFnIG9uIHRoZSB3aXBoeSBkZXZpY2UgYW5kIHJlbW92ZXMgYSBzdHJ1Y3QgZmllbGQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgcGFkZGluZy9maWVsZHMgY29waWVkIHRvIHVzZXJzcGFjZSwgb3IgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBvciBpbmZvcm1hdGlvbiBsZWFrIHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiBmdXp6aW5nLCBhbmQgc3RhbmRhcmQgS0FTQU4vc3l6a2FsbGVyIHRlc3RpbmcgaXMgc3VmZmljaWVudC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBlbmFibGVzIHRoZSBOTDgwMjExX0ZFQVRVUkVfQUNUSVZFX01PTklUT1IgZmVhdHVyZSBmbGFnIHVuY29uZGl0aW9uYWxseSBmb3IgYWxsIG10NzYgd2lyZWxlc3MgZGV2aWNlcyBieSByZW1vdmluZyB0aGUgYG5vX2FjdGl2ZV9tb25pdG9yYCBmbGFnIGZyb20gYHN0cnVjdCBtdDc2X3BoeWAgYW5kIHRoZSBvdmVycmlkZSBpbiBgbXQ3OTJ4X2luaXRfd2lwaHlgLlxcblxcblRoaXMgY2hhbmdlIG9ubHkgbW9kaWZpZXMgYSBmZWF0dXJlIGJpdG1hc2sgZmxhZyBvbiB0aGUgd2lwaHkgZGV2aWNlIGFuZCByZW1vdmVzIGEgc3RydWN0IGZpZWxkLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGRhdGEgc3RydWN0dXJlcywgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHBhZGRpbmcvZmllbGRzIGNvcGllZCB0byB1c2Vyc3BhY2UsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgaW5mb3JtYXRpb24gbGVhayByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gZnV6emluZywgYW5kIHN0YW5kYXJkIEtBU0FOL3N5emthbGxlciB0ZXN0aW5nIGlzIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4cj2h[1] Phase: Succeeded StartedAt: 2026-09-05 04:47:14 +0000 UTC FinishedAt: 2026-09-05 04:47:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cj2h[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-05 04:47:14 +0000 UTC FinishedAt: 2026-09-05 04:47:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cj2h[2] Phase: Succeeded StartedAt: 2026-09-05 04:47:14 +0000 UTC FinishedAt: 2026-09-05 05:30:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-05 04:47:15 +0000 UTC FinishedAt: 2026-09-05 05:30:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-05 04:47:15 +0000 UTC FinishedAt: 2026-09-05 04:47:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-05 04:47:15 +0000 UTC FinishedAt: 2026-09-05 04:47:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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-workflow4cj2h/series-workflow4cj2h-convert-artifact-1582329468/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-05 04:47:25 +0000 UTC FinishedAt: 2026-09-05 05:03:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-05 04:47:25 +0000 UTC FinishedAt: 2026-09-05 05:03:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*6225b3ef-335e-46aa-bbe4-c026706325d4,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-workflow4cj2h/series-workflow4cj2h-convert-artifact-1582329468/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": "52fb8201-ff7f-41d1-aaa2-79e11f3123f4", "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-workflow4cj2h/series-workflow4cj2h-build-action-3774638506/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-05 04:47:25 +0000 UTC FinishedAt: 2026-09-05 05:03:09 +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:*6225b3ef-335e-46aa-bbe4-c026706325d4,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-workflow4cj2h/series-workflow4cj2h-convert-artifact-1582329468/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": "52fb8201-ff7f-41d1-aaa2-79e11f3123f4", "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-workflow4cj2h/series-workflow4cj2h-build-action-3774638506/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-05 05:03:19 +0000 UTC FinishedAt: 2026-09-05 05:03:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-05 05:03:19 +0000 UTC FinishedAt: 2026-09-05 05:03:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-05 05:03:19 +0000 UTC FinishedAt: 2026-09-05 05:03:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-05 05:03:19 +0000 UTC FinishedAt: 2026-09-05 05:03:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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-workflow4cj2h/series-workflow4cj2h-convert-artifact-4152677563/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-05 05:03:29 +0000 UTC FinishedAt: 2026-09-05 05:05:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-05 05:03:29 +0000 UTC FinishedAt: 2026-09-05 05:05:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*52fb8201-ff7f-41d1-aaa2-79e11f3123f4,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-workflow4cj2h/series-workflow4cj2h-build-action-3774638506/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-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-05 05:05:23 +0000 UTC FinishedAt: 2026-09-05 05:05:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-05 05:05:23 +0000 UTC FinishedAt: 2026-09-05 05:05:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-05 05:05:23 +0000 UTC FinishedAt: 2026-09-05 05:27:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-05 05:05:23 +0000 UTC FinishedAt: 2026-09-05 05:27:51 +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:*6225b3ef-335e-46aa-bbe4-c026706325d4,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-workflow4cj2h/series-workflow4cj2h-convert-artifact-4152677563/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": "00061e6c-0166-44b9-9db5-3affefb48936", "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-workflow4cj2h/series-workflow4cj2h-build-action-3466416095/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-05 05:05:23 +0000 UTC FinishedAt: 2026-09-05 05:27:26 +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:*6225b3ef-335e-46aa-bbe4-c026706325d4,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-workflow4cj2h/series-workflow4cj2h-convert-artifact-4152677563/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": "00061e6c-0166-44b9-9db5-3affefb48936", "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-workflow4cj2h/series-workflow4cj2h-build-action-3466416095/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-05 05:27:51 +0000 UTC FinishedAt: 2026-09-05 05:27:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-05 05:27:51 +0000 UTC FinishedAt: 2026-09-05 05:27:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-05 05:27:51 +0000 UTC FinishedAt: 2026-09-05 05:29:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-05 05:27:51 +0000 UTC FinishedAt: 2026-09-05 05:29:10 +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:*00061e6c-0166-44b9-9db5-3affefb48936,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-workflow4cj2h/series-workflow4cj2h-build-action-3466416095/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-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-05 05:29:20 +0000 UTC FinishedAt: 2026-09-05 05:30:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-05 05:29:20 +0000 UTC FinishedAt: 2026-09-05 05:30:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*52fb8201-ff7f-41d1-aaa2-79e11f3123f4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*00061e6c-0166-44b9-9db5-3affefb48936,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-workflow4cj2h/series-workflow4cj2h-build-action-3774638506/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-workflow4cj2h/series-workflow4cj2h-build-action-3466416095/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-05 05:29:20 +0000 UTC FinishedAt: 2026-09-05 05:29:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-05 05:29:20 +0000 UTC FinishedAt: 2026-09-05 05:29:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4cj2h/series-workflow4cj2h-convert-artifact-1695224244/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-05 05:29:20 +0000 UTC FinishedAt: 2026-09-05 05:29:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-05 05:29:20 +0000 UTC FinishedAt: 2026-09-05 05:29:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-05 05:29:20 +0000 UTC FinishedAt: 2026-09-05 05:29:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-05 05:29:30 +0000 UTC FinishedAt: 2026-09-05 05:30:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4cj2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt792x_init_wiphy","mt76_register_device","mt76_register_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT76_CORE","MT792x_LIB","MT7921U","MAC80211","CFG80211"],"series_id":"d7ba9719-a26b-4068-b5c8-953e085f96b2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-05 05:29:30 +0000 UTC FinishedAt: 2026-09-05 05:30:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*52fb8201-ff7f-41d1-aaa2-79e11f3123f4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*00061e6c-0166-44b9-9db5-3affefb48936,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-workflow4cj2h/series-workflow4cj2h-build-action-3774638506/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-workflow4cj2h/series-workflow4cj2h-build-action-3466416095/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-workflow4cj2h/series-workflow4cj2h-convert-artifact-1695224244/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,}