Name: series-workflow8z6gt Phase: Succeeded StartedAt: 2026-07-20 13:48:57 +0000 UTC FinishedAt: 2026-07-20 16:17:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8z6gt[0] Phase: Succeeded StartedAt: 2026-07-20 13:48:57 +0000 UTC FinishedAt: 2026-07-20 14:16:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8z6gt[0].run-triage Phase: Succeeded StartedAt: 2026-07-20 13:48:57 +0000 UTC FinishedAt: 2026-07-20 14:16:13 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "298bb2b8903323f6ef2eab4819a2e477765f0ff1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IBMVNIC", "TI_ICSSG_PRUETH", "USB4_NET", "USB_PEGASUS", "USB_RTL8152" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "298bb2b8903323f6ef2eab4819a2e477765f0ff1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IBMVNIC", "TI_ICSSG_PRUETH", "USB4_NET", "USB_PEGASUS", "USB_RTL8152" ], "series_id": "0224fe00-d68e-4cbb-afe5-d181ffc144c2" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__ibmvnic_reset", "ibmvnic_reset", "emac_ndo_open", "icssg_stats_work_handler", "start_login", "tbnet_login_work", "check_carrier", "pegasus_probe", "pegasus_resume", "rtl_hw_phy_work_func_t", "rtl8152_reset_resume", "rtl8152_probe_once" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIwIDE0OjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lCTVZOSUMmIzM0OywKICAgICYjMzQ7VElfSUNTU0dfUFJVRVRIJiMzNDssCiAgICAmIzM0O1VTQjRfTkVUJiMzNDssCiAgICAmIzM0O1VTQl9QRUdBU1VTJiMzNDssCiAgICAmIzM0O1VTQl9SVEw4MTUyJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19pYm12bmljX3Jlc2V0JiMzNDssCiAgICAmIzM0O2libXZuaWNfcmVzZXQmIzM0OywKICAgICYjMzQ7ZW1hY19uZG9fb3BlbiYjMzQ7LAogICAgJiMzNDtpY3NzZ19zdGF0c193b3JrX2hhbmRsZXImIzM0OywKICAgICYjMzQ7c3RhcnRfbG9naW4mIzM0OywKICAgICYjMzQ7dGJuZXRfbG9naW5fd29yayYjMzQ7LAogICAgJiMzNDtjaGVja19jYXJyaWVyJiMzNDssCiAgICAmIzM0O3BlZ2FzdXNfcHJvYmUmIzM0OywKICAgICYjMzQ7cGVnYXN1c19yZXN1bWUmIzM0OywKICAgICYjMzQ7cnRsX2h3X3BoeV93b3JrX2Z1bmNfdCYjMzQ7LAogICAgJiMzNDtydGw4MTUyX3Jlc2V0X3Jlc3VtZSYjMzQ7LAogICAgJiMzNDtydGw4MTUyX3Byb2JlX29uY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgc3lzdGVtX2xvbmdfd3Egd2l0aCBzeXN0ZW1fZGZsX2xvbmdfd3EgZm9yIHNjaGVkdWxpbmcgZGVsYXllZCB3b3JrcyBpbiBzZXZlcmFsIG5ldHdvcmsgZHJpdmVycyAoaWJtdm5pYywgaWNzc2csIHRodW5kZXJib2x0LCBwZWdhc3VzLCByODE1MikuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyB0aGUgZXhlY3V0aW9uIGNvbnRleHQgb2YgdGhlc2Ugd29ya3MsIHBvdGVudGlhbGx5IGFmZmVjdGluZyBjb25jdXJyZW5jeSBvciBkZWFkbG9ja3MuIEZ1enppbmcgdGhlIGFmZmVjdGVkIHdvcmsgZnVuY3Rpb25zIGFuZCB0aGVpciB0cmlnZ2VycyAobGlrZSBwcm9iZSwgb3BlbiwgcmVzZXQsIGFuZCBsb2dpbikgaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBhcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxNDoxNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDUwYmU3ZmI4YTNhMzhiN2Q2ZjY2ZTVjYjRjNzFjZTViY2EzYzg1OTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyMCAxNDoxNDozMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuY1xuaW5kZXggNWE1MTBlZWQzMzVlYWQuLmQ0YzI4NGM4ZWY0MzdhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuY1xuQEAgLTMyMjksNyAmIzQzOzMyMjksNyBAQCBzdGF0aWMgdm9pZCBfX2libXZuaWNfcmVzZXQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0aWYgKGFkYXB0ZXItXHUwMDNlc3RhdGUgPT0gVk5JQ19QUk9CSU5HIFx1MDAyNlx1MDAyNlxuIFx0ICAgICF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXHUwMDI2YWRhcHRlci1cdTAwM2Vwcm9iZV9kb25lLCB0aW1lb3V0KSkge1xuIFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7UmVzZXQgdGhyZWFkIHRpbWVkIG91dCBvbiBwcm9iZVwmIzM0Oyk7XG4tXHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSxcbiYjNDM7XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXG4gXHRcdFx0XHQgICBcdTAwMjZhZGFwdGVyLVx1MDAzZWlibXZuaWNfZGVsYXllZF9yZXNldCxcbiBcdFx0XHRcdCAgIElCTVZOSUNfUkVTRVRfREVMQVkpO1xuIFx0XHRyZXR1cm47XG5AQCAtMzI2Nyw3ICYjNDM7MzI2Nyw3IEBAIHN0YXRpYyB2b2lkIF9faWJtdm5pY19yZXNldChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRzcGluX2xvY2soXHUwMDI2YWRhcHRlci1cdTAwM2Vyd2lfbG9jayk7XG4gXHRpZiAoIWxpc3RfZW1wdHkoXHUwMDI2YWRhcHRlci1cdTAwM2Vyd2lfbGlzdCkpIHtcbiBcdFx0aWYgKHRlc3RfYW5kX3NldF9iaXRfbG9jaygwLCBcdTAwMjZhZGFwdGVyLVx1MDAzZXJlc2V0dGluZykpIHtcbi1cdFx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsXG4mIzQzO1x0XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXG4gXHRcdFx0XHRcdCAgIFx1MDAyNmFkYXB0ZXItXHUwMDNlaWJtdm5pY19kZWxheWVkX3Jlc2V0LFxuIFx0XHRcdFx0XHQgICBJQk1WTklDX1JFU0VUX0RFTEFZKTtcbiBcdFx0fSBlbHNlIHtcbkBAIC0zNDU0LDcgJiM0MzszNDU0LDcgQEAgc3RhdGljIGludCBpYm12bmljX3Jlc2V0KHN0cnVjdCBpYm12bmljX2FkYXB0ZXIgKmFkYXB0ZXIsXG4gXHRsaXN0X2FkZF90YWlsKFx1MDAyNnJ3aS1cdTAwM2VsaXN0LCBcdTAwMjZhZGFwdGVyLVx1MDAzZXJ3aV9saXN0KTtcbiBcdG5ldGRldl9kYmcoYWRhcHRlci1cdTAwM2VuZXRkZXYsIFwmIzM0O1NjaGVkdWxpbmcgcmVzZXQgKHJlYXNvbiAlcylcXG5cJiMzNDssXG4gXHRcdCAgIHJlc2V0X3JlYXNvbl90b19zdHJpbmcocmVhc29uKSk7XG4tXHRxdWV1ZV93b3JrKHN5c3RlbV9sb25nX3dxLCBcdTAwMjZhZGFwdGVyLVx1MDAzZWlibXZuaWNfcmVzZXQpO1xuJiM0MztcdHF1ZXVlX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZhZGFwdGVyLVx1MDAzZWlibXZuaWNfcmVzZXQpO1xuIFxuIFx0cmV0ID0gMDtcbiBlcnI6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguY1xuaW5kZXggNTkxYmU1YzgwNTZiNDMuLjBmYmEyMmMxMDQ2ZTk2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jXG5AQCAtMTEwMCw3ICYjNDM7MTEwMCw3IEBAIHN0YXRpYyBpbnQgZW1hY19uZG9fb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiBcbiBcdHBydWV0aC1cdTAwM2VlbWFjc19pbml0aWFsaXplZCYjNDM7JiM0Mzs7XG4gXG4tXHRxdWV1ZV93b3JrKHN5c3RlbV9sb25nX3dxLCBcdTAwMjZlbWFjLVx1MDAzZXN0YXRzX3dvcmsud29yayk7XG4mIzQzO1x0cXVldWVfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmVtYWMtXHUwMDNlc3RhdHNfd29yay53b3JrKTtcbiBcbiBcdHJldHVybiAwO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N0YXRzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zdGF0cy5jXG5pbmRleCA3MTU5YmFhMDE1NWNmYi4uN2Q2ZDY2OTJkODE5MjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zdGF0cy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zdGF0cy5jXG5AQCAtNjksNyAmIzQzOzY5LDcgQEAgdm9pZCBpY3NzZ19zdGF0c193b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRcdFx0XHRcdHN0YXRzX3dvcmsud29yayk7XG4gXHRlbWFjX3VwZGF0ZV9oYXJkd2FyZV9zdGF0cyhlbWFjKTtcbiBcbi1cdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2ZW1hYy1cdTAwM2VzdGF0c193b3JrLFxuJiM0MztcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmVtYWMtXHUwMDNlc3RhdHNfd29yayxcbiBcdFx0XHQgICBtc2Vjc190b19qaWZmaWVzKChTVEFUU19USU1FX0xJTUlUXzFHX01TICogMTAwMCkgLyBlbWFjLVx1MDAzZXNwZWVkKSk7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKGljc3NnX3N0YXRzX3dvcmtfaGFuZGxlcik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jIGIvZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jXG5pbmRleCAwMmE5MTY1MDU2MWFiMS4uYmUyNzk3MmJlZDE4ZWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uY1xuQEAgLTMxNiw3ICYjNDM7MzE2LDcgQEAgc3RhdGljIHZvaWQgc3RhcnRfbG9naW4oc3RydWN0IHRibmV0ICpuZXQpXG4gXHRuZXQtXHUwMDNlbG9naW5fcmVjZWl2ZWQgPSBmYWxzZTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZuZXQtXHUwMDNlY29ubmVjdGlvbl9sb2NrKTtcbiBcbi1cdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2bmV0LVx1MDAzZWxvZ2luX3dvcmssXG4mIzQzO1x0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2bmV0LVx1MDAzZWxvZ2luX3dvcmssXG4gXHRcdFx0ICAgbXNlY3NfdG9famlmZmllcygxMDAwKSk7XG4gfVxuIFxuQEAgLTQ2MCw3ICYjNDM7NDYwLDcgQEAgc3RhdGljIGludCB0Ym5ldF9oYW5kbGVfcGFja2V0KGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUsIHZvaWQgKmRhdGEpXG4gXHRcdFx0aWYgKG5ldC1cdTAwM2Vsb2dpbl9yZXRyaWVzIFx1MDAzZT0gVEJORVRfTE9HSU5fUkVUUklFUyB8fFxuIFx0XHRcdCAgICAhbmV0LVx1MDAzZWxvZ2luX3NlbnQpIHtcbiBcdFx0XHRcdG5ldC1cdTAwM2Vsb2dpbl9yZXRyaWVzID0gMDtcbi1cdFx0XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSxcbiYjNDM7XHRcdFx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLFxuIFx0XHRcdFx0XHRcdCAgIFx1MDAyNm5ldC1cdTAwM2Vsb2dpbl93b3JrLCAwKTtcbiBcdFx0XHR9XG4gXHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm5ldC1cdTAwM2Vjb25uZWN0aW9uX2xvY2spO1xuQEAgLTcwMCw3ICYjNDM7NzAwLDggQEAgc3RhdGljIHZvaWQgdGJuZXRfbG9naW5fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRcdG5ldGRldl9kYmcobmV0LVx1MDAzZWRldiwgXCYjMzQ7c2VuZGluZyBsb2dpbiByZXF1ZXN0IGZhaWxlZCwgcmV0PSVkXFxuXCYjMzQ7LFxuIFx0XHRcdCAgIHJldCk7XG4gXHRcdGlmIChuZXQtXHUwMDNlbG9naW5fcmV0cmllcyYjNDM7JiM0MzsgXHUwMDNjIFRCTkVUX0xPR0lOX1JFVFJJRVMpIHtcbi1cdFx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsIFx1MDAyNm5ldC1cdTAwM2Vsb2dpbl93b3JrLFxuJiM0MztcdFx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLFxuJiM0MztcdFx0XHRcdFx0ICAgXHUwMDI2bmV0LVx1MDAzZWxvZ2luX3dvcmssXG4gXHRcdFx0XHRcdCAgIGRlbGF5KTtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRuZXRkZXZfaW5mbyhuZXQtXHUwMDNlZGV2LCBcJiMzNDtUaHVuZGVyYm9sdElQIGxvZ2luIHRpbWVkIG91dFxcblwmIzM0Oyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYyBiL2RyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmNcbmluZGV4IDg3MDBlZWI4ZTIyZDA3Li5jMTc5OGUxNGIyMjQyZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmNcbkBAIC0xMTI2LDggJiM0MzsxMTI2LDkgQEAgc3RhdGljIHZvaWQgY2hlY2tfY2FycmllcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRwZWdhc3VzX3QgKnBlZ2FzdXMgPSBjb250YWluZXJfb2Yod29yaywgcGVnYXN1c190LCBjYXJyaWVyX2NoZWNrLndvcmspO1xuIFx0c2V0X2NhcnJpZXIocGVnYXN1cy1cdTAwM2VuZXQpO1xuIFx0aWYgKCEocGVnYXN1cy1cdTAwM2VmbGFncyBcdTAwMjYgUEVHQVNVU19VTlBMVUcpKSB7XG4tXHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2cGVnYXN1cy1cdTAwM2VjYXJyaWVyX2NoZWNrLFxuLVx0XHRcdENBUlJJRVJfQ0hFQ0tfREVMQVkpO1xuJiM0MztcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcbiYjNDM7XHRcdFx0XHQgICBcdTAwMjZwZWdhc3VzLVx1MDAzZWNhcnJpZXJfY2hlY2ssXG4mIzQzO1x0XHRcdFx0ICAgQ0FSUklFUl9DSEVDS19ERUxBWSk7XG4gXHR9XG4gfVxuIFxuQEAgLTEyMzIsNyAmIzQzOzEyMzMsNyBAQCBzdGF0aWMgaW50IHBlZ2FzdXNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4gXHRyZXMgPSByZWdpc3Rlcl9uZXRkZXYobmV0KTtcbiBcdGlmIChyZXMpXG4gXHRcdGdvdG8gb3V0Mztcbi1cdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2cGVnYXN1cy1cdTAwM2VjYXJyaWVyX2NoZWNrLFxuJiM0MztcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnBlZ2FzdXMtXHUwMDNlY2Fycmllcl9jaGVjayxcbiBcdFx0XHQgICBDQVJSSUVSX0NIRUNLX0RFTEFZKTtcbiBcdGRldl9pbmZvKFx1MDAyNmludGYtXHUwMDNlZGV2LCBcJiMzNDslcywgJXMsICVwTVxcblwmIzM0OywgbmV0LVx1MDAzZW5hbWUsXG4gXHRcdCB1c2JfZGV2X2lkW2Rldl9pbmRleF0ubmFtZSwgbmV0LVx1MDAzZWRldl9hZGRyKTtcbkBAIC0xMjk3LDcgJiM0MzsxMjk4LDcgQEAgc3RhdGljIGludCBwZWdhc3VzX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbiBcdFx0cGVnYXN1cy1cdTAwM2VpbnRyX3VyYi1cdTAwM2VhY3R1YWxfbGVuZ3RoID0gMDtcbiBcdFx0aW50cl9jYWxsYmFjayhwZWdhc3VzLVx1MDAzZWludHJfdXJiKTtcbiBcdH1cbi1cdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2cGVnYXN1cy1cdTAwM2VjYXJyaWVyX2NoZWNrLFxuJiM0MztcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnBlZ2FzdXMtXHUwMDNlY2Fycmllcl9jaGVjayxcbiBcdFx0XHRcdENBUlJJRVJfQ0hFQ0tfREVMQVkpO1xuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jIGIvZHJpdmVycy9uZXQvdXNiL3I4MTUyLmNcbmluZGV4IGY2MTY4NjQzMzAzMWM3Li5mNmFmNjZmMjk0ZGJjYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC91c2IvcjgxNTIuY1xuQEAgLTcwNzIsNyAmIzQzOzcwNzIsOCBAQCBzdGF0aWMgdm9pZCBydGxfaHdfcGh5X3dvcmtfZnVuY190KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcbiBcdFx0LyogRGVsYXkgZXhlY3V0aW9uIGluIGNhc2UgcmVxdWVzdF9maXJtd2FyZSgpIGlzIG5vdCByZWFkeSB5ZXQuXG4gXHRcdCAqL1xuLVx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsIFx1MDAyNnRwLVx1MDAzZWh3X3BoeV93b3JrLCBIWiAqIDEwKTtcbiYjNDM7XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnRwLVx1MDAzZWh3X3BoeV93b3JrLFxuJiM0MztcdFx0XHRcdCAgIEhaICogMTApO1xuIFx0XHRnb3RvIGlnbm9yZV9vbmNlO1xuIFx0fVxuIFxuQEAgLTg4NDAsNyAmIzQzOzg4NDEsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNTJfcmVzZXRfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuIFx0Y2xlYXJfYml0KFNFTEVDVElWRV9TVVNQRU5ELCBcdTAwMjZ0cC1cdTAwM2VmbGFncyk7XG4gXHRydGxfcmVzZXRfb2NwX2Jhc2UodHApO1xuIFx0dHAtXHUwMDNlcnRsX29wcy5pbml0KHRwKTtcbi1cdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2dHAtXHUwMDNlaHdfcGh5X3dvcmssIDApO1xuJiM0MztcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnRwLVx1MDAzZWh3X3BoeV93b3JrLCAwKTtcbiBcdHNldF9ldGhlcm5ldF9hZGRyKHRwLCB0cnVlKTtcbiBcdHJldHVybiBydGw4MTUyX3Jlc3VtZShpbnRmKTtcbiB9XG5AQCAtMTAyOTUsNyAmIzQzOzEwMjk2LDcgQEAgc3RhdGljIGludCBydGw4MTUyX3Byb2JlX29uY2Uoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4gXHQvKiBSZXRyeSBpbiBjYXNlIHJlcXVlc3RfZmlybXdhcmUoKSBpcyBub3QgcmVhZHkgeWV0LiAqL1xuIFx0dHAtXHUwMDNlcnRsX2Z3LnJldHJ5ID0gdHJ1ZTtcbiAjZW5kaWZcbi1cdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2dHAtXHUwMDNlaHdfcGh5X3dvcmssIDApO1xuJiM0MztcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnRwLVx1MDAzZWh3X3BoeV93b3JrLCAwKTtcbiBcdHNldF9ldGhlcm5ldF9hZGRyKHRwLCBmYWxzZSk7XG4gXG4gXHR1c2Jfc2V0X2ludGZkYXRhKGludGYsIHRwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxNDoxNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJQk1WTklDJiMzNDssCiAgICAmIzM0O1RJX0lDU1NHX1BSVUVUSCYjMzQ7LAogICAgJiMzNDtVU0I0X05FVCYjMzQ7LAogICAgJiMzNDtVU0JfUEVHQVNVUyYjMzQ7LAogICAgJiMzNDtVU0JfUlRMODE1MiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19faWJtdm5pY19yZXNldCYjMzQ7LAogICAgJiMzNDtpYm12bmljX3Jlc2V0JiMzNDssCiAgICAmIzM0O2VtYWNfbmRvX29wZW4mIzM0OywKICAgICYjMzQ7aWNzc2dfc3RhdHNfd29ya19oYW5kbGVyJiMzNDssCiAgICAmIzM0O3N0YXJ0X2xvZ2luJiMzNDssCiAgICAmIzM0O3RibmV0X2xvZ2luX3dvcmsmIzM0OywKICAgICYjMzQ7Y2hlY2tfY2FycmllciYjMzQ7LAogICAgJiMzNDtwZWdhc3VzX3Byb2JlJiMzNDssCiAgICAmIzM0O3BlZ2FzdXNfcmVzdW1lJiMzNDssCiAgICAmIzM0O3J0bF9od19waHlfd29ya19mdW5jX3QmIzM0OywKICAgICYjMzQ7cnRsODE1Ml9yZXNldF9yZXN1bWUmIzM0OywKICAgICYjMzQ7cnRsODE1Ml9wcm9iZV9vbmNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIHN5c3RlbV9sb25nX3dxIHdpdGggc3lzdGVtX2RmbF9sb25nX3dxIGZvciBzY2hlZHVsaW5nIGRlbGF5ZWQgd29ya3MgaW4gc2V2ZXJhbCBuZXR3b3JrIGRyaXZlcnMgKGlibXZuaWMsIGljc3NnLCB0aHVuZGVyYm9sdCwgcGVnYXN1cywgcjgxNTIpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IG9mIHRoZXNlIHdvcmtzLCBwb3RlbnRpYWxseSBhZmZlY3RpbmcgY29uY3VycmVuY3kgb3IgZGVhZGxvY2tzLiBGdXp6aW5nIHRoZSBhZmZlY3RlZCB3b3JrIGZ1bmN0aW9ucyBhbmQgdGhlaXIgdHJpZ2dlcnMgKGxpa2UgcHJvYmUsIG9wZW4sIHJlc2V0LCBhbmQgbG9naW4pIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDUwYmU3ZmI4YTNhMzhiN2Q2ZjY2ZTVjYjRjNzFjZTViY2EzYzg1OTEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAyMCAxNDoxNDozMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jCmluZGV4IDVhNTEwZWVkMzM1ZWFkLi5kNGMyODRjOGVmNDM3YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jCkBAIC0zMjI5LDcgJiM0MzszMjI5LDcgQEAgc3RhdGljIHZvaWQgX19pYm12bmljX3Jlc2V0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAlpZiAoYWRhcHRlci0mZ3Q7c3RhdGUgPT0gVk5JQ19QUk9CSU5HICZhbXA7JmFtcDsKIAkgICAgIXdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmYW1wO2FkYXB0ZXItJmd0O3Byb2JlX2RvbmUsIHRpbWVvdXQpKSB7CiAJCWRldl9lcnIoZGV2LCAmIzM0O1Jlc2V0IHRocmVhZCB0aW1lZCBvdXQgb24gcHJvYmUmIzM0Oyk7Ci0JCXF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwKJiM0MzsJCXF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsCiAJCQkJICAgJmFtcDthZGFwdGVyLSZndDtpYm12bmljX2RlbGF5ZWRfcmVzZXQsCiAJCQkJICAgSUJNVk5JQ19SRVNFVF9ERUxBWSk7CiAJCXJldHVybjsKQEAgLTMyNjcsNyAmIzQzOzMyNjcsNyBAQCBzdGF0aWMgdm9pZCBfX2libXZuaWNfcmVzZXQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXNwaW5fbG9jaygmYW1wO2FkYXB0ZXItJmd0O3J3aV9sb2NrKTsKIAlpZiAoIWxpc3RfZW1wdHkoJmFtcDthZGFwdGVyLSZndDtyd2lfbGlzdCkpIHsKIAkJaWYgKHRlc3RfYW5kX3NldF9iaXRfbG9jaygwLCAmYW1wO2FkYXB0ZXItJmd0O3Jlc2V0dGluZykpIHsKLQkJCXF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwKJiM0MzsJCQlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLAogCQkJCQkgICAmYW1wO2FkYXB0ZXItJmd0O2libXZuaWNfZGVsYXllZF9yZXNldCwKIAkJCQkJICAgSUJNVk5JQ19SRVNFVF9ERUxBWSk7CiAJCX0gZWxzZSB7CkBAIC0zNDU0LDcgJiM0MzszNDU0LDcgQEAgc3RhdGljIGludCBpYm12bmljX3Jlc2V0KHN0cnVjdCBpYm12bmljX2FkYXB0ZXIgKmFkYXB0ZXIsCiAJbGlzdF9hZGRfdGFpbCgmYW1wO3J3aS0mZ3Q7bGlzdCwgJmFtcDthZGFwdGVyLSZndDtyd2lfbGlzdCk7CiAJbmV0ZGV2X2RiZyhhZGFwdGVyLSZndDtuZXRkZXYsICYjMzQ7U2NoZWR1bGluZyByZXNldCAocmVhc29uICVzKVxuJiMzNDssCiAJCSAgIHJlc2V0X3JlYXNvbl90b19zdHJpbmcocmVhc29uKSk7Ci0JcXVldWVfd29yayhzeXN0ZW1fbG9uZ193cSwgJmFtcDthZGFwdGVyLSZndDtpYm12bmljX3Jlc2V0KTsKJiM0MzsJcXVldWVfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsICZhbXA7YWRhcHRlci0mZ3Q7aWJtdm5pY19yZXNldCk7CiAKIAlyZXQgPSAwOwogZXJyOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYwppbmRleCA1OTFiZTVjODA1NmI0My4uMGZiYTIyYzEwNDZlOTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jCkBAIC0xMTAwLDcgJiM0MzsxMTAwLDcgQEAgc3RhdGljIGludCBlbWFjX25kb19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQogCiAJcHJ1ZXRoLSZndDtlbWFjc19pbml0aWFsaXplZCYjNDM7JiM0Mzs7CiAKLQlxdWV1ZV93b3JrKHN5c3RlbV9sb25nX3dxLCAmYW1wO2VtYWMtJmd0O3N0YXRzX3dvcmsud29yayk7CiYjNDM7CXF1ZXVlX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCAmYW1wO2VtYWMtJmd0O3N0YXRzX3dvcmsud29yayk7CiAKIAlyZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3RhdHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N0YXRzLmMKaW5kZXggNzE1OWJhYTAxNTVjZmIuLjdkNmQ2NjkyZDgxOTI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zdGF0cy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N0YXRzLmMKQEAgLTY5LDcgJiM0Mzs2OSw3IEBAIHZvaWQgaWNzc2dfc3RhdHNfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJCQkJCXN0YXRzX3dvcmsud29yayk7CiAJZW1hY191cGRhdGVfaGFyZHdhcmVfc3RhdHMoZW1hYyk7CiAKLQlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsICZhbXA7ZW1hYy0mZ3Q7c3RhdHNfd29yaywKJiM0MzsJcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgJmFtcDtlbWFjLSZndDtzdGF0c193b3JrLAogCQkJICAgbXNlY3NfdG9famlmZmllcygoU1RBVFNfVElNRV9MSU1JVF8xR19NUyAqIDEwMDApIC8gZW1hYy0mZ3Q7c3BlZWQpKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGljc3NnX3N0YXRzX3dvcmtfaGFuZGxlcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMgYi9kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMKaW5kZXggMDJhOTE2NTA1NjFhYjEuLmJlMjc5NzJiZWQxOGViIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jCkBAIC0zMTYsNyAmIzQzOzMxNiw3IEBAIHN0YXRpYyB2b2lkIHN0YXJ0X2xvZ2luKHN0cnVjdCB0Ym5ldCAqbmV0KQogCW5ldC0mZ3Q7bG9naW5fcmVjZWl2ZWQgPSBmYWxzZTsKIAltdXRleF91bmxvY2soJmFtcDtuZXQtJmd0O2Nvbm5lY3Rpb25fbG9jayk7CiAKLQlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsICZhbXA7bmV0LSZndDtsb2dpbl93b3JrLAomIzQzOwlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCAmYW1wO25ldC0mZ3Q7bG9naW5fd29yaywKIAkJCSAgIG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpOwogfQogCkBAIC00NjAsNyAmIzQzOzQ2MCw3IEBAIHN0YXRpYyBpbnQgdGJuZXRfaGFuZGxlX3BhY2tldChjb25zdCB2b2lkICpidWYsIHNpemVfdCBzaXplLCB2b2lkICpkYXRhKQogCQkJaWYgKG5ldC0mZ3Q7bG9naW5fcmV0cmllcyAmZ3Q7PSBUQk5FVF9MT0dJTl9SRVRSSUVTIHx8CiAJCQkgICAgIW5ldC0mZ3Q7bG9naW5fc2VudCkgewogCQkJCW5ldC0mZ3Q7bG9naW5fcmV0cmllcyA9IDA7Ci0JCQkJcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLAomIzQzOwkJCQlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLAogCQkJCQkJICAgJmFtcDtuZXQtJmd0O2xvZ2luX3dvcmssIDApOwogCQkJfQogCQkJbXV0ZXhfdW5sb2NrKCZhbXA7bmV0LSZndDtjb25uZWN0aW9uX2xvY2spOwpAQCAtNzAwLDcgJiM0Mzs3MDAsOCBAQCBzdGF0aWMgdm9pZCB0Ym5ldF9sb2dpbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJbmV0ZGV2X2RiZyhuZXQtJmd0O2RldiwgJiMzNDtzZW5kaW5nIGxvZ2luIHJlcXVlc3QgZmFpbGVkLCByZXQ9JWRcbiYjMzQ7LAogCQkJICAgcmV0KTsKIAkJaWYgKG5ldC0mZ3Q7bG9naW5fcmV0cmllcyYjNDM7JiM0MzsgJmx0OyBUQk5FVF9MT0dJTl9SRVRSSUVTKSB7Ci0JCQlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsICZhbXA7bmV0LSZndDtsb2dpbl93b3JrLAomIzQzOwkJCXF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsCiYjNDM7CQkJCQkgICAmYW1wO25ldC0mZ3Q7bG9naW5fd29yaywKIAkJCQkJICAgZGVsYXkpOwogCQl9IGVsc2UgewogCQkJbmV0ZGV2X2luZm8obmV0LSZndDtkZXYsICYjMzQ7VGh1bmRlcmJvbHRJUCBsb2dpbiB0aW1lZCBvdXRcbiYjMzQ7KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmMgYi9kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jCmluZGV4IDg3MDBlZWI4ZTIyZDA3Li5jMTc5OGUxNGIyMjQyZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jCkBAIC0xMTI2LDggJiM0MzsxMTI2LDkgQEAgc3RhdGljIHZvaWQgY2hlY2tfY2FycmllcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJcGVnYXN1c190ICpwZWdhc3VzID0gY29udGFpbmVyX29mKHdvcmssIHBlZ2FzdXNfdCwgY2Fycmllcl9jaGVjay53b3JrKTsKIAlzZXRfY2FycmllcihwZWdhc3VzLSZndDtuZXQpOwogCWlmICghKHBlZ2FzdXMtJmd0O2ZsYWdzICZhbXA7IFBFR0FTVVNfVU5QTFVHKSkgewotCQlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsICZhbXA7cGVnYXN1cy0mZ3Q7Y2Fycmllcl9jaGVjaywKLQkJCUNBUlJJRVJfQ0hFQ0tfREVMQVkpOwomIzQzOwkJcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwKJiM0MzsJCQkJICAgJmFtcDtwZWdhc3VzLSZndDtjYXJyaWVyX2NoZWNrLAomIzQzOwkJCQkgICBDQVJSSUVSX0NIRUNLX0RFTEFZKTsKIAl9CiB9CiAKQEAgLTEyMzIsNyAmIzQzOzEyMzMsNyBAQCBzdGF0aWMgaW50IHBlZ2FzdXNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsCiAJcmVzID0gcmVnaXN0ZXJfbmV0ZGV2KG5ldCk7CiAJaWYgKHJlcykKIAkJZ290byBvdXQzOwotCXF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgJmFtcDtwZWdhc3VzLSZndDtjYXJyaWVyX2NoZWNrLAomIzQzOwlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCAmYW1wO3BlZ2FzdXMtJmd0O2NhcnJpZXJfY2hlY2ssCiAJCQkgICBDQVJSSUVSX0NIRUNLX0RFTEFZKTsKIAlkZXZfaW5mbygmYW1wO2ludGYtJmd0O2RldiwgJiMzNDslcywgJXMsICVwTVxuJiMzNDssIG5ldC0mZ3Q7bmFtZSwKIAkJIHVzYl9kZXZfaWRbZGV2X2luZGV4XS5uYW1lLCBuZXQtJmd0O2Rldl9hZGRyKTsKQEAgLTEyOTcsNyAmIzQzOzEyOTgsNyBAQCBzdGF0aWMgaW50IHBlZ2FzdXNfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKQogCQlwZWdhc3VzLSZndDtpbnRyX3VyYi0mZ3Q7YWN0dWFsX2xlbmd0aCA9IDA7CiAJCWludHJfY2FsbGJhY2socGVnYXN1cy0mZ3Q7aW50cl91cmIpOwogCX0KLQlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsICZhbXA7cGVnYXN1cy0mZ3Q7Y2Fycmllcl9jaGVjaywKJiM0MzsJcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgJmFtcDtwZWdhc3VzLSZndDtjYXJyaWVyX2NoZWNrLAogCQkJCUNBUlJJRVJfQ0hFQ0tfREVMQVkpOwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL3I4MTUyLmMgYi9kcml2ZXJzL25ldC91c2IvcjgxNTIuYwppbmRleCBmNjE2ODY0MzMwMzFjNy4uZjZhZjY2ZjI5NGRiY2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jCkBAIC03MDcyLDcgJiM0Mzs3MDcyLDggQEAgc3RhdGljIHZvaWQgcnRsX2h3X3BoeV93b3JrX2Z1bmNfdChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAKIAkJLyogRGVsYXkgZXhlY3V0aW9uIGluIGNhc2UgcmVxdWVzdF9maXJtd2FyZSgpIGlzIG5vdCByZWFkeSB5ZXQuCiAJCSAqLwotCQlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsICZhbXA7dHAtJmd0O2h3X3BoeV93b3JrLCBIWiAqIDEwKTsKJiM0MzsJCXF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsICZhbXA7dHAtJmd0O2h3X3BoeV93b3JrLAomIzQzOwkJCQkgICBIWiAqIDEwKTsKIAkJZ290byBpZ25vcmVfb25jZTsKIAl9CiAKQEAgLTg4NDAsNyAmIzQzOzg4NDEsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNTJfcmVzZXRfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKQogCWNsZWFyX2JpdChTRUxFQ1RJVkVfU1VTUEVORCwgJmFtcDt0cC0mZ3Q7ZmxhZ3MpOwogCXJ0bF9yZXNldF9vY3BfYmFzZSh0cCk7CiAJdHAtJmd0O3J0bF9vcHMuaW5pdCh0cCk7Ci0JcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCAmYW1wO3RwLSZndDtod19waHlfd29yaywgMCk7CiYjNDM7CXF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsICZhbXA7dHAtJmd0O2h3X3BoeV93b3JrLCAwKTsKIAlzZXRfZXRoZXJuZXRfYWRkcih0cCwgdHJ1ZSk7CiAJcmV0dXJuIHJ0bDgxNTJfcmVzdW1lKGludGYpOwogfQpAQCAtMTAyOTUsNyAmIzQzOzEwMjk2LDcgQEAgc3RhdGljIGludCBydGw4MTUyX3Byb2JlX29uY2Uoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsCiAJLyogUmV0cnkgaW4gY2FzZSByZXF1ZXN0X2Zpcm13YXJlKCkgaXMgbm90IHJlYWR5IHlldC4gKi8KIAl0cC0mZ3Q7cnRsX2Z3LnJldHJ5ID0gdHJ1ZTsKICNlbmRpZgotCXF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgJmFtcDt0cC0mZ3Q7aHdfcGh5X3dvcmssIDApOwomIzQzOwlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCAmYW1wO3RwLSZndDtod19waHlfd29yaywgMCk7CiAJc2V0X2V0aGVybmV0X2FkZHIodHAsIGZhbHNlKTsKIAogCXVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgdHApOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxNDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDA5CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNzAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoIEZ1enppbmcgRGVjaXNpb246IE5vKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgc3dhcHMgb3V0IGBzeXN0ZW1fbG9uZ193cWAgd2l0aCBgc3lzdGVtX2RmbF9sb25nX3dxYCBpbiBhIGJ1bmNoIG9mIG5ldHdvcmsgZHJpdmVyczogYGlibXZuaWMuY2AsIGBpY3NzZ19wcnVldGguY2AsIGBpY3NzZ19zdGF0cy5jYCwgYHRodW5kZXJib2x0L21haW4uY2AsIGBwZWdhc3VzLmNgLCBhbmQgYHI4MTUyLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7TWVjaGFuaWNhbCBjaGFuZ2UsIGp1c3QgcmVwbGFjaW5nIG9uZSB3b3JrcXVldWUgd2l0aCBhbm90aGVyLiYjMzQ7IERvZXMgdGhpcyBjaGFuZ2UgdGhlIGV4ZWN1dGlvbiBmbG93IGVub3VnaCB0byBldmVuIHdhcnJhbnQgZnV6emluZz8gSXQmIzM5O3MganVzdCBhIHdvcmtxdWV1ZSBzdWJzdGl0dXRpb24gZm9yIGRlbGF5ZWQgd29yay4KCkkmIzM5O20gdGhpbmtpbmcsIGBzeXN0ZW1fbG9uZ193cWAgdmVyc3VzIGBzeXN0ZW1fZGZsX2xvbmdfd3FgLi4uIGlzIHRoZXJlIGFueSAqbmV3KiBsb2dpYz8gTm9wZSwgaXQmIzM5O3MgYSBzaW1wbGUgd29ya3F1ZXVlIHBvaW50ZXIgcmVwbGFjZW1lbnQuIEl0ICpkb2VzKiBjaGFuZ2UgdGhlIGV4ZWN1dGlvbiBlbnZpcm9ubWVudCDigJMgcG90ZW50aWFsbHkgZGlmZmVyZW50IGNvbmN1cnJlbmN5IG9yIHByaW9yaXR5IG9mIHRoZXNlIHdvcmtzIOKAkyBidXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgYnJhbmNoZXMsIG9yIGRhdGEgc3RydWN0dXJlcy4KCldhaXQsIGlzIGBzeXN0ZW1fZGZsX2xvbmdfd3FgIGEgY29tcGxldGVseSAqbmV3KiB3b3JrcXVldWUsIG9yIGlzIHRoaXMgcGFydCBvZiBzb21lIGxhcmdlciBwYXRjaHNldD8gSnVzdCBhIHN0cmFpZ2h0IHJlcGxhY2VtZW50LCBpdCBsb29rcyBsaWtlLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBpbnN0cnVjdGlvbnMgc2F5OiAmIzM0OypSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOiAuLi5jaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuLi4qJiMzNDsuIElzIHRoaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgdGhvdWdoPyBZZXMsIGRpZmZlcmVudCB3b3JrcXVldWUsIGRpZmZlcmVudCBmdW5jdGlvbmFsIGNoYW5nZS4KCkFscmlnaHQsIGxldCYjMzk7cyBjb25zaWRlciByZWFjaGFiaWxpdHkuIGBwZWdhc3VzLmNgIGFuZCBgcjgxNTIuY2AgYXJlIFVTQiBuZXR3b3JrIGRyaXZlcnMuIFdlIGNhbiByZWFjaCB0aG9zZSB0aHJvdWdoIFVTQiBnYWRnZXQvZHVtbXlfaGNkIGluIFFFTVUuIGB0aHVuZGVyYm9sdC9tYWluLmNgPyBIbW0sIHByb2JhYmx5IG5vdCBlYXNpbHksIGJ1dCBtYXliZS4gYGlibXZuaWMuY2AgYW5kIGBpY3NzZ19wcnVldGguY2AgYXJlIHByb2JhYmx5IG5vdCBlYXNpbHkgcmVhY2hlZCBpbiBRRU1VIGFzIHRoZXkmIzM5O3JlIG1vcmUgc3BlY2lhbGl6ZWQgZHJpdmVycywgdGhlIGZpcnN0IHJlcXVpcmVzIGEgc3BlY2lmaWMgSUJNL3Bvd2VycGMvcHNlcmllcyBzZXR1cCwgYW5kIHRoZSBzZWNvbmQgaXMgcmVsYXRlZCB0byBUSSBQUlUgaGFyZHdhcmUuCgpCdXQsIHRoZSBrZXkgaXMgdGhlIGluc3RydWN0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBidXQgaXQgKmRvZXNuJiMzOTt0KiBpbnRyb2R1Y2UgbmV3IGxvZ2ljIG9yIGJyYW5jaGVzLCBhbmQgSSYjMzk7dmUgZ290IHRvIG1ha2UgYSBqdWRnZW1lbnQuIEdpdmVuIHRoZSAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7IGNyaXRlcmlhIG91dGxpbmVkIGFuZCB0aGUgZnVuY3Rpb25hbCBuYXR1cmUgb2Ygd29ya3F1ZXVlIGNoYW5nZSB3aXRob3V0IHRoZSBpbnRyb2R1Y3Rpb24gb2YgbmV3IGxvZ2ljLCBJIGFtIGRlY2lkaW5nIHRoYXQgaXQmIzM5O3MgKm5vdCogd29ydGggZnV6emluZyBhbmQgSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTQ6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3lzdGVtX2RmbF9sb25nX3dxJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYXRhL2xpYmF0YS1laC5jPTcyMT12b2lkIGF0YV9zY3NpX3BvcnRfZXJyb3JfaGFuZGxlcihzdHJ1Y3QgU2NzaV9Ib3N0ICpob3N0LCBzdHJ1Y3QgYXRhX3BvcnQgKmFwKVxuLS1cbmRyaXZlcnMvYXRhL2xpYmF0YS1laC5jLTgyMy1cdFx0IShhcC1cdTAwM2VmbGFncyBcdTAwMjYgQVRBX0ZMQUdfU0FTX0hPU1QpKVxuZHJpdmVycy9hdGEvbGliYXRhLWVoLmM6ODI0Olx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZhcC1cdTAwM2Vob3RwbHVnX3Rhc2ssIDApO1xuZHJpdmVycy9hdGEvbGliYXRhLWVoLmMtODI1LVxuLS1cbmRyaXZlcnMvYXRhL2xpYmF0YS1zY3NpLmM9NDcwNz12b2lkIGF0YV9zY3NpX3NjYW5faG9zdChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBpbnQgc3luYylcbi0tXG5kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jLTQ3NzYtXG5kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jOjQ3Nzc6XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZhcC1cdTAwM2Vob3RwbHVnX3Rhc2ssXG5kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jLTQ3NzgtXHRcdFx0ICAgcm91bmRfamlmZmllc19yZWxhdGl2ZShIWikpO1xuLS1cbmRyaXZlcnMvaTJjL2kyYy1zbGF2ZS10ZXN0dW5pdC5jPTgyPXN0YXRpYyBpbnQgaTJjX3NsYXZlX3Rlc3R1bml0X3NsYXZlX2NiKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsXG4tLVxuZHJpdmVycy9pMmMvaTJjLXNsYXZlLXRlc3R1bml0LmMtMTI2LVx0XHRcdHNldF9iaXQoVFVfRkxBR19JTl9QUk9DRVNTLCBcdTAwMjZ0dS1cdTAwM2VmbGFncyk7XG5kcml2ZXJzL2kyYy9pMmMtc2xhdmUtdGVzdHVuaXQuYzoxMjc6XHRcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2dHUtXHUwMDNld29ya2VyLFxuZHJpdmVycy9pMmMvaTJjLXNsYXZlLXRlc3R1bml0LmMtMTI4LVx0XHRcdFx0XHQgICBtc2Vjc190b19qaWZmaWVzKDEwICogdHUtXHUwMDNlcmVnc1tUVV9SRUdfREVMQVldKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYz0zMjAzPXN0YXRpYyB2b2lkIF9faWJtdm5pY19yZXNldChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYy0zMjMxLVx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7UmVzZXQgdGhyZWFkIHRpbWVkIG91dCBvbiBwcm9iZVwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jOjMyMzI6XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jLTMyMzMtXHRcdFx0XHQgICBcdTAwMjZhZGFwdGVyLVx1MDAzZWlibXZuaWNfZGVsYXllZF9yZXNldCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jLTMyNjktXHRcdGlmICh0ZXN0X2FuZF9zZXRfYml0X2xvY2soMCwgXHUwMDI2YWRhcHRlci1cdTAwM2VyZXNldHRpbmcpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jOjMyNzA6XHRcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmMtMzI3MS1cdFx0XHRcdFx0ICAgXHUwMDI2YWRhcHRlci1cdTAwM2VpYm12bmljX2RlbGF5ZWRfcmVzZXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYz0zNDEwPXN0YXRpYyBpbnQgaWJtdm5pY19yZXNldChzdHJ1Y3QgaWJtdm5pY19hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmMtMzQ1Ni1cdFx0ICAgcmVzZXRfcmVhc29uX3RvX3N0cmluZyhyZWFzb24pKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmM6MzQ1NzpcdHF1ZXVlX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZhZGFwdGVyLVx1MDAzZWlibXZuaWNfcmVzZXQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYy0zNDU4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jPTEwMTM9c3RhdGljIGludCBlbWFjX25kb19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTExMDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYzoxMTAzOlx0cXVldWVfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmVtYWMtXHUwMDNlc3RhdHNfd29yay53b3JrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTExMDQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3RhdHMuYz02Nj12b2lkIGljc3NnX3N0YXRzX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3RhdHMuYy03MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N0YXRzLmM6NzI6XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZlbWFjLVx1MDAzZXN0YXRzX3dvcmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zdGF0cy5jLTczLVx0XHRcdCAgIG1zZWNzX3RvX2ppZmZpZXMoKFNUQVRTX1RJTUVfTElNSVRfMUdfTVMgKiAxMDAwKSAvIGVtYWMtXHUwMDNlc3BlZWQpKTtcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM9MzEwPXN0YXRpYyB2b2lkIHN0YXJ0X2xvZ2luKHN0cnVjdCB0Ym5ldCAqbmV0KVxuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0zMTgtXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MzE5Olx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2bmV0LVx1MDAzZWxvZ2luX3dvcmssXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMzIwLVx0XHRcdCAgIG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpO1xuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz00MTU9c3RhdGljIGludCB0Ym5ldF9oYW5kbGVfcGFja2V0KGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTQ2Mi1cdFx0XHRcdG5ldC1cdTAwM2Vsb2dpbl9yZXRyaWVzID0gMDtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzo0NjM6XHRcdFx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTQ2NC1cdFx0XHRcdFx0XHQgICBcdTAwMjZuZXQtXHUwMDNlbG9naW5fd29yaywgMCk7XG4tLVxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jPTY4Nj1zdGF0aWMgdm9pZCB0Ym5ldF9sb2dpbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNzAyLVx0XHRpZiAobmV0LVx1MDAzZWxvZ2luX3JldHJpZXMmIzQzOyYjNDM7IFx1MDAzYyBUQk5FVF9MT0dJTl9SRVRSSUVTKSB7XG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6NzAzOlx0XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNzA0LVx0XHRcdFx0XHQgICBcdTAwMjZuZXQtXHUwMDNlbG9naW5fd29yayxcbi0tXG5kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jPTExMjQ9c3RhdGljIHZvaWQgY2hlY2tfY2FycmllcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYy0xMTI4LVx0aWYgKCEocGVnYXN1cy1cdTAwM2VmbGFncyBcdTAwMjYgUEVHQVNVU19VTlBMVUcpKSB7XG5kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jOjExMjk6XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXG5kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jLTExMzAtXHRcdFx0XHQgICBcdTAwMjZwZWdhc3VzLVx1MDAzZWNhcnJpZXJfY2hlY2ssXG4tLVxuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYz0xMTUxPXN0YXRpYyBpbnQgcGVnYXN1c19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi0tXG5kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jLTEyMzUtXHRcdGdvdG8gb3V0MztcbmRyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmM6MTIzNjpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnBlZ2FzdXMtXHUwMDNlY2Fycmllcl9jaGVjayxcbmRyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmMtMTIzNy1cdFx0XHQgICBDQVJSSUVSX0NIRUNLX0RFTEFZKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jPTEyODc9c3RhdGljIGludCBwZWdhc3VzX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jLTEzMDAtXHR9XG5kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jOjEzMDE6XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZwZWdhc3VzLVx1MDAzZWNhcnJpZXJfY2hlY2ssXG5kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jLTEzMDItXHRcdFx0XHRDQVJSSUVSX0NIRUNLX0RFTEFZKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvcjgxNTIuYz03MDU3PXN0YXRpYyB2b2lkIHJ0bF9od19waHlfd29ya19mdW5jX3Qoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9yODE1Mi5jLTcwNzQtXHRcdCAqL1xuZHJpdmVycy9uZXQvdXNiL3I4MTUyLmM6NzA3NTpcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2dHAtXHUwMDNlaHdfcGh5X3dvcmssXG5kcml2ZXJzL25ldC91c2IvcjgxNTIuYy03MDc2LVx0XHRcdFx0ICAgSFogKiAxMCk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3I4MTUyLmM9ODgzNz1zdGF0aWMgaW50IHJ0bDgxNTJfcmVzZXRfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9yODE1Mi5jLTg4NDMtXHR0cC1cdTAwM2VydGxfb3BzLmluaXQodHApO1xuZHJpdmVycy9uZXQvdXNiL3I4MTUyLmM6ODg0NDpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnRwLVx1MDAzZWh3X3BoeV93b3JrLCAwKTtcbmRyaXZlcnMvbmV0L3VzYi9yODE1Mi5jLTg4NDUtXHRzZXRfZXRoZXJuZXRfYWRkcih0cCwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3I4MTUyLmM9MTAxMzA9c3RhdGljIGludCBydGw4MTUyX3Byb2JlX29uY2Uoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3I4MTUyLmMtMTAyOTgtI2VuZGlmXG5kcml2ZXJzL25ldC91c2IvcjgxNTIuYzoxMDI5OTpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnRwLVx1MDAzZWh3X3BoeV93b3JrLCAwKTtcbmRyaXZlcnMvbmV0L3VzYi9yODE1Mi5jLTEwMzAwLVx0c2V0X2V0aGVybmV0X2FkZHIodHAsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYz0xOTE9c3RhdGljIHZvaWQgdHVzYjEyMTBfY2hnX2RldF9zZXRfc3RhdGUoc3RydWN0IHR1c2IxMjEwICp0dXNiLFxuLS1cbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jLTE5OS1cdHR1c2ItXHUwMDNlY2hnX2RldF9zdGF0ZSA9IG5ld19zdGF0ZTtcbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jOjIwMDpcdG1vZF9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZ0dXNiLVx1MDAzZWNoZ19kZXRfd29yayxcbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jLTIwMS1cdFx0XHQgbXNlY3NfdG9famlmZmllcyhkZWxheV9tcykpO1xuLS1cbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jPTM3Nj1zdGF0aWMgaW50IHR1c2IxMjEwX3BzeV9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLFxuLS1cbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jLTM4Mi1cdGlmIChwc3kgIT0gdHVzYi1cdTAwM2Vwc3kgXHUwMDI2XHUwMDI2IHBzeS1cdTAwM2VkZXNjLVx1MDAzZXR5cGUgPT0gUE9XRVJfU1VQUExZX1RZUEVfVVNCKVxuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmM6MzgzOlx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZ0dXNiLVx1MDAzZWNoZ19kZXRfd29yaywgMCk7XG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYy0zODQtXG4tLVxuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmM9NDMyPXN0YXRpYyB2b2lkIHR1c2IxMjEwX3Byb2JlX2NoYXJnZXJfZGV0ZWN0KHN0cnVjdCB0dXNiMTIxMCAqdHVzYilcbi0tXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYy00NjAtXHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZ0dXNiLVx1MDAzZWNoZ19kZXRfd29yaywgdHVzYjEyMTBfY2hnX2RldF93b3JrKTtcbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jOjQ2MTpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnR1c2ItXHUwMDNlY2hnX2RldF93b3JrLCAyICogSFopO1xuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmMtNDYyLVxuLS1cbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYz0yMjA9c3RhdGljIHNzaXplX3Qgc3RvcmVfcmVjb25uZWN0X2RlbGF5KHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmMtMjM2LVx0ICAgIHJwb3J0LVx1MDAzZXN0YXRlICE9IFNSUF9SUE9SVF9SVU5OSU5HKSB7XG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmM6MjM3Olx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZycG9ydC1cdTAwM2VyZWNvbm5lY3Rfd29yayxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy0yMzgtXHRcdFx0XHQgICBkZWxheSAqIEhaKTtcbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmM9Mzc4PXN0YXRpYyB2b2lkIHNycF9yZWNvbm5lY3Rfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTM5Mi1cdFx0aWYgKGRlbGF5IFx1MDAzZSAwKVxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jOjM5MzpcdFx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTM5NC1cdFx0XHRcdFx0ICAgXHUwMDI2cnBvcnQtXHUwMDNlcmVjb25uZWN0X3dvcmssIGRlbGF5ICogSFopO1xuLS1cbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYz00NjE9c3RhdGljIHZvaWQgX19zcnBfc3RhcnRfdGxfZmFpbF90aW1lcnMoc3RydWN0IHNycF9ycG9ydCAqcnBvcnQpXG4tLVxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTQ3Ni1cdGlmIChkZWxheSBcdTAwM2UgMClcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYzo0Nzc6XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnJwb3J0LVx1MDAzZXJlY29ubmVjdF93b3JrLFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTQ3OC1cdFx0XHRcdCAgIDFVTCAqIGRlbGF5ICogSFopO1xuLS1cbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy00ODQtXHRcdGlmIChmYXN0X2lvX2ZhaWxfdG1vIFx1MDAzZT0gMClcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYzo0ODU6XHRcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy00ODYtXHRcdFx0XHRcdCAgIFx1MDAyNnJwb3J0LVx1MDAzZWZhc3RfaW9fZmFpbF93b3JrLFxuLS1cbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy00ODgtXHRcdGlmIChkZXZfbG9zc190bW8gXHUwMDNlPSAwKVxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jOjQ4OTpcdFx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTQ5MC1cdFx0XHRcdFx0ICAgXHUwMDI2cnBvcnQtXHUwMDNlZGV2X2xvc3Nfd29yayxcbi0tXG5mcy9mdXNlL2RheC5jPTEwOD1fX2tpY2tfZG1hcF9mcmVlX3dvcmtlcihzdHJ1Y3QgZnVzZV9jb25uX2RheCAqZmNkLCB1bnNpZ25lZCBsb25nIGRlbGF5X21zKVxuLS1cbmZzL2Z1c2UvZGF4LmMtMTE1LVx0aWYgKGZjZC1cdTAwM2Vucl9mcmVlX3JhbmdlcyBcdTAwM2MgZnJlZV90aHJlc2hvbGQpXG5mcy9mdXNlL2RheC5jOjExNjpcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2ZmNkLVx1MDAzZWZyZWVfd29yayxcbmZzL2Z1c2UvZGF4LmMtMTE3LVx0XHRcdFx0ICAgbXNlY3NfdG9famlmZmllcyhkZWxheV9tcykpO1xuLS1cbmluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmg9NDE4PWVudW0gd3FfY29uc3RzIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oLTQ0NC0gKlxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaDo0NDU6ICogc3lzdGVtX2RmbF9sb25nX3dxIGlzIHNpbWlsYXIgdG8gc3lzdGVtX2RmbF93cSBidXQgaXQgbWF5IGhvc3QgbG9uZyBydW5uaW5nXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oLTQ0Ni0gKiB3b3Jrcy5cbi0tXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oPTQ3NT1leHRlcm4gc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnN5c3RlbV9iaF9oaWdocHJpX3dxO1xuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaDo0NzY6ZXh0ZXJuIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpzeXN0ZW1fZGZsX2xvbmdfd3E7XG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oLTQ3Ny1cbi0tXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oPTc5Nj1leHRlcm4gdm9pZCBfX3dhcm5fZmx1c2hpbmdfc3lzdGVtd2lkZV93cSh2b2lkKVxuLS1cbmluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgtODE1LVx0ICAgICBfd3EgPT0gc3lzdGVtX2xvbmdfd3EpIHx8XHRcdFx0XHRcdFxcXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oOjgxNjpcdCAgICAoX19idWlsdGluX2NvbnN0YW50X3AoX3dxID09IHN5c3RlbV9kZmxfbG9uZ193cSkgXHUwMDI2XHUwMDI2XHRcdFxcXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oOjgxNzpcdCAgICAgX3dxID09IHN5c3RlbV9kZmxfbG9uZ193cSkgfHxcdFx0XHRcdFx0XFxcbmluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgtODE4LVx0ICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcChfd3EgPT0gc3lzdGVtX2RmbF93cSkgXHUwMDI2XHUwMDI2XHRcdFxcXG4tLVxua2VybmVsL3dvcmtxdWV1ZS5jPTU0NT1FWFBPUlRfU1lNQk9MX0dQTChzeXN0ZW1fYmhfaGlnaHByaV93cSk7XG5rZXJuZWwvd29ya3F1ZXVlLmM6NTQ2OnN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpzeXN0ZW1fZGZsX2xvbmdfd3EgX19yb19hZnRlcl9pbml0O1xua2VybmVsL3dvcmtxdWV1ZS5jOjU0NzpFWFBPUlRfU1lNQk9MX0dQTChzeXN0ZW1fZGZsX2xvbmdfd3EpO1xua2VybmVsL3dvcmtxdWV1ZS5jLTU0OC1cbi0tXG5rZXJuZWwvd29ya3F1ZXVlLmM9Nzk3MT12b2lkIF9faW5pdCB3b3JrcXVldWVfaW5pdF9lYXJseSh2b2lkKVxuLS1cbmtlcm5lbC93b3JrcXVldWUuYy04MDcwLVx0XHRcdFx0XHQgICAgICAgV1FfQkggfCBXUV9ISUdIUFJJIHwgV1FfUEVSQ1BVLCAwKTtcbmtlcm5lbC93b3JrcXVldWUuYzo4MDcxOlx0c3lzdGVtX2RmbF9sb25nX3dxID0gYWxsb2Nfd29ya3F1ZXVlKFwmIzM0O2V2ZW50c19kZmxfbG9uZ1wmIzM0OywgV1FfVU5CT1VORCwgV1FfTUFYX0FDVElWRSk7XG5rZXJuZWwvd29ya3F1ZXVlLmMtODA3Mi1cdEJVR19PTighc3lzdGVtX3dxIHx8ICFzeXN0ZW1fcGVyY3B1X3dxfHwgIXN5c3RlbV9oaWdocHJpX3dxIHx8ICFzeXN0ZW1fbG9uZ193cSB8fFxuLS1cbmtlcm5lbC93b3JrcXVldWUuYy04MDc1LVx0ICAgICAgICFzeXN0ZW1fZnJlZXphYmxlX3Bvd2VyX2VmZmljaWVudF93cSB8fFxua2VybmVsL3dvcmtxdWV1ZS5jOjgwNzY6XHQgICAgICAgIXN5c3RlbV9iaF93cSB8fCAhc3lzdGVtX2JoX2hpZ2hwcmlfd3EgfHwgIXN5c3RlbV9kZmxfbG9uZ193cSk7XG5rZXJuZWwvd29ya3F1ZXVlLmMtODA3Ny19XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz0yNDM9c3RhdGljIGlubGluZSBpbnQgaXBfdnNfY29ubl9oYXNoKHN0cnVjdCBpcF92c19jb25uICpjcClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTI4Ny1cdCAgICAhdGVzdF9hbmRfc2V0X2JpdChJUF9WU19XT1JLX0NPTk5fUkVTSVpFLCBcdTAwMjZpcHZzLVx1MDAzZXdvcmtfZmxhZ3MpKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoyODg6XHRcdG1vZF9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZpcHZzLVx1MDAzZWNvbm5fcmVzaXplX3dvcmssIDApO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0yODktXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz04MDA9c3RhdGljIHZvaWQgY29ubl9yZXNpemVfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTkxOC1cdC8qIE1vbml0b3IgaWYgd2UgbmVlZCB0byBzaHJpbmsgdGFibGUgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6OTE5Olx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2aXB2cy1cdTAwM2Vjb25uX3Jlc2l6ZV93b3JrLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy05MjAtXHRcdFx0ICAgbW9yZV93b3JrID8gMSA6IDIgKiBIWik7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTY3MD1zdGF0aWMgdm9pZCBzdmNfcmVzaXplX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTgyMy1cdFx0cmV0dXJuO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjgyNDpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmlwdnMtXHUwMDNlc3ZjX3Jlc2l6ZV93b3JrLCAxKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy04MjUtXHRyZXR1cm47XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTE3MDk9aXBfdnNfYWRkX3NlcnZpY2Uoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBpcF92c19zZXJ2aWNlX3VzZXJfa2VybiAqdSxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTg3MS1cdGlmIChncm93IFx1MDAyNlx1MDAyNiAhdGVzdF9hbmRfc2V0X2JpdChJUF9WU19XT1JLX1NWQ19SRVNJWkUsIFx1MDAyNmlwdnMtXHUwMDNld29ya19mbGFncykpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTg3MjpcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2aXB2cy1cdTAwM2VzdmNfcmVzaXplX3dvcmssXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTg3My1cdFx0XHRcdCAgIDEpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0yMDg2PXN0YXRpYyBpbnQgaXBfdnNfZGVsX3NlcnZpY2Uoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjEyNy1cdFx0XHRcdFx0XHRcdTAwMjZpcHZzLVx1MDAzZXdvcmtfZmxhZ3MpKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjIxMjg6XHRcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yMTI5LVx0XHRcdFx0XHQgICBcdTAwMjZpcHZzLVx1MDAzZXN2Y19yZXNpemVfd29yaywgMSk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTI1ODk9c3RhdGljIGludCBpcHZzX3Byb2NfY29ubl9sZmFjdG9yKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBpbnQgd3JpdGUsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTI2MDgtXHRcdFx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihpcHZzLVx1MDAzZWNvbm5fdGFiKSlcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoyNjA5Olx0XHRcdFx0bW9kX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjYxMC1cdFx0XHRcdFx0XHQgXHUwMDI2aXB2cy1cdTAwM2Vjb25uX3Jlc2l6ZV93b3JrLCAwKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MjYxNj1zdGF0aWMgaW50IGlwdnNfcHJvY19zdmNfbGZhY3Rvcihjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50IHdyaXRlLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yNjQwLVx0XHRcdFx0ICAgICAgXHUwMDI2aXB2cy1cdTAwM2V3b3JrX2ZsYWdzKSlcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoyNjQxOlx0XHRcdFx0bW9kX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjY0Mi1cdFx0XHRcdFx0XHQgXHUwMDI2aXB2cy1cdTAwM2VzdmNfcmVzaXplX3dvcmssIDApO1xuLS1cbm5ldC9zdW5ycGMveHBydHJkbWEvdHJhbnNwb3J0LmM9NDgwPXhwcnRfcmRtYV9jb25uZWN0KHN0cnVjdCBycGNfeHBydCAqeHBydCwgc3RydWN0IHJwY190YXNrICp0YXNrKVxuLS1cbm5ldC9zdW5ycGMveHBydHJkbWEvdHJhbnNwb3J0LmMtNDkzLVx0dHJhY2VfeHBydHJkbWFfb3BfY29ubmVjdChyX3hwcnQsIGRlbGF5KTtcbm5ldC9zdW5ycGMveHBydHJkbWEvdHJhbnNwb3J0LmM6NDk0Olx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2cl94cHJ0LVx1MDAzZXJ4X2Nvbm5lY3Rfd29ya2VyLFxubmV0L3N1bnJwYy94cHJ0cmRtYS90cmFuc3BvcnQuYy00OTUtXHRcdFx0ICAgZGVsYXkpO1xuLS1cbnNvdW5kL3NvYy9jb2RlY3MvY3M0Mmw0My1qYWNrLmM9Nzk3PWlycXJldHVybl90IGNzNDJsNDNfdGlwX3NlbnNlKGludCBpcnEsIHZvaWQgKmRhdGEpXG4tLVxuc291bmQvc29jL2NvZGVjcy9jczQybDQzLWphY2suYy04MDgtXG5zb3VuZC9zb2MvY29kZWNzL2NzNDJsNDMtamFjay5jOjgwOTpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnByaXYtXHUwMDNldGlwX3NlbnNlX3dvcmssXG5zb3VuZC9zb2MvY29kZWNzL2NzNDJsNDMtamFjay5jLTgxMC1cdFx0XHQgICBtc2Vjc190b19qaWZmaWVzKGRiX2RlbGF5KSk7XG4tLVxuc291bmQvc29jL2NvZGVjcy9jczQybDQzLWphY2suYz05MDY9aW50IGNzNDJsNDNfamFja19wdXQoc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKVxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvY3M0Mmw0My1qYWNrLmMtOTM1LVx0aWYgKCFvdmVycmlkZSkge1xuc291bmQvc29jL2NvZGVjcy9jczQybDQzLWphY2suYzo5MzY6XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnByaXYtXHUwMDNldGlwX3NlbnNlX3dvcmssXG5zb3VuZC9zb2MvY29kZWNzL2NzNDJsNDMtamFjay5jLTkzNy1cdFx0XHRcdCAgIDApO1xuLS1cbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM9MjMxND1zdGF0aWMgdm9pZCBydDU2NDBfamFja193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTIzOTktXHRcdCAqL1xuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYzoyNDAwOlx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZydDU2NDAtXHUwMDNlamFja193b3JrLCAwKTtcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmMtMjQwMS1cdH1cbi0tXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jPTI0MDQ9c3RhdGljIGlycXJldHVybl90IHJ0NTY0MF9pcnEoaW50IGlycSwgdm9pZCAqZGF0YSlcbi0tXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI0MTItXHRpZiAocnQ1NjQwLVx1MDAzZWphY2spXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jOjI0MTM6XHRcdG1vZF9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZydDU2NDAtXHUwMDNlamFja193b3JrLFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNDE0LVx0XHRcdFx0IGRlbGF5KTtcbi0tXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jPTI0MTk9c3RhdGljIGlycXJldHVybl90IHJ0NTY0MF9qZF9ncGlvX2lycShpbnQgaXJxLCB2b2lkICpkYXRhKVxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmMtMjQyMi1cbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM6MjQyMzpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnJ0NTY0MC1cdTAwM2VqYWNrX3dvcmssXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI0MjQtXHRcdFx0ICAgbXNlY3NfdG9famlmZmllcyhKQUNLX1NFVFRMRV9USU1FKSk7XG4tLVxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYz0yNDk1PXN0YXRpYyB2b2lkIHJ0NTY0MF9lbmFibGVfamFja19kZXRlY3Qoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQsXG4tLVxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNTg0LVx0Lyogc3luYyBpbml0aWFsIGphY2sgc3RhdGUgKi9cbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM6MjU4NTpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnJ0NTY0MC1cdTAwM2VqYWNrX3dvcmssIDApO1xuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNTg2LX1cbi0tXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jPTI1OTQ9c3RhdGljIHZvaWQgcnQ1NjQwX2VuYWJsZV9oZGFfamFja19kZXRlY3QoXG4tLVxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNjM3LVx0Lyogc3luYyBpbml0aWFsIGphY2sgc3RhdGUgKi9cbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM6MjYzODpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnJ0NTY0MC1cdTAwM2VqYWNrX3dvcmssIDApO1xuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNjM5LVxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM9MjgyNj1zdGF0aWMgaW50IHJ0NTY0MF9yZXN1bWUoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQpXG4tLVxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yODY1LVx0XHRlbmFibGVfaXJxKHJ0NTY0MC1cdTAwM2VpcnEpO1xuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYzoyODY2Olx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZydDU2NDAtXHUwMDNlamFja193b3JrLCAwKTtcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmMtMjg2Ny1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxNDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjU3MgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDUzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aCBGdXp6aW5nIFRoaXMgUGF0Y2g/KioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3dpdGNoaW5nIG91dCBgc3lzdGVtX2xvbmdfd3FgIGZvciBgc3lzdGVtX2RmbF9sb25nX3dxYCBpbiBhIGJ1bmNoIG9mIGRyaXZlcnMuIFJpZ2h0IGF3YXksIG15IGV4cGVydCBicmFpbiBraWNrcyBpbiDigJMgaXMgdGhpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlPyBJdCAqaXMqLCBpdCYjMzk7cyBjaGFuZ2luZyB0aGUgd29ya3F1ZXVlIGJlaW5nIHVzZWQuIE5vdywgdGhlIHF1ZXN0aW9uIGlzLCBpcyBpdCAqd29ydGgqIGZ1enppbmc/IEkgbWVhbiwgdGhlIHByb21wdCBzYXlzIG5vdCB0byBib3RoZXIgaWYgaXQmIzM5O3MganVzdCBkb2NzLCBjb21tZW50cywgbG9nZ2luZywgb3IgdHJpdmlhbCBjb25zdGFudCBjaGFuZ2VzLiBDaGFuZ2luZyB0aGUgd29ya3F1ZXVlIGRlZmluaXRlbHkgKmlzbiYjMzk7dCogdHJpdmlhbC4KCk9rYXksIHNvIGNoYW5naW5nIHRoZSB3b3JrcXVldWUgKmlzKiBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBidXQgZG9lcyBpdCByZWFsbHkgaW50cm9kdWNlIG5ldyBsb2dpYyB0aGF04oCZcyByaXBlIGZvciBmdXp6aW5nPyBJdCBqdXN0IGNoYW5nZXMgKndoaWNoKiB0aHJlYWQgcnVucyB0aGUgd29yay4gQnV0IHdhaXQhIElmIGl0JiMzOTtzIGZ1bmN0aW9uYWwsIHRoZSBwcm9tcHQgc3VnZ2VzdHMgSSBzaG91bGQgc2F5IFdvcnRoRnV6emluZz10cnVlLgoKQnV0IHdoYXQgZnVuY3Rpb25zIGRvIEkgY2FyZSBhYm91dCBmb2N1c2luZyBvbj8gTG9va2luZyBhdCB0aGUgY29kZSwgaXTigJlzIGdvaW5nIHRvIGJlIHRoZXNlIHdvcmsgZnVuY3Rpb25zOiBgX19pYm12bmljX3Jlc2V0YCwgYGlibXZuaWNfcmVzZXRgLCBgZW1hY19uZG9fb3BlbmAsIGBpY3NzZ19zdGF0c193b3JrX2hhbmRsZXJgLCBgc3RhcnRfbG9naW5gLCBgdGJuZXRfaGFuZGxlX3BhY2tldGAsIGB0Ym5ldF9sb2dpbl93b3JrYCwgYGNoZWNrX2NhcnJpZXJgLCBgcGVnYXN1c19wcm9iZWAsIGBwZWdhc3VzX3Jlc3VtZWAsIGBydGxfaHdfcGh5X3dvcmtfZnVuY190YCwgYHJ0bDgxNTJfcmVzZXRfcmVzdW1lYCwgYHJ0bDgxNTJfcHJvYmVfb25jZWAuCgpIYW5nIG9uLCBgcGVnYXN1c2AgYW5kIGByODE1MmAuLi4gdGhvc2UgYXJlIFVTQiBuZXR3b3JrIGRyaXZlcnMsIHJpZ2h0PyBTbywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoYXQgYHN5c3RlbV9kZmxfbG9uZ193cWAgaXMgYSAqbmV3KiB3b3JrcXVldWUsIG9yIGlmIGl0JiMzOTtzIGp1c3QgYSByZW5hbWUuIEFoLCBpdCBsb29rcyBsaWtlIGBzeXN0ZW1fZGZsX2xvbmdfd3FgIGlzIGEgbmV3IHdvcmtxdWV1ZSBvciBhbiBleGlzdGluZyBvbmUsIGFuZCB0aGlzIGlzIGFib3V0IHJlcGxhY2luZyBgc3lzdGVtX2xvbmdfd3FgIHdpdGggYHN5c3RlbV9kZmxfbG9uZ193cWAgdG8gYXZvaWQgaXNzdWVzIHdpdGggYHN5c3RlbV9sb25nX3dxYC4KClNvLCAqaXMqIHRoaXMgd29ydGggZnV6emluZz8gWWVzISBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwga2VybmVsIGNoYW5nZS4gTm93IEkgbmVlZCB0byBleHRyYWN0IHRoZSBjb25maWdzIGZvciBgcGVnYXN1c2AgYW5kIGByODE1MmAgdG8gZ2V0IHRoaW5ncyByb2xsaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE0OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfUEVHQVNVUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZz0zND1jb25maWcgVVNCX0tBV0VUSFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTcyLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NzM6Y29uZmlnIFVTQl9QRUdBU1VTXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy03NC1cdHRyaXN0YXRlIFwmIzM0O1VTQiBQZWdhc3VzL1BlZ2FzdXMtSUkgYmFzZWQgZXRoZXJuZXQgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxNDoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzcwNwoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXM6CgoqKkFuYWx5emluZyB0aGUgYFVTQl9SVEw4MTUyYCBNb2R1bGUqKgoKQWxyaWdodCwgdGhlIG9iamVjdGl2ZSBoZXJlIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlIGBVU0JfUlRMODE1MmAuIE15IGV4cGVydGlzZSBsZWFucyB0b3dhcmRzIG5ldHdvcmtpbmcsIGVtYmVkZGVkIHN5c3RlbXMsIGFuZCBwb3RlbnRpYWxseSBoYXJkd2FyZSBpbnRlcmFjdGlvbnMsIHNvIGltbWVkaWF0ZWx5LCBteSBtaW5kIGp1bXBzIHRvIGEgZmV3IHRoaW5ncy4gRmlyc3QsIHRoaXMgbGlrZWx5IHJlbGF0ZXMgdG8gYSBVU0ItdG8tRXRoZXJuZXQgYWRhcHRlciwgc3BlY2lmaWNhbGx5IG9uZSB1c2luZyBhIFJlYWx0ZWsgUlRMODE1MiBjaGlwc2V0LCBnaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24uIEkmIzM5O2QgbmVlZCB0byBjb25zaWRlciB0aGUgZm9sbG93aW5nIGFzcGVjdHMuCgoqICAgKipEcml2ZXIgSW1wbGVtZW50YXRpb246KiogSXMgdGhpcyBhIHVzZXItc3BhY2Ugb3Iga2VybmVsLXNwYWNlIG1vZHVsZT8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBkcml2ZXIgZm9yIGEgc3BlY2lmaWMgb3BlcmF0aW5nIHN5c3RlbSwgbGlrZSBMaW51eCwgV2luZG93cywgb3Igc29tZXRoaW5nIG1vcmUgZW1iZWRkZWQ/IFRoZSBmb2N1cyB3aWxsIHNoaWZ0IGRlcGVuZGluZyBvbiB0aGlzLgoKKiAgICoqVVNCIFByb3RvY29sOioqIEkmIzM5O2xsIHRoaW5rIGFib3V0IHRoZSBVU0IgcHJvdG9jb2wgaXRzZWxmLiBJcyB0aGUgZHJpdmVyIGhhbmRsaW5nIGJ1bGsgdHJhbnNmZXJzLCBpbnRlcnJ1cHQgdHJhbnNmZXJzLCBvciBjb250cm9sIHRyYW5zZmVycz8gVGhlIHNwZWNpZmljIHRyYW5zZmVyIHR5cGVzIHdpbGwgaW1wYWN0IHBlcmZvcm1hbmNlIGFuZCBob3cgdGhlIGRyaXZlciBtYW5hZ2VzIGRhdGEgZmxvdy4gSXMgaXQgVVNCIDIuMCBvciAzLjA/IFRoaXMgd2lsbCBpbmZsdWVuY2Ugc3BlZWRzIGFuZCBmZWF0dXJlcy4KCiogICAqKk5ldHdvcmsgU3RhY2sgSW50ZWdyYXRpb246KiogSG93IGRvZXMgdGhpcyBtb2R1bGUgaW50ZXJhY3Qgd2l0aCB0aGUgbmV0d29yayBzdGFjayAoZS5nLiwgaW4gdGhlIGNhc2Ugb2YgTGludXgsIHdpdGggdGhlIGBuZXRkZXZgIEFQSSk/IERvZXMgaXQgcHJlc2VudCBpdHNlbGYgYXMgYSBzdGFuZGFyZCBFdGhlcm5ldCBpbnRlcmZhY2U/IEFyZSB0aGVyZSBhbnkgY3VzdG9tIG5ldHdvcmsgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzPyBBbnkgbm9uLXN0YW5kYXJkIGZlYXR1cmVzPwoKKiAgICoqQ2hpcHNldC1TcGVjaWZpYyBEZXRhaWxzOioqIFRoZSBSVEw4MTUyIGlzIGEga25vd24gY2hpcCwgc28gSSYjMzk7bGwgd2FudCB0byBxdWlja2x5IGNoZWNrIGZvciBhbnkga25vd24gaXNzdWVzIHdpdGggdGhhdCBkZXZpY2UuIEFyZSB0aGVyZSBhbnkgaGFyZHdhcmUgbGltaXRhdGlvbnMgb3IgZHJpdmVyLXJlbGF0ZWQgYnVncz8gQXJlIHRoZXJlIHNwZWNpZmljIHBvd2VyIG1hbmFnZW1lbnQgY29uc2lkZXJhdGlvbnM/IEFueSB2ZW5kb3Itc3BlY2lmaWMgcXVpcmtzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPwoKKiAgICoqRXJyb3IgSGFuZGxpbmc6KiogV2hhdCBraW5kIG9mIGVycm9yIGhhbmRsaW5nIGlzIGltcGxlbWVudGVkPyBIb3cgZG9lcyBpdCBkZWFsIHdpdGggVVNCIGVycm9ycywgbmV0d29yayB0cmFuc21pc3Npb24gZXJyb3JzLCBhbmQgcG90ZW50aWFsIGhhcmR3YXJlIGZhaWx1cmVzPyBJcyB0aGVyZSBhcHByb3ByaWF0ZSByZXBvcnRpbmcgb3IgcmVjb3ZlcnkgbWVjaGFuaXNtcz8KCkVzc2VudGlhbGx5LCBJIHdhbnQgdG8gZm9ybSBhIG1lbnRhbCBtb2RlbCBvZiBob3cgdGhpcyBtb2R1bGUgaW50ZXJmYWNlcyB3aXRoIHRoZSBoYXJkd2FyZSwgaW50ZXJhY3RzIHdpdGggdGhlIG9wZXJhdGluZyBzeXN0ZW0gKG9yIGJhcmUtbWV0YWwgc3lzdGVtKSwgYW5kIHByb3ZpZGVzIG5ldHdvcmsgY29ubmVjdGl2aXR5LiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hldGhlciBJJiMzOTttIGxvb2tpbmcgYXQgc291cmNlIGNvZGUsIGRvY3VtZW50YXRpb24sIG9yIHNpbXBseSBhIG5hbWUsIGJlY2F1c2UgbXkgYXBwcm9hY2ggdG8gdW5kZXJzdGFuZGluZyB3aWxsIHZhcnkgYmFzZWQgb24gdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxNDoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX1JUTDgxNTImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWc9ODg9Y29uZmlnIFVTQl9SVEw4MTUwXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctOTgtXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo5OTpjb25maWcgVVNCX1JUTDgxNTJcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTEwMC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgUlRMODE1Mi9SVEw4MTUzIEJhc2VkIFVTQiBFdGhlcm5ldCBBZGFwdGVyc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE0OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MzMyCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgQXNzZXNzbWVudDogTmV0d29yayBWYXJpYWJsZSBJbnNwZWN0aW9uKioKCkFscmlnaHQsIHRoZSBmaXJzdCB0aGluZyBJJiMzOTttIGRvaW5nIGlzIHplcm9pbmcgaW4gb24gYFRIVU5ERVJCT0xUX05FVGAuIFRoYXQmIzM5O3MgdGhlIGtleSB2YXJpYWJsZSBvZiBpbnRlcmVzdCBoZXJlLiBHaXZlbiB0aGF0IEkmIzM5O20gZGVhbGluZyB3aXRoIFRodW5kZXJib2x0LCBpdCYjMzk7cyBoaWdobHkgbGlrZWx5IHRoaXMgdmFyaWFibGUgaG9sZHMgY3J1Y2lhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbmV0d29yayBjb25maWd1cmF0aW9uLCBkZXZpY2Ugc3RhdHVzLCBvciBwZXJoYXBzIGV2ZW4gdGhlIGxpbmsmIzM5O3Mgb3BlcmF0aW9uYWwgcGFyYW1ldGVycy4gSSBpbW1lZGlhdGVseSB3YW50IHRvIHVuZGVyc3RhbmQgaXRzIHNjb3BlIGFuZCBjb250ZW50LiBUaGlzIGNvdWxkIGJlIGFueXRoaW5nIGZyb20gdGhlIElQIGFkZHJlc3MgYXNzaWdubWVudHMgYXNzb2NpYXRlZCB3aXRoIFRodW5kZXJib2x0IGRldmljZXMsIHRvIHdoZXRoZXIgYSBUaHVuZGVyYm9sdCBjb250cm9sbGVyIGhhcyBpbml0aWF0ZWQuIEkgaGF2ZSB0byBzZWUgd2hhdCB0aGlzIHZhcmlhYmxlIGNvbnRhaW5zLiBJdCBpcyB0aGUgYmVnaW5uaW5nIG9mIGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE0OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRIVU5ERVJCT0xUX05FVCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE0OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NTMyCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBhIFRodW5kZXJib2x0IElzc3VlIGluIHRoZSBLZXJuZWwqKgoKUmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSYjMzk7dmUgZ290IGEgVGh1bmRlcmJvbHQgaXNzdWUgdG8gbG9vayBpbnRvLCBhbmQgdGhlIGZpcnN0IHBsYWNlIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gaXMgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMuIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoZSBgZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvS2NvbmZpZ2AgZmlsZSwgb3Igc29tZXRoaW5nIGFuYWxvZ291cywgaXMgbGlrZWx5IHdoZXJlIEkmIzM5O2xsIGZpbmQgdGhlIHByaW1hcnkgc2V0dGluZ3MgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhlIFRodW5kZXJib2x0IG5ldHdvcmsgZHJpdmVyLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgY29uZmlndXJlZCBhbmQgaWYgdGhlcmUgbWlnaHQgYmUgYSBzaW1wbGUgY29uZmlnIG9wdGlvbiB0aGF0JiMzOTtzIG1pc3NldCBvciBjYXVzaW5nIHRoZSB0cm91YmxlLiBNaWdodCBhcyB3ZWxsIHN0YXJ0IHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxNDoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0aHVuZGVyYm9sdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz01OTQ9Y29uZmlnIEZVSklUU1VfRVNcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwMC1cbmRyaXZlcnMvbmV0L0tjb25maWc6NjAxOnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC90aHVuZGVyYm9sdC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnLTYwMi1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTQ6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4MTYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBjb2RlOgoKKipDaGVja2luZyBUaHVuZGVyYm9sdCBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIFRodW5kZXJib2x0IG5ldHdvcmsgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBzdGFydCBieSBsb29raW5nIGF0IGBkcml2ZXJzL25ldC90aHVuZGVyYm9sdC9LY29uZmlnYC4gVGhpcyBpcyB0aGUgc3RhbmRhcmQgcHJvY2VkdXJlIOKAkyB0aGUgS2NvbmZpZyBmaWxlIHdpbGwgZGVmaW5lIGFsbCB0aGUgb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBkcml2ZXIsIGhvdyB0aGV5JiMzOTtyZSBzdHJ1Y3R1cmVkLCBhbnkgZGVwZW5kZW5jaWVzLCBhbmQgaG9wZWZ1bGx5IHByb3ZpZGUgc29tZSBoZWxwZnVsIGRvY3VtZW50YXRpb24uIEl0JiMzOTtzIHRoZSBjZW50cmFsIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGRyaXZlciBpcyBjb25maWd1cmVkLCBlbmFibGVkLCBvciBkaXNhYmxlZC4gSSBuZWVkIHRvIGdldCBhIHF1aWNrIG92ZXJ2aWV3IG9mIHdoYXQgY29uZmlndXJhdGlvbnMgYXJlIGF2YWlsYWJsZSBzbyB0aGF0IEkgY2FuIGZpZ3VyZSBvdXQgd2hhdCBpcyBnb2luZyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTQ6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC90aHVuZGVyYm9sdC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBVU0I0X05FVFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TmV0d29ya2luZyBvdmVyIFVTQjQgYW5kIFRodW5kZXJib2x0IGNhYmxlc1wmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBVU0I0IFx1MDAyNlx1MDAyNiBJTkVUXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFNlbGVjdCB0aGlzIGlmIHlvdSB3YW50IHRvIGNyZWF0ZSBuZXR3b3JrIGJldHdlZW4gdHdvIGNvbXB1dGVyc1xuICAgNzpcdFx0ICBvdmVyIGEgVVNCNCBhbmQgVGh1bmRlcmJvbHQgY2FibGVzLiBUaGUgZHJpdmVyIHN1cHBvcnRzIEFwcGxlXG4gICA4Olx0XHQgIFRodW5kZXJib2x0SVAgcHJvdG9jb2wgYW5kIGFsbG93cyBjb21tdW5pY2F0aW9uIHdpdGggYW55IGhvc3RcbiAgIDk6XHRcdCAgc3VwcG9ydGluZyB0aGUgc2FtZSBwcm90b2NvbCBpbmNsdWRpbmcgV2luZG93cyBhbmQgbWFjT1MuXG4gIDEwOlx0XG4gIDExOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGUgd2lsbCBiZVxuICAxMjpcdFx0ICBjYWxsZWQgdGh1bmRlcmJvbHRfbmV0LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxNDoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTE4OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipOYXZpZ2F0aW5nIHRoZSBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBuZXR3b3JraW5nLCBzcGVjaWZpY2FsbHkgVVNCNC4gVGhlIGNsdWUgaGVyZSBpcyBgVVNCNF9ORVRgLCBzbyB0aGF0IHBvaW50cyBtZSBkaXJlY3RseSB0byB0aGUgY29uZmlndXJhdGlvbi4gTXkgZmlyc3QgbW92ZSB3aWxsIGJlIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZXMuIExldCYjMzk7cyBzZWUuLi4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHNldHRpbmdzIHJlbGF0ZWQgdG8gdGhpcyBVU0I0IG5ldHdvcmsgZGV2aWNlLCBzaW5jZSAmIzM0O2libSYjMzQ7IHNlZW1zIGEgYml0IHZhZ3VlIGFzIGEgdmVuZG9yLCBhbmQgbGlrZWx5IGVuY29tcGFzc2VzIG1vcmUgdGhhbiBvbmUgZ2VuZXJhdGlvbiBvZiBkZXZpY2UgZHJpdmVyLiBUaGF0IGBLY29uZmlnYCBmaWxlIGlzIGdvaW5nIHRvIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGlzIGFsbCB3aXJlZCB0b2dldGhlci4gSSBleHBlY3QgdG8gZmluZCBvdXQgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBoYXJkd2FyZSByZXF1aXJlbWVudHMgb3IgcGxhdGZvcm0gZGVwZW5kZW5jaWVzIEkgbmVlZCB0byB0YWtlIGludG8gYWNjb3VudC4gVGltZSB0byBjcmFjayB0aGF0IGZpbGUgb3Blbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTQ6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWJtdm5pYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9LY29uZmlnPTQ1PWNvbmZpZyBJQk1WTklDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL0tjb25maWctNTItXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGUgd2lsbFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL0tjb25maWc6NTM6XHQgIGJlIGNhbGxlZCBpYm12bmljLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL0tjb25maWctNTQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE0OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NTQ2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqSUJNVk5JQyBEZWVwIERpdmUqKgoKT2theSwgc28gdGhlIG5hbWUgYElCTVZOSUNgIHBvcHMgaW50byBteSBoZWFkLiBJbW1lZGlhdGVseSwgbXkgaW50ZXJuYWwgcmFkYXIgcGluZ3MgdGhlIGtlcm5lbCBzb3VyY2UgdHJlZS4gJiMzNDtBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGggdGhhdCBkcml2ZXIuJiMzNDsgTXkgdGhvdWdodCBwcm9jZXNzIGp1bXBzIGRpcmVjdGx5IHRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBnby10byBwbGFjZSBmb3IgdmVuZG9yLXNwZWNpZmljIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb25zLCBhbmQgVEkgaXMgYSBsaWtlbHkgY2FuZGlkYXRlIGZvciBhIG5ldHdvcmsgY29tcG9uZW50IGludm9sdmVkIHdpdGggSUJNLiBJJiMzOTttIGltbWVkaWF0ZWx5IHRyeWluZyB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGBJQk1WTklDYCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZSwgYW5kIHRoYXQgS2NvbmZpZyBmaWxlIHdpbGwgaWxsdW1pbmF0ZSBkZXBlbmRlbmNpZXMsIGJ1aWxkIG9wdGlvbnMsIGFuZCBwb3NzaWJseSBldmVuIHRoZSBvdmVyYWxsIGRlc2lnbiBwaGlsb3NvcGh5IHRoYXQgaW50ZWdyYXRlcyB0aGUgSUJNIGFuZCBUSSBjb21wb25lbnRzIGlmIHRoYXQmIzM5O3MgdGhlIHBhdGguIEkmIzM5O20gZXNzZW50aWFsbHkgcmV2ZXJzZS1lbmdpbmVlcmluZyB0aGUgdGhvdWdodCBwcm9jZXNzIG9mIGhvdyB0byBpbmNsdWRlIG9yIGV4Y2x1ZGUgYSBkcml2ZXIgaW4gdGhlIGJ1aWxkIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE0OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWNzc2cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTQ6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU4MDgKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB3aGF0IEkmIzM5O2QgYmUgZG9pbmc6CgoqKkludmVzdGlnYXRpbmcgUFJVIENvbmZpZ3VyYXRpb24gZm9yIEV0aGVybmV0IERyaXZlcnMqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IFBSVSAoUHJvZ3JhbW1hYmxlIFJlYWwtdGltZSBVbml0KSBpbnRlZ3JhdGlvbiB3aXRoaW4gdGhlIEV0aGVybmV0IGRyaXZlcnMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlOiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gVEkmIzM5O3MgRXRoZXJuZXQgZGV2aWNlcywgYW5kIG1vcmUgc3BlY2lmaWNhbGx5LCBob3cgdGhlIFBSVSBtaWdodCBiZSBlbmFibGVkIG9yIHVzZWQuIEl0JiMzOTtzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgc3lzdGVtIGlzIHNldCB1cC4gVGhpcyBgS2NvbmZpZ2AgZmlsZSBzaG91bGQgZ2l2ZSBtZSB0aGUgYmFzZSBpbmZvcm1hdGlvbiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGV0aGVyIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGEgZHJpdmVyIHVzaW5nIHRoZSBQUlUsIG9yIHNvbWUgc2VwYXJhdGUgZmVhdHVyZSB3aXRoaW4gdGhlIFRJIGV0aGVybmV0IHN1YnN5c3RlbSB0aGF0IGludm9sdmVzIHRoZSBQUlUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE0OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BSVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz0xNjk9Y29uZmlnIFRMQU5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTE4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MTg2OmNvbmZpZyBUSV9JQ1NTR19QUlVFVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MTg3Olx0dHJpc3RhdGUgXCYjMzQ7VEkgR2lnYWJpdCBQUlUgRXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTE4OC1cdHNlbGVjdCBQSFlMSUJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTE5MC1cdHNlbGVjdCBUSV9LM19DUFBJX0RFU0NfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoxOTE6XHRkZXBlbmRzIG9uIFBSVV9SRU1PVEVQUk9DXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTE5Mi1cdGRlcGVuZHMgb24gTkVUX1NXSVRDSERFVlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTk2LVx0aGVscFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoxOTc6XHQgIFN1cHBvcnQgZHVhbCBHaWdhYml0IEV0aGVybmV0IHBvcnRzIG92ZXIgdGhlIElDU1NHIFBSVSBTdWJzeXN0ZW0uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTE5OC1cdCAgVGhpcyBzdWJzeXN0ZW0gaXMgYXZhaWxhYmxlIHN0YXJ0aW5nIHdpdGggdGhlIEFNNjUgcGxhdGZvcm0uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTE5OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjAwOlx0ICBUaGlzIGRyaXZlciByZXF1aXJlcyBmaXJtd2FyZSBiaW5hcmllcyB3aGljaCB3aWxsIHJ1biBvbiB0aGUgUFJVc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yMDEtXHQgIHRvIHN1cHBvcnQgdGhlIEV0aGVybmV0IG9wZXJhdGlvbi4gQ3VycmVudGx5LCBpdCBzdXBwb3J0cyBFdGhlcm5ldFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMDQ6Y29uZmlnIFRJX0lDU1NHX1BSVUVUSF9TUjFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjA1Olx0dHJpc3RhdGUgXCYjMzQ7VEkgR2lnYWJpdCBQUlUgU1IxLjAgRXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIwNi1cdHNlbGVjdCBQSFlMSUJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIwOS1cdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjEwOlx0ZGVwZW5kcyBvbiBQUlVfUkVNT1RFUFJPQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yMTEtXHRkZXBlbmRzIG9uIE5FVF9TV0lUQ0hERVZcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIxNC1cdGhlbHBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjE1Olx0ICBTdXBwb3J0IGR1YWwgR2lnYWJpdCBFdGhlcm5ldCBwb3J0cyBvdmVyIHRoZSBJQ1NTRyBQUlUgU3Vic3lzdGVtLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yMTYtXHQgIFRoaXMgc3Vic3lzdGVtIGlzIGF2YWlsYWJsZSBvbiB0aGUgQU02NSBTUjEuMCBwbGF0Zm9ybS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMTg6XHQgIFRoaXMgZHJpdmVyIHJlcXVpcmVzIGZpcm13YXJlIGJpbmFyaWVzIHdoaWNoIHdpbGwgcnVuIG9uIHRoZSBQUlVzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIxOS1cdCAgdG8gc3VwcG9ydCB0aGUgRXRoZXJuZXQgb3BlcmF0aW9uLiBDdXJyZW50bHksIGl0IHN1cHBvcnRzIEV0aGVybmV0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz0yMjI9Y29uZmlnIFRJX0lDU1NfSUVQXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjIyMzpcdHRyaXN0YXRlIFwmIzM0O1RJIFBSVSBJQ1NTIElFUCBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjI0LVx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMjU6XHRkZXBlbmRzIG9uIFRJX1BSVVNTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjIyNjpcdGRlZmF1bHQgVElfUFJVU1NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjI3LVx0aGVscFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMjg6XHQgIFRoaXMgZHJpdmVyIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIFBSVS1JQ1NTIEluZHVzdHJpYWwgRXRoZXJuZXRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjI5Olx0ICBQZXJpcGhlcmFsIHdpdGhpbiBhIFBSVS1JQ1NTIHN1YnN5c3RlbSBwcmVzZW50IG9uIHZhcmlvdXMgVEkgU29Dcy5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjMwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMzQ6Y29uZmlnIFRJX1BSVUVUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMzU6XHR0cmlzdGF0ZSBcJiMzNDtUSSBQUlUgRXRoZXJuZXQgRU1BQyBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjM2Olx0ZGVwZW5kcyBvbiBQUlVfUkVNT1RFUFJPQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yMzctXHRkZXBlbmRzIG9uIE5FVF9TV0lUQ0hERVZcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTI0MC1cdGhlbHBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjQxOlx0ICBTb21lIFRJIFNvQ3MgaGFzIFByb2dyYW1tYWJsZSBSZWFsdGltZSBVbml0IChQUlUpIGNvcmVzIHdoaWNoIGNhblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yNDItXHQgIHN1cHBvcnQgU2luZ2xlIG9yIER1YWwgRXRoZXJuZXQgcG9ydHMgd2l0aCB0aGUgaGVscCBvZiBmaXJtd2FyZSBjb2RlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjI0MzpcdCAgcnVubmluZyBvbiBQUlUgY29yZXMuIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHJlbW90ZXByb2MgYmFzZWRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjQ0Olx0ICBjb21tdW5pY2F0aW9uIHRvIFBSVSBmaXJtd2FyZSB0byBleHBvc2UgRXRoZXJuZXQgaW50ZXJmYWNlIHRvIExpbnV4LlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yNDUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE0OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MjgzCgkJCQkJCQlvdXRwdXQ6IDI4MAoJCQkJCQkJdGhvdWdodHM6IDEwNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBSZWdyZXNzaW9uIFBvaW50cyBpbiBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZm9jdXMgbGFuZHMgb24gdGhlIGNoYW5nZSBpbnZvbHZpbmcgYFRJX0lDU1NHX1BSVUVUSGAgYW5kIGBUSV9JQ1NTR19QUlVFVEhfU1IxYC4gRmlyc3QsIEkmIzM5O20gY2hlY2tpbmcgdGhlIGNvbmZpZ3VyYXRpb25zLCBhbmQgSSBzZWUgYElCTVZOSUNgLCBgVElfSUNTU0dfUFJVRVRIYCwgYFRJX0lDU1NHX1BSVUVUSF9TUjFgLCBgVVNCNF9ORVRgLCBgVVNCX1BFR0FTVVNgLCBhbmQgYFVTQl9SVEw4MTUyYCBhcmUgYWxsIHJlbGV2YW50LgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGlkZW50aWZ5IGtleSBzeW1ib2xzIHJlbGF0ZWQgdG8gdGhpcy4gSSBtYWtlIGEgbGlzdDogYF9faWJtdm5pY19yZXNldGAsIGBpYm12bmljX3Jlc2V0YCwgYGVtYWNfbmRvX29wZW5gLCBgaWNzc2dfc3RhdHNfd29ya19oYW5kbGVyYCwgYHN0YXJ0X2xvZ2luYCwgYHRibmV0X2hhbmRsZV9wYWNrZXRgLCBgdGJuZXRfbG9naW5fd29ya2AsIGBjaGVja19jYXJyaWVyYCwgYHBlZ2FzdXNfcHJvYmVgLCBgcGVnYXN1c19yZXN1bWVgLCBgcnRsX2h3X3BoeV93b3JrX2Z1bmNfdGAsIGBydGw4MTUyX3Jlc2V0X3Jlc3VtZWAsIGFuZCBgcnRsODE1Ml9wcm9iZV9vbmNlYC4KCk5vdywgSSBzdGFydCB0byBjYXRlZ29yaXplIHRoZXNlLiBgY2hlY2tfY2FycmllcmAgaXMgc3RhdGljIGluIGBwZWdhc3VzLmNgLCB3aGljaCBtYWtlcyBpdCBhIGdvb2QgY2FuZGlkYXRlIGZvciBkZWVwZXIgYW5hbHlzaXMsIGFzIGlzIGBydGxfaHdfcGh5X3dvcmtfZnVuY190YCBmcm9tIGByODE1Mi5jYCwgYW5kIGB0Ym5ldF9sb2dpbl93b3JrYCBpbiBgdGh1bmRlcmJvbHQvbWFpbi5jYC4gYGljc3NnX3N0YXRzX3dvcmtfaGFuZGxlcmAgaXMgZXhwb3J0ZWQgaW4gYGljc3NnX3N0YXRzLmNgIGFuZCBpcyBpbXBvcnRhbnQuIFRoZW4sIEkgcmVtZW1iZXIgdG8gY2hlY2sgaWYgYGVtYWNfbmRvX29wZW5gIGlzIGluIGEgaG90IHBhdGgsIGJ1dCBpdCYjMzk7cyBqdXN0IHRoZSBgbmRvX29wZW5gIGNhbGxiYWNrLCBzbyBpdCYjMzk7cyBub3QgYSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrLiBgdGJuZXRfaGFuZGxlX3BhY2tldGAgaXMgYSBob3QgcGF0aCAocGFja2V0IHJ4L3R4KSwgc28gSSBzaG91bGQgYXZvaWQgaXQuIEJ1dCwgSSBuZWVkIHRvIGtub3cgYWJvdXQgaXQuIFRoZSByZXN0LCBgc3RhcnRfbG9naW5gLCBgdGJuZXRfbG9naW5fd29ya2AsIGBjaGVja19jYXJyaWVyYCwgYHBlZ2FzdXNfcHJvYmVgLCBgcGVnYXN1c19yZXN1bWVgLCBgcnRsX2h3X3BoeV93b3JrX2Z1bmNfdGAsIGBydGw4MTUyX3Jlc2V0X3Jlc3VtZWAsIGBydGw4MTUyX3Byb2JlX29uY2VgLCBgX19pYm12bmljX3Jlc2V0YCwgYW5kIGBpYm12bmljX3Jlc2V0YCBhcmVuJiMzOTt0IGhvdCBwYXRocywgc28gbXkgZm9jdXMgbmFycm93cy4KCkkgcmVmaW5lIG15IGxpc3Q6IGBfX2libXZuaWNfcmVzZXRgLCBgaWJtdm5pY19yZXNldGAsIGBlbWFjX25kb19vcGVuYCwgYGljc3NnX3N0YXRzX3dvcmtfaGFuZGxlcmAsIGBzdGFydF9sb2dpbmAsIGB0Ym5ldF9sb2dpbl93b3JrYCwgYGNoZWNrX2NhcnJpZXJgLCBgcGVnYXN1c19wcm9iZWAsIGBwZWdhc3VzX3Jlc3VtZWAsIGBydGxfaHdfcGh5X3dvcmtfZnVuY190YCwgYHJ0bDgxNTJfcmVzZXRfcmVzdW1lYCwgYHJ0bDgxNTJfcHJvYmVfb25jZWAuCgpPa2F5LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGNoYW5nZSBpdHNlbGYgaXMgd2VsbC11bmRlcnN0b29kLiBJIHJlY2FsbCB0aGF0IGBzeXN0ZW1fZGZsX2xvbmdfd3FgIGlzIGEgc3RhbmRhcmQgd29ya3F1ZXVlLCBkZWZpbmVkIGluIGBrZXJuZWwvd29ya3F1ZXVlLmNgLiBUaGUgcGF0Y2ggKnJlcGxhY2VzKiBgc3lzdGVtX2xvbmdfd3FgIHdpdGggYHN5c3RlbV9kZmxfbG9uZ193cWAuIFRoaXMgaXMgYSAqZnVuY3Rpb25hbCogY2hhbmdlLCBiZWNhdXNlIHRoZSBleGVjdXRpb24gY29udGV4dCAodGhlIHdvcmtxdWV1ZSkgaXMgYWx0ZXJlZC4KCkdpdmVuIHRoZSBjaGFuZ2Ugb2YgdGhlIHdvcmtxdWV1ZSwgYW5kIHRoZSBkcml2ZXJzIGludm9sdmVkIC0gYGlibXZuaWNgLCBgaWNzc2dgLCBgdGh1bmRlcmJvbHRgLCBgcGVnYXN1c2AsIGFuZCBgcjgxNTJgIC0gdGhlIG1haW4gY29uY2VybiBpcyB0aGF0IGNoYW5naW5nIHRoZSB3b3JrcXVldWUgY291bGQgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIGRlYWRsb2Nrcy4gU28sIEkgbmVlZCB0byBmdXp6IHRoZSBhZmZlY3RlZCB3b3JrIGZ1bmN0aW9ucywgbG9va2luZyBhdCB0aGVpciB0cmlnZ2VycyBsaWtlIHByb2JlLCBvcGVuLCByZXNldCwgYW5kIGxvZ2luLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkgY29uZmlybSB0aGF0IGBUSV9JQ1NTR19QUlVFVEhgIGNvdmVycyB0aGUgcmVsZXZhbnQgZmlsZXM6IGBkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguY2AgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zdGF0cy5jYC4KCk15IGZpbmFsIGxpc3Qgb2YgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgaXM6IGBJQk1WTklDYCwgYFRJX0lDU1NHX1BSVUVUSGAsIGBVU0I0X05FVGAsIGBVU0JfUEVHQVNVU2AsIGFuZCBgVVNCX1JUTDgxNTJgLgoKVGhlIGZ1bmRhbWVudGFsIHJlYXNvbmluZyBoZXJlIGlzIHRoYXQgYnkgc3dpdGNoaW5nIHdvcmtxdWV1ZXMsIEkmIzM5O20gcG90ZW50aWFsbHkgYWx0ZXJpbmcgdGhlIGNvbmN1cnJlbmN5IG1vZGVsIHdpdGhpbiB0aGVzZSBkcml2ZXJzLiBJIG5lZWQgdG8gYmUgKmNlcnRhaW4qIHRoZXJlIGFyZSBubyBpbnRyb2R1Y2VkIGNvbmN1cnJlbmN5IGlzc3Vlcy4gTGV0JiMzOTtzIGdldCB0aGUgZnV6emluZyBzZXQgdXAhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE0OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJQk1WTklDJiMzNDssCiAgICAmIzM0O1RJX0lDU1NHX1BSVUVUSCYjMzQ7LAogICAgJiMzNDtVU0I0X05FVCYjMzQ7LAogICAgJiMzNDtVU0JfUEVHQVNVUyYjMzQ7LAogICAgJiMzNDtVU0JfUlRMODE1MiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19faWJtdm5pY19yZXNldCYjMzQ7LAogICAgJiMzNDtpYm12bmljX3Jlc2V0JiMzNDssCiAgICAmIzM0O2VtYWNfbmRvX29wZW4mIzM0OywKICAgICYjMzQ7aWNzc2dfc3RhdHNfd29ya19oYW5kbGVyJiMzNDssCiAgICAmIzM0O3N0YXJ0X2xvZ2luJiMzNDssCiAgICAmIzM0O3RibmV0X2xvZ2luX3dvcmsmIzM0OywKICAgICYjMzQ7Y2hlY2tfY2FycmllciYjMzQ7LAogICAgJiMzNDtwZWdhc3VzX3Byb2JlJiMzNDssCiAgICAmIzM0O3BlZ2FzdXNfcmVzdW1lJiMzNDssCiAgICAmIzM0O3J0bF9od19waHlfd29ya19mdW5jX3QmIzM0OywKICAgICYjMzQ7cnRsODE1Ml9yZXNldF9yZXN1bWUmIzM0OywKICAgICYjMzQ7cnRsODE1Ml9wcm9iZV9vbmNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIHN5c3RlbV9sb25nX3dxIHdpdGggc3lzdGVtX2RmbF9sb25nX3dxIGZvciBzY2hlZHVsaW5nIGRlbGF5ZWQgd29ya3MgaW4gc2V2ZXJhbCBuZXR3b3JrIGRyaXZlcnMgKGlibXZuaWMsIGljc3NnLCB0aHVuZGVyYm9sdCwgcGVnYXN1cywgcjgxNTIpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IG9mIHRoZXNlIHdvcmtzLCBwb3RlbnRpYWxseSBhZmZlY3RpbmcgY29uY3VycmVuY3kgb3IgZGVhZGxvY2tzLiBGdXp6aW5nIHRoZSBhZmZlY3RlZCB3b3JrIGZ1bmN0aW9ucyBhbmQgdGhlaXIgdHJpZ2dlcnMgKGxpa2UgcHJvYmUsIG9wZW4sIHJlc2V0LCBhbmQgbG9naW4pIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lCTVZOSUMmIzM0OywKICAgICYjMzQ7VElfSUNTU0dfUFJVRVRIJiMzNDssCiAgICAmIzM0O1VTQjRfTkVUJiMzNDssCiAgICAmIzM0O1VTQl9QRUdBU1VTJiMzNDssCiAgICAmIzM0O1VTQl9SVEw4MTUyJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19pYm12bmljX3Jlc2V0JiMzNDssCiAgICAmIzM0O2libXZuaWNfcmVzZXQmIzM0OywKICAgICYjMzQ7ZW1hY19uZG9fb3BlbiYjMzQ7LAogICAgJiMzNDtpY3NzZ19zdGF0c193b3JrX2hhbmRsZXImIzM0OywKICAgICYjMzQ7c3RhcnRfbG9naW4mIzM0OywKICAgICYjMzQ7dGJuZXRfbG9naW5fd29yayYjMzQ7LAogICAgJiMzNDtjaGVja19jYXJyaWVyJiMzNDssCiAgICAmIzM0O3BlZ2FzdXNfcHJvYmUmIzM0OywKICAgICYjMzQ7cGVnYXN1c19yZXN1bWUmIzM0OywKICAgICYjMzQ7cnRsX2h3X3BoeV93b3JrX2Z1bmNfdCYjMzQ7LAogICAgJiMzNDtydGw4MTUyX3Jlc2V0X3Jlc3VtZSYjMzQ7LAogICAgJiMzNDtydGw4MTUyX3Byb2JlX29uY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgc3lzdGVtX2xvbmdfd3Egd2l0aCBzeXN0ZW1fZGZsX2xvbmdfd3EgZm9yIHNjaGVkdWxpbmcgZGVsYXllZCB3b3JrcyBpbiBzZXZlcmFsIG5ldHdvcmsgZHJpdmVycyAoaWJtdm5pYywgaWNzc2csIHRodW5kZXJib2x0LCBwZWdhc3VzLCByODE1MikuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyB0aGUgZXhlY3V0aW9uIGNvbnRleHQgb2YgdGhlc2Ugd29ya3MsIHBvdGVudGlhbGx5IGFmZmVjdGluZyBjb25jdXJyZW5jeSBvciBkZWFkbG9ja3MuIEZ1enppbmcgdGhlIGFmZmVjdGVkIHdvcmsgZnVuY3Rpb25zIGFuZCB0aGVpciB0cmlnZ2VycyAobGlrZSBwcm9iZSwgb3BlbiwgcmVzZXQsIGFuZCBsb2dpbikgaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBhcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE0OjE0OjM1LjExMTIyMTcyNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2ODAzNDY4NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklCTVZOSUNcIixcbiAgICBcIlRJX0lDU1NHX1BSVUVUSFwiLFxuICAgIFwiVVNCNF9ORVRcIixcbiAgICBcIlVTQl9QRUdBU1VTXCIsXG4gICAgXCJVU0JfUlRMODE1MlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9faWJtdm5pY19yZXNldFwiLFxuICAgIFwiaWJtdm5pY19yZXNldFwiLFxuICAgIFwiZW1hY19uZG9fb3BlblwiLFxuICAgIFwiaWNzc2dfc3RhdHNfd29ya19oYW5kbGVyXCIsXG4gICAgXCJzdGFydF9sb2dpblwiLFxuICAgIFwidGJuZXRfbG9naW5fd29ya1wiLFxuICAgIFwiY2hlY2tfY2FycmllclwiLFxuICAgIFwicGVnYXN1c19wcm9iZVwiLFxuICAgIFwicGVnYXN1c19yZXN1bWVcIixcbiAgICBcInJ0bF9od19waHlfd29ya19mdW5jX3RcIixcbiAgICBcInJ0bDgxNTJfcmVzZXRfcmVzdW1lXCIsXG4gICAgXCJydGw4MTUyX3Byb2JlX29uY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBzeXN0ZW1fbG9uZ193cSB3aXRoIHN5c3RlbV9kZmxfbG9uZ193cSBmb3Igc2NoZWR1bGluZyBkZWxheWVkIHdvcmtzIGluIHNldmVyYWwgbmV0d29yayBkcml2ZXJzIChpYm12bmljLCBpY3NzZywgdGh1bmRlcmJvbHQsIHBlZ2FzdXMsIHI4MTUyKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIHRoZSBleGVjdXRpb24gY29udGV4dCBvZiB0aGVzZSB3b3JrcywgcG90ZW50aWFsbHkgYWZmZWN0aW5nIGNvbmN1cnJlbmN5IG9yIGRlYWRsb2Nrcy4gRnV6emluZyB0aGUgYWZmZWN0ZWQgd29yayBmdW5jdGlvbnMgYW5kIHRoZWlyIHRyaWdnZXJzIChsaWtlIHByb2JlLCBvcGVuLCByZXNldCwgYW5kIGxvZ2luKSBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIGFyZSBpbnRyb2R1Y2VkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxNDoxNDozNS4xMTEyMzA0MDRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MDI2MzY5NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1MGJlN2ZiOGEzYTM4YjdkNmY2NmU1Y2I0YzcxY2U1YmNhM2M4NTkxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDIwIDE0OjE0OjMyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jXFxuaW5kZXggNWE1MTBlZWQzMzVlYWQuLmQ0YzI4NGM4ZWY0MzdhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jXFxuQEAgLTMyMjksNyArMzIyOSw3IEBAIHN0YXRpYyB2b2lkIF9faWJtdm5pY19yZXNldChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdGlmIChhZGFwdGVyLVxcdTAwM2VzdGF0ZSA9PSBWTklDX1BST0JJTkcgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgICF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXByb2JlX2RvbmUsIHRpbWVvdXQpKSB7XFxuIFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiUmVzZXQgdGhyZWFkIHRpbWVkIG91dCBvbiBwcm9iZVxcXCIpO1xcbi1cXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsXFxuK1xcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXFxuIFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VpYm12bmljX2RlbGF5ZWRfcmVzZXQsXFxuIFxcdFxcdFxcdFxcdCAgIElCTVZOSUNfUkVTRVRfREVMQVkpO1xcbiBcXHRcXHRyZXR1cm47XFxuQEAgLTMyNjcsNyArMzI2Nyw3IEBAIHN0YXRpYyB2b2lkIF9faWJtdm5pY19yZXNldChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdHNwaW5fbG9jayhcXHUwMDI2YWRhcHRlci1cXHUwMDNlcndpX2xvY2spO1xcbiBcXHRpZiAoIWxpc3RfZW1wdHkoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXJ3aV9saXN0KSkge1xcbiBcXHRcXHRpZiAodGVzdF9hbmRfc2V0X2JpdF9sb2NrKDAsIFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VyZXNldHRpbmcpKSB7XFxuLVxcdFxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSxcXG4rXFx0XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWlibXZuaWNfZGVsYXllZF9yZXNldCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgSUJNVk5JQ19SRVNFVF9ERUxBWSk7XFxuIFxcdFxcdH0gZWxzZSB7XFxuQEAgLTM0NTQsNyArMzQ1NCw3IEBAIHN0YXRpYyBpbnQgaWJtdm5pY19yZXNldChzdHJ1Y3QgaWJtdm5pY19hZGFwdGVyICphZGFwdGVyLFxcbiBcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZyd2ktXFx1MDAzZWxpc3QsIFxcdTAwMjZhZGFwdGVyLVxcdTAwM2Vyd2lfbGlzdCk7XFxuIFxcdG5ldGRldl9kYmcoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LCBcXFwiU2NoZWR1bGluZyByZXNldCAocmVhc29uICVzKVxcXFxuXFxcIixcXG4gXFx0XFx0ICAgcmVzZXRfcmVhc29uX3RvX3N0cmluZyhyZWFzb24pKTtcXG4tXFx0cXVldWVfd29yayhzeXN0ZW1fbG9uZ193cSwgXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWlibXZuaWNfcmVzZXQpO1xcbitcXHRxdWV1ZV93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWlibXZuaWNfcmVzZXQpO1xcbiBcXG4gXFx0cmV0ID0gMDtcXG4gZXJyOlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jXFxuaW5kZXggNTkxYmU1YzgwNTZiNDMuLjBmYmEyMmMxMDQ2ZTk2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmNcXG5AQCAtMTEwMCw3ICsxMTAwLDcgQEAgc3RhdGljIGludCBlbWFjX25kb19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbiBcXG4gXFx0cHJ1ZXRoLVxcdTAwM2VlbWFjc19pbml0aWFsaXplZCsrO1xcbiBcXG4tXFx0cXVldWVfd29yayhzeXN0ZW1fbG9uZ193cSwgXFx1MDAyNmVtYWMtXFx1MDAzZXN0YXRzX3dvcmsud29yayk7XFxuK1xcdHF1ZXVlX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2ZW1hYy1cXHUwMDNlc3RhdHNfd29yay53b3JrKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3RhdHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N0YXRzLmNcXG5pbmRleCA3MTU5YmFhMDE1NWNmYi4uN2Q2ZDY2OTJkODE5MjcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3RhdHMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N0YXRzLmNcXG5AQCAtNjksNyArNjksNyBAQCB2b2lkIGljc3NnX3N0YXRzX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdFxcdFxcdFxcdFxcdFxcdHN0YXRzX3dvcmsud29yayk7XFxuIFxcdGVtYWNfdXBkYXRlX2hhcmR3YXJlX3N0YXRzKGVtYWMpO1xcbiBcXG4tXFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCBcXHUwMDI2ZW1hYy1cXHUwMDNlc3RhdHNfd29yayxcXG4rXFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNmVtYWMtXFx1MDAzZXN0YXRzX3dvcmssXFxuIFxcdFxcdFxcdCAgIG1zZWNzX3RvX2ppZmZpZXMoKFNUQVRTX1RJTUVfTElNSVRfMUdfTVMgKiAxMDAwKSAvIGVtYWMtXFx1MDAzZXNwZWVkKSk7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwoaWNzc2dfc3RhdHNfd29ya19oYW5kbGVyKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jIGIvZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jXFxuaW5kZXggMDJhOTE2NTA1NjFhYjEuLmJlMjc5NzJiZWQxOGViIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uY1xcbkBAIC0zMTYsNyArMzE2LDcgQEAgc3RhdGljIHZvaWQgc3RhcnRfbG9naW4oc3RydWN0IHRibmV0ICpuZXQpXFxuIFxcdG5ldC1cXHUwMDNlbG9naW5fcmVjZWl2ZWQgPSBmYWxzZTtcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZuZXQtXFx1MDAzZWNvbm5lY3Rpb25fbG9jayk7XFxuIFxcbi1cXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsIFxcdTAwMjZuZXQtXFx1MDAzZWxvZ2luX3dvcmssXFxuK1xcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZuZXQtXFx1MDAzZWxvZ2luX3dvcmssXFxuIFxcdFxcdFxcdCAgIG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpO1xcbiB9XFxuIFxcbkBAIC00NjAsNyArNDYwLDcgQEAgc3RhdGljIGludCB0Ym5ldF9oYW5kbGVfcGFja2V0KGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUsIHZvaWQgKmRhdGEpXFxuIFxcdFxcdFxcdGlmIChuZXQtXFx1MDAzZWxvZ2luX3JldHJpZXMgXFx1MDAzZT0gVEJORVRfTE9HSU5fUkVUUklFUyB8fFxcbiBcXHRcXHRcXHQgICAgIW5ldC1cXHUwMDNlbG9naW5fc2VudCkge1xcbiBcXHRcXHRcXHRcXHRuZXQtXFx1MDAzZWxvZ2luX3JldHJpZXMgPSAwO1xcbi1cXHRcXHRcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsXFxuK1xcdFxcdFxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZuZXQtXFx1MDAzZWxvZ2luX3dvcmssIDApO1xcbiBcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2bmV0LVxcdTAwM2Vjb25uZWN0aW9uX2xvY2spO1xcbkBAIC03MDAsNyArNzAwLDggQEAgc3RhdGljIHZvaWQgdGJuZXRfbG9naW5fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdFxcdG5ldGRldl9kYmcobmV0LVxcdTAwM2VkZXYsIFxcXCJzZW5kaW5nIGxvZ2luIHJlcXVlc3QgZmFpbGVkLCByZXQ9JWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCAgIHJldCk7XFxuIFxcdFxcdGlmIChuZXQtXFx1MDAzZWxvZ2luX3JldHJpZXMrKyBcXHUwMDNjIFRCTkVUX0xPR0lOX1JFVFJJRVMpIHtcXG4tXFx0XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCBcXHUwMDI2bmV0LVxcdTAwM2Vsb2dpbl93b3JrLFxcbitcXHRcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLFxcbitcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2bmV0LVxcdTAwM2Vsb2dpbl93b3JrLFxcbiBcXHRcXHRcXHRcXHRcXHQgICBkZWxheSk7XFxuIFxcdFxcdH0gZWxzZSB7XFxuIFxcdFxcdFxcdG5ldGRldl9pbmZvKG5ldC1cXHUwMDNlZGV2LCBcXFwiVGh1bmRlcmJvbHRJUCBsb2dpbiB0aW1lZCBvdXRcXFxcblxcXCIpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jIGIvZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuY1xcbmluZGV4IDg3MDBlZWI4ZTIyZDA3Li5jMTc5OGUxNGIyMjQyZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jXFxuKysrIGIvZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuY1xcbkBAIC0xMTI2LDggKzExMjYsOSBAQCBzdGF0aWMgdm9pZCBjaGVja19jYXJyaWVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0cGVnYXN1c190ICpwZWdhc3VzID0gY29udGFpbmVyX29mKHdvcmssIHBlZ2FzdXNfdCwgY2Fycmllcl9jaGVjay53b3JrKTtcXG4gXFx0c2V0X2NhcnJpZXIocGVnYXN1cy1cXHUwMDNlbmV0KTtcXG4gXFx0aWYgKCEocGVnYXN1cy1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBQRUdBU1VTX1VOUExVRykpIHtcXG4tXFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCBcXHUwMDI2cGVnYXN1cy1cXHUwMDNlY2Fycmllcl9jaGVjayxcXG4tXFx0XFx0XFx0Q0FSUklFUl9DSEVDS19ERUxBWSk7XFxuK1xcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXFxuK1xcdFxcdFxcdFxcdCAgIFxcdTAwMjZwZWdhc3VzLVxcdTAwM2VjYXJyaWVyX2NoZWNrLFxcbitcXHRcXHRcXHRcXHQgICBDQVJSSUVSX0NIRUNLX0RFTEFZKTtcXG4gXFx0fVxcbiB9XFxuIFxcbkBAIC0xMjMyLDcgKzEyMzMsNyBAQCBzdGF0aWMgaW50IHBlZ2FzdXNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuIFxcdHJlcyA9IHJlZ2lzdGVyX25ldGRldihuZXQpO1xcbiBcXHRpZiAocmVzKVxcbiBcXHRcXHRnb3RvIG91dDM7XFxuLVxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXFx1MDAyNnBlZ2FzdXMtXFx1MDAzZWNhcnJpZXJfY2hlY2ssXFxuK1xcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZwZWdhc3VzLVxcdTAwM2VjYXJyaWVyX2NoZWNrLFxcbiBcXHRcXHRcXHQgICBDQVJSSUVSX0NIRUNLX0RFTEFZKTtcXG4gXFx0ZGV2X2luZm8oXFx1MDAyNmludGYtXFx1MDAzZWRldiwgXFxcIiVzLCAlcywgJXBNXFxcXG5cXFwiLCBuZXQtXFx1MDAzZW5hbWUsXFxuIFxcdFxcdCB1c2JfZGV2X2lkW2Rldl9pbmRleF0ubmFtZSwgbmV0LVxcdTAwM2VkZXZfYWRkcik7XFxuQEAgLTEyOTcsNyArMTI5OCw3IEBAIHN0YXRpYyBpbnQgcGVnYXN1c19yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuIFxcdFxcdHBlZ2FzdXMtXFx1MDAzZWludHJfdXJiLVxcdTAwM2VhY3R1YWxfbGVuZ3RoID0gMDtcXG4gXFx0XFx0aW50cl9jYWxsYmFjayhwZWdhc3VzLVxcdTAwM2VpbnRyX3VyYik7XFxuIFxcdH1cXG4tXFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCBcXHUwMDI2cGVnYXN1cy1cXHUwMDNlY2Fycmllcl9jaGVjayxcXG4rXFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnBlZ2FzdXMtXFx1MDAzZWNhcnJpZXJfY2hlY2ssXFxuIFxcdFxcdFxcdFxcdENBUlJJRVJfQ0hFQ0tfREVMQVkpO1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2IvcjgxNTIuYyBiL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jXFxuaW5kZXggZjYxNjg2NDMzMDMxYzcuLmY2YWY2NmYyOTRkYmNiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jXFxuKysrIGIvZHJpdmVycy9uZXQvdXNiL3I4MTUyLmNcXG5AQCAtNzA3Miw3ICs3MDcyLDggQEAgc3RhdGljIHZvaWQgcnRsX2h3X3BoeV93b3JrX2Z1bmNfdChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcbiBcXHRcXHQvKiBEZWxheSBleGVjdXRpb24gaW4gY2FzZSByZXF1ZXN0X2Zpcm13YXJlKCkgaXMgbm90IHJlYWR5IHlldC5cXG4gXFx0XFx0ICovXFxuLVxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXFx1MDAyNnRwLVxcdTAwM2Vod19waHlfd29yaywgSFogKiAxMCk7XFxuK1xcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZ0cC1cXHUwMDNlaHdfcGh5X3dvcmssXFxuK1xcdFxcdFxcdFxcdCAgIEhaICogMTApO1xcbiBcXHRcXHRnb3RvIGlnbm9yZV9vbmNlO1xcbiBcXHR9XFxuIFxcbkBAIC04ODQwLDcgKzg4NDEsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNTJfcmVzZXRfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbiBcXHRjbGVhcl9iaXQoU0VMRUNUSVZFX1NVU1BFTkQsIFxcdTAwMjZ0cC1cXHUwMDNlZmxhZ3MpO1xcbiBcXHRydGxfcmVzZXRfb2NwX2Jhc2UodHApO1xcbiBcXHR0cC1cXHUwMDNlcnRsX29wcy5pbml0KHRwKTtcXG4tXFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCBcXHUwMDI2dHAtXFx1MDAzZWh3X3BoeV93b3JrLCAwKTtcXG4rXFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnRwLVxcdTAwM2Vod19waHlfd29yaywgMCk7XFxuIFxcdHNldF9ldGhlcm5ldF9hZGRyKHRwLCB0cnVlKTtcXG4gXFx0cmV0dXJuIHJ0bDgxNTJfcmVzdW1lKGludGYpO1xcbiB9XFxuQEAgLTEwMjk1LDcgKzEwMjk2LDcgQEAgc3RhdGljIGludCBydGw4MTUyX3Byb2JlX29uY2Uoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuIFxcdC8qIFJldHJ5IGluIGNhc2UgcmVxdWVzdF9maXJtd2FyZSgpIGlzIG5vdCByZWFkeSB5ZXQuICovXFxuIFxcdHRwLVxcdTAwM2VydGxfZncucmV0cnkgPSB0cnVlO1xcbiAjZW5kaWZcXG4tXFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCBcXHUwMDI2dHAtXFx1MDAzZWh3X3BoeV93b3JrLCAwKTtcXG4rXFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnRwLVxcdTAwM2Vod19waHlfd29yaywgMCk7XFxuIFxcdHNldF9ldGhlcm5ldF9hZGRyKHRwLCBmYWxzZSk7XFxuIFxcbiBcXHR1c2Jfc2V0X2ludGZkYXRhKGludGYsIHRwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTQ6MTQ6MzcuNjE0OTAzMTEyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NDI5OTc2OTE2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJQk1WTklDXCIsXG4gICAgXCJUSV9JQ1NTR19QUlVFVEhcIixcbiAgICBcIlVTQjRfTkVUXCIsXG4gICAgXCJVU0JfUEVHQVNVU1wiLFxuICAgIFwiVVNCX1JUTDgxNTJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2libXZuaWNfcmVzZXRcIixcbiAgICBcImlibXZuaWNfcmVzZXRcIixcbiAgICBcImVtYWNfbmRvX29wZW5cIixcbiAgICBcImljc3NnX3N0YXRzX3dvcmtfaGFuZGxlclwiLFxuICAgIFwic3RhcnRfbG9naW5cIixcbiAgICBcInRibmV0X2xvZ2luX3dvcmtcIixcbiAgICBcImNoZWNrX2NhcnJpZXJcIixcbiAgICBcInBlZ2FzdXNfcHJvYmVcIixcbiAgICBcInBlZ2FzdXNfcmVzdW1lXCIsXG4gICAgXCJydGxfaHdfcGh5X3dvcmtfZnVuY190XCIsXG4gICAgXCJydGw4MTUyX3Jlc2V0X3Jlc3VtZVwiLFxuICAgIFwicnRsODE1Ml9wcm9iZV9vbmNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgc3lzdGVtX2xvbmdfd3Egd2l0aCBzeXN0ZW1fZGZsX2xvbmdfd3EgZm9yIHNjaGVkdWxpbmcgZGVsYXllZCB3b3JrcyBpbiBzZXZlcmFsIG5ldHdvcmsgZHJpdmVycyAoaWJtdm5pYywgaWNzc2csIHRodW5kZXJib2x0LCBwZWdhc3VzLCByODE1MikuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyB0aGUgZXhlY3V0aW9uIGNvbnRleHQgb2YgdGhlc2Ugd29ya3MsIHBvdGVudGlhbGx5IGFmZmVjdGluZyBjb25jdXJyZW5jeSBvciBkZWFkbG9ja3MuIEZ1enppbmcgdGhlIGFmZmVjdGVkIHdvcmsgZnVuY3Rpb25zIGFuZCB0aGVpciB0cmlnZ2VycyAobGlrZSBwcm9iZSwgb3BlbiwgcmVzZXQsIGFuZCBsb2dpbikgaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1MGJlN2ZiOGEzYTM4YjdkNmY2NmU1Y2I0YzcxY2U1YmNhM2M4NTkxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjAgMTQ6MTQ6MzIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuY1xuaW5kZXggNWE1MTBlZWQzMzVlYWQuLmQ0YzI4NGM4ZWY0MzdhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuY1xuQEAgLTMyMjksNyArMzIyOSw3IEBAIHN0YXRpYyB2b2lkIF9faWJtdm5pY19yZXNldChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRpZiAoYWRhcHRlci1cdTAwM2VzdGF0ZSA9PSBWTklDX1BST0JJTkcgXHUwMDI2XHUwMDI2XG4gXHQgICAgIXdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dChcdTAwMjZhZGFwdGVyLVx1MDAzZXByb2JlX2RvbmUsIHRpbWVvdXQpKSB7XG4gXHRcdGRldl9lcnIoZGV2LCBcIlJlc2V0IHRocmVhZCB0aW1lZCBvdXQgb24gcHJvYmVcIik7XG4tXHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSxcbitcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcbiBcdFx0XHRcdCAgIFx1MDAyNmFkYXB0ZXItXHUwMDNlaWJtdm5pY19kZWxheWVkX3Jlc2V0LFxuIFx0XHRcdFx0ICAgSUJNVk5JQ19SRVNFVF9ERUxBWSk7XG4gXHRcdHJldHVybjtcbkBAIC0zMjY3LDcgKzMyNjcsNyBAQCBzdGF0aWMgdm9pZCBfX2libXZuaWNfcmVzZXQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0c3Bpbl9sb2NrKFx1MDAyNmFkYXB0ZXItXHUwMDNlcndpX2xvY2spO1xuIFx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNmFkYXB0ZXItXHUwMDNlcndpX2xpc3QpKSB7XG4gXHRcdGlmICh0ZXN0X2FuZF9zZXRfYml0X2xvY2soMCwgXHUwMDI2YWRhcHRlci1cdTAwM2VyZXNldHRpbmcpKSB7XG4tXHRcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLFxuK1x0XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXG4gXHRcdFx0XHRcdCAgIFx1MDAyNmFkYXB0ZXItXHUwMDNlaWJtdm5pY19kZWxheWVkX3Jlc2V0LFxuIFx0XHRcdFx0XHQgICBJQk1WTklDX1JFU0VUX0RFTEFZKTtcbiBcdFx0fSBlbHNlIHtcbkBAIC0zNDU0LDcgKzM0NTQsNyBAQCBzdGF0aWMgaW50IGlibXZuaWNfcmVzZXQoc3RydWN0IGlibXZuaWNfYWRhcHRlciAqYWRhcHRlcixcbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2cndpLVx1MDAzZWxpc3QsIFx1MDAyNmFkYXB0ZXItXHUwMDNlcndpX2xpc3QpO1xuIFx0bmV0ZGV2X2RiZyhhZGFwdGVyLVx1MDAzZW5ldGRldiwgXCJTY2hlZHVsaW5nIHJlc2V0IChyZWFzb24gJXMpXFxuXCIsXG4gXHRcdCAgIHJlc2V0X3JlYXNvbl90b19zdHJpbmcocmVhc29uKSk7XG4tXHRxdWV1ZV93b3JrKHN5c3RlbV9sb25nX3dxLCBcdTAwMjZhZGFwdGVyLVx1MDAzZWlibXZuaWNfcmVzZXQpO1xuK1x0cXVldWVfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmFkYXB0ZXItXHUwMDNlaWJtdm5pY19yZXNldCk7XG4gXG4gXHRyZXQgPSAwO1xuIGVycjpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jXG5pbmRleCA1OTFiZTVjODA1NmI0My4uMGZiYTIyYzEwNDZlOTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmNcbkBAIC0xMTAwLDcgKzExMDAsNyBAQCBzdGF0aWMgaW50IGVtYWNfbmRvX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4gXG4gXHRwcnVldGgtXHUwMDNlZW1hY3NfaW5pdGlhbGl6ZWQrKztcbiBcbi1cdHF1ZXVlX3dvcmsoc3lzdGVtX2xvbmdfd3EsIFx1MDAyNmVtYWMtXHUwMDNlc3RhdHNfd29yay53b3JrKTtcbitcdHF1ZXVlX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZlbWFjLVx1MDAzZXN0YXRzX3dvcmsud29yayk7XG4gXG4gXHRyZXR1cm4gMDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zdGF0cy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3RhdHMuY1xuaW5kZXggNzE1OWJhYTAxNTVjZmIuLjdkNmQ2NjkyZDgxOTI3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3RhdHMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3RhdHMuY1xuQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBpY3NzZ19zdGF0c193b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRcdFx0XHRcdHN0YXRzX3dvcmsud29yayk7XG4gXHRlbWFjX3VwZGF0ZV9oYXJkd2FyZV9zdGF0cyhlbWFjKTtcbiBcbi1cdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2ZW1hYy1cdTAwM2VzdGF0c193b3JrLFxuK1x0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2ZW1hYy1cdTAwM2VzdGF0c193b3JrLFxuIFx0XHRcdCAgIG1zZWNzX3RvX2ppZmZpZXMoKFNUQVRTX1RJTUVfTElNSVRfMUdfTVMgKiAxMDAwKSAvIGVtYWMtXHUwMDNlc3BlZWQpKTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoaWNzc2dfc3RhdHNfd29ya19oYW5kbGVyKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMgYi9kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmNcbmluZGV4IDAyYTkxNjUwNTYxYWIxLi5iZTI3OTcyYmVkMThlYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jXG5AQCAtMzE2LDcgKzMxNiw3IEBAIHN0YXRpYyB2b2lkIHN0YXJ0X2xvZ2luKHN0cnVjdCB0Ym5ldCAqbmV0KVxuIFx0bmV0LVx1MDAzZWxvZ2luX3JlY2VpdmVkID0gZmFsc2U7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2bmV0LVx1MDAzZWNvbm5lY3Rpb25fbG9jayk7XG4gXG4tXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsIFx1MDAyNm5ldC1cdTAwM2Vsb2dpbl93b3JrLFxuK1x0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2bmV0LVx1MDAzZWxvZ2luX3dvcmssXG4gXHRcdFx0ICAgbXNlY3NfdG9famlmZmllcygxMDAwKSk7XG4gfVxuIFxuQEAgLTQ2MCw3ICs0NjAsNyBAQCBzdGF0aWMgaW50IHRibmV0X2hhbmRsZV9wYWNrZXQoY29uc3Qgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSwgdm9pZCAqZGF0YSlcbiBcdFx0XHRpZiAobmV0LVx1MDAzZWxvZ2luX3JldHJpZXMgXHUwMDNlPSBUQk5FVF9MT0dJTl9SRVRSSUVTIHx8XG4gXHRcdFx0ICAgICFuZXQtXHUwMDNlbG9naW5fc2VudCkge1xuIFx0XHRcdFx0bmV0LVx1MDAzZWxvZ2luX3JldHJpZXMgPSAwO1xuLVx0XHRcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLFxuK1x0XHRcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcbiBcdFx0XHRcdFx0XHQgICBcdTAwMjZuZXQtXHUwMDNlbG9naW5fd29yaywgMCk7XG4gXHRcdFx0fVxuIFx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZuZXQtXHUwMDNlY29ubmVjdGlvbl9sb2NrKTtcbkBAIC03MDAsNyArNzAwLDggQEAgc3RhdGljIHZvaWQgdGJuZXRfbG9naW5fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRcdG5ldGRldl9kYmcobmV0LVx1MDAzZWRldiwgXCJzZW5kaW5nIGxvZ2luIHJlcXVlc3QgZmFpbGVkLCByZXQ9JWRcXG5cIixcbiBcdFx0XHQgICByZXQpO1xuIFx0XHRpZiAobmV0LVx1MDAzZWxvZ2luX3JldHJpZXMrKyBcdTAwM2MgVEJORVRfTE9HSU5fUkVUUklFUykge1xuLVx0XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2bmV0LVx1MDAzZWxvZ2luX3dvcmssXG4rXHRcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcbitcdFx0XHRcdFx0ICAgXHUwMDI2bmV0LVx1MDAzZWxvZ2luX3dvcmssXG4gXHRcdFx0XHRcdCAgIGRlbGF5KTtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRuZXRkZXZfaW5mbyhuZXQtXHUwMDNlZGV2LCBcIlRodW5kZXJib2x0SVAgbG9naW4gdGltZWQgb3V0XFxuXCIpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmMgYi9kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jXG5pbmRleCA4NzAwZWViOGUyMmQwNy4uYzE3OThlMTRiMjI0MmUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jXG4rKysgYi9kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jXG5AQCAtMTEyNiw4ICsxMTI2LDkgQEAgc3RhdGljIHZvaWQgY2hlY2tfY2FycmllcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRwZWdhc3VzX3QgKnBlZ2FzdXMgPSBjb250YWluZXJfb2Yod29yaywgcGVnYXN1c190LCBjYXJyaWVyX2NoZWNrLndvcmspO1xuIFx0c2V0X2NhcnJpZXIocGVnYXN1cy1cdTAwM2VuZXQpO1xuIFx0aWYgKCEocGVnYXN1cy1cdTAwM2VmbGFncyBcdTAwMjYgUEVHQVNVU19VTlBMVUcpKSB7XG4tXHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2cGVnYXN1cy1cdTAwM2VjYXJyaWVyX2NoZWNrLFxuLVx0XHRcdENBUlJJRVJfQ0hFQ0tfREVMQVkpO1xuK1x0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLFxuK1x0XHRcdFx0ICAgXHUwMDI2cGVnYXN1cy1cdTAwM2VjYXJyaWVyX2NoZWNrLFxuK1x0XHRcdFx0ICAgQ0FSUklFUl9DSEVDS19ERUxBWSk7XG4gXHR9XG4gfVxuIFxuQEAgLTEyMzIsNyArMTIzMyw3IEBAIHN0YXRpYyBpbnQgcGVnYXN1c19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcbiBcdHJlcyA9IHJlZ2lzdGVyX25ldGRldihuZXQpO1xuIFx0aWYgKHJlcylcbiBcdFx0Z290byBvdXQzO1xuLVx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCBcdTAwMjZwZWdhc3VzLVx1MDAzZWNhcnJpZXJfY2hlY2ssXG4rXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZwZWdhc3VzLVx1MDAzZWNhcnJpZXJfY2hlY2ssXG4gXHRcdFx0ICAgQ0FSUklFUl9DSEVDS19ERUxBWSk7XG4gXHRkZXZfaW5mbyhcdTAwMjZpbnRmLVx1MDAzZWRldiwgXCIlcywgJXMsICVwTVxcblwiLCBuZXQtXHUwMDNlbmFtZSxcbiBcdFx0IHVzYl9kZXZfaWRbZGV2X2luZGV4XS5uYW1lLCBuZXQtXHUwMDNlZGV2X2FkZHIpO1xuQEAgLTEyOTcsNyArMTI5OCw3IEBAIHN0YXRpYyBpbnQgcGVnYXN1c19yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4gXHRcdHBlZ2FzdXMtXHUwMDNlaW50cl91cmItXHUwMDNlYWN0dWFsX2xlbmd0aCA9IDA7XG4gXHRcdGludHJfY2FsbGJhY2socGVnYXN1cy1cdTAwM2VpbnRyX3VyYik7XG4gXHR9XG4tXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsIFx1MDAyNnBlZ2FzdXMtXHUwMDNlY2Fycmllcl9jaGVjayxcbitcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnBlZ2FzdXMtXHUwMDNlY2Fycmllcl9jaGVjayxcbiBcdFx0XHRcdENBUlJJRVJfQ0hFQ0tfREVMQVkpO1xuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jIGIvZHJpdmVycy9uZXQvdXNiL3I4MTUyLmNcbmluZGV4IGY2MTY4NjQzMzAzMWM3Li5mNmFmNjZmMjk0ZGJjYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jXG4rKysgYi9kcml2ZXJzL25ldC91c2IvcjgxNTIuY1xuQEAgLTcwNzIsNyArNzA3Miw4IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19waHlfd29ya19mdW5jX3Qoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFxuIFx0XHQvKiBEZWxheSBleGVjdXRpb24gaW4gY2FzZSByZXF1ZXN0X2Zpcm13YXJlKCkgaXMgbm90IHJlYWR5IHlldC5cbiBcdFx0ICovXG4tXHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2dHAtXHUwMDNlaHdfcGh5X3dvcmssIEhaICogMTApO1xuK1x0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZ0cC1cdTAwM2Vod19waHlfd29yayxcbitcdFx0XHRcdCAgIEhaICogMTApO1xuIFx0XHRnb3RvIGlnbm9yZV9vbmNlO1xuIFx0fVxuIFxuQEAgLTg4NDAsNyArODg0MSw3IEBAIHN0YXRpYyBpbnQgcnRsODE1Ml9yZXNldF9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4gXHRjbGVhcl9iaXQoU0VMRUNUSVZFX1NVU1BFTkQsIFx1MDAyNnRwLVx1MDAzZWZsYWdzKTtcbiBcdHJ0bF9yZXNldF9vY3BfYmFzZSh0cCk7XG4gXHR0cC1cdTAwM2VydGxfb3BzLmluaXQodHApO1xuLVx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCBcdTAwMjZ0cC1cdTAwM2Vod19waHlfd29yaywgMCk7XG4rXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZ0cC1cdTAwM2Vod19waHlfd29yaywgMCk7XG4gXHRzZXRfZXRoZXJuZXRfYWRkcih0cCwgdHJ1ZSk7XG4gXHRyZXR1cm4gcnRsODE1Ml9yZXN1bWUoaW50Zik7XG4gfVxuQEAgLTEwMjk1LDcgKzEwMjk2LDcgQEAgc3RhdGljIGludCBydGw4MTUyX3Byb2JlX29uY2Uoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4gXHQvKiBSZXRyeSBpbiBjYXNlIHJlcXVlc3RfZmlybXdhcmUoKSBpcyBub3QgcmVhZHkgeWV0LiAqL1xuIFx0dHAtXHUwMDNlcnRsX2Z3LnJldHJ5ID0gdHJ1ZTtcbiAjZW5kaWZcbi1cdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2dHAtXHUwMDNlaHdfcGh5X3dvcmssIDApO1xuK1x0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2dHAtXHUwMDNlaHdfcGh5X3dvcmssIDApO1xuIFx0c2V0X2V0aGVybmV0X2FkZHIodHAsIGZhbHNlKTtcbiBcbiBcdHVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgdHApO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTQ6MTQ6MzcuNjE0OTA2ODMyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA3NTY4NTEwODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGggRnV6emluZyBEZWNpc2lvbjogTm8qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgc3dhcHMgb3V0IGBzeXN0ZW1fbG9uZ193cWAgd2l0aCBgc3lzdGVtX2RmbF9sb25nX3dxYCBpbiBhIGJ1bmNoIG9mIG5ldHdvcmsgZHJpdmVyczogYGlibXZuaWMuY2AsIGBpY3NzZ19wcnVldGguY2AsIGBpY3NzZ19zdGF0cy5jYCwgYHRodW5kZXJib2x0L21haW4uY2AsIGBwZWdhc3VzLmNgLCBhbmQgYHI4MTUyLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiTWVjaGFuaWNhbCBjaGFuZ2UsIGp1c3QgcmVwbGFjaW5nIG9uZSB3b3JrcXVldWUgd2l0aCBhbm90aGVyLlwiIERvZXMgdGhpcyBjaGFuZ2UgdGhlIGV4ZWN1dGlvbiBmbG93IGVub3VnaCB0byBldmVuIHdhcnJhbnQgZnV6emluZz8gSXQncyBqdXN0IGEgd29ya3F1ZXVlIHN1YnN0aXR1dGlvbiBmb3IgZGVsYXllZCB3b3JrLlxuXG5JJ20gdGhpbmtpbmcsIGBzeXN0ZW1fbG9uZ193cWAgdmVyc3VzIGBzeXN0ZW1fZGZsX2xvbmdfd3FgLi4uIGlzIHRoZXJlIGFueSAqbmV3KiBsb2dpYz8gTm9wZSwgaXQncyBhIHNpbXBsZSB3b3JrcXVldWUgcG9pbnRlciByZXBsYWNlbWVudC4gSXQgKmRvZXMqIGNoYW5nZSB0aGUgZXhlY3V0aW9uIGVudmlyb25tZW50IOKAkyBwb3RlbnRpYWxseSBkaWZmZXJlbnQgY29uY3VycmVuY3kgb3IgcHJpb3JpdHkgb2YgdGhlc2Ugd29ya3Mg4oCTIGJ1dCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IGJyYW5jaGVzLCBvciBkYXRhIHN0cnVjdHVyZXMuXG5cbldhaXQsIGlzIGBzeXN0ZW1fZGZsX2xvbmdfd3FgIGEgY29tcGxldGVseSAqbmV3KiB3b3JrcXVldWUsIG9yIGlzIHRoaXMgcGFydCBvZiBzb21lIGxhcmdlciBwYXRjaHNldD8gSnVzdCBhIHN0cmFpZ2h0IHJlcGxhY2VtZW50LCBpdCBsb29rcyBsaWtlLiBMZXQncyBzZWUuLi4gdGhlIGluc3RydWN0aW9ucyBzYXk6IFwiKlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6IC4uLmNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4uLipcIi4gSXMgdGhpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCB0aG91Z2g/IFllcywgZGlmZmVyZW50IHdvcmtxdWV1ZSwgZGlmZmVyZW50IGZ1bmN0aW9uYWwgY2hhbmdlLlxuXG5BbHJpZ2h0LCBsZXQncyBjb25zaWRlciByZWFjaGFiaWxpdHkuIGBwZWdhc3VzLmNgIGFuZCBgcjgxNTIuY2AgYXJlIFVTQiBuZXR3b3JrIGRyaXZlcnMuIFdlIGNhbiByZWFjaCB0aG9zZSB0aHJvdWdoIFVTQiBnYWRnZXQvZHVtbXlfaGNkIGluIFFFTVUuIGB0aHVuZGVyYm9sdC9tYWluLmNgPyBIbW0sIHByb2JhYmx5IG5vdCBlYXNpbHksIGJ1dCBtYXliZS4gYGlibXZuaWMuY2AgYW5kIGBpY3NzZ19wcnVldGguY2AgYXJlIHByb2JhYmx5IG5vdCBlYXNpbHkgcmVhY2hlZCBpbiBRRU1VIGFzIHRoZXkncmUgbW9yZSBzcGVjaWFsaXplZCBkcml2ZXJzLCB0aGUgZmlyc3QgcmVxdWlyZXMgYSBzcGVjaWZpYyBJQk0vcG93ZXJwYy9wc2VyaWVzIHNldHVwLCBhbmQgdGhlIHNlY29uZCBpcyByZWxhdGVkIHRvIFRJIFBSVSBoYXJkd2FyZS5cblxuQnV0LCB0aGUga2V5IGlzIHRoZSBpbnN0cnVjdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYnV0IGl0ICpkb2Vzbid0KiBpbnRyb2R1Y2UgbmV3IGxvZ2ljIG9yIGJyYW5jaGVzLCBhbmQgSSd2ZSBnb3QgdG8gbWFrZSBhIGp1ZGdlbWVudC4gR2l2ZW4gdGhlIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgY3JpdGVyaWEgb3V0bGluZWQgYW5kIHRoZSBmdW5jdGlvbmFsIG5hdHVyZSBvZiB3b3JrcXVldWUgY2hhbmdlIHdpdGhvdXQgdGhlIGludHJvZHVjdGlvbiBvZiBuZXcgbG9naWMsIEkgYW0gZGVjaWRpbmcgdGhhdCBpdCdzICpub3QqIHdvcnRoIGZ1enppbmcgYW5kIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MDksIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MDAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxNDoxNDo0OC4zNzE3NjM0ODFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM3ODExMTMxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzeXN0ZW1fZGZsX2xvbmdfd3FcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9hdGEvbGliYXRhLWVoLmM9NzIxPXZvaWQgYXRhX3Njc2lfcG9ydF9lcnJvcl9oYW5kbGVyKHN0cnVjdCBTY3NpX0hvc3QgKmhvc3QsIHN0cnVjdCBhdGFfcG9ydCAqYXApXFxuLS1cXG5kcml2ZXJzL2F0YS9saWJhdGEtZWguYy04MjMtXFx0XFx0IShhcC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBBVEFfRkxBR19TQVNfSE9TVCkpXFxuZHJpdmVycy9hdGEvbGliYXRhLWVoLmM6ODI0OlxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZhcC1cXHUwMDNlaG90cGx1Z190YXNrLCAwKTtcXG5kcml2ZXJzL2F0YS9saWJhdGEtZWguYy04MjUtXFxuLS1cXG5kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jPTQ3MDc9dm9pZCBhdGFfc2NzaV9zY2FuX2hvc3Qoc3RydWN0IGF0YV9wb3J0ICphcCwgaW50IHN5bmMpXFxuLS1cXG5kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jLTQ3NzYtXFxuZHJpdmVycy9hdGEvbGliYXRhLXNjc2kuYzo0Nzc3OlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZhcC1cXHUwMDNlaG90cGx1Z190YXNrLFxcbmRyaXZlcnMvYXRhL2xpYmF0YS1zY3NpLmMtNDc3OC1cXHRcXHRcXHQgICByb3VuZF9qaWZmaWVzX3JlbGF0aXZlKEhaKSk7XFxuLS1cXG5kcml2ZXJzL2kyYy9pMmMtc2xhdmUtdGVzdHVuaXQuYz04Mj1zdGF0aWMgaW50IGkyY19zbGF2ZV90ZXN0dW5pdF9zbGF2ZV9jYihzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LFxcbi0tXFxuZHJpdmVycy9pMmMvaTJjLXNsYXZlLXRlc3R1bml0LmMtMTI2LVxcdFxcdFxcdHNldF9iaXQoVFVfRkxBR19JTl9QUk9DRVNTLCBcXHUwMDI2dHUtXFx1MDAzZWZsYWdzKTtcXG5kcml2ZXJzL2kyYy9pMmMtc2xhdmUtdGVzdHVuaXQuYzoxMjc6XFx0XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnR1LVxcdTAwM2V3b3JrZXIsXFxuZHJpdmVycy9pMmMvaTJjLXNsYXZlLXRlc3R1bml0LmMtMTI4LVxcdFxcdFxcdFxcdFxcdCAgIG1zZWNzX3RvX2ppZmZpZXMoMTAgKiB0dS1cXHUwMDNlcmVnc1tUVV9SRUdfREVMQVldKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jPTMyMDM9c3RhdGljIHZvaWQgX19pYm12bmljX3Jlc2V0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmMtMzIzMS1cXHRcXHRkZXZfZXJyKGRldiwgXFxcIlJlc2V0IHRocmVhZCB0aW1lZCBvdXQgb24gcHJvYmVcXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jOjMyMzI6XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jLTMyMzMtXFx0XFx0XFx0XFx0ICAgXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWlibXZuaWNfZGVsYXllZF9yZXNldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmMtMzI2OS1cXHRcXHRpZiAodGVzdF9hbmRfc2V0X2JpdF9sb2NrKDAsIFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VyZXNldHRpbmcpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYzozMjcwOlxcdFxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYy0zMjcxLVxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VpYm12bmljX2RlbGF5ZWRfcmVzZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jPTM0MTA9c3RhdGljIGludCBpYm12bmljX3Jlc2V0KHN0cnVjdCBpYm12bmljX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jLTM0NTYtXFx0XFx0ICAgcmVzZXRfcmVhc29uX3RvX3N0cmluZyhyZWFzb24pKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jOjM0NTc6XFx0cXVldWVfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VpYm12bmljX3Jlc2V0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jLTM0NTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYz0xMDEzPXN0YXRpYyBpbnQgZW1hY19uZG9fb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTExMDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM6MTEwMzpcXHRxdWV1ZV93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNmVtYWMtXFx1MDAzZXN0YXRzX3dvcmsud29yayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMTEwNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N0YXRzLmM9NjY9dm9pZCBpY3NzZ19zdGF0c193b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3RhdHMuYy03MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zdGF0cy5jOjcyOlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZlbWFjLVxcdTAwM2VzdGF0c193b3JrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N0YXRzLmMtNzMtXFx0XFx0XFx0ICAgbXNlY3NfdG9famlmZmllcygoU1RBVFNfVElNRV9MSU1JVF8xR19NUyAqIDEwMDApIC8gZW1hYy1cXHUwMDNlc3BlZWQpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz0zMTA9c3RhdGljIHZvaWQgc3RhcnRfbG9naW4oc3RydWN0IHRibmV0ICpuZXQpXFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMzE4LVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzozMTk6XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNm5ldC1cXHUwMDNlbG9naW5fd29yayxcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMzIwLVxcdFxcdFxcdCAgIG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jPTQxNT1zdGF0aWMgaW50IHRibmV0X2hhbmRsZV9wYWNrZXQoY29uc3Qgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSwgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy00NjItXFx0XFx0XFx0XFx0bmV0LVxcdTAwM2Vsb2dpbl9yZXRyaWVzID0gMDtcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6NDYzOlxcdFxcdFxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTQ2NC1cXHRcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2bmV0LVxcdTAwM2Vsb2dpbl93b3JrLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz02ODY9c3RhdGljIHZvaWQgdGJuZXRfbG9naW5fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNzAyLVxcdFxcdGlmIChuZXQtXFx1MDAzZWxvZ2luX3JldHJpZXMrKyBcXHUwMDNjIFRCTkVUX0xPR0lOX1JFVFJJRVMpIHtcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6NzAzOlxcdFxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTcwNC1cXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2bmV0LVxcdTAwM2Vsb2dpbl93b3JrLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYz0xMTI0PXN0YXRpYyB2b2lkIGNoZWNrX2NhcnJpZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYy0xMTI4LVxcdGlmICghKHBlZ2FzdXMtXFx1MDAzZWZsYWdzIFxcdTAwMjYgUEVHQVNVU19VTlBMVUcpKSB7XFxuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYzoxMTI5OlxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXFxuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYy0xMTMwLVxcdFxcdFxcdFxcdCAgIFxcdTAwMjZwZWdhc3VzLVxcdTAwM2VjYXJyaWVyX2NoZWNrLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYz0xMTUxPXN0YXRpYyBpbnQgcGVnYXN1c19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmMtMTIzNS1cXHRcXHRnb3RvIG91dDM7XFxuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYzoxMjM2OlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZwZWdhc3VzLVxcdTAwM2VjYXJyaWVyX2NoZWNrLFxcbmRyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmMtMTIzNy1cXHRcXHRcXHQgICBDQVJSSUVSX0NIRUNLX0RFTEFZKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmM9MTI4Nz1zdGF0aWMgaW50IHBlZ2FzdXNfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYy0xMzAwLVxcdH1cXG5kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jOjEzMDE6XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnBlZ2FzdXMtXFx1MDAzZWNhcnJpZXJfY2hlY2ssXFxuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYy0xMzAyLVxcdFxcdFxcdFxcdENBUlJJRVJfQ0hFQ0tfREVMQVkpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3I4MTUyLmM9NzA1Nz1zdGF0aWMgdm9pZCBydGxfaHdfcGh5X3dvcmtfZnVuY190KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9yODE1Mi5jLTcwNzQtXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvdXNiL3I4MTUyLmM6NzA3NTpcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2dHAtXFx1MDAzZWh3X3BoeV93b3JrLFxcbmRyaXZlcnMvbmV0L3VzYi9yODE1Mi5jLTcwNzYtXFx0XFx0XFx0XFx0ICAgSFogKiAxMCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcjgxNTIuYz04ODM3PXN0YXRpYyBpbnQgcnRsODE1Ml9yZXNldF9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcjgxNTIuYy04ODQzLVxcdHRwLVxcdTAwM2VydGxfb3BzLmluaXQodHApO1xcbmRyaXZlcnMvbmV0L3VzYi9yODE1Mi5jOjg4NDQ6XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnRwLVxcdTAwM2Vod19waHlfd29yaywgMCk7XFxuZHJpdmVycy9uZXQvdXNiL3I4MTUyLmMtODg0NS1cXHRzZXRfZXRoZXJuZXRfYWRkcih0cCwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcjgxNTIuYz0xMDEzMD1zdGF0aWMgaW50IHJ0bDgxNTJfcHJvYmVfb25jZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9yODE1Mi5jLTEwMjk4LSNlbmRpZlxcbmRyaXZlcnMvbmV0L3VzYi9yODE1Mi5jOjEwMjk5OlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZ0cC1cXHUwMDNlaHdfcGh5X3dvcmssIDApO1xcbmRyaXZlcnMvbmV0L3VzYi9yODE1Mi5jLTEwMzAwLVxcdHNldF9ldGhlcm5ldF9hZGRyKHRwLCBmYWxzZSk7XFxuLS1cXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYz0xOTE9c3RhdGljIHZvaWQgdHVzYjEyMTBfY2hnX2RldF9zZXRfc3RhdGUoc3RydWN0IHR1c2IxMjEwICp0dXNiLFxcbi0tXFxuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmMtMTk5LVxcdHR1c2ItXFx1MDAzZWNoZ19kZXRfc3RhdGUgPSBuZXdfc3RhdGU7XFxuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmM6MjAwOlxcdG1vZF9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2dHVzYi1cXHUwMDNlY2hnX2RldF93b3JrLFxcbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jLTIwMS1cXHRcXHRcXHQgbXNlY3NfdG9famlmZmllcyhkZWxheV9tcykpO1xcbi0tXFxuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmM9Mzc2PXN0YXRpYyBpbnQgdHVzYjEyMTBfcHN5X25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXFxuLS1cXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYy0zODItXFx0aWYgKHBzeSAhPSB0dXNiLVxcdTAwM2Vwc3kgXFx1MDAyNlxcdTAwMjYgcHN5LVxcdTAwM2VkZXNjLVxcdTAwM2V0eXBlID09IFBPV0VSX1NVUFBMWV9UWVBFX1VTQilcXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYzozODM6XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnR1c2ItXFx1MDAzZWNoZ19kZXRfd29yaywgMCk7XFxuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmMtMzg0LVxcbi0tXFxuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmM9NDMyPXN0YXRpYyB2b2lkIHR1c2IxMjEwX3Byb2JlX2NoYXJnZXJfZGV0ZWN0KHN0cnVjdCB0dXNiMTIxMCAqdHVzYilcXG4tLVxcbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jLTQ2MC1cXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2dHVzYi1cXHUwMDNlY2hnX2RldF93b3JrLCB0dXNiMTIxMF9jaGdfZGV0X3dvcmspO1xcbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jOjQ2MTpcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2dHVzYi1cXHUwMDNlY2hnX2RldF93b3JrLCAyICogSFopO1xcbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jLTQ2Mi1cXG4tLVxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYz0yMjA9c3RhdGljIHNzaXplX3Qgc3RvcmVfcmVjb25uZWN0X2RlbGF5KHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy0yMzYtXFx0ICAgIHJwb3J0LVxcdTAwM2VzdGF0ZSAhPSBTUlBfUlBPUlRfUlVOTklORykge1xcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYzoyMzc6XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnJwb3J0LVxcdTAwM2VyZWNvbm5lY3Rfd29yayxcXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmMtMjM4LVxcdFxcdFxcdFxcdCAgIGRlbGF5ICogSFopO1xcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jPTM3OD1zdGF0aWMgdm9pZCBzcnBfcmVjb25uZWN0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTM5Mi1cXHRcXHRpZiAoZGVsYXkgXFx1MDAzZSAwKVxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYzozOTM6XFx0XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmMtMzk0LVxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZycG9ydC1cXHUwMDNlcmVjb25uZWN0X3dvcmssIGRlbGF5ICogSFopO1xcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jPTQ2MT1zdGF0aWMgdm9pZCBfX3NycF9zdGFydF90bF9mYWlsX3RpbWVycyhzdHJ1Y3Qgc3JwX3Jwb3J0ICpycG9ydClcXG4tLVxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy00NzYtXFx0aWYgKGRlbGF5IFxcdTAwM2UgMClcXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmM6NDc3OlxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZycG9ydC1cXHUwMDNlcmVjb25uZWN0X3dvcmssXFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTQ3OC1cXHRcXHRcXHRcXHQgICAxVUwgKiBkZWxheSAqIEhaKTtcXG4tLVxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy00ODQtXFx0XFx0aWYgKGZhc3RfaW9fZmFpbF90bW8gXFx1MDAzZT0gMClcXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmM6NDg1OlxcdFxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTQ4Ni1cXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2cnBvcnQtXFx1MDAzZWZhc3RfaW9fZmFpbF93b3JrLFxcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTQ4OC1cXHRcXHRpZiAoZGV2X2xvc3NfdG1vIFxcdTAwM2U9IDApXFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jOjQ4OTpcXHRcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLFxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy00OTAtXFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNnJwb3J0LVxcdTAwM2VkZXZfbG9zc193b3JrLFxcbi0tXFxuZnMvZnVzZS9kYXguYz0xMDg9X19raWNrX2RtYXBfZnJlZV93b3JrZXIoc3RydWN0IGZ1c2VfY29ubl9kYXggKmZjZCwgdW5zaWduZWQgbG9uZyBkZWxheV9tcylcXG4tLVxcbmZzL2Z1c2UvZGF4LmMtMTE1LVxcdGlmIChmY2QtXFx1MDAzZW5yX2ZyZWVfcmFuZ2VzIFxcdTAwM2MgZnJlZV90aHJlc2hvbGQpXFxuZnMvZnVzZS9kYXguYzoxMTY6XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNmZjZC1cXHUwMDNlZnJlZV93b3JrLFxcbmZzL2Z1c2UvZGF4LmMtMTE3LVxcdFxcdFxcdFxcdCAgIG1zZWNzX3RvX2ppZmZpZXMoZGVsYXlfbXMpKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmg9NDE4PWVudW0gd3FfY29uc3RzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgtNDQ0LSAqXFxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaDo0NDU6ICogc3lzdGVtX2RmbF9sb25nX3dxIGlzIHNpbWlsYXIgdG8gc3lzdGVtX2RmbF93cSBidXQgaXQgbWF5IGhvc3QgbG9uZyBydW5uaW5nXFxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaC00NDYtICogd29ya3MuXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oPTQ3NT1leHRlcm4gc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnN5c3RlbV9iaF9oaWdocHJpX3dxO1xcbmluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmg6NDc2OmV4dGVybiBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqc3lzdGVtX2RmbF9sb25nX3dxO1xcbmluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgtNDc3LVxcbi0tXFxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaD03OTY9ZXh0ZXJuIHZvaWQgX193YXJuX2ZsdXNoaW5nX3N5c3RlbXdpZGVfd3Eodm9pZClcXG4tLVxcbmluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgtODE1LVxcdCAgICAgX3dxID09IHN5c3RlbV9sb25nX3dxKSB8fFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oOjgxNjpcXHQgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKF93cSA9PSBzeXN0ZW1fZGZsX2xvbmdfd3EpIFxcdTAwMjZcXHUwMDI2XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmg6ODE3OlxcdCAgICAgX3dxID09IHN5c3RlbV9kZmxfbG9uZ193cSkgfHxcXHRcXHRcXHRcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaC04MTgtXFx0ICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcChfd3EgPT0gc3lzdGVtX2RmbF93cSkgXFx1MDAyNlxcdTAwMjZcXHRcXHRcXFxcXFxuLS1cXG5rZXJuZWwvd29ya3F1ZXVlLmM9NTQ1PUVYUE9SVF9TWU1CT0xfR1BMKHN5c3RlbV9iaF9oaWdocHJpX3dxKTtcXG5rZXJuZWwvd29ya3F1ZXVlLmM6NTQ2OnN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpzeXN0ZW1fZGZsX2xvbmdfd3EgX19yb19hZnRlcl9pbml0O1xcbmtlcm5lbC93b3JrcXVldWUuYzo1NDc6RVhQT1JUX1NZTUJPTF9HUEwoc3lzdGVtX2RmbF9sb25nX3dxKTtcXG5rZXJuZWwvd29ya3F1ZXVlLmMtNTQ4LVxcbi0tXFxua2VybmVsL3dvcmtxdWV1ZS5jPTc5NzE9dm9pZCBfX2luaXQgd29ya3F1ZXVlX2luaXRfZWFybHkodm9pZClcXG4tLVxcbmtlcm5lbC93b3JrcXVldWUuYy04MDcwLVxcdFxcdFxcdFxcdFxcdCAgICAgICBXUV9CSCB8IFdRX0hJR0hQUkkgfCBXUV9QRVJDUFUsIDApO1xcbmtlcm5lbC93b3JrcXVldWUuYzo4MDcxOlxcdHN5c3RlbV9kZmxfbG9uZ193cSA9IGFsbG9jX3dvcmtxdWV1ZShcXFwiZXZlbnRzX2RmbF9sb25nXFxcIiwgV1FfVU5CT1VORCwgV1FfTUFYX0FDVElWRSk7XFxua2VybmVsL3dvcmtxdWV1ZS5jLTgwNzItXFx0QlVHX09OKCFzeXN0ZW1fd3EgfHwgIXN5c3RlbV9wZXJjcHVfd3F8fCAhc3lzdGVtX2hpZ2hwcmlfd3EgfHwgIXN5c3RlbV9sb25nX3dxIHx8XFxuLS1cXG5rZXJuZWwvd29ya3F1ZXVlLmMtODA3NS1cXHQgICAgICAgIXN5c3RlbV9mcmVlemFibGVfcG93ZXJfZWZmaWNpZW50X3dxIHx8XFxua2VybmVsL3dvcmtxdWV1ZS5jOjgwNzY6XFx0ICAgICAgICFzeXN0ZW1fYmhfd3EgfHwgIXN5c3RlbV9iaF9oaWdocHJpX3dxIHx8ICFzeXN0ZW1fZGZsX2xvbmdfd3EpO1xcbmtlcm5lbC93b3JrcXVldWUuYy04MDc3LX1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MjQzPXN0YXRpYyBpbmxpbmUgaW50IGlwX3ZzX2Nvbm5faGFzaChzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTI4Ny1cXHQgICAgIXRlc3RfYW5kX3NldF9iaXQoSVBfVlNfV09SS19DT05OX1JFU0laRSwgXFx1MDAyNmlwdnMtXFx1MDAzZXdvcmtfZmxhZ3MpKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6Mjg4OlxcdFxcdG1vZF9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2aXB2cy1cXHUwMDNlY29ubl9yZXNpemVfd29yaywgMCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0yODktXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTgwMD1zdGF0aWMgdm9pZCBjb25uX3Jlc2l6ZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy05MTgtXFx0LyogTW9uaXRvciBpZiB3ZSBuZWVkIHRvIHNocmluayB0YWJsZSAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6OTE5OlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZpcHZzLVxcdTAwM2Vjb25uX3Jlc2l6ZV93b3JrLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtOTIwLVxcdFxcdFxcdCAgIG1vcmVfd29yayA/IDEgOiAyICogSFopO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTY3MD1zdGF0aWMgdm9pZCBzdmNfcmVzaXplX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtODIzLVxcdFxcdHJldHVybjtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6ODI0OlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZpcHZzLVxcdTAwM2VzdmNfcmVzaXplX3dvcmssIDEpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy04MjUtXFx0cmV0dXJuO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTE3MDk9aXBfdnNfYWRkX3NlcnZpY2Uoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBpcF92c19zZXJ2aWNlX3VzZXJfa2VybiAqdSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xODcxLVxcdGlmIChncm93IFxcdTAwMjZcXHUwMDI2ICF0ZXN0X2FuZF9zZXRfYml0KElQX1ZTX1dPUktfU1ZDX1JFU0laRSwgXFx1MDAyNmlwdnMtXFx1MDAzZXdvcmtfZmxhZ3MpKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxODcyOlxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZpcHZzLVxcdTAwM2VzdmNfcmVzaXplX3dvcmssXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE4NzMtXFx0XFx0XFx0XFx0ICAgMSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MjA4Nj1zdGF0aWMgaW50IGlwX3ZzX2RlbF9zZXJ2aWNlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjEyNy1cXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2aXB2cy1cXHUwMDNld29ya19mbGFncykpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjIxMjg6XFx0XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjEyOS1cXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2aXB2cy1cXHUwMDNlc3ZjX3Jlc2l6ZV93b3JrLCAxKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0yNTg5PXN0YXRpYyBpbnQgaXB2c19wcm9jX2Nvbm5fbGZhY3Rvcihjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50IHdyaXRlLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTI2MDgtXFx0XFx0XFx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihpcHZzLVxcdTAwM2Vjb25uX3RhYikpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjI2MDk6XFx0XFx0XFx0XFx0bW9kX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTI2MTAtXFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZpcHZzLVxcdTAwM2Vjb25uX3Jlc2l6ZV93b3JrLCAwKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0yNjE2PXN0YXRpYyBpbnQgaXB2c19wcm9jX3N2Y19sZmFjdG9yKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBpbnQgd3JpdGUsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjY0MC1cXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2aXB2cy1cXHUwMDNld29ya19mbGFncykpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjI2NDE6XFx0XFx0XFx0XFx0bW9kX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTI2NDItXFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZpcHZzLVxcdTAwM2VzdmNfcmVzaXplX3dvcmssIDApO1xcbi0tXFxubmV0L3N1bnJwYy94cHJ0cmRtYS90cmFuc3BvcnQuYz00ODA9eHBydF9yZG1hX2Nvbm5lY3Qoc3RydWN0IHJwY194cHJ0ICp4cHJ0LCBzdHJ1Y3QgcnBjX3Rhc2sgKnRhc2spXFxuLS1cXG5uZXQvc3VucnBjL3hwcnRyZG1hL3RyYW5zcG9ydC5jLTQ5My1cXHR0cmFjZV94cHJ0cmRtYV9vcF9jb25uZWN0KHJfeHBydCwgZGVsYXkpO1xcbm5ldC9zdW5ycGMveHBydHJkbWEvdHJhbnNwb3J0LmM6NDk0OlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZyX3hwcnQtXFx1MDAzZXJ4X2Nvbm5lY3Rfd29ya2VyLFxcbm5ldC9zdW5ycGMveHBydHJkbWEvdHJhbnNwb3J0LmMtNDk1LVxcdFxcdFxcdCAgIGRlbGF5KTtcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvY3M0Mmw0My1qYWNrLmM9Nzk3PWlycXJldHVybl90IGNzNDJsNDNfdGlwX3NlbnNlKGludCBpcnEsIHZvaWQgKmRhdGEpXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL2NzNDJsNDMtamFjay5jLTgwOC1cXG5zb3VuZC9zb2MvY29kZWNzL2NzNDJsNDMtamFjay5jOjgwOTpcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2cHJpdi1cXHUwMDNldGlwX3NlbnNlX3dvcmssXFxuc291bmQvc29jL2NvZGVjcy9jczQybDQzLWphY2suYy04MTAtXFx0XFx0XFx0ICAgbXNlY3NfdG9famlmZmllcyhkYl9kZWxheSkpO1xcbi0tXFxuc291bmQvc29jL2NvZGVjcy9jczQybDQzLWphY2suYz05MDY9aW50IGNzNDJsNDNfamFja19wdXQoc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9jczQybDQzLWphY2suYy05MzUtXFx0aWYgKCFvdmVycmlkZSkge1xcbnNvdW5kL3NvYy9jb2RlY3MvY3M0Mmw0My1qYWNrLmM6OTM2OlxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZwcml2LVxcdTAwM2V0aXBfc2Vuc2Vfd29yayxcXG5zb3VuZC9zb2MvY29kZWNzL2NzNDJsNDMtamFjay5jLTkzNy1cXHRcXHRcXHRcXHQgICAwKTtcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM9MjMxND1zdGF0aWMgdm9pZCBydDU2NDBfamFja193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmMtMjM5OS1cXHRcXHQgKi9cXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jOjI0MDA6XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnJ0NTY0MC1cXHUwMDNlamFja193b3JrLCAwKTtcXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI0MDEtXFx0fVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYz0yNDA0PXN0YXRpYyBpcnFyZXR1cm5fdCBydDU2NDBfaXJxKGludCBpcnEsIHZvaWQgKmRhdGEpXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI0MTItXFx0aWYgKHJ0NTY0MC1cXHUwMDNlamFjaylcXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jOjI0MTM6XFx0XFx0bW9kX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZydDU2NDAtXFx1MDAzZWphY2tfd29yayxcXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI0MTQtXFx0XFx0XFx0XFx0IGRlbGF5KTtcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM9MjQxOT1zdGF0aWMgaXJxcmV0dXJuX3QgcnQ1NjQwX2pkX2dwaW9faXJxKGludCBpcnEsIHZvaWQgKmRhdGEpXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI0MjItXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYzoyNDIzOlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZydDU2NDAtXFx1MDAzZWphY2tfd29yayxcXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI0MjQtXFx0XFx0XFx0ICAgbXNlY3NfdG9famlmZmllcyhKQUNLX1NFVFRMRV9USU1FKSk7XFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jPTI0OTU9c3RhdGljIHZvaWQgcnQ1NjQwX2VuYWJsZV9qYWNrX2RldGVjdChzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCxcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmMtMjU4NC1cXHQvKiBzeW5jIGluaXRpYWwgamFjayBzdGF0ZSAqL1xcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM6MjU4NTpcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2cnQ1NjQwLVxcdTAwM2VqYWNrX3dvcmssIDApO1xcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmMtMjU4Ni19XFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jPTI1OTQ9c3RhdGljIHZvaWQgcnQ1NjQwX2VuYWJsZV9oZGFfamFja19kZXRlY3QoXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI2MzctXFx0Lyogc3luYyBpbml0aWFsIGphY2sgc3RhdGUgKi9cXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jOjI2Mzg6XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnJ0NTY0MC1cXHUwMDNlamFja193b3JrLCAwKTtcXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI2MzktXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jPTI4MjY9c3RhdGljIGludCBydDU2NDBfcmVzdW1lKHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50KVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yODY1LVxcdFxcdGVuYWJsZV9pcnEocnQ1NjQwLVxcdTAwM2VpcnEpO1xcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM6Mjg2NjpcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2cnQ1NjQwLVxcdTAwM2VqYWNrX3dvcmssIDApO1xcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmMtMjg2Ny1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE0OjE0OjUzLjc0OTg4NDQ1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODA3MDM2NzkyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aCBGdXp6aW5nIFRoaXMgUGF0Y2g/KipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBzd2l0Y2hpbmcgb3V0IGBzeXN0ZW1fbG9uZ193cWAgZm9yIGBzeXN0ZW1fZGZsX2xvbmdfd3FgIGluIGEgYnVuY2ggb2YgZHJpdmVycy4gUmlnaHQgYXdheSwgbXkgZXhwZXJ0IGJyYWluIGtpY2tzIGluIOKAkyBpcyB0aGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2U/IEl0ICppcyosIGl0J3MgY2hhbmdpbmcgdGhlIHdvcmtxdWV1ZSBiZWluZyB1c2VkLiBOb3csIHRoZSBxdWVzdGlvbiBpcywgaXMgaXQgKndvcnRoKiBmdXp6aW5nPyBJIG1lYW4sIHRoZSBwcm9tcHQgc2F5cyBub3QgdG8gYm90aGVyIGlmIGl0J3MganVzdCBkb2NzLCBjb21tZW50cywgbG9nZ2luZywgb3IgdHJpdmlhbCBjb25zdGFudCBjaGFuZ2VzLiBDaGFuZ2luZyB0aGUgd29ya3F1ZXVlIGRlZmluaXRlbHkgKmlzbid0KiB0cml2aWFsLlxuXG5Pa2F5LCBzbyBjaGFuZ2luZyB0aGUgd29ya3F1ZXVlICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZSwgYnV0IGRvZXMgaXQgcmVhbGx5IGludHJvZHVjZSBuZXcgbG9naWMgdGhhdOKAmXMgcmlwZSBmb3IgZnV6emluZz8gSXQganVzdCBjaGFuZ2VzICp3aGljaCogdGhyZWFkIHJ1bnMgdGhlIHdvcmsuIEJ1dCB3YWl0ISBJZiBpdCdzIGZ1bmN0aW9uYWwsIHRoZSBwcm9tcHQgc3VnZ2VzdHMgSSBzaG91bGQgc2F5IFdvcnRoRnV6emluZz10cnVlLlxuXG5CdXQgd2hhdCBmdW5jdGlvbnMgZG8gSSBjYXJlIGFib3V0IGZvY3VzaW5nIG9uPyBMb29raW5nIGF0IHRoZSBjb2RlLCBpdOKAmXMgZ29pbmcgdG8gYmUgdGhlc2Ugd29yayBmdW5jdGlvbnM6IGBfX2libXZuaWNfcmVzZXRgLCBgaWJtdm5pY19yZXNldGAsIGBlbWFjX25kb19vcGVuYCwgYGljc3NnX3N0YXRzX3dvcmtfaGFuZGxlcmAsIGBzdGFydF9sb2dpbmAsIGB0Ym5ldF9oYW5kbGVfcGFja2V0YCwgYHRibmV0X2xvZ2luX3dvcmtgLCBgY2hlY2tfY2FycmllcmAsIGBwZWdhc3VzX3Byb2JlYCwgYHBlZ2FzdXNfcmVzdW1lYCwgYHJ0bF9od19waHlfd29ya19mdW5jX3RgLCBgcnRsODE1Ml9yZXNldF9yZXN1bWVgLCBgcnRsODE1Ml9wcm9iZV9vbmNlYC5cblxuSGFuZyBvbiwgYHBlZ2FzdXNgIGFuZCBgcjgxNTJgLi4uIHRob3NlIGFyZSBVU0IgbmV0d29yayBkcml2ZXJzLCByaWdodD8gU28sIGxldCdzIGp1c3QgbWFrZSBzdXJlIHRoYXQgYHN5c3RlbV9kZmxfbG9uZ193cWAgaXMgYSAqbmV3KiB3b3JrcXVldWUsIG9yIGlmIGl0J3MganVzdCBhIHJlbmFtZS4gQWgsIGl0IGxvb2tzIGxpa2UgYHN5c3RlbV9kZmxfbG9uZ193cWAgaXMgYSBuZXcgd29ya3F1ZXVlIG9yIGFuIGV4aXN0aW5nIG9uZSwgYW5kIHRoaXMgaXMgYWJvdXQgcmVwbGFjaW5nIGBzeXN0ZW1fbG9uZ193cWAgd2l0aCBgc3lzdGVtX2RmbF9sb25nX3dxYCB0byBhdm9pZCBpc3N1ZXMgd2l0aCBgc3lzdGVtX2xvbmdfd3FgLlxuXG5TbywgKmlzKiB0aGlzIHdvcnRoIGZ1enppbmc/IFllcyEgSXQncyBhIGZ1bmN0aW9uYWwga2VybmVsIGNoYW5nZS4gTm93IEkgbmVlZCB0byBleHRyYWN0IHRoZSBjb25maWdzIGZvciBgcGVnYXN1c2AgYW5kIGByODE1MmAgdG8gZ2V0IHRoaW5ncyByb2xsaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjU3MiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxNDoxNTowMS44MjAyNTUxNjRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAzMjg4MDA2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX1BFR0FTVVNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MzQ9Y29uZmlnIFVTQl9LQVdFVEhcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTcyLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjczOmNvbmZpZyBVU0JfUEVHQVNVU1xcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTc0LVxcdHRyaXN0YXRlIFxcXCJVU0IgUGVnYXN1cy9QZWdhc3VzLUlJIGJhc2VkIGV0aGVybmV0IGRldmljZSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxNDoxNTowNi44NTMxNDQ5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcyMjEyMTc3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpczpcblxuKipBbmFseXppbmcgdGhlIGBVU0JfUlRMODE1MmAgTW9kdWxlKipcblxuQWxyaWdodCwgdGhlIG9iamVjdGl2ZSBoZXJlIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlIGBVU0JfUlRMODE1MmAuIE15IGV4cGVydGlzZSBsZWFucyB0b3dhcmRzIG5ldHdvcmtpbmcsIGVtYmVkZGVkIHN5c3RlbXMsIGFuZCBwb3RlbnRpYWxseSBoYXJkd2FyZSBpbnRlcmFjdGlvbnMsIHNvIGltbWVkaWF0ZWx5LCBteSBtaW5kIGp1bXBzIHRvIGEgZmV3IHRoaW5ncy4gRmlyc3QsIHRoaXMgbGlrZWx5IHJlbGF0ZXMgdG8gYSBVU0ItdG8tRXRoZXJuZXQgYWRhcHRlciwgc3BlY2lmaWNhbGx5IG9uZSB1c2luZyBhIFJlYWx0ZWsgUlRMODE1MiBjaGlwc2V0LCBnaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24uIEknZCBuZWVkIHRvIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgYXNwZWN0cy5cblxuKiAgICoqRHJpdmVyIEltcGxlbWVudGF0aW9uOioqIElzIHRoaXMgYSB1c2VyLXNwYWNlIG9yIGtlcm5lbC1zcGFjZSBtb2R1bGU/IEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgZHJpdmVyIGZvciBhIHNwZWNpZmljIG9wZXJhdGluZyBzeXN0ZW0sIGxpa2UgTGludXgsIFdpbmRvd3MsIG9yIHNvbWV0aGluZyBtb3JlIGVtYmVkZGVkPyBUaGUgZm9jdXMgd2lsbCBzaGlmdCBkZXBlbmRpbmcgb24gdGhpcy5cblxuKiAgICoqVVNCIFByb3RvY29sOioqIEknbGwgdGhpbmsgYWJvdXQgdGhlIFVTQiBwcm90b2NvbCBpdHNlbGYuIElzIHRoZSBkcml2ZXIgaGFuZGxpbmcgYnVsayB0cmFuc2ZlcnMsIGludGVycnVwdCB0cmFuc2ZlcnMsIG9yIGNvbnRyb2wgdHJhbnNmZXJzPyBUaGUgc3BlY2lmaWMgdHJhbnNmZXIgdHlwZXMgd2lsbCBpbXBhY3QgcGVyZm9ybWFuY2UgYW5kIGhvdyB0aGUgZHJpdmVyIG1hbmFnZXMgZGF0YSBmbG93LiBJcyBpdCBVU0IgMi4wIG9yIDMuMD8gVGhpcyB3aWxsIGluZmx1ZW5jZSBzcGVlZHMgYW5kIGZlYXR1cmVzLlxuXG4qICAgKipOZXR3b3JrIFN0YWNrIEludGVncmF0aW9uOioqIEhvdyBkb2VzIHRoaXMgbW9kdWxlIGludGVyYWN0IHdpdGggdGhlIG5ldHdvcmsgc3RhY2sgKGUuZy4sIGluIHRoZSBjYXNlIG9mIExpbnV4LCB3aXRoIHRoZSBgbmV0ZGV2YCBBUEkpPyBEb2VzIGl0IHByZXNlbnQgaXRzZWxmIGFzIGEgc3RhbmRhcmQgRXRoZXJuZXQgaW50ZXJmYWNlPyBBcmUgdGhlcmUgYW55IGN1c3RvbSBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycz8gQW55IG5vbi1zdGFuZGFyZCBmZWF0dXJlcz9cblxuKiAgICoqQ2hpcHNldC1TcGVjaWZpYyBEZXRhaWxzOioqIFRoZSBSVEw4MTUyIGlzIGEga25vd24gY2hpcCwgc28gSSdsbCB3YW50IHRvIHF1aWNrbHkgY2hlY2sgZm9yIGFueSBrbm93biBpc3N1ZXMgd2l0aCB0aGF0IGRldmljZS4gQXJlIHRoZXJlIGFueSBoYXJkd2FyZSBsaW1pdGF0aW9ucyBvciBkcml2ZXItcmVsYXRlZCBidWdzPyBBcmUgdGhlcmUgc3BlY2lmaWMgcG93ZXIgbWFuYWdlbWVudCBjb25zaWRlcmF0aW9ucz8gQW55IHZlbmRvci1zcGVjaWZpYyBxdWlya3MgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/XG5cbiogICAqKkVycm9yIEhhbmRsaW5nOioqIFdoYXQga2luZCBvZiBlcnJvciBoYW5kbGluZyBpcyBpbXBsZW1lbnRlZD8gSG93IGRvZXMgaXQgZGVhbCB3aXRoIFVTQiBlcnJvcnMsIG5ldHdvcmsgdHJhbnNtaXNzaW9uIGVycm9ycywgYW5kIHBvdGVudGlhbCBoYXJkd2FyZSBmYWlsdXJlcz8gSXMgdGhlcmUgYXBwcm9wcmlhdGUgcmVwb3J0aW5nIG9yIHJlY292ZXJ5IG1lY2hhbmlzbXM/XG5cbkVzc2VudGlhbGx5LCBJIHdhbnQgdG8gZm9ybSBhIG1lbnRhbCBtb2RlbCBvZiBob3cgdGhpcyBtb2R1bGUgaW50ZXJmYWNlcyB3aXRoIHRoZSBoYXJkd2FyZSwgaW50ZXJhY3RzIHdpdGggdGhlIG9wZXJhdGluZyBzeXN0ZW0gKG9yIGJhcmUtbWV0YWwgc3lzdGVtKSwgYW5kIHByb3ZpZGVzIG5ldHdvcmsgY29ubmVjdGl2aXR5LiBJJ2xsIG5lZWQgdG8ga25vdyB3aGV0aGVyIEknbSBsb29raW5nIGF0IHNvdXJjZSBjb2RlLCBkb2N1bWVudGF0aW9uLCBvciBzaW1wbHkgYSBuYW1lLCBiZWNhdXNlIG15IGFwcHJvYWNoIHRvIHVuZGVyc3RhbmRpbmcgd2lsbCB2YXJ5IGJhc2VkIG9uIHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNzA3LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTQ6MTU6MTIuNTc1MjcwMTE0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNDY5MjQzNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9SVEw4MTUyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTg4PWNvbmZpZyBVU0JfUlRMODE1MFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctOTgtXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6OTk6Y29uZmlnIFVTQl9SVEw4MTUyXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTAwLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFJUTDgxNTIvUlRMODE1MyBCYXNlZCBVU0IgRXRoZXJuZXQgQWRhcHRlcnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE0OjE1OjE2LjcyMjIwNDU4MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NjE4Nzk2MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IE5ldHdvcmsgVmFyaWFibGUgSW5zcGVjdGlvbioqXG5cbkFscmlnaHQsIHRoZSBmaXJzdCB0aGluZyBJJ20gZG9pbmcgaXMgemVyb2luZyBpbiBvbiBgVEhVTkRFUkJPTFRfTkVUYC4gVGhhdCdzIHRoZSBrZXkgdmFyaWFibGUgb2YgaW50ZXJlc3QgaGVyZS4gR2l2ZW4gdGhhdCBJJ20gZGVhbGluZyB3aXRoIFRodW5kZXJib2x0LCBpdCdzIGhpZ2hseSBsaWtlbHkgdGhpcyB2YXJpYWJsZSBob2xkcyBjcnVjaWFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBuZXR3b3JrIGNvbmZpZ3VyYXRpb24sIGRldmljZSBzdGF0dXMsIG9yIHBlcmhhcHMgZXZlbiB0aGUgbGluaydzIG9wZXJhdGlvbmFsIHBhcmFtZXRlcnMuIEkgaW1tZWRpYXRlbHkgd2FudCB0byB1bmRlcnN0YW5kIGl0cyBzY29wZSBhbmQgY29udGVudC4gVGhpcyBjb3VsZCBiZSBhbnl0aGluZyBmcm9tIHRoZSBJUCBhZGRyZXNzIGFzc2lnbm1lbnRzIGFzc29jaWF0ZWQgd2l0aCBUaHVuZGVyYm9sdCBkZXZpY2VzLCB0byB3aGV0aGVyIGEgVGh1bmRlcmJvbHQgY29udHJvbGxlciBoYXMgaW5pdGlhdGVkLiBJIGhhdmUgdG8gc2VlIHdoYXQgdGhpcyB2YXJpYWJsZSBjb250YWlucy4gSXQgaXMgdGhlIGJlZ2lubmluZyBvZiBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDMzMiwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE0OjE1OjIwLjQ4NDA4ODU3MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcyNDIwMDAwOCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFRIVU5ERVJCT0xUX05FVFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTQ6MTU6MjUuMjA4MzE0MzlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM4NDg4MTA1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBhIFRodW5kZXJib2x0IElzc3VlIGluIHRoZSBLZXJuZWwqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkndmUgZ290IGEgVGh1bmRlcmJvbHQgaXNzdWUgdG8gbG9vayBpbnRvLCBhbmQgdGhlIGZpcnN0IHBsYWNlIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gaXMgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMuIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoZSBgZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvS2NvbmZpZ2AgZmlsZSwgb3Igc29tZXRoaW5nIGFuYWxvZ291cywgaXMgbGlrZWx5IHdoZXJlIEknbGwgZmluZCB0aGUgcHJpbWFyeSBzZXR0aW5ncyBhbmQgZGVwZW5kZW5jaWVzIGZvciB0aGUgVGh1bmRlcmJvbHQgbmV0d29yayBkcml2ZXIuIFRoYXQncyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGNvbmZpZ3VyZWQgYW5kIGlmIHRoZXJlIG1pZ2h0IGJlIGEgc2ltcGxlIGNvbmZpZyBvcHRpb24gdGhhdCdzIG1pc3NldCBvciBjYXVzaW5nIHRoZSB0cm91YmxlLiBNaWdodCBhcyB3ZWxsIHN0YXJ0IHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDUzMiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE0OjE1OjI5LjU5MzIwMTMzNFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDExNjA1Mjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRodW5kZXJib2x0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz01OTQ9Y29uZmlnIEZVSklUU1VfRVNcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjAwLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6NjAxOnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwMi1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxNDoxNTozMC4wMDQ4NDE1MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTg5MDU0MDIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgY29kZTpcblxuKipDaGVja2luZyBUaHVuZGVyYm9sdCBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgVGh1bmRlcmJvbHQgbmV0d29yayBkcml2ZXIgY29uZmlndXJhdGlvbi4gTGV0J3Mgc3RhcnQgYnkgbG9va2luZyBhdCBgZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvS2NvbmZpZ2AuIFRoaXMgaXMgdGhlIHN0YW5kYXJkIHByb2NlZHVyZSDigJMgdGhlIEtjb25maWcgZmlsZSB3aWxsIGRlZmluZSBhbGwgdGhlIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgZHJpdmVyLCBob3cgdGhleSdyZSBzdHJ1Y3R1cmVkLCBhbnkgZGVwZW5kZW5jaWVzLCBhbmQgaG9wZWZ1bGx5IHByb3ZpZGUgc29tZSBoZWxwZnVsIGRvY3VtZW50YXRpb24uIEl0J3MgdGhlIGNlbnRyYWwgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZHJpdmVyIGlzIGNvbmZpZ3VyZWQsIGVuYWJsZWQsIG9yIGRpc2FibGVkLiBJIG5lZWQgdG8gZ2V0IGEgcXVpY2sgb3ZlcnZpZXcgb2Ygd2hhdCBjb25maWd1cmF0aW9ucyBhcmUgYXZhaWxhYmxlIHNvIHRoYXQgSSBjYW4gZmlndXJlIG91dCB3aGF0IGlzIGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDgxNiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE0OjE1OjM0LjE5MzkwMTU0MloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjcxMzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3RodW5kZXJib2x0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgVVNCNF9ORVRcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJOZXR3b3JraW5nIG92ZXIgVVNCNCBhbmQgVGh1bmRlcmJvbHQgY2FibGVzXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBVU0I0IFxcdTAwMjZcXHUwMDI2IElORVRcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgU2VsZWN0IHRoaXMgaWYgeW91IHdhbnQgdG8gY3JlYXRlIG5ldHdvcmsgYmV0d2VlbiB0d28gY29tcHV0ZXJzXFxuICAgNzpcXHRcXHQgIG92ZXIgYSBVU0I0IGFuZCBUaHVuZGVyYm9sdCBjYWJsZXMuIFRoZSBkcml2ZXIgc3VwcG9ydHMgQXBwbGVcXG4gICA4OlxcdFxcdCAgVGh1bmRlcmJvbHRJUCBwcm90b2NvbCBhbmQgYWxsb3dzIGNvbW11bmljYXRpb24gd2l0aCBhbnkgaG9zdFxcbiAgIDk6XFx0XFx0ICBzdXBwb3J0aW5nIHRoZSBzYW1lIHByb3RvY29sIGluY2x1ZGluZyBXaW5kb3dzIGFuZCBtYWNPUy5cXG4gIDEwOlxcdFxcbiAgMTE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlIHdpbGwgYmVcXG4gIDEyOlxcdFxcdCAgY2FsbGVkIHRodW5kZXJib2x0X25ldC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTQ6MTU6MzQuMTk2MTc3ODAxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NTQzNTYyOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKk5hdmlnYXRpbmcgdGhlIE5ldHdvcmsgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gd2UncmUgdGFsa2luZyBhYm91dCBuZXR3b3JraW5nLCBzcGVjaWZpY2FsbHkgVVNCNC4gVGhlIGNsdWUgaGVyZSBpcyBgVVNCNF9ORVRgLCBzbyB0aGF0IHBvaW50cyBtZSBkaXJlY3RseSB0byB0aGUgY29uZmlndXJhdGlvbi4gTXkgZmlyc3QgbW92ZSB3aWxsIGJlIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZXMuIExldCdzIHNlZS4uLiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgSSBleHBlY3QgdG8gZmluZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBzZXR0aW5ncyByZWxhdGVkIHRvIHRoaXMgVVNCNCBuZXR3b3JrIGRldmljZSwgc2luY2UgXCJpYm1cIiBzZWVtcyBhIGJpdCB2YWd1ZSBhcyBhIHZlbmRvciwgYW5kIGxpa2VseSBlbmNvbXBhc3NlcyBtb3JlIHRoYW4gb25lIGdlbmVyYXRpb24gb2YgZGV2aWNlIGRyaXZlci4gVGhhdCBgS2NvbmZpZ2AgZmlsZSBpcyBnb2luZyB0byBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhpcyBpcyBhbGwgd2lyZWQgdG9nZXRoZXIuIEkgZXhwZWN0IHRvIGZpbmQgb3V0IGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgaGFyZHdhcmUgcmVxdWlyZW1lbnRzIG9yIHBsYXRmb3JtIGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gdGFrZSBpbnRvIGFjY291bnQuIFRpbWUgdG8gY3JhY2sgdGhhdCBmaWxlIG9wZW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MTg5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxNDoxNTozNy45NTA1MzgzMzRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzM2NTMwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpYm12bmljXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9LY29uZmlnPTQ1PWNvbmZpZyBJQk1WTklDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vS2NvbmZpZy01Mi1cXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGUgd2lsbFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9LY29uZmlnOjUzOlxcdCAgYmUgY2FsbGVkIGlibXZuaWMuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL0tjb25maWctNTQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE0OjE1OjM4LjE3MzkxMjQ4NVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDIwMzcwODc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipJQk1WTklDIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIHRoZSBuYW1lIGBJQk1WTklDYCBwb3BzIGludG8gbXkgaGVhZC4gSW1tZWRpYXRlbHksIG15IGludGVybmFsIHJhZGFyIHBpbmdzIHRoZSBrZXJuZWwgc291cmNlIHRyZWUuIFwiQWxyaWdodCwgbGV0J3Mgc2VlIHdoYXQncyBoYXBwZW5pbmcgd2l0aCB0aGF0IGRyaXZlci5cIiBNeSB0aG91Z2h0IHByb2Nlc3MganVtcHMgZGlyZWN0bHkgdG8gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnYCBmaWxlLiBUaGF0J3MgdXN1YWxseSB0aGUgZ28tdG8gcGxhY2UgZm9yIHZlbmRvci1zcGVjaWZpYyBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9ucywgYW5kIFRJIGlzIGEgbGlrZWx5IGNhbmRpZGF0ZSBmb3IgYSBuZXR3b3JrIGNvbXBvbmVudCBpbnZvbHZlZCB3aXRoIElCTS4gSSdtIGltbWVkaWF0ZWx5IHRyeWluZyB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGBJQk1WTklDYCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZSwgYW5kIHRoYXQgS2NvbmZpZyBmaWxlIHdpbGwgaWxsdW1pbmF0ZSBkZXBlbmRlbmNpZXMsIGJ1aWxkIG9wdGlvbnMsIGFuZCBwb3NzaWJseSBldmVuIHRoZSBvdmVyYWxsIGRlc2lnbiBwaGlsb3NvcGh5IHRoYXQgaW50ZWdyYXRlcyB0aGUgSUJNIGFuZCBUSSBjb21wb25lbnRzIGlmIHRoYXQncyB0aGUgcGF0aC4gSSdtIGVzc2VudGlhbGx5IHJldmVyc2UtZW5naW5lZXJpbmcgdGhlIHRob3VnaHQgcHJvY2VzcyBvZiBob3cgdG8gaW5jbHVkZSBvciBleGNsdWRlIGEgZHJpdmVyIGluIHRoZSBidWlsZCBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTU0NiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE0OjE1OjQyLjU5NDI4OTI4NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU0MTIyMjM5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpY3NzZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxNDoxNTo0Mi43NDg0MjQyNzNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQwNDE5NDM5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gd2hhdCBJJ2QgYmUgZG9pbmc6XG5cbioqSW52ZXN0aWdhdGluZyBQUlUgQ29uZmlndXJhdGlvbiBmb3IgRXRoZXJuZXQgRHJpdmVycyoqXG5cblJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IFBSVSAoUHJvZ3JhbW1hYmxlIFJlYWwtdGltZSBVbml0KSBpbnRlZ3JhdGlvbiB3aXRoaW4gdGhlIEV0aGVybmV0IGRyaXZlcnMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlOiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSBJJ2QgZXhwZWN0IHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIFRJJ3MgRXRoZXJuZXQgZGV2aWNlcywgYW5kIG1vcmUgc3BlY2lmaWNhbGx5LCBob3cgdGhlIFBSVSBtaWdodCBiZSBlbmFibGVkIG9yIHVzZWQuIEl0J3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBzeXN0ZW0gaXMgc2V0IHVwLiBUaGlzIGBLY29uZmlnYCBmaWxlIHNob3VsZCBnaXZlIG1lIHRoZSBiYXNlIGluZm9ybWF0aW9uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXRoZXIgd2UncmUgdGFsa2luZyBhYm91dCBhIGRyaXZlciB1c2luZyB0aGUgUFJVLCBvciBzb21lIHNlcGFyYXRlIGZlYXR1cmUgd2l0aGluIHRoZSBUSSBldGhlcm5ldCBzdWJzeXN0ZW0gdGhhdCBpbnZvbHZlcyB0aGUgUFJVLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTgwOCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE0OjE1OjQ2LjE1MjYyMjUwNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA1NTQwMzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBSVVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9MTY5PWNvbmZpZyBUTEFOXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTE4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjE4Njpjb25maWcgVElfSUNTU0dfUFJVRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoxODc6XFx0dHJpc3RhdGUgXFxcIlRJIEdpZ2FiaXQgUFJVIEV0aGVybmV0IGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTE4OC1cXHRzZWxlY3QgUEhZTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTE5MC1cXHRzZWxlY3QgVElfSzNfQ1BQSV9ERVNDX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjE5MTpcXHRkZXBlbmRzIG9uIFBSVV9SRU1PVEVQUk9DXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0xOTItXFx0ZGVwZW5kcyBvbiBORVRfU1dJVENIREVWXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTE5Ni1cXHRoZWxwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoxOTc6XFx0ICBTdXBwb3J0IGR1YWwgR2lnYWJpdCBFdGhlcm5ldCBwb3J0cyBvdmVyIHRoZSBJQ1NTRyBQUlUgU3Vic3lzdGVtLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTk4LVxcdCAgVGhpcyBzdWJzeXN0ZW0gaXMgYXZhaWxhYmxlIHN0YXJ0aW5nIHdpdGggdGhlIEFNNjUgcGxhdGZvcm0uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0xOTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMDA6XFx0ICBUaGlzIGRyaXZlciByZXF1aXJlcyBmaXJtd2FyZSBiaW5hcmllcyB3aGljaCB3aWxsIHJ1biBvbiB0aGUgUFJVc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjAxLVxcdCAgdG8gc3VwcG9ydCB0aGUgRXRoZXJuZXQgb3BlcmF0aW9uLiBDdXJyZW50bHksIGl0IHN1cHBvcnRzIEV0aGVybmV0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIwMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjIwNDpjb25maWcgVElfSUNTU0dfUFJVRVRIX1NSMVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjA1OlxcdHRyaXN0YXRlIFxcXCJUSSBHaWdhYml0IFBSVSBTUjEuMCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yMDYtXFx0c2VsZWN0IFBIWUxJQlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yMDktXFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjEwOlxcdGRlcGVuZHMgb24gUFJVX1JFTU9URVBST0NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIxMS1cXHRkZXBlbmRzIG9uIE5FVF9TV0lUQ0hERVZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjE0LVxcdGhlbHBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjIxNTpcXHQgIFN1cHBvcnQgZHVhbCBHaWdhYml0IEV0aGVybmV0IHBvcnRzIG92ZXIgdGhlIElDU1NHIFBSVSBTdWJzeXN0ZW0uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yMTYtXFx0ICBUaGlzIHN1YnN5c3RlbSBpcyBhdmFpbGFibGUgb24gdGhlIEFNNjUgU1IxLjAgcGxhdGZvcm0uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMTg6XFx0ICBUaGlzIGRyaXZlciByZXF1aXJlcyBmaXJtd2FyZSBiaW5hcmllcyB3aGljaCB3aWxsIHJ1biBvbiB0aGUgUFJVc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjE5LVxcdCAgdG8gc3VwcG9ydCB0aGUgRXRoZXJuZXQgb3BlcmF0aW9uLiBDdXJyZW50bHksIGl0IHN1cHBvcnRzIEV0aGVybmV0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTIyMj1jb25maWcgVElfSUNTU19JRVBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjIyMzpcXHR0cmlzdGF0ZSBcXFwiVEkgUFJVIElDU1MgSUVQIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIyNC1cXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMjU6XFx0ZGVwZW5kcyBvbiBUSV9QUlVTU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjI2OlxcdGRlZmF1bHQgVElfUFJVU1NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIyNy1cXHRoZWxwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMjg6XFx0ICBUaGlzIGRyaXZlciBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBQUlUtSUNTUyBJbmR1c3RyaWFsIEV0aGVybmV0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMjk6XFx0ICBQZXJpcGhlcmFsIHdpdGhpbiBhIFBSVS1JQ1NTIHN1YnN5c3RlbSBwcmVzZW50IG9uIHZhcmlvdXMgVEkgU29Dcy5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIzMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjM0OmNvbmZpZyBUSV9QUlVFVEhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjIzNTpcXHR0cmlzdGF0ZSBcXFwiVEkgUFJVIEV0aGVybmV0IEVNQUMgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjM2OlxcdGRlcGVuZHMgb24gUFJVX1JFTU9URVBST0NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIzNy1cXHRkZXBlbmRzIG9uIE5FVF9TV0lUQ0hERVZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjQwLVxcdGhlbHBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjI0MTpcXHQgIFNvbWUgVEkgU29DcyBoYXMgUHJvZ3JhbW1hYmxlIFJlYWx0aW1lIFVuaXQgKFBSVSkgY29yZXMgd2hpY2ggY2FuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yNDItXFx0ICBzdXBwb3J0IFNpbmdsZSBvciBEdWFsIEV0aGVybmV0IHBvcnRzIHdpdGggdGhlIGhlbHAgb2YgZmlybXdhcmUgY29kZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjQzOlxcdCAgcnVubmluZyBvbiBQUlUgY29yZXMuIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHJlbW90ZXByb2MgYmFzZWRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjI0NDpcXHQgIGNvbW11bmljYXRpb24gdG8gUFJVIGZpcm13YXJlIHRvIGV4cG9zZSBFdGhlcm5ldCBpbnRlcmZhY2UgdG8gTGludXguXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yNDUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE0OjE1OjQ2LjU1ODE3MTQyNFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTExNDAwNTA2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIFJlZ3Jlc3Npb24gUG9pbnRzIGluIGEgTmV0d29yayBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZm9jdXMgbGFuZHMgb24gdGhlIGNoYW5nZSBpbnZvbHZpbmcgYFRJX0lDU1NHX1BSVUVUSGAgYW5kIGBUSV9JQ1NTR19QUlVFVEhfU1IxYC4gRmlyc3QsIEknbSBjaGVja2luZyB0aGUgY29uZmlndXJhdGlvbnMsIGFuZCBJIHNlZSBgSUJNVk5JQ2AsIGBUSV9JQ1NTR19QUlVFVEhgLCBgVElfSUNTU0dfUFJVRVRIX1NSMWAsIGBVU0I0X05FVGAsIGBVU0JfUEVHQVNVU2AsIGFuZCBgVVNCX1JUTDgxNTJgIGFyZSBhbGwgcmVsZXZhbnQuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSBrZXkgc3ltYm9scyByZWxhdGVkIHRvIHRoaXMuIEkgbWFrZSBhIGxpc3Q6IGBfX2libXZuaWNfcmVzZXRgLCBgaWJtdm5pY19yZXNldGAsIGBlbWFjX25kb19vcGVuYCwgYGljc3NnX3N0YXRzX3dvcmtfaGFuZGxlcmAsIGBzdGFydF9sb2dpbmAsIGB0Ym5ldF9oYW5kbGVfcGFja2V0YCwgYHRibmV0X2xvZ2luX3dvcmtgLCBgY2hlY2tfY2FycmllcmAsIGBwZWdhc3VzX3Byb2JlYCwgYHBlZ2FzdXNfcmVzdW1lYCwgYHJ0bF9od19waHlfd29ya19mdW5jX3RgLCBgcnRsODE1Ml9yZXNldF9yZXN1bWVgLCBhbmQgYHJ0bDgxNTJfcHJvYmVfb25jZWAuXG5cbk5vdywgSSBzdGFydCB0byBjYXRlZ29yaXplIHRoZXNlLiBgY2hlY2tfY2FycmllcmAgaXMgc3RhdGljIGluIGBwZWdhc3VzLmNgLCB3aGljaCBtYWtlcyBpdCBhIGdvb2QgY2FuZGlkYXRlIGZvciBkZWVwZXIgYW5hbHlzaXMsIGFzIGlzIGBydGxfaHdfcGh5X3dvcmtfZnVuY190YCBmcm9tIGByODE1Mi5jYCwgYW5kIGB0Ym5ldF9sb2dpbl93b3JrYCBpbiBgdGh1bmRlcmJvbHQvbWFpbi5jYC4gYGljc3NnX3N0YXRzX3dvcmtfaGFuZGxlcmAgaXMgZXhwb3J0ZWQgaW4gYGljc3NnX3N0YXRzLmNgIGFuZCBpcyBpbXBvcnRhbnQuIFRoZW4sIEkgcmVtZW1iZXIgdG8gY2hlY2sgaWYgYGVtYWNfbmRvX29wZW5gIGlzIGluIGEgaG90IHBhdGgsIGJ1dCBpdCdzIGp1c3QgdGhlIGBuZG9fb3BlbmAgY2FsbGJhY2ssIHNvIGl0J3Mgbm90IGEgcGVyZm9ybWFuY2UgYm90dGxlbmVjay4gYHRibmV0X2hhbmRsZV9wYWNrZXRgIGlzIGEgaG90IHBhdGggKHBhY2tldCByeC90eCksIHNvIEkgc2hvdWxkIGF2b2lkIGl0LiBCdXQsIEkgbmVlZCB0byBrbm93IGFib3V0IGl0LiBUaGUgcmVzdCwgYHN0YXJ0X2xvZ2luYCwgYHRibmV0X2xvZ2luX3dvcmtgLCBgY2hlY2tfY2FycmllcmAsIGBwZWdhc3VzX3Byb2JlYCwgYHBlZ2FzdXNfcmVzdW1lYCwgYHJ0bF9od19waHlfd29ya19mdW5jX3RgLCBgcnRsODE1Ml9yZXNldF9yZXN1bWVgLCBgcnRsODE1Ml9wcm9iZV9vbmNlYCwgYF9faWJtdm5pY19yZXNldGAsIGFuZCBgaWJtdm5pY19yZXNldGAgYXJlbid0IGhvdCBwYXRocywgc28gbXkgZm9jdXMgbmFycm93cy5cblxuSSByZWZpbmUgbXkgbGlzdDogYF9faWJtdm5pY19yZXNldGAsIGBpYm12bmljX3Jlc2V0YCwgYGVtYWNfbmRvX29wZW5gLCBgaWNzc2dfc3RhdHNfd29ya19oYW5kbGVyYCwgYHN0YXJ0X2xvZ2luYCwgYHRibmV0X2xvZ2luX3dvcmtgLCBgY2hlY2tfY2FycmllcmAsIGBwZWdhc3VzX3Byb2JlYCwgYHBlZ2FzdXNfcmVzdW1lYCwgYHJ0bF9od19waHlfd29ya19mdW5jX3RgLCBgcnRsODE1Ml9yZXNldF9yZXN1bWVgLCBgcnRsODE1Ml9wcm9iZV9vbmNlYC5cblxuT2theSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBjaGFuZ2UgaXRzZWxmIGlzIHdlbGwtdW5kZXJzdG9vZC4gSSByZWNhbGwgdGhhdCBgc3lzdGVtX2RmbF9sb25nX3dxYCBpcyBhIHN0YW5kYXJkIHdvcmtxdWV1ZSwgZGVmaW5lZCBpbiBga2VybmVsL3dvcmtxdWV1ZS5jYC4gVGhlIHBhdGNoICpyZXBsYWNlcyogYHN5c3RlbV9sb25nX3dxYCB3aXRoIGBzeXN0ZW1fZGZsX2xvbmdfd3FgLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSwgYmVjYXVzZSB0aGUgZXhlY3V0aW9uIGNvbnRleHQgKHRoZSB3b3JrcXVldWUpIGlzIGFsdGVyZWQuXG5cbkdpdmVuIHRoZSBjaGFuZ2Ugb2YgdGhlIHdvcmtxdWV1ZSwgYW5kIHRoZSBkcml2ZXJzIGludm9sdmVkIC0gYGlibXZuaWNgLCBgaWNzc2dgLCBgdGh1bmRlcmJvbHRgLCBgcGVnYXN1c2AsIGFuZCBgcjgxNTJgIC0gdGhlIG1haW4gY29uY2VybiBpcyB0aGF0IGNoYW5naW5nIHRoZSB3b3JrcXVldWUgY291bGQgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIGRlYWRsb2Nrcy4gU28sIEkgbmVlZCB0byBmdXp6IHRoZSBhZmZlY3RlZCB3b3JrIGZ1bmN0aW9ucywgbG9va2luZyBhdCB0aGVpciB0cmlnZ2VycyBsaWtlIHByb2JlLCBvcGVuLCByZXNldCwgYW5kIGxvZ2luLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSBjb25maXJtIHRoYXQgYFRJX0lDU1NHX1BSVUVUSGAgY292ZXJzIHRoZSByZWxldmFudCBmaWxlczogYGRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jYCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N0YXRzLmNgLlxuXG5NeSBmaW5hbCBsaXN0IG9mIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGlzOiBgSUJNVk5JQ2AsIGBUSV9JQ1NTR19QUlVFVEhgLCBgVVNCNF9ORVRgLCBgVVNCX1BFR0FTVVNgLCBhbmQgYFVTQl9SVEw4MTUyYC5cblxuVGhlIGZ1bmRhbWVudGFsIHJlYXNvbmluZyBoZXJlIGlzIHRoYXQgYnkgc3dpdGNoaW5nIHdvcmtxdWV1ZXMsIEknbSBwb3RlbnRpYWxseSBhbHRlcmluZyB0aGUgY29uY3VycmVuY3kgbW9kZWwgd2l0aGluIHRoZXNlIGRyaXZlcnMuIEkgbmVlZCB0byBiZSAqY2VydGFpbiogdGhlcmUgYXJlIG5vIGludHJvZHVjZWQgY29uY3VycmVuY3kgaXNzdWVzLiBMZXQncyBnZXQgdGhlIGZ1enppbmcgc2V0IHVwIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzI4MywiT3V0cHV0VG9rZW5zIjoyODAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE0OjE2OjAxLjY3MjE4MTU3OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MjQ3ODUwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSUJNVk5JQ1wiLFxuICAgIFwiVElfSUNTU0dfUFJVRVRIXCIsXG4gICAgXCJVU0I0X05FVFwiLFxuICAgIFwiVVNCX1BFR0FTVVNcIixcbiAgICBcIlVTQl9SVEw4MTUyXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19pYm12bmljX3Jlc2V0XCIsXG4gICAgXCJpYm12bmljX3Jlc2V0XCIsXG4gICAgXCJlbWFjX25kb19vcGVuXCIsXG4gICAgXCJpY3NzZ19zdGF0c193b3JrX2hhbmRsZXJcIixcbiAgICBcInN0YXJ0X2xvZ2luXCIsXG4gICAgXCJ0Ym5ldF9sb2dpbl93b3JrXCIsXG4gICAgXCJjaGVja19jYXJyaWVyXCIsXG4gICAgXCJwZWdhc3VzX3Byb2JlXCIsXG4gICAgXCJwZWdhc3VzX3Jlc3VtZVwiLFxuICAgIFwicnRsX2h3X3BoeV93b3JrX2Z1bmNfdFwiLFxuICAgIFwicnRsODE1Ml9yZXNldF9yZXN1bWVcIixcbiAgICBcInJ0bDgxNTJfcHJvYmVfb25jZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIHN5c3RlbV9sb25nX3dxIHdpdGggc3lzdGVtX2RmbF9sb25nX3dxIGZvciBzY2hlZHVsaW5nIGRlbGF5ZWQgd29ya3MgaW4gc2V2ZXJhbCBuZXR3b3JrIGRyaXZlcnMgKGlibXZuaWMsIGljc3NnLCB0aHVuZGVyYm9sdCwgcGVnYXN1cywgcjgxNTIpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IG9mIHRoZXNlIHdvcmtzLCBwb3RlbnRpYWxseSBhZmZlY3RpbmcgY29uY3VycmVuY3kgb3IgZGVhZGxvY2tzLiBGdXp6aW5nIHRoZSBhZmZlY3RlZCB3b3JrIGZ1bmN0aW9ucyBhbmQgdGhlaXIgdHJpZ2dlcnMgKGxpa2UgcHJvYmUsIG9wZW4sIHJlc2V0LCBhbmQgbG9naW4pIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSUJNVk5JQ1wiLFxuICAgIFwiVElfSUNTU0dfUFJVRVRIXCIsXG4gICAgXCJVU0I0X05FVFwiLFxuICAgIFwiVVNCX1BFR0FTVVNcIixcbiAgICBcIlVTQl9SVEw4MTUyXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19pYm12bmljX3Jlc2V0XCIsXG4gICAgXCJpYm12bmljX3Jlc2V0XCIsXG4gICAgXCJlbWFjX25kb19vcGVuXCIsXG4gICAgXCJpY3NzZ19zdGF0c193b3JrX2hhbmRsZXJcIixcbiAgICBcInN0YXJ0X2xvZ2luXCIsXG4gICAgXCJ0Ym5ldF9sb2dpbl93b3JrXCIsXG4gICAgXCJjaGVja19jYXJyaWVyXCIsXG4gICAgXCJwZWdhc3VzX3Byb2JlXCIsXG4gICAgXCJwZWdhc3VzX3Jlc3VtZVwiLFxuICAgIFwicnRsX2h3X3BoeV93b3JrX2Z1bmNfdFwiLFxuICAgIFwicnRsODE1Ml9yZXNldF9yZXN1bWVcIixcbiAgICBcInJ0bDgxNTJfcHJvYmVfb25jZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIHN5c3RlbV9sb25nX3dxIHdpdGggc3lzdGVtX2RmbF9sb25nX3dxIGZvciBzY2hlZHVsaW5nIGRlbGF5ZWQgd29ya3MgaW4gc2V2ZXJhbCBuZXR3b3JrIGRyaXZlcnMgKGlibXZuaWMsIGljc3NnLCB0aHVuZGVyYm9sdCwgcGVnYXN1cywgcjgxNTIpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IG9mIHRoZXNlIHdvcmtzLCBwb3RlbnRpYWxseSBhZmZlY3RpbmcgY29uY3VycmVuY3kgb3IgZGVhZGxvY2tzLiBGdXp6aW5nIHRoZSBhZmZlY3RlZCB3b3JrIGZ1bmN0aW9ucyBhbmQgdGhlaXIgdHJpZ2dlcnMgKGxpa2UgcHJvYmUsIG9wZW4sIHJlc2V0LCBhbmQgbG9naW4pIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflow8z6gt[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-20 13:48:57 +0000 UTC FinishedAt: 2026-07-20 14:16:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "298bb2b8903323f6ef2eab4819a2e477765f0ff1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IBMVNIC", "TI_ICSSG_PRUETH", "USB4_NET", "USB_PEGASUS", "USB_RTL8152" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "298bb2b8903323f6ef2eab4819a2e477765f0ff1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IBMVNIC", "TI_ICSSG_PRUETH", "USB4_NET", "USB_PEGASUS", "USB_RTL8152" ], "series_id": "0224fe00-d68e-4cbb-afe5-d181ffc144c2" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__ibmvnic_reset", "ibmvnic_reset", "emac_ndo_open", "icssg_stats_work_handler", "start_login", "tbnet_login_work", "check_carrier", "pegasus_probe", "pegasus_resume", "rtl_hw_phy_work_func_t", "rtl8152_reset_resume", "rtl8152_probe_once" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIwIDE0OjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lCTVZOSUMmIzM0OywKICAgICYjMzQ7VElfSUNTU0dfUFJVRVRIJiMzNDssCiAgICAmIzM0O1VTQjRfTkVUJiMzNDssCiAgICAmIzM0O1VTQl9QRUdBU1VTJiMzNDssCiAgICAmIzM0O1VTQl9SVEw4MTUyJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19pYm12bmljX3Jlc2V0JiMzNDssCiAgICAmIzM0O2libXZuaWNfcmVzZXQmIzM0OywKICAgICYjMzQ7ZW1hY19uZG9fb3BlbiYjMzQ7LAogICAgJiMzNDtpY3NzZ19zdGF0c193b3JrX2hhbmRsZXImIzM0OywKICAgICYjMzQ7c3RhcnRfbG9naW4mIzM0OywKICAgICYjMzQ7dGJuZXRfbG9naW5fd29yayYjMzQ7LAogICAgJiMzNDtjaGVja19jYXJyaWVyJiMzNDssCiAgICAmIzM0O3BlZ2FzdXNfcHJvYmUmIzM0OywKICAgICYjMzQ7cGVnYXN1c19yZXN1bWUmIzM0OywKICAgICYjMzQ7cnRsX2h3X3BoeV93b3JrX2Z1bmNfdCYjMzQ7LAogICAgJiMzNDtydGw4MTUyX3Jlc2V0X3Jlc3VtZSYjMzQ7LAogICAgJiMzNDtydGw4MTUyX3Byb2JlX29uY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgc3lzdGVtX2xvbmdfd3Egd2l0aCBzeXN0ZW1fZGZsX2xvbmdfd3EgZm9yIHNjaGVkdWxpbmcgZGVsYXllZCB3b3JrcyBpbiBzZXZlcmFsIG5ldHdvcmsgZHJpdmVycyAoaWJtdm5pYywgaWNzc2csIHRodW5kZXJib2x0LCBwZWdhc3VzLCByODE1MikuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyB0aGUgZXhlY3V0aW9uIGNvbnRleHQgb2YgdGhlc2Ugd29ya3MsIHBvdGVudGlhbGx5IGFmZmVjdGluZyBjb25jdXJyZW5jeSBvciBkZWFkbG9ja3MuIEZ1enppbmcgdGhlIGFmZmVjdGVkIHdvcmsgZnVuY3Rpb25zIGFuZCB0aGVpciB0cmlnZ2VycyAobGlrZSBwcm9iZSwgb3BlbiwgcmVzZXQsIGFuZCBsb2dpbikgaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBhcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxNDoxNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDUwYmU3ZmI4YTNhMzhiN2Q2ZjY2ZTVjYjRjNzFjZTViY2EzYzg1OTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyMCAxNDoxNDozMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuY1xuaW5kZXggNWE1MTBlZWQzMzVlYWQuLmQ0YzI4NGM4ZWY0MzdhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuY1xuQEAgLTMyMjksNyAmIzQzOzMyMjksNyBAQCBzdGF0aWMgdm9pZCBfX2libXZuaWNfcmVzZXQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0aWYgKGFkYXB0ZXItXHUwMDNlc3RhdGUgPT0gVk5JQ19QUk9CSU5HIFx1MDAyNlx1MDAyNlxuIFx0ICAgICF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXHUwMDI2YWRhcHRlci1cdTAwM2Vwcm9iZV9kb25lLCB0aW1lb3V0KSkge1xuIFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7UmVzZXQgdGhyZWFkIHRpbWVkIG91dCBvbiBwcm9iZVwmIzM0Oyk7XG4tXHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSxcbiYjNDM7XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXG4gXHRcdFx0XHQgICBcdTAwMjZhZGFwdGVyLVx1MDAzZWlibXZuaWNfZGVsYXllZF9yZXNldCxcbiBcdFx0XHRcdCAgIElCTVZOSUNfUkVTRVRfREVMQVkpO1xuIFx0XHRyZXR1cm47XG5AQCAtMzI2Nyw3ICYjNDM7MzI2Nyw3IEBAIHN0YXRpYyB2b2lkIF9faWJtdm5pY19yZXNldChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRzcGluX2xvY2soXHUwMDI2YWRhcHRlci1cdTAwM2Vyd2lfbG9jayk7XG4gXHRpZiAoIWxpc3RfZW1wdHkoXHUwMDI2YWRhcHRlci1cdTAwM2Vyd2lfbGlzdCkpIHtcbiBcdFx0aWYgKHRlc3RfYW5kX3NldF9iaXRfbG9jaygwLCBcdTAwMjZhZGFwdGVyLVx1MDAzZXJlc2V0dGluZykpIHtcbi1cdFx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsXG4mIzQzO1x0XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXG4gXHRcdFx0XHRcdCAgIFx1MDAyNmFkYXB0ZXItXHUwMDNlaWJtdm5pY19kZWxheWVkX3Jlc2V0LFxuIFx0XHRcdFx0XHQgICBJQk1WTklDX1JFU0VUX0RFTEFZKTtcbiBcdFx0fSBlbHNlIHtcbkBAIC0zNDU0LDcgJiM0MzszNDU0LDcgQEAgc3RhdGljIGludCBpYm12bmljX3Jlc2V0KHN0cnVjdCBpYm12bmljX2FkYXB0ZXIgKmFkYXB0ZXIsXG4gXHRsaXN0X2FkZF90YWlsKFx1MDAyNnJ3aS1cdTAwM2VsaXN0LCBcdTAwMjZhZGFwdGVyLVx1MDAzZXJ3aV9saXN0KTtcbiBcdG5ldGRldl9kYmcoYWRhcHRlci1cdTAwM2VuZXRkZXYsIFwmIzM0O1NjaGVkdWxpbmcgcmVzZXQgKHJlYXNvbiAlcylcXG5cJiMzNDssXG4gXHRcdCAgIHJlc2V0X3JlYXNvbl90b19zdHJpbmcocmVhc29uKSk7XG4tXHRxdWV1ZV93b3JrKHN5c3RlbV9sb25nX3dxLCBcdTAwMjZhZGFwdGVyLVx1MDAzZWlibXZuaWNfcmVzZXQpO1xuJiM0MztcdHF1ZXVlX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZhZGFwdGVyLVx1MDAzZWlibXZuaWNfcmVzZXQpO1xuIFxuIFx0cmV0ID0gMDtcbiBlcnI6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguY1xuaW5kZXggNTkxYmU1YzgwNTZiNDMuLjBmYmEyMmMxMDQ2ZTk2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jXG5AQCAtMTEwMCw3ICYjNDM7MTEwMCw3IEBAIHN0YXRpYyBpbnQgZW1hY19uZG9fb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiBcbiBcdHBydWV0aC1cdTAwM2VlbWFjc19pbml0aWFsaXplZCYjNDM7JiM0Mzs7XG4gXG4tXHRxdWV1ZV93b3JrKHN5c3RlbV9sb25nX3dxLCBcdTAwMjZlbWFjLVx1MDAzZXN0YXRzX3dvcmsud29yayk7XG4mIzQzO1x0cXVldWVfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmVtYWMtXHUwMDNlc3RhdHNfd29yay53b3JrKTtcbiBcbiBcdHJldHVybiAwO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N0YXRzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zdGF0cy5jXG5pbmRleCA3MTU5YmFhMDE1NWNmYi4uN2Q2ZDY2OTJkODE5MjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zdGF0cy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zdGF0cy5jXG5AQCAtNjksNyAmIzQzOzY5LDcgQEAgdm9pZCBpY3NzZ19zdGF0c193b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRcdFx0XHRcdHN0YXRzX3dvcmsud29yayk7XG4gXHRlbWFjX3VwZGF0ZV9oYXJkd2FyZV9zdGF0cyhlbWFjKTtcbiBcbi1cdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2ZW1hYy1cdTAwM2VzdGF0c193b3JrLFxuJiM0MztcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmVtYWMtXHUwMDNlc3RhdHNfd29yayxcbiBcdFx0XHQgICBtc2Vjc190b19qaWZmaWVzKChTVEFUU19USU1FX0xJTUlUXzFHX01TICogMTAwMCkgLyBlbWFjLVx1MDAzZXNwZWVkKSk7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKGljc3NnX3N0YXRzX3dvcmtfaGFuZGxlcik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jIGIvZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jXG5pbmRleCAwMmE5MTY1MDU2MWFiMS4uYmUyNzk3MmJlZDE4ZWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uY1xuQEAgLTMxNiw3ICYjNDM7MzE2LDcgQEAgc3RhdGljIHZvaWQgc3RhcnRfbG9naW4oc3RydWN0IHRibmV0ICpuZXQpXG4gXHRuZXQtXHUwMDNlbG9naW5fcmVjZWl2ZWQgPSBmYWxzZTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZuZXQtXHUwMDNlY29ubmVjdGlvbl9sb2NrKTtcbiBcbi1cdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2bmV0LVx1MDAzZWxvZ2luX3dvcmssXG4mIzQzO1x0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2bmV0LVx1MDAzZWxvZ2luX3dvcmssXG4gXHRcdFx0ICAgbXNlY3NfdG9famlmZmllcygxMDAwKSk7XG4gfVxuIFxuQEAgLTQ2MCw3ICYjNDM7NDYwLDcgQEAgc3RhdGljIGludCB0Ym5ldF9oYW5kbGVfcGFja2V0KGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUsIHZvaWQgKmRhdGEpXG4gXHRcdFx0aWYgKG5ldC1cdTAwM2Vsb2dpbl9yZXRyaWVzIFx1MDAzZT0gVEJORVRfTE9HSU5fUkVUUklFUyB8fFxuIFx0XHRcdCAgICAhbmV0LVx1MDAzZWxvZ2luX3NlbnQpIHtcbiBcdFx0XHRcdG5ldC1cdTAwM2Vsb2dpbl9yZXRyaWVzID0gMDtcbi1cdFx0XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSxcbiYjNDM7XHRcdFx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLFxuIFx0XHRcdFx0XHRcdCAgIFx1MDAyNm5ldC1cdTAwM2Vsb2dpbl93b3JrLCAwKTtcbiBcdFx0XHR9XG4gXHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm5ldC1cdTAwM2Vjb25uZWN0aW9uX2xvY2spO1xuQEAgLTcwMCw3ICYjNDM7NzAwLDggQEAgc3RhdGljIHZvaWQgdGJuZXRfbG9naW5fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRcdG5ldGRldl9kYmcobmV0LVx1MDAzZWRldiwgXCYjMzQ7c2VuZGluZyBsb2dpbiByZXF1ZXN0IGZhaWxlZCwgcmV0PSVkXFxuXCYjMzQ7LFxuIFx0XHRcdCAgIHJldCk7XG4gXHRcdGlmIChuZXQtXHUwMDNlbG9naW5fcmV0cmllcyYjNDM7JiM0MzsgXHUwMDNjIFRCTkVUX0xPR0lOX1JFVFJJRVMpIHtcbi1cdFx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsIFx1MDAyNm5ldC1cdTAwM2Vsb2dpbl93b3JrLFxuJiM0MztcdFx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLFxuJiM0MztcdFx0XHRcdFx0ICAgXHUwMDI2bmV0LVx1MDAzZWxvZ2luX3dvcmssXG4gXHRcdFx0XHRcdCAgIGRlbGF5KTtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRuZXRkZXZfaW5mbyhuZXQtXHUwMDNlZGV2LCBcJiMzNDtUaHVuZGVyYm9sdElQIGxvZ2luIHRpbWVkIG91dFxcblwmIzM0Oyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYyBiL2RyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmNcbmluZGV4IDg3MDBlZWI4ZTIyZDA3Li5jMTc5OGUxNGIyMjQyZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmNcbkBAIC0xMTI2LDggJiM0MzsxMTI2LDkgQEAgc3RhdGljIHZvaWQgY2hlY2tfY2FycmllcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRwZWdhc3VzX3QgKnBlZ2FzdXMgPSBjb250YWluZXJfb2Yod29yaywgcGVnYXN1c190LCBjYXJyaWVyX2NoZWNrLndvcmspO1xuIFx0c2V0X2NhcnJpZXIocGVnYXN1cy1cdTAwM2VuZXQpO1xuIFx0aWYgKCEocGVnYXN1cy1cdTAwM2VmbGFncyBcdTAwMjYgUEVHQVNVU19VTlBMVUcpKSB7XG4tXHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2cGVnYXN1cy1cdTAwM2VjYXJyaWVyX2NoZWNrLFxuLVx0XHRcdENBUlJJRVJfQ0hFQ0tfREVMQVkpO1xuJiM0MztcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcbiYjNDM7XHRcdFx0XHQgICBcdTAwMjZwZWdhc3VzLVx1MDAzZWNhcnJpZXJfY2hlY2ssXG4mIzQzO1x0XHRcdFx0ICAgQ0FSUklFUl9DSEVDS19ERUxBWSk7XG4gXHR9XG4gfVxuIFxuQEAgLTEyMzIsNyAmIzQzOzEyMzMsNyBAQCBzdGF0aWMgaW50IHBlZ2FzdXNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4gXHRyZXMgPSByZWdpc3Rlcl9uZXRkZXYobmV0KTtcbiBcdGlmIChyZXMpXG4gXHRcdGdvdG8gb3V0Mztcbi1cdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2cGVnYXN1cy1cdTAwM2VjYXJyaWVyX2NoZWNrLFxuJiM0MztcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnBlZ2FzdXMtXHUwMDNlY2Fycmllcl9jaGVjayxcbiBcdFx0XHQgICBDQVJSSUVSX0NIRUNLX0RFTEFZKTtcbiBcdGRldl9pbmZvKFx1MDAyNmludGYtXHUwMDNlZGV2LCBcJiMzNDslcywgJXMsICVwTVxcblwmIzM0OywgbmV0LVx1MDAzZW5hbWUsXG4gXHRcdCB1c2JfZGV2X2lkW2Rldl9pbmRleF0ubmFtZSwgbmV0LVx1MDAzZWRldl9hZGRyKTtcbkBAIC0xMjk3LDcgJiM0MzsxMjk4LDcgQEAgc3RhdGljIGludCBwZWdhc3VzX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbiBcdFx0cGVnYXN1cy1cdTAwM2VpbnRyX3VyYi1cdTAwM2VhY3R1YWxfbGVuZ3RoID0gMDtcbiBcdFx0aW50cl9jYWxsYmFjayhwZWdhc3VzLVx1MDAzZWludHJfdXJiKTtcbiBcdH1cbi1cdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2cGVnYXN1cy1cdTAwM2VjYXJyaWVyX2NoZWNrLFxuJiM0MztcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnBlZ2FzdXMtXHUwMDNlY2Fycmllcl9jaGVjayxcbiBcdFx0XHRcdENBUlJJRVJfQ0hFQ0tfREVMQVkpO1xuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jIGIvZHJpdmVycy9uZXQvdXNiL3I4MTUyLmNcbmluZGV4IGY2MTY4NjQzMzAzMWM3Li5mNmFmNjZmMjk0ZGJjYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC91c2IvcjgxNTIuY1xuQEAgLTcwNzIsNyAmIzQzOzcwNzIsOCBAQCBzdGF0aWMgdm9pZCBydGxfaHdfcGh5X3dvcmtfZnVuY190KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcbiBcdFx0LyogRGVsYXkgZXhlY3V0aW9uIGluIGNhc2UgcmVxdWVzdF9maXJtd2FyZSgpIGlzIG5vdCByZWFkeSB5ZXQuXG4gXHRcdCAqL1xuLVx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsIFx1MDAyNnRwLVx1MDAzZWh3X3BoeV93b3JrLCBIWiAqIDEwKTtcbiYjNDM7XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnRwLVx1MDAzZWh3X3BoeV93b3JrLFxuJiM0MztcdFx0XHRcdCAgIEhaICogMTApO1xuIFx0XHRnb3RvIGlnbm9yZV9vbmNlO1xuIFx0fVxuIFxuQEAgLTg4NDAsNyAmIzQzOzg4NDEsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNTJfcmVzZXRfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuIFx0Y2xlYXJfYml0KFNFTEVDVElWRV9TVVNQRU5ELCBcdTAwMjZ0cC1cdTAwM2VmbGFncyk7XG4gXHRydGxfcmVzZXRfb2NwX2Jhc2UodHApO1xuIFx0dHAtXHUwMDNlcnRsX29wcy5pbml0KHRwKTtcbi1cdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2dHAtXHUwMDNlaHdfcGh5X3dvcmssIDApO1xuJiM0MztcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnRwLVx1MDAzZWh3X3BoeV93b3JrLCAwKTtcbiBcdHNldF9ldGhlcm5ldF9hZGRyKHRwLCB0cnVlKTtcbiBcdHJldHVybiBydGw4MTUyX3Jlc3VtZShpbnRmKTtcbiB9XG5AQCAtMTAyOTUsNyAmIzQzOzEwMjk2LDcgQEAgc3RhdGljIGludCBydGw4MTUyX3Byb2JlX29uY2Uoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4gXHQvKiBSZXRyeSBpbiBjYXNlIHJlcXVlc3RfZmlybXdhcmUoKSBpcyBub3QgcmVhZHkgeWV0LiAqL1xuIFx0dHAtXHUwMDNlcnRsX2Z3LnJldHJ5ID0gdHJ1ZTtcbiAjZW5kaWZcbi1cdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2dHAtXHUwMDNlaHdfcGh5X3dvcmssIDApO1xuJiM0MztcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnRwLVx1MDAzZWh3X3BoeV93b3JrLCAwKTtcbiBcdHNldF9ldGhlcm5ldF9hZGRyKHRwLCBmYWxzZSk7XG4gXG4gXHR1c2Jfc2V0X2ludGZkYXRhKGludGYsIHRwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxNDoxNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJQk1WTklDJiMzNDssCiAgICAmIzM0O1RJX0lDU1NHX1BSVUVUSCYjMzQ7LAogICAgJiMzNDtVU0I0X05FVCYjMzQ7LAogICAgJiMzNDtVU0JfUEVHQVNVUyYjMzQ7LAogICAgJiMzNDtVU0JfUlRMODE1MiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19faWJtdm5pY19yZXNldCYjMzQ7LAogICAgJiMzNDtpYm12bmljX3Jlc2V0JiMzNDssCiAgICAmIzM0O2VtYWNfbmRvX29wZW4mIzM0OywKICAgICYjMzQ7aWNzc2dfc3RhdHNfd29ya19oYW5kbGVyJiMzNDssCiAgICAmIzM0O3N0YXJ0X2xvZ2luJiMzNDssCiAgICAmIzM0O3RibmV0X2xvZ2luX3dvcmsmIzM0OywKICAgICYjMzQ7Y2hlY2tfY2FycmllciYjMzQ7LAogICAgJiMzNDtwZWdhc3VzX3Byb2JlJiMzNDssCiAgICAmIzM0O3BlZ2FzdXNfcmVzdW1lJiMzNDssCiAgICAmIzM0O3J0bF9od19waHlfd29ya19mdW5jX3QmIzM0OywKICAgICYjMzQ7cnRsODE1Ml9yZXNldF9yZXN1bWUmIzM0OywKICAgICYjMzQ7cnRsODE1Ml9wcm9iZV9vbmNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIHN5c3RlbV9sb25nX3dxIHdpdGggc3lzdGVtX2RmbF9sb25nX3dxIGZvciBzY2hlZHVsaW5nIGRlbGF5ZWQgd29ya3MgaW4gc2V2ZXJhbCBuZXR3b3JrIGRyaXZlcnMgKGlibXZuaWMsIGljc3NnLCB0aHVuZGVyYm9sdCwgcGVnYXN1cywgcjgxNTIpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IG9mIHRoZXNlIHdvcmtzLCBwb3RlbnRpYWxseSBhZmZlY3RpbmcgY29uY3VycmVuY3kgb3IgZGVhZGxvY2tzLiBGdXp6aW5nIHRoZSBhZmZlY3RlZCB3b3JrIGZ1bmN0aW9ucyBhbmQgdGhlaXIgdHJpZ2dlcnMgKGxpa2UgcHJvYmUsIG9wZW4sIHJlc2V0LCBhbmQgbG9naW4pIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDUwYmU3ZmI4YTNhMzhiN2Q2ZjY2ZTVjYjRjNzFjZTViY2EzYzg1OTEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAyMCAxNDoxNDozMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jCmluZGV4IDVhNTEwZWVkMzM1ZWFkLi5kNGMyODRjOGVmNDM3YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jCkBAIC0zMjI5LDcgJiM0MzszMjI5LDcgQEAgc3RhdGljIHZvaWQgX19pYm12bmljX3Jlc2V0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAlpZiAoYWRhcHRlci0mZ3Q7c3RhdGUgPT0gVk5JQ19QUk9CSU5HICZhbXA7JmFtcDsKIAkgICAgIXdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmYW1wO2FkYXB0ZXItJmd0O3Byb2JlX2RvbmUsIHRpbWVvdXQpKSB7CiAJCWRldl9lcnIoZGV2LCAmIzM0O1Jlc2V0IHRocmVhZCB0aW1lZCBvdXQgb24gcHJvYmUmIzM0Oyk7Ci0JCXF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwKJiM0MzsJCXF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsCiAJCQkJICAgJmFtcDthZGFwdGVyLSZndDtpYm12bmljX2RlbGF5ZWRfcmVzZXQsCiAJCQkJICAgSUJNVk5JQ19SRVNFVF9ERUxBWSk7CiAJCXJldHVybjsKQEAgLTMyNjcsNyAmIzQzOzMyNjcsNyBAQCBzdGF0aWMgdm9pZCBfX2libXZuaWNfcmVzZXQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXNwaW5fbG9jaygmYW1wO2FkYXB0ZXItJmd0O3J3aV9sb2NrKTsKIAlpZiAoIWxpc3RfZW1wdHkoJmFtcDthZGFwdGVyLSZndDtyd2lfbGlzdCkpIHsKIAkJaWYgKHRlc3RfYW5kX3NldF9iaXRfbG9jaygwLCAmYW1wO2FkYXB0ZXItJmd0O3Jlc2V0dGluZykpIHsKLQkJCXF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwKJiM0MzsJCQlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLAogCQkJCQkgICAmYW1wO2FkYXB0ZXItJmd0O2libXZuaWNfZGVsYXllZF9yZXNldCwKIAkJCQkJICAgSUJNVk5JQ19SRVNFVF9ERUxBWSk7CiAJCX0gZWxzZSB7CkBAIC0zNDU0LDcgJiM0MzszNDU0LDcgQEAgc3RhdGljIGludCBpYm12bmljX3Jlc2V0KHN0cnVjdCBpYm12bmljX2FkYXB0ZXIgKmFkYXB0ZXIsCiAJbGlzdF9hZGRfdGFpbCgmYW1wO3J3aS0mZ3Q7bGlzdCwgJmFtcDthZGFwdGVyLSZndDtyd2lfbGlzdCk7CiAJbmV0ZGV2X2RiZyhhZGFwdGVyLSZndDtuZXRkZXYsICYjMzQ7U2NoZWR1bGluZyByZXNldCAocmVhc29uICVzKVxuJiMzNDssCiAJCSAgIHJlc2V0X3JlYXNvbl90b19zdHJpbmcocmVhc29uKSk7Ci0JcXVldWVfd29yayhzeXN0ZW1fbG9uZ193cSwgJmFtcDthZGFwdGVyLSZndDtpYm12bmljX3Jlc2V0KTsKJiM0MzsJcXVldWVfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsICZhbXA7YWRhcHRlci0mZ3Q7aWJtdm5pY19yZXNldCk7CiAKIAlyZXQgPSAwOwogZXJyOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYwppbmRleCA1OTFiZTVjODA1NmI0My4uMGZiYTIyYzEwNDZlOTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jCkBAIC0xMTAwLDcgJiM0MzsxMTAwLDcgQEAgc3RhdGljIGludCBlbWFjX25kb19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQogCiAJcHJ1ZXRoLSZndDtlbWFjc19pbml0aWFsaXplZCYjNDM7JiM0Mzs7CiAKLQlxdWV1ZV93b3JrKHN5c3RlbV9sb25nX3dxLCAmYW1wO2VtYWMtJmd0O3N0YXRzX3dvcmsud29yayk7CiYjNDM7CXF1ZXVlX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCAmYW1wO2VtYWMtJmd0O3N0YXRzX3dvcmsud29yayk7CiAKIAlyZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3RhdHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N0YXRzLmMKaW5kZXggNzE1OWJhYTAxNTVjZmIuLjdkNmQ2NjkyZDgxOTI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zdGF0cy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N0YXRzLmMKQEAgLTY5LDcgJiM0Mzs2OSw3IEBAIHZvaWQgaWNzc2dfc3RhdHNfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJCQkJCXN0YXRzX3dvcmsud29yayk7CiAJZW1hY191cGRhdGVfaGFyZHdhcmVfc3RhdHMoZW1hYyk7CiAKLQlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsICZhbXA7ZW1hYy0mZ3Q7c3RhdHNfd29yaywKJiM0MzsJcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgJmFtcDtlbWFjLSZndDtzdGF0c193b3JrLAogCQkJICAgbXNlY3NfdG9famlmZmllcygoU1RBVFNfVElNRV9MSU1JVF8xR19NUyAqIDEwMDApIC8gZW1hYy0mZ3Q7c3BlZWQpKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGljc3NnX3N0YXRzX3dvcmtfaGFuZGxlcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMgYi9kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMKaW5kZXggMDJhOTE2NTA1NjFhYjEuLmJlMjc5NzJiZWQxOGViIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jCkBAIC0zMTYsNyAmIzQzOzMxNiw3IEBAIHN0YXRpYyB2b2lkIHN0YXJ0X2xvZ2luKHN0cnVjdCB0Ym5ldCAqbmV0KQogCW5ldC0mZ3Q7bG9naW5fcmVjZWl2ZWQgPSBmYWxzZTsKIAltdXRleF91bmxvY2soJmFtcDtuZXQtJmd0O2Nvbm5lY3Rpb25fbG9jayk7CiAKLQlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsICZhbXA7bmV0LSZndDtsb2dpbl93b3JrLAomIzQzOwlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCAmYW1wO25ldC0mZ3Q7bG9naW5fd29yaywKIAkJCSAgIG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpOwogfQogCkBAIC00NjAsNyAmIzQzOzQ2MCw3IEBAIHN0YXRpYyBpbnQgdGJuZXRfaGFuZGxlX3BhY2tldChjb25zdCB2b2lkICpidWYsIHNpemVfdCBzaXplLCB2b2lkICpkYXRhKQogCQkJaWYgKG5ldC0mZ3Q7bG9naW5fcmV0cmllcyAmZ3Q7PSBUQk5FVF9MT0dJTl9SRVRSSUVTIHx8CiAJCQkgICAgIW5ldC0mZ3Q7bG9naW5fc2VudCkgewogCQkJCW5ldC0mZ3Q7bG9naW5fcmV0cmllcyA9IDA7Ci0JCQkJcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLAomIzQzOwkJCQlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLAogCQkJCQkJICAgJmFtcDtuZXQtJmd0O2xvZ2luX3dvcmssIDApOwogCQkJfQogCQkJbXV0ZXhfdW5sb2NrKCZhbXA7bmV0LSZndDtjb25uZWN0aW9uX2xvY2spOwpAQCAtNzAwLDcgJiM0Mzs3MDAsOCBAQCBzdGF0aWMgdm9pZCB0Ym5ldF9sb2dpbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJbmV0ZGV2X2RiZyhuZXQtJmd0O2RldiwgJiMzNDtzZW5kaW5nIGxvZ2luIHJlcXVlc3QgZmFpbGVkLCByZXQ9JWRcbiYjMzQ7LAogCQkJICAgcmV0KTsKIAkJaWYgKG5ldC0mZ3Q7bG9naW5fcmV0cmllcyYjNDM7JiM0MzsgJmx0OyBUQk5FVF9MT0dJTl9SRVRSSUVTKSB7Ci0JCQlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsICZhbXA7bmV0LSZndDtsb2dpbl93b3JrLAomIzQzOwkJCXF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsCiYjNDM7CQkJCQkgICAmYW1wO25ldC0mZ3Q7bG9naW5fd29yaywKIAkJCQkJICAgZGVsYXkpOwogCQl9IGVsc2UgewogCQkJbmV0ZGV2X2luZm8obmV0LSZndDtkZXYsICYjMzQ7VGh1bmRlcmJvbHRJUCBsb2dpbiB0aW1lZCBvdXRcbiYjMzQ7KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmMgYi9kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jCmluZGV4IDg3MDBlZWI4ZTIyZDA3Li5jMTc5OGUxNGIyMjQyZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jCkBAIC0xMTI2LDggJiM0MzsxMTI2LDkgQEAgc3RhdGljIHZvaWQgY2hlY2tfY2FycmllcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJcGVnYXN1c190ICpwZWdhc3VzID0gY29udGFpbmVyX29mKHdvcmssIHBlZ2FzdXNfdCwgY2Fycmllcl9jaGVjay53b3JrKTsKIAlzZXRfY2FycmllcihwZWdhc3VzLSZndDtuZXQpOwogCWlmICghKHBlZ2FzdXMtJmd0O2ZsYWdzICZhbXA7IFBFR0FTVVNfVU5QTFVHKSkgewotCQlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsICZhbXA7cGVnYXN1cy0mZ3Q7Y2Fycmllcl9jaGVjaywKLQkJCUNBUlJJRVJfQ0hFQ0tfREVMQVkpOwomIzQzOwkJcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwKJiM0MzsJCQkJICAgJmFtcDtwZWdhc3VzLSZndDtjYXJyaWVyX2NoZWNrLAomIzQzOwkJCQkgICBDQVJSSUVSX0NIRUNLX0RFTEFZKTsKIAl9CiB9CiAKQEAgLTEyMzIsNyAmIzQzOzEyMzMsNyBAQCBzdGF0aWMgaW50IHBlZ2FzdXNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsCiAJcmVzID0gcmVnaXN0ZXJfbmV0ZGV2KG5ldCk7CiAJaWYgKHJlcykKIAkJZ290byBvdXQzOwotCXF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgJmFtcDtwZWdhc3VzLSZndDtjYXJyaWVyX2NoZWNrLAomIzQzOwlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCAmYW1wO3BlZ2FzdXMtJmd0O2NhcnJpZXJfY2hlY2ssCiAJCQkgICBDQVJSSUVSX0NIRUNLX0RFTEFZKTsKIAlkZXZfaW5mbygmYW1wO2ludGYtJmd0O2RldiwgJiMzNDslcywgJXMsICVwTVxuJiMzNDssIG5ldC0mZ3Q7bmFtZSwKIAkJIHVzYl9kZXZfaWRbZGV2X2luZGV4XS5uYW1lLCBuZXQtJmd0O2Rldl9hZGRyKTsKQEAgLTEyOTcsNyAmIzQzOzEyOTgsNyBAQCBzdGF0aWMgaW50IHBlZ2FzdXNfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKQogCQlwZWdhc3VzLSZndDtpbnRyX3VyYi0mZ3Q7YWN0dWFsX2xlbmd0aCA9IDA7CiAJCWludHJfY2FsbGJhY2socGVnYXN1cy0mZ3Q7aW50cl91cmIpOwogCX0KLQlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsICZhbXA7cGVnYXN1cy0mZ3Q7Y2Fycmllcl9jaGVjaywKJiM0MzsJcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgJmFtcDtwZWdhc3VzLSZndDtjYXJyaWVyX2NoZWNrLAogCQkJCUNBUlJJRVJfQ0hFQ0tfREVMQVkpOwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL3I4MTUyLmMgYi9kcml2ZXJzL25ldC91c2IvcjgxNTIuYwppbmRleCBmNjE2ODY0MzMwMzFjNy4uZjZhZjY2ZjI5NGRiY2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jCkBAIC03MDcyLDcgJiM0Mzs3MDcyLDggQEAgc3RhdGljIHZvaWQgcnRsX2h3X3BoeV93b3JrX2Z1bmNfdChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAKIAkJLyogRGVsYXkgZXhlY3V0aW9uIGluIGNhc2UgcmVxdWVzdF9maXJtd2FyZSgpIGlzIG5vdCByZWFkeSB5ZXQuCiAJCSAqLwotCQlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsICZhbXA7dHAtJmd0O2h3X3BoeV93b3JrLCBIWiAqIDEwKTsKJiM0MzsJCXF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsICZhbXA7dHAtJmd0O2h3X3BoeV93b3JrLAomIzQzOwkJCQkgICBIWiAqIDEwKTsKIAkJZ290byBpZ25vcmVfb25jZTsKIAl9CiAKQEAgLTg4NDAsNyAmIzQzOzg4NDEsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNTJfcmVzZXRfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKQogCWNsZWFyX2JpdChTRUxFQ1RJVkVfU1VTUEVORCwgJmFtcDt0cC0mZ3Q7ZmxhZ3MpOwogCXJ0bF9yZXNldF9vY3BfYmFzZSh0cCk7CiAJdHAtJmd0O3J0bF9vcHMuaW5pdCh0cCk7Ci0JcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCAmYW1wO3RwLSZndDtod19waHlfd29yaywgMCk7CiYjNDM7CXF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsICZhbXA7dHAtJmd0O2h3X3BoeV93b3JrLCAwKTsKIAlzZXRfZXRoZXJuZXRfYWRkcih0cCwgdHJ1ZSk7CiAJcmV0dXJuIHJ0bDgxNTJfcmVzdW1lKGludGYpOwogfQpAQCAtMTAyOTUsNyAmIzQzOzEwMjk2LDcgQEAgc3RhdGljIGludCBydGw4MTUyX3Byb2JlX29uY2Uoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsCiAJLyogUmV0cnkgaW4gY2FzZSByZXF1ZXN0X2Zpcm13YXJlKCkgaXMgbm90IHJlYWR5IHlldC4gKi8KIAl0cC0mZ3Q7cnRsX2Z3LnJldHJ5ID0gdHJ1ZTsKICNlbmRpZgotCXF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgJmFtcDt0cC0mZ3Q7aHdfcGh5X3dvcmssIDApOwomIzQzOwlxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCAmYW1wO3RwLSZndDtod19waHlfd29yaywgMCk7CiAJc2V0X2V0aGVybmV0X2FkZHIodHAsIGZhbHNlKTsKIAogCXVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgdHApOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxNDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDA5CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNzAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoIEZ1enppbmcgRGVjaXNpb246IE5vKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgc3dhcHMgb3V0IGBzeXN0ZW1fbG9uZ193cWAgd2l0aCBgc3lzdGVtX2RmbF9sb25nX3dxYCBpbiBhIGJ1bmNoIG9mIG5ldHdvcmsgZHJpdmVyczogYGlibXZuaWMuY2AsIGBpY3NzZ19wcnVldGguY2AsIGBpY3NzZ19zdGF0cy5jYCwgYHRodW5kZXJib2x0L21haW4uY2AsIGBwZWdhc3VzLmNgLCBhbmQgYHI4MTUyLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7TWVjaGFuaWNhbCBjaGFuZ2UsIGp1c3QgcmVwbGFjaW5nIG9uZSB3b3JrcXVldWUgd2l0aCBhbm90aGVyLiYjMzQ7IERvZXMgdGhpcyBjaGFuZ2UgdGhlIGV4ZWN1dGlvbiBmbG93IGVub3VnaCB0byBldmVuIHdhcnJhbnQgZnV6emluZz8gSXQmIzM5O3MganVzdCBhIHdvcmtxdWV1ZSBzdWJzdGl0dXRpb24gZm9yIGRlbGF5ZWQgd29yay4KCkkmIzM5O20gdGhpbmtpbmcsIGBzeXN0ZW1fbG9uZ193cWAgdmVyc3VzIGBzeXN0ZW1fZGZsX2xvbmdfd3FgLi4uIGlzIHRoZXJlIGFueSAqbmV3KiBsb2dpYz8gTm9wZSwgaXQmIzM5O3MgYSBzaW1wbGUgd29ya3F1ZXVlIHBvaW50ZXIgcmVwbGFjZW1lbnQuIEl0ICpkb2VzKiBjaGFuZ2UgdGhlIGV4ZWN1dGlvbiBlbnZpcm9ubWVudCDigJMgcG90ZW50aWFsbHkgZGlmZmVyZW50IGNvbmN1cnJlbmN5IG9yIHByaW9yaXR5IG9mIHRoZXNlIHdvcmtzIOKAkyBidXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgYnJhbmNoZXMsIG9yIGRhdGEgc3RydWN0dXJlcy4KCldhaXQsIGlzIGBzeXN0ZW1fZGZsX2xvbmdfd3FgIGEgY29tcGxldGVseSAqbmV3KiB3b3JrcXVldWUsIG9yIGlzIHRoaXMgcGFydCBvZiBzb21lIGxhcmdlciBwYXRjaHNldD8gSnVzdCBhIHN0cmFpZ2h0IHJlcGxhY2VtZW50LCBpdCBsb29rcyBsaWtlLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBpbnN0cnVjdGlvbnMgc2F5OiAmIzM0OypSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOiAuLi5jaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuLi4qJiMzNDsuIElzIHRoaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgdGhvdWdoPyBZZXMsIGRpZmZlcmVudCB3b3JrcXVldWUsIGRpZmZlcmVudCBmdW5jdGlvbmFsIGNoYW5nZS4KCkFscmlnaHQsIGxldCYjMzk7cyBjb25zaWRlciByZWFjaGFiaWxpdHkuIGBwZWdhc3VzLmNgIGFuZCBgcjgxNTIuY2AgYXJlIFVTQiBuZXR3b3JrIGRyaXZlcnMuIFdlIGNhbiByZWFjaCB0aG9zZSB0aHJvdWdoIFVTQiBnYWRnZXQvZHVtbXlfaGNkIGluIFFFTVUuIGB0aHVuZGVyYm9sdC9tYWluLmNgPyBIbW0sIHByb2JhYmx5IG5vdCBlYXNpbHksIGJ1dCBtYXliZS4gYGlibXZuaWMuY2AgYW5kIGBpY3NzZ19wcnVldGguY2AgYXJlIHByb2JhYmx5IG5vdCBlYXNpbHkgcmVhY2hlZCBpbiBRRU1VIGFzIHRoZXkmIzM5O3JlIG1vcmUgc3BlY2lhbGl6ZWQgZHJpdmVycywgdGhlIGZpcnN0IHJlcXVpcmVzIGEgc3BlY2lmaWMgSUJNL3Bvd2VycGMvcHNlcmllcyBzZXR1cCwgYW5kIHRoZSBzZWNvbmQgaXMgcmVsYXRlZCB0byBUSSBQUlUgaGFyZHdhcmUuCgpCdXQsIHRoZSBrZXkgaXMgdGhlIGluc3RydWN0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBidXQgaXQgKmRvZXNuJiMzOTt0KiBpbnRyb2R1Y2UgbmV3IGxvZ2ljIG9yIGJyYW5jaGVzLCBhbmQgSSYjMzk7dmUgZ290IHRvIG1ha2UgYSBqdWRnZW1lbnQuIEdpdmVuIHRoZSAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7IGNyaXRlcmlhIG91dGxpbmVkIGFuZCB0aGUgZnVuY3Rpb25hbCBuYXR1cmUgb2Ygd29ya3F1ZXVlIGNoYW5nZSB3aXRob3V0IHRoZSBpbnRyb2R1Y3Rpb24gb2YgbmV3IGxvZ2ljLCBJIGFtIGRlY2lkaW5nIHRoYXQgaXQmIzM5O3MgKm5vdCogd29ydGggZnV6emluZyBhbmQgSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTQ6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3lzdGVtX2RmbF9sb25nX3dxJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYXRhL2xpYmF0YS1laC5jPTcyMT12b2lkIGF0YV9zY3NpX3BvcnRfZXJyb3JfaGFuZGxlcihzdHJ1Y3QgU2NzaV9Ib3N0ICpob3N0LCBzdHJ1Y3QgYXRhX3BvcnQgKmFwKVxuLS1cbmRyaXZlcnMvYXRhL2xpYmF0YS1laC5jLTgyMy1cdFx0IShhcC1cdTAwM2VmbGFncyBcdTAwMjYgQVRBX0ZMQUdfU0FTX0hPU1QpKVxuZHJpdmVycy9hdGEvbGliYXRhLWVoLmM6ODI0Olx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZhcC1cdTAwM2Vob3RwbHVnX3Rhc2ssIDApO1xuZHJpdmVycy9hdGEvbGliYXRhLWVoLmMtODI1LVxuLS1cbmRyaXZlcnMvYXRhL2xpYmF0YS1zY3NpLmM9NDcwNz12b2lkIGF0YV9zY3NpX3NjYW5faG9zdChzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBpbnQgc3luYylcbi0tXG5kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jLTQ3NzYtXG5kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jOjQ3Nzc6XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZhcC1cdTAwM2Vob3RwbHVnX3Rhc2ssXG5kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jLTQ3NzgtXHRcdFx0ICAgcm91bmRfamlmZmllc19yZWxhdGl2ZShIWikpO1xuLS1cbmRyaXZlcnMvaTJjL2kyYy1zbGF2ZS10ZXN0dW5pdC5jPTgyPXN0YXRpYyBpbnQgaTJjX3NsYXZlX3Rlc3R1bml0X3NsYXZlX2NiKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsXG4tLVxuZHJpdmVycy9pMmMvaTJjLXNsYXZlLXRlc3R1bml0LmMtMTI2LVx0XHRcdHNldF9iaXQoVFVfRkxBR19JTl9QUk9DRVNTLCBcdTAwMjZ0dS1cdTAwM2VmbGFncyk7XG5kcml2ZXJzL2kyYy9pMmMtc2xhdmUtdGVzdHVuaXQuYzoxMjc6XHRcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2dHUtXHUwMDNld29ya2VyLFxuZHJpdmVycy9pMmMvaTJjLXNsYXZlLXRlc3R1bml0LmMtMTI4LVx0XHRcdFx0XHQgICBtc2Vjc190b19qaWZmaWVzKDEwICogdHUtXHUwMDNlcmVnc1tUVV9SRUdfREVMQVldKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYz0zMjAzPXN0YXRpYyB2b2lkIF9faWJtdm5pY19yZXNldChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYy0zMjMxLVx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7UmVzZXQgdGhyZWFkIHRpbWVkIG91dCBvbiBwcm9iZVwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jOjMyMzI6XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jLTMyMzMtXHRcdFx0XHQgICBcdTAwMjZhZGFwdGVyLVx1MDAzZWlibXZuaWNfZGVsYXllZF9yZXNldCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jLTMyNjktXHRcdGlmICh0ZXN0X2FuZF9zZXRfYml0X2xvY2soMCwgXHUwMDI2YWRhcHRlci1cdTAwM2VyZXNldHRpbmcpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jOjMyNzA6XHRcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmMtMzI3MS1cdFx0XHRcdFx0ICAgXHUwMDI2YWRhcHRlci1cdTAwM2VpYm12bmljX2RlbGF5ZWRfcmVzZXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYz0zNDEwPXN0YXRpYyBpbnQgaWJtdm5pY19yZXNldChzdHJ1Y3QgaWJtdm5pY19hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmMtMzQ1Ni1cdFx0ICAgcmVzZXRfcmVhc29uX3RvX3N0cmluZyhyZWFzb24pKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmM6MzQ1NzpcdHF1ZXVlX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZhZGFwdGVyLVx1MDAzZWlibXZuaWNfcmVzZXQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYy0zNDU4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jPTEwMTM9c3RhdGljIGludCBlbWFjX25kb19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTExMDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYzoxMTAzOlx0cXVldWVfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmVtYWMtXHUwMDNlc3RhdHNfd29yay53b3JrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTExMDQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3RhdHMuYz02Nj12b2lkIGljc3NnX3N0YXRzX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3RhdHMuYy03MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N0YXRzLmM6NzI6XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZlbWFjLVx1MDAzZXN0YXRzX3dvcmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zdGF0cy5jLTczLVx0XHRcdCAgIG1zZWNzX3RvX2ppZmZpZXMoKFNUQVRTX1RJTUVfTElNSVRfMUdfTVMgKiAxMDAwKSAvIGVtYWMtXHUwMDNlc3BlZWQpKTtcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM9MzEwPXN0YXRpYyB2b2lkIHN0YXJ0X2xvZ2luKHN0cnVjdCB0Ym5ldCAqbmV0KVxuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy0zMTgtXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6MzE5Olx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2bmV0LVx1MDAzZWxvZ2luX3dvcmssXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMzIwLVx0XHRcdCAgIG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpO1xuLS1cbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz00MTU9c3RhdGljIGludCB0Ym5ldF9oYW5kbGVfcGFja2V0KGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTQ2Mi1cdFx0XHRcdG5ldC1cdTAwM2Vsb2dpbl9yZXRyaWVzID0gMDtcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzo0NjM6XHRcdFx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTQ2NC1cdFx0XHRcdFx0XHQgICBcdTAwMjZuZXQtXHUwMDNlbG9naW5fd29yaywgMCk7XG4tLVxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jPTY4Nj1zdGF0aWMgdm9pZCB0Ym5ldF9sb2dpbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNzAyLVx0XHRpZiAobmV0LVx1MDAzZWxvZ2luX3JldHJpZXMmIzQzOyYjNDM7IFx1MDAzYyBUQk5FVF9MT0dJTl9SRVRSSUVTKSB7XG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6NzAzOlx0XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNzA0LVx0XHRcdFx0XHQgICBcdTAwMjZuZXQtXHUwMDNlbG9naW5fd29yayxcbi0tXG5kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jPTExMjQ9c3RhdGljIHZvaWQgY2hlY2tfY2FycmllcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYy0xMTI4LVx0aWYgKCEocGVnYXN1cy1cdTAwM2VmbGFncyBcdTAwMjYgUEVHQVNVU19VTlBMVUcpKSB7XG5kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jOjExMjk6XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXG5kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jLTExMzAtXHRcdFx0XHQgICBcdTAwMjZwZWdhc3VzLVx1MDAzZWNhcnJpZXJfY2hlY2ssXG4tLVxuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYz0xMTUxPXN0YXRpYyBpbnQgcGVnYXN1c19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi0tXG5kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jLTEyMzUtXHRcdGdvdG8gb3V0MztcbmRyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmM6MTIzNjpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnBlZ2FzdXMtXHUwMDNlY2Fycmllcl9jaGVjayxcbmRyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmMtMTIzNy1cdFx0XHQgICBDQVJSSUVSX0NIRUNLX0RFTEFZKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jPTEyODc9c3RhdGljIGludCBwZWdhc3VzX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jLTEzMDAtXHR9XG5kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jOjEzMDE6XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZwZWdhc3VzLVx1MDAzZWNhcnJpZXJfY2hlY2ssXG5kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jLTEzMDItXHRcdFx0XHRDQVJSSUVSX0NIRUNLX0RFTEFZKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvcjgxNTIuYz03MDU3PXN0YXRpYyB2b2lkIHJ0bF9od19waHlfd29ya19mdW5jX3Qoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9yODE1Mi5jLTcwNzQtXHRcdCAqL1xuZHJpdmVycy9uZXQvdXNiL3I4MTUyLmM6NzA3NTpcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2dHAtXHUwMDNlaHdfcGh5X3dvcmssXG5kcml2ZXJzL25ldC91c2IvcjgxNTIuYy03MDc2LVx0XHRcdFx0ICAgSFogKiAxMCk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3I4MTUyLmM9ODgzNz1zdGF0aWMgaW50IHJ0bDgxNTJfcmVzZXRfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9yODE1Mi5jLTg4NDMtXHR0cC1cdTAwM2VydGxfb3BzLmluaXQodHApO1xuZHJpdmVycy9uZXQvdXNiL3I4MTUyLmM6ODg0NDpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnRwLVx1MDAzZWh3X3BoeV93b3JrLCAwKTtcbmRyaXZlcnMvbmV0L3VzYi9yODE1Mi5jLTg4NDUtXHRzZXRfZXRoZXJuZXRfYWRkcih0cCwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3I4MTUyLmM9MTAxMzA9c3RhdGljIGludCBydGw4MTUyX3Byb2JlX29uY2Uoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3I4MTUyLmMtMTAyOTgtI2VuZGlmXG5kcml2ZXJzL25ldC91c2IvcjgxNTIuYzoxMDI5OTpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnRwLVx1MDAzZWh3X3BoeV93b3JrLCAwKTtcbmRyaXZlcnMvbmV0L3VzYi9yODE1Mi5jLTEwMzAwLVx0c2V0X2V0aGVybmV0X2FkZHIodHAsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYz0xOTE9c3RhdGljIHZvaWQgdHVzYjEyMTBfY2hnX2RldF9zZXRfc3RhdGUoc3RydWN0IHR1c2IxMjEwICp0dXNiLFxuLS1cbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jLTE5OS1cdHR1c2ItXHUwMDNlY2hnX2RldF9zdGF0ZSA9IG5ld19zdGF0ZTtcbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jOjIwMDpcdG1vZF9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZ0dXNiLVx1MDAzZWNoZ19kZXRfd29yayxcbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jLTIwMS1cdFx0XHQgbXNlY3NfdG9famlmZmllcyhkZWxheV9tcykpO1xuLS1cbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jPTM3Nj1zdGF0aWMgaW50IHR1c2IxMjEwX3BzeV9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLFxuLS1cbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jLTM4Mi1cdGlmIChwc3kgIT0gdHVzYi1cdTAwM2Vwc3kgXHUwMDI2XHUwMDI2IHBzeS1cdTAwM2VkZXNjLVx1MDAzZXR5cGUgPT0gUE9XRVJfU1VQUExZX1RZUEVfVVNCKVxuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmM6MzgzOlx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZ0dXNiLVx1MDAzZWNoZ19kZXRfd29yaywgMCk7XG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYy0zODQtXG4tLVxuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmM9NDMyPXN0YXRpYyB2b2lkIHR1c2IxMjEwX3Byb2JlX2NoYXJnZXJfZGV0ZWN0KHN0cnVjdCB0dXNiMTIxMCAqdHVzYilcbi0tXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYy00NjAtXHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZ0dXNiLVx1MDAzZWNoZ19kZXRfd29yaywgdHVzYjEyMTBfY2hnX2RldF93b3JrKTtcbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jOjQ2MTpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnR1c2ItXHUwMDNlY2hnX2RldF93b3JrLCAyICogSFopO1xuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmMtNDYyLVxuLS1cbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYz0yMjA9c3RhdGljIHNzaXplX3Qgc3RvcmVfcmVjb25uZWN0X2RlbGF5KHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmMtMjM2LVx0ICAgIHJwb3J0LVx1MDAzZXN0YXRlICE9IFNSUF9SUE9SVF9SVU5OSU5HKSB7XG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmM6MjM3Olx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZycG9ydC1cdTAwM2VyZWNvbm5lY3Rfd29yayxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy0yMzgtXHRcdFx0XHQgICBkZWxheSAqIEhaKTtcbi0tXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmM9Mzc4PXN0YXRpYyB2b2lkIHNycF9yZWNvbm5lY3Rfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTM5Mi1cdFx0aWYgKGRlbGF5IFx1MDAzZSAwKVxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jOjM5MzpcdFx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTM5NC1cdFx0XHRcdFx0ICAgXHUwMDI2cnBvcnQtXHUwMDNlcmVjb25uZWN0X3dvcmssIGRlbGF5ICogSFopO1xuLS1cbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYz00NjE9c3RhdGljIHZvaWQgX19zcnBfc3RhcnRfdGxfZmFpbF90aW1lcnMoc3RydWN0IHNycF9ycG9ydCAqcnBvcnQpXG4tLVxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTQ3Ni1cdGlmIChkZWxheSBcdTAwM2UgMClcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYzo0Nzc6XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnJwb3J0LVx1MDAzZXJlY29ubmVjdF93b3JrLFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTQ3OC1cdFx0XHRcdCAgIDFVTCAqIGRlbGF5ICogSFopO1xuLS1cbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy00ODQtXHRcdGlmIChmYXN0X2lvX2ZhaWxfdG1vIFx1MDAzZT0gMClcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYzo0ODU6XHRcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy00ODYtXHRcdFx0XHRcdCAgIFx1MDAyNnJwb3J0LVx1MDAzZWZhc3RfaW9fZmFpbF93b3JrLFxuLS1cbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy00ODgtXHRcdGlmIChkZXZfbG9zc190bW8gXHUwMDNlPSAwKVxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jOjQ4OTpcdFx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTQ5MC1cdFx0XHRcdFx0ICAgXHUwMDI2cnBvcnQtXHUwMDNlZGV2X2xvc3Nfd29yayxcbi0tXG5mcy9mdXNlL2RheC5jPTEwOD1fX2tpY2tfZG1hcF9mcmVlX3dvcmtlcihzdHJ1Y3QgZnVzZV9jb25uX2RheCAqZmNkLCB1bnNpZ25lZCBsb25nIGRlbGF5X21zKVxuLS1cbmZzL2Z1c2UvZGF4LmMtMTE1LVx0aWYgKGZjZC1cdTAwM2Vucl9mcmVlX3JhbmdlcyBcdTAwM2MgZnJlZV90aHJlc2hvbGQpXG5mcy9mdXNlL2RheC5jOjExNjpcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2ZmNkLVx1MDAzZWZyZWVfd29yayxcbmZzL2Z1c2UvZGF4LmMtMTE3LVx0XHRcdFx0ICAgbXNlY3NfdG9famlmZmllcyhkZWxheV9tcykpO1xuLS1cbmluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmg9NDE4PWVudW0gd3FfY29uc3RzIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oLTQ0NC0gKlxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaDo0NDU6ICogc3lzdGVtX2RmbF9sb25nX3dxIGlzIHNpbWlsYXIgdG8gc3lzdGVtX2RmbF93cSBidXQgaXQgbWF5IGhvc3QgbG9uZyBydW5uaW5nXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oLTQ0Ni0gKiB3b3Jrcy5cbi0tXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oPTQ3NT1leHRlcm4gc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnN5c3RlbV9iaF9oaWdocHJpX3dxO1xuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaDo0NzY6ZXh0ZXJuIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpzeXN0ZW1fZGZsX2xvbmdfd3E7XG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oLTQ3Ny1cbi0tXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oPTc5Nj1leHRlcm4gdm9pZCBfX3dhcm5fZmx1c2hpbmdfc3lzdGVtd2lkZV93cSh2b2lkKVxuLS1cbmluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgtODE1LVx0ICAgICBfd3EgPT0gc3lzdGVtX2xvbmdfd3EpIHx8XHRcdFx0XHRcdFxcXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oOjgxNjpcdCAgICAoX19idWlsdGluX2NvbnN0YW50X3AoX3dxID09IHN5c3RlbV9kZmxfbG9uZ193cSkgXHUwMDI2XHUwMDI2XHRcdFxcXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oOjgxNzpcdCAgICAgX3dxID09IHN5c3RlbV9kZmxfbG9uZ193cSkgfHxcdFx0XHRcdFx0XFxcbmluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgtODE4LVx0ICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcChfd3EgPT0gc3lzdGVtX2RmbF93cSkgXHUwMDI2XHUwMDI2XHRcdFxcXG4tLVxua2VybmVsL3dvcmtxdWV1ZS5jPTU0NT1FWFBPUlRfU1lNQk9MX0dQTChzeXN0ZW1fYmhfaGlnaHByaV93cSk7XG5rZXJuZWwvd29ya3F1ZXVlLmM6NTQ2OnN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpzeXN0ZW1fZGZsX2xvbmdfd3EgX19yb19hZnRlcl9pbml0O1xua2VybmVsL3dvcmtxdWV1ZS5jOjU0NzpFWFBPUlRfU1lNQk9MX0dQTChzeXN0ZW1fZGZsX2xvbmdfd3EpO1xua2VybmVsL3dvcmtxdWV1ZS5jLTU0OC1cbi0tXG5rZXJuZWwvd29ya3F1ZXVlLmM9Nzk3MT12b2lkIF9faW5pdCB3b3JrcXVldWVfaW5pdF9lYXJseSh2b2lkKVxuLS1cbmtlcm5lbC93b3JrcXVldWUuYy04MDcwLVx0XHRcdFx0XHQgICAgICAgV1FfQkggfCBXUV9ISUdIUFJJIHwgV1FfUEVSQ1BVLCAwKTtcbmtlcm5lbC93b3JrcXVldWUuYzo4MDcxOlx0c3lzdGVtX2RmbF9sb25nX3dxID0gYWxsb2Nfd29ya3F1ZXVlKFwmIzM0O2V2ZW50c19kZmxfbG9uZ1wmIzM0OywgV1FfVU5CT1VORCwgV1FfTUFYX0FDVElWRSk7XG5rZXJuZWwvd29ya3F1ZXVlLmMtODA3Mi1cdEJVR19PTighc3lzdGVtX3dxIHx8ICFzeXN0ZW1fcGVyY3B1X3dxfHwgIXN5c3RlbV9oaWdocHJpX3dxIHx8ICFzeXN0ZW1fbG9uZ193cSB8fFxuLS1cbmtlcm5lbC93b3JrcXVldWUuYy04MDc1LVx0ICAgICAgICFzeXN0ZW1fZnJlZXphYmxlX3Bvd2VyX2VmZmljaWVudF93cSB8fFxua2VybmVsL3dvcmtxdWV1ZS5jOjgwNzY6XHQgICAgICAgIXN5c3RlbV9iaF93cSB8fCAhc3lzdGVtX2JoX2hpZ2hwcmlfd3EgfHwgIXN5c3RlbV9kZmxfbG9uZ193cSk7XG5rZXJuZWwvd29ya3F1ZXVlLmMtODA3Ny19XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz0yNDM9c3RhdGljIGlubGluZSBpbnQgaXBfdnNfY29ubl9oYXNoKHN0cnVjdCBpcF92c19jb25uICpjcClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTI4Ny1cdCAgICAhdGVzdF9hbmRfc2V0X2JpdChJUF9WU19XT1JLX0NPTk5fUkVTSVpFLCBcdTAwMjZpcHZzLVx1MDAzZXdvcmtfZmxhZ3MpKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoyODg6XHRcdG1vZF9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZpcHZzLVx1MDAzZWNvbm5fcmVzaXplX3dvcmssIDApO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0yODktXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz04MDA9c3RhdGljIHZvaWQgY29ubl9yZXNpemVfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTkxOC1cdC8qIE1vbml0b3IgaWYgd2UgbmVlZCB0byBzaHJpbmsgdGFibGUgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6OTE5Olx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2aXB2cy1cdTAwM2Vjb25uX3Jlc2l6ZV93b3JrLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy05MjAtXHRcdFx0ICAgbW9yZV93b3JrID8gMSA6IDIgKiBIWik7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTY3MD1zdGF0aWMgdm9pZCBzdmNfcmVzaXplX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTgyMy1cdFx0cmV0dXJuO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjgyNDpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmlwdnMtXHUwMDNlc3ZjX3Jlc2l6ZV93b3JrLCAxKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy04MjUtXHRyZXR1cm47XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTE3MDk9aXBfdnNfYWRkX3NlcnZpY2Uoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBpcF92c19zZXJ2aWNlX3VzZXJfa2VybiAqdSxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTg3MS1cdGlmIChncm93IFx1MDAyNlx1MDAyNiAhdGVzdF9hbmRfc2V0X2JpdChJUF9WU19XT1JLX1NWQ19SRVNJWkUsIFx1MDAyNmlwdnMtXHUwMDNld29ya19mbGFncykpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTg3MjpcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2aXB2cy1cdTAwM2VzdmNfcmVzaXplX3dvcmssXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTg3My1cdFx0XHRcdCAgIDEpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0yMDg2PXN0YXRpYyBpbnQgaXBfdnNfZGVsX3NlcnZpY2Uoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjEyNy1cdFx0XHRcdFx0XHRcdTAwMjZpcHZzLVx1MDAzZXdvcmtfZmxhZ3MpKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjIxMjg6XHRcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yMTI5LVx0XHRcdFx0XHQgICBcdTAwMjZpcHZzLVx1MDAzZXN2Y19yZXNpemVfd29yaywgMSk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTI1ODk9c3RhdGljIGludCBpcHZzX3Byb2NfY29ubl9sZmFjdG9yKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBpbnQgd3JpdGUsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTI2MDgtXHRcdFx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihpcHZzLVx1MDAzZWNvbm5fdGFiKSlcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoyNjA5Olx0XHRcdFx0bW9kX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjYxMC1cdFx0XHRcdFx0XHQgXHUwMDI2aXB2cy1cdTAwM2Vjb25uX3Jlc2l6ZV93b3JrLCAwKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MjYxNj1zdGF0aWMgaW50IGlwdnNfcHJvY19zdmNfbGZhY3Rvcihjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50IHdyaXRlLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0yNjQwLVx0XHRcdFx0ICAgICAgXHUwMDI2aXB2cy1cdTAwM2V3b3JrX2ZsYWdzKSlcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoyNjQxOlx0XHRcdFx0bW9kX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjY0Mi1cdFx0XHRcdFx0XHQgXHUwMDI2aXB2cy1cdTAwM2VzdmNfcmVzaXplX3dvcmssIDApO1xuLS1cbm5ldC9zdW5ycGMveHBydHJkbWEvdHJhbnNwb3J0LmM9NDgwPXhwcnRfcmRtYV9jb25uZWN0KHN0cnVjdCBycGNfeHBydCAqeHBydCwgc3RydWN0IHJwY190YXNrICp0YXNrKVxuLS1cbm5ldC9zdW5ycGMveHBydHJkbWEvdHJhbnNwb3J0LmMtNDkzLVx0dHJhY2VfeHBydHJkbWFfb3BfY29ubmVjdChyX3hwcnQsIGRlbGF5KTtcbm5ldC9zdW5ycGMveHBydHJkbWEvdHJhbnNwb3J0LmM6NDk0Olx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2cl94cHJ0LVx1MDAzZXJ4X2Nvbm5lY3Rfd29ya2VyLFxubmV0L3N1bnJwYy94cHJ0cmRtYS90cmFuc3BvcnQuYy00OTUtXHRcdFx0ICAgZGVsYXkpO1xuLS1cbnNvdW5kL3NvYy9jb2RlY3MvY3M0Mmw0My1qYWNrLmM9Nzk3PWlycXJldHVybl90IGNzNDJsNDNfdGlwX3NlbnNlKGludCBpcnEsIHZvaWQgKmRhdGEpXG4tLVxuc291bmQvc29jL2NvZGVjcy9jczQybDQzLWphY2suYy04MDgtXG5zb3VuZC9zb2MvY29kZWNzL2NzNDJsNDMtamFjay5jOjgwOTpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnByaXYtXHUwMDNldGlwX3NlbnNlX3dvcmssXG5zb3VuZC9zb2MvY29kZWNzL2NzNDJsNDMtamFjay5jLTgxMC1cdFx0XHQgICBtc2Vjc190b19qaWZmaWVzKGRiX2RlbGF5KSk7XG4tLVxuc291bmQvc29jL2NvZGVjcy9jczQybDQzLWphY2suYz05MDY9aW50IGNzNDJsNDNfamFja19wdXQoc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKVxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvY3M0Mmw0My1qYWNrLmMtOTM1LVx0aWYgKCFvdmVycmlkZSkge1xuc291bmQvc29jL2NvZGVjcy9jczQybDQzLWphY2suYzo5MzY6XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnByaXYtXHUwMDNldGlwX3NlbnNlX3dvcmssXG5zb3VuZC9zb2MvY29kZWNzL2NzNDJsNDMtamFjay5jLTkzNy1cdFx0XHRcdCAgIDApO1xuLS1cbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM9MjMxND1zdGF0aWMgdm9pZCBydDU2NDBfamFja193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTIzOTktXHRcdCAqL1xuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYzoyNDAwOlx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZydDU2NDAtXHUwMDNlamFja193b3JrLCAwKTtcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmMtMjQwMS1cdH1cbi0tXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jPTI0MDQ9c3RhdGljIGlycXJldHVybl90IHJ0NTY0MF9pcnEoaW50IGlycSwgdm9pZCAqZGF0YSlcbi0tXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI0MTItXHRpZiAocnQ1NjQwLVx1MDAzZWphY2spXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jOjI0MTM6XHRcdG1vZF9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZydDU2NDAtXHUwMDNlamFja193b3JrLFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNDE0LVx0XHRcdFx0IGRlbGF5KTtcbi0tXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jPTI0MTk9c3RhdGljIGlycXJldHVybl90IHJ0NTY0MF9qZF9ncGlvX2lycShpbnQgaXJxLCB2b2lkICpkYXRhKVxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmMtMjQyMi1cbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM6MjQyMzpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnJ0NTY0MC1cdTAwM2VqYWNrX3dvcmssXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI0MjQtXHRcdFx0ICAgbXNlY3NfdG9famlmZmllcyhKQUNLX1NFVFRMRV9USU1FKSk7XG4tLVxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYz0yNDk1PXN0YXRpYyB2b2lkIHJ0NTY0MF9lbmFibGVfamFja19kZXRlY3Qoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQsXG4tLVxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNTg0LVx0Lyogc3luYyBpbml0aWFsIGphY2sgc3RhdGUgKi9cbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM6MjU4NTpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnJ0NTY0MC1cdTAwM2VqYWNrX3dvcmssIDApO1xuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNTg2LX1cbi0tXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jPTI1OTQ9c3RhdGljIHZvaWQgcnQ1NjQwX2VuYWJsZV9oZGFfamFja19kZXRlY3QoXG4tLVxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNjM3LVx0Lyogc3luYyBpbml0aWFsIGphY2sgc3RhdGUgKi9cbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM6MjYzODpcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnJ0NTY0MC1cdTAwM2VqYWNrX3dvcmssIDApO1xuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yNjM5LVxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM9MjgyNj1zdGF0aWMgaW50IHJ0NTY0MF9yZXN1bWUoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQpXG4tLVxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yODY1LVx0XHRlbmFibGVfaXJxKHJ0NTY0MC1cdTAwM2VpcnEpO1xuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYzoyODY2Olx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZydDU2NDAtXHUwMDNlamFja193b3JrLCAwKTtcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmMtMjg2Ny1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxNDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjU3MgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDUzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aCBGdXp6aW5nIFRoaXMgUGF0Y2g/KioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3dpdGNoaW5nIG91dCBgc3lzdGVtX2xvbmdfd3FgIGZvciBgc3lzdGVtX2RmbF9sb25nX3dxYCBpbiBhIGJ1bmNoIG9mIGRyaXZlcnMuIFJpZ2h0IGF3YXksIG15IGV4cGVydCBicmFpbiBraWNrcyBpbiDigJMgaXMgdGhpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlPyBJdCAqaXMqLCBpdCYjMzk7cyBjaGFuZ2luZyB0aGUgd29ya3F1ZXVlIGJlaW5nIHVzZWQuIE5vdywgdGhlIHF1ZXN0aW9uIGlzLCBpcyBpdCAqd29ydGgqIGZ1enppbmc/IEkgbWVhbiwgdGhlIHByb21wdCBzYXlzIG5vdCB0byBib3RoZXIgaWYgaXQmIzM5O3MganVzdCBkb2NzLCBjb21tZW50cywgbG9nZ2luZywgb3IgdHJpdmlhbCBjb25zdGFudCBjaGFuZ2VzLiBDaGFuZ2luZyB0aGUgd29ya3F1ZXVlIGRlZmluaXRlbHkgKmlzbiYjMzk7dCogdHJpdmlhbC4KCk9rYXksIHNvIGNoYW5naW5nIHRoZSB3b3JrcXVldWUgKmlzKiBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBidXQgZG9lcyBpdCByZWFsbHkgaW50cm9kdWNlIG5ldyBsb2dpYyB0aGF04oCZcyByaXBlIGZvciBmdXp6aW5nPyBJdCBqdXN0IGNoYW5nZXMgKndoaWNoKiB0aHJlYWQgcnVucyB0aGUgd29yay4gQnV0IHdhaXQhIElmIGl0JiMzOTtzIGZ1bmN0aW9uYWwsIHRoZSBwcm9tcHQgc3VnZ2VzdHMgSSBzaG91bGQgc2F5IFdvcnRoRnV6emluZz10cnVlLgoKQnV0IHdoYXQgZnVuY3Rpb25zIGRvIEkgY2FyZSBhYm91dCBmb2N1c2luZyBvbj8gTG9va2luZyBhdCB0aGUgY29kZSwgaXTigJlzIGdvaW5nIHRvIGJlIHRoZXNlIHdvcmsgZnVuY3Rpb25zOiBgX19pYm12bmljX3Jlc2V0YCwgYGlibXZuaWNfcmVzZXRgLCBgZW1hY19uZG9fb3BlbmAsIGBpY3NzZ19zdGF0c193b3JrX2hhbmRsZXJgLCBgc3RhcnRfbG9naW5gLCBgdGJuZXRfaGFuZGxlX3BhY2tldGAsIGB0Ym5ldF9sb2dpbl93b3JrYCwgYGNoZWNrX2NhcnJpZXJgLCBgcGVnYXN1c19wcm9iZWAsIGBwZWdhc3VzX3Jlc3VtZWAsIGBydGxfaHdfcGh5X3dvcmtfZnVuY190YCwgYHJ0bDgxNTJfcmVzZXRfcmVzdW1lYCwgYHJ0bDgxNTJfcHJvYmVfb25jZWAuCgpIYW5nIG9uLCBgcGVnYXN1c2AgYW5kIGByODE1MmAuLi4gdGhvc2UgYXJlIFVTQiBuZXR3b3JrIGRyaXZlcnMsIHJpZ2h0PyBTbywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoYXQgYHN5c3RlbV9kZmxfbG9uZ193cWAgaXMgYSAqbmV3KiB3b3JrcXVldWUsIG9yIGlmIGl0JiMzOTtzIGp1c3QgYSByZW5hbWUuIEFoLCBpdCBsb29rcyBsaWtlIGBzeXN0ZW1fZGZsX2xvbmdfd3FgIGlzIGEgbmV3IHdvcmtxdWV1ZSBvciBhbiBleGlzdGluZyBvbmUsIGFuZCB0aGlzIGlzIGFib3V0IHJlcGxhY2luZyBgc3lzdGVtX2xvbmdfd3FgIHdpdGggYHN5c3RlbV9kZmxfbG9uZ193cWAgdG8gYXZvaWQgaXNzdWVzIHdpdGggYHN5c3RlbV9sb25nX3dxYC4KClNvLCAqaXMqIHRoaXMgd29ydGggZnV6emluZz8gWWVzISBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwga2VybmVsIGNoYW5nZS4gTm93IEkgbmVlZCB0byBleHRyYWN0IHRoZSBjb25maWdzIGZvciBgcGVnYXN1c2AgYW5kIGByODE1MmAgdG8gZ2V0IHRoaW5ncyByb2xsaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE0OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfUEVHQVNVUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZz0zND1jb25maWcgVVNCX0tBV0VUSFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTcyLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NzM6Y29uZmlnIFVTQl9QRUdBU1VTXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy03NC1cdHRyaXN0YXRlIFwmIzM0O1VTQiBQZWdhc3VzL1BlZ2FzdXMtSUkgYmFzZWQgZXRoZXJuZXQgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxNDoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzcwNwoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXM6CgoqKkFuYWx5emluZyB0aGUgYFVTQl9SVEw4MTUyYCBNb2R1bGUqKgoKQWxyaWdodCwgdGhlIG9iamVjdGl2ZSBoZXJlIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlIGBVU0JfUlRMODE1MmAuIE15IGV4cGVydGlzZSBsZWFucyB0b3dhcmRzIG5ldHdvcmtpbmcsIGVtYmVkZGVkIHN5c3RlbXMsIGFuZCBwb3RlbnRpYWxseSBoYXJkd2FyZSBpbnRlcmFjdGlvbnMsIHNvIGltbWVkaWF0ZWx5LCBteSBtaW5kIGp1bXBzIHRvIGEgZmV3IHRoaW5ncy4gRmlyc3QsIHRoaXMgbGlrZWx5IHJlbGF0ZXMgdG8gYSBVU0ItdG8tRXRoZXJuZXQgYWRhcHRlciwgc3BlY2lmaWNhbGx5IG9uZSB1c2luZyBhIFJlYWx0ZWsgUlRMODE1MiBjaGlwc2V0LCBnaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24uIEkmIzM5O2QgbmVlZCB0byBjb25zaWRlciB0aGUgZm9sbG93aW5nIGFzcGVjdHMuCgoqICAgKipEcml2ZXIgSW1wbGVtZW50YXRpb246KiogSXMgdGhpcyBhIHVzZXItc3BhY2Ugb3Iga2VybmVsLXNwYWNlIG1vZHVsZT8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBkcml2ZXIgZm9yIGEgc3BlY2lmaWMgb3BlcmF0aW5nIHN5c3RlbSwgbGlrZSBMaW51eCwgV2luZG93cywgb3Igc29tZXRoaW5nIG1vcmUgZW1iZWRkZWQ/IFRoZSBmb2N1cyB3aWxsIHNoaWZ0IGRlcGVuZGluZyBvbiB0aGlzLgoKKiAgICoqVVNCIFByb3RvY29sOioqIEkmIzM5O2xsIHRoaW5rIGFib3V0IHRoZSBVU0IgcHJvdG9jb2wgaXRzZWxmLiBJcyB0aGUgZHJpdmVyIGhhbmRsaW5nIGJ1bGsgdHJhbnNmZXJzLCBpbnRlcnJ1cHQgdHJhbnNmZXJzLCBvciBjb250cm9sIHRyYW5zZmVycz8gVGhlIHNwZWNpZmljIHRyYW5zZmVyIHR5cGVzIHdpbGwgaW1wYWN0IHBlcmZvcm1hbmNlIGFuZCBob3cgdGhlIGRyaXZlciBtYW5hZ2VzIGRhdGEgZmxvdy4gSXMgaXQgVVNCIDIuMCBvciAzLjA/IFRoaXMgd2lsbCBpbmZsdWVuY2Ugc3BlZWRzIGFuZCBmZWF0dXJlcy4KCiogICAqKk5ldHdvcmsgU3RhY2sgSW50ZWdyYXRpb246KiogSG93IGRvZXMgdGhpcyBtb2R1bGUgaW50ZXJhY3Qgd2l0aCB0aGUgbmV0d29yayBzdGFjayAoZS5nLiwgaW4gdGhlIGNhc2Ugb2YgTGludXgsIHdpdGggdGhlIGBuZXRkZXZgIEFQSSk/IERvZXMgaXQgcHJlc2VudCBpdHNlbGYgYXMgYSBzdGFuZGFyZCBFdGhlcm5ldCBpbnRlcmZhY2U/IEFyZSB0aGVyZSBhbnkgY3VzdG9tIG5ldHdvcmsgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzPyBBbnkgbm9uLXN0YW5kYXJkIGZlYXR1cmVzPwoKKiAgICoqQ2hpcHNldC1TcGVjaWZpYyBEZXRhaWxzOioqIFRoZSBSVEw4MTUyIGlzIGEga25vd24gY2hpcCwgc28gSSYjMzk7bGwgd2FudCB0byBxdWlja2x5IGNoZWNrIGZvciBhbnkga25vd24gaXNzdWVzIHdpdGggdGhhdCBkZXZpY2UuIEFyZSB0aGVyZSBhbnkgaGFyZHdhcmUgbGltaXRhdGlvbnMgb3IgZHJpdmVyLXJlbGF0ZWQgYnVncz8gQXJlIHRoZXJlIHNwZWNpZmljIHBvd2VyIG1hbmFnZW1lbnQgY29uc2lkZXJhdGlvbnM/IEFueSB2ZW5kb3Itc3BlY2lmaWMgcXVpcmtzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPwoKKiAgICoqRXJyb3IgSGFuZGxpbmc6KiogV2hhdCBraW5kIG9mIGVycm9yIGhhbmRsaW5nIGlzIGltcGxlbWVudGVkPyBIb3cgZG9lcyBpdCBkZWFsIHdpdGggVVNCIGVycm9ycywgbmV0d29yayB0cmFuc21pc3Npb24gZXJyb3JzLCBhbmQgcG90ZW50aWFsIGhhcmR3YXJlIGZhaWx1cmVzPyBJcyB0aGVyZSBhcHByb3ByaWF0ZSByZXBvcnRpbmcgb3IgcmVjb3ZlcnkgbWVjaGFuaXNtcz8KCkVzc2VudGlhbGx5LCBJIHdhbnQgdG8gZm9ybSBhIG1lbnRhbCBtb2RlbCBvZiBob3cgdGhpcyBtb2R1bGUgaW50ZXJmYWNlcyB3aXRoIHRoZSBoYXJkd2FyZSwgaW50ZXJhY3RzIHdpdGggdGhlIG9wZXJhdGluZyBzeXN0ZW0gKG9yIGJhcmUtbWV0YWwgc3lzdGVtKSwgYW5kIHByb3ZpZGVzIG5ldHdvcmsgY29ubmVjdGl2aXR5LiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hldGhlciBJJiMzOTttIGxvb2tpbmcgYXQgc291cmNlIGNvZGUsIGRvY3VtZW50YXRpb24sIG9yIHNpbXBseSBhIG5hbWUsIGJlY2F1c2UgbXkgYXBwcm9hY2ggdG8gdW5kZXJzdGFuZGluZyB3aWxsIHZhcnkgYmFzZWQgb24gdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxNDoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX1JUTDgxNTImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWc9ODg9Y29uZmlnIFVTQl9SVEw4MTUwXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctOTgtXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzo5OTpjb25maWcgVVNCX1JUTDgxNTJcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTEwMC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgUlRMODE1Mi9SVEw4MTUzIEJhc2VkIFVTQiBFdGhlcm5ldCBBZGFwdGVyc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE0OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MzMyCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgQXNzZXNzbWVudDogTmV0d29yayBWYXJpYWJsZSBJbnNwZWN0aW9uKioKCkFscmlnaHQsIHRoZSBmaXJzdCB0aGluZyBJJiMzOTttIGRvaW5nIGlzIHplcm9pbmcgaW4gb24gYFRIVU5ERVJCT0xUX05FVGAuIFRoYXQmIzM5O3MgdGhlIGtleSB2YXJpYWJsZSBvZiBpbnRlcmVzdCBoZXJlLiBHaXZlbiB0aGF0IEkmIzM5O20gZGVhbGluZyB3aXRoIFRodW5kZXJib2x0LCBpdCYjMzk7cyBoaWdobHkgbGlrZWx5IHRoaXMgdmFyaWFibGUgaG9sZHMgY3J1Y2lhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbmV0d29yayBjb25maWd1cmF0aW9uLCBkZXZpY2Ugc3RhdHVzLCBvciBwZXJoYXBzIGV2ZW4gdGhlIGxpbmsmIzM5O3Mgb3BlcmF0aW9uYWwgcGFyYW1ldGVycy4gSSBpbW1lZGlhdGVseSB3YW50IHRvIHVuZGVyc3RhbmQgaXRzIHNjb3BlIGFuZCBjb250ZW50LiBUaGlzIGNvdWxkIGJlIGFueXRoaW5nIGZyb20gdGhlIElQIGFkZHJlc3MgYXNzaWdubWVudHMgYXNzb2NpYXRlZCB3aXRoIFRodW5kZXJib2x0IGRldmljZXMsIHRvIHdoZXRoZXIgYSBUaHVuZGVyYm9sdCBjb250cm9sbGVyIGhhcyBpbml0aWF0ZWQuIEkgaGF2ZSB0byBzZWUgd2hhdCB0aGlzIHZhcmlhYmxlIGNvbnRhaW5zLiBJdCBpcyB0aGUgYmVnaW5uaW5nIG9mIGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE0OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRIVU5ERVJCT0xUX05FVCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE0OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NTMyCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBhIFRodW5kZXJib2x0IElzc3VlIGluIHRoZSBLZXJuZWwqKgoKUmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSYjMzk7dmUgZ290IGEgVGh1bmRlcmJvbHQgaXNzdWUgdG8gbG9vayBpbnRvLCBhbmQgdGhlIGZpcnN0IHBsYWNlIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gaXMgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMuIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoZSBgZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvS2NvbmZpZ2AgZmlsZSwgb3Igc29tZXRoaW5nIGFuYWxvZ291cywgaXMgbGlrZWx5IHdoZXJlIEkmIzM5O2xsIGZpbmQgdGhlIHByaW1hcnkgc2V0dGluZ3MgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhlIFRodW5kZXJib2x0IG5ldHdvcmsgZHJpdmVyLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgY29uZmlndXJlZCBhbmQgaWYgdGhlcmUgbWlnaHQgYmUgYSBzaW1wbGUgY29uZmlnIG9wdGlvbiB0aGF0JiMzOTtzIG1pc3NldCBvciBjYXVzaW5nIHRoZSB0cm91YmxlLiBNaWdodCBhcyB3ZWxsIHN0YXJ0IHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxNDoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0aHVuZGVyYm9sdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz01OTQ9Y29uZmlnIEZVSklUU1VfRVNcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwMC1cbmRyaXZlcnMvbmV0L0tjb25maWc6NjAxOnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC90aHVuZGVyYm9sdC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnLTYwMi1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTQ6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4MTYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBjb2RlOgoKKipDaGVja2luZyBUaHVuZGVyYm9sdCBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIFRodW5kZXJib2x0IG5ldHdvcmsgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBzdGFydCBieSBsb29raW5nIGF0IGBkcml2ZXJzL25ldC90aHVuZGVyYm9sdC9LY29uZmlnYC4gVGhpcyBpcyB0aGUgc3RhbmRhcmQgcHJvY2VkdXJlIOKAkyB0aGUgS2NvbmZpZyBmaWxlIHdpbGwgZGVmaW5lIGFsbCB0aGUgb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBkcml2ZXIsIGhvdyB0aGV5JiMzOTtyZSBzdHJ1Y3R1cmVkLCBhbnkgZGVwZW5kZW5jaWVzLCBhbmQgaG9wZWZ1bGx5IHByb3ZpZGUgc29tZSBoZWxwZnVsIGRvY3VtZW50YXRpb24uIEl0JiMzOTtzIHRoZSBjZW50cmFsIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGRyaXZlciBpcyBjb25maWd1cmVkLCBlbmFibGVkLCBvciBkaXNhYmxlZC4gSSBuZWVkIHRvIGdldCBhIHF1aWNrIG92ZXJ2aWV3IG9mIHdoYXQgY29uZmlndXJhdGlvbnMgYXJlIGF2YWlsYWJsZSBzbyB0aGF0IEkgY2FuIGZpZ3VyZSBvdXQgd2hhdCBpcyBnb2luZyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTQ6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC90aHVuZGVyYm9sdC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBVU0I0X05FVFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TmV0d29ya2luZyBvdmVyIFVTQjQgYW5kIFRodW5kZXJib2x0IGNhYmxlc1wmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBVU0I0IFx1MDAyNlx1MDAyNiBJTkVUXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFNlbGVjdCB0aGlzIGlmIHlvdSB3YW50IHRvIGNyZWF0ZSBuZXR3b3JrIGJldHdlZW4gdHdvIGNvbXB1dGVyc1xuICAgNzpcdFx0ICBvdmVyIGEgVVNCNCBhbmQgVGh1bmRlcmJvbHQgY2FibGVzLiBUaGUgZHJpdmVyIHN1cHBvcnRzIEFwcGxlXG4gICA4Olx0XHQgIFRodW5kZXJib2x0SVAgcHJvdG9jb2wgYW5kIGFsbG93cyBjb21tdW5pY2F0aW9uIHdpdGggYW55IGhvc3RcbiAgIDk6XHRcdCAgc3VwcG9ydGluZyB0aGUgc2FtZSBwcm90b2NvbCBpbmNsdWRpbmcgV2luZG93cyBhbmQgbWFjT1MuXG4gIDEwOlx0XG4gIDExOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGUgd2lsbCBiZVxuICAxMjpcdFx0ICBjYWxsZWQgdGh1bmRlcmJvbHRfbmV0LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxNDoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTE4OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipOYXZpZ2F0aW5nIHRoZSBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBuZXR3b3JraW5nLCBzcGVjaWZpY2FsbHkgVVNCNC4gVGhlIGNsdWUgaGVyZSBpcyBgVVNCNF9ORVRgLCBzbyB0aGF0IHBvaW50cyBtZSBkaXJlY3RseSB0byB0aGUgY29uZmlndXJhdGlvbi4gTXkgZmlyc3QgbW92ZSB3aWxsIGJlIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZXMuIExldCYjMzk7cyBzZWUuLi4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHNldHRpbmdzIHJlbGF0ZWQgdG8gdGhpcyBVU0I0IG5ldHdvcmsgZGV2aWNlLCBzaW5jZSAmIzM0O2libSYjMzQ7IHNlZW1zIGEgYml0IHZhZ3VlIGFzIGEgdmVuZG9yLCBhbmQgbGlrZWx5IGVuY29tcGFzc2VzIG1vcmUgdGhhbiBvbmUgZ2VuZXJhdGlvbiBvZiBkZXZpY2UgZHJpdmVyLiBUaGF0IGBLY29uZmlnYCBmaWxlIGlzIGdvaW5nIHRvIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGlzIGFsbCB3aXJlZCB0b2dldGhlci4gSSBleHBlY3QgdG8gZmluZCBvdXQgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBoYXJkd2FyZSByZXF1aXJlbWVudHMgb3IgcGxhdGZvcm0gZGVwZW5kZW5jaWVzIEkgbmVlZCB0byB0YWtlIGludG8gYWNjb3VudC4gVGltZSB0byBjcmFjayB0aGF0IGZpbGUgb3Blbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTQ6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWJtdm5pYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9LY29uZmlnPTQ1PWNvbmZpZyBJQk1WTklDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL0tjb25maWctNTItXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGUgd2lsbFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL0tjb25maWc6NTM6XHQgIGJlIGNhbGxlZCBpYm12bmljLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL0tjb25maWctNTQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE0OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NTQ2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqSUJNVk5JQyBEZWVwIERpdmUqKgoKT2theSwgc28gdGhlIG5hbWUgYElCTVZOSUNgIHBvcHMgaW50byBteSBoZWFkLiBJbW1lZGlhdGVseSwgbXkgaW50ZXJuYWwgcmFkYXIgcGluZ3MgdGhlIGtlcm5lbCBzb3VyY2UgdHJlZS4gJiMzNDtBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGggdGhhdCBkcml2ZXIuJiMzNDsgTXkgdGhvdWdodCBwcm9jZXNzIGp1bXBzIGRpcmVjdGx5IHRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBnby10byBwbGFjZSBmb3IgdmVuZG9yLXNwZWNpZmljIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb25zLCBhbmQgVEkgaXMgYSBsaWtlbHkgY2FuZGlkYXRlIGZvciBhIG5ldHdvcmsgY29tcG9uZW50IGludm9sdmVkIHdpdGggSUJNLiBJJiMzOTttIGltbWVkaWF0ZWx5IHRyeWluZyB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGBJQk1WTklDYCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZSwgYW5kIHRoYXQgS2NvbmZpZyBmaWxlIHdpbGwgaWxsdW1pbmF0ZSBkZXBlbmRlbmNpZXMsIGJ1aWxkIG9wdGlvbnMsIGFuZCBwb3NzaWJseSBldmVuIHRoZSBvdmVyYWxsIGRlc2lnbiBwaGlsb3NvcGh5IHRoYXQgaW50ZWdyYXRlcyB0aGUgSUJNIGFuZCBUSSBjb21wb25lbnRzIGlmIHRoYXQmIzM5O3MgdGhlIHBhdGguIEkmIzM5O20gZXNzZW50aWFsbHkgcmV2ZXJzZS1lbmdpbmVlcmluZyB0aGUgdGhvdWdodCBwcm9jZXNzIG9mIGhvdyB0byBpbmNsdWRlIG9yIGV4Y2x1ZGUgYSBkcml2ZXIgaW4gdGhlIGJ1aWxkIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE0OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWNzc2cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTQ6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU4MDgKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB3aGF0IEkmIzM5O2QgYmUgZG9pbmc6CgoqKkludmVzdGlnYXRpbmcgUFJVIENvbmZpZ3VyYXRpb24gZm9yIEV0aGVybmV0IERyaXZlcnMqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IFBSVSAoUHJvZ3JhbW1hYmxlIFJlYWwtdGltZSBVbml0KSBpbnRlZ3JhdGlvbiB3aXRoaW4gdGhlIEV0aGVybmV0IGRyaXZlcnMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlOiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gVEkmIzM5O3MgRXRoZXJuZXQgZGV2aWNlcywgYW5kIG1vcmUgc3BlY2lmaWNhbGx5LCBob3cgdGhlIFBSVSBtaWdodCBiZSBlbmFibGVkIG9yIHVzZWQuIEl0JiMzOTtzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgc3lzdGVtIGlzIHNldCB1cC4gVGhpcyBgS2NvbmZpZ2AgZmlsZSBzaG91bGQgZ2l2ZSBtZSB0aGUgYmFzZSBpbmZvcm1hdGlvbiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGV0aGVyIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGEgZHJpdmVyIHVzaW5nIHRoZSBQUlUsIG9yIHNvbWUgc2VwYXJhdGUgZmVhdHVyZSB3aXRoaW4gdGhlIFRJIGV0aGVybmV0IHN1YnN5c3RlbSB0aGF0IGludm9sdmVzIHRoZSBQUlUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE0OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BSVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz0xNjk9Y29uZmlnIFRMQU5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTE4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MTg2OmNvbmZpZyBUSV9JQ1NTR19QUlVFVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MTg3Olx0dHJpc3RhdGUgXCYjMzQ7VEkgR2lnYWJpdCBQUlUgRXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTE4OC1cdHNlbGVjdCBQSFlMSUJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTE5MC1cdHNlbGVjdCBUSV9LM19DUFBJX0RFU0NfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoxOTE6XHRkZXBlbmRzIG9uIFBSVV9SRU1PVEVQUk9DXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTE5Mi1cdGRlcGVuZHMgb24gTkVUX1NXSVRDSERFVlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTk2LVx0aGVscFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoxOTc6XHQgIFN1cHBvcnQgZHVhbCBHaWdhYml0IEV0aGVybmV0IHBvcnRzIG92ZXIgdGhlIElDU1NHIFBSVSBTdWJzeXN0ZW0uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTE5OC1cdCAgVGhpcyBzdWJzeXN0ZW0gaXMgYXZhaWxhYmxlIHN0YXJ0aW5nIHdpdGggdGhlIEFNNjUgcGxhdGZvcm0uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTE5OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjAwOlx0ICBUaGlzIGRyaXZlciByZXF1aXJlcyBmaXJtd2FyZSBiaW5hcmllcyB3aGljaCB3aWxsIHJ1biBvbiB0aGUgUFJVc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yMDEtXHQgIHRvIHN1cHBvcnQgdGhlIEV0aGVybmV0IG9wZXJhdGlvbi4gQ3VycmVudGx5LCBpdCBzdXBwb3J0cyBFdGhlcm5ldFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMDQ6Y29uZmlnIFRJX0lDU1NHX1BSVUVUSF9TUjFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjA1Olx0dHJpc3RhdGUgXCYjMzQ7VEkgR2lnYWJpdCBQUlUgU1IxLjAgRXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIwNi1cdHNlbGVjdCBQSFlMSUJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIwOS1cdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjEwOlx0ZGVwZW5kcyBvbiBQUlVfUkVNT1RFUFJPQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yMTEtXHRkZXBlbmRzIG9uIE5FVF9TV0lUQ0hERVZcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIxNC1cdGhlbHBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjE1Olx0ICBTdXBwb3J0IGR1YWwgR2lnYWJpdCBFdGhlcm5ldCBwb3J0cyBvdmVyIHRoZSBJQ1NTRyBQUlUgU3Vic3lzdGVtLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yMTYtXHQgIFRoaXMgc3Vic3lzdGVtIGlzIGF2YWlsYWJsZSBvbiB0aGUgQU02NSBTUjEuMCBwbGF0Zm9ybS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMTg6XHQgIFRoaXMgZHJpdmVyIHJlcXVpcmVzIGZpcm13YXJlIGJpbmFyaWVzIHdoaWNoIHdpbGwgcnVuIG9uIHRoZSBQUlVzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIxOS1cdCAgdG8gc3VwcG9ydCB0aGUgRXRoZXJuZXQgb3BlcmF0aW9uLiBDdXJyZW50bHksIGl0IHN1cHBvcnRzIEV0aGVybmV0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz0yMjI9Y29uZmlnIFRJX0lDU1NfSUVQXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjIyMzpcdHRyaXN0YXRlIFwmIzM0O1RJIFBSVSBJQ1NTIElFUCBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjI0LVx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMjU6XHRkZXBlbmRzIG9uIFRJX1BSVVNTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjIyNjpcdGRlZmF1bHQgVElfUFJVU1NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjI3LVx0aGVscFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMjg6XHQgIFRoaXMgZHJpdmVyIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIFBSVS1JQ1NTIEluZHVzdHJpYWwgRXRoZXJuZXRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjI5Olx0ICBQZXJpcGhlcmFsIHdpdGhpbiBhIFBSVS1JQ1NTIHN1YnN5c3RlbSBwcmVzZW50IG9uIHZhcmlvdXMgVEkgU29Dcy5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjMwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMzQ6Y29uZmlnIFRJX1BSVUVUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMzU6XHR0cmlzdGF0ZSBcJiMzNDtUSSBQUlUgRXRoZXJuZXQgRU1BQyBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjM2Olx0ZGVwZW5kcyBvbiBQUlVfUkVNT1RFUFJPQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yMzctXHRkZXBlbmRzIG9uIE5FVF9TV0lUQ0hERVZcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTI0MC1cdGhlbHBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjQxOlx0ICBTb21lIFRJIFNvQ3MgaGFzIFByb2dyYW1tYWJsZSBSZWFsdGltZSBVbml0IChQUlUpIGNvcmVzIHdoaWNoIGNhblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yNDItXHQgIHN1cHBvcnQgU2luZ2xlIG9yIER1YWwgRXRoZXJuZXQgcG9ydHMgd2l0aCB0aGUgaGVscCBvZiBmaXJtd2FyZSBjb2RlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjI0MzpcdCAgcnVubmluZyBvbiBQUlUgY29yZXMuIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHJlbW90ZXByb2MgYmFzZWRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjQ0Olx0ICBjb21tdW5pY2F0aW9uIHRvIFBSVSBmaXJtd2FyZSB0byBleHBvc2UgRXRoZXJuZXQgaW50ZXJmYWNlIHRvIExpbnV4LlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yNDUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE0OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MjgzCgkJCQkJCQlvdXRwdXQ6IDI4MAoJCQkJCQkJdGhvdWdodHM6IDEwNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBSZWdyZXNzaW9uIFBvaW50cyBpbiBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZm9jdXMgbGFuZHMgb24gdGhlIGNoYW5nZSBpbnZvbHZpbmcgYFRJX0lDU1NHX1BSVUVUSGAgYW5kIGBUSV9JQ1NTR19QUlVFVEhfU1IxYC4gRmlyc3QsIEkmIzM5O20gY2hlY2tpbmcgdGhlIGNvbmZpZ3VyYXRpb25zLCBhbmQgSSBzZWUgYElCTVZOSUNgLCBgVElfSUNTU0dfUFJVRVRIYCwgYFRJX0lDU1NHX1BSVUVUSF9TUjFgLCBgVVNCNF9ORVRgLCBgVVNCX1BFR0FTVVNgLCBhbmQgYFVTQl9SVEw4MTUyYCBhcmUgYWxsIHJlbGV2YW50LgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGlkZW50aWZ5IGtleSBzeW1ib2xzIHJlbGF0ZWQgdG8gdGhpcy4gSSBtYWtlIGEgbGlzdDogYF9faWJtdm5pY19yZXNldGAsIGBpYm12bmljX3Jlc2V0YCwgYGVtYWNfbmRvX29wZW5gLCBgaWNzc2dfc3RhdHNfd29ya19oYW5kbGVyYCwgYHN0YXJ0X2xvZ2luYCwgYHRibmV0X2hhbmRsZV9wYWNrZXRgLCBgdGJuZXRfbG9naW5fd29ya2AsIGBjaGVja19jYXJyaWVyYCwgYHBlZ2FzdXNfcHJvYmVgLCBgcGVnYXN1c19yZXN1bWVgLCBgcnRsX2h3X3BoeV93b3JrX2Z1bmNfdGAsIGBydGw4MTUyX3Jlc2V0X3Jlc3VtZWAsIGFuZCBgcnRsODE1Ml9wcm9iZV9vbmNlYC4KCk5vdywgSSBzdGFydCB0byBjYXRlZ29yaXplIHRoZXNlLiBgY2hlY2tfY2FycmllcmAgaXMgc3RhdGljIGluIGBwZWdhc3VzLmNgLCB3aGljaCBtYWtlcyBpdCBhIGdvb2QgY2FuZGlkYXRlIGZvciBkZWVwZXIgYW5hbHlzaXMsIGFzIGlzIGBydGxfaHdfcGh5X3dvcmtfZnVuY190YCBmcm9tIGByODE1Mi5jYCwgYW5kIGB0Ym5ldF9sb2dpbl93b3JrYCBpbiBgdGh1bmRlcmJvbHQvbWFpbi5jYC4gYGljc3NnX3N0YXRzX3dvcmtfaGFuZGxlcmAgaXMgZXhwb3J0ZWQgaW4gYGljc3NnX3N0YXRzLmNgIGFuZCBpcyBpbXBvcnRhbnQuIFRoZW4sIEkgcmVtZW1iZXIgdG8gY2hlY2sgaWYgYGVtYWNfbmRvX29wZW5gIGlzIGluIGEgaG90IHBhdGgsIGJ1dCBpdCYjMzk7cyBqdXN0IHRoZSBgbmRvX29wZW5gIGNhbGxiYWNrLCBzbyBpdCYjMzk7cyBub3QgYSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrLiBgdGJuZXRfaGFuZGxlX3BhY2tldGAgaXMgYSBob3QgcGF0aCAocGFja2V0IHJ4L3R4KSwgc28gSSBzaG91bGQgYXZvaWQgaXQuIEJ1dCwgSSBuZWVkIHRvIGtub3cgYWJvdXQgaXQuIFRoZSByZXN0LCBgc3RhcnRfbG9naW5gLCBgdGJuZXRfbG9naW5fd29ya2AsIGBjaGVja19jYXJyaWVyYCwgYHBlZ2FzdXNfcHJvYmVgLCBgcGVnYXN1c19yZXN1bWVgLCBgcnRsX2h3X3BoeV93b3JrX2Z1bmNfdGAsIGBydGw4MTUyX3Jlc2V0X3Jlc3VtZWAsIGBydGw4MTUyX3Byb2JlX29uY2VgLCBgX19pYm12bmljX3Jlc2V0YCwgYW5kIGBpYm12bmljX3Jlc2V0YCBhcmVuJiMzOTt0IGhvdCBwYXRocywgc28gbXkgZm9jdXMgbmFycm93cy4KCkkgcmVmaW5lIG15IGxpc3Q6IGBfX2libXZuaWNfcmVzZXRgLCBgaWJtdm5pY19yZXNldGAsIGBlbWFjX25kb19vcGVuYCwgYGljc3NnX3N0YXRzX3dvcmtfaGFuZGxlcmAsIGBzdGFydF9sb2dpbmAsIGB0Ym5ldF9sb2dpbl93b3JrYCwgYGNoZWNrX2NhcnJpZXJgLCBgcGVnYXN1c19wcm9iZWAsIGBwZWdhc3VzX3Jlc3VtZWAsIGBydGxfaHdfcGh5X3dvcmtfZnVuY190YCwgYHJ0bDgxNTJfcmVzZXRfcmVzdW1lYCwgYHJ0bDgxNTJfcHJvYmVfb25jZWAuCgpPa2F5LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGNoYW5nZSBpdHNlbGYgaXMgd2VsbC11bmRlcnN0b29kLiBJIHJlY2FsbCB0aGF0IGBzeXN0ZW1fZGZsX2xvbmdfd3FgIGlzIGEgc3RhbmRhcmQgd29ya3F1ZXVlLCBkZWZpbmVkIGluIGBrZXJuZWwvd29ya3F1ZXVlLmNgLiBUaGUgcGF0Y2ggKnJlcGxhY2VzKiBgc3lzdGVtX2xvbmdfd3FgIHdpdGggYHN5c3RlbV9kZmxfbG9uZ193cWAuIFRoaXMgaXMgYSAqZnVuY3Rpb25hbCogY2hhbmdlLCBiZWNhdXNlIHRoZSBleGVjdXRpb24gY29udGV4dCAodGhlIHdvcmtxdWV1ZSkgaXMgYWx0ZXJlZC4KCkdpdmVuIHRoZSBjaGFuZ2Ugb2YgdGhlIHdvcmtxdWV1ZSwgYW5kIHRoZSBkcml2ZXJzIGludm9sdmVkIC0gYGlibXZuaWNgLCBgaWNzc2dgLCBgdGh1bmRlcmJvbHRgLCBgcGVnYXN1c2AsIGFuZCBgcjgxNTJgIC0gdGhlIG1haW4gY29uY2VybiBpcyB0aGF0IGNoYW5naW5nIHRoZSB3b3JrcXVldWUgY291bGQgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIGRlYWRsb2Nrcy4gU28sIEkgbmVlZCB0byBmdXp6IHRoZSBhZmZlY3RlZCB3b3JrIGZ1bmN0aW9ucywgbG9va2luZyBhdCB0aGVpciB0cmlnZ2VycyBsaWtlIHByb2JlLCBvcGVuLCByZXNldCwgYW5kIGxvZ2luLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkgY29uZmlybSB0aGF0IGBUSV9JQ1NTR19QUlVFVEhgIGNvdmVycyB0aGUgcmVsZXZhbnQgZmlsZXM6IGBkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguY2AgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zdGF0cy5jYC4KCk15IGZpbmFsIGxpc3Qgb2YgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgaXM6IGBJQk1WTklDYCwgYFRJX0lDU1NHX1BSVUVUSGAsIGBVU0I0X05FVGAsIGBVU0JfUEVHQVNVU2AsIGFuZCBgVVNCX1JUTDgxNTJgLgoKVGhlIGZ1bmRhbWVudGFsIHJlYXNvbmluZyBoZXJlIGlzIHRoYXQgYnkgc3dpdGNoaW5nIHdvcmtxdWV1ZXMsIEkmIzM5O20gcG90ZW50aWFsbHkgYWx0ZXJpbmcgdGhlIGNvbmN1cnJlbmN5IG1vZGVsIHdpdGhpbiB0aGVzZSBkcml2ZXJzLiBJIG5lZWQgdG8gYmUgKmNlcnRhaW4qIHRoZXJlIGFyZSBubyBpbnRyb2R1Y2VkIGNvbmN1cnJlbmN5IGlzc3Vlcy4gTGV0JiMzOTtzIGdldCB0aGUgZnV6emluZyBzZXQgdXAhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE0OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJQk1WTklDJiMzNDssCiAgICAmIzM0O1RJX0lDU1NHX1BSVUVUSCYjMzQ7LAogICAgJiMzNDtVU0I0X05FVCYjMzQ7LAogICAgJiMzNDtVU0JfUEVHQVNVUyYjMzQ7LAogICAgJiMzNDtVU0JfUlRMODE1MiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19faWJtdm5pY19yZXNldCYjMzQ7LAogICAgJiMzNDtpYm12bmljX3Jlc2V0JiMzNDssCiAgICAmIzM0O2VtYWNfbmRvX29wZW4mIzM0OywKICAgICYjMzQ7aWNzc2dfc3RhdHNfd29ya19oYW5kbGVyJiMzNDssCiAgICAmIzM0O3N0YXJ0X2xvZ2luJiMzNDssCiAgICAmIzM0O3RibmV0X2xvZ2luX3dvcmsmIzM0OywKICAgICYjMzQ7Y2hlY2tfY2FycmllciYjMzQ7LAogICAgJiMzNDtwZWdhc3VzX3Byb2JlJiMzNDssCiAgICAmIzM0O3BlZ2FzdXNfcmVzdW1lJiMzNDssCiAgICAmIzM0O3J0bF9od19waHlfd29ya19mdW5jX3QmIzM0OywKICAgICYjMzQ7cnRsODE1Ml9yZXNldF9yZXN1bWUmIzM0OywKICAgICYjMzQ7cnRsODE1Ml9wcm9iZV9vbmNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIHN5c3RlbV9sb25nX3dxIHdpdGggc3lzdGVtX2RmbF9sb25nX3dxIGZvciBzY2hlZHVsaW5nIGRlbGF5ZWQgd29ya3MgaW4gc2V2ZXJhbCBuZXR3b3JrIGRyaXZlcnMgKGlibXZuaWMsIGljc3NnLCB0aHVuZGVyYm9sdCwgcGVnYXN1cywgcjgxNTIpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IG9mIHRoZXNlIHdvcmtzLCBwb3RlbnRpYWxseSBhZmZlY3RpbmcgY29uY3VycmVuY3kgb3IgZGVhZGxvY2tzLiBGdXp6aW5nIHRoZSBhZmZlY3RlZCB3b3JrIGZ1bmN0aW9ucyBhbmQgdGhlaXIgdHJpZ2dlcnMgKGxpa2UgcHJvYmUsIG9wZW4sIHJlc2V0LCBhbmQgbG9naW4pIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lCTVZOSUMmIzM0OywKICAgICYjMzQ7VElfSUNTU0dfUFJVRVRIJiMzNDssCiAgICAmIzM0O1VTQjRfTkVUJiMzNDssCiAgICAmIzM0O1VTQl9QRUdBU1VTJiMzNDssCiAgICAmIzM0O1VTQl9SVEw4MTUyJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19pYm12bmljX3Jlc2V0JiMzNDssCiAgICAmIzM0O2libXZuaWNfcmVzZXQmIzM0OywKICAgICYjMzQ7ZW1hY19uZG9fb3BlbiYjMzQ7LAogICAgJiMzNDtpY3NzZ19zdGF0c193b3JrX2hhbmRsZXImIzM0OywKICAgICYjMzQ7c3RhcnRfbG9naW4mIzM0OywKICAgICYjMzQ7dGJuZXRfbG9naW5fd29yayYjMzQ7LAogICAgJiMzNDtjaGVja19jYXJyaWVyJiMzNDssCiAgICAmIzM0O3BlZ2FzdXNfcHJvYmUmIzM0OywKICAgICYjMzQ7cGVnYXN1c19yZXN1bWUmIzM0OywKICAgICYjMzQ7cnRsX2h3X3BoeV93b3JrX2Z1bmNfdCYjMzQ7LAogICAgJiMzNDtydGw4MTUyX3Jlc2V0X3Jlc3VtZSYjMzQ7LAogICAgJiMzNDtydGw4MTUyX3Byb2JlX29uY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgc3lzdGVtX2xvbmdfd3Egd2l0aCBzeXN0ZW1fZGZsX2xvbmdfd3EgZm9yIHNjaGVkdWxpbmcgZGVsYXllZCB3b3JrcyBpbiBzZXZlcmFsIG5ldHdvcmsgZHJpdmVycyAoaWJtdm5pYywgaWNzc2csIHRodW5kZXJib2x0LCBwZWdhc3VzLCByODE1MikuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyB0aGUgZXhlY3V0aW9uIGNvbnRleHQgb2YgdGhlc2Ugd29ya3MsIHBvdGVudGlhbGx5IGFmZmVjdGluZyBjb25jdXJyZW5jeSBvciBkZWFkbG9ja3MuIEZ1enppbmcgdGhlIGFmZmVjdGVkIHdvcmsgZnVuY3Rpb25zIGFuZCB0aGVpciB0cmlnZ2VycyAobGlrZSBwcm9iZSwgb3BlbiwgcmVzZXQsIGFuZCBsb2dpbikgaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBhcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE0OjE0OjM1LjExMTIyMTcyNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2ODAzNDY4NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklCTVZOSUNcIixcbiAgICBcIlRJX0lDU1NHX1BSVUVUSFwiLFxuICAgIFwiVVNCNF9ORVRcIixcbiAgICBcIlVTQl9QRUdBU1VTXCIsXG4gICAgXCJVU0JfUlRMODE1MlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9faWJtdm5pY19yZXNldFwiLFxuICAgIFwiaWJtdm5pY19yZXNldFwiLFxuICAgIFwiZW1hY19uZG9fb3BlblwiLFxuICAgIFwiaWNzc2dfc3RhdHNfd29ya19oYW5kbGVyXCIsXG4gICAgXCJzdGFydF9sb2dpblwiLFxuICAgIFwidGJuZXRfbG9naW5fd29ya1wiLFxuICAgIFwiY2hlY2tfY2FycmllclwiLFxuICAgIFwicGVnYXN1c19wcm9iZVwiLFxuICAgIFwicGVnYXN1c19yZXN1bWVcIixcbiAgICBcInJ0bF9od19waHlfd29ya19mdW5jX3RcIixcbiAgICBcInJ0bDgxNTJfcmVzZXRfcmVzdW1lXCIsXG4gICAgXCJydGw4MTUyX3Byb2JlX29uY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBzeXN0ZW1fbG9uZ193cSB3aXRoIHN5c3RlbV9kZmxfbG9uZ193cSBmb3Igc2NoZWR1bGluZyBkZWxheWVkIHdvcmtzIGluIHNldmVyYWwgbmV0d29yayBkcml2ZXJzIChpYm12bmljLCBpY3NzZywgdGh1bmRlcmJvbHQsIHBlZ2FzdXMsIHI4MTUyKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIHRoZSBleGVjdXRpb24gY29udGV4dCBvZiB0aGVzZSB3b3JrcywgcG90ZW50aWFsbHkgYWZmZWN0aW5nIGNvbmN1cnJlbmN5IG9yIGRlYWRsb2Nrcy4gRnV6emluZyB0aGUgYWZmZWN0ZWQgd29yayBmdW5jdGlvbnMgYW5kIHRoZWlyIHRyaWdnZXJzIChsaWtlIHByb2JlLCBvcGVuLCByZXNldCwgYW5kIGxvZ2luKSBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIGFyZSBpbnRyb2R1Y2VkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxNDoxNDozNS4xMTEyMzA0MDRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MDI2MzY5NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1MGJlN2ZiOGEzYTM4YjdkNmY2NmU1Y2I0YzcxY2U1YmNhM2M4NTkxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDIwIDE0OjE0OjMyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jXFxuaW5kZXggNWE1MTBlZWQzMzVlYWQuLmQ0YzI4NGM4ZWY0MzdhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jXFxuQEAgLTMyMjksNyArMzIyOSw3IEBAIHN0YXRpYyB2b2lkIF9faWJtdm5pY19yZXNldChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdGlmIChhZGFwdGVyLVxcdTAwM2VzdGF0ZSA9PSBWTklDX1BST0JJTkcgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgICF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXByb2JlX2RvbmUsIHRpbWVvdXQpKSB7XFxuIFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiUmVzZXQgdGhyZWFkIHRpbWVkIG91dCBvbiBwcm9iZVxcXCIpO1xcbi1cXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsXFxuK1xcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXFxuIFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VpYm12bmljX2RlbGF5ZWRfcmVzZXQsXFxuIFxcdFxcdFxcdFxcdCAgIElCTVZOSUNfUkVTRVRfREVMQVkpO1xcbiBcXHRcXHRyZXR1cm47XFxuQEAgLTMyNjcsNyArMzI2Nyw3IEBAIHN0YXRpYyB2b2lkIF9faWJtdm5pY19yZXNldChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdHNwaW5fbG9jayhcXHUwMDI2YWRhcHRlci1cXHUwMDNlcndpX2xvY2spO1xcbiBcXHRpZiAoIWxpc3RfZW1wdHkoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXJ3aV9saXN0KSkge1xcbiBcXHRcXHRpZiAodGVzdF9hbmRfc2V0X2JpdF9sb2NrKDAsIFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VyZXNldHRpbmcpKSB7XFxuLVxcdFxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSxcXG4rXFx0XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWlibXZuaWNfZGVsYXllZF9yZXNldCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgSUJNVk5JQ19SRVNFVF9ERUxBWSk7XFxuIFxcdFxcdH0gZWxzZSB7XFxuQEAgLTM0NTQsNyArMzQ1NCw3IEBAIHN0YXRpYyBpbnQgaWJtdm5pY19yZXNldChzdHJ1Y3QgaWJtdm5pY19hZGFwdGVyICphZGFwdGVyLFxcbiBcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZyd2ktXFx1MDAzZWxpc3QsIFxcdTAwMjZhZGFwdGVyLVxcdTAwM2Vyd2lfbGlzdCk7XFxuIFxcdG5ldGRldl9kYmcoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LCBcXFwiU2NoZWR1bGluZyByZXNldCAocmVhc29uICVzKVxcXFxuXFxcIixcXG4gXFx0XFx0ICAgcmVzZXRfcmVhc29uX3RvX3N0cmluZyhyZWFzb24pKTtcXG4tXFx0cXVldWVfd29yayhzeXN0ZW1fbG9uZ193cSwgXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWlibXZuaWNfcmVzZXQpO1xcbitcXHRxdWV1ZV93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWlibXZuaWNfcmVzZXQpO1xcbiBcXG4gXFx0cmV0ID0gMDtcXG4gZXJyOlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jXFxuaW5kZXggNTkxYmU1YzgwNTZiNDMuLjBmYmEyMmMxMDQ2ZTk2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmNcXG5AQCAtMTEwMCw3ICsxMTAwLDcgQEAgc3RhdGljIGludCBlbWFjX25kb19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbiBcXG4gXFx0cHJ1ZXRoLVxcdTAwM2VlbWFjc19pbml0aWFsaXplZCsrO1xcbiBcXG4tXFx0cXVldWVfd29yayhzeXN0ZW1fbG9uZ193cSwgXFx1MDAyNmVtYWMtXFx1MDAzZXN0YXRzX3dvcmsud29yayk7XFxuK1xcdHF1ZXVlX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2ZW1hYy1cXHUwMDNlc3RhdHNfd29yay53b3JrKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3RhdHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N0YXRzLmNcXG5pbmRleCA3MTU5YmFhMDE1NWNmYi4uN2Q2ZDY2OTJkODE5MjcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3RhdHMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N0YXRzLmNcXG5AQCAtNjksNyArNjksNyBAQCB2b2lkIGljc3NnX3N0YXRzX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdFxcdFxcdFxcdFxcdFxcdHN0YXRzX3dvcmsud29yayk7XFxuIFxcdGVtYWNfdXBkYXRlX2hhcmR3YXJlX3N0YXRzKGVtYWMpO1xcbiBcXG4tXFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCBcXHUwMDI2ZW1hYy1cXHUwMDNlc3RhdHNfd29yayxcXG4rXFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNmVtYWMtXFx1MDAzZXN0YXRzX3dvcmssXFxuIFxcdFxcdFxcdCAgIG1zZWNzX3RvX2ppZmZpZXMoKFNUQVRTX1RJTUVfTElNSVRfMUdfTVMgKiAxMDAwKSAvIGVtYWMtXFx1MDAzZXNwZWVkKSk7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwoaWNzc2dfc3RhdHNfd29ya19oYW5kbGVyKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jIGIvZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jXFxuaW5kZXggMDJhOTE2NTA1NjFhYjEuLmJlMjc5NzJiZWQxOGViIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uY1xcbkBAIC0zMTYsNyArMzE2LDcgQEAgc3RhdGljIHZvaWQgc3RhcnRfbG9naW4oc3RydWN0IHRibmV0ICpuZXQpXFxuIFxcdG5ldC1cXHUwMDNlbG9naW5fcmVjZWl2ZWQgPSBmYWxzZTtcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZuZXQtXFx1MDAzZWNvbm5lY3Rpb25fbG9jayk7XFxuIFxcbi1cXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsIFxcdTAwMjZuZXQtXFx1MDAzZWxvZ2luX3dvcmssXFxuK1xcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZuZXQtXFx1MDAzZWxvZ2luX3dvcmssXFxuIFxcdFxcdFxcdCAgIG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpO1xcbiB9XFxuIFxcbkBAIC00NjAsNyArNDYwLDcgQEAgc3RhdGljIGludCB0Ym5ldF9oYW5kbGVfcGFja2V0KGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUsIHZvaWQgKmRhdGEpXFxuIFxcdFxcdFxcdGlmIChuZXQtXFx1MDAzZWxvZ2luX3JldHJpZXMgXFx1MDAzZT0gVEJORVRfTE9HSU5fUkVUUklFUyB8fFxcbiBcXHRcXHRcXHQgICAgIW5ldC1cXHUwMDNlbG9naW5fc2VudCkge1xcbiBcXHRcXHRcXHRcXHRuZXQtXFx1MDAzZWxvZ2luX3JldHJpZXMgPSAwO1xcbi1cXHRcXHRcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsXFxuK1xcdFxcdFxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZuZXQtXFx1MDAzZWxvZ2luX3dvcmssIDApO1xcbiBcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2bmV0LVxcdTAwM2Vjb25uZWN0aW9uX2xvY2spO1xcbkBAIC03MDAsNyArNzAwLDggQEAgc3RhdGljIHZvaWQgdGJuZXRfbG9naW5fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdFxcdG5ldGRldl9kYmcobmV0LVxcdTAwM2VkZXYsIFxcXCJzZW5kaW5nIGxvZ2luIHJlcXVlc3QgZmFpbGVkLCByZXQ9JWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCAgIHJldCk7XFxuIFxcdFxcdGlmIChuZXQtXFx1MDAzZWxvZ2luX3JldHJpZXMrKyBcXHUwMDNjIFRCTkVUX0xPR0lOX1JFVFJJRVMpIHtcXG4tXFx0XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCBcXHUwMDI2bmV0LVxcdTAwM2Vsb2dpbl93b3JrLFxcbitcXHRcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLFxcbitcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2bmV0LVxcdTAwM2Vsb2dpbl93b3JrLFxcbiBcXHRcXHRcXHRcXHRcXHQgICBkZWxheSk7XFxuIFxcdFxcdH0gZWxzZSB7XFxuIFxcdFxcdFxcdG5ldGRldl9pbmZvKG5ldC1cXHUwMDNlZGV2LCBcXFwiVGh1bmRlcmJvbHRJUCBsb2dpbiB0aW1lZCBvdXRcXFxcblxcXCIpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jIGIvZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuY1xcbmluZGV4IDg3MDBlZWI4ZTIyZDA3Li5jMTc5OGUxNGIyMjQyZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jXFxuKysrIGIvZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuY1xcbkBAIC0xMTI2LDggKzExMjYsOSBAQCBzdGF0aWMgdm9pZCBjaGVja19jYXJyaWVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0cGVnYXN1c190ICpwZWdhc3VzID0gY29udGFpbmVyX29mKHdvcmssIHBlZ2FzdXNfdCwgY2Fycmllcl9jaGVjay53b3JrKTtcXG4gXFx0c2V0X2NhcnJpZXIocGVnYXN1cy1cXHUwMDNlbmV0KTtcXG4gXFx0aWYgKCEocGVnYXN1cy1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBQRUdBU1VTX1VOUExVRykpIHtcXG4tXFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCBcXHUwMDI2cGVnYXN1cy1cXHUwMDNlY2Fycmllcl9jaGVjayxcXG4tXFx0XFx0XFx0Q0FSUklFUl9DSEVDS19ERUxBWSk7XFxuK1xcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXFxuK1xcdFxcdFxcdFxcdCAgIFxcdTAwMjZwZWdhc3VzLVxcdTAwM2VjYXJyaWVyX2NoZWNrLFxcbitcXHRcXHRcXHRcXHQgICBDQVJSSUVSX0NIRUNLX0RFTEFZKTtcXG4gXFx0fVxcbiB9XFxuIFxcbkBAIC0xMjMyLDcgKzEyMzMsNyBAQCBzdGF0aWMgaW50IHBlZ2FzdXNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuIFxcdHJlcyA9IHJlZ2lzdGVyX25ldGRldihuZXQpO1xcbiBcXHRpZiAocmVzKVxcbiBcXHRcXHRnb3RvIG91dDM7XFxuLVxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXFx1MDAyNnBlZ2FzdXMtXFx1MDAzZWNhcnJpZXJfY2hlY2ssXFxuK1xcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZwZWdhc3VzLVxcdTAwM2VjYXJyaWVyX2NoZWNrLFxcbiBcXHRcXHRcXHQgICBDQVJSSUVSX0NIRUNLX0RFTEFZKTtcXG4gXFx0ZGV2X2luZm8oXFx1MDAyNmludGYtXFx1MDAzZWRldiwgXFxcIiVzLCAlcywgJXBNXFxcXG5cXFwiLCBuZXQtXFx1MDAzZW5hbWUsXFxuIFxcdFxcdCB1c2JfZGV2X2lkW2Rldl9pbmRleF0ubmFtZSwgbmV0LVxcdTAwM2VkZXZfYWRkcik7XFxuQEAgLTEyOTcsNyArMTI5OCw3IEBAIHN0YXRpYyBpbnQgcGVnYXN1c19yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuIFxcdFxcdHBlZ2FzdXMtXFx1MDAzZWludHJfdXJiLVxcdTAwM2VhY3R1YWxfbGVuZ3RoID0gMDtcXG4gXFx0XFx0aW50cl9jYWxsYmFjayhwZWdhc3VzLVxcdTAwM2VpbnRyX3VyYik7XFxuIFxcdH1cXG4tXFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCBcXHUwMDI2cGVnYXN1cy1cXHUwMDNlY2Fycmllcl9jaGVjayxcXG4rXFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnBlZ2FzdXMtXFx1MDAzZWNhcnJpZXJfY2hlY2ssXFxuIFxcdFxcdFxcdFxcdENBUlJJRVJfQ0hFQ0tfREVMQVkpO1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2IvcjgxNTIuYyBiL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jXFxuaW5kZXggZjYxNjg2NDMzMDMxYzcuLmY2YWY2NmYyOTRkYmNiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jXFxuKysrIGIvZHJpdmVycy9uZXQvdXNiL3I4MTUyLmNcXG5AQCAtNzA3Miw3ICs3MDcyLDggQEAgc3RhdGljIHZvaWQgcnRsX2h3X3BoeV93b3JrX2Z1bmNfdChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcbiBcXHRcXHQvKiBEZWxheSBleGVjdXRpb24gaW4gY2FzZSByZXF1ZXN0X2Zpcm13YXJlKCkgaXMgbm90IHJlYWR5IHlldC5cXG4gXFx0XFx0ICovXFxuLVxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXFx1MDAyNnRwLVxcdTAwM2Vod19waHlfd29yaywgSFogKiAxMCk7XFxuK1xcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZ0cC1cXHUwMDNlaHdfcGh5X3dvcmssXFxuK1xcdFxcdFxcdFxcdCAgIEhaICogMTApO1xcbiBcXHRcXHRnb3RvIGlnbm9yZV9vbmNlO1xcbiBcXHR9XFxuIFxcbkBAIC04ODQwLDcgKzg4NDEsNyBAQCBzdGF0aWMgaW50IHJ0bDgxNTJfcmVzZXRfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbiBcXHRjbGVhcl9iaXQoU0VMRUNUSVZFX1NVU1BFTkQsIFxcdTAwMjZ0cC1cXHUwMDNlZmxhZ3MpO1xcbiBcXHRydGxfcmVzZXRfb2NwX2Jhc2UodHApO1xcbiBcXHR0cC1cXHUwMDNlcnRsX29wcy5pbml0KHRwKTtcXG4tXFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCBcXHUwMDI2dHAtXFx1MDAzZWh3X3BoeV93b3JrLCAwKTtcXG4rXFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnRwLVxcdTAwM2Vod19waHlfd29yaywgMCk7XFxuIFxcdHNldF9ldGhlcm5ldF9hZGRyKHRwLCB0cnVlKTtcXG4gXFx0cmV0dXJuIHJ0bDgxNTJfcmVzdW1lKGludGYpO1xcbiB9XFxuQEAgLTEwMjk1LDcgKzEwMjk2LDcgQEAgc3RhdGljIGludCBydGw4MTUyX3Byb2JlX29uY2Uoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuIFxcdC8qIFJldHJ5IGluIGNhc2UgcmVxdWVzdF9maXJtd2FyZSgpIGlzIG5vdCByZWFkeSB5ZXQuICovXFxuIFxcdHRwLVxcdTAwM2VydGxfZncucmV0cnkgPSB0cnVlO1xcbiAjZW5kaWZcXG4tXFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCBcXHUwMDI2dHAtXFx1MDAzZWh3X3BoeV93b3JrLCAwKTtcXG4rXFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnRwLVxcdTAwM2Vod19waHlfd29yaywgMCk7XFxuIFxcdHNldF9ldGhlcm5ldF9hZGRyKHRwLCBmYWxzZSk7XFxuIFxcbiBcXHR1c2Jfc2V0X2ludGZkYXRhKGludGYsIHRwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTQ6MTQ6MzcuNjE0OTAzMTEyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NDI5OTc2OTE2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJQk1WTklDXCIsXG4gICAgXCJUSV9JQ1NTR19QUlVFVEhcIixcbiAgICBcIlVTQjRfTkVUXCIsXG4gICAgXCJVU0JfUEVHQVNVU1wiLFxuICAgIFwiVVNCX1JUTDgxNTJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2libXZuaWNfcmVzZXRcIixcbiAgICBcImlibXZuaWNfcmVzZXRcIixcbiAgICBcImVtYWNfbmRvX29wZW5cIixcbiAgICBcImljc3NnX3N0YXRzX3dvcmtfaGFuZGxlclwiLFxuICAgIFwic3RhcnRfbG9naW5cIixcbiAgICBcInRibmV0X2xvZ2luX3dvcmtcIixcbiAgICBcImNoZWNrX2NhcnJpZXJcIixcbiAgICBcInBlZ2FzdXNfcHJvYmVcIixcbiAgICBcInBlZ2FzdXNfcmVzdW1lXCIsXG4gICAgXCJydGxfaHdfcGh5X3dvcmtfZnVuY190XCIsXG4gICAgXCJydGw4MTUyX3Jlc2V0X3Jlc3VtZVwiLFxuICAgIFwicnRsODE1Ml9wcm9iZV9vbmNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgc3lzdGVtX2xvbmdfd3Egd2l0aCBzeXN0ZW1fZGZsX2xvbmdfd3EgZm9yIHNjaGVkdWxpbmcgZGVsYXllZCB3b3JrcyBpbiBzZXZlcmFsIG5ldHdvcmsgZHJpdmVycyAoaWJtdm5pYywgaWNzc2csIHRodW5kZXJib2x0LCBwZWdhc3VzLCByODE1MikuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyB0aGUgZXhlY3V0aW9uIGNvbnRleHQgb2YgdGhlc2Ugd29ya3MsIHBvdGVudGlhbGx5IGFmZmVjdGluZyBjb25jdXJyZW5jeSBvciBkZWFkbG9ja3MuIEZ1enppbmcgdGhlIGFmZmVjdGVkIHdvcmsgZnVuY3Rpb25zIGFuZCB0aGVpciB0cmlnZ2VycyAobGlrZSBwcm9iZSwgb3BlbiwgcmVzZXQsIGFuZCBsb2dpbikgaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1MGJlN2ZiOGEzYTM4YjdkNmY2NmU1Y2I0YzcxY2U1YmNhM2M4NTkxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjAgMTQ6MTQ6MzIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuY1xuaW5kZXggNWE1MTBlZWQzMzVlYWQuLmQ0YzI4NGM4ZWY0MzdhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuY1xuQEAgLTMyMjksNyArMzIyOSw3IEBAIHN0YXRpYyB2b2lkIF9faWJtdm5pY19yZXNldChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRpZiAoYWRhcHRlci1cdTAwM2VzdGF0ZSA9PSBWTklDX1BST0JJTkcgXHUwMDI2XHUwMDI2XG4gXHQgICAgIXdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dChcdTAwMjZhZGFwdGVyLVx1MDAzZXByb2JlX2RvbmUsIHRpbWVvdXQpKSB7XG4gXHRcdGRldl9lcnIoZGV2LCBcIlJlc2V0IHRocmVhZCB0aW1lZCBvdXQgb24gcHJvYmVcIik7XG4tXHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSxcbitcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcbiBcdFx0XHRcdCAgIFx1MDAyNmFkYXB0ZXItXHUwMDNlaWJtdm5pY19kZWxheWVkX3Jlc2V0LFxuIFx0XHRcdFx0ICAgSUJNVk5JQ19SRVNFVF9ERUxBWSk7XG4gXHRcdHJldHVybjtcbkBAIC0zMjY3LDcgKzMyNjcsNyBAQCBzdGF0aWMgdm9pZCBfX2libXZuaWNfcmVzZXQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0c3Bpbl9sb2NrKFx1MDAyNmFkYXB0ZXItXHUwMDNlcndpX2xvY2spO1xuIFx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNmFkYXB0ZXItXHUwMDNlcndpX2xpc3QpKSB7XG4gXHRcdGlmICh0ZXN0X2FuZF9zZXRfYml0X2xvY2soMCwgXHUwMDI2YWRhcHRlci1cdTAwM2VyZXNldHRpbmcpKSB7XG4tXHRcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLFxuK1x0XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXG4gXHRcdFx0XHRcdCAgIFx1MDAyNmFkYXB0ZXItXHUwMDNlaWJtdm5pY19kZWxheWVkX3Jlc2V0LFxuIFx0XHRcdFx0XHQgICBJQk1WTklDX1JFU0VUX0RFTEFZKTtcbiBcdFx0fSBlbHNlIHtcbkBAIC0zNDU0LDcgKzM0NTQsNyBAQCBzdGF0aWMgaW50IGlibXZuaWNfcmVzZXQoc3RydWN0IGlibXZuaWNfYWRhcHRlciAqYWRhcHRlcixcbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2cndpLVx1MDAzZWxpc3QsIFx1MDAyNmFkYXB0ZXItXHUwMDNlcndpX2xpc3QpO1xuIFx0bmV0ZGV2X2RiZyhhZGFwdGVyLVx1MDAzZW5ldGRldiwgXCJTY2hlZHVsaW5nIHJlc2V0IChyZWFzb24gJXMpXFxuXCIsXG4gXHRcdCAgIHJlc2V0X3JlYXNvbl90b19zdHJpbmcocmVhc29uKSk7XG4tXHRxdWV1ZV93b3JrKHN5c3RlbV9sb25nX3dxLCBcdTAwMjZhZGFwdGVyLVx1MDAzZWlibXZuaWNfcmVzZXQpO1xuK1x0cXVldWVfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmFkYXB0ZXItXHUwMDNlaWJtdm5pY19yZXNldCk7XG4gXG4gXHRyZXQgPSAwO1xuIGVycjpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jXG5pbmRleCA1OTFiZTVjODA1NmI0My4uMGZiYTIyYzEwNDZlOTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmNcbkBAIC0xMTAwLDcgKzExMDAsNyBAQCBzdGF0aWMgaW50IGVtYWNfbmRvX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4gXG4gXHRwcnVldGgtXHUwMDNlZW1hY3NfaW5pdGlhbGl6ZWQrKztcbiBcbi1cdHF1ZXVlX3dvcmsoc3lzdGVtX2xvbmdfd3EsIFx1MDAyNmVtYWMtXHUwMDNlc3RhdHNfd29yay53b3JrKTtcbitcdHF1ZXVlX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZlbWFjLVx1MDAzZXN0YXRzX3dvcmsud29yayk7XG4gXG4gXHRyZXR1cm4gMDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zdGF0cy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3RhdHMuY1xuaW5kZXggNzE1OWJhYTAxNTVjZmIuLjdkNmQ2NjkyZDgxOTI3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3RhdHMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3RhdHMuY1xuQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBpY3NzZ19zdGF0c193b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRcdFx0XHRcdHN0YXRzX3dvcmsud29yayk7XG4gXHRlbWFjX3VwZGF0ZV9oYXJkd2FyZV9zdGF0cyhlbWFjKTtcbiBcbi1cdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2ZW1hYy1cdTAwM2VzdGF0c193b3JrLFxuK1x0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2ZW1hYy1cdTAwM2VzdGF0c193b3JrLFxuIFx0XHRcdCAgIG1zZWNzX3RvX2ppZmZpZXMoKFNUQVRTX1RJTUVfTElNSVRfMUdfTVMgKiAxMDAwKSAvIGVtYWMtXHUwMDNlc3BlZWQpKTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoaWNzc2dfc3RhdHNfd29ya19oYW5kbGVyKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMgYi9kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmNcbmluZGV4IDAyYTkxNjUwNTYxYWIxLi5iZTI3OTcyYmVkMThlYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jXG5AQCAtMzE2LDcgKzMxNiw3IEBAIHN0YXRpYyB2b2lkIHN0YXJ0X2xvZ2luKHN0cnVjdCB0Ym5ldCAqbmV0KVxuIFx0bmV0LVx1MDAzZWxvZ2luX3JlY2VpdmVkID0gZmFsc2U7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2bmV0LVx1MDAzZWNvbm5lY3Rpb25fbG9jayk7XG4gXG4tXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsIFx1MDAyNm5ldC1cdTAwM2Vsb2dpbl93b3JrLFxuK1x0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2bmV0LVx1MDAzZWxvZ2luX3dvcmssXG4gXHRcdFx0ICAgbXNlY3NfdG9famlmZmllcygxMDAwKSk7XG4gfVxuIFxuQEAgLTQ2MCw3ICs0NjAsNyBAQCBzdGF0aWMgaW50IHRibmV0X2hhbmRsZV9wYWNrZXQoY29uc3Qgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSwgdm9pZCAqZGF0YSlcbiBcdFx0XHRpZiAobmV0LVx1MDAzZWxvZ2luX3JldHJpZXMgXHUwMDNlPSBUQk5FVF9MT0dJTl9SRVRSSUVTIHx8XG4gXHRcdFx0ICAgICFuZXQtXHUwMDNlbG9naW5fc2VudCkge1xuIFx0XHRcdFx0bmV0LVx1MDAzZWxvZ2luX3JldHJpZXMgPSAwO1xuLVx0XHRcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLFxuK1x0XHRcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcbiBcdFx0XHRcdFx0XHQgICBcdTAwMjZuZXQtXHUwMDNlbG9naW5fd29yaywgMCk7XG4gXHRcdFx0fVxuIFx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZuZXQtXHUwMDNlY29ubmVjdGlvbl9sb2NrKTtcbkBAIC03MDAsNyArNzAwLDggQEAgc3RhdGljIHZvaWQgdGJuZXRfbG9naW5fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRcdG5ldGRldl9kYmcobmV0LVx1MDAzZWRldiwgXCJzZW5kaW5nIGxvZ2luIHJlcXVlc3QgZmFpbGVkLCByZXQ9JWRcXG5cIixcbiBcdFx0XHQgICByZXQpO1xuIFx0XHRpZiAobmV0LVx1MDAzZWxvZ2luX3JldHJpZXMrKyBcdTAwM2MgVEJORVRfTE9HSU5fUkVUUklFUykge1xuLVx0XHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2bmV0LVx1MDAzZWxvZ2luX3dvcmssXG4rXHRcdFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcbitcdFx0XHRcdFx0ICAgXHUwMDI2bmV0LVx1MDAzZWxvZ2luX3dvcmssXG4gXHRcdFx0XHRcdCAgIGRlbGF5KTtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRuZXRkZXZfaW5mbyhuZXQtXHUwMDNlZGV2LCBcIlRodW5kZXJib2x0SVAgbG9naW4gdGltZWQgb3V0XFxuXCIpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmMgYi9kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jXG5pbmRleCA4NzAwZWViOGUyMmQwNy4uYzE3OThlMTRiMjI0MmUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jXG4rKysgYi9kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jXG5AQCAtMTEyNiw4ICsxMTI2LDkgQEAgc3RhdGljIHZvaWQgY2hlY2tfY2FycmllcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRwZWdhc3VzX3QgKnBlZ2FzdXMgPSBjb250YWluZXJfb2Yod29yaywgcGVnYXN1c190LCBjYXJyaWVyX2NoZWNrLndvcmspO1xuIFx0c2V0X2NhcnJpZXIocGVnYXN1cy1cdTAwM2VuZXQpO1xuIFx0aWYgKCEocGVnYXN1cy1cdTAwM2VmbGFncyBcdTAwMjYgUEVHQVNVU19VTlBMVUcpKSB7XG4tXHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2cGVnYXN1cy1cdTAwM2VjYXJyaWVyX2NoZWNrLFxuLVx0XHRcdENBUlJJRVJfQ0hFQ0tfREVMQVkpO1xuK1x0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLFxuK1x0XHRcdFx0ICAgXHUwMDI2cGVnYXN1cy1cdTAwM2VjYXJyaWVyX2NoZWNrLFxuK1x0XHRcdFx0ICAgQ0FSUklFUl9DSEVDS19ERUxBWSk7XG4gXHR9XG4gfVxuIFxuQEAgLTEyMzIsNyArMTIzMyw3IEBAIHN0YXRpYyBpbnQgcGVnYXN1c19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcbiBcdHJlcyA9IHJlZ2lzdGVyX25ldGRldihuZXQpO1xuIFx0aWYgKHJlcylcbiBcdFx0Z290byBvdXQzO1xuLVx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCBcdTAwMjZwZWdhc3VzLVx1MDAzZWNhcnJpZXJfY2hlY2ssXG4rXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZwZWdhc3VzLVx1MDAzZWNhcnJpZXJfY2hlY2ssXG4gXHRcdFx0ICAgQ0FSUklFUl9DSEVDS19ERUxBWSk7XG4gXHRkZXZfaW5mbyhcdTAwMjZpbnRmLVx1MDAzZWRldiwgXCIlcywgJXMsICVwTVxcblwiLCBuZXQtXHUwMDNlbmFtZSxcbiBcdFx0IHVzYl9kZXZfaWRbZGV2X2luZGV4XS5uYW1lLCBuZXQtXHUwMDNlZGV2X2FkZHIpO1xuQEAgLTEyOTcsNyArMTI5OCw3IEBAIHN0YXRpYyBpbnQgcGVnYXN1c19yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4gXHRcdHBlZ2FzdXMtXHUwMDNlaW50cl91cmItXHUwMDNlYWN0dWFsX2xlbmd0aCA9IDA7XG4gXHRcdGludHJfY2FsbGJhY2socGVnYXN1cy1cdTAwM2VpbnRyX3VyYik7XG4gXHR9XG4tXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2xvbmdfd3EsIFx1MDAyNnBlZ2FzdXMtXHUwMDNlY2Fycmllcl9jaGVjayxcbitcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNnBlZ2FzdXMtXHUwMDNlY2Fycmllcl9jaGVjayxcbiBcdFx0XHRcdENBUlJJRVJfQ0hFQ0tfREVMQVkpO1xuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jIGIvZHJpdmVycy9uZXQvdXNiL3I4MTUyLmNcbmluZGV4IGY2MTY4NjQzMzAzMWM3Li5mNmFmNjZmMjk0ZGJjYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3VzYi9yODE1Mi5jXG4rKysgYi9kcml2ZXJzL25ldC91c2IvcjgxNTIuY1xuQEAgLTcwNzIsNyArNzA3Miw4IEBAIHN0YXRpYyB2b2lkIHJ0bF9od19waHlfd29ya19mdW5jX3Qoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFxuIFx0XHQvKiBEZWxheSBleGVjdXRpb24gaW4gY2FzZSByZXF1ZXN0X2Zpcm13YXJlKCkgaXMgbm90IHJlYWR5IHlldC5cbiBcdFx0ICovXG4tXHRcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2dHAtXHUwMDNlaHdfcGh5X3dvcmssIEhaICogMTApO1xuK1x0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZ0cC1cdTAwM2Vod19waHlfd29yayxcbitcdFx0XHRcdCAgIEhaICogMTApO1xuIFx0XHRnb3RvIGlnbm9yZV9vbmNlO1xuIFx0fVxuIFxuQEAgLTg4NDAsNyArODg0MSw3IEBAIHN0YXRpYyBpbnQgcnRsODE1Ml9yZXNldF9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4gXHRjbGVhcl9iaXQoU0VMRUNUSVZFX1NVU1BFTkQsIFx1MDAyNnRwLVx1MDAzZWZsYWdzKTtcbiBcdHJ0bF9yZXNldF9vY3BfYmFzZSh0cCk7XG4gXHR0cC1cdTAwM2VydGxfb3BzLmluaXQodHApO1xuLVx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLCBcdTAwMjZ0cC1cdTAwM2Vod19waHlfd29yaywgMCk7XG4rXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcdTAwMjZ0cC1cdTAwM2Vod19waHlfd29yaywgMCk7XG4gXHRzZXRfZXRoZXJuZXRfYWRkcih0cCwgdHJ1ZSk7XG4gXHRyZXR1cm4gcnRsODE1Ml9yZXN1bWUoaW50Zik7XG4gfVxuQEAgLTEwMjk1LDcgKzEwMjk2LDcgQEAgc3RhdGljIGludCBydGw4MTUyX3Byb2JlX29uY2Uoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4gXHQvKiBSZXRyeSBpbiBjYXNlIHJlcXVlc3RfZmlybXdhcmUoKSBpcyBub3QgcmVhZHkgeWV0LiAqL1xuIFx0dHAtXHUwMDNlcnRsX2Z3LnJldHJ5ID0gdHJ1ZTtcbiAjZW5kaWZcbi1cdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fbG9uZ193cSwgXHUwMDI2dHAtXHUwMDNlaHdfcGh5X3dvcmssIDApO1xuK1x0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXHUwMDI2dHAtXHUwMDNlaHdfcGh5X3dvcmssIDApO1xuIFx0c2V0X2V0aGVybmV0X2FkZHIodHAsIGZhbHNlKTtcbiBcbiBcdHVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgdHApO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTQ6MTQ6MzcuNjE0OTA2ODMyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA3NTY4NTEwODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGggRnV6emluZyBEZWNpc2lvbjogTm8qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgc3dhcHMgb3V0IGBzeXN0ZW1fbG9uZ193cWAgd2l0aCBgc3lzdGVtX2RmbF9sb25nX3dxYCBpbiBhIGJ1bmNoIG9mIG5ldHdvcmsgZHJpdmVyczogYGlibXZuaWMuY2AsIGBpY3NzZ19wcnVldGguY2AsIGBpY3NzZ19zdGF0cy5jYCwgYHRodW5kZXJib2x0L21haW4uY2AsIGBwZWdhc3VzLmNgLCBhbmQgYHI4MTUyLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiTWVjaGFuaWNhbCBjaGFuZ2UsIGp1c3QgcmVwbGFjaW5nIG9uZSB3b3JrcXVldWUgd2l0aCBhbm90aGVyLlwiIERvZXMgdGhpcyBjaGFuZ2UgdGhlIGV4ZWN1dGlvbiBmbG93IGVub3VnaCB0byBldmVuIHdhcnJhbnQgZnV6emluZz8gSXQncyBqdXN0IGEgd29ya3F1ZXVlIHN1YnN0aXR1dGlvbiBmb3IgZGVsYXllZCB3b3JrLlxuXG5JJ20gdGhpbmtpbmcsIGBzeXN0ZW1fbG9uZ193cWAgdmVyc3VzIGBzeXN0ZW1fZGZsX2xvbmdfd3FgLi4uIGlzIHRoZXJlIGFueSAqbmV3KiBsb2dpYz8gTm9wZSwgaXQncyBhIHNpbXBsZSB3b3JrcXVldWUgcG9pbnRlciByZXBsYWNlbWVudC4gSXQgKmRvZXMqIGNoYW5nZSB0aGUgZXhlY3V0aW9uIGVudmlyb25tZW50IOKAkyBwb3RlbnRpYWxseSBkaWZmZXJlbnQgY29uY3VycmVuY3kgb3IgcHJpb3JpdHkgb2YgdGhlc2Ugd29ya3Mg4oCTIGJ1dCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IGJyYW5jaGVzLCBvciBkYXRhIHN0cnVjdHVyZXMuXG5cbldhaXQsIGlzIGBzeXN0ZW1fZGZsX2xvbmdfd3FgIGEgY29tcGxldGVseSAqbmV3KiB3b3JrcXVldWUsIG9yIGlzIHRoaXMgcGFydCBvZiBzb21lIGxhcmdlciBwYXRjaHNldD8gSnVzdCBhIHN0cmFpZ2h0IHJlcGxhY2VtZW50LCBpdCBsb29rcyBsaWtlLiBMZXQncyBzZWUuLi4gdGhlIGluc3RydWN0aW9ucyBzYXk6IFwiKlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6IC4uLmNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4uLipcIi4gSXMgdGhpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCB0aG91Z2g/IFllcywgZGlmZmVyZW50IHdvcmtxdWV1ZSwgZGlmZmVyZW50IGZ1bmN0aW9uYWwgY2hhbmdlLlxuXG5BbHJpZ2h0LCBsZXQncyBjb25zaWRlciByZWFjaGFiaWxpdHkuIGBwZWdhc3VzLmNgIGFuZCBgcjgxNTIuY2AgYXJlIFVTQiBuZXR3b3JrIGRyaXZlcnMuIFdlIGNhbiByZWFjaCB0aG9zZSB0aHJvdWdoIFVTQiBnYWRnZXQvZHVtbXlfaGNkIGluIFFFTVUuIGB0aHVuZGVyYm9sdC9tYWluLmNgPyBIbW0sIHByb2JhYmx5IG5vdCBlYXNpbHksIGJ1dCBtYXliZS4gYGlibXZuaWMuY2AgYW5kIGBpY3NzZ19wcnVldGguY2AgYXJlIHByb2JhYmx5IG5vdCBlYXNpbHkgcmVhY2hlZCBpbiBRRU1VIGFzIHRoZXkncmUgbW9yZSBzcGVjaWFsaXplZCBkcml2ZXJzLCB0aGUgZmlyc3QgcmVxdWlyZXMgYSBzcGVjaWZpYyBJQk0vcG93ZXJwYy9wc2VyaWVzIHNldHVwLCBhbmQgdGhlIHNlY29uZCBpcyByZWxhdGVkIHRvIFRJIFBSVSBoYXJkd2FyZS5cblxuQnV0LCB0aGUga2V5IGlzIHRoZSBpbnN0cnVjdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYnV0IGl0ICpkb2Vzbid0KiBpbnRyb2R1Y2UgbmV3IGxvZ2ljIG9yIGJyYW5jaGVzLCBhbmQgSSd2ZSBnb3QgdG8gbWFrZSBhIGp1ZGdlbWVudC4gR2l2ZW4gdGhlIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgY3JpdGVyaWEgb3V0bGluZWQgYW5kIHRoZSBmdW5jdGlvbmFsIG5hdHVyZSBvZiB3b3JrcXVldWUgY2hhbmdlIHdpdGhvdXQgdGhlIGludHJvZHVjdGlvbiBvZiBuZXcgbG9naWMsIEkgYW0gZGVjaWRpbmcgdGhhdCBpdCdzICpub3QqIHdvcnRoIGZ1enppbmcgYW5kIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MDksIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MDAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxNDoxNDo0OC4zNzE3NjM0ODFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM3ODExMTMxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzeXN0ZW1fZGZsX2xvbmdfd3FcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9hdGEvbGliYXRhLWVoLmM9NzIxPXZvaWQgYXRhX3Njc2lfcG9ydF9lcnJvcl9oYW5kbGVyKHN0cnVjdCBTY3NpX0hvc3QgKmhvc3QsIHN0cnVjdCBhdGFfcG9ydCAqYXApXFxuLS1cXG5kcml2ZXJzL2F0YS9saWJhdGEtZWguYy04MjMtXFx0XFx0IShhcC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBBVEFfRkxBR19TQVNfSE9TVCkpXFxuZHJpdmVycy9hdGEvbGliYXRhLWVoLmM6ODI0OlxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZhcC1cXHUwMDNlaG90cGx1Z190YXNrLCAwKTtcXG5kcml2ZXJzL2F0YS9saWJhdGEtZWguYy04MjUtXFxuLS1cXG5kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jPTQ3MDc9dm9pZCBhdGFfc2NzaV9zY2FuX2hvc3Qoc3RydWN0IGF0YV9wb3J0ICphcCwgaW50IHN5bmMpXFxuLS1cXG5kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jLTQ3NzYtXFxuZHJpdmVycy9hdGEvbGliYXRhLXNjc2kuYzo0Nzc3OlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZhcC1cXHUwMDNlaG90cGx1Z190YXNrLFxcbmRyaXZlcnMvYXRhL2xpYmF0YS1zY3NpLmMtNDc3OC1cXHRcXHRcXHQgICByb3VuZF9qaWZmaWVzX3JlbGF0aXZlKEhaKSk7XFxuLS1cXG5kcml2ZXJzL2kyYy9pMmMtc2xhdmUtdGVzdHVuaXQuYz04Mj1zdGF0aWMgaW50IGkyY19zbGF2ZV90ZXN0dW5pdF9zbGF2ZV9jYihzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LFxcbi0tXFxuZHJpdmVycy9pMmMvaTJjLXNsYXZlLXRlc3R1bml0LmMtMTI2LVxcdFxcdFxcdHNldF9iaXQoVFVfRkxBR19JTl9QUk9DRVNTLCBcXHUwMDI2dHUtXFx1MDAzZWZsYWdzKTtcXG5kcml2ZXJzL2kyYy9pMmMtc2xhdmUtdGVzdHVuaXQuYzoxMjc6XFx0XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnR1LVxcdTAwM2V3b3JrZXIsXFxuZHJpdmVycy9pMmMvaTJjLXNsYXZlLXRlc3R1bml0LmMtMTI4LVxcdFxcdFxcdFxcdFxcdCAgIG1zZWNzX3RvX2ppZmZpZXMoMTAgKiB0dS1cXHUwMDNlcmVnc1tUVV9SRUdfREVMQVldKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jPTMyMDM9c3RhdGljIHZvaWQgX19pYm12bmljX3Jlc2V0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmMtMzIzMS1cXHRcXHRkZXZfZXJyKGRldiwgXFxcIlJlc2V0IHRocmVhZCB0aW1lZCBvdXQgb24gcHJvYmVcXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jOjMyMzI6XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jLTMyMzMtXFx0XFx0XFx0XFx0ICAgXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWlibXZuaWNfZGVsYXllZF9yZXNldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmMtMzI2OS1cXHRcXHRpZiAodGVzdF9hbmRfc2V0X2JpdF9sb2NrKDAsIFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VyZXNldHRpbmcpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYzozMjcwOlxcdFxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYy0zMjcxLVxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VpYm12bmljX2RlbGF5ZWRfcmVzZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jPTM0MTA9c3RhdGljIGludCBpYm12bmljX3Jlc2V0KHN0cnVjdCBpYm12bmljX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jLTM0NTYtXFx0XFx0ICAgcmVzZXRfcmVhc29uX3RvX3N0cmluZyhyZWFzb24pKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jOjM0NTc6XFx0cXVldWVfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VpYm12bmljX3Jlc2V0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jLTM0NTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYz0xMDEzPXN0YXRpYyBpbnQgZW1hY19uZG9fb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTExMDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM6MTEwMzpcXHRxdWV1ZV93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNmVtYWMtXFx1MDAzZXN0YXRzX3dvcmsud29yayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMTEwNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N0YXRzLmM9NjY9dm9pZCBpY3NzZ19zdGF0c193b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3RhdHMuYy03MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zdGF0cy5jOjcyOlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZlbWFjLVxcdTAwM2VzdGF0c193b3JrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N0YXRzLmMtNzMtXFx0XFx0XFx0ICAgbXNlY3NfdG9famlmZmllcygoU1RBVFNfVElNRV9MSU1JVF8xR19NUyAqIDEwMDApIC8gZW1hYy1cXHUwMDNlc3BlZWQpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz0zMTA9c3RhdGljIHZvaWQgc3RhcnRfbG9naW4oc3RydWN0IHRibmV0ICpuZXQpXFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMzE4LVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYzozMTk6XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNm5ldC1cXHUwMDNlbG9naW5fd29yayxcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtMzIwLVxcdFxcdFxcdCAgIG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jPTQxNT1zdGF0aWMgaW50IHRibmV0X2hhbmRsZV9wYWNrZXQoY29uc3Qgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSwgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYy00NjItXFx0XFx0XFx0XFx0bmV0LVxcdTAwM2Vsb2dpbl9yZXRyaWVzID0gMDtcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6NDYzOlxcdFxcdFxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTQ2NC1cXHRcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2bmV0LVxcdTAwM2Vsb2dpbl93b3JrLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3RodW5kZXJib2x0L21haW4uYz02ODY9c3RhdGljIHZvaWQgdGJuZXRfbG9naW5fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmMtNzAyLVxcdFxcdGlmIChuZXQtXFx1MDAzZWxvZ2luX3JldHJpZXMrKyBcXHUwMDNjIFRCTkVUX0xPR0lOX1JFVFJJRVMpIHtcXG5kcml2ZXJzL25ldC90aHVuZGVyYm9sdC9tYWluLmM6NzAzOlxcdFxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXFxuZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvbWFpbi5jLTcwNC1cXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2bmV0LVxcdTAwM2Vsb2dpbl93b3JrLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYz0xMTI0PXN0YXRpYyB2b2lkIGNoZWNrX2NhcnJpZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYy0xMTI4LVxcdGlmICghKHBlZ2FzdXMtXFx1MDAzZWZsYWdzIFxcdTAwMjYgUEVHQVNVU19VTlBMVUcpKSB7XFxuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYzoxMTI5OlxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXFxuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYy0xMTMwLVxcdFxcdFxcdFxcdCAgIFxcdTAwMjZwZWdhc3VzLVxcdTAwM2VjYXJyaWVyX2NoZWNrLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYz0xMTUxPXN0YXRpYyBpbnQgcGVnYXN1c19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmMtMTIzNS1cXHRcXHRnb3RvIG91dDM7XFxuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYzoxMjM2OlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZwZWdhc3VzLVxcdTAwM2VjYXJyaWVyX2NoZWNrLFxcbmRyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmMtMTIzNy1cXHRcXHRcXHQgICBDQVJSSUVSX0NIRUNLX0RFTEFZKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9wZWdhc3VzLmM9MTI4Nz1zdGF0aWMgaW50IHBlZ2FzdXNfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYy0xMzAwLVxcdH1cXG5kcml2ZXJzL25ldC91c2IvcGVnYXN1cy5jOjEzMDE6XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnBlZ2FzdXMtXFx1MDAzZWNhcnJpZXJfY2hlY2ssXFxuZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYy0xMzAyLVxcdFxcdFxcdFxcdENBUlJJRVJfQ0hFQ0tfREVMQVkpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3I4MTUyLmM9NzA1Nz1zdGF0aWMgdm9pZCBydGxfaHdfcGh5X3dvcmtfZnVuY190KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9yODE1Mi5jLTcwNzQtXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvdXNiL3I4MTUyLmM6NzA3NTpcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2dHAtXFx1MDAzZWh3X3BoeV93b3JrLFxcbmRyaXZlcnMvbmV0L3VzYi9yODE1Mi5jLTcwNzYtXFx0XFx0XFx0XFx0ICAgSFogKiAxMCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcjgxNTIuYz04ODM3PXN0YXRpYyBpbnQgcnRsODE1Ml9yZXNldF9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcjgxNTIuYy04ODQzLVxcdHRwLVxcdTAwM2VydGxfb3BzLmluaXQodHApO1xcbmRyaXZlcnMvbmV0L3VzYi9yODE1Mi5jOjg4NDQ6XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnRwLVxcdTAwM2Vod19waHlfd29yaywgMCk7XFxuZHJpdmVycy9uZXQvdXNiL3I4MTUyLmMtODg0NS1cXHRzZXRfZXRoZXJuZXRfYWRkcih0cCwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcjgxNTIuYz0xMDEzMD1zdGF0aWMgaW50IHJ0bDgxNTJfcHJvYmVfb25jZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9yODE1Mi5jLTEwMjk4LSNlbmRpZlxcbmRyaXZlcnMvbmV0L3VzYi9yODE1Mi5jOjEwMjk5OlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZ0cC1cXHUwMDNlaHdfcGh5X3dvcmssIDApO1xcbmRyaXZlcnMvbmV0L3VzYi9yODE1Mi5jLTEwMzAwLVxcdHNldF9ldGhlcm5ldF9hZGRyKHRwLCBmYWxzZSk7XFxuLS1cXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYz0xOTE9c3RhdGljIHZvaWQgdHVzYjEyMTBfY2hnX2RldF9zZXRfc3RhdGUoc3RydWN0IHR1c2IxMjEwICp0dXNiLFxcbi0tXFxuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmMtMTk5LVxcdHR1c2ItXFx1MDAzZWNoZ19kZXRfc3RhdGUgPSBuZXdfc3RhdGU7XFxuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmM6MjAwOlxcdG1vZF9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2dHVzYi1cXHUwMDNlY2hnX2RldF93b3JrLFxcbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jLTIwMS1cXHRcXHRcXHQgbXNlY3NfdG9famlmZmllcyhkZWxheV9tcykpO1xcbi0tXFxuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmM9Mzc2PXN0YXRpYyBpbnQgdHVzYjEyMTBfcHN5X25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXFxuLS1cXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYy0zODItXFx0aWYgKHBzeSAhPSB0dXNiLVxcdTAwM2Vwc3kgXFx1MDAyNlxcdTAwMjYgcHN5LVxcdTAwM2VkZXNjLVxcdTAwM2V0eXBlID09IFBPV0VSX1NVUFBMWV9UWVBFX1VTQilcXG5kcml2ZXJzL3BoeS90aS9waHktdHVzYjEyMTAuYzozODM6XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnR1c2ItXFx1MDAzZWNoZ19kZXRfd29yaywgMCk7XFxuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmMtMzg0LVxcbi0tXFxuZHJpdmVycy9waHkvdGkvcGh5LXR1c2IxMjEwLmM9NDMyPXN0YXRpYyB2b2lkIHR1c2IxMjEwX3Byb2JlX2NoYXJnZXJfZGV0ZWN0KHN0cnVjdCB0dXNiMTIxMCAqdHVzYilcXG4tLVxcbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jLTQ2MC1cXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2dHVzYi1cXHUwMDNlY2hnX2RldF93b3JrLCB0dXNiMTIxMF9jaGdfZGV0X3dvcmspO1xcbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jOjQ2MTpcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2dHVzYi1cXHUwMDNlY2hnX2RldF93b3JrLCAyICogSFopO1xcbmRyaXZlcnMvcGh5L3RpL3BoeS10dXNiMTIxMC5jLTQ2Mi1cXG4tLVxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYz0yMjA9c3RhdGljIHNzaXplX3Qgc3RvcmVfcmVjb25uZWN0X2RlbGF5KHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy0yMzYtXFx0ICAgIHJwb3J0LVxcdTAwM2VzdGF0ZSAhPSBTUlBfUlBPUlRfUlVOTklORykge1xcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYzoyMzc6XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnJwb3J0LVxcdTAwM2VyZWNvbm5lY3Rfd29yayxcXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmMtMjM4LVxcdFxcdFxcdFxcdCAgIGRlbGF5ICogSFopO1xcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jPTM3OD1zdGF0aWMgdm9pZCBzcnBfcmVjb25uZWN0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTM5Mi1cXHRcXHRpZiAoZGVsYXkgXFx1MDAzZSAwKVxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYzozOTM6XFx0XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmMtMzk0LVxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZycG9ydC1cXHUwMDNlcmVjb25uZWN0X3dvcmssIGRlbGF5ICogSFopO1xcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jPTQ2MT1zdGF0aWMgdm9pZCBfX3NycF9zdGFydF90bF9mYWlsX3RpbWVycyhzdHJ1Y3Qgc3JwX3Jwb3J0ICpycG9ydClcXG4tLVxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy00NzYtXFx0aWYgKGRlbGF5IFxcdTAwM2UgMClcXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmM6NDc3OlxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZycG9ydC1cXHUwMDNlcmVjb25uZWN0X3dvcmssXFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTQ3OC1cXHRcXHRcXHRcXHQgICAxVUwgKiBkZWxheSAqIEhaKTtcXG4tLVxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy00ODQtXFx0XFx0aWYgKGZhc3RfaW9fZmFpbF90bW8gXFx1MDAzZT0gMClcXG5kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmM6NDg1OlxcdFxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTQ4Ni1cXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2cnBvcnQtXFx1MDAzZWZhc3RfaW9fZmFpbF93b3JrLFxcbi0tXFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jLTQ4OC1cXHRcXHRpZiAoZGV2X2xvc3NfdG1vIFxcdTAwM2U9IDApXFxuZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jOjQ4OTpcXHRcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLFxcbmRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAuYy00OTAtXFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNnJwb3J0LVxcdTAwM2VkZXZfbG9zc193b3JrLFxcbi0tXFxuZnMvZnVzZS9kYXguYz0xMDg9X19raWNrX2RtYXBfZnJlZV93b3JrZXIoc3RydWN0IGZ1c2VfY29ubl9kYXggKmZjZCwgdW5zaWduZWQgbG9uZyBkZWxheV9tcylcXG4tLVxcbmZzL2Z1c2UvZGF4LmMtMTE1LVxcdGlmIChmY2QtXFx1MDAzZW5yX2ZyZWVfcmFuZ2VzIFxcdTAwM2MgZnJlZV90aHJlc2hvbGQpXFxuZnMvZnVzZS9kYXguYzoxMTY6XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNmZjZC1cXHUwMDNlZnJlZV93b3JrLFxcbmZzL2Z1c2UvZGF4LmMtMTE3LVxcdFxcdFxcdFxcdCAgIG1zZWNzX3RvX2ppZmZpZXMoZGVsYXlfbXMpKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmg9NDE4PWVudW0gd3FfY29uc3RzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgtNDQ0LSAqXFxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaDo0NDU6ICogc3lzdGVtX2RmbF9sb25nX3dxIGlzIHNpbWlsYXIgdG8gc3lzdGVtX2RmbF93cSBidXQgaXQgbWF5IGhvc3QgbG9uZyBydW5uaW5nXFxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaC00NDYtICogd29ya3MuXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oPTQ3NT1leHRlcm4gc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnN5c3RlbV9iaF9oaWdocHJpX3dxO1xcbmluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmg6NDc2OmV4dGVybiBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqc3lzdGVtX2RmbF9sb25nX3dxO1xcbmluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgtNDc3LVxcbi0tXFxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaD03OTY9ZXh0ZXJuIHZvaWQgX193YXJuX2ZsdXNoaW5nX3N5c3RlbXdpZGVfd3Eodm9pZClcXG4tLVxcbmluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgtODE1LVxcdCAgICAgX3dxID09IHN5c3RlbV9sb25nX3dxKSB8fFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oOjgxNjpcXHQgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKF93cSA9PSBzeXN0ZW1fZGZsX2xvbmdfd3EpIFxcdTAwMjZcXHUwMDI2XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmg6ODE3OlxcdCAgICAgX3dxID09IHN5c3RlbV9kZmxfbG9uZ193cSkgfHxcXHRcXHRcXHRcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC93b3JrcXVldWUuaC04MTgtXFx0ICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcChfd3EgPT0gc3lzdGVtX2RmbF93cSkgXFx1MDAyNlxcdTAwMjZcXHRcXHRcXFxcXFxuLS1cXG5rZXJuZWwvd29ya3F1ZXVlLmM9NTQ1PUVYUE9SVF9TWU1CT0xfR1BMKHN5c3RlbV9iaF9oaWdocHJpX3dxKTtcXG5rZXJuZWwvd29ya3F1ZXVlLmM6NTQ2OnN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpzeXN0ZW1fZGZsX2xvbmdfd3EgX19yb19hZnRlcl9pbml0O1xcbmtlcm5lbC93b3JrcXVldWUuYzo1NDc6RVhQT1JUX1NZTUJPTF9HUEwoc3lzdGVtX2RmbF9sb25nX3dxKTtcXG5rZXJuZWwvd29ya3F1ZXVlLmMtNTQ4LVxcbi0tXFxua2VybmVsL3dvcmtxdWV1ZS5jPTc5NzE9dm9pZCBfX2luaXQgd29ya3F1ZXVlX2luaXRfZWFybHkodm9pZClcXG4tLVxcbmtlcm5lbC93b3JrcXVldWUuYy04MDcwLVxcdFxcdFxcdFxcdFxcdCAgICAgICBXUV9CSCB8IFdRX0hJR0hQUkkgfCBXUV9QRVJDUFUsIDApO1xcbmtlcm5lbC93b3JrcXVldWUuYzo4MDcxOlxcdHN5c3RlbV9kZmxfbG9uZ193cSA9IGFsbG9jX3dvcmtxdWV1ZShcXFwiZXZlbnRzX2RmbF9sb25nXFxcIiwgV1FfVU5CT1VORCwgV1FfTUFYX0FDVElWRSk7XFxua2VybmVsL3dvcmtxdWV1ZS5jLTgwNzItXFx0QlVHX09OKCFzeXN0ZW1fd3EgfHwgIXN5c3RlbV9wZXJjcHVfd3F8fCAhc3lzdGVtX2hpZ2hwcmlfd3EgfHwgIXN5c3RlbV9sb25nX3dxIHx8XFxuLS1cXG5rZXJuZWwvd29ya3F1ZXVlLmMtODA3NS1cXHQgICAgICAgIXN5c3RlbV9mcmVlemFibGVfcG93ZXJfZWZmaWNpZW50X3dxIHx8XFxua2VybmVsL3dvcmtxdWV1ZS5jOjgwNzY6XFx0ICAgICAgICFzeXN0ZW1fYmhfd3EgfHwgIXN5c3RlbV9iaF9oaWdocHJpX3dxIHx8ICFzeXN0ZW1fZGZsX2xvbmdfd3EpO1xcbmtlcm5lbC93b3JrcXVldWUuYy04MDc3LX1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MjQzPXN0YXRpYyBpbmxpbmUgaW50IGlwX3ZzX2Nvbm5faGFzaChzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTI4Ny1cXHQgICAgIXRlc3RfYW5kX3NldF9iaXQoSVBfVlNfV09SS19DT05OX1JFU0laRSwgXFx1MDAyNmlwdnMtXFx1MDAzZXdvcmtfZmxhZ3MpKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6Mjg4OlxcdFxcdG1vZF9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2aXB2cy1cXHUwMDNlY29ubl9yZXNpemVfd29yaywgMCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0yODktXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTgwMD1zdGF0aWMgdm9pZCBjb25uX3Jlc2l6ZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy05MTgtXFx0LyogTW9uaXRvciBpZiB3ZSBuZWVkIHRvIHNocmluayB0YWJsZSAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6OTE5OlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZpcHZzLVxcdTAwM2Vjb25uX3Jlc2l6ZV93b3JrLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtOTIwLVxcdFxcdFxcdCAgIG1vcmVfd29yayA/IDEgOiAyICogSFopO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTY3MD1zdGF0aWMgdm9pZCBzdmNfcmVzaXplX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtODIzLVxcdFxcdHJldHVybjtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6ODI0OlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZpcHZzLVxcdTAwM2VzdmNfcmVzaXplX3dvcmssIDEpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy04MjUtXFx0cmV0dXJuO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTE3MDk9aXBfdnNfYWRkX3NlcnZpY2Uoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBpcF92c19zZXJ2aWNlX3VzZXJfa2VybiAqdSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xODcxLVxcdGlmIChncm93IFxcdTAwMjZcXHUwMDI2ICF0ZXN0X2FuZF9zZXRfYml0KElQX1ZTX1dPUktfU1ZDX1JFU0laRSwgXFx1MDAyNmlwdnMtXFx1MDAzZXdvcmtfZmxhZ3MpKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxODcyOlxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZpcHZzLVxcdTAwM2VzdmNfcmVzaXplX3dvcmssXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE4NzMtXFx0XFx0XFx0XFx0ICAgMSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MjA4Nj1zdGF0aWMgaW50IGlwX3ZzX2RlbF9zZXJ2aWNlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjEyNy1cXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2aXB2cy1cXHUwMDNld29ya19mbGFncykpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjIxMjg6XFx0XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjEyOS1cXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2aXB2cy1cXHUwMDNlc3ZjX3Jlc2l6ZV93b3JrLCAxKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0yNTg5PXN0YXRpYyBpbnQgaXB2c19wcm9jX2Nvbm5fbGZhY3Rvcihjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50IHdyaXRlLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTI2MDgtXFx0XFx0XFx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihpcHZzLVxcdTAwM2Vjb25uX3RhYikpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjI2MDk6XFx0XFx0XFx0XFx0bW9kX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTI2MTAtXFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZpcHZzLVxcdTAwM2Vjb25uX3Jlc2l6ZV93b3JrLCAwKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0yNjE2PXN0YXRpYyBpbnQgaXB2c19wcm9jX3N2Y19sZmFjdG9yKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBpbnQgd3JpdGUsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjY0MC1cXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2aXB2cy1cXHUwMDNld29ya19mbGFncykpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjI2NDE6XFx0XFx0XFx0XFx0bW9kX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTI2NDItXFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZpcHZzLVxcdTAwM2VzdmNfcmVzaXplX3dvcmssIDApO1xcbi0tXFxubmV0L3N1bnJwYy94cHJ0cmRtYS90cmFuc3BvcnQuYz00ODA9eHBydF9yZG1hX2Nvbm5lY3Qoc3RydWN0IHJwY194cHJ0ICp4cHJ0LCBzdHJ1Y3QgcnBjX3Rhc2sgKnRhc2spXFxuLS1cXG5uZXQvc3VucnBjL3hwcnRyZG1hL3RyYW5zcG9ydC5jLTQ5My1cXHR0cmFjZV94cHJ0cmRtYV9vcF9jb25uZWN0KHJfeHBydCwgZGVsYXkpO1xcbm5ldC9zdW5ycGMveHBydHJkbWEvdHJhbnNwb3J0LmM6NDk0OlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZyX3hwcnQtXFx1MDAzZXJ4X2Nvbm5lY3Rfd29ya2VyLFxcbm5ldC9zdW5ycGMveHBydHJkbWEvdHJhbnNwb3J0LmMtNDk1LVxcdFxcdFxcdCAgIGRlbGF5KTtcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvY3M0Mmw0My1qYWNrLmM9Nzk3PWlycXJldHVybl90IGNzNDJsNDNfdGlwX3NlbnNlKGludCBpcnEsIHZvaWQgKmRhdGEpXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL2NzNDJsNDMtamFjay5jLTgwOC1cXG5zb3VuZC9zb2MvY29kZWNzL2NzNDJsNDMtamFjay5jOjgwOTpcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2cHJpdi1cXHUwMDNldGlwX3NlbnNlX3dvcmssXFxuc291bmQvc29jL2NvZGVjcy9jczQybDQzLWphY2suYy04MTAtXFx0XFx0XFx0ICAgbXNlY3NfdG9famlmZmllcyhkYl9kZWxheSkpO1xcbi0tXFxuc291bmQvc29jL2NvZGVjcy9jczQybDQzLWphY2suYz05MDY9aW50IGNzNDJsNDNfamFja19wdXQoc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9jczQybDQzLWphY2suYy05MzUtXFx0aWYgKCFvdmVycmlkZSkge1xcbnNvdW5kL3NvYy9jb2RlY3MvY3M0Mmw0My1qYWNrLmM6OTM2OlxcdFxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZwcml2LVxcdTAwM2V0aXBfc2Vuc2Vfd29yayxcXG5zb3VuZC9zb2MvY29kZWNzL2NzNDJsNDMtamFjay5jLTkzNy1cXHRcXHRcXHRcXHQgICAwKTtcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM9MjMxND1zdGF0aWMgdm9pZCBydDU2NDBfamFja193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmMtMjM5OS1cXHRcXHQgKi9cXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jOjI0MDA6XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnJ0NTY0MC1cXHUwMDNlamFja193b3JrLCAwKTtcXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI0MDEtXFx0fVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYz0yNDA0PXN0YXRpYyBpcnFyZXR1cm5fdCBydDU2NDBfaXJxKGludCBpcnEsIHZvaWQgKmRhdGEpXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI0MTItXFx0aWYgKHJ0NTY0MC1cXHUwMDNlamFjaylcXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jOjI0MTM6XFx0XFx0bW9kX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZydDU2NDAtXFx1MDAzZWphY2tfd29yayxcXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI0MTQtXFx0XFx0XFx0XFx0IGRlbGF5KTtcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM9MjQxOT1zdGF0aWMgaXJxcmV0dXJuX3QgcnQ1NjQwX2pkX2dwaW9faXJxKGludCBpcnEsIHZvaWQgKmRhdGEpXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI0MjItXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYzoyNDIzOlxcdHF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFxcdTAwMjZydDU2NDAtXFx1MDAzZWphY2tfd29yayxcXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI0MjQtXFx0XFx0XFx0ICAgbXNlY3NfdG9famlmZmllcyhKQUNLX1NFVFRMRV9USU1FKSk7XFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jPTI0OTU9c3RhdGljIHZvaWQgcnQ1NjQwX2VuYWJsZV9qYWNrX2RldGVjdChzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCxcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmMtMjU4NC1cXHQvKiBzeW5jIGluaXRpYWwgamFjayBzdGF0ZSAqL1xcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM6MjU4NTpcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2cnQ1NjQwLVxcdTAwM2VqYWNrX3dvcmssIDApO1xcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmMtMjU4Ni19XFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jPTI1OTQ9c3RhdGljIHZvaWQgcnQ1NjQwX2VuYWJsZV9oZGFfamFja19kZXRlY3QoXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI2MzctXFx0Lyogc3luYyBpbml0aWFsIGphY2sgc3RhdGUgKi9cXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jOjI2Mzg6XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9kZmxfbG9uZ193cSwgXFx1MDAyNnJ0NTY0MC1cXHUwMDNlamFja193b3JrLCAwKTtcXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jLTI2MzktXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jPTI4MjY9c3RhdGljIGludCBydDU2NDBfcmVzdW1lKHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50KVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYy0yODY1LVxcdFxcdGVuYWJsZV9pcnEocnQ1NjQwLVxcdTAwM2VpcnEpO1xcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmM6Mjg2NjpcXHRcXHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2cnQ1NjQwLVxcdTAwM2VqYWNrX3dvcmssIDApO1xcbnNvdW5kL3NvYy9jb2RlY3MvcnQ1NjQwLmMtMjg2Ny1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE0OjE0OjUzLjc0OTg4NDQ1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODA3MDM2NzkyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aCBGdXp6aW5nIFRoaXMgUGF0Y2g/KipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBzd2l0Y2hpbmcgb3V0IGBzeXN0ZW1fbG9uZ193cWAgZm9yIGBzeXN0ZW1fZGZsX2xvbmdfd3FgIGluIGEgYnVuY2ggb2YgZHJpdmVycy4gUmlnaHQgYXdheSwgbXkgZXhwZXJ0IGJyYWluIGtpY2tzIGluIOKAkyBpcyB0aGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2U/IEl0ICppcyosIGl0J3MgY2hhbmdpbmcgdGhlIHdvcmtxdWV1ZSBiZWluZyB1c2VkLiBOb3csIHRoZSBxdWVzdGlvbiBpcywgaXMgaXQgKndvcnRoKiBmdXp6aW5nPyBJIG1lYW4sIHRoZSBwcm9tcHQgc2F5cyBub3QgdG8gYm90aGVyIGlmIGl0J3MganVzdCBkb2NzLCBjb21tZW50cywgbG9nZ2luZywgb3IgdHJpdmlhbCBjb25zdGFudCBjaGFuZ2VzLiBDaGFuZ2luZyB0aGUgd29ya3F1ZXVlIGRlZmluaXRlbHkgKmlzbid0KiB0cml2aWFsLlxuXG5Pa2F5LCBzbyBjaGFuZ2luZyB0aGUgd29ya3F1ZXVlICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZSwgYnV0IGRvZXMgaXQgcmVhbGx5IGludHJvZHVjZSBuZXcgbG9naWMgdGhhdOKAmXMgcmlwZSBmb3IgZnV6emluZz8gSXQganVzdCBjaGFuZ2VzICp3aGljaCogdGhyZWFkIHJ1bnMgdGhlIHdvcmsuIEJ1dCB3YWl0ISBJZiBpdCdzIGZ1bmN0aW9uYWwsIHRoZSBwcm9tcHQgc3VnZ2VzdHMgSSBzaG91bGQgc2F5IFdvcnRoRnV6emluZz10cnVlLlxuXG5CdXQgd2hhdCBmdW5jdGlvbnMgZG8gSSBjYXJlIGFib3V0IGZvY3VzaW5nIG9uPyBMb29raW5nIGF0IHRoZSBjb2RlLCBpdOKAmXMgZ29pbmcgdG8gYmUgdGhlc2Ugd29yayBmdW5jdGlvbnM6IGBfX2libXZuaWNfcmVzZXRgLCBgaWJtdm5pY19yZXNldGAsIGBlbWFjX25kb19vcGVuYCwgYGljc3NnX3N0YXRzX3dvcmtfaGFuZGxlcmAsIGBzdGFydF9sb2dpbmAsIGB0Ym5ldF9oYW5kbGVfcGFja2V0YCwgYHRibmV0X2xvZ2luX3dvcmtgLCBgY2hlY2tfY2FycmllcmAsIGBwZWdhc3VzX3Byb2JlYCwgYHBlZ2FzdXNfcmVzdW1lYCwgYHJ0bF9od19waHlfd29ya19mdW5jX3RgLCBgcnRsODE1Ml9yZXNldF9yZXN1bWVgLCBgcnRsODE1Ml9wcm9iZV9vbmNlYC5cblxuSGFuZyBvbiwgYHBlZ2FzdXNgIGFuZCBgcjgxNTJgLi4uIHRob3NlIGFyZSBVU0IgbmV0d29yayBkcml2ZXJzLCByaWdodD8gU28sIGxldCdzIGp1c3QgbWFrZSBzdXJlIHRoYXQgYHN5c3RlbV9kZmxfbG9uZ193cWAgaXMgYSAqbmV3KiB3b3JrcXVldWUsIG9yIGlmIGl0J3MganVzdCBhIHJlbmFtZS4gQWgsIGl0IGxvb2tzIGxpa2UgYHN5c3RlbV9kZmxfbG9uZ193cWAgaXMgYSBuZXcgd29ya3F1ZXVlIG9yIGFuIGV4aXN0aW5nIG9uZSwgYW5kIHRoaXMgaXMgYWJvdXQgcmVwbGFjaW5nIGBzeXN0ZW1fbG9uZ193cWAgd2l0aCBgc3lzdGVtX2RmbF9sb25nX3dxYCB0byBhdm9pZCBpc3N1ZXMgd2l0aCBgc3lzdGVtX2xvbmdfd3FgLlxuXG5TbywgKmlzKiB0aGlzIHdvcnRoIGZ1enppbmc/IFllcyEgSXQncyBhIGZ1bmN0aW9uYWwga2VybmVsIGNoYW5nZS4gTm93IEkgbmVlZCB0byBleHRyYWN0IHRoZSBjb25maWdzIGZvciBgcGVnYXN1c2AgYW5kIGByODE1MmAgdG8gZ2V0IHRoaW5ncyByb2xsaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjU3MiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxNDoxNTowMS44MjAyNTUxNjRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAzMjg4MDA2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX1BFR0FTVVNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MzQ9Y29uZmlnIFVTQl9LQVdFVEhcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTcyLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjczOmNvbmZpZyBVU0JfUEVHQVNVU1xcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTc0LVxcdHRyaXN0YXRlIFxcXCJVU0IgUGVnYXN1cy9QZWdhc3VzLUlJIGJhc2VkIGV0aGVybmV0IGRldmljZSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxNDoxNTowNi44NTMxNDQ5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcyMjEyMTc3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpczpcblxuKipBbmFseXppbmcgdGhlIGBVU0JfUlRMODE1MmAgTW9kdWxlKipcblxuQWxyaWdodCwgdGhlIG9iamVjdGl2ZSBoZXJlIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlIGBVU0JfUlRMODE1MmAuIE15IGV4cGVydGlzZSBsZWFucyB0b3dhcmRzIG5ldHdvcmtpbmcsIGVtYmVkZGVkIHN5c3RlbXMsIGFuZCBwb3RlbnRpYWxseSBoYXJkd2FyZSBpbnRlcmFjdGlvbnMsIHNvIGltbWVkaWF0ZWx5LCBteSBtaW5kIGp1bXBzIHRvIGEgZmV3IHRoaW5ncy4gRmlyc3QsIHRoaXMgbGlrZWx5IHJlbGF0ZXMgdG8gYSBVU0ItdG8tRXRoZXJuZXQgYWRhcHRlciwgc3BlY2lmaWNhbGx5IG9uZSB1c2luZyBhIFJlYWx0ZWsgUlRMODE1MiBjaGlwc2V0LCBnaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24uIEknZCBuZWVkIHRvIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgYXNwZWN0cy5cblxuKiAgICoqRHJpdmVyIEltcGxlbWVudGF0aW9uOioqIElzIHRoaXMgYSB1c2VyLXNwYWNlIG9yIGtlcm5lbC1zcGFjZSBtb2R1bGU/IEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgZHJpdmVyIGZvciBhIHNwZWNpZmljIG9wZXJhdGluZyBzeXN0ZW0sIGxpa2UgTGludXgsIFdpbmRvd3MsIG9yIHNvbWV0aGluZyBtb3JlIGVtYmVkZGVkPyBUaGUgZm9jdXMgd2lsbCBzaGlmdCBkZXBlbmRpbmcgb24gdGhpcy5cblxuKiAgICoqVVNCIFByb3RvY29sOioqIEknbGwgdGhpbmsgYWJvdXQgdGhlIFVTQiBwcm90b2NvbCBpdHNlbGYuIElzIHRoZSBkcml2ZXIgaGFuZGxpbmcgYnVsayB0cmFuc2ZlcnMsIGludGVycnVwdCB0cmFuc2ZlcnMsIG9yIGNvbnRyb2wgdHJhbnNmZXJzPyBUaGUgc3BlY2lmaWMgdHJhbnNmZXIgdHlwZXMgd2lsbCBpbXBhY3QgcGVyZm9ybWFuY2UgYW5kIGhvdyB0aGUgZHJpdmVyIG1hbmFnZXMgZGF0YSBmbG93LiBJcyBpdCBVU0IgMi4wIG9yIDMuMD8gVGhpcyB3aWxsIGluZmx1ZW5jZSBzcGVlZHMgYW5kIGZlYXR1cmVzLlxuXG4qICAgKipOZXR3b3JrIFN0YWNrIEludGVncmF0aW9uOioqIEhvdyBkb2VzIHRoaXMgbW9kdWxlIGludGVyYWN0IHdpdGggdGhlIG5ldHdvcmsgc3RhY2sgKGUuZy4sIGluIHRoZSBjYXNlIG9mIExpbnV4LCB3aXRoIHRoZSBgbmV0ZGV2YCBBUEkpPyBEb2VzIGl0IHByZXNlbnQgaXRzZWxmIGFzIGEgc3RhbmRhcmQgRXRoZXJuZXQgaW50ZXJmYWNlPyBBcmUgdGhlcmUgYW55IGN1c3RvbSBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycz8gQW55IG5vbi1zdGFuZGFyZCBmZWF0dXJlcz9cblxuKiAgICoqQ2hpcHNldC1TcGVjaWZpYyBEZXRhaWxzOioqIFRoZSBSVEw4MTUyIGlzIGEga25vd24gY2hpcCwgc28gSSdsbCB3YW50IHRvIHF1aWNrbHkgY2hlY2sgZm9yIGFueSBrbm93biBpc3N1ZXMgd2l0aCB0aGF0IGRldmljZS4gQXJlIHRoZXJlIGFueSBoYXJkd2FyZSBsaW1pdGF0aW9ucyBvciBkcml2ZXItcmVsYXRlZCBidWdzPyBBcmUgdGhlcmUgc3BlY2lmaWMgcG93ZXIgbWFuYWdlbWVudCBjb25zaWRlcmF0aW9ucz8gQW55IHZlbmRvci1zcGVjaWZpYyBxdWlya3MgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/XG5cbiogICAqKkVycm9yIEhhbmRsaW5nOioqIFdoYXQga2luZCBvZiBlcnJvciBoYW5kbGluZyBpcyBpbXBsZW1lbnRlZD8gSG93IGRvZXMgaXQgZGVhbCB3aXRoIFVTQiBlcnJvcnMsIG5ldHdvcmsgdHJhbnNtaXNzaW9uIGVycm9ycywgYW5kIHBvdGVudGlhbCBoYXJkd2FyZSBmYWlsdXJlcz8gSXMgdGhlcmUgYXBwcm9wcmlhdGUgcmVwb3J0aW5nIG9yIHJlY292ZXJ5IG1lY2hhbmlzbXM/XG5cbkVzc2VudGlhbGx5LCBJIHdhbnQgdG8gZm9ybSBhIG1lbnRhbCBtb2RlbCBvZiBob3cgdGhpcyBtb2R1bGUgaW50ZXJmYWNlcyB3aXRoIHRoZSBoYXJkd2FyZSwgaW50ZXJhY3RzIHdpdGggdGhlIG9wZXJhdGluZyBzeXN0ZW0gKG9yIGJhcmUtbWV0YWwgc3lzdGVtKSwgYW5kIHByb3ZpZGVzIG5ldHdvcmsgY29ubmVjdGl2aXR5LiBJJ2xsIG5lZWQgdG8ga25vdyB3aGV0aGVyIEknbSBsb29raW5nIGF0IHNvdXJjZSBjb2RlLCBkb2N1bWVudGF0aW9uLCBvciBzaW1wbHkgYSBuYW1lLCBiZWNhdXNlIG15IGFwcHJvYWNoIHRvIHVuZGVyc3RhbmRpbmcgd2lsbCB2YXJ5IGJhc2VkIG9uIHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNzA3LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTQ6MTU6MTIuNTc1MjcwMTE0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNDY5MjQzNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9SVEw4MTUyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTg4PWNvbmZpZyBVU0JfUlRMODE1MFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctOTgtXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6OTk6Y29uZmlnIFVTQl9SVEw4MTUyXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTAwLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFJUTDgxNTIvUlRMODE1MyBCYXNlZCBVU0IgRXRoZXJuZXQgQWRhcHRlcnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE0OjE1OjE2LjcyMjIwNDU4MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NjE4Nzk2MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IE5ldHdvcmsgVmFyaWFibGUgSW5zcGVjdGlvbioqXG5cbkFscmlnaHQsIHRoZSBmaXJzdCB0aGluZyBJJ20gZG9pbmcgaXMgemVyb2luZyBpbiBvbiBgVEhVTkRFUkJPTFRfTkVUYC4gVGhhdCdzIHRoZSBrZXkgdmFyaWFibGUgb2YgaW50ZXJlc3QgaGVyZS4gR2l2ZW4gdGhhdCBJJ20gZGVhbGluZyB3aXRoIFRodW5kZXJib2x0LCBpdCdzIGhpZ2hseSBsaWtlbHkgdGhpcyB2YXJpYWJsZSBob2xkcyBjcnVjaWFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBuZXR3b3JrIGNvbmZpZ3VyYXRpb24sIGRldmljZSBzdGF0dXMsIG9yIHBlcmhhcHMgZXZlbiB0aGUgbGluaydzIG9wZXJhdGlvbmFsIHBhcmFtZXRlcnMuIEkgaW1tZWRpYXRlbHkgd2FudCB0byB1bmRlcnN0YW5kIGl0cyBzY29wZSBhbmQgY29udGVudC4gVGhpcyBjb3VsZCBiZSBhbnl0aGluZyBmcm9tIHRoZSBJUCBhZGRyZXNzIGFzc2lnbm1lbnRzIGFzc29jaWF0ZWQgd2l0aCBUaHVuZGVyYm9sdCBkZXZpY2VzLCB0byB3aGV0aGVyIGEgVGh1bmRlcmJvbHQgY29udHJvbGxlciBoYXMgaW5pdGlhdGVkLiBJIGhhdmUgdG8gc2VlIHdoYXQgdGhpcyB2YXJpYWJsZSBjb250YWlucy4gSXQgaXMgdGhlIGJlZ2lubmluZyBvZiBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDMzMiwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE0OjE1OjIwLjQ4NDA4ODU3MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcyNDIwMDAwOCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFRIVU5ERVJCT0xUX05FVFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTQ6MTU6MjUuMjA4MzE0MzlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM4NDg4MTA1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBhIFRodW5kZXJib2x0IElzc3VlIGluIHRoZSBLZXJuZWwqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkndmUgZ290IGEgVGh1bmRlcmJvbHQgaXNzdWUgdG8gbG9vayBpbnRvLCBhbmQgdGhlIGZpcnN0IHBsYWNlIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gaXMgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMuIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoZSBgZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvS2NvbmZpZ2AgZmlsZSwgb3Igc29tZXRoaW5nIGFuYWxvZ291cywgaXMgbGlrZWx5IHdoZXJlIEknbGwgZmluZCB0aGUgcHJpbWFyeSBzZXR0aW5ncyBhbmQgZGVwZW5kZW5jaWVzIGZvciB0aGUgVGh1bmRlcmJvbHQgbmV0d29yayBkcml2ZXIuIFRoYXQncyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGNvbmZpZ3VyZWQgYW5kIGlmIHRoZXJlIG1pZ2h0IGJlIGEgc2ltcGxlIGNvbmZpZyBvcHRpb24gdGhhdCdzIG1pc3NldCBvciBjYXVzaW5nIHRoZSB0cm91YmxlLiBNaWdodCBhcyB3ZWxsIHN0YXJ0IHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDUzMiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE0OjE1OjI5LjU5MzIwMTMzNFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDExNjA1Mjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRodW5kZXJib2x0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz01OTQ9Y29uZmlnIEZVSklUU1VfRVNcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjAwLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6NjAxOnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwMi1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxNDoxNTozMC4wMDQ4NDE1MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTg5MDU0MDIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgY29kZTpcblxuKipDaGVja2luZyBUaHVuZGVyYm9sdCBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgVGh1bmRlcmJvbHQgbmV0d29yayBkcml2ZXIgY29uZmlndXJhdGlvbi4gTGV0J3Mgc3RhcnQgYnkgbG9va2luZyBhdCBgZHJpdmVycy9uZXQvdGh1bmRlcmJvbHQvS2NvbmZpZ2AuIFRoaXMgaXMgdGhlIHN0YW5kYXJkIHByb2NlZHVyZSDigJMgdGhlIEtjb25maWcgZmlsZSB3aWxsIGRlZmluZSBhbGwgdGhlIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgZHJpdmVyLCBob3cgdGhleSdyZSBzdHJ1Y3R1cmVkLCBhbnkgZGVwZW5kZW5jaWVzLCBhbmQgaG9wZWZ1bGx5IHByb3ZpZGUgc29tZSBoZWxwZnVsIGRvY3VtZW50YXRpb24uIEl0J3MgdGhlIGNlbnRyYWwgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZHJpdmVyIGlzIGNvbmZpZ3VyZWQsIGVuYWJsZWQsIG9yIGRpc2FibGVkLiBJIG5lZWQgdG8gZ2V0IGEgcXVpY2sgb3ZlcnZpZXcgb2Ygd2hhdCBjb25maWd1cmF0aW9ucyBhcmUgYXZhaWxhYmxlIHNvIHRoYXQgSSBjYW4gZmlndXJlIG91dCB3aGF0IGlzIGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDgxNiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE0OjE1OjM0LjE5MzkwMTU0MloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjcxMzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3RodW5kZXJib2x0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgVVNCNF9ORVRcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJOZXR3b3JraW5nIG92ZXIgVVNCNCBhbmQgVGh1bmRlcmJvbHQgY2FibGVzXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBVU0I0IFxcdTAwMjZcXHUwMDI2IElORVRcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgU2VsZWN0IHRoaXMgaWYgeW91IHdhbnQgdG8gY3JlYXRlIG5ldHdvcmsgYmV0d2VlbiB0d28gY29tcHV0ZXJzXFxuICAgNzpcXHRcXHQgIG92ZXIgYSBVU0I0IGFuZCBUaHVuZGVyYm9sdCBjYWJsZXMuIFRoZSBkcml2ZXIgc3VwcG9ydHMgQXBwbGVcXG4gICA4OlxcdFxcdCAgVGh1bmRlcmJvbHRJUCBwcm90b2NvbCBhbmQgYWxsb3dzIGNvbW11bmljYXRpb24gd2l0aCBhbnkgaG9zdFxcbiAgIDk6XFx0XFx0ICBzdXBwb3J0aW5nIHRoZSBzYW1lIHByb3RvY29sIGluY2x1ZGluZyBXaW5kb3dzIGFuZCBtYWNPUy5cXG4gIDEwOlxcdFxcbiAgMTE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlIHdpbGwgYmVcXG4gIDEyOlxcdFxcdCAgY2FsbGVkIHRodW5kZXJib2x0X25ldC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTQ6MTU6MzQuMTk2MTc3ODAxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NTQzNTYyOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKk5hdmlnYXRpbmcgdGhlIE5ldHdvcmsgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gd2UncmUgdGFsa2luZyBhYm91dCBuZXR3b3JraW5nLCBzcGVjaWZpY2FsbHkgVVNCNC4gVGhlIGNsdWUgaGVyZSBpcyBgVVNCNF9ORVRgLCBzbyB0aGF0IHBvaW50cyBtZSBkaXJlY3RseSB0byB0aGUgY29uZmlndXJhdGlvbi4gTXkgZmlyc3QgbW92ZSB3aWxsIGJlIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZXMuIExldCdzIHNlZS4uLiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgSSBleHBlY3QgdG8gZmluZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBzZXR0aW5ncyByZWxhdGVkIHRvIHRoaXMgVVNCNCBuZXR3b3JrIGRldmljZSwgc2luY2UgXCJpYm1cIiBzZWVtcyBhIGJpdCB2YWd1ZSBhcyBhIHZlbmRvciwgYW5kIGxpa2VseSBlbmNvbXBhc3NlcyBtb3JlIHRoYW4gb25lIGdlbmVyYXRpb24gb2YgZGV2aWNlIGRyaXZlci4gVGhhdCBgS2NvbmZpZ2AgZmlsZSBpcyBnb2luZyB0byBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhpcyBpcyBhbGwgd2lyZWQgdG9nZXRoZXIuIEkgZXhwZWN0IHRvIGZpbmQgb3V0IGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgaGFyZHdhcmUgcmVxdWlyZW1lbnRzIG9yIHBsYXRmb3JtIGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gdGFrZSBpbnRvIGFjY291bnQuIFRpbWUgdG8gY3JhY2sgdGhhdCBmaWxlIG9wZW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MTg5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxNDoxNTozNy45NTA1MzgzMzRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzM2NTMwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpYm12bmljXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9LY29uZmlnPTQ1PWNvbmZpZyBJQk1WTklDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vS2NvbmZpZy01Mi1cXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGUgd2lsbFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9LY29uZmlnOjUzOlxcdCAgYmUgY2FsbGVkIGlibXZuaWMuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL0tjb25maWctNTQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE0OjE1OjM4LjE3MzkxMjQ4NVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDIwMzcwODc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipJQk1WTklDIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIHRoZSBuYW1lIGBJQk1WTklDYCBwb3BzIGludG8gbXkgaGVhZC4gSW1tZWRpYXRlbHksIG15IGludGVybmFsIHJhZGFyIHBpbmdzIHRoZSBrZXJuZWwgc291cmNlIHRyZWUuIFwiQWxyaWdodCwgbGV0J3Mgc2VlIHdoYXQncyBoYXBwZW5pbmcgd2l0aCB0aGF0IGRyaXZlci5cIiBNeSB0aG91Z2h0IHByb2Nlc3MganVtcHMgZGlyZWN0bHkgdG8gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnYCBmaWxlLiBUaGF0J3MgdXN1YWxseSB0aGUgZ28tdG8gcGxhY2UgZm9yIHZlbmRvci1zcGVjaWZpYyBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9ucywgYW5kIFRJIGlzIGEgbGlrZWx5IGNhbmRpZGF0ZSBmb3IgYSBuZXR3b3JrIGNvbXBvbmVudCBpbnZvbHZlZCB3aXRoIElCTS4gSSdtIGltbWVkaWF0ZWx5IHRyeWluZyB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGBJQk1WTklDYCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZSwgYW5kIHRoYXQgS2NvbmZpZyBmaWxlIHdpbGwgaWxsdW1pbmF0ZSBkZXBlbmRlbmNpZXMsIGJ1aWxkIG9wdGlvbnMsIGFuZCBwb3NzaWJseSBldmVuIHRoZSBvdmVyYWxsIGRlc2lnbiBwaGlsb3NvcGh5IHRoYXQgaW50ZWdyYXRlcyB0aGUgSUJNIGFuZCBUSSBjb21wb25lbnRzIGlmIHRoYXQncyB0aGUgcGF0aC4gSSdtIGVzc2VudGlhbGx5IHJldmVyc2UtZW5naW5lZXJpbmcgdGhlIHRob3VnaHQgcHJvY2VzcyBvZiBob3cgdG8gaW5jbHVkZSBvciBleGNsdWRlIGEgZHJpdmVyIGluIHRoZSBidWlsZCBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTU0NiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE0OjE1OjQyLjU5NDI4OTI4NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU0MTIyMjM5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpY3NzZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxNDoxNTo0Mi43NDg0MjQyNzNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQwNDE5NDM5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gd2hhdCBJJ2QgYmUgZG9pbmc6XG5cbioqSW52ZXN0aWdhdGluZyBQUlUgQ29uZmlndXJhdGlvbiBmb3IgRXRoZXJuZXQgRHJpdmVycyoqXG5cblJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IFBSVSAoUHJvZ3JhbW1hYmxlIFJlYWwtdGltZSBVbml0KSBpbnRlZ3JhdGlvbiB3aXRoaW4gdGhlIEV0aGVybmV0IGRyaXZlcnMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlOiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSBJJ2QgZXhwZWN0IHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIFRJJ3MgRXRoZXJuZXQgZGV2aWNlcywgYW5kIG1vcmUgc3BlY2lmaWNhbGx5LCBob3cgdGhlIFBSVSBtaWdodCBiZSBlbmFibGVkIG9yIHVzZWQuIEl0J3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBzeXN0ZW0gaXMgc2V0IHVwLiBUaGlzIGBLY29uZmlnYCBmaWxlIHNob3VsZCBnaXZlIG1lIHRoZSBiYXNlIGluZm9ybWF0aW9uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXRoZXIgd2UncmUgdGFsa2luZyBhYm91dCBhIGRyaXZlciB1c2luZyB0aGUgUFJVLCBvciBzb21lIHNlcGFyYXRlIGZlYXR1cmUgd2l0aGluIHRoZSBUSSBldGhlcm5ldCBzdWJzeXN0ZW0gdGhhdCBpbnZvbHZlcyB0aGUgUFJVLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTgwOCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE0OjE1OjQ2LjE1MjYyMjUwNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA1NTQwMzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBSVVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9MTY5PWNvbmZpZyBUTEFOXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTE4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjE4Njpjb25maWcgVElfSUNTU0dfUFJVRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoxODc6XFx0dHJpc3RhdGUgXFxcIlRJIEdpZ2FiaXQgUFJVIEV0aGVybmV0IGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTE4OC1cXHRzZWxlY3QgUEhZTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTE5MC1cXHRzZWxlY3QgVElfSzNfQ1BQSV9ERVNDX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjE5MTpcXHRkZXBlbmRzIG9uIFBSVV9SRU1PVEVQUk9DXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0xOTItXFx0ZGVwZW5kcyBvbiBORVRfU1dJVENIREVWXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTE5Ni1cXHRoZWxwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoxOTc6XFx0ICBTdXBwb3J0IGR1YWwgR2lnYWJpdCBFdGhlcm5ldCBwb3J0cyBvdmVyIHRoZSBJQ1NTRyBQUlUgU3Vic3lzdGVtLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTk4LVxcdCAgVGhpcyBzdWJzeXN0ZW0gaXMgYXZhaWxhYmxlIHN0YXJ0aW5nIHdpdGggdGhlIEFNNjUgcGxhdGZvcm0uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0xOTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMDA6XFx0ICBUaGlzIGRyaXZlciByZXF1aXJlcyBmaXJtd2FyZSBiaW5hcmllcyB3aGljaCB3aWxsIHJ1biBvbiB0aGUgUFJVc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjAxLVxcdCAgdG8gc3VwcG9ydCB0aGUgRXRoZXJuZXQgb3BlcmF0aW9uLiBDdXJyZW50bHksIGl0IHN1cHBvcnRzIEV0aGVybmV0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIwMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjIwNDpjb25maWcgVElfSUNTU0dfUFJVRVRIX1NSMVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjA1OlxcdHRyaXN0YXRlIFxcXCJUSSBHaWdhYml0IFBSVSBTUjEuMCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yMDYtXFx0c2VsZWN0IFBIWUxJQlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yMDktXFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjEwOlxcdGRlcGVuZHMgb24gUFJVX1JFTU9URVBST0NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIxMS1cXHRkZXBlbmRzIG9uIE5FVF9TV0lUQ0hERVZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjE0LVxcdGhlbHBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjIxNTpcXHQgIFN1cHBvcnQgZHVhbCBHaWdhYml0IEV0aGVybmV0IHBvcnRzIG92ZXIgdGhlIElDU1NHIFBSVSBTdWJzeXN0ZW0uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yMTYtXFx0ICBUaGlzIHN1YnN5c3RlbSBpcyBhdmFpbGFibGUgb24gdGhlIEFNNjUgU1IxLjAgcGxhdGZvcm0uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMTg6XFx0ICBUaGlzIGRyaXZlciByZXF1aXJlcyBmaXJtd2FyZSBiaW5hcmllcyB3aGljaCB3aWxsIHJ1biBvbiB0aGUgUFJVc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjE5LVxcdCAgdG8gc3VwcG9ydCB0aGUgRXRoZXJuZXQgb3BlcmF0aW9uLiBDdXJyZW50bHksIGl0IHN1cHBvcnRzIEV0aGVybmV0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTIyMj1jb25maWcgVElfSUNTU19JRVBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjIyMzpcXHR0cmlzdGF0ZSBcXFwiVEkgUFJVIElDU1MgSUVQIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIyNC1cXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMjU6XFx0ZGVwZW5kcyBvbiBUSV9QUlVTU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjI2OlxcdGRlZmF1bHQgVElfUFJVU1NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIyNy1cXHRoZWxwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMjg6XFx0ICBUaGlzIGRyaXZlciBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBQUlUtSUNTUyBJbmR1c3RyaWFsIEV0aGVybmV0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMjk6XFx0ICBQZXJpcGhlcmFsIHdpdGhpbiBhIFBSVS1JQ1NTIHN1YnN5c3RlbSBwcmVzZW50IG9uIHZhcmlvdXMgVEkgU29Dcy5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIzMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjM0OmNvbmZpZyBUSV9QUlVFVEhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjIzNTpcXHR0cmlzdGF0ZSBcXFwiVEkgUFJVIEV0aGVybmV0IEVNQUMgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjM2OlxcdGRlcGVuZHMgb24gUFJVX1JFTU9URVBST0NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIzNy1cXHRkZXBlbmRzIG9uIE5FVF9TV0lUQ0hERVZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjQwLVxcdGhlbHBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjI0MTpcXHQgIFNvbWUgVEkgU29DcyBoYXMgUHJvZ3JhbW1hYmxlIFJlYWx0aW1lIFVuaXQgKFBSVSkgY29yZXMgd2hpY2ggY2FuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yNDItXFx0ICBzdXBwb3J0IFNpbmdsZSBvciBEdWFsIEV0aGVybmV0IHBvcnRzIHdpdGggdGhlIGhlbHAgb2YgZmlybXdhcmUgY29kZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjQzOlxcdCAgcnVubmluZyBvbiBQUlUgY29yZXMuIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHJlbW90ZXByb2MgYmFzZWRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjI0NDpcXHQgIGNvbW11bmljYXRpb24gdG8gUFJVIGZpcm13YXJlIHRvIGV4cG9zZSBFdGhlcm5ldCBpbnRlcmZhY2UgdG8gTGludXguXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yNDUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE0OjE1OjQ2LjU1ODE3MTQyNFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTExNDAwNTA2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIFJlZ3Jlc3Npb24gUG9pbnRzIGluIGEgTmV0d29yayBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZm9jdXMgbGFuZHMgb24gdGhlIGNoYW5nZSBpbnZvbHZpbmcgYFRJX0lDU1NHX1BSVUVUSGAgYW5kIGBUSV9JQ1NTR19QUlVFVEhfU1IxYC4gRmlyc3QsIEknbSBjaGVja2luZyB0aGUgY29uZmlndXJhdGlvbnMsIGFuZCBJIHNlZSBgSUJNVk5JQ2AsIGBUSV9JQ1NTR19QUlVFVEhgLCBgVElfSUNTU0dfUFJVRVRIX1NSMWAsIGBVU0I0X05FVGAsIGBVU0JfUEVHQVNVU2AsIGFuZCBgVVNCX1JUTDgxNTJgIGFyZSBhbGwgcmVsZXZhbnQuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSBrZXkgc3ltYm9scyByZWxhdGVkIHRvIHRoaXMuIEkgbWFrZSBhIGxpc3Q6IGBfX2libXZuaWNfcmVzZXRgLCBgaWJtdm5pY19yZXNldGAsIGBlbWFjX25kb19vcGVuYCwgYGljc3NnX3N0YXRzX3dvcmtfaGFuZGxlcmAsIGBzdGFydF9sb2dpbmAsIGB0Ym5ldF9oYW5kbGVfcGFja2V0YCwgYHRibmV0X2xvZ2luX3dvcmtgLCBgY2hlY2tfY2FycmllcmAsIGBwZWdhc3VzX3Byb2JlYCwgYHBlZ2FzdXNfcmVzdW1lYCwgYHJ0bF9od19waHlfd29ya19mdW5jX3RgLCBgcnRsODE1Ml9yZXNldF9yZXN1bWVgLCBhbmQgYHJ0bDgxNTJfcHJvYmVfb25jZWAuXG5cbk5vdywgSSBzdGFydCB0byBjYXRlZ29yaXplIHRoZXNlLiBgY2hlY2tfY2FycmllcmAgaXMgc3RhdGljIGluIGBwZWdhc3VzLmNgLCB3aGljaCBtYWtlcyBpdCBhIGdvb2QgY2FuZGlkYXRlIGZvciBkZWVwZXIgYW5hbHlzaXMsIGFzIGlzIGBydGxfaHdfcGh5X3dvcmtfZnVuY190YCBmcm9tIGByODE1Mi5jYCwgYW5kIGB0Ym5ldF9sb2dpbl93b3JrYCBpbiBgdGh1bmRlcmJvbHQvbWFpbi5jYC4gYGljc3NnX3N0YXRzX3dvcmtfaGFuZGxlcmAgaXMgZXhwb3J0ZWQgaW4gYGljc3NnX3N0YXRzLmNgIGFuZCBpcyBpbXBvcnRhbnQuIFRoZW4sIEkgcmVtZW1iZXIgdG8gY2hlY2sgaWYgYGVtYWNfbmRvX29wZW5gIGlzIGluIGEgaG90IHBhdGgsIGJ1dCBpdCdzIGp1c3QgdGhlIGBuZG9fb3BlbmAgY2FsbGJhY2ssIHNvIGl0J3Mgbm90IGEgcGVyZm9ybWFuY2UgYm90dGxlbmVjay4gYHRibmV0X2hhbmRsZV9wYWNrZXRgIGlzIGEgaG90IHBhdGggKHBhY2tldCByeC90eCksIHNvIEkgc2hvdWxkIGF2b2lkIGl0LiBCdXQsIEkgbmVlZCB0byBrbm93IGFib3V0IGl0LiBUaGUgcmVzdCwgYHN0YXJ0X2xvZ2luYCwgYHRibmV0X2xvZ2luX3dvcmtgLCBgY2hlY2tfY2FycmllcmAsIGBwZWdhc3VzX3Byb2JlYCwgYHBlZ2FzdXNfcmVzdW1lYCwgYHJ0bF9od19waHlfd29ya19mdW5jX3RgLCBgcnRsODE1Ml9yZXNldF9yZXN1bWVgLCBgcnRsODE1Ml9wcm9iZV9vbmNlYCwgYF9faWJtdm5pY19yZXNldGAsIGFuZCBgaWJtdm5pY19yZXNldGAgYXJlbid0IGhvdCBwYXRocywgc28gbXkgZm9jdXMgbmFycm93cy5cblxuSSByZWZpbmUgbXkgbGlzdDogYF9faWJtdm5pY19yZXNldGAsIGBpYm12bmljX3Jlc2V0YCwgYGVtYWNfbmRvX29wZW5gLCBgaWNzc2dfc3RhdHNfd29ya19oYW5kbGVyYCwgYHN0YXJ0X2xvZ2luYCwgYHRibmV0X2xvZ2luX3dvcmtgLCBgY2hlY2tfY2FycmllcmAsIGBwZWdhc3VzX3Byb2JlYCwgYHBlZ2FzdXNfcmVzdW1lYCwgYHJ0bF9od19waHlfd29ya19mdW5jX3RgLCBgcnRsODE1Ml9yZXNldF9yZXN1bWVgLCBgcnRsODE1Ml9wcm9iZV9vbmNlYC5cblxuT2theSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBjaGFuZ2UgaXRzZWxmIGlzIHdlbGwtdW5kZXJzdG9vZC4gSSByZWNhbGwgdGhhdCBgc3lzdGVtX2RmbF9sb25nX3dxYCBpcyBhIHN0YW5kYXJkIHdvcmtxdWV1ZSwgZGVmaW5lZCBpbiBga2VybmVsL3dvcmtxdWV1ZS5jYC4gVGhlIHBhdGNoICpyZXBsYWNlcyogYHN5c3RlbV9sb25nX3dxYCB3aXRoIGBzeXN0ZW1fZGZsX2xvbmdfd3FgLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSwgYmVjYXVzZSB0aGUgZXhlY3V0aW9uIGNvbnRleHQgKHRoZSB3b3JrcXVldWUpIGlzIGFsdGVyZWQuXG5cbkdpdmVuIHRoZSBjaGFuZ2Ugb2YgdGhlIHdvcmtxdWV1ZSwgYW5kIHRoZSBkcml2ZXJzIGludm9sdmVkIC0gYGlibXZuaWNgLCBgaWNzc2dgLCBgdGh1bmRlcmJvbHRgLCBgcGVnYXN1c2AsIGFuZCBgcjgxNTJgIC0gdGhlIG1haW4gY29uY2VybiBpcyB0aGF0IGNoYW5naW5nIHRoZSB3b3JrcXVldWUgY291bGQgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIGRlYWRsb2Nrcy4gU28sIEkgbmVlZCB0byBmdXp6IHRoZSBhZmZlY3RlZCB3b3JrIGZ1bmN0aW9ucywgbG9va2luZyBhdCB0aGVpciB0cmlnZ2VycyBsaWtlIHByb2JlLCBvcGVuLCByZXNldCwgYW5kIGxvZ2luLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSBjb25maXJtIHRoYXQgYFRJX0lDU1NHX1BSVUVUSGAgY292ZXJzIHRoZSByZWxldmFudCBmaWxlczogYGRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jYCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N0YXRzLmNgLlxuXG5NeSBmaW5hbCBsaXN0IG9mIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGlzOiBgSUJNVk5JQ2AsIGBUSV9JQ1NTR19QUlVFVEhgLCBgVVNCNF9ORVRgLCBgVVNCX1BFR0FTVVNgLCBhbmQgYFVTQl9SVEw4MTUyYC5cblxuVGhlIGZ1bmRhbWVudGFsIHJlYXNvbmluZyBoZXJlIGlzIHRoYXQgYnkgc3dpdGNoaW5nIHdvcmtxdWV1ZXMsIEknbSBwb3RlbnRpYWxseSBhbHRlcmluZyB0aGUgY29uY3VycmVuY3kgbW9kZWwgd2l0aGluIHRoZXNlIGRyaXZlcnMuIEkgbmVlZCB0byBiZSAqY2VydGFpbiogdGhlcmUgYXJlIG5vIGludHJvZHVjZWQgY29uY3VycmVuY3kgaXNzdWVzLiBMZXQncyBnZXQgdGhlIGZ1enppbmcgc2V0IHVwIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzI4MywiT3V0cHV0VG9rZW5zIjoyODAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE0OjE2OjAxLjY3MjE4MTU3OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MjQ3ODUwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSUJNVk5JQ1wiLFxuICAgIFwiVElfSUNTU0dfUFJVRVRIXCIsXG4gICAgXCJVU0I0X05FVFwiLFxuICAgIFwiVVNCX1BFR0FTVVNcIixcbiAgICBcIlVTQl9SVEw4MTUyXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19pYm12bmljX3Jlc2V0XCIsXG4gICAgXCJpYm12bmljX3Jlc2V0XCIsXG4gICAgXCJlbWFjX25kb19vcGVuXCIsXG4gICAgXCJpY3NzZ19zdGF0c193b3JrX2hhbmRsZXJcIixcbiAgICBcInN0YXJ0X2xvZ2luXCIsXG4gICAgXCJ0Ym5ldF9sb2dpbl93b3JrXCIsXG4gICAgXCJjaGVja19jYXJyaWVyXCIsXG4gICAgXCJwZWdhc3VzX3Byb2JlXCIsXG4gICAgXCJwZWdhc3VzX3Jlc3VtZVwiLFxuICAgIFwicnRsX2h3X3BoeV93b3JrX2Z1bmNfdFwiLFxuICAgIFwicnRsODE1Ml9yZXNldF9yZXN1bWVcIixcbiAgICBcInJ0bDgxNTJfcHJvYmVfb25jZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIHN5c3RlbV9sb25nX3dxIHdpdGggc3lzdGVtX2RmbF9sb25nX3dxIGZvciBzY2hlZHVsaW5nIGRlbGF5ZWQgd29ya3MgaW4gc2V2ZXJhbCBuZXR3b3JrIGRyaXZlcnMgKGlibXZuaWMsIGljc3NnLCB0aHVuZGVyYm9sdCwgcGVnYXN1cywgcjgxNTIpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IG9mIHRoZXNlIHdvcmtzLCBwb3RlbnRpYWxseSBhZmZlY3RpbmcgY29uY3VycmVuY3kgb3IgZGVhZGxvY2tzLiBGdXp6aW5nIHRoZSBhZmZlY3RlZCB3b3JrIGZ1bmN0aW9ucyBhbmQgdGhlaXIgdHJpZ2dlcnMgKGxpa2UgcHJvYmUsIG9wZW4sIHJlc2V0LCBhbmQgbG9naW4pIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSUJNVk5JQ1wiLFxuICAgIFwiVElfSUNTU0dfUFJVRVRIXCIsXG4gICAgXCJVU0I0X05FVFwiLFxuICAgIFwiVVNCX1BFR0FTVVNcIixcbiAgICBcIlVTQl9SVEw4MTUyXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19pYm12bmljX3Jlc2V0XCIsXG4gICAgXCJpYm12bmljX3Jlc2V0XCIsXG4gICAgXCJlbWFjX25kb19vcGVuXCIsXG4gICAgXCJpY3NzZ19zdGF0c193b3JrX2hhbmRsZXJcIixcbiAgICBcInN0YXJ0X2xvZ2luXCIsXG4gICAgXCJ0Ym5ldF9sb2dpbl93b3JrXCIsXG4gICAgXCJjaGVja19jYXJyaWVyXCIsXG4gICAgXCJwZWdhc3VzX3Byb2JlXCIsXG4gICAgXCJwZWdhc3VzX3Jlc3VtZVwiLFxuICAgIFwicnRsX2h3X3BoeV93b3JrX2Z1bmNfdFwiLFxuICAgIFwicnRsODE1Ml9yZXNldF9yZXN1bWVcIixcbiAgICBcInJ0bDgxNTJfcHJvYmVfb25jZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIHN5c3RlbV9sb25nX3dxIHdpdGggc3lzdGVtX2RmbF9sb25nX3dxIGZvciBzY2hlZHVsaW5nIGRlbGF5ZWQgd29ya3MgaW4gc2V2ZXJhbCBuZXR3b3JrIGRyaXZlcnMgKGlibXZuaWMsIGljc3NnLCB0aHVuZGVyYm9sdCwgcGVnYXN1cywgcjgxNTIpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IG9mIHRoZXNlIHdvcmtzLCBwb3RlbnRpYWxseSBhZmZlY3RpbmcgY29uY3VycmVuY3kgb3IgZGVhZGxvY2tzLiBGdXp6aW5nIHRoZSBhZmZlY3RlZCB3b3JrIGZ1bmN0aW9ucyBhbmQgdGhlaXIgdHJpZ2dlcnMgKGxpa2UgcHJvYmUsIG9wZW4sIHJlc2V0LCBhbmQgbG9naW4pIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflow8z6gt[1] Phase: Succeeded StartedAt: 2026-07-20 14:16:13 +0000 UTC FinishedAt: 2026-07-20 14:16:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8z6gt[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-20 14:16:13 +0000 UTC FinishedAt: 2026-07-20 14:16:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8z6gt[2] Phase: Succeeded StartedAt: 2026-07-20 14:16:13 +0000 UTC FinishedAt: 2026-07-20 16:17:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-20 14:16:13 +0000 UTC FinishedAt: 2026-07-20 16:17:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-20 14:16:13 +0000 UTC FinishedAt: 2026-07-20 14:16:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-20 14:16:13 +0000 UTC FinishedAt: 2026-07-20 14:16:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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-workflow8z6gt/series-workflow8z6gt-convert-artifact-2948896708/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-20 14:16:48 +0000 UTC FinishedAt: 2026-07-20 14:53:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-20 14:16:48 +0000 UTC FinishedAt: 2026-07-20 14:53:51 +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:*6d5f9eda-bc36-4436-b544-981de4e6a006,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-workflow8z6gt/series-workflow8z6gt-convert-artifact-2948896708/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": "ef295bc9-002f-438d-acc0-d4f555303131", "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-workflow8z6gt/series-workflow8z6gt-build-action-2602228482/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-20 14:16:48 +0000 UTC FinishedAt: 2026-07-20 14:53:41 +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:*6d5f9eda-bc36-4436-b544-981de4e6a006,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-workflow8z6gt/series-workflow8z6gt-convert-artifact-2948896708/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": "ef295bc9-002f-438d-acc0-d4f555303131", "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-workflow8z6gt/series-workflow8z6gt-build-action-2602228482/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-20 14:53:51 +0000 UTC FinishedAt: 2026-07-20 14:53:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-20 14:53:51 +0000 UTC FinishedAt: 2026-07-20 14:53:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-20 14:53:51 +0000 UTC FinishedAt: 2026-07-20 14:54:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-20 14:53:51 +0000 UTC FinishedAt: 2026-07-20 14:53:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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-workflow8z6gt/series-workflow8z6gt-convert-artifact-850352451/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-20 14:54:01 +0000 UTC FinishedAt: 2026-07-20 14:56:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-20 14:54:01 +0000 UTC FinishedAt: 2026-07-20 14:56:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ef295bc9-002f-438d-acc0-d4f555303131,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-workflow8z6gt/series-workflow8z6gt-build-action-2602228482/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-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-20 14:56:36 +0000 UTC FinishedAt: 2026-07-20 14:56:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-20 14:56:36 +0000 UTC FinishedAt: 2026-07-20 14:56:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-20 14:56:36 +0000 UTC FinishedAt: 2026-07-20 15:25:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-20 14:56:36 +0000 UTC FinishedAt: 2026-07-20 15:25:54 +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:*6d5f9eda-bc36-4436-b544-981de4e6a006,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-workflow8z6gt/series-workflow8z6gt-convert-artifact-850352451/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": "1e86e3fb-d3b8-4f22-8ca2-fcf1a6114fe3", "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-workflow8z6gt/series-workflow8z6gt-build-action-2205074423/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-20 14:56:36 +0000 UTC FinishedAt: 2026-07-20 15:25:44 +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:*6d5f9eda-bc36-4436-b544-981de4e6a006,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-workflow8z6gt/series-workflow8z6gt-convert-artifact-850352451/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": "1e86e3fb-d3b8-4f22-8ca2-fcf1a6114fe3", "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-workflow8z6gt/series-workflow8z6gt-build-action-2205074423/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-20 15:25:54 +0000 UTC FinishedAt: 2026-07-20 15:25:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-20 15:25:54 +0000 UTC FinishedAt: 2026-07-20 15:25:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-20 15:25:54 +0000 UTC FinishedAt: 2026-07-20 15:27:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-20 15:25:54 +0000 UTC FinishedAt: 2026-07-20 15:27:36 +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:*1e86e3fb-d3b8-4f22-8ca2-fcf1a6114fe3,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-workflow8z6gt/series-workflow8z6gt-build-action-2205074423/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-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-20 15:27:46 +0000 UTC FinishedAt: 2026-07-20 16:17:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-20 15:27:46 +0000 UTC FinishedAt: 2026-07-20 16:17:02 +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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"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:*ef295bc9-002f-438d-acc0-d4f555303131,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1e86e3fb-d3b8-4f22-8ca2-fcf1a6114fe3,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-workflow8z6gt/series-workflow8z6gt-build-action-2602228482/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-workflow8z6gt/series-workflow8z6gt-build-action-2205074423/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-20 15:27:46 +0000 UTC FinishedAt: 2026-07-20 15:27:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-20 15:27:46 +0000 UTC FinishedAt: 2026-07-20 15:27:51 +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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"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-workflow8z6gt/series-workflow8z6gt-convert-artifact-2061761372/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-20 15:27:46 +0000 UTC FinishedAt: 2026-07-20 15:27:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-20 15:27:46 +0000 UTC FinishedAt: 2026-07-20 15:27:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-20 15:27:46 +0000 UTC FinishedAt: 2026-07-20 15:27:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-20 15:27:56 +0000 UTC FinishedAt: 2026-07-20 16:17:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8z6gt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__ibmvnic_reset","ibmvnic_reset","emac_ndo_open","icssg_stats_work_handler","start_login","tbnet_login_work","check_carrier","pegasus_probe","pegasus_resume","rtl_hw_phy_work_func_t","rtl8152_reset_resume","rtl8152_probe_once"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"298bb2b8903323f6ef2eab4819a2e477765f0ff1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVNIC","TI_ICSSG_PRUETH","USB4_NET","USB_PEGASUS","USB_RTL8152"],"series_id":"0224fe00-d68e-4cbb-afe5-d181ffc144c2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-20 15:27:56 +0000 UTC FinishedAt: 2026-07-20 16:16:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ef295bc9-002f-438d-acc0-d4f555303131,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1e86e3fb-d3b8-4f22-8ca2-fcf1a6114fe3,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-workflow8z6gt/series-workflow8z6gt-build-action-2602228482/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-workflow8z6gt/series-workflow8z6gt-build-action-2205074423/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-workflow8z6gt/series-workflow8z6gt-convert-artifact-2061761372/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,}