Name: series-workflowqbq5b Phase: Succeeded StartedAt: 2026-08-13 05:54:19 +0000 UTC FinishedAt: 2026-08-13 07:01:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbq5b[0] Phase: Succeeded StartedAt: 2026-08-13 05:54:19 +0000 UTC FinishedAt: 2026-08-13 06:17:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbq5b[0].run-triage Phase: Succeeded StartedAt: 2026-08-13 05:54:19 +0000 UTC FinishedAt: 2026-08-13 06:17:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "e51dca02911f7857201a01fd884a7666500adefc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW88", "RTW88_8822CU", "USB", "MAC80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "e51dca02911f7857201a01fd884a7666500adefc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW88", "RTW88_8822CU", "USB", "MAC80211" ], "series_id": "ce2a7b3a-b465-47ec-801a-f1b3f96b97cd" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtw8822c_phy_set_param", "rtw8822c_rf_dac_cal", "rtw8822c_dac_cal_rf_mode" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEzIDA2OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg4JiMzNDssCiAgICAmIzM0O1JUVzg4Xzg4MjJDVSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHc4ODIyY19waHlfc2V0X3BhcmFtJiMzNDssCiAgICAmIzM0O3J0dzg4MjJjX3JmX2RhY19jYWwmIzM0OywKICAgICYjMzQ7cnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBJUSBjYWxpYnJhdGlvbiBsb2dpYyBpbiB0aGUgUmVhbHRlayBydHc4OCB3aXJlbGVzcyBkcml2ZXIuIEl0IHJlcGxhY2VzIGN1c3RvbSBzb3J0aW5nIGFuZCBtaW4vbWF4IGNhbGN1bGF0aW9ucyB3aXRoIHN0YW5kYXJkIGtlcm5lbCBmdW5jdGlvbnMgKGBzb3J0KClgKSBhbmQgc2ltcGxpZmllcyB0aGUgYXJpdGhtZXRpYyBieSB1c2luZyBzaWduZWQgMzItYml0IGludGVnZXJzIChgczMyYCkgaW5zdGVhZCBvZiB1bnNpZ25lZCBpbnRlZ2VycyB3aXRoIG1hbnVhbCBzaWduIGhhbmRsaW5nLiBUaGUgYXJyYXlzIGBpdmAgYW5kIGBxdmAgYXJlIGFsbG9jYXRlZCBvbiB0aGUgc3RhY2sgYW5kIHBvcHVsYXRlZCBieSByZWFkaW5nIGhhcmR3YXJlIHJlZ2lzdGVycy4gV2hpbGUgdGhlcmUgaXMgYSB0aGVvcmV0aWNhbCBwcmUtZXhpc3RpbmcgZWRnZSBjYXNlIHdoZXJlIHRoZSBhcnJheXMgbWlnaHQgbm90IGJlIGZ1bGx5IHBvcHVsYXRlZCBpZiB0aGUgaGFyZHdhcmUgZmFpbHMgdG8gcHJvdmlkZSBlbm91Z2ggdmFsaWQgc2FtcGxlcyB3aXRoaW4gMTAsMDAwIGl0ZXJhdGlvbnMsIHRoaXMgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4YWNlcmJhdGUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBUaGUgZGF0YSBpcyB1c2VkIHN0cmljdGx5IGZvciBpbnRlcm5hbCBoYXJkd2FyZSBjYWxpYnJhdGlvbiBhbmQgaXMgbm90IGNvcGllZCB0byB1c2Vyc3BhY2UsIG1lYW5pbmcgdGhlcmUgaXMgbm8gcmlzayBvZiBhbiBpbmZvLWxlYWsuIEFueSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBtZW1vcnkgY29ycnVwdGlvbiB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIEEgZGVkaWNhdGVkIEtNU0FOIHJ1biBpcyBub3QganVzdGlmaWVkIGFzIG5vIG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWsgdnVsbmVyYWJpbGl0aWVzIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgUkYgY2FsaWJyYXRpb24gbG9naWMgKHNwZWNpZmljYWxseSBEQUMgSVEgY2FsaWJyYXRpb24pIGluIHRoZSBSZWFsdGVrIDg4MjJDIHdpcmVsZXNzIGRyaXZlciAoYHJ0dzg4MjJjLmNgKS4gSXQgcmVwbGFjZXMgYSBjdXN0b20gc29ydGluZyBpbXBsZW1lbnRhdGlvbiB3aXRoIHRoZSBzdGFuZGFyZCBgc29ydCgpYCBmdW5jdGlvbiBhbmQgY2hhbmdlcyB0aGUgbG9naWMgZm9yIGNhbGN1bGF0aW5nIElRIG9mZnNldHMgYW5kIGNoZWNraW5nIHZhbHVlcy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYmVjYXVzZSB0aGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIChgcnR3ODgyMmN1YCksIHdoaWNoIGNhbiBiZSBlbXVsYXRlZCBieSBzeXprYWxsZXIgdmlhIGBzeXpfdXNiX2Nvbm5lY3RgLiBXaGVuIHRoZSBlbXVsYXRlZCBVU0IgV2ktRmkgaW50ZXJmYWNlIGlzIGJyb3VnaHQgdXAsIHRoZSBkcml2ZXIgcGVyZm9ybXMgUkYgY2FsaWJyYXRpb24sIHRyaWdnZXJpbmcgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQ1MTg3OWJkNzc1YmRkOGYxN2E3ZTM3YmY1N2IyOTMwNGQ5YzA4ZTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAwNjoxMjoxNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmNcbmluZGV4IDI0NGM4MDI2NDc5YzIuLjZmY2RmYzY0YzNiMWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuY1xuQEAgLTMsNiAmIzQzOzMsOCBAQFxuICAqL1xuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdG9wcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3NvcnQuaFx1MDAzZVxuICNpbmNsdWRlIFwmIzM0O21haW4uaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2NvZXguaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2Z3LmhcJiMzNDtcbkBAIC0xNTMsODQgJiM0MzsxNTUsMzAgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX3Jlc3RvcmVfcmVnKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4gXHR9XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX3JmX21pbm1heF9jbXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyIHZhbHVlLFxuLVx0XHRcdFx0ICAgdTMyICptaW4sIHUzMiAqbWF4KVxuJiM0MztzdGF0aWMgaW50IHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpXG4ge1xuLVx0aWYgKHZhbHVlIFx1MDAzZT0gMHgyMDApIHtcbi1cdFx0aWYgKCptaW4gXHUwMDNlPSAweDIwMCkge1xuLVx0XHRcdGlmICgqbWluIFx1MDAzZSB2YWx1ZSlcbi1cdFx0XHRcdCptaW4gPSB2YWx1ZTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHQqbWluID0gdmFsdWU7XG4tXHRcdH1cbi1cdFx0aWYgKCptYXggXHUwMDNlPSAweDIwMCkge1xuLVx0XHRcdGlmICgqbWF4IFx1MDAzYyB2YWx1ZSlcbi1cdFx0XHRcdCptYXggPSB2YWx1ZTtcbi1cdFx0fVxuLVx0fSBlbHNlIHtcbi1cdFx0aWYgKCptaW4gXHUwMDNjIDB4MjAwKSB7XG4tXHRcdFx0aWYgKCptaW4gXHUwMDNlIHZhbHVlKVxuLVx0XHRcdFx0Km1pbiA9IHZhbHVlO1xuLVx0XHR9XG4tXG4tXHRcdGlmICgqbWF4ICBcdTAwM2U9IDB4MjAwKSB7XG4tXHRcdFx0Km1heCA9IHZhbHVlO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdGlmICgqbWF4IFx1MDAzYyB2YWx1ZSlcbi1cdFx0XHRcdCptYXggPSB2YWx1ZTtcbi1cdFx0fVxuLVx0fVxuLX1cbiYjNDM7XHRzMzIgdmEgPSAqKGNvbnN0IHMzMiAqKWE7XG4mIzQzO1x0czMyIHZiID0gKihjb25zdCBzMzIgKiliO1xuIFxuLXN0YXRpYyB2b2lkIF9fcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICp2MSwgdTMyICp2Milcbi17XG4tXHRpZiAoKnYxIFx1MDAzZT0gMHgyMDAgXHUwMDI2XHUwMDI2ICp2MiBcdTAwM2U9IDB4MjAwKSB7XG4tXHRcdGlmICgqdjEgXHUwMDNlICp2Milcbi1cdFx0XHRzd2FwKCp2MSwgKnYyKTtcbi1cdH0gZWxzZSBpZiAoKnYxIFx1MDAzYyAweDIwMCBcdTAwMjZcdTAwMjYgKnYyIFx1MDAzYyAweDIwMCkge1xuLVx0XHRpZiAoKnYxIFx1MDAzZSAqdjIpXG4tXHRcdFx0c3dhcCgqdjEsICp2Mik7XG4tXHR9IGVsc2UgaWYgKCp2MSBcdTAwM2MgMHgyMDAgXHUwMDI2XHUwMDI2ICp2MiBcdTAwM2U9IDB4MjAwKSB7XG4tXHRcdHN3YXAoKnYxLCAqdjIpO1xuLVx0fVxuJiM0MztcdHJldHVybiAodmEgXHUwMDNlIHZiKSAtICh2YSBcdTAwM2MgdmIpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKml2LCB1MzIgKnF2KVxuJiM0MztzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKml2LCBzMzIgKnF2KVxuIHtcbi1cdHUzMiBpLCBqO1xuLVxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgREFDS19TTl84ODIyQyAtIDE7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIChEQUNLX1NOXzg4MjJDIC0gMSAtIGkpIDsgaiYjNDM7JiM0MzspIHtcbi1cdFx0XHRfX3J0dzg4MjJjX2RhY19pcV9zb3J0KHJ0d2RldiwgXHUwMDI2aXZbal0sIFx1MDAyNml2W2ogJiM0MzsgMV0pO1xuLVx0XHRcdF9fcnR3ODgyMmNfZGFjX2lxX3NvcnQocnR3ZGV2LCBcdTAwMjZxdltqXSwgXHUwMDI2cXZbaiAmIzQzOyAxXSk7XG4tXHRcdH1cbi1cdH1cbiYjNDM7XHRzb3J0KGl2LCBEQUNLX1NOXzg4MjJDLCBzaXplb2YoczMyKSwgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzIsIE5VTEwpO1xuJiM0MztcdHNvcnQocXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICp2ZWMsIHUzMiAqdmFsKVxuJiM0MztzdGF0aWMgczMyIHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICp2ZWMpXG4ge1xuLVx0dTMyIHAsIG0sIHQsIGk7XG4mIzQzO1x0czMyIHN1bSA9IDA7XG4gXG4tXHRtID0gMDtcbi1cdHAgPSAwO1xuLVx0Zm9yIChpID0gMTA7IGkgXHUwMDNjIERBQ0tfU05fODgyMkMgLSAxMDsgaSYjNDM7JiM0MzspIHtcbi1cdFx0aWYgKHZlY1tpXSBcdTAwM2UgMHgyMDApXG4tXHRcdFx0bSA9ICgweDQwMCAtIHZlY1tpXSkgJiM0MzsgbTtcbi1cdFx0ZWxzZVxuLVx0XHRcdHAgPSB2ZWNbaV0gJiM0MzsgcDtcbi1cdH1cbiYjNDM7XHRmb3IgKHUzMiBpID0gMTA7IGkgXHUwMDNjIERBQ0tfU05fODgyMkMgLSAxMDsgaSYjNDM7JiM0MzspXG4mIzQzO1x0XHRzdW0gJiM0Mzs9IHZlY1tpXTtcbiBcbi1cdGlmIChwIFx1MDAzZSBtKSB7XG4tXHRcdHQgPSBwIC0gbTtcbi1cdFx0dCA9IHQgLyAoREFDS19TTl84ODIyQyAtIDIwKTtcbi1cdH0gZWxzZSB7XG4tXHRcdHQgPSBtIC0gcDtcbi1cdFx0dCA9IHQgLyAoREFDS19TTl84ODIyQyAtIDIwKTtcbi1cdFx0aWYgKHQgIT0gMHgwKVxuLVx0XHRcdHQgPSAweDQwMCAtIHQ7XG4tXHR9XG4mIzQzO1x0czMyIGF2ZyA9IHN1bSAvIChEQUNLX1NOXzg4MjJDIC0gMjApO1xuIFxuLVx0KnZhbCA9IHQ7XG4mIzQzO1x0cmV0dXJuIGF2ZyBcdTAwM2U9IDAgPyBhdmcgOiAweDQwMCAmIzQzOyBhdmc7XG4gfVxuIFxuIHN0YXRpYyB1MzIgcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcih1OCBwYXRoKVxuQEAgLTI3MSwyOSAmIzQzOzIxOSwyNyBAQCBzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcih1OCBwYXRoKVxuIFx0cmV0dXJuIGJhc2VfYWRkcjtcbiB9XG4gXG4tc3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiB2YWx1ZSlcbiYjNDM7c3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiB2YWx1ZSlcbiB7XG4tXHRib29sIHJldCA9IHRydWU7XG4gXG4tXHRpZiAoKHZhbHVlIFx1MDAzZT0gMHgyMDAgXHUwMDI2XHUwMDI2ICgweDQwMCAtIHZhbHVlKSBcdTAwM2UgMHg2NCkgfHxcbi1cdCAgICAodmFsdWUgXHUwMDNjIDB4MjAwIFx1MDAyNlx1MDAyNiB2YWx1ZSBcdTAwM2UgMHg2NCkpIHtcbi1cdFx0cmV0ID0gZmFsc2U7XG4mIzQzO1x0aWYgKHZhbHVlIFx1MDAzZSAxMDAgfHwgdmFsdWUgXHUwMDNjIC0xMDApIHtcbiBcdFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLCBcJiMzNDtbREFDS10gRXJyb3Igb3ZlcmZsb3dcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuIFx0fVxuIFxuLVx0cmV0dXJuIHJldDtcbiYjNDM7XHRyZXR1cm4gdHJ1ZTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdilcbiYjNDM7c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdilcbiB7XG4gXHR1MzIgdGVtcDtcbi1cdGludCBpID0gMCwgY250ID0gMDtcbiYjNDM7XHR1MzIgaSA9IDAsIGNudCA9IDA7XG4gXG4gXHR3aGlsZSAoaSBcdTAwM2MgREFDS19TTl84ODIyQyBcdTAwMjZcdTAwMjYgY250IFx1MDAzYyAxMDAwMCkge1xuIFx0XHRjbnQmIzQzOyYjNDM7O1xuIFx0XHR0ZW1wID0gcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZik7XG4tXHRcdGl2W2ldID0gKHRlbXAgXHUwMDI2IDB4M2ZmMDAwKSBcdTAwM2VcdTAwM2UgMTI7XG4tXHRcdHF2W2ldID0gdGVtcCBcdTAwMjYgMHgzZmY7XG4mIzQzO1x0XHRpdltpXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgXHUwMDI2IDB4M2ZmMDAwKSBcdTAwM2VcdTAwM2UgMTIsIDkpO1xuJiM0MztcdFx0cXZbaV0gPSBzaWduX2V4dGVuZDMyKHRlbXAgXHUwMDI2IDB4M2ZmLCA5KTtcbiBcbiBcdFx0aWYgKHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIGl2W2ldKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIHF2W2ldKSlcbkBAIC0zMDIsMTMgJiM0MzsyNDgsMTIgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdilcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2Rldixcbi1cdFx0XHRcdCAgICAgICB1MzIgKml2LCB1MzIgKnF2LFxuJiM0MztcdFx0XHRcdCAgICAgICBzMzIgKml2LCBzMzIgKnF2LFxuIFx0XHRcdFx0ICAgICAgIHUzMiAqaV92YWx1ZSwgdTMyICpxX3ZhbHVlKVxuIHtcbi1cdHUzMiBpX21heCA9IDAsIHFfbWF4ID0gMCwgaV9taW4gPSAwLCBxX21pbiA9IDA7XG4tXHR1MzIgaV9kZWx0YSwgcV9kZWx0YTtcbiYjNDM7XHRzMzIgaV9tYXggPSAwLCBxX21heCA9IDAsIGlfbWluID0gMCwgcV9taW4gPSAwO1xuIFx0dTMyIHRlbXA7XG4tXHRpbnQgaSwgY250ID0gMDtcbiYjNDM7XHR1MzIgaSwgY250ID0gMDtcbiBcbiBcdGRvIHtcbiBcdFx0aV9taW4gPSBpdlswXTtcbkBAIC0zMTYsMjMgJiM0MzsyNjEsMTggQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbiBcdFx0cV9taW4gPSBxdlswXTtcbiBcdFx0cV9tYXggPSBxdlswXTtcbiBcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgREFDS19TTl84ODIyQzsgaSYjNDM7JiM0MzspIHtcbi1cdFx0XHRydHc4ODIyY19yZl9taW5tYXhfY21wKHJ0d2RldiwgaXZbaV0sIFx1MDAyNmlfbWluLCBcdTAwMjZpX21heCk7XG4tXHRcdFx0cnR3ODgyMmNfcmZfbWlubWF4X2NtcChydHdkZXYsIHF2W2ldLCBcdTAwMjZxX21pbiwgXHUwMDI2cV9tYXgpO1xuJiM0MztcdFx0XHRpZiAoaXZbaV0gXHUwMDNjIGlfbWluKVxuJiM0MztcdFx0XHRcdGlfbWluID0gaXZbaV07XG4mIzQzO1x0XHRcdGlmIChpdltpXSBcdTAwM2UgaV9tYXgpXG4mIzQzO1x0XHRcdFx0aV9tYXggPSBpdltpXTtcbiYjNDM7XHRcdFx0aWYgKHF2W2ldIFx1MDAzYyBxX21pbilcbiYjNDM7XHRcdFx0XHRxX21pbiA9IHF2W2ldO1xuJiM0MztcdFx0XHRpZiAocXZbaV0gXHUwMDNlIHFfbWF4KVxuJiM0MztcdFx0XHRcdHFfbWF4ID0gcXZbaV07XG4gXHRcdH1cbiBcbi1cdFx0aWYgKGlfbWF4IFx1MDAzYyAweDIwMCBcdTAwMjZcdTAwMjYgaV9taW4gXHUwMDNjIDB4MjAwKVxuLVx0XHRcdGlfZGVsdGEgPSBpX21heCAtIGlfbWluO1xuLVx0XHRlbHNlIGlmIChpX21heCBcdTAwM2U9IDB4MjAwIFx1MDAyNlx1MDAyNiBpX21pbiBcdTAwM2U9IDB4MjAwKVxuLVx0XHRcdGlfZGVsdGEgPSBpX21heCAtIGlfbWluO1xuLVx0XHRlbHNlXG4tXHRcdFx0aV9kZWx0YSA9IGlfbWF4ICYjNDM7ICgweDQwMCAtIGlfbWluKTtcbi1cbi1cdFx0aWYgKHFfbWF4IFx1MDAzYyAweDIwMCBcdTAwMjZcdTAwMjYgcV9taW4gXHUwMDNjIDB4MjAwKVxuLVx0XHRcdHFfZGVsdGEgPSBxX21heCAtIHFfbWluO1xuLVx0XHRlbHNlIGlmIChxX21heCBcdTAwM2U9IDB4MjAwIFx1MDAyNlx1MDAyNiBxX21pbiBcdTAwM2U9IDB4MjAwKVxuLVx0XHRcdHFfZGVsdGEgPSBxX21heCAtIHFfbWluO1xuLVx0XHRlbHNlXG4tXHRcdFx0cV9kZWx0YSA9IHFfbWF4ICYjNDM7ICgweDQwMCAtIHFfbWluKTtcbiYjNDM7XHRcdHUzMiBpX2RlbHRhID0gKHUzMikoaV9tYXggLSBpX21pbik7XG4mIzQzO1x0XHR1MzIgcV9kZWx0YSA9ICh1MzIpKHFfbWF4IC0gcV9taW4pO1xuIFxuIFx0XHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssXG4gXHRcdFx0XCYjMzQ7W0RBQ0tdIGk6IG1pbj0weCUwOHgsIG1heD0weCUwOHgsIGRlbHRhPTB4JTA4eFxcblwmIzM0OyxcbkBAIC0zNDUsMjQgJiM0MzsyODUsMjQgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbiBcbiBcdFx0aWYgKGlfZGVsdGEgXHUwMDNlIDUgfHwgcV9kZWx0YSBcdTAwM2UgNSkge1xuIFx0XHRcdHRlbXAgPSBydHdfcmVhZDMyX21hc2socnR3ZGV2LCAweDJkYmMsIDB4M2ZmZmZmKTtcbi1cdFx0XHRpdlswXSA9ICh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyO1xuLVx0XHRcdHF2WzBdID0gdGVtcCBcdTAwMjYgMHgzZmY7XG4mIzQzO1x0XHRcdGl2WzBdID0gc2lnbl9leHRlbmQzMigodGVtcCBcdTAwMjYgMHgzZmYwMDApIFx1MDAzZVx1MDAzZSAxMiwgOSk7XG4mIzQzO1x0XHRcdHF2WzBdID0gc2lnbl9leHRlbmQzMih0ZW1wIFx1MDAyNiAweDNmZiwgOSk7XG4gXHRcdFx0dGVtcCA9IHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpO1xuLVx0XHRcdGl2W0RBQ0tfU05fODgyMkMgLSAxXSA9ICh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyO1xuLVx0XHRcdHF2W0RBQ0tfU05fODgyMkMgLSAxXSA9IHRlbXAgXHUwMDI2IDB4M2ZmO1xuJiM0MztcdFx0XHRpdltEQUNLX1NOXzg4MjJDIC0gMV0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyLCA5KTtcbiYjNDM7XHRcdFx0cXZbREFDS19TTl84ODIyQyAtIDFdID0gc2lnbl9leHRlbmQzMih0ZW1wIFx1MDAyNiAweDNmZiwgOSk7XG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiBcdH0gd2hpbGUgKGNudCYjNDM7JiM0MzsgXHUwMDNjIDEwMCk7XG4gXG4tXHRydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgaXYsIGlfdmFsdWUpO1xuLVx0cnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIHF2LCBxX3ZhbHVlKTtcbiYjNDM7XHQqaV92YWx1ZSA9IHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBpdik7XG4mIzQzO1x0KnFfdmFsdWUgPSBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgcXYpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3JmX21vZGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbiBcdFx0XHRcdCAgICAgdTMyICppX3ZhbHVlLCB1MzIgKnFfdmFsdWUpXG4ge1xuLVx0dTMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTtcbiYjNDM7XHRzMzIgaXZbREFDS19TTl84ODIyQ10sIHF2W0RBQ0tfU05fODgyMkNdO1xuIFx0dTMyIHJmX2EsIHJmX2I7XG4gXG4gXHRyZl9hID0gcnR3X3JlYWRfcmYocnR3ZGV2LCBSRl9QQVRIX0EsIDB4MCwgUkZSRUdfTUFTSyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg4JiMzNDssCiAgICAmIzM0O1JUVzg4Xzg4MjJDVSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHc4ODIyY19waHlfc2V0X3BhcmFtJiMzNDssCiAgICAmIzM0O3J0dzg4MjJjX3JmX2RhY19jYWwmIzM0OywKICAgICYjMzQ7cnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBSRiBjYWxpYnJhdGlvbiBsb2dpYyAoc3BlY2lmaWNhbGx5IERBQyBJUSBjYWxpYnJhdGlvbikgaW4gdGhlIFJlYWx0ZWsgODgyMkMgd2lyZWxlc3MgZHJpdmVyIChgcnR3ODgyMmMuY2ApLiBJdCByZXBsYWNlcyBhIGN1c3RvbSBzb3J0aW5nIGltcGxlbWVudGF0aW9uIHdpdGggdGhlIHN0YW5kYXJkIGBzb3J0KClgIGZ1bmN0aW9uIGFuZCBjaGFuZ2VzIHRoZSBsb2dpYyBmb3IgY2FsY3VsYXRpbmcgSVEgb2Zmc2V0cyBhbmQgY2hlY2tpbmcgdmFsdWVzLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBiZWNhdXNlIHRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGRldmljZXMgKGBydHc4ODIyY3VgKSwgd2hpY2ggY2FuIGJlIGVtdWxhdGVkIGJ5IHN5emthbGxlciB2aWEgYHN5el91c2JfY29ubmVjdGAuIFdoZW4gdGhlIGVtdWxhdGVkIFVTQiBXaS1GaSBpbnRlcmZhY2UgaXMgYnJvdWdodCB1cCwgdGhlIGRyaXZlciBwZXJmb3JtcyBSRiBjYWxpYnJhdGlvbiwgdHJpZ2dlcmluZyB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDUxODc5YmQ3NzViZGQ4ZjE3YTdlMzdiZjU3YjI5MzA0ZDljMDhlMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDEzIDA2OjEyOjE2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jCmluZGV4IDI0NGM4MDI2NDc5YzIuLjZmY2RmYzY0YzNiMWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMKQEAgLTMsNiAmIzQzOzMsOCBAQAogICovCiAKICNpbmNsdWRlICZsdDtsaW51eC9tb2R1bGUuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvYml0b3BzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3NvcnQuaCZndDsKICNpbmNsdWRlICYjMzQ7bWFpbi5oJiMzNDsKICNpbmNsdWRlICYjMzQ7Y29leC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7ZncuaCYjMzQ7CkBAIC0xNTMsODQgJiM0MzsxNTUsMzAgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX3Jlc3RvcmVfcmVnKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsCiAJfQogfQogCi1zdGF0aWMgdm9pZCBydHc4ODIyY19yZl9taW5tYXhfY21wKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiB2YWx1ZSwKLQkJCQkgICB1MzIgKm1pbiwgdTMyICptYXgpCiYjNDM7c3RhdGljIGludCBydHc4ODIyY19kYWNfaXFfY21wX3MzMihjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogewotCWlmICh2YWx1ZSAmZ3Q7PSAweDIwMCkgewotCQlpZiAoKm1pbiAmZ3Q7PSAweDIwMCkgewotCQkJaWYgKCptaW4gJmd0OyB2YWx1ZSkKLQkJCQkqbWluID0gdmFsdWU7Ci0JCX0gZWxzZSB7Ci0JCQkqbWluID0gdmFsdWU7Ci0JCX0KLQkJaWYgKCptYXggJmd0Oz0gMHgyMDApIHsKLQkJCWlmICgqbWF4ICZsdDsgdmFsdWUpCi0JCQkJKm1heCA9IHZhbHVlOwotCQl9Ci0JfSBlbHNlIHsKLQkJaWYgKCptaW4gJmx0OyAweDIwMCkgewotCQkJaWYgKCptaW4gJmd0OyB2YWx1ZSkKLQkJCQkqbWluID0gdmFsdWU7Ci0JCX0KLQotCQlpZiAoKm1heCAgJmd0Oz0gMHgyMDApIHsKLQkJCSptYXggPSB2YWx1ZTsKLQkJfSBlbHNlIHsKLQkJCWlmICgqbWF4ICZsdDsgdmFsdWUpCi0JCQkJKm1heCA9IHZhbHVlOwotCQl9Ci0JfQotfQomIzQzOwlzMzIgdmEgPSAqKGNvbnN0IHMzMiAqKWE7CiYjNDM7CXMzMiB2YiA9ICooY29uc3QgczMyICopYjsKIAotc3RhdGljIHZvaWQgX19ydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKnYxLCB1MzIgKnYyKQotewotCWlmICgqdjEgJmd0Oz0gMHgyMDAgJmFtcDsmYW1wOyAqdjIgJmd0Oz0gMHgyMDApIHsKLQkJaWYgKCp2MSAmZ3Q7ICp2MikKLQkJCXN3YXAoKnYxLCAqdjIpOwotCX0gZWxzZSBpZiAoKnYxICZsdDsgMHgyMDAgJmFtcDsmYW1wOyAqdjIgJmx0OyAweDIwMCkgewotCQlpZiAoKnYxICZndDsgKnYyKQotCQkJc3dhcCgqdjEsICp2Mik7Ci0JfSBlbHNlIGlmICgqdjEgJmx0OyAweDIwMCAmYW1wOyZhbXA7ICp2MiAmZ3Q7PSAweDIwMCkgewotCQlzd2FwKCp2MSwgKnYyKTsKLQl9CiYjNDM7CXJldHVybiAodmEgJmd0OyB2YikgLSAodmEgJmx0OyB2Yik7CiB9CiAKLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9zb3J0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqaXYsIHUzMiAqcXYpCiYjNDM7c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdikKIHsKLQl1MzIgaSwgajsKLQotCWZvciAoaSA9IDA7IGkgJmx0OyBEQUNLX1NOXzg4MjJDIC0gMTsgaSYjNDM7JiM0MzspIHsKLQkJZm9yIChqID0gMDsgaiAmbHQ7IChEQUNLX1NOXzg4MjJDIC0gMSAtIGkpIDsgaiYjNDM7JiM0MzspIHsKLQkJCV9fcnR3ODgyMmNfZGFjX2lxX3NvcnQocnR3ZGV2LCAmYW1wO2l2W2pdLCAmYW1wO2l2W2ogJiM0MzsgMV0pOwotCQkJX19ydHc4ODIyY19kYWNfaXFfc29ydChydHdkZXYsICZhbXA7cXZbal0sICZhbXA7cXZbaiAmIzQzOyAxXSk7Ci0JCX0KLQl9CiYjNDM7CXNvcnQoaXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7CiYjNDM7CXNvcnQocXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7CiB9CiAKLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICp2ZWMsIHUzMiAqdmFsKQomIzQzO3N0YXRpYyBzMzIgcnR3ODgyMmNfZGFjX2lxX29mZnNldChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKnZlYykKIHsKLQl1MzIgcCwgbSwgdCwgaTsKJiM0MzsJczMyIHN1bSA9IDA7CiAKLQltID0gMDsKLQlwID0gMDsKLQlmb3IgKGkgPSAxMDsgaSAmbHQ7IERBQ0tfU05fODgyMkMgLSAxMDsgaSYjNDM7JiM0MzspIHsKLQkJaWYgKHZlY1tpXSAmZ3Q7IDB4MjAwKQotCQkJbSA9ICgweDQwMCAtIHZlY1tpXSkgJiM0MzsgbTsKLQkJZWxzZQotCQkJcCA9IHZlY1tpXSAmIzQzOyBwOwotCX0KJiM0MzsJZm9yICh1MzIgaSA9IDEwOyBpICZsdDsgREFDS19TTl84ODIyQyAtIDEwOyBpJiM0MzsmIzQzOykKJiM0MzsJCXN1bSAmIzQzOz0gdmVjW2ldOwogCi0JaWYgKHAgJmd0OyBtKSB7Ci0JCXQgPSBwIC0gbTsKLQkJdCA9IHQgLyAoREFDS19TTl84ODIyQyAtIDIwKTsKLQl9IGVsc2UgewotCQl0ID0gbSAtIHA7Ci0JCXQgPSB0IC8gKERBQ0tfU05fODgyMkMgLSAyMCk7Ci0JCWlmICh0ICE9IDB4MCkKLQkJCXQgPSAweDQwMCAtIHQ7Ci0JfQomIzQzOwlzMzIgYXZnID0gc3VtIC8gKERBQ0tfU05fODgyMkMgLSAyMCk7CiAKLQkqdmFsID0gdDsKJiM0MzsJcmV0dXJuIGF2ZyAmZ3Q7PSAwID8gYXZnIDogMHg0MDAgJiM0MzsgYXZnOwogfQogCiBzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIodTggcGF0aCkKQEAgLTI3MSwyOSAmIzQzOzIxOSwyNyBAQCBzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcih1OCBwYXRoKQogCXJldHVybiBiYXNlX2FkZHI7CiB9CiAKLXN0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgdmFsdWUpCiYjNDM7c3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiB2YWx1ZSkKIHsKLQlib29sIHJldCA9IHRydWU7CiAKLQlpZiAoKHZhbHVlICZndDs9IDB4MjAwICZhbXA7JmFtcDsgKDB4NDAwIC0gdmFsdWUpICZndDsgMHg2NCkgfHwKLQkgICAgKHZhbHVlICZsdDsgMHgyMDAgJmFtcDsmYW1wOyB2YWx1ZSAmZ3Q7IDB4NjQpKSB7Ci0JCXJldCA9IGZhbHNlOwomIzQzOwlpZiAodmFsdWUgJmd0OyAxMDAgfHwgdmFsdWUgJmx0OyAtMTAwKSB7CiAJCXJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1JGSywgJiMzNDtbREFDS10gRXJyb3Igb3ZlcmZsb3dcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiBmYWxzZTsKIAl9CiAKLQlyZXR1cm4gcmV0OwomIzQzOwlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdikKJiM0MztzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKml2LCBzMzIgKnF2KQogewogCXUzMiB0ZW1wOwotCWludCBpID0gMCwgY250ID0gMDsKJiM0MzsJdTMyIGkgPSAwLCBjbnQgPSAwOwogCiAJd2hpbGUgKGkgJmx0OyBEQUNLX1NOXzg4MjJDICZhbXA7JmFtcDsgY250ICZsdDsgMTAwMDApIHsKIAkJY250JiM0MzsmIzQzOzsKIAkJdGVtcCA9IHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpOwotCQlpdltpXSA9ICh0ZW1wICZhbXA7IDB4M2ZmMDAwKSAmZ3Q7Jmd0OyAxMjsKLQkJcXZbaV0gPSB0ZW1wICZhbXA7IDB4M2ZmOwomIzQzOwkJaXZbaV0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wICZhbXA7IDB4M2ZmMDAwKSAmZ3Q7Jmd0OyAxMiwgOSk7CiYjNDM7CQlxdltpXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCAmYW1wOyAweDNmZiwgOSk7CiAKIAkJaWYgKHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIGl2W2ldKSAmYW1wOyZhbXA7CiAJCSAgICBydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBxdltpXSkpCkBAIC0zMDIsMTMgJiM0MzsyNDgsMTIgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdikKIH0KIAogc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwKLQkJCQkgICAgICAgdTMyICppdiwgdTMyICpxdiwKJiM0MzsJCQkJICAgICAgIHMzMiAqaXYsIHMzMiAqcXYsCiAJCQkJICAgICAgIHUzMiAqaV92YWx1ZSwgdTMyICpxX3ZhbHVlKQogewotCXUzMiBpX21heCA9IDAsIHFfbWF4ID0gMCwgaV9taW4gPSAwLCBxX21pbiA9IDA7Ci0JdTMyIGlfZGVsdGEsIHFfZGVsdGE7CiYjNDM7CXMzMiBpX21heCA9IDAsIHFfbWF4ID0gMCwgaV9taW4gPSAwLCBxX21pbiA9IDA7CiAJdTMyIHRlbXA7Ci0JaW50IGksIGNudCA9IDA7CiYjNDM7CXUzMiBpLCBjbnQgPSAwOwogCiAJZG8gewogCQlpX21pbiA9IGl2WzBdOwpAQCAtMzE2LDIzICYjNDM7MjYxLDE4IEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsCiAJCXFfbWluID0gcXZbMF07CiAJCXFfbWF4ID0gcXZbMF07CiAJCWZvciAoaSA9IDA7IGkgJmx0OyBEQUNLX1NOXzg4MjJDOyBpJiM0MzsmIzQzOykgewotCQkJcnR3ODgyMmNfcmZfbWlubWF4X2NtcChydHdkZXYsIGl2W2ldLCAmYW1wO2lfbWluLCAmYW1wO2lfbWF4KTsKLQkJCXJ0dzg4MjJjX3JmX21pbm1heF9jbXAocnR3ZGV2LCBxdltpXSwgJmFtcDtxX21pbiwgJmFtcDtxX21heCk7CiYjNDM7CQkJaWYgKGl2W2ldICZsdDsgaV9taW4pCiYjNDM7CQkJCWlfbWluID0gaXZbaV07CiYjNDM7CQkJaWYgKGl2W2ldICZndDsgaV9tYXgpCiYjNDM7CQkJCWlfbWF4ID0gaXZbaV07CiYjNDM7CQkJaWYgKHF2W2ldICZsdDsgcV9taW4pCiYjNDM7CQkJCXFfbWluID0gcXZbaV07CiYjNDM7CQkJaWYgKHF2W2ldICZndDsgcV9tYXgpCiYjNDM7CQkJCXFfbWF4ID0gcXZbaV07CiAJCX0KIAotCQlpZiAoaV9tYXggJmx0OyAweDIwMCAmYW1wOyZhbXA7IGlfbWluICZsdDsgMHgyMDApCi0JCQlpX2RlbHRhID0gaV9tYXggLSBpX21pbjsKLQkJZWxzZSBpZiAoaV9tYXggJmd0Oz0gMHgyMDAgJmFtcDsmYW1wOyBpX21pbiAmZ3Q7PSAweDIwMCkKLQkJCWlfZGVsdGEgPSBpX21heCAtIGlfbWluOwotCQllbHNlCi0JCQlpX2RlbHRhID0gaV9tYXggJiM0MzsgKDB4NDAwIC0gaV9taW4pOwotCi0JCWlmIChxX21heCAmbHQ7IDB4MjAwICZhbXA7JmFtcDsgcV9taW4gJmx0OyAweDIwMCkKLQkJCXFfZGVsdGEgPSBxX21heCAtIHFfbWluOwotCQllbHNlIGlmIChxX21heCAmZ3Q7PSAweDIwMCAmYW1wOyZhbXA7IHFfbWluICZndDs9IDB4MjAwKQotCQkJcV9kZWx0YSA9IHFfbWF4IC0gcV9taW47Ci0JCWVsc2UKLQkJCXFfZGVsdGEgPSBxX21heCAmIzQzOyAoMHg0MDAgLSBxX21pbik7CiYjNDM7CQl1MzIgaV9kZWx0YSA9ICh1MzIpKGlfbWF4IC0gaV9taW4pOwomIzQzOwkJdTMyIHFfZGVsdGEgPSAodTMyKShxX21heCAtIHFfbWluKTsKIAogCQlydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssCiAJCQkmIzM0O1tEQUNLXSBpOiBtaW49MHglMDh4LCBtYXg9MHglMDh4LCBkZWx0YT0weCUwOHhcbiYjMzQ7LApAQCAtMzQ1LDI0ICYjNDM7Mjg1LDI0IEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsCiAKIAkJaWYgKGlfZGVsdGEgJmd0OyA1IHx8IHFfZGVsdGEgJmd0OyA1KSB7CiAJCQl0ZW1wID0gcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZik7Ci0JCQlpdlswXSA9ICh0ZW1wICZhbXA7IDB4M2ZmMDAwKSAmZ3Q7Jmd0OyAxMjsKLQkJCXF2WzBdID0gdGVtcCAmYW1wOyAweDNmZjsKJiM0MzsJCQlpdlswXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgJmFtcDsgMHgzZmYwMDApICZndDsmZ3Q7IDEyLCA5KTsKJiM0MzsJCQlxdlswXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCAmYW1wOyAweDNmZiwgOSk7CiAJCQl0ZW1wID0gcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZik7Ci0JCQlpdltEQUNLX1NOXzg4MjJDIC0gMV0gPSAodGVtcCAmYW1wOyAweDNmZjAwMCkgJmd0OyZndDsgMTI7Ci0JCQlxdltEQUNLX1NOXzg4MjJDIC0gMV0gPSB0ZW1wICZhbXA7IDB4M2ZmOwomIzQzOwkJCWl2W0RBQ0tfU05fODgyMkMgLSAxXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgJmFtcDsgMHgzZmYwMDApICZndDsmZ3Q7IDEyLCA5KTsKJiM0MzsJCQlxdltEQUNLX1NOXzg4MjJDIC0gMV0gPSBzaWduX2V4dGVuZDMyKHRlbXAgJmFtcDsgMHgzZmYsIDkpOwogCQl9IGVsc2UgewogCQkJYnJlYWs7CiAJCX0KIAl9IHdoaWxlIChjbnQmIzQzOyYjNDM7ICZsdDsgMTAwKTsKIAotCXJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBpdiwgaV92YWx1ZSk7Ci0JcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIHF2LCBxX3ZhbHVlKTsKJiM0MzsJKmlfdmFsdWUgPSBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgaXYpOwomIzQzOwkqcV92YWx1ZSA9IHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBxdik7CiB9CiAKIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LAogCQkJCSAgICAgdTMyICppX3ZhbHVlLCB1MzIgKnFfdmFsdWUpCiB7Ci0JdTMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTsKJiM0MzsJczMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTsKIAl1MzIgcmZfYSwgcmZfYjsKIAogCXJmX2EgPSBydHdfcmVhZF9yZihydHdkZXYsIFJGX1BBVEhfQSwgMHgwLCBSRlJFR19NQVNLKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUzNwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQ4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciBSZWFsdGVrIDg4MjJDIERBQyBJUSBDYWxpYnJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSBoYXZlIGEgcGF0Y2ggdG91Y2hpbmcgc2V2ZXJhbCBmdW5jdGlvbnM6IGBydHc4ODIyY19kYWNfaXFfY21wX3MzMmAsIGBydHc4ODIyY19kYWNfaXFfc29ydGAsIGV0Yy4gYWxsIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jYC4gVGhlc2UgYXJlIGNsZWFybHkgcmVsYXRlZCB0byBEQUMgSVEgY2FsaWJyYXRpb24gZm9yIHRoZSBSZWFsdGVrIDg4MjJDIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IFJGIGNhbGlicmF0aW9uLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHdoZXRoZXIgdGhlc2UgY2hhbmdlcyBpbnRyb2R1Y2UgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgd2FycmFudCBmdXp6aW5nLgoKQnV0IHdhaXQsIHRoZSBpbnN0cnVjdGlvbnMgc3BlY2lmeSBzb21lIGV4ZW1wdGlvbnMuIFRoZSBrZXkgaGVyZSBpcyB3aGV0aGVyIHRoaXMgY29kZSBpcyByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUuIFRoZXkgc3BlY2lmaWNhbGx5IGNhbGwgb3V0IHBoeXNpY2FsIFBDSWUvVVNCIGRldmljZXMgdGhhdCBhcmUgZGlmZmljdWx0IHRvIHJlYWNoIHdpdGhvdXQgc3BlY2lmaWMgZW11bGF0ZWQgaGFyZHdhcmUuCgpUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBJcyBgcnR3ODhgIGEgZHJpdmVyIGZvciBhIHBoeXNpY2FsIFdpLUZpIGNhcmQ/IFllcywgaXQgaXMgZm9yIFJlYWx0ZWsgODAyLjExYWMgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVycy4gSXQmIzM5O3Mgbm90IGEgdmlydHVhbCBkcml2ZXIgbGlrZSBgbWFjODAyMTFfaHdzaW1gLiBCdXQgY2FuIGl0IGJlIGVtdWxhdGVkIGluIFFFTVU/IFR5cGljYWxseSwgV2ktRmkgZHJpdmVycyBmb3IgcGh5c2ljYWwgUENJZS9VU0IgZGV2aWNlcyBhcmUgcHJvYmxlbWF0aWMgdW5sZXNzIHRoZXJlJiMzOTtzIGVtdWxhdGlvbi4KCk5vdywgdGhlIGludGVyZXN0aW5nIGJpdC4gVGhlIGBydHc4OGAgZHJpdmVyIHN1cHBvcnRzICpib3RoKiBVU0IgYW5kIFBDSWUuIFRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlIFVTQiBzaWRlIGlzIGVtdWxhdGFibGUuIEZvcnR1bmF0ZWx5LCBJIHJlbWVtYmVyIHRoYXQgc3l6a2FsbGVyIGhhcyBgc3l6X3VzYl9jb25uZWN0YCwgd2hpY2ggY291bGQgYmUgYSB3YXkgdG8gZW11bGF0ZSBVU0IgZGV2aWNlcy4gU28sIGlzIHRoZXJlIGEgVVNCIGRyaXZlciBjb21wb25lbnQgaW4gYHJ0dzg4YD8gVGhhdCYjMzk7cyB0aGUga2V5IHRvIG1ha2luZyBhIGRlY2lzaW9uIGhlcmUuIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgdGhlIFVTQiBwYXRoIGlzIHByZXNlbnQgYW5kIGV4cGxvaXRhYmxlIHZpYSBzdGFuZGFyZCBlbXVsYXRpb24gdGVjaG5pcXVlcy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgY29kZSB0byBiZSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA2OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg4Lip1c2ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlPTExMD1ydHc4OF9zZGlvLW9ianNcdFx0XHQ6PSBzZGlvLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZToxMTI6b2JqLSQoQ09ORklHX1JUVzg4X1VTQilcdFx0JiM0Mzs9IHJ0dzg4X3VzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjExMzpydHc4OF91c2Itb2Jqc1x0XHRcdDo9IHVzYi5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYnUuYz04Nj1NT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgcnR3Xzg4MjJidV9pZF90YWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJidS5jLTg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYnUuYzo4ODpzdGF0aWMgaW50IHJ0dzg4MjJidV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmJ1LmMtODktXHRcdFx0ICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmN1LmM9Mjg9TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHJ0d184ODIyY3VfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYy0yOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmN1LmM6MzA6c3RhdGljIGludCBydHc4ODIyY3VfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jLTMxLVx0XHRcdCAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmM9ODA9c3RhdGljIHZvaWQgcnR3ODgxMmFfcmVhZF9yZmVfdHlwZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODh4eGEuYy0xMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmM6MTI0OnN0YXRpYyB2b2lkIHJ0dzg4eHhhX3JlYWRfdXNiX3R5cGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODh4eGEuYy0xMjUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODh4eGEuYz0yMDA9aW50IHJ0dzg4eHhhX3JlYWRfZWZ1c2Uoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggKmxvZ19tYXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jLTI0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODh4eGEuYzoyNDE6XHRydHc4OHh4YV9yZWFkX3VzYl90eXBlKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmMtMjQyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmM9OTc0PXN0YXRpYyBpbnQgcnR3X3VzYl9pbml0X3J4KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYy05NzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jOjk4MDpcdHJ0d3VzYi1cdTAwM2VyeHdxID0gYWxsb2Nfd29ya3F1ZXVlKFwmIzM0O3J0dzg4X3VzYjogcnggd3FcJiMzNDssIFdRX0JIIHwgV1FfUEVSQ1BVLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYy05ODEtXHRcdFx0XHQgICAgICAgMCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYz0xMDI1PXN0YXRpYyBpbnQgcnR3X3VzYl9pbml0X3R4KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYy0xMDI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYzoxMDMwOlx0cnR3dXNiLVx1MDAzZXR4d3EgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZShcJiMzNDtydHc4OF91c2I6IHR4IHdxXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmMtMTAzMS1cdGlmICghcnR3dXNiLVx1MDAzZXR4d3EpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTg4CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgcnR3ODggRHJpdmVyIEZhbWlseSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgdG8gYmUgdG91Y2hpbmcgYHJ0dzg4MjJjLmNgLiBSaWdodCwgc28gdGhpcyBpcyBwYXJ0IG9mIHRoZSBgcnR3ODhgIGRyaXZlciwgd2hpY2ggSSBrbm93IGFsc28gaGFzIGEgVVNCIGNvbXBvbmVudCwgc3BlY2lmaWNhbGx5IGBydHc4OF91c2JgLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgb3Igbm90IHRoaXMgYHJ0dzg4MjJjYCBpcyBhY3R1YWxseSB1c2VkIGJ5IHRoZSBVU0IgaW1wbGVtZW50YXRpb24uIEl0JiMzOTtzIGEga2V5IHF1ZXN0aW9uIGhlcmUuIFRvIGZpZ3VyZSB0aGlzIG91dCwgSSYjMzk7bSBnb2luZyB0byBuZWVkIHRvIGRpZyBpbnRvIHRoZSBVU0Igc3BlY2lmaWMgZmlsZXMuIEl0JiMzOTtzIHRpbWUgdG8gY2hlY2sgYHJ0dzg4MjJjdS5jYCBvciBzb21ldGhpbmcgYW5hbG9nb3VzLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBhbnN3ZXJzIEkgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4ODIyYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNjMzIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlPTM3PW9iai0kKENPTkZJR19SVFc4OF84ODIyQylcdCYjNDM7PSBydHc4OF84ODIyYy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjM4OnJ0dzg4Xzg4MjJjLW9ianNcdFx0Oj0gcnR3ODgyMmMubyBydHc4ODIyY190YWJsZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZT00MD1vYmotJChDT05GSUdfUlRXODhfODgyMkNFKVx0JiM0Mzs9IHJ0dzg4Xzg4MjJjZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjQxOnJ0dzg4Xzg4MjJjZS1vYmpzXHRcdDo9IHJ0dzg4MjJjZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZT00Mz1vYmotJChDT05GSUdfUlRXODhfODgyMkNTKVx0JiM0Mzs9IHJ0dzg4Xzg4MjJjcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjQ0OnJ0dzg4Xzg4MjJjcy1vYmpzXHRcdDo9IHJ0dzg4MjJjcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZT00Nj1vYmotJChDT05GSUdfUlRXODhfODgyMkNVKVx0JiM0Mzs9IHJ0dzg4Xzg4MjJjdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjQ3OnJ0dzg4Xzg4MjJjdS1vYmpzXHRcdDo9IHJ0dzg4MjJjdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTQ4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMy0jaW5jbHVkZSBcJiMzNDtwaHkuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE0OiNpbmNsdWRlIFwmIzM0O3J0dzg4MjJjLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNTojaW5jbHVkZSBcJiMzNDtydHc4ODIyY190YWJsZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTYtI2luY2x1ZGUgXCYjMzQ7bWFjLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MjU6c3RhdGljIHZvaWQgcnR3ODgyMmNfY29uZmlnX3RyeF9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHR4X3BhdGgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjYtXHRcdFx0XHQgICAgIHU4IHJ4X3BhdGgsIGJvb2wgaXNfdHgyX3BhdGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI4OnN0YXRpYyB2b2lkIHJ0dzg4MjJjZV9lZnVzZV9wYXJzaW5nKHN0cnVjdCBydHdfZWZ1c2UgKmVmdXNlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI5Olx0XHRcdFx0ICAgIHN0cnVjdCBydHc4ODIyY19lZnVzZSAqbWFwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzQ6c3RhdGljIHZvaWQgcnR3ODgyMmN1X2VmdXNlX3BhcnNpbmcoc3RydWN0IHJ0d19lZnVzZSAqZWZ1c2UsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzU6XHRcdFx0XHQgICAgc3RydWN0IHJ0dzg4MjJjX2VmdXNlICptYXApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0MDpzdGF0aWMgdm9pZCBydHc4ODIyY3NfZWZ1c2VfcGFyc2luZyhzdHJ1Y3QgcnR3X2VmdXNlICplZnVzZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0MTpcdFx0XHRcdCAgICBzdHJ1Y3QgcnR3ODgyMmNfZWZ1c2UgKm1hcClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ2OnN0YXRpYyBpbnQgcnR3ODgyMmNfcmVhZF9lZnVzZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCAqbG9nX21hcClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDgtXHRzdHJ1Y3QgcnR3X2VmdXNlICplZnVzZSA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VlZnVzZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0OTpcdHN0cnVjdCBydHc4ODIyY19lZnVzZSAqbWFwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTUwLVx0aW50IGk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NTI6XHRtYXAgPSAoc3RydWN0IHJ0dzg4MjJjX2VmdXNlICopbG9nX21hcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzMtXHRjYXNlIFJUV19IQ0lfVFlQRV9QQ0lFOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc0Olx0XHRydHc4ODIyY2VfZWZ1c2VfcGFyc2luZyhlZnVzZSwgbWFwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03NS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzYtXHRjYXNlIFJUV19IQ0lfVFlQRV9VU0I6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6Nzc6XHRcdHJ0dzg4MjJjdV9lZnVzZV9wYXJzaW5nKGVmdXNlLCBtYXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTc4LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03OS1cdGNhc2UgUlRXX0hDSV9UWVBFX1NESU86XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODA6XHRcdHJ0dzg4MjJjc19lZnVzZV9wYXJzaW5nKGVmdXNlLCBtYXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTgxLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTA6c3RhdGljIHZvaWQgcnR3ODgyMmNfaGVhZGVyX2ZpbGVfaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBib29sIHByZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMDM6c3RhdGljIHZvaWQgcnR3ODgyMmNfYmJfcmVzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTEwOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19iYWNrdXBfcmVnKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTExLVx0XHRcdFx0ICAgIHN0cnVjdCBydHdfYmFja3VwX2luZm8gKmJhY2t1cCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEzOTpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfcmVzdG9yZV9yZWcoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDAtXHRcdFx0XHQgICAgIHN0cnVjdCBydHdfYmFja3VwX2luZm8gKmJhY2t1cCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE1ODpzdGF0aWMgaW50IHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE2NjpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKml2LCBzMzIgKnF2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTY4Olx0c29ydChpdiwgREFDS19TTl84ODIyQywgc2l6ZW9mKHMzMiksIHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyLCBOVUxMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNjk6XHRzb3J0KHF2LCBEQUNLX1NOXzg4MjJDLCBzaXplb2YoczMyKSwgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzIsIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3MC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3MjpzdGF0aWMgczMyIHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICp2ZWMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTczLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE4NDpzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIodTggcGF0aClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xODUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MjAzOnN0YXRpYyB1MzIgcnR3ODgyMmNfZ2V0X3BhdGhfcmVhZF9hZGRyKHU4IHBhdGgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjA0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjIyMjpzdGF0aWMgYm9vbCBydHc4ODIyY19kYWNfaXFfY2hlY2soc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyIHZhbHVlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTIyMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTIzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyMzM6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yMzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MjQ0Olx0XHRpZiAocnR3ODgyMmNfZGFjX2lxX2NoZWNrKHJ0d2RldiwgaXZbaV0pIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI0NTpcdFx0ICAgIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIHF2W2ldKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yNDYtXHRcdFx0aSYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyNTA6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yNTEtXHRcdFx0XHQgICAgICAgczMyICppdiwgczMyICpxdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI4NDpcdFx0cnR3ODgyMmNfZGFjX2lxX3NvcnQocnR3ZGV2LCBpdiwgcXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI4NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI5ODpcdCppX3ZhbHVlID0gcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIGl2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyOTk6XHQqcV92YWx1ZSA9IHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBxdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzAwLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzAyOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMwMy1cdFx0XHRcdCAgICAgdTMyICppX3ZhbHVlLCB1MzIgKnFfdmFsdWUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzozMTQ6XHRydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShydHdkZXYsIGl2LCBxdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzE1Olx0cnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2gocnR3ZGV2LCBpdiwgcXYsIGlfdmFsdWUsIHFfdmFsdWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMxNi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjMxODpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfYmJfc2V0dGluZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMxOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMzMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzozMzQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9hZGMoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMzUtXHRcdFx0XHQgdTggcGF0aCwgdTMyICphZGNfaWMsIHUzMiAqYWRjX3FjKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzQ1Olx0YmFzZV9hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zNDYtXHRzd2l0Y2ggKHBhdGgpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzcxLVx0XHRydHdfd3JpdGUzMihydHdkZXYsIDB4MWMyNCwgMHgwMDAxMDAwMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzcyOlx0XHRydHc4ODIyY19kYWNfY2FsX3JmX21vZGUocnR3ZGV2LCBcdTAwMjZpYywgXHUwMDI2cWMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM3My1cdFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zOTEtXHRcdHJ0d193cml0ZTMyKHJ0d2RldiwgMHgxYzNjLCBwYXRoX3NlbCAmIzQzOyAweDgxMDMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM5MjpcdFx0cnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlKHJ0d2RldiwgXHUwMDI2aWMsIFx1MDAyNnFjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zOTMtXHRcdHJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1JGSyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQxMjpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3N0ZXAxKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDEzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQxODpcdGJhc2VfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIocGF0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDE5Olx0cmVhZF9hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfcmVhZF9hZGRyKHBhdGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQyMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ1NzpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3N0ZXAyKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDU4LVx0XHRcdFx0ICAgdTggcGF0aCwgdTMyICppY19vdXQsIHUzMiAqcWNfb3V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00NjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDYzOlx0YmFzZV9hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00NjQtXHRydHdfd3JpdGUzMl9tYXNrKHJ0d2RldiwgYmFzZV9hZGRyICYjNDM7IDB4YmMsIDB4ZjAwMDAwMDAsIDB4MCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0NzU6XHRydHc4ODIyY19kYWNfY2FsX3JmX21vZGUocnR3ZGV2LCBcdTAwMjZpY19pbiwgXHUwMDI2cWNfaW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ3Ni1cdGljID0gaWNfaW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTUwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo1MDY6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9zdGVwMyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTUwNy1cdFx0XHRcdCAgIHUzMiBhZGNfaWMsIHUzMiBhZGNfcWMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTUxNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo1MTY6XHRiYXNlX2FkZHIgPSBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHBhdGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjUxNzpcdHJlYWRfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcihwYXRoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01MTgtXHRpYyA9ICppY19pbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTU2LVx0cnR3X3dyaXRlMzIocnR3ZGV2LCBiYXNlX2FkZHIgJiM0MzsgMHg2MCwgMHhmMDAwMDAwMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NTU3Olx0cnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlKHJ0d2RldiwgXHUwMDI2aWMsIFx1MDAyNnFjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01NTgtXHRpZiAoaWMgXHUwMDNlPSAweDEwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01ODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NTgzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfc3RlcDQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01ODQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjU4NTpcdHUzMiBiYXNlX2FkZHIgPSBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHBhdGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTU4Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjU5MzpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2JhY2t1cF92ZWMoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01OTQtXHRcdFx0XHRcdHU4IHBhdGgsIHU4IHZlYywgdTMyIHdfYWRkciwgdTMyIHJfYWRkcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjYxMDpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2JhY2t1cF9wYXRoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjExLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjE5LVx0LyogYmFja3VwIEkgdmVjdG9yICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjIwOlx0d19hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKSAmIzQzOyAweGIwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjYyMTpcdHJfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcihwYXRoKSAmIzQzOyAweDEwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjYyMjpcdHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX3ZlYyhydHdkZXYsIHBhdGgsIDAsIHdfYWRkciwgcl9hZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02MjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjI0LVx0LyogYmFja3VwIFEgdmVjdG9yICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjI1Olx0d19hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKSAmIzQzOyAweGIwICYjNDM7IHdfb2ZmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjYyNjpcdHJfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcihwYXRoKSAmIzQzOyAweDEwICYjNDM7IHJfb2ZmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjYyNzpcdHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX3ZlYyhydHdkZXYsIHBhdGgsIDEsIHdfYWRkciwgcl9hZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02MjgtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTYyOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2MzA6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9iYWNrdXBfZGNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjMxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjY1NDpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2JhY2t1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTY1NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTY2Ny1cdHJ0d193cml0ZTMyX21hc2socnR3ZGV2LCAweDE4NjAsIDB4ZmMwMDAwMDAsIDB4M2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjY2ODpcdHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX3BhdGgocnR3ZGV2LCBSRl9QQVRIX0EpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTY2OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjcyLVx0cnR3X3dyaXRlMzJfbWFzayhydHdkZXYsIDB4NDE2MCwgMHhmYzAwMDAwMCwgMHgzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjczOlx0cnR3ODgyMmNfZGFjX2NhbF9iYWNrdXBfcGF0aChydHdkZXYsIFJGX1BBVEhfQik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjY3NTpcdHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX2RjayhydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTY3Ni1cdHJ0d193cml0ZTMyX3NldChydHdkZXYsIDB4MTgzMCwgQklUKDMwKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTY4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2ODQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX2RjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTY4NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTcxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3MTQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX3ByZXBhcmUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03MTUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03NDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NzQzOlx0cnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX2RjayhydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTc0NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc2NzpzdGF0aWMgYm9vbCBydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmVfd2FpdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTc2OC1cdFx0XHRcdFx0ICB1MzIgdGFyZ2V0X2FkZHIsIHUzMiB0b2dnbGVfYWRkcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc4NDpzdGF0aWMgYm9vbCBydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmVfcGF0aChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTc4NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTc5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3OTM6XHR3X2kgPSBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHBhdGgpICYjNDM7IDB4YjA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6Nzk0Olx0cl9pID0gcnR3ODgyMmNfZ2V0X3BhdGhfcmVhZF9hZGRyKHBhdGgpICYjNDM7IDB4MDg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6Nzk1Olx0d19xID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKSAmIzQzOyAweGIwICYjNDM7IHdfb2ZmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc5NjpcdHJfcSA9IHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcihwYXRoKSAmIzQzOyAweDA4ICYjNDM7IHJfb2ZmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTc5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3OTg6XHRpZiAoIXJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZV93YWl0KHJ0d2Rldiwgcl9pLCB3X2kgJiM0MzsgMHg4KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03OTktXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjgxMTpcdGlmICghcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX3dhaXQocnR3ZGV2LCByX3EsIHdfcSAmIzQzOyAweDgpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTgxMi1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04MzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODMxOnN0YXRpYyBib29sIF9fcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODMyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo4MzM6XHRpZiAoIXJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZV9wYXRoKHJ0d2RldiwgUkZfUEFUSF9BKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04MzQtXHRcdHJldHVybiBmYWxzZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04MzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODM2Olx0aWYgKCFydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmVfcGF0aChydHdkZXYsIFJGX1BBVEhfQikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODM3LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg0MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo4NDI6c3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODQzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg1ODpcdHJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZV9wcmVwYXJlKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODU5LVx0aWYgKCFjaGVja19od19yZWFkeShydHdkZXYsIDB4MjgwOCwgMHg3ZmZmODAsIDB4ZmZmZikgfHxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg2NTpcdGlmICghX19ydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmUocnR3ZGV2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg2Ni1cdFx0cnR3X2VycihydHdkZXYsIFwmIzM0O2ZhaWxlZCB0byByZXN0b3JlIGRhY2sgdmVjdG9yc1xcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg4Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo4ODM6c3RhdGljIHZvaWQgcnR3ODgyMmNfcmZfZGFjX2NhbChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg4NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo4OTI6XHRpZiAocnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlKHJ0d2RldikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODkzLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg5Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo4OTc6XHRydHc4ODIyY19kYWNfYmFja3VwX3JlZyhydHdkZXYsIGJhY2t1cCwgYmFja3VwX3JmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04OTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODk5Olx0cnR3ODgyMmNfZGFjX2JiX3NldHRpbmcocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTAxLVx0LyogcGF0aC1BICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTAyOlx0cnR3ODgyMmNfZGFjX2NhbF9hZGMocnR3ZGV2LCBSRl9QQVRIX0EsIFx1MDAyNmFkY19pY19hLCBcdTAwMjZhZGNfcWNfYSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTAzLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgMTA7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTA0Olx0XHRydHc4ODIyY19kYWNfY2FsX3N0ZXAxKHJ0d2RldiwgUkZfUEFUSF9BKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MDU6XHRcdHJ0dzg4MjJjX2RhY19jYWxfc3RlcDIocnR3ZGV2LCBSRl9QQVRIX0EsIFx1MDAyNmljLCBcdTAwMjZxYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTA2LVx0XHRpY19hID0gaWM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MDk6XHRcdHJ0dzg4MjJjX2RhY19jYWxfc3RlcDMocnR3ZGV2LCBSRl9QQVRIX0EsIGFkY19pY19hLCBhZGNfcWNfYSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MTAtXHRcdFx0XHQgICAgICAgXHUwMDI2aWMsIFx1MDAyNnFjLCBcdTAwMjZpX2EsIFx1MDAyNnFfYSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkxNC1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MTU6XHRydHc4ODIyY19kYWNfY2FsX3N0ZXA0KHJ0d2RldiwgUkZfUEFUSF9BKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTE3LVx0LyogcGF0aC1CICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTE4Olx0cnR3ODgyMmNfZGFjX2NhbF9hZGMocnR3ZGV2LCBSRl9QQVRIX0IsIFx1MDAyNmFkY19pY19iLCBcdTAwMjZhZGNfcWNfYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTE5LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgMTA7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTIwOlx0XHRydHc4ODIyY19kYWNfY2FsX3N0ZXAxKHJ0d2RldiwgUkZfUEFUSF9CKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MjE6XHRcdHJ0dzg4MjJjX2RhY19jYWxfc3RlcDIocnR3ZGV2LCBSRl9QQVRIX0IsIFx1MDAyNmljLCBcdTAwMjZxYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTIyLVx0XHRpY19iID0gaWM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MjU6XHRcdHJ0dzg4MjJjX2RhY19jYWxfc3RlcDMocnR3ZGV2LCBSRl9QQVRIX0IsIGFkY19pY19iLCBhZGNfcWNfYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MjYtXHRcdFx0XHQgICAgICAgXHUwMDI2aWMsIFx1MDAyNnFjLCBcdTAwMjZpX2IsIFx1MDAyNnFfYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkzMC1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MzE6XHRydHc4ODIyY19kYWNfY2FsX3N0ZXA0KHJ0d2RldiwgUkZfUEFUSF9CKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MzItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkzOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5Mzk6XHRydHc4ODIyY19kYWNfcmVzdG9yZV9yZWcocnR3ZGV2LCBiYWNrdXAsIGJhY2t1cF9yZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTk0MS1cdC8qIGJhY2t1cCByZXN1bHRzIHRvIHJlc3RvcmUsIHNhdmluZyBhIGxvdCBvZiB0aW1lICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTQyOlx0cnR3ODgyMmNfZGFjX2NhbF9iYWNrdXAocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05NDMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTk0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5NTA6c3RhdGljIHZvaWQgcnR3ODgyMmNfcmZfeDJfY2hlY2soc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05NTEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05NjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTY0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3NldF9wb3dlcl90cmltKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHM4IGJiX2dhaW5bMl1bOF0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTY1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjk5NjpzdGF0aWMgdm9pZCBydHc4ODIyY19wb3dlcl90cmltKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTk3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTAyNy1cdGlmIChzZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTAyODpcdFx0cnR3ODgyMmNfc2V0X3Bvd2VyX3RyaW0ocnR3ZGV2LCBiYl9nYWluKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDI5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEwMzM6c3RhdGljIHZvaWQgcnR3ODgyMmNfdGhlcm1hbF90cmltKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTAzNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTA1MTpzdGF0aWMgdm9pZCBydHc4ODIyY19wYV9iaWFzKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTA1Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwNzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTA3MzpzdGF0aWMgdm9pZCBydHc4ODIyY19yZmtfaGFuZHNoYWtlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIGJvb2wgaXNfYmVmb3JlX2spXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTA3NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTExOTpzdGF0aWMgdm9pZCBydHc4ODIyY19yZmtfcG93ZXJfc2F2ZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExMjAtXHRcdFx0XHQgICAgYm9vbCBpc19wb3dlcl9zYXZlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjExMzE6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX2JhY2t1cF9iYl9yZWcoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgY29uc3QgdTMyIHJlZ1tdLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExMzItXHRcdFx0XHRcdCAgdTMyIHJlZ19iYWNrdXBbXSwgdTMyIHJlZ19udW0pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTE0NDpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfcmVsb2FkX2JiX3JlZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExNDUtXHRcdFx0XHRcdCAgY29uc3QgdTMyIHJlZ1tdLCB1MzIgcmVnX2JhY2t1cFtdLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0xMTU3PXN0YXRpYyBib29sIGNoZWNrX3JmX3N0YXR1cyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBzdGF0dXMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTE3MjpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfdHhfcGF1c2Uoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTczLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTE4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMTg4OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19iYl9kcGsoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTg5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTIxOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMjIwOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19hZmVfZHBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTIyMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEyNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTI1NjpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfYWZlX2Rwa19yZXN0b3JlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTI1Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEyODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTI4OTpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfYmJfZHBrX3Jlc3RvcmUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMjkwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTMyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMzI5OnN0YXRpYyBib29sIF9ydHc4ODIyY190eGdhcGtfZ2Fpbl92YWxpZChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgZ2FpbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzMwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTMzNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMzM4OnN0YXRpYyB2b2lkIF9ydHc4ODIyY190eGdhcGtfd3JpdGVfZ2Fpbl9iYl90YWJsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEzMzktXHRcdFx0XHRcdFx0IHU4IGJhbmQsIHU4IHBhdGgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEzNjgtXHRcdHYgPSB0eGdhcGstXHUwMDNlcmYzZl9icFtiYW5kXVtnYWluXVtwYXRoXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMzY5Olx0XHRpZiAoX3J0dzg4MjJjX3R4Z2Fwa19nYWluX3ZhbGlkKHJ0d2RldiwgdikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzcwLVx0XHRcdGlmICghY2hlY2tfdHhnYWluKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEzOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTM5MjpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfd3JpdGVfZ2Fpbl9iYl90YWJsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEzOTMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDAwLVx0XHRmb3IgKHBhdGggPSAwOyBwYXRoIFx1MDAzYyBydHdkZXYtXHUwMDNlaGFsLnJmX3BhdGhfbnVtOyBwYXRoJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE0MDE6XHRcdFx0X3J0dzg4MjJjX3R4Z2Fwa193cml0ZV9nYWluX2JiX3RhYmxlKHJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDAyLVx0XHRcdFx0XHRcdFx0ICAgICBiYW5kLCBwYXRoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNDA3OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19yZWFkX29mZnNldChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE0MDgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE0ODQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX2NhbGN1bGF0ZV9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQ5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNDk1Olx0cnR3ODgyMmNfdHhnYXBrX2JhY2t1cF9iYl9yZWcocnR3ZGV2LCBiYl9yZWcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQ5Ni1cdFx0XHRcdCAgICAgIHJlZ19iYWNrdXAsIEFSUkFZX1NJWkUoYmJfcmVnKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1MTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTUxNzpcdFx0cnR3ODgyMmNfdHhnYXBrX3JlYWRfb2Zmc2V0KHJ0d2RldiwgcGF0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTUxOC1cdFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLCBcJiMzNDs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTU1MTpcdFx0cnR3ODgyMmNfdHhnYXBrX3JlYWRfb2Zmc2V0KHJ0d2RldiwgcGF0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU1Mi1cdFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLCBcJiMzNDs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU1My1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNTU0Olx0cnR3ODgyMmNfdHhnYXBrX3JlbG9hZF9iYl9yZWcocnR3ZGV2LCBiYl9yZWcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU1NS1cdFx0XHRcdCAgICAgIHJlZ19iYWNrdXAsIEFSUkFZX1NJWkUoYmJfcmVnKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTU1ODpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfcmZfcmVzdG9yZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE1NzA6c3RhdGljIHUzMiBydHc4ODIyY190eGdhcGtfY2FsX2dhaW4oc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyIGdhaW4sIHM4IG9mZnNldClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTcxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNTc2Olx0aWYgKF9ydHc4ODIyY190eGdhcGtfZ2Fpbl92YWxpZChydHdkZXYsIGdhaW4pKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU3Ny1cdFx0bmV3X2dhaW4gPSBnYWluO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE1OTQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX3dyaXRlX3R4X2dhaW4oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTk1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTYyNC1cdFx0XHRcdHYgPSB0eGdhcGstXHUwMDNlcmYzZl9icFtiYW5kXVtqXVtwYXRoXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNjI1Olx0XHRcdFx0aWYgKF9ydHc4ODIyY190eGdhcGtfZ2Fpbl92YWxpZChydHdkZXYsIHYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2MjYtXHRcdFx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjMyLVx0XHRcdHYgPSB0eGdhcGstXHUwMDNlcmYzZl9icFtiYW5kXVtpXVtwYXRoXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNjMzOlx0XHRcdGlmIChfcnR3ODgyMmNfdHhnYXBrX2dhaW5fdmFsaWQocnR3ZGV2LCB2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2MzQtXHRcdFx0XHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2NDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTY1MDpcdFx0XHR0bXBfM2YgPSBydHc4ODIyY190eGdhcGtfY2FsX2dhaW4ocnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2NTEtXHRcdFx0XHRcdFx0XHQgIHR4Z2Fway1cdTAwM2VyZjNmX2JwW2JhbmRdW2ldW3BhdGhdLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE2NjQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX3NhdmVfYWxsX3R4X2dhaW5fdGFibGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjY1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTY4MS1cdFx0XHRcJiMzNDtbVFhHQVBLXSBBbHJlYWR5IFJlYWQgdHhnYXBrLVx1MDAzZXJlYWRfdHhnYWluIHJldHVybiEhIVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTY4MjpcdFx0cnR3ODgyMmNfdHhnYXBrX3dyaXRlX2dhaW5fYmJfdGFibGUocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjgzLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3MTgtXHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTcxOTpcdHJ0dzg4MjJjX3R4Z2Fwa193cml0ZV9nYWluX2JiX3RhYmxlKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTcyMC1cdHR4Z2Fway1cdTAwM2VyZWFkX3R4Z2FpbiA9IDE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3MjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTcyMzpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGsoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzI0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTczMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzMyOlx0cnR3ODgyMmNfdHhnYXBrX3NhdmVfYWxsX3R4X2dhaW5fdGFibGUocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzMzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NDc6XHRydHc4ODIyY190eGdhcGtfYmFja3VwX2JiX3JlZyhydHdkZXYsIGJiX3JlZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzQ4LVx0XHRcdFx0ICAgICAgYmJfcmVnX2JhY2t1cCwgQVJSQVlfU0laRShiYl9yZWcpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzQ5Olx0cnR3ODgyMmNfdHhnYXBrX3R4X3BhdXNlKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc1MC1cdGZvciAocGF0aCA9IDA7IHBhdGggXHUwMDNjIHJ0d2Rldi1cdTAwM2VoYWwucmZfcGF0aF9udW07IHBhdGgmIzQzOyYjNDM7KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3NTItXHRcdFx0XHRcdCAgICAgIFJGX0NGR0NILCBSRlJFR19NQVNLKSBcdTAwMjYgTUFTS0JZVEUwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NTM6XHRcdHJ0dzg4MjJjX3R4Z2Fwa19iYl9kcGsocnR3ZGV2LCBwYXRoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzU0Olx0XHRydHc4ODIyY190eGdhcGtfYWZlX2RwayhydHdkZXYsIHBhdGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NTU6XHRcdHJ0dzg4MjJjX3R4Z2Fwa19jYWxjdWxhdGVfb2Zmc2V0KHJ0d2RldiwgcGF0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc1NjpcdFx0cnR3ODgyMmNfdHhnYXBrX3JmX3Jlc3RvcmUocnR3ZGV2LCBwYXRoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzU3Olx0XHRydHc4ODIyY190eGdhcGtfYWZlX2Rwa19yZXN0b3JlKHJ0d2RldiwgcGF0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc1ODpcdFx0cnR3ODgyMmNfdHhnYXBrX2JiX2Rwa19yZXN0b3JlKHJ0d2RldiwgcGF0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc1OS1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzYwOlx0cnR3ODgyMmNfdHhnYXBrX3dyaXRlX3R4X2dhaW4ocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzYxOlx0cnR3ODgyMmNfdHhnYXBrX3JlbG9hZF9iYl9yZWcocnR3ZGV2LCBiYl9yZWcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc2Mi1cdFx0XHRcdCAgICAgIGJiX3JlZ19iYWNrdXAsIEFSUkFZX1NJWkUoYmJfcmVnKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3NjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc2NTpzdGF0aWMgdm9pZCBydHc4ODIyY19kb19nYXBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc2Ni17XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTE4NgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDIwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgcnR3ODggRHJpdmVyIGFuZCBVU0IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSYjMzk7bSBzZWVpbmcgdGhhdCB0aGUgYHJ0dzg4YCBkcml2ZXIgaGFzIGEgVVNCIGNvdW50ZXJwYXJ0LCBgcnR3ODhfdXNiYC4gVGhlIGBydHc4ODIyY2AgY29kZSwgc3BlY2lmaWNhbGx5LCBzZWVtcyB0byBiZSB1dGlsaXplZCBieSB0aGUgVVNCIHZhcmlhbnQsIGBydHc4ODIyY3VgLiBOb3csIHRoZSBjcnVjaWFsIHBhcnQgaGVyZSBpcyB0aGUgY29ubmVjdGlvbiB3aXRoIHN5emthbGxlciBhbmQgaXRzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyB0aHJvdWdoIGBzeXpfdXNiX2Nvbm5lY3RgLiBUaGlzIG1lYW5zLCBhbmQgdGhpcyBpcyBpbXBvcnRhbnQsIHRoYXQgSSBjYW4gcG90ZW50aWFsbHkgcmVhY2ggYW5kIGludGVyYWN0IHdpdGggdGhpcyBkcml2ZXIgd2l0aGluIGEgdmlydHVhbGl6ZWQgUUVNVSBlbnZpcm9ubWVudCwgd2hpY2ggaXMgYSBzaWduaWZpY2FudCBhZHZhbnRhZ2UgZm9yIG15IHJlc2VhcmNoLgoKVGhlIGtleSBxdWVzdGlvbiBpbiBteSBtaW5kIGlzIHdoZXRoZXIgYHJ0dzg4YCAqcmVxdWlyZXMqIHBoeXNpY2FsIGhhcmR3YXJlLCBvciBpZiBpdHMgVVNCLWNvbm5lY3RlZCBjb21wb25lbnQsIGBydHc4ODIyY3VgLCBjYW4gYmUgKmZ1bGx5KiBlbXVsYXRlZCB0aHJvdWdoIFVTQiBnYWRnZXQgZW11bGF0aW9uLiBzeXprYWxsZXIsIGJlaW5nIHRoZSBwb3dlcmZ1bCB0b29sIHRoYXQgaXQgaXMsIGNhbiBpbmplY3QgZGVzY3JpcHRvcnMgYW5kIHJlc3BvbnNlcywgYmFzaWNhbGx5IG1pbWlja2luZyBhIHJlYWwgVVNCIGRldmljZS4KCklmIGBydHc4ODIyY3VgICppcyogaW5kZWVkIGEgVVNCIGRyaXZlciwgaXQgc2hvdWxkIHJlZ2lzdGVyIGl0c2VsZiB3aXRoIHRoZSBrZXJuZWwgdmlhIGB1c2JfcmVnaXN0ZXJgLiBUaGlzIGlzIGEgY3J1Y2lhbCBjaGVjay4gSWYgbXkgc3l6a2FsbGVyLWVtdWxhdGVkIFVTQiBkZXZpY2UgcHJlc2VudHMgdGhlIGNvcnJlY3QgdmVuZG9yL3Byb2R1Y3QgSUQsIHRoZW4gdGhlIGtlcm5lbCAqc2hvdWxkKiBhdHRlbXB0IHRvIHByb2JlIGBydHc4ODIyY3VfcHJvYmVgLgoKVGhlcmVmb3JlLCBteSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgKm11c3QqIGV4YW1pbmUgdGhlIGNvZGUgZm9yIGBydHc4ODIyY3VfcHJvYmVgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSByZWFsIG1hZ2ljIGxpa2VseSBoYXBwZW5zLCBhbmQgd2hlcmUgYW55IHZ1bG5lcmFiaWxpdGllcyBtaWdodCByZXZlYWwgdGhlbXNlbHZlcy4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgcHJvYmUgZnVuY3Rpb24gZG9lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4ODIyY3VfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jPTI4PU1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBydHdfODgyMmN1X2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmN1LmMtMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jOjMwOnN0YXRpYyBpbnQgcnR3ODgyMmN1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYy0zMS1cdFx0XHQgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYz0zNj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4MjJjdV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYy0zOC1cdC5pZF90YWJsZSA9IHJ0d184ODIyY3VfaWRfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jOjM5Olx0LnByb2JlID0gcnR3ODgyMmN1X3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYy00MC1cdC5kaXNjb25uZWN0ID0gcnR3X3VzYl9kaXNjb25uZWN0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA2OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MTQzCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgcnR3ODgyMmN1X3Byb2JlYCBmdW5jdGlvbi4gSSYjMzk7bSBnb2luZyB0byB3YWxrIHRocm91Z2ggdGhpcyBsaW5lIGJ5IGxpbmUgYW5kIHJlYWxseSB1bmRlcnN0YW5kIHdoYXQgdGhpcyB0aGluZyBpcyBkb2luZy4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIHJvbGUuIEkmIzM5O20gZm9jdXNpbmcgaW4sIHJlYWxseSwgb24gd2hhdCBpdCBkb2VzIGFuZCB3aHkgaXQgZG9lcyBpdC4gV2hhdCBhcmUgaXRzIGRlcGVuZGVuY2llcz8gV2hhdCBhcmUgdGhlIHBvdGVudGlhbCBmYWlsdXJlIHBvaW50cz8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgdGhhdCBJJiMzOTtsbCBuZWVkIHRvIGtub3cgdGhpcyBzdHVmZiBjb2xkLCBlc3BlY2lhbGx5IGlmIEkgaGF2ZSB0byB0cm91Ymxlc2hvb3QgaXQgbGF0ZXIuIFRoaXMgaXMgaW1wb3J0YW50LiBMZXQmIzM5O3MgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdGF0aWMgaW50IHJ0dzg4MjJjdV9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmN1LmM9Mjg9TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHJ0d184ODIyY3VfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYy0yOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmN1LmM6MzA6c3RhdGljIGludCBydHc4ODIyY3VfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jLTMxLVx0XHRcdCAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY1MDAKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhpbmtpbmcsIGV4cHJlc3NlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaXZpbmcgaW50byB0aGUgRHJpdmVyIENvZGUqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgc3BlY2lmaWMgcGllY2Ugb2YgdGhlIGBydHc4ODIyY3UuY2AgZHJpdmVyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGp1bXAgcmlnaHQgaW4gYW5kIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZyBhcm91bmQgbGluZSAzMC4gVGhhdCYjMzk7cyB1c3VhbGx5IGEgZ29vZCBzdGFydGluZyBwb2ludC4gSXQmIzM5O3Mgb2Z0ZW4gd2hlcmUgdGhlIGNvcmUgZnVuY3Rpb24gZGVmaW5pdGlvbiBvciBhIGNydWNpYWwgaW5pdGlhbGl6YXRpb24gYmxvY2sgcmVzaWRlcywgZ2l2aW5nIG1lIGEgc29saWQgY29udGV4dCBmb3IgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljLiBJJiMzOTttIGhvcGluZyB0byBxdWlja2x5IGdyYXNwIHRoZSBoaWdoLWxldmVsIHB1cnBvc2Ugb2YgdGhhdCBzZWN0aW9uIGFuZCB0aGVuIGRyaWxsIGRvd24gaW50byBzcGVjaWZpYyBkZXRhaWxzIGFzIG5lZWRlZC4gTGV0JiMzOTtzIHNlZSB3aGF0IHNlY3JldHMgaXQgaG9sZHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA2OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjA6XHRcdHsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oUlRXX1VTQl9WRU5ET1JfSURfUkVBTFRFSywgMHhkODJiLCAweGZmLCAweGZmLCAweGZmKSxcbiAgMjE6XHRcdCAgLmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KVx1MDAyNihydHc4ODIyY19od19zcGVjKSB9LFxuICAyMjpcdFx0eyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDEzYjEsIDB4MDA0MywgMHhmZiwgMHhmZiwgMHhmZiksXG4gIDIzOlx0XHQgIC5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdClcdTAwMjYocnR3ODgyMmNfaHdfc3BlYykgfSwgLyogQWxwaGEgLSBBbHBoYSAqL1xuICAyNDpcdFx0eyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDIwMDEsIDB4MzMyOSwgMHhmZiwgMHhmZiwgMHhmZiksXG4gIDI1Olx0XHQgIC5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdClcdTAwMjYocnR3ODgyMmNfaHdfc3BlYykgfSwgLyogRC1MaW5rIEFDMTNVIHJldi4gQTEgKi9cbiAgMjY6XHRcdHt9LFxuICAyNzpcdH07XG4gIDI4Olx0TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHJ0d184ODIyY3VfaWRfdGFibGUpO1xuICAyOTpcdFxuICAzMDpcdHN0YXRpYyBpbnQgcnR3ODgyMmN1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuICAzMTpcdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbiAgMzI6XHR7XG4gIDMzOlx0XHRyZXR1cm4gcnR3X3VzYl9wcm9iZShpbnRmLCBpZCk7XG4gIDM0Olx0fVxuICAzNTpcdFxuICAzNjpcdHN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODgyMmN1X2RyaXZlciA9IHtcbiAgMzc6XHRcdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXG4gIDM4Olx0XHQuaWRfdGFibGUgPSBydHdfODgyMmN1X2lkX3RhYmxlLFxuICAzOTpcdFx0LnByb2JlID0gcnR3ODgyMmN1X3Byb2JlLFxuICA0MDpcdFx0LmRpc2Nvbm5lY3QgPSBydHdfdXNiX2Rpc2Nvbm5lY3QsXG4gIDQxOlx0fTtcbiAgNDI6XHRtb2R1bGVfdXNiX2RyaXZlcihydHdfODgyMmN1X2RyaXZlcik7XG4gIDQzOlx0XG4gIDQ0Olx0TU9EVUxFX0FVVEhPUihcJiMzNDtSZWFsdGVrIENvcnBvcmF0aW9uXCYjMzQ7KTtcbiAgNDU6XHRNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7UmVhbHRlayA4MDIuMTFhYyB3aXJlbGVzcyA4ODIyY3UgZHJpdmVyXCYjMzQ7KTtcbiAgNDY6XHRNT0RVTEVfTElDRU5TRShcJiMzNDtEdWFsIEJTRC9HUExcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzMwNQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDI1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipUcmFjaW5nIHRoZSBVU0IgUHJvYmUgYW5kIENhbGlicmF0aW9uIEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyB0aGUgdHJhY2UgYmVnaW5zIHdpdGggYSBjYWxsIHRvIGBydHdfdXNiX3Byb2JlYC4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IHN0ZW1taW5nIGZyb20gdGhpcyBmdW5jdGlvbiwgcGFydGljdWxhcmx5IHRvIHNlZSBpZiBpdCB1bHRpbWF0ZWx5IHJlYWNoZXMgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYCBvciBzb21ldGhpbmcgZnVuY3Rpb25hbGx5IHNpbWlsYXIuIFRoaXMgaXMgd2hlcmUgdGhlIHBhdGNoIHRvdWNoZXMgdGhpbmdzLgoKVGhlIHBhdGNoIGl0c2VsZiBzZWVtcyB0byBiZSBoZWF2aWx5IGZvY3VzZWQgb24gdGhlIERBQyBjYWxpYnJhdGlvbiBwcm9jZXNzLCBhcyBpdCBtb2RpZmllcyBzZXZlcmFsIGtleSBmdW5jdGlvbnM6IGBydHc4ODIyY19kYWNfaXFfc29ydGAsIGBydHc4ODIyY19kYWNfaXFfb2Zmc2V0YCwgYHJ0dzg4MjJjX2RhY19pcV9jaGVja2AsIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAsIGBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaGAsIGFuZCBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYC4gVGhlc2UgYXBwZWFyIHRvIGJlIGludGltYXRlbHkgaW52b2x2ZWQgaW4gYSBjb21wbGV4IGNhbGlicmF0aW9uIHNlcXVlbmNlLgoKTG9va2luZyBhdCB0aGUgY2FsbCBncmFwaCwgaXQmIzM5O3MgY2xlYXIgdGhhdCBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBpcyB0aGUgY2VudHJhbCBmdW5jdGlvbiBkcml2aW5nIHRoZXNlLiBJdCBzZWVtcyB0byBiZSBjYWxsZWQgZnJvbSBgcnR3ODgyMmNfZGFjX2NhbF9zdGVwMmAgYW5kIGBydHc4ODIyY19kYWNfY2FsX3N0ZXAzYCwgd2hpY2gsIGluIHR1cm4sIGFyZSBjYWxsZWQgZnJvbSBgcnR3ODgyMmNfcmZfZGFjX2NhbGAuIE5vdywgSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnVydGhlcjogd2hlcmUgaXMgYHJ0dzg4MjJjX3JmX2RhY19jYWxgIGludm9rZWQ/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc3RhY2sgZnJvbSB0aGUgVVNCIHByb2JlIHRvIHRoaXMgcG9pbnQgaXMgY3J1Y2lhbCB0byBzZWVpbmcgdGhlIGJpZ2dlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4ODIyY19yZl9kYWNfY2FsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTg0Mj1zdGF0aWMgYm9vbCBydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmUoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg4MzpzdGF0aWMgdm9pZCBydHc4ODIyY19yZl9kYWNfY2FsKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODg0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9MTc3OD1zdGF0aWMgdm9pZCBydHc4ODIyY19yZl9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc3OS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc4MDpcdHJ0dzg4MjJjX3JmX2RhY19jYWwocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzgxLVx0cnR3ODgyMmNfcmZfeDJfY2hlY2socnR3ZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgzMjgKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIHF1ZXN0aW9uOgoKKipUcmFjaW5nIHRoZSBDYWxsIE9yaWdpbiBvZiBgcnR3ODgyMmNfcmZfaW5pdGAqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYHJ0dzg4MjJjX3JmX2luaXRgIGlzIGJlaW5nIGNhbGxlZCBmcm9tLiBUaGlzIGZ1bmN0aW9uIGlzIHByZXR0eSBjcnVjaWFsIGluIHRoZSBSZWFsdGVrIFdpRmkgZHJpdmVyIHN0YWNrLCBlc3BlY2lhbGx5IGZvciB0aGUgODgyMkMgY2hpcCwgc28ga25vd2luZyBpdHMgZW50cnkgcG9pbnQgaXMgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGFuZCBwb3RlbnRpYWwgZGVidWdnaW5nLiBJJiMzOTtsbCBuZWVkIHRvIHJldHJhY2UgdGhlIGNvZGUgZXhlY3V0aW9uIHBhdGguIEkmIzM5O20gYXNzdW1pbmcgdGhhdCBpdCYjMzk7cyBwYXJ0IG9mIHRoZSBnZW5lcmFsIGRyaXZlciBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4KCkZpcnN0LCBJJiMzOTtkIHdhbnQgdG8gdXNlIGEgdG9vbCBsaWtlIGBncmVwYCAob3IgbXkgSURFJiMzOTtzIHNlYXJjaCBmdW5jdGlvbikgdG8gc2VhcmNoIHRoZSBkcml2ZXIgc291cmNlIHRyZWUgZm9yIGFsbCBpbnN0YW5jZXMgd2hlcmUgYHJ0dzg4MjJjX3JmX2luaXRgIGlzIGNhbGxlZC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGxpc3Qgb2YgcG90ZW50aWFsIGNhbGwgc2l0ZXMuIFRoZW4sIEkmIzM5O2QgbmVlZCB0byBleGFtaW5lIHRob3NlIHNpdGVzLCBsb29raW5nIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlIGNhbGwgYW5kIHdoaWNoIGZ1bmN0aW9ucyBhcmUgY2FsbGluZyBpdC4gSSYjMzk7ZCBsb29rIGZvciBmdW5jdGlvbiBwcm90b3R5cGVzIG9yIGRlZmluaXRpb25zIGFzc29jaWF0ZWQgd2l0aCBpbml0aWFsaXphdGlvbiwgcHJvYmluZyBvciBkZXZpY2UgZGV0ZWN0aW9uLgoKSSYjMzk7ZCBhbHNvIGNvbnNpZGVyIHRoZSBicm9hZGVyIGRyaXZlciBzdHJ1Y3R1cmUuIERvZXMgdGhpcyBkcml2ZXIgZm9sbG93IGEgc3RhbmRhcmQgcHJvYmUvYXR0YWNoL2RldGFjaCBtb2RlbD8gSWYgc28sIGBydHc4ODIyY19yZl9pbml0YCBsaWtlbHkgZmFsbHMgc29tZXdoZXJlIHdpdGhpbiB0aGUgJiMzNDthdHRhY2gmIzM0OyBwaGFzZSwgYWZ0ZXIgdGhlIGhhcmR3YXJlIGlzIHJlY29nbml6ZWQuIEdpdmVuIHRoYXQsIEkmIzM5O2QgdHJhY2UgYmFjayBmcm9tIGFueSBhdHRhY2ggb3IgaW5pdGlhbGl6YXRpb24gcmVsYXRlZCBmdW5jdGlvbnMsIGxvb2tpbmcgdG8gc2VlIHdoaWNoIGZ1bmN0aW9ucyBldmVudHVhbGx5IGVuZCB1cCBjYWxsaW5nIGBydHc4ODIyY19yZl9pbml0YC4KCkJhc2ljYWxseSwgSSYjMzk7bSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBvYnZpb3VzIGFuZCB3b3JrIG15IHdheSBvdXR3YXJkLCBmb2xsb3dpbmcgdGhlIGZ1bmN0aW9uIGNhbGwgZ3JhcGguIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgYXJndW1lbnRzIGJlaW5nIHBhc3NlZCB0byBgcnR3ODgyMmNfcmZfaW5pdGAgYXMgd2VsbCwgYXMgdGhvc2Ugd291bGQgcHJvdmlkZSBoaW50cyBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIHN5c3RlbSBhdCB0aGUgcG9pbnQgb2YgdGhlIGNhbGwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA2OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg4MjJjX3JmX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9MTc2NT1zdGF0aWMgdm9pZCBydHc4ODIyY19kb19nYXBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3NzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc3ODpzdGF0aWMgdm9pZCBydHc4ODIyY19yZl9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc3OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTE4MDM9c3RhdGljIHZvaWQgcnR3ODgyMmNfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xODQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE4NDk6XHRydHc4ODIyY19yZl9pbml0KHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTg1MC1cdHJ0dzg4MjJjX3B3cnRyYWNrX2luaXQocnR3ZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkxNjcKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIHF1ZXN0aW9uOgoKKipQaW5wb2ludGluZyB0aGUgT3JpZ2luIG9mIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCBmcm9tLiBUaGF0JiMzOTtzIHRoZSBjb3JlIHF1ZXN0aW9uLCByaWdodD8gSWRlbnRpZnlpbmcgdGhlIGNhbGwgc2l0ZXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgY29udGV4dCwgdGhlIGRhdGEgaXQmIzM5O3Mgb3BlcmF0aW5nIG9uLCBhbmQgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuIEtub3dpbmcgdGhlIGNhbGxlciBhbHNvIGhlbHBzIGluIGRlYnVnZ2luZyBhbmQgbW9kaWZpY2F0aW9uLCBhcyBJIGNhbiB0cmFjZSB0aGUgY2FsbCBzdGFjayB0byBzZWUgdGhlIHNlcXVlbmNlIG9mIGV2ZW50cyBsZWFkaW5nIHVwIHRvIGl0cyBleGVjdXRpb24uIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bGwgbmVlZCB0byB1c2Ugc29tZSB0b29saW5nLCBtb3N0IGxpa2VseSBhIGNvZGUgc2VhcmNoIG9yIHN0YXRpYyBhbmFseXNpcyB0b29sLiBJJiMzOTtkIHR5cGljYWxseSBzdGFydCBieSBncmVwcGluZyB0aGUgY29kZWJhc2UgZm9yIHRoZSBmdW5jdGlvbiBuYW1lIGRpcmVjdGx5LiBGcm9tIHRoZXJlLCBJJiMzOTtkIGV4YW1pbmUgdGhlIGNhbGwgc2l0ZXMuIEkgd2lsbCBiZSBsb29raW5nIGZvciBjb21tb24gcGF0dGVybnMuIElzIGl0IGNhbGxlZCB3aXRoaW4gYSBzcGVjaWZpYyBkcml2ZXIgY29tcG9uZW50LCBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIG9yIGluIHJlc3BvbnNlIHRvIHNvbWUga2luZCBvZiBldmVudD8gVGhlIGNvbnRleHQgd2lsbCBiZSBrZXkuIE9uY2UgSSBsb2NhdGUgdGhlIGNhbGxzLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiBvcmRlciB0byB0cnVseSB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgZm9yIHRoZSBmdW5jdGlvbiBjYWxsLCBhbmQgaG93IHRoaXMgZnVuY3Rpb24gY2FsbCBpcyByZWxhdGVkIHRvIG90aGVyIHJvdXRpbmVzIGluIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4ODIyY19waHlfc2V0X3BhcmFtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTE3ODc9c3RhdGljIHZvaWQgcnR3ODgyMmNfcHdydHJhY2tfaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xODAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE4MDM6c3RhdGljIHZvaWQgcnR3ODgyMmNfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE4MDQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz00ODk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MjJjX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDkwMS1cdC5wb3dlcl9vZmZcdFx0PSBydHdfcG93ZXJfb2ZmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ5MDI6XHQucGh5X3NldF9wYXJhbVx0XHQ9IHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDkwMy1cdC5yZWFkX2VmdXNlXHRcdD0gcnR3ODgyMmNfcmVhZF9lZnVzZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk4ODEKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipEaWdnaW5nIGludG8gUEhZIFBhcmFtZXRlciBTZXR0aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgcGh5X3NldF9wYXJhbWAuIFRoaXMgaXMgYSBjaGlwIG9wZXJhdGlvbiwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgYSBwcmV0dHkgZnVuZGFtZW50YWwgZnVuY3Rpb24gZGVhbGluZyB3aXRoIHRoZSBwaHlzaWNhbCBsYXllciBvZiB0aGUgY29tbXVuaWNhdGlvbiBpbnRlcmZhY2UuIFRoZSBxdWVzdGlvbiBub3cgaXM6IHdoZXJlIGlzIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24gYWN0dWFsbHkgYmVpbmcgKnVzZWQqPyBJIG5lZWQgdG8gdHJhY2UgaXRzIGNhbGxzIHRvIHVuZGVyc3RhbmQgaG93IHBhcmFtZXRlcnMgYXJlIGJlaW5nIHNldCwgd2hhdCBjb250ZXh0cyB0cmlnZ2VyIHBhcmFtZXRlciBjaGFuZ2VzLCBhbmQgdWx0aW1hdGVseSwgaG93IHRoaXMgaW1wYWN0cyB0aGUgb3ZlcmFsbCBzeXN0ZW0gYmVoYXZpb3IuIEtub3dpbmcgd2hlcmUgYHBoeV9zZXRfcGFyYW1gIGlzIGNhbGxlZCB3aWxsIGdpdmUgbWUgaW5zaWdodHMgaW50byBpdHMgcm9sZSB3aXRoaW4gdGhlIHdpZGVyIHNvZnR3YXJlIGFyY2hpdGVjdHVyZS4gVGltZSB0byBzdGFydCBkaWdnaW5nIHRocm91Z2ggdGhlIGNvZGViYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfc2V0X3BhcmFtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MTM3ND1pbnQgcnR3X3Bvd2VyX29uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTQxMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE0MTM6XHRjaGlwLVx1MDAzZW9wcy1cdTAwM2VwaHlfc2V0X3BhcmFtKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNDE0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oPTg2Mj1zdHJ1Y3QgcnR3X2NoaXBfb3BzIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaC04NjktXHRpbnQgKCpyZWFkX2VmdXNlKShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCAqbWFwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oOjg3MDpcdHZvaWQgKCpwaHlfc2V0X3BhcmFtKShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oLTg3MS1cdHZvaWQgKCpzZXRfY2hhbm5lbCkoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggY2hhbm5lbCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM9NTUzPXN0YXRpYyB2b2lkIHJ0dzg3MDNiX3B3cnRyYWNrX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmMtNTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jOjU3ODpzdGF0aWMgdm9pZCBydHc4NzAzYl9waHlfc2V0X3BhcmFtKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmMtNTc5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM9MTgzNj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4NzAzYl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jLTE4NDMtXHQucmVhZF9lZnVzZVx0XHQ9IHJ0dzg3MDNiX3JlYWRfZWZ1c2UsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM6MTg0NDpcdC5waHlfc2V0X3BhcmFtXHRcdD0gcnR3ODcwM2JfcGh5X3NldF9wYXJhbSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYy0xODQ1LVx0LnNldF9jaGFubmVsXHRcdD0gcnR3ODcwM2Jfc2V0X2NoYW5uZWwsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jPTY3PXN0YXRpYyB2b2lkIHJ0dzg3MjNkX3B3cnRyYWNrX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmMtODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmM6ODU6c3RhdGljIHZvaWQgcnR3ODcyM2RfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jLTg2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmM9MTM5Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4NzIzZF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jLTEzOTQtXHQucG93ZXJfb2ZmXHRcdD0gcnR3X3Bvd2VyX29mZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYzoxMzk1Olx0LnBoeV9zZXRfcGFyYW1cdFx0PSBydHc4NzIzZF9waHlfc2V0X3BhcmFtLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jLTEzOTYtXHQucmVhZF9lZnVzZVx0XHQ9IHJ0dzg3MjN4X3JlYWRfZWZ1c2UsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYS5jPTkxND1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODEyYV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYS5jLTkxNi1cdC5wb3dlcl9vZmZcdFx0PSBydHc4ODEyYV9wb3dlcl9vZmYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhLmM6OTE3Olx0LnBoeV9zZXRfcGFyYW1cdFx0PSBOVUxMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYS5jLTkxOC1cdC5yZWFkX2VmdXNlXHRcdD0gcnR3ODh4eGFfcmVhZF9lZnVzZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmM9MjY1PXN0YXRpYyB2b2lkIHJ0dzg4MTRhX2NvbmZpZ19jY2tfcnhfYW50ZW5uYV9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jLTI4Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYzoyODM6c3RhdGljIHZvaWQgcnR3ODgxNGFfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jLTI4NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jPTIwNTA9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgxNGFfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYy0yMDUyLVx0LnBvd2VyX29mZlx0XHQ9IHJ0d19wb3dlcl9vZmYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmM6MjA1MzpcdC5waHlfc2V0X3BhcmFtXHRcdD0gcnR3ODgxNGFfcGh5X3NldF9wYXJhbSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYy0yMDU0LVx0LnJlYWRfZWZ1c2VcdFx0PSBydHc4ODE0YV9yZWFkX2VmdXNlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYz04NjA9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgyMWFfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYy04NjItXHQucG93ZXJfb2ZmXHRcdD0gcnR3ODgyMWFfcG93ZXJfb2ZmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYS5jOjg2MzpcdC5waHlfc2V0X3BhcmFtXHRcdD0gTlVMTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYy04NjQtXHQucmVhZF9lZnVzZVx0XHQ9IHJ0dzg4eHhhX3JlYWRfZWZ1c2UsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jPTE1MT1zdGF0aWMgdm9pZCBydHc4ODIxY19waHlfYmZfaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYy0xNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmM6MTU4OnN0YXRpYyB2b2lkIHJ0dzg4MjFjX3BoeV9zZXRfcGFyYW0oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYy0xNTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYz0xNjU4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MjFjX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmMtMTY2MC1cdC5wb3dlcl9vZmZcdFx0PSBydHdfcG93ZXJfb2ZmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jOjE2NjE6XHQucGh5X3NldF9wYXJhbVx0XHQ9IHJ0dzg4MjFjX3BoeV9zZXRfcGFyYW0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmMtMTY2Mi1cdC5yZWFkX2VmdXNlXHRcdD0gcnR3ODgyMWNfcmVhZF9lZnVzZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmM9MTQ1PXN0YXRpYyB2b2lkIHJ0dzg4MjJiX3BoeV9iZl9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jLTE1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYzoxNTI6c3RhdGljIHZvaWQgcnR3ODgyMmJfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jLTE1My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jPTIxNTA9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgyMmJfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYy0yMTUyLVx0LnBvd2VyX29mZlx0XHQ9IHJ0d19wb3dlcl9vZmYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmM6MjE1MzpcdC5waHlfc2V0X3BhcmFtXHRcdD0gcnR3ODgyMmJfcGh5X3NldF9wYXJhbSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYy0yMTU0LVx0LnJlYWRfZWZ1c2VcdFx0PSBydHc4ODIyYl9yZWFkX2VmdXNlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0xNzg3PXN0YXRpYyB2b2lkIHJ0dzg4MjJjX3B3cnRyYWNrX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTgwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxODAzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW0oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xODA0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9NDg5OT1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODIyY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ5MDEtXHQucG93ZXJfb2ZmXHRcdD0gcnR3X3Bvd2VyX29mZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0OTAyOlx0LnBoeV9zZXRfcGFyYW1cdFx0PSBydHc4ODIyY19waHlfc2V0X3BhcmFtLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ5MDMtXHQucmVhZF9lZnVzZVx0XHQ9IHJ0dzg4MjJjX3JlYWRfZWZ1c2UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA2OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMDMzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTEwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyBhbmQgRnV6emluZyBSRiBDYWxpYnJhdGlvbiBpbiBydHc4ODIyY3UqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aC4gSXQgYXBwZWFycyB0aGF0IGBydHdfcG93ZXJfb25gIGNhbGxzIGBjaGlwLSZndDtvcHMtJmd0O3BoeV9zZXRfcGFyYW0ocnR3ZGV2KWAuIERpZ2dpbmcgZGVlcGVyLCBgcnR3X3Bvd2VyX29uYCBpcyByZWFjaGVkIGZyb20gYHJ0d19jb3JlX3N0YXJ0YCwgd2hpY2ggaXMgaW5pdGlhdGVkIGZyb20gYHJ0d19tYWM4MDIxMV9zdGFydGAuIFRoaXMgYHJ0d19tYWM4MDIxMV9zdGFydGAgaXMgdGhlIGBtYWM4MDIxMSBzdGFydGAgY2FsbGJhY2ssIHNvIGl0IHNlZW1zIGxpa2UgYnJpbmdpbmcgdGhlIGludGVyZmFjZSB1cCBpcyB0aGUgdHJpZ2dlci4gIFRoaXMgdGhlbiBjYWxscyBgcGh5X3NldF9wYXJhbWAsIHdoaWNoIGluIHRoaXMgY2FzZSBsZWFkcyB0byBgcnR3ODgyMmNfcmZfaW5pdGAgYW5kIHVsdGltYXRlbHkgY2FsbHMgYHJ0dzg4MjJjX3JmX2RhY19jYWxgLiBTcGVjaWZpY2FsbHkgaXQgY2FsbHMgYHJ0dzg4MjJjX2RhY19jYWxfc3RlcDJgLCBgcnR3ODgyMmNfZGFjX2NhbF9zdGVwM2AgZXZlbnR1YWxseSBjYWxsaW5nIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgLCB3aGljaCB0aGVuIGNhbGxzIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAgYW5kIGBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaGAuCgpUaGUgcGF0Y2ggaXRzZWxmIGlzIGludGVyZXN0aW5nIOKAkyBpdCYjMzk7cyByZXBsYWNpbmcgY3VzdG9tIHNvcnRpbmcgd2l0aCB0aGUgc3RhbmRhcmQgYHNvcnQoKWAgZnVuY3Rpb24gYW5kIG1vZGlmeWluZyBzb21lIGNhbGN1bGF0aW9ucyBpbiBgcnR3ODgyMmNfZGFjX2lxX29mZnNldGAgYW5kIGNoZWNraW5nIGluIGBydHc4ODIyY19kYWNfaXFfY2hlY2tgLiBTbywgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBSRiBjYWxpYnJhdGlvbi4KCk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogSXMgdGhpcyBjb2RlIHJlYWNoYWJsZSBpbiBhIGZ1enppbmcgZW52aXJvbm1lbnQgbGlrZSBRRU1VPyBZZXMhIEkgY2FuIHNlZSBob3cgYHN5emthbGxlcmAgY2FuIGVtdWxhdGUgYSBVU0IgZGV2aWNlIG1hdGNoaW5nIGBydHc4ODIyY3VgIHVzaW5nIGBzeXpfdXNiX2Nvbm5lY3RgLiBPbmNlIHRoZSBkZXZpY2UgaXMgcHJvYmVkLCBgc3l6a2FsbGVyYCBjYW4gY3JlYXRlIGEgbmV0ZGV2IGFuZCBicmluZyBpdCB1cCAoYGlmY29uZmlnIHVwYCkuIFRoaXMgd2lsbCBzZXQgdXAgdGhlIGV4ZWN1dGlvbiBwYXRoIG9mIGBydHdfbWFjODAyMTFfc3RhcnRgIC0mZ3Q7IGBydHdfY29yZV9zdGFydGAgLSZndDsgYHJ0d19wb3dlcl9vbmAgLSZndDsgYHBoeV9zZXRfcGFyYW1gIC0mZ3Q7IGBydHc4ODIyY19yZl9pbml0YCAtJmd0OyBgcnR3ODgyMmNfcmZfZGFjX2NhbGAuICBBaGEhICBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgIHJlYWRzIGZyb20gdGhlIGRldmljZSB1c2luZyBgcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZilgLiBUaGlzIHJlYWQgd2lsbCBvY2N1ciBkdXJpbmcgVVNCIGNvbnRyb2wgb3IgYnVsayB0cmFuc2ZlcnMuIEFuZCBzeXprYWxsZXImIzM5O3MgVVNCIGZ1enplciB3aWxsIHByb3ZpZGUgcmFuZG9tIHZhbHVlcyBmb3IgdGhpcyByZWFkLiBTbywgdGhlIGNvZGUgd2lsbCAqZGVmaW5pdGVseSogcHJvY2VzcyB0aGVzZSByYW5kb20gdmFsdWVzLiBUaGlzIGlzIGZhbnRhc3RpYy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgdGhlcmVmb3JlIGZ1enphYmxlLgoKTXkgZm9jdXMgc2hvdWxkIGJlIG9uIGlkZW50aWZ5aW5nIHRoZSBtb3N0IHJlbGV2YW50IGZ1bmN0aW9ucyB0byB0YXJnZXQuIFNwZWNpZmljYWxseTogYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYCwgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoYCwgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAsIGFuZCBgcnR3ODgyMmNfcmZfZGFjX2NhbGAuCgpOb3csIEkgbmVlZCB0byBjb25zaWRlciBpbmxpbmluZy4gQXJlIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAgYW5kIGBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaGAgaW5saW5lZD8gIFRoZXkgYXJlIHN0YXRpYywgYnV0IGNhbGxlZCBmcm9tIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgLiBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBpcyBhbHNvIHN0YXRpYy4gSXQgaXMgYWxzbyBjYWxsZWQgZnJvbSBzZXZlcmFsIG90aGVyIGZ1bmN0aW9ucywgc28gaXQgc2VlbXMgdGhpcyB3aWxsIGJlIGlubGluZWQuIGBydHc4ODIyY19yZl9kYWNfY2FsYCBpcyBhbHNvIHN0YXRpYywgYXMgaXMgYHJ0dzg4MjJjX3JmX2luaXRgLiAgQWgsIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBpcyBhbHNvIHN0YXRpYywgKmJ1dCogaXRzIGFkZHJlc3MgaXMgdGFrZW4gaW4gYHJ0dzg4MjJjX29wc2AuIFRoaXMgaXMga2V5LiBUaGF0IG1ha2VzIGl0ICpkZWZpbml0ZWx5KiBub3QgaW5saW5lZCBhbmQgYSBnb29kIGZvY3VzIHN5bWJvbC4gQWx0aG91Z2gsIGBydHc4ODIyY19yZl9kYWNfY2FsYCBhbmQgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAgYXJlIGFsc28gZ29vZCBiZWNhdXNlIHRoZXkgYXJlIHByZXR0eSBsYXJnZSwgc28gaXQgaXMgbGVzcyBsaWtlbHkgdGhleSBhcmUgaW5saW5lZC4gR2l2ZW4gdGhhdCB0aGUgcGF0Y2ggb25seSB0b3VjaGVzIHN0YXRpYyBmdW5jdGlvbnMgaW4gYHJ0dzg4MjJjLmNgLCBJIGFtIHByZXR0eSBjb25maWRlbnQgd2l0aCB1c2luZyBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgYXMgdGhlIHByaW1hcnkgZm9jdXMsIGFuZCBpbmNsdWRpbmcgYHJ0dzg4MjJjXwoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA2OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSVFc4OCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjI6bWVudWNvbmZpZyBSVFc4OFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDgwMi4xMWFjIHdpcmVsZXNzIGNoaXBzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc9MTE9aWYgUlRXODhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxMzpjb25maWcgUlRXODhfQ09SRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE0LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTc6Y29uZmlnIFJUVzg4X1BDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE4LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMDpjb25maWcgUlRXODhfU0RJT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIxLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMzpjb25maWcgUlRXODhfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjQtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjI2OmNvbmZpZyBSVFc4OF84ODIyQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI3LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyOTpjb25maWcgUlRXODhfODgyMkNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zMC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MzI6Y29uZmlnIFJUVzg4Xzg3MjNYXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMzMtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjM1OmNvbmZpZyBSVFc4OF84NzAzQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTM2LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6Mzk6Y29uZmlnIFJUVzg4Xzg3MjNEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDAtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy00Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo0Mzpjb25maWcgUlRXODhfODgyMUNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy00NC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6NDY6Y29uZmlnIFJUVzg4Xzg4WFhBXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDctXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjQ5OmNvbmZpZyBSVFc4OF84ODIxQVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTUwLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6NTM6Y29uZmlnIFJUVzg4Xzg4MTJBXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTQtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy01Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo1Nzpjb25maWcgUlRXODhfODgxNEFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy01OC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6NjA6Y29uZmlnIFJUVzg4Xzg4MjJCRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTYxLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIyQkUgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy03MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo3MTpjb25maWcgUlRXODhfODgyMkJTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNzItXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjJCUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy04MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo4Mjpjb25maWcgUlRXODhfODgyMkJVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctODMtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjJCVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjkzOmNvbmZpZyBSVFc4OF84ODIyQ0VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy05NC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMkNFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjEwNDpjb25maWcgUlRXODhfODgyMkNTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTA1LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIyQ1MgU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjExNTpjb25maWcgUlRXODhfODgyMkNVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTE2LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTI2OmNvbmZpZyBSVFc4OF84NzIzREVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMjctXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg3MjNERSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxMzc6Y29uZmlnIFJUVzg4Xzg3MjNEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEzOC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODcyM0RTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxNDg6Y29uZmlnIFJUVzg4Xzg3MjNDU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE0OS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODcyM0NTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxNjI6Y29uZmlnIFJUVzg4Xzg3MjNEVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE2My1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODcyM0RVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjE3Mzpjb25maWcgUlRXODhfODgyMUNFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTc0LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIxQ0UgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTg0OmNvbmZpZyBSVFc4OF84ODIxQ1NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xODUtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjFDUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xOTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTk1OmNvbmZpZyBSVFc4OF84ODIxQ1VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xOTYtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjFDVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMDY6Y29uZmlnIFJUVzg4Xzg4MjFBVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIwNy1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMUFVLzg4MTFBVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMTc6Y29uZmlnIFJUVzg4Xzg4MTJBVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIxOC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgxMkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjIyODpjb25maWcgUlRXODhfODgxNEFFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjI5LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODE0QUUgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjM5OmNvbmZpZyBSVFc4OF84ODE0QVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNDAtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MTRBVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyNTA6Y29uZmlnIFJUVzg4X0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjUxLVx0Ym9vbCBcJiMzNDtSZWFsdGVrIHJ0dzg4IGRlYnVnIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjI1ODpjb25maWcgUlRXODhfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI1OS1cdGJvb2wgXCYjMzQ7UmVhbHRlayBydHc4OCBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjI2Njpjb25maWcgUlRXODhfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI2Ny1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgzMjgKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS2VybmVsIENvbmZpZ3VyYXRpb24gVGhvdWdodCBQcm9jZXNzKioKCk9rYXksIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgYFJUVzg4YCBhbmQgYFJUVzg4Xzg4MjJDVWAgYXJlIGVuYWJsZWQuIFRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCwgYnV0IGxldCYjMzk7cyBicmVhayBpdCBkb3duIGEgYml0IGZ1cnRoZXIuIGBSVFc4OF84ODIyQ1VgIGFwcGFyZW50bHkgYnJpbmdzIGluIGBSVFc4OF9DT1JFYCwgYFJUVzg4X1VTQmAsIGFuZCBgUlRXODhfODgyMkNgLCB3aGljaCBzb3VuZHMgYWJvdXQgcmlnaHQgZm9yIHRoZSA4ODIyQ1UgY2hpcHNldC4gU28sIGluIHRoZW9yeSwganVzdCBlbmFibGluZyBgUlRXODhgIGFuZCBgUlRXODhfODgyMkNVYCBzaG91bGQgY292ZXIgYWxsIHRoZSBuZWNlc3NhcnkgYmFzZXMuCgpIb2xkIG9uIGEgc2Vjb25kLCBnb3R0YSBkb3VibGUtY2hlY2sgdGhvc2UgZGVwZW5kZW5jaWVzLiBJIGtub3cgdGhpcyBmcm9tIGV4cGVyaWVuY2UsIGFuZCB0aGUga2VybmVsIGNhbiBiZSB0cmlja3kgd2l0aCBpdHMgZGVwZW5kZW5jaWVzLiBPa2F5LCBhIHF1aWNrIGNoZWNrLi4uIFllcywgYFJUVzg4Xzg4MjJDVWAgZG9lcyBpbmRlZWQgZGVwZW5kIG9uIGBSVFc4OGAgKG9idmlvdXNseSksIGJ1dCBhbHNvIG9uIGBVU0JgIGFuZCBgTUFDODAyMTFgLiBSaWdodCwgdGhhdCBtYWtlcyBzZW5zZS4gU28sIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJJiMzOTt2ZSBnb3QgZXZlcnl0aGluZyBJIG5lZWQsIEkgc2hvdWxkIGVuYWJsZSBgUlRXODhgLCBgUlRXODhfODgyMkNVYCwgYFVTQmAsIGFuZCBgTUFDODAyMTFgLiBUaGF0IHNob3VsZCBjb3ZlciBhbGwgdGhlIG5lY2Vzc2FyeSBiYXNlIG1vZHVsZXMgZm9yIHRoaXMgY2hpcHNldC4gTm93LCBsZXQmIzM5O3MganVzdCBxdWlja2x5IGNvbmZpcm0gdGhvc2UgZGVwZW5kZW5jaWVzIHRvIGJlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbC4gVGltZSB0byBkZWx2ZSBpbnRvIHRoZSBgUlRXODhfODgyMkNVYCBjb25maWcuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJUVzg4Xzg4MjJDVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZz0xMDQ9Y29uZmlnIFJUVzg4Xzg4MjJDU1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTE1OmNvbmZpZyBSVFc4OF84ODIyQ1VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTYtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjJDVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA2OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MDIyCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgUmVhbHRlayBXaXJlbGVzcyBLY29uZmlnKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBzb21lIGZlYXR1cmUgb3Igb3B0aW9uIGlzIGNvbnRyb2xsZWQuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bGwgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZ2AgZmlsZSwgYXJvdW5kIGxpbmUgMTE1LiBUaGF0IHNob3VsZCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gY2hlY2sgdGhlIGdlbmVyYWwgc2V0dGluZ3MgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBkcml2ZXIuIEhvcGVmdWxseSwgaXQmIzM5O2xsIHByb3ZpZGUgc29tZSBjbGFyaXR5IHJlZ2FyZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIEkmIzM5O20gaW50ZXJlc3RlZCBpbiBhbmQgdGhlaXIgZGVwZW5kZW5jaWVzLiBUaGlzIEtjb25maWcgZmlsZSBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIGRyaXZlcnMgYXJlIGJ1aWx0IGFuZCBjb25maWd1cmVkLCBhbmQgbGluZSAxMTUgZmVlbHMgbGlrZSBhIGdvb2Qgc3BvdCB0byBzdGFydCBteSBzZWFyY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA2OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMTA6XHRcdGhlbHBcbiAxMTE6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjJDUyBjaGlwc2V0XG4gMTEyOlx0XG4gMTEzOlx0XHQgIDgwMi4xMWFjIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXG4gMTE0Olx0XG4gMTE1Olx0Y29uZmlnIFJUVzg4Xzg4MjJDVVxuIDExNjpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuIDExNzpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAxMTg6XHRcdHNlbGVjdCBSVFc4OF9DT1JFXG4gMTE5Olx0XHRzZWxlY3QgUlRXODhfVVNCXG4gMTIwOlx0XHRzZWxlY3QgUlRXODhfODgyMkNcbiAxMjE6XHRcdGhlbHBcbiAxMjI6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjJDVSBjaGlwc2V0XG4gMTIzOlx0XG4gMTI0Olx0XHQgIDgwMi4xMWFjIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcbiAxMjU6XHRcbiAxMjY6XHRjb25maWcgUlRXODhfODcyM0RFXG4gMTI3Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg3MjNERSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4gMTI4Olx0XHRkZXBlbmRzIG9uIFBDSVxuIDEyOTpcdFx0c2VsZWN0IFJUVzg4X0NPUkVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk1NjMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFJUVzg4IERyaXZlciBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBSVFc4OF84ODIyQ1VgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdGhpcyBpcyBhIFVTQi1iYXNlZCBtb2R1bGUsIHNvIHRoYXQmIzM5O3MgYSBrZXkgZGVwZW5kZW5jeS4gT2J2aW91c2x5LiBUaGVuLCBJIHNlZSBgUlRXODhgIGRlcGVuZHMgb24gYE1BQzgwMjExYCwgd2hpY2ggaXMgdGhlIGV4cGVjdGVkIGZyYW1ld29yayBmb3IgdGhpcyB0eXBlIG9mIHdpcmVsZXNzIGhhcmR3YXJlLiBUbyBnYWluIGEgYmV0dGVyIHBpY3R1cmUsIEkgbmVlZCB0byB6b29tIG91dCBhIGJpdCBhbmQgc2VlIHdoYXQgb3RoZXIgbW9kdWxlcyBgUlRXODhgIHJlbGllcyBvbi4gVW5kZXJzdGFuZGluZyB0aGUgYnJvYWRlciBkZXBlbmRlbmNpZXMgb2YgYFJUVzg4YCB3aWxsIGJlIGNyaXRpY2FsIHRvIGFzc2Vzc2luZyBpdHMgb3ZlcmFsbCBpbnRlZ3JhdGlvbi4gSSBzaG91bGQgc3RhcnQgdGhlcmUsIGFuZCBzZWUgd2hhdCBJIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdG1lbnVjb25maWcgUlRXODhcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODAyLjExYWMgd2lyZWxlc3MgY2hpcHMgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIG1hYzgwMjExLWJhc2VkIHdpcmVsZXNzIGRyaXZlcnMgdGhhdFxuICAgNzpcdFx0ICBlbmFibGVzIFJlYWx0ZWsgSUVFRSA4MDIuMTFhYyB3aXJlbGVzcyBjaGlwc2V0cy5cbiAgIDg6XHRcbiAgIDk6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBydHc4OC5cbiAgMTA6XHRcbiAgMTE6XHRpZiBSVFc4OFxuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBSVFc4OF9DT1JFXG4gIDE0Olx0XHR0cmlzdGF0ZVxuICAxNTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIFJUVzg4X1BDSVxuICAxODpcdFx0dHJpc3RhdGVcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgUlRXODhfU0RJT1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDA2OQoJCQkJCQkJb3V0cHV0OiA2OQoJCQkJCQkJdGhvdWdodHM6IDY3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgUlRXODggRHJpdmVyIGFuZCBDYWxpYnJhdGlvbiBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYFJUVzg4YCBkcml2ZXIsIGFuZCBpdCYjMzk7cyBjbGVhciB0aGF0IGl0IGRlcGVuZHMgb24gYE1BQzgwMjExYC4gVGhlcmVmb3JlLCB0byBlbmFibGUgaXQsIEkmIzM5O2xsIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBgUlRXODhgLCBgUlRXODhfODgyMkNVYCwgYFVTQmAsIGFuZCBgTUFDODAyMTFgIGNvbmZpZ3VyYXRpb25zIGFyZSBzZXQuIFRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4KCk5vdywgSSYjMzk7bSBkaWdnaW5nIGRlZXBlciBiZWNhdXNlIHRoaXMgcGF0Y2ggc2VlbXMgdG8gYmUgdG91Y2hpbmcgc29tZSBzcGVjaWZpYyBmdW5jdGlvbnMgd2l0aGluIHRoZSBgcnR3ODgyMmMuY2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBpdCBtZW50aW9ucyBtb2RpZmljYXRpb25zIHRvIGBydHc4ODIyY19kYWNfaXFfY21wX3MzMmAsIGBydHc4ODIyY19kYWNfaXFfc29ydGAsIGBydHc4ODIyY19kYWNfaXFfb2Zmc2V0YCwgYHJ0dzg4MjJjX2RhY19pcV9jaGVja2AsIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAsIGBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaGAsIGFuZCBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBhbGwgaW52b2x2ZWQgd2l0aCBEQUMgY2FsaWJyYXRpb24sIHNvIGl0IG1ha2VzIHNlbnNlIHRvIGZvY3VzIG9uIHRoZW0uCgpHaXZlbiB0aGUgbW9kaWZpY2F0aW9ucywgSSYjMzk7dmUgZGVjaWRlZCBteSBmb2N1cyBzeW1ib2xzIHNob3VsZCBiZTogYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gLCBgcnR3ODgyMmNfcmZfZGFjX2NhbGAsIGFuZCBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYC4gTm93LCBsZXQmIzM5O3Mgc2VlIGlmIEkgY2FuIGluY2x1ZGUgdGhlbSBhcyBGb2N1c1N5bWJvbHMuCgpJIG5lZWQgdG8gZG91YmxlLWNoZWNrIGlmIGBydHc4ODIyY19yZl9kYWNfY2FsYCBhbmQgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAgYXJlIHN0YXRpYyBvciBpbmxpbmVkLiBBaCwgdGhleSBhcmUgc3RhdGljLiBIb3dldmVyLCB0aGV5IGFyZSBhbHNvIHF1aXRlIGxhcmdlOiBgcnR3ODgyMmNfcmZfZGFjX2NhbGAgaXMgNjAgbGluZXMsIGFuZCBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBpcyAxNSBsaW5lcy4gYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gIGlzIDUwIGxpbmVzLgoKQ29uc2lkZXJpbmcgdGhlIHNpemVzIGFuZCB0aGUgcG90ZW50aWFsIGZvciBvcHRpbWl6YXRpb24sIEkgdGhpbmsgaXQmIzM5O3MgYmV0dGVyIHRvIGluY2x1ZGUgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gIGJlY2F1c2UgaXQmIzM5O3MgZGVmaW5pdGVseSBub3QgaW5saW5lZCAoc2luY2UgaXRzIGFkZHJlc3MgaXMgdGFrZW4pLiBBbHNvLCBJJiMzOTtsbCBpbmNsdWRlIGBydHc4ODIyY19yZl9pbml0YCwgc2luY2UgaXQgY2FsbHMgYHJ0dzg4MjJjX3JmX2RhY19jYWxgLgoKSSBuZWVkIHRvIHF1aWNrbHkgY29uZmlybSB3aGV0aGVyIGBydHc4ODIyY19yZl9pbml0YCBpcyBzdGF0aWMuIFllcy4gU28sIHRoZSBpbmNsdXNpb24gb2YgYHJ0dzg4MjJjX3JmX2luaXRgIGxvb2tzIGdvb2QuIEkgbmVlZCB0byBtYWtlIHN1cmUgYHJ0dzg4MjJjX3JmX2RhY19jYWxgIGlzIGFsc28gc3RhdGljLCB3aGljaCBpdCBpcy4gQW5kIEkgd2lsbCBhZGQgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAsIGFzIHRoYXQgaXMgc3RhdGljIHRvby4KClNvLCBJJiMzOTttIGdvaW5nIHRvIGFkZCBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAsIGBydHc4ODIyY19yZl9kYWNfY2FsYCwgYW5kIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgIHRvIGBGb2N1c1N5bWJvbHNgLgoKSSBqdXN0IG5lZWQgdG8gZW5zdXJlIG15IGVhcmxpZXIgYW5hbHlzaXMgcmVtYWlucyBjb3JyZWN0LiBJcyBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBzdGF0aWM/IFllcy4gT2theSwgYW5kIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAgaXMgc3RhdGljIHRvby4gSSYjMzk7bGwgYWxzbyBhZGQgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoYC4KCkZpbmFsbHksIHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0JiMzOTtzIGp1c3QgZG8gYSBxdWljayBzY2FuIG9mIGBydHc4ODIyYy5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyBJIG1pZ2h0IGhhdmUgbWlzc2VkLiBUaGF0IGxvb2tzIGxpa2UgYSBjb21wcmVoZW5zaXZlIGxpc3QuIEkgYW0gc2F0aXNmaWVkIHdpdGggdGhlIGFib3ZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiBydHc4ODIyY18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTMwOTM9c3RydWN0IGRwa19jZmdfcGFpciB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMwOTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzA5OTp2b2lkIHJ0dzg4MjJjX3BhcnNlX3RibF9kcGsoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMTAwLVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgcnR3X3RhYmxlICp0YmwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTM0ODE9c3RhdGljIHU4IHJ0dzg4MjJjX2Rwa19hZ2NfbG9zc19jaGsoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzQ5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzozNDk4OnN0cnVjdCBydHc4ODIyY19kcGtfZGF0YSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzQ5OS1cdHU4IHR4YmI7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA2OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMDM5CgkJCQkJCQlvdXRwdXQ6IDIzOAoJCQkJCQkJdGhvdWdodHM6IDg3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFzb25pbmcgZm9yIEZ1enppbmcgUmVhbHRlayA4ODIyQyBEQUMgSVEgQ2FsaWJyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2hpbGUgYHJ0dzg4MjJjX3BhcnNlX3RibF9kcGtgIGlzbiYjMzk7dCBkaXJlY3RseSByZWxldmFudCB0byB0aGUgcGF0Y2ggaXRzZWxmLCB3aGljaCBmb2N1c2VzIG9uIERBQyBJUSBjYWxpYnJhdGlvbiwgaXQmIzM5O3MgZ29vZCB0byBrZWVwIGl0IGluIG1pbmQuIE15IHByaW1hcnkgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gdGhlIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBmdW5jdGlvbiwgYWxvbmcgd2l0aCBgcnR3ODgyMmNfcmZfZGFjX2NhbGAgYW5kIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgLiBFdmVuIGlmIHRoZSBsYXR0ZXIgdHdvIGFyZSBzdGF0aWMsIHN5emthbGxlciBoYXMgYSBoYWJpdCBvZiBmaW5kaW5nIHRoZW0gaWYgdGhleSBhcmVuJiMzOTt0IGlubGluZWQsIHNvIGxldCYjMzk7cyBrZWVwIHRoYXQgaW4gbWluZC4KCkZpcnN0LCBsZXQgbWUgY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBXZSBkZWZpbml0ZWx5IG5lZWQgYFJUVzg4YCwgYFJUVzg4Xzg4MjJDVWAsIGBVU0JgLCBhbmQgYE1BQzgwMjExYC4gVGhvdWdoIFVTQiBhbmQgTUFDODAyMTEgYXJlIHByZXR0eSBzdGFuZGFyZCBmb3Igc3l6a2FsbGVyLCBpdCYjMzk7cyBhbHdheXMgYmV0dGVyIHRvIHNwZWNpZnkgdGhlbS4gTm93LCBhcmUgdGhlcmUgYW55IG90aGVyIGRlcGVuZGVuY2llcz8gQWgsIGBSVFc4OF9DT1JFYCwgYFJUVzg4X1VTQmAsIGFuZCBgUlRXODhfODgyMkNgIGFyZSBhbGwgc2VsZWN0ZWQgYnkgYFJUVzg4Xzg4MjJDVWAsIHNvIHdlIGRvbiYjMzk7dCBuZWVkIHRvIHNwZWNpZnkgdGhvc2UgZXhwbGljaXRseS4gTmljZS4KCkxldCYjMzk7cyBxdWlja2x5IGNvbmZpcm0gcmVhY2hhYmlsaXR5LiBEb2VzIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgIGdldCBjYWxsZWQgdGhyb3VnaCBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWA/IFllcCwgaXQmIzM5O3M6IGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCAtJmd0OyBgcnR3ODgyMmNfcmZfaW5pdGAgLSZndDsgYHJ0dzg4MjJjX3JmX2RhY19jYWxgIC0mZ3Q7IGBydHc4ODIyY19kYWNfY2FsX3N0ZXAyYCAtJmd0OyBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYC4KCkNhbiBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgYmUgY2FsbGVkIGZyb20gc29tZXdoZXJlIGVsc2U/IE9rYXksIGxvb2tpbmcgYXQgYHJ0dzg4MjJjX29wc2AsIGl0JiMzOTtzIGNhbGxlZCB3aGVuIHRoZSBkZXZpY2UgcHJvYmVzLiBSaWdodCwgc28gYHJ0dzg4MjJjdV9wcm9iZWAgY2FsbHMgYHJ0d191c2JfcHJvYmVgLCB3aGljaCBjYWxscyBgcnR3X2NvcmVfaW5pdGAsIGFuZCB0aGF0JiMzOTtzIGhvdyB0aGUgZGV2aWNlIGlzIHNldCB1cC4gVGhlbiwgd2hlbiB0aGUgaW50ZXJmYWNlIGlzIGJyb3VnaHQgdXAsIGBydHdfbWFjODAyMTFfc3RhcnRgIGNhbGxzIGBydHdfY29yZV9zdGFydGAsIHdoaWNoIGluIHR1cm4gY2FsbHMgYHJ0d19wb3dlcl9vbmAsIGFuZCAqdGhhdCYjMzk7cyogd2hlbiBgY2hpcC0mZ3Q7b3BzLSZndDtwaHlfc2V0X3BhcmFtKHJ0d2RldilgIGlzIGNhbGxlZC4gVGhhdCYjMzk7cyBhIHN0YW5kYXJkIGZsb3cgZm9yIG1hYzgwMjExIGRyaXZlcnMuIEV4Y2VsbGVudCwgaXQmIzM5O3MgcmVhY2hhYmxlLgoKSGVyZSYjMzk7cyB0aGUgcmVhc29uaW5nOiBUaGlzIHBhdGNoIG1vZGlmaWVzIHRoZSBSRiBjYWxpYnJhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IERBQyBJUSBjYWxpYnJhdGlvbiwgaW4gdGhlIFJlYWx0ZWsgODgyMkMgd2lyZWxlc3MgZHJpdmVyIChgcnR3ODgyMmMuY2ApLiBJdOKAmXMgcmVwbGFjaW5nIGEgY3VzdG9tIHNvcnRpbmcgZnVuY3Rpb24gd2l0aCBhIHN0YW5kYXJkIG9uZSBhbmQgbWFraW5nIGNoYW5nZXMgdG8gaG93IElRIG9mZnNldHMgYXJlIGNhbGN1bGF0ZWQgYW5kIHZhbGlkYXRlZC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYmVjYXVzZSB0aGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIChgcnR3ODgyMmN1YCksIHdoaWNoIGlzIHBlcmZlY3Qgc2luY2Ugc3l6a2FsbGVyIGNhbiBlYXNpbHkgZW11bGF0ZSB0aG9zZSB1c2luZyBgc3l6X3VzYl9jb25uZWN0YC4gV2hlbiB0aGF0IGVtdWxhdGVkIFVTQiBXaS1GaSBpbnRlcmZhY2UgaXMgYWN0aXZhdGVkLCB0aGUgZHJpdmVyIGluaXRpYXRlcyBSRiBjYWxpYnJhdGlvbiwgdHJpZ2dlcmluZyB0aGVzZSBtb2RpZmllZCBmdW5jdGlvbnMuCgpTbywgbGV0JiMzOTtzIGtlZXAgdGhlIGZvY3VzIG9uOgoKKiAgIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYAoqICAgYHJ0dzg4MjJjX3JmX2RhY19jYWxgCiogICBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYAoKV2l0aCB0aGVzZSBjb25maWd1cmF0aW9uczoKCiogICBgUlRXODhgCiogICBgUlRXODhfODgyMkNVYAoqICAgYFVTQmAKKiAgIGBNQUM4MDIxMWAKCkp1c3QgdG8gZG91YmxlIGNoZWNrLCBgUlRXODhfODgyMkNVYCBzaG91bGQgYmUgc3VmZmljaWVudC4gV2hhdCBhYm91dCBQQ0llIChgUlRXODhfODgyMkNFYCk/IFN5emthbGxlciBkb2VzbiYjMzk7dCBlYXNpbHkgZW11bGF0ZSBQQ0llLCBidXQgVVNCIHNob3VsZCBiZSBlYXN5LCBzbyBgUlRXODhfODgyMkNVYCBpcyB0aGUga2V5IGZvciBmdXp6aW5nLgoKT2theSwgSSYjMzk7bSByZWFkeSB0byBzZXQtcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg4JiMzNDssCiAgICAmIzM0O1JUVzg4Xzg4MjJDVSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHc4ODIyY19waHlfc2V0X3BhcmFtJiMzNDssCiAgICAmIzM0O3J0dzg4MjJjX3JmX2RhY19jYWwmIzM0OywKICAgICYjMzQ7cnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBSRiBjYWxpYnJhdGlvbiBsb2dpYyAoc3BlY2lmaWNhbGx5IERBQyBJUSBjYWxpYnJhdGlvbikgaW4gdGhlIFJlYWx0ZWsgODgyMkMgd2lyZWxlc3MgZHJpdmVyIChgcnR3ODgyMmMuY2ApLiBJdCByZXBsYWNlcyBhIGN1c3RvbSBzb3J0aW5nIGltcGxlbWVudGF0aW9uIHdpdGggdGhlIHN0YW5kYXJkIGBzb3J0KClgIGZ1bmN0aW9uIGFuZCBjaGFuZ2VzIHRoZSBsb2dpYyBmb3IgY2FsY3VsYXRpbmcgSVEgb2Zmc2V0cyBhbmQgY2hlY2tpbmcgdmFsdWVzLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBiZWNhdXNlIHRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGRldmljZXMgKGBydHc4ODIyY3VgKSwgd2hpY2ggY2FuIGJlIGVtdWxhdGVkIGJ5IHN5emthbGxlciB2aWEgYHN5el91c2JfY29ubmVjdGAuIFdoZW4gdGhlIGVtdWxhdGVkIFVTQiBXaS1GaSBpbnRlcmZhY2UgaXMgYnJvdWdodCB1cCwgdGhlIGRyaXZlciBwZXJmb3JtcyBSRiBjYWxpYnJhdGlvbiwgdHJpZ2dlcmluZyB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSVFc4OCYjMzQ7LAogICAgJiMzNDtSVFc4OF84ODIyQ1UmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnR3ODgyMmNfcGh5X3NldF9wYXJhbSYjMzQ7LAogICAgJiMzNDtydHc4ODIyY19yZl9kYWNfY2FsJiMzNDssCiAgICAmIzM0O3J0dzg4MjJjX2RhY19jYWxfcmZfbW9kZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgUkYgY2FsaWJyYXRpb24gbG9naWMgKHNwZWNpZmljYWxseSBEQUMgSVEgY2FsaWJyYXRpb24pIGluIHRoZSBSZWFsdGVrIDg4MjJDIHdpcmVsZXNzIGRyaXZlciAoYHJ0dzg4MjJjLmNgKS4gSXQgcmVwbGFjZXMgYSBjdXN0b20gc29ydGluZyBpbXBsZW1lbnRhdGlvbiB3aXRoIHRoZSBzdGFuZGFyZCBgc29ydCgpYCBmdW5jdGlvbiBhbmQgY2hhbmdlcyB0aGUgbG9naWMgZm9yIGNhbGN1bGF0aW5nIElRIG9mZnNldHMgYW5kIGNoZWNraW5nIHZhbHVlcy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYmVjYXVzZSB0aGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIChgcnR3ODgyMmN1YCksIHdoaWNoIGNhbiBiZSBlbXVsYXRlZCBieSBzeXprYWxsZXIgdmlhIGBzeXpfdXNiX2Nvbm5lY3RgLiBXaGVuIHRoZSBlbXVsYXRlZCBVU0IgV2ktRmkgaW50ZXJmYWNlIGlzIGJyb3VnaHQgdXAsIHRoZSBkcml2ZXIgcGVyZm9ybXMgUkYgY2FsaWJyYXRpb24sIHRyaWdnZXJpbmcgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdGhlIElRIGNhbGlicmF0aW9uIGxvZ2ljIGluIHRoZSBSZWFsdGVrIHJ0dzg4IHdpcmVsZXNzIGRyaXZlci4gSXQgcmVwbGFjZXMgY3VzdG9tIHNvcnRpbmcgYW5kIG1pbi9tYXggY2FsY3VsYXRpb25zIHdpdGggc3RhbmRhcmQga2VybmVsIGZ1bmN0aW9ucyAoYHNvcnQoKWApIGFuZCBzaW1wbGlmaWVzIHRoZSBhcml0aG1ldGljIGJ5IHVzaW5nIHNpZ25lZCAzMi1iaXQgaW50ZWdlcnMgKGBzMzJgKSBpbnN0ZWFkIG9mIHVuc2lnbmVkIGludGVnZXJzIHdpdGggbWFudWFsIHNpZ24gaGFuZGxpbmcuIFRoZSBhcnJheXMgYGl2YCBhbmQgYHF2YCBhcmUgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBhbmQgcG9wdWxhdGVkIGJ5IHJlYWRpbmcgaGFyZHdhcmUgcmVnaXN0ZXJzLiBXaGlsZSB0aGVyZSBpcyBhIHRoZW9yZXRpY2FsIHByZS1leGlzdGluZyBlZGdlIGNhc2Ugd2hlcmUgdGhlIGFycmF5cyBtaWdodCBub3QgYmUgZnVsbHkgcG9wdWxhdGVkIGlmIHRoZSBoYXJkd2FyZSBmYWlscyB0byBwcm92aWRlIGVub3VnaCB2YWxpZCBzYW1wbGVzIHdpdGhpbiAxMCwwMDAgaXRlcmF0aW9ucywgdGhpcyBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhhY2VyYmF0ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIFRoZSBkYXRhIGlzIHVzZWQgc3RyaWN0bHkgZm9yIGludGVybmFsIGhhcmR3YXJlIGNhbGlicmF0aW9uIGFuZCBpcyBub3QgY29waWVkIHRvIHVzZXJzcGFjZSwgbWVhbmluZyB0aGVyZSBpcyBubyByaXNrIG9mIGFuIGluZm8tbGVhay4gQW55IHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIG1lbW9yeSBjb3JydXB0aW9uIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gQSBkZWRpY2F0ZWQgS01TQU4gcnVuIGlzIG5vdCBqdXN0aWZpZWQgYXMgbm8gbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVhayB2dWxuZXJhYmlsaXRpZXMgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGQ1MTg3OWJkNzc1YmRkOGYxN2E3ZTM3YmY1N2IyOTMwNGQ5YzA4ZTAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAxMyAwNjoxMjoxNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYwppbmRleCAyNDRjODAyNjQ3OWMyLi42ZmNkZmM2NGMzYjFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jCkBAIC0zLDYgJiM0MzszLDggQEAKICAqLwogCiAjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2JpdG9wcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9zb3J0LmgmZ3Q7CiAjaW5jbHVkZSAmIzM0O21haW4uaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2NvZXguaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2Z3LmgmIzM0OwpAQCAtMTUzLDg0ICYjNDM7MTU1LDMwIEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19yZXN0b3JlX3JlZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LAogCX0KIH0KIAotc3RhdGljIHZvaWQgcnR3ODgyMmNfcmZfbWlubWF4X2NtcChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgdmFsdWUsCi0JCQkJICAgdTMyICptaW4sIHUzMiAqbWF4KQomIzQzO3N0YXRpYyBpbnQgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzIoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKIHsKLQlpZiAodmFsdWUgJmd0Oz0gMHgyMDApIHsKLQkJaWYgKCptaW4gJmd0Oz0gMHgyMDApIHsKLQkJCWlmICgqbWluICZndDsgdmFsdWUpCi0JCQkJKm1pbiA9IHZhbHVlOwotCQl9IGVsc2UgewotCQkJKm1pbiA9IHZhbHVlOwotCQl9Ci0JCWlmICgqbWF4ICZndDs9IDB4MjAwKSB7Ci0JCQlpZiAoKm1heCAmbHQ7IHZhbHVlKQotCQkJCSptYXggPSB2YWx1ZTsKLQkJfQotCX0gZWxzZSB7Ci0JCWlmICgqbWluICZsdDsgMHgyMDApIHsKLQkJCWlmICgqbWluICZndDsgdmFsdWUpCi0JCQkJKm1pbiA9IHZhbHVlOwotCQl9Ci0KLQkJaWYgKCptYXggICZndDs9IDB4MjAwKSB7Ci0JCQkqbWF4ID0gdmFsdWU7Ci0JCX0gZWxzZSB7Ci0JCQlpZiAoKm1heCAmbHQ7IHZhbHVlKQotCQkJCSptYXggPSB2YWx1ZTsKLQkJfQotCX0KLX0KJiM0MzsJczMyIHZhID0gKihjb25zdCBzMzIgKilhOwomIzQzOwlzMzIgdmIgPSAqKGNvbnN0IHMzMiAqKWI7CiAKLXN0YXRpYyB2b2lkIF9fcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICp2MSwgdTMyICp2MikKLXsKLQlpZiAoKnYxICZndDs9IDB4MjAwICZhbXA7JmFtcDsgKnYyICZndDs9IDB4MjAwKSB7Ci0JCWlmICgqdjEgJmd0OyAqdjIpCi0JCQlzd2FwKCp2MSwgKnYyKTsKLQl9IGVsc2UgaWYgKCp2MSAmbHQ7IDB4MjAwICZhbXA7JmFtcDsgKnYyICZsdDsgMHgyMDApIHsKLQkJaWYgKCp2MSAmZ3Q7ICp2MikKLQkJCXN3YXAoKnYxLCAqdjIpOwotCX0gZWxzZSBpZiAoKnYxICZsdDsgMHgyMDAgJmFtcDsmYW1wOyAqdjIgJmd0Oz0gMHgyMDApIHsKLQkJc3dhcCgqdjEsICp2Mik7Ci0JfQomIzQzOwlyZXR1cm4gKHZhICZndDsgdmIpIC0gKHZhICZsdDsgdmIpOwogfQogCi1zdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKml2LCB1MzIgKnF2KQomIzQzO3N0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9zb3J0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiAqaXYsIHMzMiAqcXYpCiB7Ci0JdTMyIGksIGo7Ci0KLQlmb3IgKGkgPSAwOyBpICZsdDsgREFDS19TTl84ODIyQyAtIDE7IGkmIzQzOyYjNDM7KSB7Ci0JCWZvciAoaiA9IDA7IGogJmx0OyAoREFDS19TTl84ODIyQyAtIDEgLSBpKSA7IGomIzQzOyYjNDM7KSB7Ci0JCQlfX3J0dzg4MjJjX2RhY19pcV9zb3J0KHJ0d2RldiwgJmFtcDtpdltqXSwgJmFtcDtpdltqICYjNDM7IDFdKTsKLQkJCV9fcnR3ODgyMmNfZGFjX2lxX3NvcnQocnR3ZGV2LCAmYW1wO3F2W2pdLCAmYW1wO3F2W2ogJiM0MzsgMV0pOwotCQl9Ci0JfQomIzQzOwlzb3J0KGl2LCBEQUNLX1NOXzg4MjJDLCBzaXplb2YoczMyKSwgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzIsIE5VTEwpOwomIzQzOwlzb3J0KHF2LCBEQUNLX1NOXzg4MjJDLCBzaXplb2YoczMyKSwgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzIsIE5VTEwpOwogfQogCi1zdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqdmVjLCB1MzIgKnZhbCkKJiM0MztzdGF0aWMgczMyIHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICp2ZWMpCiB7Ci0JdTMyIHAsIG0sIHQsIGk7CiYjNDM7CXMzMiBzdW0gPSAwOwogCi0JbSA9IDA7Ci0JcCA9IDA7Ci0JZm9yIChpID0gMTA7IGkgJmx0OyBEQUNLX1NOXzg4MjJDIC0gMTA7IGkmIzQzOyYjNDM7KSB7Ci0JCWlmICh2ZWNbaV0gJmd0OyAweDIwMCkKLQkJCW0gPSAoMHg0MDAgLSB2ZWNbaV0pICYjNDM7IG07Ci0JCWVsc2UKLQkJCXAgPSB2ZWNbaV0gJiM0MzsgcDsKLQl9CiYjNDM7CWZvciAodTMyIGkgPSAxMDsgaSAmbHQ7IERBQ0tfU05fODgyMkMgLSAxMDsgaSYjNDM7JiM0MzspCiYjNDM7CQlzdW0gJiM0Mzs9IHZlY1tpXTsKIAotCWlmIChwICZndDsgbSkgewotCQl0ID0gcCAtIG07Ci0JCXQgPSB0IC8gKERBQ0tfU05fODgyMkMgLSAyMCk7Ci0JfSBlbHNlIHsKLQkJdCA9IG0gLSBwOwotCQl0ID0gdCAvIChEQUNLX1NOXzg4MjJDIC0gMjApOwotCQlpZiAodCAhPSAweDApCi0JCQl0ID0gMHg0MDAgLSB0OwotCX0KJiM0MzsJczMyIGF2ZyA9IHN1bSAvIChEQUNLX1NOXzg4MjJDIC0gMjApOwogCi0JKnZhbCA9IHQ7CiYjNDM7CXJldHVybiBhdmcgJmd0Oz0gMCA/IGF2ZyA6IDB4NDAwICYjNDM7IGF2ZzsKIH0KIAogc3RhdGljIHUzMiBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHU4IHBhdGgpCkBAIC0yNzEsMjkgJiM0MzsyMTksMjcgQEAgc3RhdGljIHUzMiBydHc4ODIyY19nZXRfcGF0aF9yZWFkX2FkZHIodTggcGF0aCkKIAlyZXR1cm4gYmFzZV9hZGRyOwogfQogCi1zdGF0aWMgYm9vbCBydHc4ODIyY19kYWNfaXFfY2hlY2soc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyIHZhbHVlKQomIzQzO3N0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgdmFsdWUpCiB7Ci0JYm9vbCByZXQgPSB0cnVlOwogCi0JaWYgKCh2YWx1ZSAmZ3Q7PSAweDIwMCAmYW1wOyZhbXA7ICgweDQwMCAtIHZhbHVlKSAmZ3Q7IDB4NjQpIHx8Ci0JICAgICh2YWx1ZSAmbHQ7IDB4MjAwICZhbXA7JmFtcDsgdmFsdWUgJmd0OyAweDY0KSkgewotCQlyZXQgPSBmYWxzZTsKJiM0MzsJaWYgKHZhbHVlICZndDsgMTAwIHx8IHZhbHVlICZsdDsgLTEwMCkgewogCQlydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssICYjMzQ7W0RBQ0tdIEVycm9yIG92ZXJmbG93XG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gZmFsc2U7CiAJfQogCi0JcmV0dXJuIHJldDsKJiM0MzsJcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqaXYsIHUzMiAqcXYpCiYjNDM7c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdikKIHsKIAl1MzIgdGVtcDsKLQlpbnQgaSA9IDAsIGNudCA9IDA7CiYjNDM7CXUzMiBpID0gMCwgY250ID0gMDsKIAogCXdoaWxlIChpICZsdDsgREFDS19TTl84ODIyQyAmYW1wOyZhbXA7IGNudCAmbHQ7IDEwMDAwKSB7CiAJCWNudCYjNDM7JiM0Mzs7CiAJCXRlbXAgPSBydHdfcmVhZDMyX21hc2socnR3ZGV2LCAweDJkYmMsIDB4M2ZmZmZmKTsKLQkJaXZbaV0gPSAodGVtcCAmYW1wOyAweDNmZjAwMCkgJmd0OyZndDsgMTI7Ci0JCXF2W2ldID0gdGVtcCAmYW1wOyAweDNmZjsKJiM0MzsJCWl2W2ldID0gc2lnbl9leHRlbmQzMigodGVtcCAmYW1wOyAweDNmZjAwMCkgJmd0OyZndDsgMTIsIDkpOwomIzQzOwkJcXZbaV0gPSBzaWduX2V4dGVuZDMyKHRlbXAgJmFtcDsgMHgzZmYsIDkpOwogCiAJCWlmIChydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBpdltpXSkgJmFtcDsmYW1wOwogCQkgICAgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHJ0d2RldiwgcXZbaV0pKQpAQCAtMzAyLDEzICYjNDM7MjQ4LDEyIEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqaXYsIHUzMiAqcXYpCiB9CiAKIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsCi0JCQkJICAgICAgIHUzMiAqaXYsIHUzMiAqcXYsCiYjNDM7CQkJCSAgICAgICBzMzIgKml2LCBzMzIgKnF2LAogCQkJCSAgICAgICB1MzIgKmlfdmFsdWUsIHUzMiAqcV92YWx1ZSkKIHsKLQl1MzIgaV9tYXggPSAwLCBxX21heCA9IDAsIGlfbWluID0gMCwgcV9taW4gPSAwOwotCXUzMiBpX2RlbHRhLCBxX2RlbHRhOwomIzQzOwlzMzIgaV9tYXggPSAwLCBxX21heCA9IDAsIGlfbWluID0gMCwgcV9taW4gPSAwOwogCXUzMiB0ZW1wOwotCWludCBpLCBjbnQgPSAwOwomIzQzOwl1MzIgaSwgY250ID0gMDsKIAogCWRvIHsKIAkJaV9taW4gPSBpdlswXTsKQEAgLTMxNiwyMyAmIzQzOzI2MSwxOCBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LAogCQlxX21pbiA9IHF2WzBdOwogCQlxX21heCA9IHF2WzBdOwogCQlmb3IgKGkgPSAwOyBpICZsdDsgREFDS19TTl84ODIyQzsgaSYjNDM7JiM0MzspIHsKLQkJCXJ0dzg4MjJjX3JmX21pbm1heF9jbXAocnR3ZGV2LCBpdltpXSwgJmFtcDtpX21pbiwgJmFtcDtpX21heCk7Ci0JCQlydHc4ODIyY19yZl9taW5tYXhfY21wKHJ0d2RldiwgcXZbaV0sICZhbXA7cV9taW4sICZhbXA7cV9tYXgpOwomIzQzOwkJCWlmIChpdltpXSAmbHQ7IGlfbWluKQomIzQzOwkJCQlpX21pbiA9IGl2W2ldOwomIzQzOwkJCWlmIChpdltpXSAmZ3Q7IGlfbWF4KQomIzQzOwkJCQlpX21heCA9IGl2W2ldOwomIzQzOwkJCWlmIChxdltpXSAmbHQ7IHFfbWluKQomIzQzOwkJCQlxX21pbiA9IHF2W2ldOwomIzQzOwkJCWlmIChxdltpXSAmZ3Q7IHFfbWF4KQomIzQzOwkJCQlxX21heCA9IHF2W2ldOwogCQl9CiAKLQkJaWYgKGlfbWF4ICZsdDsgMHgyMDAgJmFtcDsmYW1wOyBpX21pbiAmbHQ7IDB4MjAwKQotCQkJaV9kZWx0YSA9IGlfbWF4IC0gaV9taW47Ci0JCWVsc2UgaWYgKGlfbWF4ICZndDs9IDB4MjAwICZhbXA7JmFtcDsgaV9taW4gJmd0Oz0gMHgyMDApCi0JCQlpX2RlbHRhID0gaV9tYXggLSBpX21pbjsKLQkJZWxzZQotCQkJaV9kZWx0YSA9IGlfbWF4ICYjNDM7ICgweDQwMCAtIGlfbWluKTsKLQotCQlpZiAocV9tYXggJmx0OyAweDIwMCAmYW1wOyZhbXA7IHFfbWluICZsdDsgMHgyMDApCi0JCQlxX2RlbHRhID0gcV9tYXggLSBxX21pbjsKLQkJZWxzZSBpZiAocV9tYXggJmd0Oz0gMHgyMDAgJmFtcDsmYW1wOyBxX21pbiAmZ3Q7PSAweDIwMCkKLQkJCXFfZGVsdGEgPSBxX21heCAtIHFfbWluOwotCQllbHNlCi0JCQlxX2RlbHRhID0gcV9tYXggJiM0MzsgKDB4NDAwIC0gcV9taW4pOwomIzQzOwkJdTMyIGlfZGVsdGEgPSAodTMyKShpX21heCAtIGlfbWluKTsKJiM0MzsJCXUzMiBxX2RlbHRhID0gKHUzMikocV9tYXggLSBxX21pbik7CiAKIAkJcnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLAogCQkJJiMzNDtbREFDS10gaTogbWluPTB4JTA4eCwgbWF4PTB4JTA4eCwgZGVsdGE9MHglMDh4XG4mIzM0OywKQEAgLTM0NSwyNCAmIzQzOzI4NSwyNCBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LAogCiAJCWlmIChpX2RlbHRhICZndDsgNSB8fCBxX2RlbHRhICZndDsgNSkgewogCQkJdGVtcCA9IHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpOwotCQkJaXZbMF0gPSAodGVtcCAmYW1wOyAweDNmZjAwMCkgJmd0OyZndDsgMTI7Ci0JCQlxdlswXSA9IHRlbXAgJmFtcDsgMHgzZmY7CiYjNDM7CQkJaXZbMF0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wICZhbXA7IDB4M2ZmMDAwKSAmZ3Q7Jmd0OyAxMiwgOSk7CiYjNDM7CQkJcXZbMF0gPSBzaWduX2V4dGVuZDMyKHRlbXAgJmFtcDsgMHgzZmYsIDkpOwogCQkJdGVtcCA9IHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpOwotCQkJaXZbREFDS19TTl84ODIyQyAtIDFdID0gKHRlbXAgJmFtcDsgMHgzZmYwMDApICZndDsmZ3Q7IDEyOwotCQkJcXZbREFDS19TTl84ODIyQyAtIDFdID0gdGVtcCAmYW1wOyAweDNmZjsKJiM0MzsJCQlpdltEQUNLX1NOXzg4MjJDIC0gMV0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wICZhbXA7IDB4M2ZmMDAwKSAmZ3Q7Jmd0OyAxMiwgOSk7CiYjNDM7CQkJcXZbREFDS19TTl84ODIyQyAtIDFdID0gc2lnbl9leHRlbmQzMih0ZW1wICZhbXA7IDB4M2ZmLCA5KTsKIAkJfSBlbHNlIHsKIAkJCWJyZWFrOwogCQl9CiAJfSB3aGlsZSAoY250JiM0MzsmIzQzOyAmbHQ7IDEwMCk7CiAKLQlydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgaXYsIGlfdmFsdWUpOwotCXJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBxdiwgcV92YWx1ZSk7CiYjNDM7CSppX3ZhbHVlID0gcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIGl2KTsKJiM0MzsJKnFfdmFsdWUgPSBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgcXYpOwogfQogCiBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3JmX21vZGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwKIAkJCQkgICAgIHUzMiAqaV92YWx1ZSwgdTMyICpxX3ZhbHVlKQogewotCXUzMiBpdltEQUNLX1NOXzg4MjJDXSwgcXZbREFDS19TTl84ODIyQ107CiYjNDM7CXMzMiBpdltEQUNLX1NOXzg4MjJDXSwgcXZbREFDS19TTl84ODIyQ107CiAJdTMyIHJmX2EsIHJmX2I7CiAKIAlyZl9hID0gcnR3X3JlYWRfcmYocnR3ZGV2LCBSRl9QQVRIX0EsIDB4MCwgUkZSRUdfTUFTSyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTM0CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTY3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgcnR3ODgyMmMgREFDIENhbGlicmF0aW9uIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggdG91Y2hlcyBzZXZlcmFsIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGBydHc4ODIyYy5jYCBmaWxlLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIERBQyBJUSBjYWxpYnJhdGlvbi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IGl0JiMzOTtzIHJlZmFjdG9yaW5nIGFuZCBvcHRpbWl6aW5nIGV4aXN0aW5nIGNvZGUsIHdoaWNoIGlzIGdvb2QuIFRoZSBrZXkgY2hhbmdlcyBJJiMzOTttIHNlZWluZyBhcmUgYXJvdW5kIGBydHc4ODIyY19kYWNfaXFfY21wX3MzMmAsIGBydHc4ODIyY19kYWNfaXFfc29ydGAsIGBydHc4ODIyY19kYWNfaXFfb2Zmc2V0YCwgYHJ0dzg4MjJjX2RhY19pcV9jaGVja2AsIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAsIGFuZCBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2hgLCBhbmQgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAuIEl0JiMzOTtzIGNvbnZlcnRpbmcgdGhlIGBpdmAgYW5kIGBxdmAgYXJyYXlzIHRvIGBzMzJgIGluIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgLCB3aGljaCBzZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIHNpZ25lZCBpbnRlZ2VyIGNoYW5nZS4gVGhlIHJlcGxhY2VtZW50IG9mIGEgY3VzdG9tIHNvcnQgd2l0aCBgc29ydCgpYCBmcm9tIGBsaW51eC9zb3J0LmhgIGlzIGEgc3RhbmRhcmQgb3B0aW1pemF0aW9uIGFuZCBnb29kIGZvciBjb2RlIG1haW50ZW5hbmNlIGFuZCBsaWtlbHkgZm9yIHBlcmZvcm1hbmNlLiBTYW1lIHdpdGggdGhlIGFyaXRobWV0aWMgcmVwbGFjZW1lbnQgb2YgY3VzdG9tIG1pbi9tYXggbG9naWMgYW5kIG9mZnNldCBjYWxjdWxhdGlvbnMuCgpCdXQgdGhlbiBteSBhdHRlbnRpb24gaXMgZHJhd24gdG8gaG93IGBpdmAgYW5kIGBxdmAgYXJlIHBvcHVsYXRlZCBpbiBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgIHdoaWNoIGlzIHdoZXJlIEkgc2VlIHRoZSBwb3RlbnRpYWwgZm9yIGlzc3Vlcy4gSSBpbW1lZGlhdGVseSBzZWUgdGhlIHJlZ2lzdGVyIHJlYWQgYHJ0d19yZWFkMzJfbWFza2AgYW5kIGFzc2lnbm1lbnQgdG8gYGl2W2ldYCBhbmQgYHF2W2ldYC4gSSYjMzk7bSBjb25jZXJuZWQgYWJvdXQgdW5pbml0aWFsaXplZCBtZW1vcnkgaGVyZS4gTG9va2luZyBjbG9zZXIsIGl0IGxvb2tzIGxpa2UgYGl2YCBhbmQgYHF2YCBhcmUgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBpbiBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBhbmQgdGhlbiBwYXNzZWQgdG8gYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBoYXBwZW5zIGluc2lkZSBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgLiBUaGUgY29kZSBoYXMgYSBsb29wIHRoYXQgcmVhZHMgYSByZWdpc3RlciBhbmQgcG9wdWxhdGVzIGBpdmAgYW5kIGBxdmAgdW50aWwgaXQgcmVhY2hlcyBgREFDS19TTl84ODIyQ2Agb3IgYSBjb3VudGVyIGhpdHMgMTAwMDAuIFRoYXQgbG9va3Mgc3VzcGVjdDsgaWYgdGhlIGxvb3AgdGVybWluYXRlcyBlYXJseSwgdGhlIHJlc3Qgb2YgdGhlIGFycmF5IHdpbGwgYmUgdW5pbml0aWFsaXplZC4KCk9rYXksIEkgc2VlIGl0JiMzOTtzIHJlYWRpbmcgdGhlIGhhcmR3YXJlIHJlZ2lzdGVyLiBJZiBgY250YCBoaXRzIDEwMDAwIGJlZm9yZSBgaWAgcmVhY2hlcyBgREFDS19TTl84ODIyQ2AsIHRoZSByZXN0IG9mIGBpdmAgYW5kIGBxdmAgKndpbGwqIGJlIHVuaW5pdGlhbGl6ZWQuIEFuZCB0aGUgb3JpZ2luYWwgY29kZSBoYWQgdGhlIHNhbWUgdnVsbmVyYWJpbGl0eSEgU28gdGhlIHF1ZXN0aW9uIGlzOiBkb2VzIHRoaXMgcGF0Y2ggaW50cm9kdWNlIHRoaXMgb3IgbWVyZWx5IGV4cG9zZSBpdD8KCkxldCYjMzk7cyB0aGluay4gVGhlIHBhdGNoICpjaGFuZ2VzKiBob3cgYGl2YCBhbmQgYHF2YCBhcmUgc29ydGVkIGFuZCBwcm9jZXNzZWQgYWZ0ZXIgdGhlIHNhbXBsZS4gVGhlIG9yaWdpbmFsIHVzZWQgYSBjdXN0b20gc29ydCBgX19ydHc4ODIyY19kYWNfaXFfc29ydGAuIFRoaXMgcGF0Y2ggbm93IHVzZXMgYHNvcnQoKWAuIElmIGBpdmAgYW5kIGBxdmAgYXJlIHBhcnRpYWxseSB1bmluaXRpYWxpemVkLCB0aGUgYHNvcnQoKWAgZnVuY3Rpb24gaXMgZ29pbmcgdG8gcmVhZCB1bmluaXRpYWxpemVkIG1lbW9yeS4gQnV0IHNpbmNlIHRoZSBvcmlnaW5hbCBjb2RlIGhhZCB0aGUgc2FtZSBpc3N1ZSwgSSBkb24mIzM5O3QgdGhpbmsgdGhpcyBjaGFuZ2UgaW50cm9kdWNlZCBpdC4KClRoaXMgaXMgYSBoYXJkd2FyZSBjYWxpYnJhdGlvbiByb3V0aW5lOyB0aGUgbWVtb3J5IGlzIG9uIHRoZSBzdGFjay4gSXMgdGhpcyBhIHBvdGVudGlhbCBpbmZvcm1hdGlvbiBsZWFrPyBObywgYmVjYXVzZSB0aGUgcmVzdWx0cyBvZiB0aGUgY2FsaWJyYXRpb24gYXJlbiYjMzk7dCBzZW50IHRvIHVzZXIgc3BhY2UgZGlyZWN0bHkuIFRoZXkgYXJlIHVzZWQgdG8gY29tcHV0ZSBvdGhlciB2YWx1ZXMgdGhhdCBhcmUgd3JpdHRlbiB0byBoYXJkd2FyZSByZWdpc3RlcnMuIE9rYXksIHNvIGEgbGVhayBzZWVtcyB1bmxpa2VseS4gSXMgdGhlcmUgYSByaXNrIHRoYXQgaXQgY291bGQgY2F1c2UgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5PyBZZXMsIGBzb3J0KClgIGNvdWxkIGJyYW5jaCBvbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpZiBgaXZgIGFuZCBgcXZgIGFyZSBvbmx5IHBhcnRpYWxseSBmaWxsZWQuIEtNU0FOIGNvdWxkIGJlIGhlbHBmdWwgaGVyZSBiZWNhdXNlIEtNU0FOIGRldGVjdHMgdXNlcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gSWYgd2UgaGF2ZSB1bmluaXRpYWxpemVkIGRhdGEgaW4gdGhlIGFycmF5LCBLTVNBTiB3b3VsZCBjb21wbGFpbi4KClRoaW5raW5nIHRoaXMgdGhyb3VnaCwgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYCBpcyBjYWxsZWQgaW4gYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAuIElmIHRoZSBzYW1wbGluZyBmYWlscyB0byBmaWxsIHRoZSBgaXZgIGFuZCBgcXZgIGFycmF5cywgdGhlbiBgcnR3ODgyMmNfZGFjX2lxX3NvcnRgIHNvcnRzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGF0JiMzOTtzIGEgYnVnLiBJcyB0aGUgcGF0Y2ggaW50cm9kdWNpbmcgdGhpcz8gTm8uIFRoZSBvcmlnaW5hbCBjb2RlIGRpZCB0aGUgc2FtZSB0aGluZyB3aXRoIHRoZSBzYW1lIHBvdGVudGlhbCBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNlLiBUaGUgcGF0Y2ggaXMganVzdCByZWZhY3RvcmluZyB0aGUgc29ydCBhbmQgbWluL21heCBsb2dpYywgYnV0IHRoZSBmdW5kYW1lbnRhbCBpc3N1ZSBpcyB1bmNoYW5nZWQuCgpMZXQgbWUgY29uZmlybSB0aGF0OiBJZiB0aGUgY291bnQgcmVhY2hlcyAxMDAwMCBiZWZvcmUgdGhlIGFycmF5IGlzIGZ1bGwsIGBpYCBjb3VsZCBiZSBsZXNzIHRoYW4gYERBQ0tfU05fODgyMkNgLiBMZXQgbWUgcXVpY2tseSBsb29rIHVwIHRoZSBkZWZpbml0aW9uIG9mIGBEQUNLX1NOXzg4MjJDYC4KCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIERBQ0tfU05fODgyMkMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5oPTEzMz1jb25zdCBzdHJ1Y3QgcnR3X3RhYmxlIG5hbWUgIyMgX3RibCA9IHtcdFx0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuaC0xNDEtI2RlZmluZSBEQUNLX1JGXzg4MjJDXHRcdDFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuaDoxNDI6I2RlZmluZSBEQUNLX1NOXzg4MjJDXHRcdDEwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5oLTE0My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQzMQoJCQkJCQkJb3V0cHV0OiAyMzAKCQkJCQkJCXRob3VnaHRzOiAxMDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBydHc4ODIyYyBJUSBDYWxpYnJhdGlvbiBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoIGlzIGEgcmVmYWN0b3Jpbmcgb2YgdGhlIElRIGNhbGlicmF0aW9uIGxvZ2ljIHdpdGhpbiB0aGUgcnR3ODggd2lyZWxlc3MgZHJpdmVyIGZvciBSZWFsdGVrIGhhcmR3YXJlLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIHN3aXRjaGluZyBmcm9tIHNvbWUgY3VzdG9tLCBwb3RlbnRpYWxseSBsZXNzIGVmZmljaWVudCwgYWxnb3JpdGhtcyB0byB1c2UgZXN0YWJsaXNoZWQga2VybmVsIGZ1bmN0aW9ucyBsaWtlIGBzb3J0KClgIGFuZCBgc2lnbl9leHRlbmQzMmAgYW5kIHNpbXBsaWZ5aW5nIHRoZSBhcml0aG1ldGljIHdpdGggc2lnbmVkIDMyLWJpdCBpbnRlZ2VycyAoYHMzMmApLiBUaGlzIGZlZWxzIGxpa2UgYSBnb29kIG1vdmUgZm9yIGNvZGUgbWFpbnRhaW5hYmlsaXR5IGFuZCByZWFkYWJpbGl0eS4KClRoZSBrZXkgYXJlYSBvZiBjb25jZXJuLCBuYXR1cmFsbHksIGlzIG1lbW9yeSBzYWZldHksIHNwZWNpZmljYWxseSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGNvZGUgdXNlcyBhcnJheXMgYGl2YCBhbmQgYHF2YCB3aGljaCBhcmUgcG9wdWxhdGVkIGZyb20gaGFyZHdhcmUgcmVnaXN0ZXIgcmVhZHMgYW5kIHVzZWQgbG9jYWxseSB3aXRoaW4gYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAuIFRoZSBsb29wIGhhcyBhIG1heGltdW0gb2YgMTAwMDAgYXR0ZW1wdHMgdG8gZ2V0IHRoZSByZXF1aXJlZCBudW1iZXIgb2YgdmFsaWQgc2FtcGxlcyAoMTAwKS4gVGhlIGN1cnJlbnQgY29kZSwgYW5kIHRoZSByZWZhY3RvcmVkIGNvZGUsIHdpbGwgcG90ZW50aWFsbHkgcmVhZCB1bmluaXRpYWxpemVkIG1lbW9yeSBmcm9tIHRoZXNlIGFycmF5cyBpZiB0aGUgaGFyZHdhcmUgZmFpbHMgdG8gZGVsaXZlciBhIGdvb2Qgc2FtcGxlIHNldCB3aXRoaW4gMTAsMDAwIHRyaWVzLiAqSG93ZXZlciosIHRoaXMgaXNuJiMzOTt0IGEgKm5ldyogcHJvYmxlbSBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIEtNU0FOIHdvdWxkIGNhdGNoIGl0LCBidXQgdGhpcyBwcmUtZXhpc3RpbmcgcG90ZW50aWFsIGlzc3VlIChpZiBpdCBldmVuICppcyogYW4gaXNzdWUsIGdpdmVuIHRoZSAxMCwwMDAgYXR0ZW1wdHMpIGlzIHVucmVsYXRlZCB0byB0aGUgcGF0Y2guCgpJIHNlZSB0aGF0IHRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgY2hhbmdlcyBzb21lIGNhbGN1bGF0aW9ucyBpbnNpZGUgYHJ0dzg4MjJjX2RhY19pcV9vZmZzZXRgLCBidXQgaXQmIzM5O3Mgbm93IGp1c3Qgc3VtbWluZyB0aGUgbWlkZGxlIDgwIGVsZW1lbnRzIG9mIGEgdmVjdG9yLCBhbmQgdGhlbiBkb2luZyBzb21lIHNpbXBsZSBjYWxjdWxhdGlvbnMuIEFnYWluLCB0aGUgY29yZSBoZXJlIGlzIGp1c3QgYWxnb3JpdGhtaWMgc2ltcGxpZmljYXRpb24sIHNvIG5vLCB0aGlzIGlzbiYjMzk7dCBpbnRyb2R1Y2luZyBhIG5ldyByaXNrLiBUaGUgZGF0YSBpcyAqbm90KiBleHBvc2VkIHRvIHVzZXJzcGFjZS4gSXQgaXMgcHVyZWx5IGZvciBpbnRlcm5hbCBoYXJkd2FyZSBjYWxpYnJhdGlvbi4gVGhlcmVmb3JlLCB0aGVyZSYjMzk7cyBubyB3YXkgdG8gbGVhayB1bmluaXRpYWxpemVkIGRhdGEuIElmIHRoZXJlICppcyogdW5pbml0aWFsaXplZCBkYXRhLCBpdCB3b3VsZCBvbmx5IGJlIGluIHRoZSBzdGFjaywgYW5kIHRoZSB1c3VhbCBtZW1vcnkgc2FmZXR5IGNoZWNrcyBsaWtlIEtBU0FOIGFuZCBvdGhlciBzdGF0aWMgYW5hbHlzaXMgdG9vbHMgYXJlIGdvb2QgZW5vdWdoLgoKVGhlIGNvZGUgY2hhbmdlcyBpbmNsdWRlIHVzaW5nIGBzb3J0KClgIHdoaWNoIGlzIGZpbmUsIGFuZCBgc2lnbl9leHRlbmQzMmAgd2hpY2ggaXMgYWxzbyBmaW5lLiBUaGVyZSBhcmUgbm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gbmV3IHN0cnVjdHVyZXMgdGhhdCBhcmUgc2VudCB0byB1c2Vyc3BhY2UuIFRoaXMgc2VlbXMgZW50aXJlbHkgc2FmZS4gU28sIEkmIzM5O20gY29uZmlkZW50IGluIHNheWluZyB0aGF0IHRoZSBwYXRjaCBkb2VzICpub3QqIGludHJvZHVjZSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgdnVsbmVyYWJpbGl0aWVzLCBhbmQgS01TQU4gaXNuJiMzOTt0IHNwZWNpZmljYWxseSBuZWVkZWQgaGVyZS4gSW4gb3RoZXIgd29yZHMsIEkmIzM5O2Qgc2F5IGBOZWVkc0tNU0FOID0gZmFsc2VgLiBJdCYjMzk7cyBhIGNsZWFuIHJlZmFjdG9yaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdGhlIElRIGNhbGlicmF0aW9uIGxvZ2ljIGluIHRoZSBSZWFsdGVrIHJ0dzg4IHdpcmVsZXNzIGRyaXZlci4gSXQgcmVwbGFjZXMgY3VzdG9tIHNvcnRpbmcgYW5kIG1pbi9tYXggY2FsY3VsYXRpb25zIHdpdGggc3RhbmRhcmQga2VybmVsIGZ1bmN0aW9ucyAoYHNvcnQoKWApIGFuZCBzaW1wbGlmaWVzIHRoZSBhcml0aG1ldGljIGJ5IHVzaW5nIHNpZ25lZCAzMi1iaXQgaW50ZWdlcnMgKGBzMzJgKSBpbnN0ZWFkIG9mIHVuc2lnbmVkIGludGVnZXJzIHdpdGggbWFudWFsIHNpZ24gaGFuZGxpbmcuIFRoZSBhcnJheXMgYGl2YCBhbmQgYHF2YCBhcmUgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBhbmQgcG9wdWxhdGVkIGJ5IHJlYWRpbmcgaGFyZHdhcmUgcmVnaXN0ZXJzLiBXaGlsZSB0aGVyZSBpcyBhIHRoZW9yZXRpY2FsIHByZS1leGlzdGluZyBlZGdlIGNhc2Ugd2hlcmUgdGhlIGFycmF5cyBtaWdodCBub3QgYmUgZnVsbHkgcG9wdWxhdGVkIGlmIHRoZSBoYXJkd2FyZSBmYWlscyB0byBwcm92aWRlIGVub3VnaCB2YWxpZCBzYW1wbGVzIHdpdGhpbiAxMCwwMDAgaXRlcmF0aW9ucywgdGhpcyBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhhY2VyYmF0ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIFRoZSBkYXRhIGlzIHVzZWQgc3RyaWN0bHkgZm9yIGludGVybmFsIGhhcmR3YXJlIGNhbGlicmF0aW9uIGFuZCBpcyBub3QgY29waWVkIHRvIHVzZXJzcGFjZSwgbWVhbmluZyB0aGVyZSBpcyBubyByaXNrIG9mIGFuIGluZm8tbGVhay4gQW55IHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIG1lbW9yeSBjb3JydXB0aW9uIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gQSBkZWRpY2F0ZWQgS01TQU4gcnVuIGlzIG5vdCBqdXN0aWZpZWQgYXMgbm8gbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVhayB2dWxuZXJhYmlsaXRpZXMgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdGhlIElRIGNhbGlicmF0aW9uIGxvZ2ljIGluIHRoZSBSZWFsdGVrIHJ0dzg4IHdpcmVsZXNzIGRyaXZlci4gSXQgcmVwbGFjZXMgY3VzdG9tIHNvcnRpbmcgYW5kIG1pbi9tYXggY2FsY3VsYXRpb25zIHdpdGggc3RhbmRhcmQga2VybmVsIGZ1bmN0aW9ucyAoYHNvcnQoKWApIGFuZCBzaW1wbGlmaWVzIHRoZSBhcml0aG1ldGljIGJ5IHVzaW5nIHNpZ25lZCAzMi1iaXQgaW50ZWdlcnMgKGBzMzJgKSBpbnN0ZWFkIG9mIHVuc2lnbmVkIGludGVnZXJzIHdpdGggbWFudWFsIHNpZ24gaGFuZGxpbmcuIFRoZSBhcnJheXMgYGl2YCBhbmQgYHF2YCBhcmUgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBhbmQgcG9wdWxhdGVkIGJ5IHJlYWRpbmcgaGFyZHdhcmUgcmVnaXN0ZXJzLiBXaGlsZSB0aGVyZSBpcyBhIHRoZW9yZXRpY2FsIHByZS1leGlzdGluZyBlZGdlIGNhc2Ugd2hlcmUgdGhlIGFycmF5cyBtaWdodCBub3QgYmUgZnVsbHkgcG9wdWxhdGVkIGlmIHRoZSBoYXJkd2FyZSBmYWlscyB0byBwcm92aWRlIGVub3VnaCB2YWxpZCBzYW1wbGVzIHdpdGhpbiAxMCwwMDAgaXRlcmF0aW9ucywgdGhpcyBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhhY2VyYmF0ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIFRoZSBkYXRhIGlzIHVzZWQgc3RyaWN0bHkgZm9yIGludGVybmFsIGhhcmR3YXJlIGNhbGlicmF0aW9uIGFuZCBpcyBub3QgY29waWVkIHRvIHVzZXJzcGFjZSwgbWVhbmluZyB0aGVyZSBpcyBubyByaXNrIG9mIGFuIGluZm8tbGVhay4gQW55IHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIG1lbW9yeSBjb3JydXB0aW9uIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gQSBkZWRpY2F0ZWQgS01TQU4gcnVuIGlzIG5vdCBqdXN0aWZpZWQgYXMgbm8gbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVhayB2dWxuZXJhYmlsaXRpZXMgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEyOjE3LjE2NzEwODE3M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMDA3NTc0NzU3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVFc4OFwiLFxuICAgIFwiUlRXODhfODgyMkNVXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnR3ODgyMmNfcGh5X3NldF9wYXJhbVwiLFxuICAgIFwicnR3ODgyMmNfcmZfZGFjX2NhbFwiLFxuICAgIFwicnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIElRIGNhbGlicmF0aW9uIGxvZ2ljIGluIHRoZSBSZWFsdGVrIHJ0dzg4IHdpcmVsZXNzIGRyaXZlci4gSXQgcmVwbGFjZXMgY3VzdG9tIHNvcnRpbmcgYW5kIG1pbi9tYXggY2FsY3VsYXRpb25zIHdpdGggc3RhbmRhcmQga2VybmVsIGZ1bmN0aW9ucyAoYHNvcnQoKWApIGFuZCBzaW1wbGlmaWVzIHRoZSBhcml0aG1ldGljIGJ5IHVzaW5nIHNpZ25lZCAzMi1iaXQgaW50ZWdlcnMgKGBzMzJgKSBpbnN0ZWFkIG9mIHVuc2lnbmVkIGludGVnZXJzIHdpdGggbWFudWFsIHNpZ24gaGFuZGxpbmcuIFRoZSBhcnJheXMgYGl2YCBhbmQgYHF2YCBhcmUgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBhbmQgcG9wdWxhdGVkIGJ5IHJlYWRpbmcgaGFyZHdhcmUgcmVnaXN0ZXJzLiBXaGlsZSB0aGVyZSBpcyBhIHRoZW9yZXRpY2FsIHByZS1leGlzdGluZyBlZGdlIGNhc2Ugd2hlcmUgdGhlIGFycmF5cyBtaWdodCBub3QgYmUgZnVsbHkgcG9wdWxhdGVkIGlmIHRoZSBoYXJkd2FyZSBmYWlscyB0byBwcm92aWRlIGVub3VnaCB2YWxpZCBzYW1wbGVzIHdpdGhpbiAxMCwwMDAgaXRlcmF0aW9ucywgdGhpcyBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhhY2VyYmF0ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIFRoZSBkYXRhIGlzIHVzZWQgc3RyaWN0bHkgZm9yIGludGVybmFsIGhhcmR3YXJlIGNhbGlicmF0aW9uIGFuZCBpcyBub3QgY29waWVkIHRvIHVzZXJzcGFjZSwgbWVhbmluZyB0aGVyZSBpcyBubyByaXNrIG9mIGFuIGluZm8tbGVhay4gQW55IHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIG1lbW9yeSBjb3JydXB0aW9uIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gQSBkZWRpY2F0ZWQgS01TQU4gcnVuIGlzIG5vdCBqdXN0aWZpZWQgYXMgbm8gbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVhayB2dWxuZXJhYmlsaXRpZXMgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFJGIGNhbGlicmF0aW9uIGxvZ2ljIChzcGVjaWZpY2FsbHkgREFDIElRIGNhbGlicmF0aW9uKSBpbiB0aGUgUmVhbHRlayA4ODIyQyB3aXJlbGVzcyBkcml2ZXIgKGBydHc4ODIyYy5jYCkuIEl0IHJlcGxhY2VzIGEgY3VzdG9tIHNvcnRpbmcgaW1wbGVtZW50YXRpb24gd2l0aCB0aGUgc3RhbmRhcmQgYHNvcnQoKWAgZnVuY3Rpb24gYW5kIGNoYW5nZXMgdGhlIGxvZ2ljIGZvciBjYWxjdWxhdGluZyBJUSBvZmZzZXRzIGFuZCBjaGVja2luZyB2YWx1ZXMuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGJlY2F1c2UgdGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgZGV2aWNlcyAoYHJ0dzg4MjJjdWApLCB3aGljaCBjYW4gYmUgZW11bGF0ZWQgYnkgc3l6a2FsbGVyIHZpYSBgc3l6X3VzYl9jb25uZWN0YC4gV2hlbiB0aGUgZW11bGF0ZWQgVVNCIFdpLUZpIGludGVyZmFjZSBpcyBicm91Z2h0IHVwLCB0aGUgZHJpdmVyIHBlcmZvcm1zIFJGIGNhbGlicmF0aW9uLCB0cmlnZ2VyaW5nIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEyOjE3LjE2NzExMjY1M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAzNDUwMTc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDUxODc5YmQ3NzViZGQ4ZjE3YTdlMzdiZjU3YjI5MzA0ZDljMDhlMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyAxMyAwNjoxMjoxNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmNcXG5pbmRleCAyNDRjODAyNjQ3OWMyLi42ZmNkZmM2NGMzYjFkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuY1xcbkBAIC0zLDYgKzMsOCBAQFxcbiAgKi9cXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JpdG9wcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvc29ydC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXFwibWFpbi5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiY29leC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiZncuaFxcXCJcXG5AQCAtMTUzLDg0ICsxNTUsMzAgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX3Jlc3RvcmVfcmVnKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuIFxcdH1cXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgcnR3ODgyMmNfcmZfbWlubWF4X2NtcChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgdmFsdWUsXFxuLVxcdFxcdFxcdFxcdCAgIHUzMiAqbWluLCB1MzIgKm1heClcXG4rc3RhdGljIGludCBydHc4ODIyY19kYWNfaXFfY21wX3MzMihjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKVxcbiB7XFxuLVxcdGlmICh2YWx1ZSBcXHUwMDNlPSAweDIwMCkge1xcbi1cXHRcXHRpZiAoKm1pbiBcXHUwMDNlPSAweDIwMCkge1xcbi1cXHRcXHRcXHRpZiAoKm1pbiBcXHUwMDNlIHZhbHVlKVxcbi1cXHRcXHRcXHRcXHQqbWluID0gdmFsdWU7XFxuLVxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdCptaW4gPSB2YWx1ZTtcXG4tXFx0XFx0fVxcbi1cXHRcXHRpZiAoKm1heCBcXHUwMDNlPSAweDIwMCkge1xcbi1cXHRcXHRcXHRpZiAoKm1heCBcXHUwMDNjIHZhbHVlKVxcbi1cXHRcXHRcXHRcXHQqbWF4ID0gdmFsdWU7XFxuLVxcdFxcdH1cXG4tXFx0fSBlbHNlIHtcXG4tXFx0XFx0aWYgKCptaW4gXFx1MDAzYyAweDIwMCkge1xcbi1cXHRcXHRcXHRpZiAoKm1pbiBcXHUwMDNlIHZhbHVlKVxcbi1cXHRcXHRcXHRcXHQqbWluID0gdmFsdWU7XFxuLVxcdFxcdH1cXG4tXFxuLVxcdFxcdGlmICgqbWF4ICBcXHUwMDNlPSAweDIwMCkge1xcbi1cXHRcXHRcXHQqbWF4ID0gdmFsdWU7XFxuLVxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdGlmICgqbWF4IFxcdTAwM2MgdmFsdWUpXFxuLVxcdFxcdFxcdFxcdCptYXggPSB2YWx1ZTtcXG4tXFx0XFx0fVxcbi1cXHR9XFxuLX1cXG4rXFx0czMyIHZhID0gKihjb25zdCBzMzIgKilhO1xcbitcXHRzMzIgdmIgPSAqKGNvbnN0IHMzMiAqKWI7XFxuIFxcbi1zdGF0aWMgdm9pZCBfX3J0dzg4MjJjX2RhY19pcV9zb3J0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqdjEsIHUzMiAqdjIpXFxuLXtcXG4tXFx0aWYgKCp2MSBcXHUwMDNlPSAweDIwMCBcXHUwMDI2XFx1MDAyNiAqdjIgXFx1MDAzZT0gMHgyMDApIHtcXG4tXFx0XFx0aWYgKCp2MSBcXHUwMDNlICp2MilcXG4tXFx0XFx0XFx0c3dhcCgqdjEsICp2Mik7XFxuLVxcdH0gZWxzZSBpZiAoKnYxIFxcdTAwM2MgMHgyMDAgXFx1MDAyNlxcdTAwMjYgKnYyIFxcdTAwM2MgMHgyMDApIHtcXG4tXFx0XFx0aWYgKCp2MSBcXHUwMDNlICp2MilcXG4tXFx0XFx0XFx0c3dhcCgqdjEsICp2Mik7XFxuLVxcdH0gZWxzZSBpZiAoKnYxIFxcdTAwM2MgMHgyMDAgXFx1MDAyNlxcdTAwMjYgKnYyIFxcdTAwM2U9IDB4MjAwKSB7XFxuLVxcdFxcdHN3YXAoKnYxLCAqdjIpO1xcbi1cXHR9XFxuK1xcdHJldHVybiAodmEgXFx1MDAzZSB2YikgLSAodmEgXFx1MDAzYyB2Yik7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9zb3J0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqaXYsIHUzMiAqcXYpXFxuK3N0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9zb3J0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiAqaXYsIHMzMiAqcXYpXFxuIHtcXG4tXFx0dTMyIGksIGo7XFxuLVxcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgREFDS19TTl84ODIyQyAtIDE7IGkrKykge1xcbi1cXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgKERBQ0tfU05fODgyMkMgLSAxIC0gaSkgOyBqKyspIHtcXG4tXFx0XFx0XFx0X19ydHc4ODIyY19kYWNfaXFfc29ydChydHdkZXYsIFxcdTAwMjZpdltqXSwgXFx1MDAyNml2W2ogKyAxXSk7XFxuLVxcdFxcdFxcdF9fcnR3ODgyMmNfZGFjX2lxX3NvcnQocnR3ZGV2LCBcXHUwMDI2cXZbal0sIFxcdTAwMjZxdltqICsgMV0pO1xcbi1cXHRcXHR9XFxuLVxcdH1cXG4rXFx0c29ydChpdiwgREFDS19TTl84ODIyQywgc2l6ZW9mKHMzMiksIHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyLCBOVUxMKTtcXG4rXFx0c29ydChxdiwgREFDS19TTl84ODIyQywgc2l6ZW9mKHMzMiksIHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyLCBOVUxMKTtcXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2lxX29mZnNldChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKnZlYywgdTMyICp2YWwpXFxuK3N0YXRpYyBzMzIgcnR3ODgyMmNfZGFjX2lxX29mZnNldChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKnZlYylcXG4ge1xcbi1cXHR1MzIgcCwgbSwgdCwgaTtcXG4rXFx0czMyIHN1bSA9IDA7XFxuIFxcbi1cXHRtID0gMDtcXG4tXFx0cCA9IDA7XFxuLVxcdGZvciAoaSA9IDEwOyBpIFxcdTAwM2MgREFDS19TTl84ODIyQyAtIDEwOyBpKyspIHtcXG4tXFx0XFx0aWYgKHZlY1tpXSBcXHUwMDNlIDB4MjAwKVxcbi1cXHRcXHRcXHRtID0gKDB4NDAwIC0gdmVjW2ldKSArIG07XFxuLVxcdFxcdGVsc2VcXG4tXFx0XFx0XFx0cCA9IHZlY1tpXSArIHA7XFxuLVxcdH1cXG4rXFx0Zm9yICh1MzIgaSA9IDEwOyBpIFxcdTAwM2MgREFDS19TTl84ODIyQyAtIDEwOyBpKyspXFxuK1xcdFxcdHN1bSArPSB2ZWNbaV07XFxuIFxcbi1cXHRpZiAocCBcXHUwMDNlIG0pIHtcXG4tXFx0XFx0dCA9IHAgLSBtO1xcbi1cXHRcXHR0ID0gdCAvIChEQUNLX1NOXzg4MjJDIC0gMjApO1xcbi1cXHR9IGVsc2Uge1xcbi1cXHRcXHR0ID0gbSAtIHA7XFxuLVxcdFxcdHQgPSB0IC8gKERBQ0tfU05fODgyMkMgLSAyMCk7XFxuLVxcdFxcdGlmICh0ICE9IDB4MClcXG4tXFx0XFx0XFx0dCA9IDB4NDAwIC0gdDtcXG4tXFx0fVxcbitcXHRzMzIgYXZnID0gc3VtIC8gKERBQ0tfU05fODgyMkMgLSAyMCk7XFxuIFxcbi1cXHQqdmFsID0gdDtcXG4rXFx0cmV0dXJuIGF2ZyBcXHUwMDNlPSAwID8gYXZnIDogMHg0MDAgKyBhdmc7XFxuIH1cXG4gXFxuIHN0YXRpYyB1MzIgcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcih1OCBwYXRoKVxcbkBAIC0yNzEsMjkgKzIxOSwyNyBAQCBzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcih1OCBwYXRoKVxcbiBcXHRyZXR1cm4gYmFzZV9hZGRyO1xcbiB9XFxuIFxcbi1zdGF0aWMgYm9vbCBydHc4ODIyY19kYWNfaXFfY2hlY2soc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyIHZhbHVlKVxcbitzdGF0aWMgYm9vbCBydHc4ODIyY19kYWNfaXFfY2hlY2soc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyIHZhbHVlKVxcbiB7XFxuLVxcdGJvb2wgcmV0ID0gdHJ1ZTtcXG4gXFxuLVxcdGlmICgodmFsdWUgXFx1MDAzZT0gMHgyMDAgXFx1MDAyNlxcdTAwMjYgKDB4NDAwIC0gdmFsdWUpIFxcdTAwM2UgMHg2NCkgfHxcXG4tXFx0ICAgICh2YWx1ZSBcXHUwMDNjIDB4MjAwIFxcdTAwMjZcXHUwMDI2IHZhbHVlIFxcdTAwM2UgMHg2NCkpIHtcXG4tXFx0XFx0cmV0ID0gZmFsc2U7XFxuK1xcdGlmICh2YWx1ZSBcXHUwMDNlIDEwMCB8fCB2YWx1ZSBcXHUwMDNjIC0xMDApIHtcXG4gXFx0XFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLCBcXFwiW0RBQ0tdIEVycm9yIG92ZXJmbG93XFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXHR9XFxuIFxcbi1cXHRyZXR1cm4gcmV0O1xcbitcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdilcXG4rc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdilcXG4ge1xcbiBcXHR1MzIgdGVtcDtcXG4tXFx0aW50IGkgPSAwLCBjbnQgPSAwO1xcbitcXHR1MzIgaSA9IDAsIGNudCA9IDA7XFxuIFxcbiBcXHR3aGlsZSAoaSBcXHUwMDNjIERBQ0tfU05fODgyMkMgXFx1MDAyNlxcdTAwMjYgY250IFxcdTAwM2MgMTAwMDApIHtcXG4gXFx0XFx0Y250Kys7XFxuIFxcdFxcdHRlbXAgPSBydHdfcmVhZDMyX21hc2socnR3ZGV2LCAweDJkYmMsIDB4M2ZmZmZmKTtcXG4tXFx0XFx0aXZbaV0gPSAodGVtcCBcXHUwMDI2IDB4M2ZmMDAwKSBcXHUwMDNlXFx1MDAzZSAxMjtcXG4tXFx0XFx0cXZbaV0gPSB0ZW1wIFxcdTAwMjYgMHgzZmY7XFxuK1xcdFxcdGl2W2ldID0gc2lnbl9leHRlbmQzMigodGVtcCBcXHUwMDI2IDB4M2ZmMDAwKSBcXHUwMDNlXFx1MDAzZSAxMiwgOSk7XFxuK1xcdFxcdHF2W2ldID0gc2lnbl9leHRlbmQzMih0ZW1wIFxcdTAwMjYgMHgzZmYsIDkpO1xcbiBcXG4gXFx0XFx0aWYgKHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIGl2W2ldKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHJ0d2RldiwgcXZbaV0pKVxcbkBAIC0zMDIsMTMgKzI0OCwxMiBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKml2LCB1MzIgKnF2KVxcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbi1cXHRcXHRcXHRcXHQgICAgICAgdTMyICppdiwgdTMyICpxdixcXG4rXFx0XFx0XFx0XFx0ICAgICAgIHMzMiAqaXYsIHMzMiAqcXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgICB1MzIgKmlfdmFsdWUsIHUzMiAqcV92YWx1ZSlcXG4ge1xcbi1cXHR1MzIgaV9tYXggPSAwLCBxX21heCA9IDAsIGlfbWluID0gMCwgcV9taW4gPSAwO1xcbi1cXHR1MzIgaV9kZWx0YSwgcV9kZWx0YTtcXG4rXFx0czMyIGlfbWF4ID0gMCwgcV9tYXggPSAwLCBpX21pbiA9IDAsIHFfbWluID0gMDtcXG4gXFx0dTMyIHRlbXA7XFxuLVxcdGludCBpLCBjbnQgPSAwO1xcbitcXHR1MzIgaSwgY250ID0gMDtcXG4gXFxuIFxcdGRvIHtcXG4gXFx0XFx0aV9taW4gPSBpdlswXTtcXG5AQCAtMzE2LDIzICsyNjEsMTggQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG4gXFx0XFx0cV9taW4gPSBxdlswXTtcXG4gXFx0XFx0cV9tYXggPSBxdlswXTtcXG4gXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIERBQ0tfU05fODgyMkM7IGkrKykge1xcbi1cXHRcXHRcXHRydHc4ODIyY19yZl9taW5tYXhfY21wKHJ0d2RldiwgaXZbaV0sIFxcdTAwMjZpX21pbiwgXFx1MDAyNmlfbWF4KTtcXG4tXFx0XFx0XFx0cnR3ODgyMmNfcmZfbWlubWF4X2NtcChydHdkZXYsIHF2W2ldLCBcXHUwMDI2cV9taW4sIFxcdTAwMjZxX21heCk7XFxuK1xcdFxcdFxcdGlmIChpdltpXSBcXHUwMDNjIGlfbWluKVxcbitcXHRcXHRcXHRcXHRpX21pbiA9IGl2W2ldO1xcbitcXHRcXHRcXHRpZiAoaXZbaV0gXFx1MDAzZSBpX21heClcXG4rXFx0XFx0XFx0XFx0aV9tYXggPSBpdltpXTtcXG4rXFx0XFx0XFx0aWYgKHF2W2ldIFxcdTAwM2MgcV9taW4pXFxuK1xcdFxcdFxcdFxcdHFfbWluID0gcXZbaV07XFxuK1xcdFxcdFxcdGlmIChxdltpXSBcXHUwMDNlIHFfbWF4KVxcbitcXHRcXHRcXHRcXHRxX21heCA9IHF2W2ldO1xcbiBcXHRcXHR9XFxuIFxcbi1cXHRcXHRpZiAoaV9tYXggXFx1MDAzYyAweDIwMCBcXHUwMDI2XFx1MDAyNiBpX21pbiBcXHUwMDNjIDB4MjAwKVxcbi1cXHRcXHRcXHRpX2RlbHRhID0gaV9tYXggLSBpX21pbjtcXG4tXFx0XFx0ZWxzZSBpZiAoaV9tYXggXFx1MDAzZT0gMHgyMDAgXFx1MDAyNlxcdTAwMjYgaV9taW4gXFx1MDAzZT0gMHgyMDApXFxuLVxcdFxcdFxcdGlfZGVsdGEgPSBpX21heCAtIGlfbWluO1xcbi1cXHRcXHRlbHNlXFxuLVxcdFxcdFxcdGlfZGVsdGEgPSBpX21heCArICgweDQwMCAtIGlfbWluKTtcXG4tXFxuLVxcdFxcdGlmIChxX21heCBcXHUwMDNjIDB4MjAwIFxcdTAwMjZcXHUwMDI2IHFfbWluIFxcdTAwM2MgMHgyMDApXFxuLVxcdFxcdFxcdHFfZGVsdGEgPSBxX21heCAtIHFfbWluO1xcbi1cXHRcXHRlbHNlIGlmIChxX21heCBcXHUwMDNlPSAweDIwMCBcXHUwMDI2XFx1MDAyNiBxX21pbiBcXHUwMDNlPSAweDIwMClcXG4tXFx0XFx0XFx0cV9kZWx0YSA9IHFfbWF4IC0gcV9taW47XFxuLVxcdFxcdGVsc2VcXG4tXFx0XFx0XFx0cV9kZWx0YSA9IHFfbWF4ICsgKDB4NDAwIC0gcV9taW4pO1xcbitcXHRcXHR1MzIgaV9kZWx0YSA9ICh1MzIpKGlfbWF4IC0gaV9taW4pO1xcbitcXHRcXHR1MzIgcV9kZWx0YSA9ICh1MzIpKHFfbWF4IC0gcV9taW4pO1xcbiBcXG4gXFx0XFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLFxcbiBcXHRcXHRcXHRcXFwiW0RBQ0tdIGk6IG1pbj0weCUwOHgsIG1heD0weCUwOHgsIGRlbHRhPTB4JTA4eFxcXFxuXFxcIixcXG5AQCAtMzQ1LDI0ICsyODUsMjQgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG4gXFxuIFxcdFxcdGlmIChpX2RlbHRhIFxcdTAwM2UgNSB8fCBxX2RlbHRhIFxcdTAwM2UgNSkge1xcbiBcXHRcXHRcXHR0ZW1wID0gcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZik7XFxuLVxcdFxcdFxcdGl2WzBdID0gKHRlbXAgXFx1MDAyNiAweDNmZjAwMCkgXFx1MDAzZVxcdTAwM2UgMTI7XFxuLVxcdFxcdFxcdHF2WzBdID0gdGVtcCBcXHUwMDI2IDB4M2ZmO1xcbitcXHRcXHRcXHRpdlswXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgXFx1MDAyNiAweDNmZjAwMCkgXFx1MDAzZVxcdTAwM2UgMTIsIDkpO1xcbitcXHRcXHRcXHRxdlswXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCBcXHUwMDI2IDB4M2ZmLCA5KTtcXG4gXFx0XFx0XFx0dGVtcCA9IHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpO1xcbi1cXHRcXHRcXHRpdltEQUNLX1NOXzg4MjJDIC0gMV0gPSAodGVtcCBcXHUwMDI2IDB4M2ZmMDAwKSBcXHUwMDNlXFx1MDAzZSAxMjtcXG4tXFx0XFx0XFx0cXZbREFDS19TTl84ODIyQyAtIDFdID0gdGVtcCBcXHUwMDI2IDB4M2ZmO1xcbitcXHRcXHRcXHRpdltEQUNLX1NOXzg4MjJDIC0gMV0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wIFxcdTAwMjYgMHgzZmYwMDApIFxcdTAwM2VcXHUwMDNlIDEyLCA5KTtcXG4rXFx0XFx0XFx0cXZbREFDS19TTl84ODIyQyAtIDFdID0gc2lnbl9leHRlbmQzMih0ZW1wIFxcdTAwMjYgMHgzZmYsIDkpO1xcbiBcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0fVxcbiBcXHR9IHdoaWxlIChjbnQrKyBcXHUwMDNjIDEwMCk7XFxuIFxcbi1cXHRydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgaXYsIGlfdmFsdWUpO1xcbi1cXHRydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgcXYsIHFfdmFsdWUpO1xcbitcXHQqaV92YWx1ZSA9IHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBpdik7XFxuK1xcdCpxX3ZhbHVlID0gcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIHF2KTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgdTMyICppX3ZhbHVlLCB1MzIgKnFfdmFsdWUpXFxuIHtcXG4tXFx0dTMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTtcXG4rXFx0czMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTtcXG4gXFx0dTMyIHJmX2EsIHJmX2I7XFxuIFxcbiBcXHRyZl9hID0gcnR3X3JlYWRfcmYocnR3ZGV2LCBSRl9QQVRIX0EsIDB4MCwgUkZSRUdfTUFTSyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEyOjE3LjY3MTMyNTc5OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI3NzU4ODE3MTI2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVFc4OFwiLFxuICAgIFwiUlRXODhfODgyMkNVXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnR3ODgyMmNfcGh5X3NldF9wYXJhbVwiLFxuICAgIFwicnR3ODgyMmNfcmZfZGFjX2NhbFwiLFxuICAgIFwicnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFJGIGNhbGlicmF0aW9uIGxvZ2ljIChzcGVjaWZpY2FsbHkgREFDIElRIGNhbGlicmF0aW9uKSBpbiB0aGUgUmVhbHRlayA4ODIyQyB3aXJlbGVzcyBkcml2ZXIgKGBydHc4ODIyYy5jYCkuIEl0IHJlcGxhY2VzIGEgY3VzdG9tIHNvcnRpbmcgaW1wbGVtZW50YXRpb24gd2l0aCB0aGUgc3RhbmRhcmQgYHNvcnQoKWAgZnVuY3Rpb24gYW5kIGNoYW5nZXMgdGhlIGxvZ2ljIGZvciBjYWxjdWxhdGluZyBJUSBvZmZzZXRzIGFuZCBjaGVja2luZyB2YWx1ZXMuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGJlY2F1c2UgdGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgZGV2aWNlcyAoYHJ0dzg4MjJjdWApLCB3aGljaCBjYW4gYmUgZW11bGF0ZWQgYnkgc3l6a2FsbGVyIHZpYSBgc3l6X3VzYl9jb25uZWN0YC4gV2hlbiB0aGUgZW11bGF0ZWQgVVNCIFdpLUZpIGludGVyZmFjZSBpcyBicm91Z2h0IHVwLCB0aGUgZHJpdmVyIHBlcmZvcm1zIFJGIGNhbGlicmF0aW9uLCB0cmlnZ2VyaW5nIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQ1MTg3OWJkNzc1YmRkOGYxN2E3ZTM3YmY1N2IyOTMwNGQ5YzA4ZTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAwNjoxMjoxNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuY1xuaW5kZXggMjQ0YzgwMjY0NzljMi4uNmZjZGZjNjRjM2IxZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jXG5AQCAtMyw2ICszLDggQEBcbiAgKi9cbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdG9wcy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvc29ydC5oXHUwMDNlXG4gI2luY2x1ZGUgXCJtYWluLmhcIlxuICNpbmNsdWRlIFwiY29leC5oXCJcbiAjaW5jbHVkZSBcImZ3LmhcIlxuQEAgLTE1Myw4NCArMTU1LDMwIEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19yZXN0b3JlX3JlZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgdm9pZCBydHc4ODIyY19yZl9taW5tYXhfY21wKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiB2YWx1ZSxcbi1cdFx0XHRcdCAgIHUzMiAqbWluLCB1MzIgKm1heClcbitzdGF0aWMgaW50IHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpXG4ge1xuLVx0aWYgKHZhbHVlIFx1MDAzZT0gMHgyMDApIHtcbi1cdFx0aWYgKCptaW4gXHUwMDNlPSAweDIwMCkge1xuLVx0XHRcdGlmICgqbWluIFx1MDAzZSB2YWx1ZSlcbi1cdFx0XHRcdCptaW4gPSB2YWx1ZTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHQqbWluID0gdmFsdWU7XG4tXHRcdH1cbi1cdFx0aWYgKCptYXggXHUwMDNlPSAweDIwMCkge1xuLVx0XHRcdGlmICgqbWF4IFx1MDAzYyB2YWx1ZSlcbi1cdFx0XHRcdCptYXggPSB2YWx1ZTtcbi1cdFx0fVxuLVx0fSBlbHNlIHtcbi1cdFx0aWYgKCptaW4gXHUwMDNjIDB4MjAwKSB7XG4tXHRcdFx0aWYgKCptaW4gXHUwMDNlIHZhbHVlKVxuLVx0XHRcdFx0Km1pbiA9IHZhbHVlO1xuLVx0XHR9XG4tXG4tXHRcdGlmICgqbWF4ICBcdTAwM2U9IDB4MjAwKSB7XG4tXHRcdFx0Km1heCA9IHZhbHVlO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdGlmICgqbWF4IFx1MDAzYyB2YWx1ZSlcbi1cdFx0XHRcdCptYXggPSB2YWx1ZTtcbi1cdFx0fVxuLVx0fVxuLX1cbitcdHMzMiB2YSA9ICooY29uc3QgczMyICopYTtcbitcdHMzMiB2YiA9ICooY29uc3QgczMyICopYjtcbiBcbi1zdGF0aWMgdm9pZCBfX3J0dzg4MjJjX2RhY19pcV9zb3J0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqdjEsIHUzMiAqdjIpXG4te1xuLVx0aWYgKCp2MSBcdTAwM2U9IDB4MjAwIFx1MDAyNlx1MDAyNiAqdjIgXHUwMDNlPSAweDIwMCkge1xuLVx0XHRpZiAoKnYxIFx1MDAzZSAqdjIpXG4tXHRcdFx0c3dhcCgqdjEsICp2Mik7XG4tXHR9IGVsc2UgaWYgKCp2MSBcdTAwM2MgMHgyMDAgXHUwMDI2XHUwMDI2ICp2MiBcdTAwM2MgMHgyMDApIHtcbi1cdFx0aWYgKCp2MSBcdTAwM2UgKnYyKVxuLVx0XHRcdHN3YXAoKnYxLCAqdjIpO1xuLVx0fSBlbHNlIGlmICgqdjEgXHUwMDNjIDB4MjAwIFx1MDAyNlx1MDAyNiAqdjIgXHUwMDNlPSAweDIwMCkge1xuLVx0XHRzd2FwKCp2MSwgKnYyKTtcbi1cdH1cbitcdHJldHVybiAodmEgXHUwMDNlIHZiKSAtICh2YSBcdTAwM2MgdmIpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKml2LCB1MzIgKnF2KVxuK3N0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9zb3J0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiAqaXYsIHMzMiAqcXYpXG4ge1xuLVx0dTMyIGksIGo7XG4tXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBEQUNLX1NOXzg4MjJDIC0gMTsgaSsrKSB7XG4tXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIChEQUNLX1NOXzg4MjJDIC0gMSAtIGkpIDsgaisrKSB7XG4tXHRcdFx0X19ydHc4ODIyY19kYWNfaXFfc29ydChydHdkZXYsIFx1MDAyNml2W2pdLCBcdTAwMjZpdltqICsgMV0pO1xuLVx0XHRcdF9fcnR3ODgyMmNfZGFjX2lxX3NvcnQocnR3ZGV2LCBcdTAwMjZxdltqXSwgXHUwMDI2cXZbaiArIDFdKTtcbi1cdFx0fVxuLVx0fVxuK1x0c29ydChpdiwgREFDS19TTl84ODIyQywgc2l6ZW9mKHMzMiksIHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyLCBOVUxMKTtcbitcdHNvcnQocXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICp2ZWMsIHUzMiAqdmFsKVxuK3N0YXRpYyBzMzIgcnR3ODgyMmNfZGFjX2lxX29mZnNldChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKnZlYylcbiB7XG4tXHR1MzIgcCwgbSwgdCwgaTtcbitcdHMzMiBzdW0gPSAwO1xuIFxuLVx0bSA9IDA7XG4tXHRwID0gMDtcbi1cdGZvciAoaSA9IDEwOyBpIFx1MDAzYyBEQUNLX1NOXzg4MjJDIC0gMTA7IGkrKykge1xuLVx0XHRpZiAodmVjW2ldIFx1MDAzZSAweDIwMClcbi1cdFx0XHRtID0gKDB4NDAwIC0gdmVjW2ldKSArIG07XG4tXHRcdGVsc2Vcbi1cdFx0XHRwID0gdmVjW2ldICsgcDtcbi1cdH1cbitcdGZvciAodTMyIGkgPSAxMDsgaSBcdTAwM2MgREFDS19TTl84ODIyQyAtIDEwOyBpKyspXG4rXHRcdHN1bSArPSB2ZWNbaV07XG4gXG4tXHRpZiAocCBcdTAwM2UgbSkge1xuLVx0XHR0ID0gcCAtIG07XG4tXHRcdHQgPSB0IC8gKERBQ0tfU05fODgyMkMgLSAyMCk7XG4tXHR9IGVsc2Uge1xuLVx0XHR0ID0gbSAtIHA7XG4tXHRcdHQgPSB0IC8gKERBQ0tfU05fODgyMkMgLSAyMCk7XG4tXHRcdGlmICh0ICE9IDB4MClcbi1cdFx0XHR0ID0gMHg0MDAgLSB0O1xuLVx0fVxuK1x0czMyIGF2ZyA9IHN1bSAvIChEQUNLX1NOXzg4MjJDIC0gMjApO1xuIFxuLVx0KnZhbCA9IHQ7XG4rXHRyZXR1cm4gYXZnIFx1MDAzZT0gMCA/IGF2ZyA6IDB4NDAwICsgYXZnO1xuIH1cbiBcbiBzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIodTggcGF0aClcbkBAIC0yNzEsMjkgKzIxOSwyNyBAQCBzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcih1OCBwYXRoKVxuIFx0cmV0dXJuIGJhc2VfYWRkcjtcbiB9XG4gXG4tc3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiB2YWx1ZSlcbitzdGF0aWMgYm9vbCBydHc4ODIyY19kYWNfaXFfY2hlY2soc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyIHZhbHVlKVxuIHtcbi1cdGJvb2wgcmV0ID0gdHJ1ZTtcbiBcbi1cdGlmICgodmFsdWUgXHUwMDNlPSAweDIwMCBcdTAwMjZcdTAwMjYgKDB4NDAwIC0gdmFsdWUpIFx1MDAzZSAweDY0KSB8fFxuLVx0ICAgICh2YWx1ZSBcdTAwM2MgMHgyMDAgXHUwMDI2XHUwMDI2IHZhbHVlIFx1MDAzZSAweDY0KSkge1xuLVx0XHRyZXQgPSBmYWxzZTtcbitcdGlmICh2YWx1ZSBcdTAwM2UgMTAwIHx8IHZhbHVlIFx1MDAzYyAtMTAwKSB7XG4gXHRcdHJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1JGSywgXCJbREFDS10gRXJyb3Igb3ZlcmZsb3dcXG5cIik7XG4rXHRcdHJldHVybiBmYWxzZTtcbiBcdH1cbiBcbi1cdHJldHVybiByZXQ7XG4rXHRyZXR1cm4gdHJ1ZTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdilcbitzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKml2LCBzMzIgKnF2KVxuIHtcbiBcdHUzMiB0ZW1wO1xuLVx0aW50IGkgPSAwLCBjbnQgPSAwO1xuK1x0dTMyIGkgPSAwLCBjbnQgPSAwO1xuIFxuIFx0d2hpbGUgKGkgXHUwMDNjIERBQ0tfU05fODgyMkMgXHUwMDI2XHUwMDI2IGNudCBcdTAwM2MgMTAwMDApIHtcbiBcdFx0Y250Kys7XG4gXHRcdHRlbXAgPSBydHdfcmVhZDMyX21hc2socnR3ZGV2LCAweDJkYmMsIDB4M2ZmZmZmKTtcbi1cdFx0aXZbaV0gPSAodGVtcCBcdTAwMjYgMHgzZmYwMDApIFx1MDAzZVx1MDAzZSAxMjtcbi1cdFx0cXZbaV0gPSB0ZW1wIFx1MDAyNiAweDNmZjtcbitcdFx0aXZbaV0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyLCA5KTtcbitcdFx0cXZbaV0gPSBzaWduX2V4dGVuZDMyKHRlbXAgXHUwMDI2IDB4M2ZmLCA5KTtcbiBcbiBcdFx0aWYgKHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIGl2W2ldKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIHF2W2ldKSlcbkBAIC0zMDIsMTMgKzI0OCwxMiBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKml2LCB1MzIgKnF2KVxuIH1cbiBcbiBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuLVx0XHRcdFx0ICAgICAgIHUzMiAqaXYsIHUzMiAqcXYsXG4rXHRcdFx0XHQgICAgICAgczMyICppdiwgczMyICpxdixcbiBcdFx0XHRcdCAgICAgICB1MzIgKmlfdmFsdWUsIHUzMiAqcV92YWx1ZSlcbiB7XG4tXHR1MzIgaV9tYXggPSAwLCBxX21heCA9IDAsIGlfbWluID0gMCwgcV9taW4gPSAwO1xuLVx0dTMyIGlfZGVsdGEsIHFfZGVsdGE7XG4rXHRzMzIgaV9tYXggPSAwLCBxX21heCA9IDAsIGlfbWluID0gMCwgcV9taW4gPSAwO1xuIFx0dTMyIHRlbXA7XG4tXHRpbnQgaSwgY250ID0gMDtcbitcdHUzMiBpLCBjbnQgPSAwO1xuIFxuIFx0ZG8ge1xuIFx0XHRpX21pbiA9IGl2WzBdO1xuQEAgLTMxNiwyMyArMjYxLDE4IEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4gXHRcdHFfbWluID0gcXZbMF07XG4gXHRcdHFfbWF4ID0gcXZbMF07XG4gXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIERBQ0tfU05fODgyMkM7IGkrKykge1xuLVx0XHRcdHJ0dzg4MjJjX3JmX21pbm1heF9jbXAocnR3ZGV2LCBpdltpXSwgXHUwMDI2aV9taW4sIFx1MDAyNmlfbWF4KTtcbi1cdFx0XHRydHc4ODIyY19yZl9taW5tYXhfY21wKHJ0d2RldiwgcXZbaV0sIFx1MDAyNnFfbWluLCBcdTAwMjZxX21heCk7XG4rXHRcdFx0aWYgKGl2W2ldIFx1MDAzYyBpX21pbilcbitcdFx0XHRcdGlfbWluID0gaXZbaV07XG4rXHRcdFx0aWYgKGl2W2ldIFx1MDAzZSBpX21heClcbitcdFx0XHRcdGlfbWF4ID0gaXZbaV07XG4rXHRcdFx0aWYgKHF2W2ldIFx1MDAzYyBxX21pbilcbitcdFx0XHRcdHFfbWluID0gcXZbaV07XG4rXHRcdFx0aWYgKHF2W2ldIFx1MDAzZSBxX21heClcbitcdFx0XHRcdHFfbWF4ID0gcXZbaV07XG4gXHRcdH1cbiBcbi1cdFx0aWYgKGlfbWF4IFx1MDAzYyAweDIwMCBcdTAwMjZcdTAwMjYgaV9taW4gXHUwMDNjIDB4MjAwKVxuLVx0XHRcdGlfZGVsdGEgPSBpX21heCAtIGlfbWluO1xuLVx0XHRlbHNlIGlmIChpX21heCBcdTAwM2U9IDB4MjAwIFx1MDAyNlx1MDAyNiBpX21pbiBcdTAwM2U9IDB4MjAwKVxuLVx0XHRcdGlfZGVsdGEgPSBpX21heCAtIGlfbWluO1xuLVx0XHRlbHNlXG4tXHRcdFx0aV9kZWx0YSA9IGlfbWF4ICsgKDB4NDAwIC0gaV9taW4pO1xuLVxuLVx0XHRpZiAocV9tYXggXHUwMDNjIDB4MjAwIFx1MDAyNlx1MDAyNiBxX21pbiBcdTAwM2MgMHgyMDApXG4tXHRcdFx0cV9kZWx0YSA9IHFfbWF4IC0gcV9taW47XG4tXHRcdGVsc2UgaWYgKHFfbWF4IFx1MDAzZT0gMHgyMDAgXHUwMDI2XHUwMDI2IHFfbWluIFx1MDAzZT0gMHgyMDApXG4tXHRcdFx0cV9kZWx0YSA9IHFfbWF4IC0gcV9taW47XG4tXHRcdGVsc2Vcbi1cdFx0XHRxX2RlbHRhID0gcV9tYXggKyAoMHg0MDAgLSBxX21pbik7XG4rXHRcdHUzMiBpX2RlbHRhID0gKHUzMikoaV9tYXggLSBpX21pbik7XG4rXHRcdHUzMiBxX2RlbHRhID0gKHUzMikocV9tYXggLSBxX21pbik7XG4gXG4gXHRcdHJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1JGSyxcbiBcdFx0XHRcIltEQUNLXSBpOiBtaW49MHglMDh4LCBtYXg9MHglMDh4LCBkZWx0YT0weCUwOHhcXG5cIixcbkBAIC0zNDUsMjQgKzI4NSwyNCBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuIFxuIFx0XHRpZiAoaV9kZWx0YSBcdTAwM2UgNSB8fCBxX2RlbHRhIFx1MDAzZSA1KSB7XG4gXHRcdFx0dGVtcCA9IHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpO1xuLVx0XHRcdGl2WzBdID0gKHRlbXAgXHUwMDI2IDB4M2ZmMDAwKSBcdTAwM2VcdTAwM2UgMTI7XG4tXHRcdFx0cXZbMF0gPSB0ZW1wIFx1MDAyNiAweDNmZjtcbitcdFx0XHRpdlswXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgXHUwMDI2IDB4M2ZmMDAwKSBcdTAwM2VcdTAwM2UgMTIsIDkpO1xuK1x0XHRcdHF2WzBdID0gc2lnbl9leHRlbmQzMih0ZW1wIFx1MDAyNiAweDNmZiwgOSk7XG4gXHRcdFx0dGVtcCA9IHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpO1xuLVx0XHRcdGl2W0RBQ0tfU05fODgyMkMgLSAxXSA9ICh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyO1xuLVx0XHRcdHF2W0RBQ0tfU05fODgyMkMgLSAxXSA9IHRlbXAgXHUwMDI2IDB4M2ZmO1xuK1x0XHRcdGl2W0RBQ0tfU05fODgyMkMgLSAxXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgXHUwMDI2IDB4M2ZmMDAwKSBcdTAwM2VcdTAwM2UgMTIsIDkpO1xuK1x0XHRcdHF2W0RBQ0tfU05fODgyMkMgLSAxXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCBcdTAwMjYgMHgzZmYsIDkpO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4gXHR9IHdoaWxlIChjbnQrKyBcdTAwM2MgMTAwKTtcbiBcbi1cdHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBpdiwgaV92YWx1ZSk7XG4tXHRydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgcXYsIHFfdmFsdWUpO1xuK1x0KmlfdmFsdWUgPSBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgaXYpO1xuK1x0KnFfdmFsdWUgPSBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgcXYpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3JmX21vZGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbiBcdFx0XHRcdCAgICAgdTMyICppX3ZhbHVlLCB1MzIgKnFfdmFsdWUpXG4ge1xuLVx0dTMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTtcbitcdHMzMiBpdltEQUNLX1NOXzg4MjJDXSwgcXZbREFDS19TTl84ODIyQ107XG4gXHR1MzIgcmZfYSwgcmZfYjtcbiBcbiBcdHJmX2EgPSBydHdfcmVhZF9yZihydHdkZXYsIFJGX1BBVEhfQSwgMHgwLCBSRlJFR19NQVNLKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEyOjE3LjY3MTMyNzEzOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIxMjQxMzk3ODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRGVjaXNpb24gZm9yIFJlYWx0ZWsgODgyMkMgREFDIElRIENhbGlicmF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSBoYXZlIGEgcGF0Y2ggdG91Y2hpbmcgc2V2ZXJhbCBmdW5jdGlvbnM6IGBydHc4ODIyY19kYWNfaXFfY21wX3MzMmAsIGBydHc4ODIyY19kYWNfaXFfc29ydGAsIGV0Yy4gYWxsIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jYC4gVGhlc2UgYXJlIGNsZWFybHkgcmVsYXRlZCB0byBEQUMgSVEgY2FsaWJyYXRpb24gZm9yIHRoZSBSZWFsdGVrIDg4MjJDIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IFJGIGNhbGlicmF0aW9uLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHdoZXRoZXIgdGhlc2UgY2hhbmdlcyBpbnRyb2R1Y2UgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgd2FycmFudCBmdXp6aW5nLlxuXG5CdXQgd2FpdCwgdGhlIGluc3RydWN0aW9ucyBzcGVjaWZ5IHNvbWUgZXhlbXB0aW9ucy4gVGhlIGtleSBoZXJlIGlzIHdoZXRoZXIgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVS4gVGhleSBzcGVjaWZpY2FsbHkgY2FsbCBvdXQgcGh5c2ljYWwgUENJZS9VU0IgZGV2aWNlcyB0aGF0IGFyZSBkaWZmaWN1bHQgdG8gcmVhY2ggd2l0aG91dCBzcGVjaWZpYyBlbXVsYXRlZCBoYXJkd2FyZS5cblxuVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogSXMgYHJ0dzg4YCBhIGRyaXZlciBmb3IgYSBwaHlzaWNhbCBXaS1GaSBjYXJkPyBZZXMsIGl0IGlzIGZvciBSZWFsdGVrIDgwMi4xMWFjIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlcnMuIEl0J3Mgbm90IGEgdmlydHVhbCBkcml2ZXIgbGlrZSBgbWFjODAyMTFfaHdzaW1gLiBCdXQgY2FuIGl0IGJlIGVtdWxhdGVkIGluIFFFTVU/IFR5cGljYWxseSwgV2ktRmkgZHJpdmVycyBmb3IgcGh5c2ljYWwgUENJZS9VU0IgZGV2aWNlcyBhcmUgcHJvYmxlbWF0aWMgdW5sZXNzIHRoZXJlJ3MgZW11bGF0aW9uLlxuXG5Ob3csIHRoZSBpbnRlcmVzdGluZyBiaXQuIFRoZSBgcnR3ODhgIGRyaXZlciBzdXBwb3J0cyAqYm90aCogVVNCIGFuZCBQQ0llLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBVU0Igc2lkZSBpcyBlbXVsYXRhYmxlLiBGb3J0dW5hdGVseSwgSSByZW1lbWJlciB0aGF0IHN5emthbGxlciBoYXMgYHN5el91c2JfY29ubmVjdGAsIHdoaWNoIGNvdWxkIGJlIGEgd2F5IHRvIGVtdWxhdGUgVVNCIGRldmljZXMuIFNvLCBpcyB0aGVyZSBhIFVTQiBkcml2ZXIgY29tcG9uZW50IGluIGBydHc4OGA/IFRoYXQncyB0aGUga2V5IHRvIG1ha2luZyBhIGRlY2lzaW9uIGhlcmUuIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgdGhlIFVTQiBwYXRoIGlzIHByZXNlbnQgYW5kIGV4cGxvaXRhYmxlIHZpYSBzdGFuZGFyZCBlbXVsYXRpb24gdGVjaG5pcXVlcy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlIHRvIGJlIGNlcnRhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1MzcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0ODQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxMjozOC45MTI3MjkxNDhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc5OTY5MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODguKnVzYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlPTExMD1ydHc4OF9zZGlvLW9ianNcXHRcXHRcXHQ6PSBzZGlvLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTExMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjExMjpvYmotJChDT05GSUdfUlRXODhfVVNCKVxcdFxcdCs9IHJ0dzg4X3VzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZToxMTM6cnR3ODhfdXNiLW9ianNcXHRcXHRcXHQ6PSB1c2Iub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYnUuYz04Nj1NT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgcnR3Xzg4MjJidV9pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYnUuYy04Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJidS5jOjg4OnN0YXRpYyBpbnQgcnR3ODgyMmJ1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmJ1LmMtODktXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYz0yOD1NT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgcnR3Xzg4MjJjdV9pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYy0yOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jOjMwOnN0YXRpYyBpbnQgcnR3ODgyMmN1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmN1LmMtMzEtXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jPTgwPXN0YXRpYyB2b2lkIHJ0dzg4MTJhX3JlYWRfcmZlX3R5cGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODh4eGEuYy0xMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jOjEyNDpzdGF0aWMgdm9pZCBydHc4OHh4YV9yZWFkX3VzYl90eXBlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jLTEyNS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmM9MjAwPWludCBydHc4OHh4YV9yZWFkX2VmdXNlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4ICpsb2dfbWFwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jLTI0MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmM6MjQxOlxcdHJ0dzg4eHhhX3JlYWRfdXNiX3R5cGUocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmMtMjQyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYz05NzQ9c3RhdGljIGludCBydHdfdXNiX2luaXRfcngoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmMtOTc5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmM6OTgwOlxcdHJ0d3VzYi1cXHUwMDNlcnh3cSA9IGFsbG9jX3dvcmtxdWV1ZShcXFwicnR3ODhfdXNiOiByeCB3cVxcXCIsIFdRX0JIIHwgV1FfUEVSQ1BVLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmMtOTgxLVxcdFxcdFxcdFxcdCAgICAgICAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmM9MTAyNT1zdGF0aWMgaW50IHJ0d191c2JfaW5pdF90eChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYy0xMDI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmM6MTAzMDpcXHRydHd1c2ItXFx1MDAzZXR4d3EgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZShcXFwicnR3ODhfdXNiOiB0eCB3cVxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmMtMTAzMS1cXHRpZiAoIXJ0d3VzYi1cXHUwMDNldHh3cSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxMjozOC45ODA3MzAxOTZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTQzMjcyOTU5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBydHc4OCBEcml2ZXIgRmFtaWx5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgdG8gYmUgdG91Y2hpbmcgYHJ0dzg4MjJjLmNgLiBSaWdodCwgc28gdGhpcyBpcyBwYXJ0IG9mIHRoZSBgcnR3ODhgIGRyaXZlciwgd2hpY2ggSSBrbm93IGFsc28gaGFzIGEgVVNCIGNvbXBvbmVudCwgc3BlY2lmaWNhbGx5IGBydHc4OF91c2JgLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgb3Igbm90IHRoaXMgYHJ0dzg4MjJjYCBpcyBhY3R1YWxseSB1c2VkIGJ5IHRoZSBVU0IgaW1wbGVtZW50YXRpb24uIEl0J3MgYSBrZXkgcXVlc3Rpb24gaGVyZS4gVG8gZmlndXJlIHRoaXMgb3V0LCBJJ20gZ29pbmcgdG8gbmVlZCB0byBkaWcgaW50byB0aGUgVVNCIHNwZWNpZmljIGZpbGVzLiBJdCdzIHRpbWUgdG8gY2hlY2sgYHJ0dzg4MjJjdS5jYCBvciBzb21ldGhpbmcgYW5hbG9nb3VzLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBhbnN3ZXJzIEkgbmVlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU4OCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEzOjAwLjQxMzQ2Mjg5OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzQ2NzI4NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODgyMmNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNjMzIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlPTM3PW9iai0kKENPTkZJR19SVFc4OF84ODIyQylcXHQrPSBydHc4OF84ODIyYy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTozODpydHc4OF84ODIyYy1vYmpzXFx0XFx0Oj0gcnR3ODgyMmMubyBydHc4ODIyY190YWJsZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlPTQwPW9iai0kKENPTkZJR19SVFc4OF84ODIyQ0UpXFx0Kz0gcnR3ODhfODgyMmNlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjQxOnJ0dzg4Xzg4MjJjZS1vYmpzXFx0XFx0Oj0gcnR3ODgyMmNlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU9NDM9b2JqLSQoQ09ORklHX1JUVzg4Xzg4MjJDUylcXHQrPSBydHc4OF84ODIyY3Mub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6NDQ6cnR3ODhfODgyMmNzLW9ianNcXHRcXHQ6PSBydHc4ODIyY3Mub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZT00Nj1vYmotJChDT05GSUdfUlRXODhfODgyMkNVKVxcdCs9IHJ0dzg4Xzg4MjJjdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo0NzpydHc4OF84ODIyY3Utb2Jqc1xcdFxcdDo9IHJ0dzg4MjJjdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS00OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMy0jaW5jbHVkZSBcXFwicGh5LmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE0OiNpbmNsdWRlIFxcXCJydHc4ODIyYy5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNTojaW5jbHVkZSBcXFwicnR3ODgyMmNfdGFibGUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTYtI2luY2x1ZGUgXFxcIm1hYy5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyNTpzdGF0aWMgdm9pZCBydHc4ODIyY19jb25maWdfdHJ4X21vZGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggdHhfcGF0aCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjYtXFx0XFx0XFx0XFx0ICAgICB1OCByeF9wYXRoLCBib29sIGlzX3R4Ml9wYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI4OnN0YXRpYyB2b2lkIHJ0dzg4MjJjZV9lZnVzZV9wYXJzaW5nKHN0cnVjdCBydHdfZWZ1c2UgKmVmdXNlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyOTpcXHRcXHRcXHRcXHQgICAgc3RydWN0IHJ0dzg4MjJjX2VmdXNlICptYXApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzQ6c3RhdGljIHZvaWQgcnR3ODgyMmN1X2VmdXNlX3BhcnNpbmcoc3RydWN0IHJ0d19lZnVzZSAqZWZ1c2UsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM1OlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgcnR3ODgyMmNfZWZ1c2UgKm1hcClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0MDpzdGF0aWMgdm9pZCBydHc4ODIyY3NfZWZ1c2VfcGFyc2luZyhzdHJ1Y3QgcnR3X2VmdXNlICplZnVzZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDE6XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBydHc4ODIyY19lZnVzZSAqbWFwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ2OnN0YXRpYyBpbnQgcnR3ODgyMmNfcmVhZF9lZnVzZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCAqbG9nX21hcClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00OC1cXHRzdHJ1Y3QgcnR3X2VmdXNlICplZnVzZSA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWVmdXNlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0OTpcXHRzdHJ1Y3QgcnR3ODgyMmNfZWZ1c2UgKm1hcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTAtXFx0aW50IGk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo1MjpcXHRtYXAgPSAoc3RydWN0IHJ0dzg4MjJjX2VmdXNlICopbG9nX21hcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzMtXFx0Y2FzZSBSVFdfSENJX1RZUEVfUENJRTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NzQ6XFx0XFx0cnR3ODgyMmNlX2VmdXNlX3BhcnNpbmcoZWZ1c2UsIG1hcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTc1LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03Ni1cXHRjYXNlIFJUV19IQ0lfVFlQRV9VU0I6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc3OlxcdFxcdHJ0dzg4MjJjdV9lZnVzZV9wYXJzaW5nKGVmdXNlLCBtYXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03OC1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzktXFx0Y2FzZSBSVFdfSENJX1RZUEVfU0RJTzpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODA6XFx0XFx0cnR3ODgyMmNzX2VmdXNlX3BhcnNpbmcoZWZ1c2UsIG1hcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTgxLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MDpzdGF0aWMgdm9pZCBydHc4ODIyY19oZWFkZXJfZmlsZV9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIGJvb2wgcHJlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMDM6c3RhdGljIHZvaWQgcnR3ODgyMmNfYmJfcmVzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjExMDpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfYmFja3VwX3JlZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTEtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBydHdfYmFja3VwX2luZm8gKmJhY2t1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEzOTpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfcmVzdG9yZV9yZWcoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQwLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHJ0d19iYWNrdXBfaW5mbyAqYmFja3VwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTU4OnN0YXRpYyBpbnQgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzIoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE2NjpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKml2LCBzMzIgKnF2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNjg6XFx0c29ydChpdiwgREFDS19TTl84ODIyQywgc2l6ZW9mKHMzMiksIHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyLCBOVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTY5OlxcdHNvcnQocXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3MC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTcyOnN0YXRpYyBzMzIgcnR3ODgyMmNfZGFjX2lxX29mZnNldChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKnZlYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTczLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE4NDpzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIodTggcGF0aClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yMDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjIwMzpzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcih1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yMDQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTIyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MjIyOnN0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgdmFsdWUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTIyMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyMzM6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjM0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI0NDpcXHRcXHRpZiAocnR3ODgyMmNfZGFjX2lxX2NoZWNrKHJ0d2RldiwgaXZbaV0pIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI0NTpcXHRcXHQgICAgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHJ0d2RldiwgcXZbaV0pKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yNDYtXFx0XFx0XFx0aSsrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MjUwOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI1MS1cXHRcXHRcXHRcXHQgICAgICAgczMyICppdiwgczMyICpxdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI4NDpcXHRcXHRydHc4ODIyY19kYWNfaXFfc29ydChydHdkZXYsIGl2LCBxdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI4NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yOTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI5ODpcXHQqaV92YWx1ZSA9IHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI5OTpcXHQqcV92YWx1ZSA9IHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBxdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMwMC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMwMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzAyOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMDMtXFx0XFx0XFx0XFx0ICAgICB1MzIgKmlfdmFsdWUsIHUzMiAqcV92YWx1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjMxNDpcXHRydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShydHdkZXYsIGl2LCBxdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjMxNTpcXHRydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaChydHdkZXYsIGl2LCBxdiwgaV92YWx1ZSwgcV92YWx1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMxNi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzE4OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19iYl9zZXR0aW5nKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMxOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzozMzQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9hZGMoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzM1LVxcdFxcdFxcdFxcdCB1OCBwYXRoLCB1MzIgKmFkY19pYywgdTMyICphZGNfcWMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzozNDU6XFx0YmFzZV9hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzQ2LVxcdHN3aXRjaCAocGF0aCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM3MS1cXHRcXHRydHdfd3JpdGUzMihydHdkZXYsIDB4MWMyNCwgMHgwMDAxMDAwMik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM3MjpcXHRcXHRydHc4ODIyY19kYWNfY2FsX3JmX21vZGUocnR3ZGV2LCBcXHUwMDI2aWMsIFxcdTAwMjZxYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM3My1cXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzkxLVxcdFxcdHJ0d193cml0ZTMyKHJ0d2RldiwgMHgxYzNjLCBwYXRoX3NlbCArIDB4ODEwMyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM5MjpcXHRcXHRydHc4ODIyY19kYWNfY2FsX3JmX21vZGUocnR3ZGV2LCBcXHUwMDI2aWMsIFxcdTAwMjZxYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM5My1cXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0MTI6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9zdGVwMShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00MTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDE4OlxcdGJhc2VfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIocGF0aCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQxOTpcXHRyZWFkX2FkZHIgPSBydHc4ODIyY19nZXRfcGF0aF9yZWFkX2FkZHIocGF0aCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00NTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ1NzpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3N0ZXAyKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ1OC1cXHRcXHRcXHRcXHQgICB1OCBwYXRoLCB1MzIgKmljX291dCwgdTMyICpxY19vdXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0NjM6XFx0YmFzZV9hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDY0LVxcdHJ0d193cml0ZTMyX21hc2socnR3ZGV2LCBiYXNlX2FkZHIgKyAweGJjLCAweGYwMDAwMDAwLCAweDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDc1OlxcdHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShydHdkZXYsIFxcdTAwMjZpY19pbiwgXFx1MDAyNnFjX2luKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDc2LVxcdGljID0gaWNfaW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo1MDY6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9zdGVwMyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01MDctXFx0XFx0XFx0XFx0ICAgdTMyIGFkY19pYywgdTMyIGFkY19xYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01MTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjUxNjpcXHRiYXNlX2FkZHIgPSBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHBhdGgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo1MTc6XFx0cmVhZF9hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfcmVhZF9hZGRyKHBhdGgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01MTgtXFx0aWMgPSAqaWNfaW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTU2LVxcdHJ0d193cml0ZTMyKHJ0d2RldiwgYmFzZV9hZGRyICsgMHg2MCwgMHhmMDAwMDAwMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjU1NzpcXHRydHc4ODIyY19kYWNfY2FsX3JmX21vZGUocnR3ZGV2LCBcXHUwMDI2aWMsIFxcdTAwMjZxYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTU1OC1cXHRpZiAoaWMgXFx1MDAzZT0gMHgxMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01ODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjU4MzpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3N0ZXA0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTU4NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjU4NTpcXHR1MzIgYmFzZV9hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTg2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTU5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NTkzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX3ZlYyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01OTQtXFx0XFx0XFx0XFx0XFx0dTggcGF0aCwgdTggdmVjLCB1MzIgd19hZGRyLCB1MzIgcl9hZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTYwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjEwOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX3BhdGgoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjExLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02MTktXFx0LyogYmFja3VwIEkgdmVjdG9yICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjYyMDpcXHR3X2FkZHIgPSBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHBhdGgpICsgMHhiMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjIxOlxcdHJfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcihwYXRoKSArIDB4MTA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjYyMjpcXHRydHc4ODIyY19kYWNfY2FsX2JhY2t1cF92ZWMocnR3ZGV2LCBwYXRoLCAwLCB3X2FkZHIsIHJfYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTYyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjI0LVxcdC8qIGJhY2t1cCBRIHZlY3RvciAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2MjU6XFx0d19hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKSArIDB4YjAgKyB3X29mZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjI2OlxcdHJfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcihwYXRoKSArIDB4MTAgKyByX29mZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjI3OlxcdHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX3ZlYyhydHdkZXYsIHBhdGgsIDEsIHdfYWRkciwgcl9hZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjI4LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2MzA6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9iYWNrdXBfZGNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTYzMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2NTQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9iYWNrdXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02NjctXFx0cnR3X3dyaXRlMzJfbWFzayhydHdkZXYsIDB4MTg2MCwgMHhmYzAwMDAwMCwgMHgzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjY2ODpcXHRydHc4ODIyY19kYWNfY2FsX2JhY2t1cF9wYXRoKHJ0d2RldiwgUkZfUEFUSF9BKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjY5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTY3Mi1cXHRydHdfd3JpdGUzMl9tYXNrKHJ0d2RldiwgMHg0MTYwLCAweGZjMDAwMDAwLCAweDNjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjczOlxcdHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX3BhdGgocnR3ZGV2LCBSRl9QQVRIX0IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjY3NTpcXHRydHc4ODIyY19kYWNfY2FsX2JhY2t1cF9kY2socnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjc2LVxcdHJ0d193cml0ZTMyX3NldChydHdkZXYsIDB4MTgzMCwgQklUKDMwKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2ODQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX2RjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02ODUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTcxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NzE0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZV9wcmVwYXJlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTcxNS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3NDM6XFx0cnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX2RjayhydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03NDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3Njc6c3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX3dhaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzY4LVxcdFxcdFxcdFxcdFxcdCAgdTMyIHRhcmdldF9hZGRyLCB1MzIgdG9nZ2xlX2FkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3ODQ6c3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX3BhdGgoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03OTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc5MzpcXHR3X2kgPSBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHBhdGgpICsgMHhiMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6Nzk0OlxcdHJfaSA9IHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcihwYXRoKSArIDB4MDg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc5NTpcXHR3X3EgPSBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHBhdGgpICsgMHhiMCArIHdfb2ZmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3OTY6XFx0cl9xID0gcnR3ODgyMmNfZ2V0X3BhdGhfcmVhZF9hZGRyKHBhdGgpICsgMHgwOCArIHJfb2ZmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03OTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc5ODpcXHRpZiAoIXJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZV93YWl0KHJ0d2Rldiwgcl9pLCB3X2kgKyAweDgpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03OTktXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTgxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODExOlxcdGlmICghcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX3dhaXQocnR3ZGV2LCByX3EsIHdfcSArIDB4OCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTgxMi1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo4MzE6c3RhdGljIGJvb2wgX19ydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODMyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODMzOlxcdGlmICghcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX3BhdGgocnR3ZGV2LCBSRl9QQVRIX0EpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04MzQtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04MzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjgzNjpcXHRpZiAoIXJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZV9wYXRoKHJ0d2RldiwgUkZfUEFUSF9CKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODM3LVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04NDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg0MjpzdGF0aWMgYm9vbCBydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04NTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg1ODpcXHRydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmVfcHJlcGFyZShydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04NTktXFx0aWYgKCFjaGVja19od19yZWFkeShydHdkZXYsIDB4MjgwOCwgMHg3ZmZmODAsIDB4ZmZmZikgfHxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04NjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg2NTpcXHRpZiAoIV9fcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlKHJ0d2RldikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODY2LVxcdFxcdHJ0d19lcnIocnR3ZGV2LCBcXFwiZmFpbGVkIHRvIHJlc3RvcmUgZGFjayB2ZWN0b3JzXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04ODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg4MzpzdGF0aWMgdm9pZCBydHc4ODIyY19yZl9kYWNfY2FsKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg4NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo4OTI6XFx0aWYgKHJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZShydHdkZXYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04OTMtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg5Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODk3OlxcdHJ0dzg4MjJjX2RhY19iYWNrdXBfcmVnKHJ0d2RldiwgYmFja3VwLCBiYWNrdXBfcmYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04OTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg5OTpcXHRydHc4ODIyY19kYWNfYmJfc2V0dGluZyhydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkwMS1cXHQvKiBwYXRoLUEgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTAyOlxcdHJ0dzg4MjJjX2RhY19jYWxfYWRjKHJ0d2RldiwgUkZfUEFUSF9BLCBcXHUwMDI2YWRjX2ljX2EsIFxcdTAwMjZhZGNfcWNfYSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkwMy1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgMTA7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MDQ6XFx0XFx0cnR3ODgyMmNfZGFjX2NhbF9zdGVwMShydHdkZXYsIFJGX1BBVEhfQSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjkwNTpcXHRcXHRydHc4ODIyY19kYWNfY2FsX3N0ZXAyKHJ0d2RldiwgUkZfUEFUSF9BLCBcXHUwMDI2aWMsIFxcdTAwMjZxYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkwNi1cXHRcXHRpY19hID0gaWM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MDk6XFx0XFx0cnR3ODgyMmNfZGFjX2NhbF9zdGVwMyhydHdkZXYsIFJGX1BBVEhfQSwgYWRjX2ljX2EsIGFkY19xY19hLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MTAtXFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZpYywgXFx1MDAyNnFjLCBcXHUwMDI2aV9hLCBcXHUwMDI2cV9hKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MTQtXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MTU6XFx0cnR3ODgyMmNfZGFjX2NhbF9zdGVwNChydHdkZXYsIFJGX1BBVEhfQSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTE3LVxcdC8qIHBhdGgtQiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MTg6XFx0cnR3ODgyMmNfZGFjX2NhbF9hZGMocnR3ZGV2LCBSRl9QQVRIX0IsIFxcdTAwMjZhZGNfaWNfYiwgXFx1MDAyNmFkY19xY19iKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTE5LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAxMDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjkyMDpcXHRcXHRydHc4ODIyY19kYWNfY2FsX3N0ZXAxKHJ0d2RldiwgUkZfUEFUSF9CKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTIxOlxcdFxcdHJ0dzg4MjJjX2RhY19jYWxfc3RlcDIocnR3ZGV2LCBSRl9QQVRIX0IsIFxcdTAwMjZpYywgXFx1MDAyNnFjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTIyLVxcdFxcdGljX2IgPSBpYztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjkyNTpcXHRcXHRydHc4ODIyY19kYWNfY2FsX3N0ZXAzKHJ0d2RldiwgUkZfUEFUSF9CLCBhZGNfaWNfYiwgYWRjX3FjX2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkyNi1cXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNmljLCBcXHUwMDI2cWMsIFxcdTAwMjZpX2IsIFxcdTAwMjZxX2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkzMC1cXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjkzMTpcXHRydHc4ODIyY19kYWNfY2FsX3N0ZXA0KHJ0d2RldiwgUkZfUEFUSF9CKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTMyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTM5OlxcdHJ0dzg4MjJjX2RhY19yZXN0b3JlX3JlZyhydHdkZXYsIGJhY2t1cCwgYmFja3VwX3JmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05NDEtXFx0LyogYmFja3VwIHJlc3VsdHMgdG8gcmVzdG9yZSwgc2F2aW5nIGEgbG90IG9mIHRpbWUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTQyOlxcdHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTk0My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05NDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjk1MDpzdGF0aWMgdm9pZCBydHc4ODIyY19yZl94Ml9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05NTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTk2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTY0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3NldF9wb3dlcl90cmltKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHM4IGJiX2dhaW5bMl1bOF0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTk2NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5OTY6c3RhdGljIHZvaWQgcnR3ODgyMmNfcG93ZXJfdHJpbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05OTcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwMjctXFx0aWYgKHNldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTAyODpcXHRcXHRydHc4ODIyY19zZXRfcG93ZXJfdHJpbShydHdkZXYsIGJiX2dhaW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDI5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwMzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEwMzM6c3RhdGljIHZvaWQgcnR3ODgyMmNfdGhlcm1hbF90cmltKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEwNTE6c3RhdGljIHZvaWQgcnR3ODgyMmNfcGFfYmlhcyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMDczOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3Jma19oYW5kc2hha2Uoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgYm9vbCBpc19iZWZvcmVfaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTA3NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTExOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTExOTpzdGF0aWMgdm9pZCBydHc4ODIyY19yZmtfcG93ZXJfc2F2ZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTIwLVxcdFxcdFxcdFxcdCAgICBib29sIGlzX3Bvd2VyX3NhdmUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTEzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTEzMTpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfYmFja3VwX2JiX3JlZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBjb25zdCB1MzIgcmVnW10sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExMzItXFx0XFx0XFx0XFx0XFx0ICB1MzIgcmVnX2JhY2t1cFtdLCB1MzIgcmVnX251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMTQ0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19yZWxvYWRfYmJfcmVnKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExNDUtXFx0XFx0XFx0XFx0XFx0ICBjb25zdCB1MzIgcmVnW10sIHUzMiByZWdfYmFja3VwW10sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9MTE1Nz1zdGF0aWMgYm9vbCBjaGVja19yZl9zdGF0dXMoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggc3RhdHVzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjExNzI6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX3R4X3BhdXNlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExNzMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjExODg6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX2JiX2RwayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTg5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMjE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMjIwOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19hZmVfZHBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEyMjEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEyNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEyNTY6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX2FmZV9kcGtfcmVzdG9yZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMjU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMjg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMjg5OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19iYl9kcGtfcmVzdG9yZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMjkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMzI5OnN0YXRpYyBib29sIF9ydHc4ODIyY190eGdhcGtfZ2Fpbl92YWxpZChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgZ2FpbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTMzMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTMzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTMzODpzdGF0aWMgdm9pZCBfcnR3ODgyMmNfdHhnYXBrX3dyaXRlX2dhaW5fYmJfdGFibGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTMzOS1cXHRcXHRcXHRcXHRcXHRcXHQgdTggYmFuZCwgdTggcGF0aClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzY4LVxcdFxcdHYgPSB0eGdhcGstXFx1MDAzZXJmM2ZfYnBbYmFuZF1bZ2Fpbl1bcGF0aF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEzNjk6XFx0XFx0aWYgKF9ydHc4ODIyY190eGdhcGtfZ2Fpbl92YWxpZChydHdkZXYsIHYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEzNzAtXFx0XFx0XFx0aWYgKCFjaGVja190eGdhaW4pIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMzkyOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa193cml0ZV9nYWluX2JiX3RhYmxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEzOTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE0MDAtXFx0XFx0Zm9yIChwYXRoID0gMDsgcGF0aCBcXHUwMDNjIHJ0d2Rldi1cXHUwMDNlaGFsLnJmX3BhdGhfbnVtOyBwYXRoKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTQwMTpcXHRcXHRcXHRfcnR3ODgyMmNfdHhnYXBrX3dyaXRlX2dhaW5fYmJfdGFibGUocnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDAyLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgYmFuZCwgcGF0aCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTQwNzpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfcmVhZF9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQwOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQ4My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTQ4NDpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfY2FsY3VsYXRlX29mZnNldChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNDk1OlxcdHJ0dzg4MjJjX3R4Z2Fwa19iYWNrdXBfYmJfcmVnKHJ0d2RldiwgYmJfcmVnLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDk2LVxcdFxcdFxcdFxcdCAgICAgIHJlZ19iYWNrdXAsIEFSUkFZX1NJWkUoYmJfcmVnKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTUxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTUxNzpcXHRcXHRydHc4ODIyY190eGdhcGtfcmVhZF9vZmZzZXQocnR3ZGV2LCBwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTUxOC1cXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssIFxcXCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTU1MTpcXHRcXHRydHc4ODIyY190eGdhcGtfcmVhZF9vZmZzZXQocnR3ZGV2LCBwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU1Mi1cXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssIFxcXCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NTMtXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNTU0OlxcdHJ0dzg4MjJjX3R4Z2Fwa19yZWxvYWRfYmJfcmVnKHJ0d2RldiwgYmJfcmVnLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTU1LVxcdFxcdFxcdFxcdCAgICAgIHJlZ19iYWNrdXAsIEFSUkFZX1NJWkUoYmJfcmVnKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTU1ODpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfcmZfcmVzdG9yZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTU5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNTcwOnN0YXRpYyB1MzIgcnR3ODgyMmNfdHhnYXBrX2NhbF9nYWluKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiBnYWluLCBzOCBvZmZzZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NzEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE1NzY6XFx0aWYgKF9ydHc4ODIyY190eGdhcGtfZ2Fpbl92YWxpZChydHdkZXYsIGdhaW4pKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NzctXFx0XFx0bmV3X2dhaW4gPSBnYWluO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1OTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE1OTQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX3dyaXRlX3R4X2dhaW4oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU5NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTYyNC1cXHRcXHRcXHRcXHR2ID0gdHhnYXBrLVxcdTAwM2VyZjNmX2JwW2JhbmRdW2pdW3BhdGhdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNjI1OlxcdFxcdFxcdFxcdGlmIChfcnR3ODgyMmNfdHhnYXBrX2dhaW5fdmFsaWQocnR3ZGV2LCB2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTYyNi1cXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjMyLVxcdFxcdFxcdHYgPSB0eGdhcGstXFx1MDAzZXJmM2ZfYnBbYmFuZF1baV1bcGF0aF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE2MzM6XFx0XFx0XFx0aWYgKF9ydHc4ODIyY190eGdhcGtfZ2Fpbl92YWxpZChydHdkZXYsIHYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2MzQtXFx0XFx0XFx0XFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2NDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE2NTA6XFx0XFx0XFx0dG1wXzNmID0gcnR3ODgyMmNfdHhnYXBrX2NhbF9nYWluKHJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTY1MS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgIHR4Z2Fway1cXHUwMDNlcmYzZl9icFtiYW5kXVtpXVtwYXRoXSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNjY0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19zYXZlX2FsbF90eF9nYWluX3RhYmxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2NjUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2ODEtXFx0XFx0XFx0XFxcIltUWEdBUEtdIEFscmVhZHkgUmVhZCB0eGdhcGstXFx1MDAzZXJlYWRfdHhnYWluIHJldHVybiEhIVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE2ODI6XFx0XFx0cnR3ODgyMmNfdHhnYXBrX3dyaXRlX2dhaW5fYmJfdGFibGUocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTY4My1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTcxOC1cXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3MTk6XFx0cnR3ODgyMmNfdHhnYXBrX3dyaXRlX2dhaW5fYmJfdGFibGUocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTcyMC1cXHR0eGdhcGstXFx1MDAzZXJlYWRfdHhnYWluID0gMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzIzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2FwayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzMyOlxcdHJ0dzg4MjJjX3R4Z2Fwa19zYXZlX2FsbF90eF9nYWluX3RhYmxlKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3MzMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc0Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc0NzpcXHRydHc4ODIyY190eGdhcGtfYmFja3VwX2JiX3JlZyhydHdkZXYsIGJiX3JlZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc0OC1cXHRcXHRcXHRcXHQgICAgICBiYl9yZWdfYmFja3VwLCBBUlJBWV9TSVpFKGJiX3JlZykpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzQ5OlxcdHJ0dzg4MjJjX3R4Z2Fwa190eF9wYXVzZShydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzUwLVxcdGZvciAocGF0aCA9IDA7IHBhdGggXFx1MDAzYyBydHdkZXYtXFx1MDAzZWhhbC5yZl9wYXRoX251bTsgcGF0aCsrKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc1Mi1cXHRcXHRcXHRcXHRcXHQgICAgICBSRl9DRkdDSCwgUkZSRUdfTUFTSykgXFx1MDAyNiBNQVNLQllURTA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NTM6XFx0XFx0cnR3ODgyMmNfdHhnYXBrX2JiX2RwayhydHdkZXYsIHBhdGgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzU0OlxcdFxcdHJ0dzg4MjJjX3R4Z2Fwa19hZmVfZHBrKHJ0d2RldiwgcGF0aCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NTU6XFx0XFx0cnR3ODgyMmNfdHhnYXBrX2NhbGN1bGF0ZV9vZmZzZXQocnR3ZGV2LCBwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc1NjpcXHRcXHRydHc4ODIyY190eGdhcGtfcmZfcmVzdG9yZShydHdkZXYsIHBhdGgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzU3OlxcdFxcdHJ0dzg4MjJjX3R4Z2Fwa19hZmVfZHBrX3Jlc3RvcmUocnR3ZGV2LCBwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc1ODpcXHRcXHRydHc4ODIyY190eGdhcGtfYmJfZHBrX3Jlc3RvcmUocnR3ZGV2LCBwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc1OS1cXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NjA6XFx0cnR3ODgyMmNfdHhnYXBrX3dyaXRlX3R4X2dhaW4ocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc2MTpcXHRydHc4ODIyY190eGdhcGtfcmVsb2FkX2JiX3JlZyhydHdkZXYsIGJiX3JlZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc2Mi1cXHRcXHRcXHRcXHQgICAgICBiYl9yZWdfYmFja3VwLCBBUlJBWV9TSVpFKGJiX3JlZykpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3NjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NjU6c3RhdGljIHZvaWQgcnR3ODgyMmNfZG9fZ2FwayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzY2LXtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTM6MDAuNTQ4MTQyNjM1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODQzNDMwMzI4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgcnR3ODggRHJpdmVyIGFuZCBVU0IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEknbSBzZWVpbmcgdGhhdCB0aGUgYHJ0dzg4YCBkcml2ZXIgaGFzIGEgVVNCIGNvdW50ZXJwYXJ0LCBgcnR3ODhfdXNiYC4gVGhlIGBydHc4ODIyY2AgY29kZSwgc3BlY2lmaWNhbGx5LCBzZWVtcyB0byBiZSB1dGlsaXplZCBieSB0aGUgVVNCIHZhcmlhbnQsIGBydHc4ODIyY3VgLiBOb3csIHRoZSBjcnVjaWFsIHBhcnQgaGVyZSBpcyB0aGUgY29ubmVjdGlvbiB3aXRoIHN5emthbGxlciBhbmQgaXRzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyB0aHJvdWdoIGBzeXpfdXNiX2Nvbm5lY3RgLiBUaGlzIG1lYW5zLCBhbmQgdGhpcyBpcyBpbXBvcnRhbnQsIHRoYXQgSSBjYW4gcG90ZW50aWFsbHkgcmVhY2ggYW5kIGludGVyYWN0IHdpdGggdGhpcyBkcml2ZXIgd2l0aGluIGEgdmlydHVhbGl6ZWQgUUVNVSBlbnZpcm9ubWVudCwgd2hpY2ggaXMgYSBzaWduaWZpY2FudCBhZHZhbnRhZ2UgZm9yIG15IHJlc2VhcmNoLlxuXG5UaGUga2V5IHF1ZXN0aW9uIGluIG15IG1pbmQgaXMgd2hldGhlciBgcnR3ODhgICpyZXF1aXJlcyogcGh5c2ljYWwgaGFyZHdhcmUsIG9yIGlmIGl0cyBVU0ItY29ubmVjdGVkIGNvbXBvbmVudCwgYHJ0dzg4MjJjdWAsIGNhbiBiZSAqZnVsbHkqIGVtdWxhdGVkIHRocm91Z2ggVVNCIGdhZGdldCBlbXVsYXRpb24uIHN5emthbGxlciwgYmVpbmcgdGhlIHBvd2VyZnVsIHRvb2wgdGhhdCBpdCBpcywgY2FuIGluamVjdCBkZXNjcmlwdG9ycyBhbmQgcmVzcG9uc2VzLCBiYXNpY2FsbHkgbWltaWNraW5nIGEgcmVhbCBVU0IgZGV2aWNlLlxuXG5JZiBgcnR3ODgyMmN1YCAqaXMqIGluZGVlZCBhIFVTQiBkcml2ZXIsIGl0IHNob3VsZCByZWdpc3RlciBpdHNlbGYgd2l0aCB0aGUga2VybmVsIHZpYSBgdXNiX3JlZ2lzdGVyYC4gVGhpcyBpcyBhIGNydWNpYWwgY2hlY2suIElmIG15IHN5emthbGxlci1lbXVsYXRlZCBVU0IgZGV2aWNlIHByZXNlbnRzIHRoZSBjb3JyZWN0IHZlbmRvci9wcm9kdWN0IElELCB0aGVuIHRoZSBrZXJuZWwgKnNob3VsZCogYXR0ZW1wdCB0byBwcm9iZSBgcnR3ODgyMmN1X3Byb2JlYC5cblxuVGhlcmVmb3JlLCBteSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgKm11c3QqIGV4YW1pbmUgdGhlIGNvZGUgZm9yIGBydHc4ODIyY3VfcHJvYmVgLiBUaGF0J3Mgd2hlcmUgdGhlIHJlYWwgbWFnaWMgbGlrZWx5IGhhcHBlbnMsIGFuZCB3aGVyZSBhbnkgdnVsbmVyYWJpbGl0aWVzIG1pZ2h0IHJldmVhbCB0aGVtc2VsdmVzLiBMZXQncyBzZWUgd2hhdCB0aGF0IHByb2JlIGZ1bmN0aW9uIGRvZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MTg2LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEzOjA4Ljk4MjQ0ODE0N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Njg2MjEwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4ODIyY3VfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYz0yOD1NT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgcnR3Xzg4MjJjdV9pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYy0yOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jOjMwOnN0YXRpYyBpbnQgcnR3ODgyMmN1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmN1LmMtMzEtXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYz0zNj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4MjJjdV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jLTM4LVxcdC5pZF90YWJsZSA9IHJ0d184ODIyY3VfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYzozOTpcXHQucHJvYmUgPSBydHc4ODIyY3VfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYy00MC1cXHQuZGlzY29ubmVjdCA9IHJ0d191c2JfZGlzY29ubmVjdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTM6MDkuMDY5MzE0MTE0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjMxMjU2Mjc1OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGBydHc4ODIyY3VfcHJvYmVgIGZ1bmN0aW9uLiBJJ20gZ29pbmcgdG8gd2FsayB0aHJvdWdoIHRoaXMgbGluZSBieSBsaW5lIGFuZCByZWFsbHkgdW5kZXJzdGFuZCB3aGF0IHRoaXMgdGhpbmcgaXMgZG9pbmcuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyByb2xlLiBJJ20gZm9jdXNpbmcgaW4sIHJlYWxseSwgb24gd2hhdCBpdCBkb2VzIGFuZCB3aHkgaXQgZG9lcyBpdC4gV2hhdCBhcmUgaXRzIGRlcGVuZGVuY2llcz8gV2hhdCBhcmUgdGhlIHBvdGVudGlhbCBmYWlsdXJlIHBvaW50cz8gSSdtIGFudGljaXBhdGluZyB0aGF0IEknbGwgbmVlZCB0byBrbm93IHRoaXMgc3R1ZmYgY29sZCwgZXNwZWNpYWxseSBpZiBJIGhhdmUgdG8gdHJvdWJsZXNob290IGl0IGxhdGVyLiBUaGlzIGlzIGltcG9ydGFudC4gTGV0J3MgZGlnIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjE0MywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEzOjMyLjE5NDk0NTI2NloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzY2MjMyOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RhdGljIGludCBydHc4ODIyY3VfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYz0yOD1NT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgcnR3Xzg4MjJjdV9pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYy0yOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jOjMwOnN0YXRpYyBpbnQgcnR3ODgyMmN1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmN1LmMtMzEtXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxMzozMi4yNzE1NzY0OTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODM0MDcyMDYwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aGlua2luZywgZXhwcmVzc2VkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIGludG8gdGhlIERyaXZlciBDb2RlKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgc3BlY2lmaWMgcGllY2Ugb2YgdGhlIGBydHc4ODIyY3UuY2AgZHJpdmVyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGp1bXAgcmlnaHQgaW4gYW5kIHNlZSB3aGF0J3MgaGFwcGVuaW5nIGFyb3VuZCBsaW5lIDMwLiBUaGF0J3MgdXN1YWxseSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEl0J3Mgb2Z0ZW4gd2hlcmUgdGhlIGNvcmUgZnVuY3Rpb24gZGVmaW5pdGlvbiBvciBhIGNydWNpYWwgaW5pdGlhbGl6YXRpb24gYmxvY2sgcmVzaWRlcywgZ2l2aW5nIG1lIGEgc29saWQgY29udGV4dCBmb3IgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljLiBJJ20gaG9waW5nIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGhpZ2gtbGV2ZWwgcHVycG9zZSBvZiB0aGF0IHNlY3Rpb24gYW5kIHRoZW4gZHJpbGwgZG93biBpbnRvIHNwZWNpZmljIGRldGFpbHMgYXMgbmVlZGVkLiBMZXQncyBzZWUgd2hhdCBzZWNyZXRzIGl0IGhvbGRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjUwMCwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEzOjQwLjYxMjMwMDAwOFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDIwOlxcdFxcdHsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oUlRXX1VTQl9WRU5ET1JfSURfUkVBTFRFSywgMHhkODJiLCAweGZmLCAweGZmLCAweGZmKSxcXG4gIDIxOlxcdFxcdCAgLmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KVxcdTAwMjYocnR3ODgyMmNfaHdfc3BlYykgfSxcXG4gIDIyOlxcdFxcdHsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oMHgxM2IxLCAweDAwNDMsIDB4ZmYsIDB4ZmYsIDB4ZmYpLFxcbiAgMjM6XFx0XFx0ICAuZHJpdmVyX2luZm8gPSAoa2VybmVsX3Vsb25nX3QpXFx1MDAyNihydHc4ODIyY19od19zcGVjKSB9LCAvKiBBbHBoYSAtIEFscGhhICovXFxuICAyNDpcXHRcXHR7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MjAwMSwgMHgzMzI5LCAweGZmLCAweGZmLCAweGZmKSxcXG4gIDI1OlxcdFxcdCAgLmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KVxcdTAwMjYocnR3ODgyMmNfaHdfc3BlYykgfSwgLyogRC1MaW5rIEFDMTNVIHJldi4gQTEgKi9cXG4gIDI2OlxcdFxcdHt9LFxcbiAgMjc6XFx0fTtcXG4gIDI4OlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBydHdfODgyMmN1X2lkX3RhYmxlKTtcXG4gIDI5OlxcdFxcbiAgMzA6XFx0c3RhdGljIGludCBydHc4ODIyY3VfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuICAzMTpcXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuICAzMjpcXHR7XFxuICAzMzpcXHRcXHRyZXR1cm4gcnR3X3VzYl9wcm9iZShpbnRmLCBpZCk7XFxuICAzNDpcXHR9XFxuICAzNTpcXHRcXG4gIDM2OlxcdHN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODgyMmN1X2RyaXZlciA9IHtcXG4gIDM3OlxcdFxcdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXFxuICAzODpcXHRcXHQuaWRfdGFibGUgPSBydHdfODgyMmN1X2lkX3RhYmxlLFxcbiAgMzk6XFx0XFx0LnByb2JlID0gcnR3ODgyMmN1X3Byb2JlLFxcbiAgNDA6XFx0XFx0LmRpc2Nvbm5lY3QgPSBydHdfdXNiX2Rpc2Nvbm5lY3QsXFxuICA0MTpcXHR9O1xcbiAgNDI6XFx0bW9kdWxlX3VzYl9kcml2ZXIocnR3Xzg4MjJjdV9kcml2ZXIpO1xcbiAgNDM6XFx0XFxuICA0NDpcXHRNT0RVTEVfQVVUSE9SKFxcXCJSZWFsdGVrIENvcnBvcmF0aW9uXFxcIik7XFxuICA0NTpcXHRNT0RVTEVfREVTQ1JJUFRJT04oXFxcIlJlYWx0ZWsgODAyLjExYWMgd2lyZWxlc3MgODgyMmN1IGRyaXZlclxcXCIpO1xcbiAgNDY6XFx0TU9EVUxFX0xJQ0VOU0UoXFxcIkR1YWwgQlNEL0dQTFxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxMzo0MC42MTIzOTc1ODhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI0MDExNzEyODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJhY2luZyB0aGUgVVNCIFByb2JlIGFuZCBDYWxpYnJhdGlvbiBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyB0aGUgdHJhY2UgYmVnaW5zIHdpdGggYSBjYWxsIHRvIGBydHdfdXNiX3Byb2JlYC4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IHN0ZW1taW5nIGZyb20gdGhpcyBmdW5jdGlvbiwgcGFydGljdWxhcmx5IHRvIHNlZSBpZiBpdCB1bHRpbWF0ZWx5IHJlYWNoZXMgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYCBvciBzb21ldGhpbmcgZnVuY3Rpb25hbGx5IHNpbWlsYXIuIFRoaXMgaXMgd2hlcmUgdGhlIHBhdGNoIHRvdWNoZXMgdGhpbmdzLlxuXG5UaGUgcGF0Y2ggaXRzZWxmIHNlZW1zIHRvIGJlIGhlYXZpbHkgZm9jdXNlZCBvbiB0aGUgREFDIGNhbGlicmF0aW9uIHByb2Nlc3MsIGFzIGl0IG1vZGlmaWVzIHNldmVyYWwga2V5IGZ1bmN0aW9uczogYHJ0dzg4MjJjX2RhY19pcV9zb3J0YCwgYHJ0dzg4MjJjX2RhY19pcV9vZmZzZXRgLCBgcnR3ODgyMmNfZGFjX2lxX2NoZWNrYCwgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYCwgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoYCwgYW5kIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgLiBUaGVzZSBhcHBlYXIgdG8gYmUgaW50aW1hdGVseSBpbnZvbHZlZCBpbiBhIGNvbXBsZXggY2FsaWJyYXRpb24gc2VxdWVuY2UuXG5cbkxvb2tpbmcgYXQgdGhlIGNhbGwgZ3JhcGgsIGl0J3MgY2xlYXIgdGhhdCBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBpcyB0aGUgY2VudHJhbCBmdW5jdGlvbiBkcml2aW5nIHRoZXNlLiBJdCBzZWVtcyB0byBiZSBjYWxsZWQgZnJvbSBgcnR3ODgyMmNfZGFjX2NhbF9zdGVwMmAgYW5kIGBydHc4ODIyY19kYWNfY2FsX3N0ZXAzYCwgd2hpY2gsIGluIHR1cm4sIGFyZSBjYWxsZWQgZnJvbSBgcnR3ODgyMmNfcmZfZGFjX2NhbGAuIE5vdywgSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnVydGhlcjogd2hlcmUgaXMgYHJ0dzg4MjJjX3JmX2RhY19jYWxgIGludm9rZWQ/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc3RhY2sgZnJvbSB0aGUgVVNCIHByb2JlIHRvIHRoaXMgcG9pbnQgaXMgY3J1Y2lhbCB0byBzZWVpbmcgdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzMwNSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjE0OjAzLjAxMzU3MTg3MloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ4NDk0MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODgyMmNfcmZfZGFjX2NhbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9ODQyPXN0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODgzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3JmX2RhY19jYWwoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODg0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0xNzc4PXN0YXRpYyB2b2lkIHJ0dzg4MjJjX3JmX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc3OS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3ODA6XFx0cnR3ODgyMmNfcmZfZGFjX2NhbChydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzgxLVxcdHJ0dzg4MjJjX3JmX3gyX2NoZWNrKHJ0d2Rldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjE0OjAzLjA3ODQyNTYxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIxMzk5OTQ4MzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBxdWVzdGlvbjpcblxuKipUcmFjaW5nIHRoZSBDYWxsIE9yaWdpbiBvZiBgcnR3ODgyMmNfcmZfaW5pdGAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBgcnR3ODgyMmNfcmZfaW5pdGAgaXMgYmVpbmcgY2FsbGVkIGZyb20uIFRoaXMgZnVuY3Rpb24gaXMgcHJldHR5IGNydWNpYWwgaW4gdGhlIFJlYWx0ZWsgV2lGaSBkcml2ZXIgc3RhY2ssIGVzcGVjaWFsbHkgZm9yIHRoZSA4ODIyQyBjaGlwLCBzbyBrbm93aW5nIGl0cyBlbnRyeSBwb2ludCBpcyBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIHBvdGVudGlhbCBkZWJ1Z2dpbmcuIEknbGwgbmVlZCB0byByZXRyYWNlIHRoZSBjb2RlIGV4ZWN1dGlvbiBwYXRoLiBJJ20gYXNzdW1pbmcgdGhhdCBpdCdzIHBhcnQgb2YgdGhlIGdlbmVyYWwgZHJpdmVyIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLlxuXG5GaXJzdCwgSSdkIHdhbnQgdG8gdXNlIGEgdG9vbCBsaWtlIGBncmVwYCAob3IgbXkgSURFJ3Mgc2VhcmNoIGZ1bmN0aW9uKSB0byBzZWFyY2ggdGhlIGRyaXZlciBzb3VyY2UgdHJlZSBmb3IgYWxsIGluc3RhbmNlcyB3aGVyZSBgcnR3ODgyMmNfcmZfaW5pdGAgaXMgY2FsbGVkLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgbGlzdCBvZiBwb3RlbnRpYWwgY2FsbCBzaXRlcy4gVGhlbiwgSSdkIG5lZWQgdG8gZXhhbWluZSB0aG9zZSBzaXRlcywgbG9va2luZyBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZSBjYWxsIGFuZCB3aGljaCBmdW5jdGlvbnMgYXJlIGNhbGxpbmcgaXQuIEknZCBsb29rIGZvciBmdW5jdGlvbiBwcm90b3R5cGVzIG9yIGRlZmluaXRpb25zIGFzc29jaWF0ZWQgd2l0aCBpbml0aWFsaXphdGlvbiwgcHJvYmluZyBvciBkZXZpY2UgZGV0ZWN0aW9uLlxuXG5JJ2QgYWxzbyBjb25zaWRlciB0aGUgYnJvYWRlciBkcml2ZXIgc3RydWN0dXJlLiBEb2VzIHRoaXMgZHJpdmVyIGZvbGxvdyBhIHN0YW5kYXJkIHByb2JlL2F0dGFjaC9kZXRhY2ggbW9kZWw/IElmIHNvLCBgcnR3ODgyMmNfcmZfaW5pdGAgbGlrZWx5IGZhbGxzIHNvbWV3aGVyZSB3aXRoaW4gdGhlIFwiYXR0YWNoXCIgcGhhc2UsIGFmdGVyIHRoZSBoYXJkd2FyZSBpcyByZWNvZ25pemVkLiBHaXZlbiB0aGF0LCBJJ2QgdHJhY2UgYmFjayBmcm9tIGFueSBhdHRhY2ggb3IgaW5pdGlhbGl6YXRpb24gcmVsYXRlZCBmdW5jdGlvbnMsIGxvb2tpbmcgdG8gc2VlIHdoaWNoIGZ1bmN0aW9ucyBldmVudHVhbGx5IGVuZCB1cCBjYWxsaW5nIGBydHc4ODIyY19yZl9pbml0YC5cblxuQmFzaWNhbGx5LCBJJ20gZ29pbmcgdG8gc3RhcnQgd2l0aCB0aGUgb2J2aW91cyBhbmQgd29yayBteSB3YXkgb3V0d2FyZCwgZm9sbG93aW5nIHRoZSBmdW5jdGlvbiBjYWxsIGdyYXBoLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgYXJndW1lbnRzIGJlaW5nIHBhc3NlZCB0byBgcnR3ODgyMmNfcmZfaW5pdGAgYXMgd2VsbCwgYXMgdGhvc2Ugd291bGQgcHJvdmlkZSBoaW50cyBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIHN5c3RlbSBhdCB0aGUgcG9pbnQgb2YgdGhlIGNhbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MzI4LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTQ6MjQuNDc4Mzc2MjM0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjU0MDg3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4ODIyY19yZl9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0xNzY1PXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RvX2dhcGsoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzc4OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3JmX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc3OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9MTgwMz1zdGF0aWMgdm9pZCBydHc4ODIyY19waHlfc2V0X3BhcmFtKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTg0OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTg0OTpcXHRydHc4ODIyY19yZl9pbml0KHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE4NTAtXFx0cnR3ODgyMmNfcHdydHJhY2tfaW5pdChydHdkZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxNDoyNC41NzA5MjMyNDJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjExNzQzMzI0ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIHF1ZXN0aW9uOlxuXG4qKlBpbnBvaW50aW5nIHRoZSBPcmlnaW4gb2YgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQgZnJvbS4gVGhhdCdzIHRoZSBjb3JlIHF1ZXN0aW9uLCByaWdodD8gSWRlbnRpZnlpbmcgdGhlIGNhbGwgc2l0ZXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgY29udGV4dCwgdGhlIGRhdGEgaXQncyBvcGVyYXRpbmcgb24sIGFuZCBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4gS25vd2luZyB0aGUgY2FsbGVyIGFsc28gaGVscHMgaW4gZGVidWdnaW5nIGFuZCBtb2RpZmljYXRpb24sIGFzIEkgY2FuIHRyYWNlIHRoZSBjYWxsIHN0YWNrIHRvIHNlZSB0aGUgc2VxdWVuY2Ugb2YgZXZlbnRzIGxlYWRpbmcgdXAgdG8gaXRzIGV4ZWN1dGlvbi4gTGV0J3Mgc2VlLi4uIEknbGwgbmVlZCB0byB1c2Ugc29tZSB0b29saW5nLCBtb3N0IGxpa2VseSBhIGNvZGUgc2VhcmNoIG9yIHN0YXRpYyBhbmFseXNpcyB0b29sLiBJJ2QgdHlwaWNhbGx5IHN0YXJ0IGJ5IGdyZXBwaW5nIHRoZSBjb2RlYmFzZSBmb3IgdGhlIGZ1bmN0aW9uIG5hbWUgZGlyZWN0bHkuIEZyb20gdGhlcmUsIEknZCBleGFtaW5lIHRoZSBjYWxsIHNpdGVzLiBJIHdpbGwgYmUgbG9va2luZyBmb3IgY29tbW9uIHBhdHRlcm5zLiBJcyBpdCBjYWxsZWQgd2l0aGluIGEgc3BlY2lmaWMgZHJpdmVyIGNvbXBvbmVudCwgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBvciBpbiByZXNwb25zZSB0byBzb21lIGtpbmQgb2YgZXZlbnQ/IFRoZSBjb250ZXh0IHdpbGwgYmUga2V5LiBPbmNlIEkgbG9jYXRlIHRoZSBjYWxscywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gb3JkZXIgdG8gdHJ1bHkgdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlIGZvciB0aGUgZnVuY3Rpb24gY2FsbCwgYW5kIGhvdyB0aGlzIGZ1bmN0aW9uIGNhbGwgaXMgcmVsYXRlZCB0byBvdGhlciByb3V0aW5lcyBpbiB0aGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkxNjcsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxNDo0NS43NDUyNTg5NjNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzYyNDkxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4ODIyY19waHlfc2V0X3BhcmFtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0xNzg3PXN0YXRpYyB2b2lkIHJ0dzg4MjJjX3B3cnRyYWNrX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xODAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxODAzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW0oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTgwNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9NDg5OT1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODIyY19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDkwMS1cXHQucG93ZXJfb2ZmXFx0XFx0PSBydHdfcG93ZXJfb2ZmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0OTAyOlxcdC5waHlfc2V0X3BhcmFtXFx0XFx0PSBydHc4ODIyY19waHlfc2V0X3BhcmFtLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00OTAzLVxcdC5yZWFkX2VmdXNlXFx0XFx0PSBydHc4ODIyY19yZWFkX2VmdXNlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxNDo0NS44NTg4ODkwM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTg5MjE4MjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDpcblxuKipEaWdnaW5nIGludG8gUEhZIFBhcmFtZXRlciBTZXR0aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYHBoeV9zZXRfcGFyYW1gLiBUaGlzIGlzIGEgY2hpcCBvcGVyYXRpb24sIHdoaWNoIG1lYW5zIGl0J3MgYSBwcmV0dHkgZnVuZGFtZW50YWwgZnVuY3Rpb24gZGVhbGluZyB3aXRoIHRoZSBwaHlzaWNhbCBsYXllciBvZiB0aGUgY29tbXVuaWNhdGlvbiBpbnRlcmZhY2UuIFRoZSBxdWVzdGlvbiBub3cgaXM6IHdoZXJlIGlzIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24gYWN0dWFsbHkgYmVpbmcgKnVzZWQqPyBJIG5lZWQgdG8gdHJhY2UgaXRzIGNhbGxzIHRvIHVuZGVyc3RhbmQgaG93IHBhcmFtZXRlcnMgYXJlIGJlaW5nIHNldCwgd2hhdCBjb250ZXh0cyB0cmlnZ2VyIHBhcmFtZXRlciBjaGFuZ2VzLCBhbmQgdWx0aW1hdGVseSwgaG93IHRoaXMgaW1wYWN0cyB0aGUgb3ZlcmFsbCBzeXN0ZW0gYmVoYXZpb3IuIEtub3dpbmcgd2hlcmUgYHBoeV9zZXRfcGFyYW1gIGlzIGNhbGxlZCB3aWxsIGdpdmUgbWUgaW5zaWdodHMgaW50byBpdHMgcm9sZSB3aXRoaW4gdGhlIHdpZGVyIHNvZnR3YXJlIGFyY2hpdGVjdHVyZS4gVGltZSB0byBzdGFydCBkaWdnaW5nIHRocm91Z2ggdGhlIGNvZGViYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTg4MSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjE0OjU0LjQ0ODExMDI1NloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExOTg3NjU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9zZXRfcGFyYW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MTM3ND1pbnQgcnR3X3Bvd2VyX29uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNDEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE0MTM6XFx0Y2hpcC1cXHUwMDNlb3BzLVxcdTAwM2VwaHlfc2V0X3BhcmFtKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTQxNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oPTg2Mj1zdHJ1Y3QgcnR3X2NoaXBfb3BzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oLTg2OS1cXHRpbnQgKCpyZWFkX2VmdXNlKShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCAqbWFwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaDo4NzA6XFx0dm9pZCAoKnBoeV9zZXRfcGFyYW0pKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oLTg3MS1cXHR2b2lkICgqc2V0X2NoYW5uZWwpKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IGNoYW5uZWwsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM9NTUzPXN0YXRpYyB2b2lkIHJ0dzg3MDNiX3B3cnRyYWNrX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYy01NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jOjU3ODpzdGF0aWMgdm9pZCBydHc4NzAzYl9waHlfc2V0X3BhcmFtKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jLTU3OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM9MTgzNj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4NzAzYl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmMtMTg0My1cXHQucmVhZF9lZnVzZVxcdFxcdD0gcnR3ODcwM2JfcmVhZF9lZnVzZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM6MTg0NDpcXHQucGh5X3NldF9wYXJhbVxcdFxcdD0gcnR3ODcwM2JfcGh5X3NldF9wYXJhbSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmMtMTg0NS1cXHQuc2V0X2NoYW5uZWxcXHRcXHQ9IHJ0dzg3MDNiX3NldF9jaGFubmVsLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jPTY3PXN0YXRpYyB2b2lkIHJ0dzg3MjNkX3B3cnRyYWNrX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYy04NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmM6ODU6c3RhdGljIHZvaWQgcnR3ODcyM2RfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYy04Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmM9MTM5Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4NzIzZF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmMtMTM5NC1cXHQucG93ZXJfb2ZmXFx0XFx0PSBydHdfcG93ZXJfb2ZmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYzoxMzk1OlxcdC5waHlfc2V0X3BhcmFtXFx0XFx0PSBydHc4NzIzZF9waHlfc2V0X3BhcmFtLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYy0xMzk2LVxcdC5yZWFkX2VmdXNlXFx0XFx0PSBydHc4NzIzeF9yZWFkX2VmdXNlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYS5jPTkxND1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODEyYV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhLmMtOTE2LVxcdC5wb3dlcl9vZmZcXHRcXHQ9IHJ0dzg4MTJhX3Bvd2VyX29mZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhLmM6OTE3OlxcdC5waHlfc2V0X3BhcmFtXFx0XFx0PSBOVUxMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxMmEuYy05MTgtXFx0LnJlYWRfZWZ1c2VcXHRcXHQ9IHJ0dzg4eHhhX3JlYWRfZWZ1c2UsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmM9MjY1PXN0YXRpYyB2b2lkIHJ0dzg4MTRhX2NvbmZpZ19jY2tfcnhfYW50ZW5uYV9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmMtMjgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYzoyODM6c3RhdGljIHZvaWQgcnR3ODgxNGFfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYy0yODQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jPTIwNTA9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgxNGFfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jLTIwNTItXFx0LnBvd2VyX29mZlxcdFxcdD0gcnR3X3Bvd2VyX29mZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmM6MjA1MzpcXHQucGh5X3NldF9wYXJhbVxcdFxcdD0gcnR3ODgxNGFfcGh5X3NldF9wYXJhbSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmMtMjA1NC1cXHQucmVhZF9lZnVzZVxcdFxcdD0gcnR3ODgxNGFfcmVhZF9lZnVzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYz04NjA9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgyMWFfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYS5jLTg2Mi1cXHQucG93ZXJfb2ZmXFx0XFx0PSBydHc4ODIxYV9wb3dlcl9vZmYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYS5jOjg2MzpcXHQucGh5X3NldF9wYXJhbVxcdFxcdD0gTlVMTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFhLmMtODY0LVxcdC5yZWFkX2VmdXNlXFx0XFx0PSBydHc4OHh4YV9yZWFkX2VmdXNlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jPTE1MT1zdGF0aWMgdm9pZCBydHc4ODIxY19waHlfYmZfaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jLTE1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmM6MTU4OnN0YXRpYyB2b2lkIHJ0dzg4MjFjX3BoeV9zZXRfcGFyYW0oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmMtMTU5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYz0xNjU4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MjFjX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYy0xNjYwLVxcdC5wb3dlcl9vZmZcXHRcXHQ9IHJ0d19wb3dlcl9vZmYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jOjE2NjE6XFx0LnBoeV9zZXRfcGFyYW1cXHRcXHQ9IHJ0dzg4MjFjX3BoeV9zZXRfcGFyYW0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jLTE2NjItXFx0LnJlYWRfZWZ1c2VcXHRcXHQ9IHJ0dzg4MjFjX3JlYWRfZWZ1c2UsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmM9MTQ1PXN0YXRpYyB2b2lkIHJ0dzg4MjJiX3BoeV9iZl9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmMtMTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYzoxNTI6c3RhdGljIHZvaWQgcnR3ODgyMmJfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYy0xNTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jPTIxNTA9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgyMmJfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jLTIxNTItXFx0LnBvd2VyX29mZlxcdFxcdD0gcnR3X3Bvd2VyX29mZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmM6MjE1MzpcXHQucGh5X3NldF9wYXJhbVxcdFxcdD0gcnR3ODgyMmJfcGh5X3NldF9wYXJhbSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmMtMjE1NC1cXHQucmVhZF9lZnVzZVxcdFxcdD0gcnR3ODgyMmJfcmVhZF9lZnVzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0xNzg3PXN0YXRpYyB2b2lkIHJ0dzg4MjJjX3B3cnRyYWNrX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xODAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxODAzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW0oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTgwNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9NDg5OT1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODIyY19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDkwMS1cXHQucG93ZXJfb2ZmXFx0XFx0PSBydHdfcG93ZXJfb2ZmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0OTAyOlxcdC5waHlfc2V0X3BhcmFtXFx0XFx0PSBydHc4ODIyY19waHlfc2V0X3BhcmFtLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00OTAzLVxcdC5yZWFkX2VmdXNlXFx0XFx0PSBydHc4ODIyY19yZWFkX2VmdXNlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxNDo1NC41NjAxMDIwMzNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDExMTU3NjM4NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgYW5kIEZ1enppbmcgUkYgQ2FsaWJyYXRpb24gaW4gcnR3ODgyMmN1KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoLiBJdCBhcHBlYXJzIHRoYXQgYHJ0d19wb3dlcl9vbmAgY2FsbHMgYGNoaXAtXHUwMDNlb3BzLVx1MDAzZXBoeV9zZXRfcGFyYW0ocnR3ZGV2KWAuIERpZ2dpbmcgZGVlcGVyLCBgcnR3X3Bvd2VyX29uYCBpcyByZWFjaGVkIGZyb20gYHJ0d19jb3JlX3N0YXJ0YCwgd2hpY2ggaXMgaW5pdGlhdGVkIGZyb20gYHJ0d19tYWM4MDIxMV9zdGFydGAuIFRoaXMgYHJ0d19tYWM4MDIxMV9zdGFydGAgaXMgdGhlIGBtYWM4MDIxMSBzdGFydGAgY2FsbGJhY2ssIHNvIGl0IHNlZW1zIGxpa2UgYnJpbmdpbmcgdGhlIGludGVyZmFjZSB1cCBpcyB0aGUgdHJpZ2dlci4gIFRoaXMgdGhlbiBjYWxscyBgcGh5X3NldF9wYXJhbWAsIHdoaWNoIGluIHRoaXMgY2FzZSBsZWFkcyB0byBgcnR3ODgyMmNfcmZfaW5pdGAgYW5kIHVsdGltYXRlbHkgY2FsbHMgYHJ0dzg4MjJjX3JmX2RhY19jYWxgLiBTcGVjaWZpY2FsbHkgaXQgY2FsbHMgYHJ0dzg4MjJjX2RhY19jYWxfc3RlcDJgLCBgcnR3ODgyMmNfZGFjX2NhbF9zdGVwM2AgZXZlbnR1YWxseSBjYWxsaW5nIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgLCB3aGljaCB0aGVuIGNhbGxzIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAgYW5kIGBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaGAuXG5cblRoZSBwYXRjaCBpdHNlbGYgaXMgaW50ZXJlc3Rpbmcg4oCTIGl0J3MgcmVwbGFjaW5nIGN1c3RvbSBzb3J0aW5nIHdpdGggdGhlIHN0YW5kYXJkIGBzb3J0KClgIGZ1bmN0aW9uIGFuZCBtb2RpZnlpbmcgc29tZSBjYWxjdWxhdGlvbnMgaW4gYHJ0dzg4MjJjX2RhY19pcV9vZmZzZXRgIGFuZCBjaGVja2luZyBpbiBgcnR3ODgyMmNfZGFjX2lxX2NoZWNrYC4gU28sIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgUkYgY2FsaWJyYXRpb24uXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogSXMgdGhpcyBjb2RlIHJlYWNoYWJsZSBpbiBhIGZ1enppbmcgZW52aXJvbm1lbnQgbGlrZSBRRU1VPyBZZXMhIEkgY2FuIHNlZSBob3cgYHN5emthbGxlcmAgY2FuIGVtdWxhdGUgYSBVU0IgZGV2aWNlIG1hdGNoaW5nIGBydHc4ODIyY3VgIHVzaW5nIGBzeXpfdXNiX2Nvbm5lY3RgLiBPbmNlIHRoZSBkZXZpY2UgaXMgcHJvYmVkLCBgc3l6a2FsbGVyYCBjYW4gY3JlYXRlIGEgbmV0ZGV2IGFuZCBicmluZyBpdCB1cCAoYGlmY29uZmlnIHVwYCkuIFRoaXMgd2lsbCBzZXQgdXAgdGhlIGV4ZWN1dGlvbiBwYXRoIG9mIGBydHdfbWFjODAyMTFfc3RhcnRgIC1cdTAwM2UgYHJ0d19jb3JlX3N0YXJ0YCAtXHUwMDNlIGBydHdfcG93ZXJfb25gIC1cdTAwM2UgYHBoeV9zZXRfcGFyYW1gIC1cdTAwM2UgYHJ0dzg4MjJjX3JmX2luaXRgIC1cdTAwM2UgYHJ0dzg4MjJjX3JmX2RhY19jYWxgLiAgQWhhISAgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYCByZWFkcyBmcm9tIHRoZSBkZXZpY2UgdXNpbmcgYHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpYC4gVGhpcyByZWFkIHdpbGwgb2NjdXIgZHVyaW5nIFVTQiBjb250cm9sIG9yIGJ1bGsgdHJhbnNmZXJzLiBBbmQgc3l6a2FsbGVyJ3MgVVNCIGZ1enplciB3aWxsIHByb3ZpZGUgcmFuZG9tIHZhbHVlcyBmb3IgdGhpcyByZWFkLiBTbywgdGhlIGNvZGUgd2lsbCAqZGVmaW5pdGVseSogcHJvY2VzcyB0aGVzZSByYW5kb20gdmFsdWVzLiBUaGlzIGlzIGZhbnRhc3RpYy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgdGhlcmVmb3JlIGZ1enphYmxlLlxuXG5NeSBmb2N1cyBzaG91bGQgYmUgb24gaWRlbnRpZnlpbmcgdGhlIG1vc3QgcmVsZXZhbnQgZnVuY3Rpb25zIHRvIHRhcmdldC4gU3BlY2lmaWNhbGx5OiBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgLCBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2hgLCBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCwgYW5kIGBydHc4ODIyY19yZl9kYWNfY2FsYC5cblxuTm93LCBJIG5lZWQgdG8gY29uc2lkZXIgaW5saW5pbmcuIEFyZSBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgIGFuZCBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2hgIGlubGluZWQ/ICBUaGV5IGFyZSBzdGF0aWMsIGJ1dCBjYWxsZWQgZnJvbSBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYC4gYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAgaXMgYWxzbyBzdGF0aWMuIEl0IGlzIGFsc28gY2FsbGVkIGZyb20gc2V2ZXJhbCBvdGhlciBmdW5jdGlvbnMsIHNvIGl0IHNlZW1zIHRoaXMgd2lsbCBiZSBpbmxpbmVkLiBgcnR3ODgyMmNfcmZfZGFjX2NhbGAgaXMgYWxzbyBzdGF0aWMsIGFzIGlzIGBydHc4ODIyY19yZl9pbml0YC4gIEFoLCBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgaXMgYWxzbyBzdGF0aWMsICpidXQqIGl0cyBhZGRyZXNzIGlzIHRha2VuIGluIGBydHc4ODIyY19vcHNgLiBUaGlzIGlzIGtleS4gVGhhdCBtYWtlcyBpdCAqZGVmaW5pdGVseSogbm90IGlubGluZWQgYW5kIGEgZ29vZCBmb2N1cyBzeW1ib2wuIEFsdGhvdWdoLCBgcnR3ODgyMmNfcmZfZGFjX2NhbGAgYW5kIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgIGFyZSBhbHNvIGdvb2QgYmVjYXVzZSB0aGV5IGFyZSBwcmV0dHkgbGFyZ2UsIHNvIGl0IGlzIGxlc3MgbGlrZWx5IHRoZXkgYXJlIGlubGluZWQuIEdpdmVuIHRoYXQgdGhlIHBhdGNoIG9ubHkgdG91Y2hlcyBzdGF0aWMgZnVuY3Rpb25zIGluIGBydHc4ODIyYy5jYCwgSSBhbSBwcmV0dHkgY29uZmlkZW50IHdpdGggdXNpbmcgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gIGFzIHRoZSBwcmltYXJ5IGZvY3VzLCBhbmQgaW5jbHVkaW5nIGBydHc4ODIyY19cblxuIiwiSW5wdXRUb2tlbnMiOjMzMDMzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxNTozNS42NzU4Njk3MzNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NjM3NTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSVFc4OFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjptZW51Y29uZmlnIFJUVzg4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODAyLjExYWMgd2lyZWxlc3MgY2hpcHMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZz0xMT1pZiBSVFc4OFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTM6Y29uZmlnIFJUVzg4X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTQtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTc6Y29uZmlnIFJUVzg4X1BDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjA6Y29uZmlnIFJUVzg4X1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjEtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjIzOmNvbmZpZyBSVFc4OF9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjQtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjI2OmNvbmZpZyBSVFc4OF84ODIyQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNy1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6Mjk6Y29uZmlnIFJUVzg4Xzg4MjJDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTMwLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzozMjpjb25maWcgUlRXODhfODcyM1hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMzMtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjM1OmNvbmZpZyBSVFc4OF84NzAzQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zNi1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzozOTpjb25maWcgUlRXODhfODcyM0RcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDAtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy00Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6NDM6Y29uZmlnIFJUVzg4Xzg4MjFDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTQ0LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo0Njpjb25maWcgUlRXODhfODhYWEFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDctXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjQ5OmNvbmZpZyBSVFc4OF84ODIxQVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy01MC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo1Mzpjb25maWcgUlRXODhfODgxMkFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTQtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy01Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6NTc6Y29uZmlnIFJUVzg4Xzg4MTRBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTU4LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo2MDpjb25maWcgUlRXODhfODgyMkJFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjJCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo3MTpjb25maWcgUlRXODhfODgyMkJTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTcyLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjJCUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy04MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6ODI6Y29uZmlnIFJUVzg4Xzg4MjJCVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy04My1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy05Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6OTM6Y29uZmlnIFJUVzg4Xzg4MjJDRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy05NC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQ0UgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjEwNDpjb25maWcgUlRXODhfODgyMkNTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEwNS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQ1MgU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxMTU6Y29uZmlnIFJUVzg4Xzg4MjJDVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTYtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgyMkNVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxMjY6Y29uZmlnIFJUVzg4Xzg3MjNERVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMjctXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODcyM0RFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxMzc6Y29uZmlnIFJUVzg4Xzg3MjNEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMzgtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODcyM0RTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTQ4OmNvbmZpZyBSVFc4OF84NzIzQ1NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTQ5LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg3MjNDUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjE2Mjpjb25maWcgUlRXODhfODcyM0RVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE2My1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4NzIzRFUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjE3Mzpjb25maWcgUlRXODhfODgyMUNFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE3NC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIxQ0UgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjE4NDpjb25maWcgUlRXODhfODgyMUNTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE4NS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIxQ1MgU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxOTU6Y29uZmlnIFJUVzg4Xzg4MjFDVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xOTYtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgyMUNVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMDY6Y29uZmlnIFJUVzg4Xzg4MjFBVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMDctXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgyMUFVLzg4MTFBVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjE3OmNvbmZpZyBSVFc4OF84ODEyQVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjE4LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MTJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjI4OmNvbmZpZyBSVFc4OF84ODE0QUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjI5LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MTRBRSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjM5OmNvbmZpZyBSVFc4OF84ODE0QVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjQwLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MTRBVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjUwOmNvbmZpZyBSVFc4OF9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNTEtXFx0Ym9vbCBcXFwiUmVhbHRlayBydHc4OCBkZWJ1ZyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjU4OmNvbmZpZyBSVFc4OF9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI1OS1cXHRib29sIFxcXCJSZWFsdGVrIHJ0dzg4IGRlYnVnZnMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjI2Njpjb25maWcgUlRXODhfTEVEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNjctXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxNTozNS43MjA1MTQ5NTJaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODU2MTkzMDk5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLZXJuZWwgQ29uZmlndXJhdGlvbiBUaG91Z2h0IFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gbWFrZSBzdXJlIGBSVFc4OGAgYW5kIGBSVFc4OF84ODIyQ1VgIGFyZSBlbmFibGVkLiBUaGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gsIGJ1dCBsZXQncyBicmVhayBpdCBkb3duIGEgYml0IGZ1cnRoZXIuIGBSVFc4OF84ODIyQ1VgIGFwcGFyZW50bHkgYnJpbmdzIGluIGBSVFc4OF9DT1JFYCwgYFJUVzg4X1VTQmAsIGFuZCBgUlRXODhfODgyMkNgLCB3aGljaCBzb3VuZHMgYWJvdXQgcmlnaHQgZm9yIHRoZSA4ODIyQ1UgY2hpcHNldC4gU28sIGluIHRoZW9yeSwganVzdCBlbmFibGluZyBgUlRXODhgIGFuZCBgUlRXODhfODgyMkNVYCBzaG91bGQgY292ZXIgYWxsIHRoZSBuZWNlc3NhcnkgYmFzZXMuXG5cbkhvbGQgb24gYSBzZWNvbmQsIGdvdHRhIGRvdWJsZS1jaGVjayB0aG9zZSBkZXBlbmRlbmNpZXMuIEkga25vdyB0aGlzIGZyb20gZXhwZXJpZW5jZSwgYW5kIHRoZSBrZXJuZWwgY2FuIGJlIHRyaWNreSB3aXRoIGl0cyBkZXBlbmRlbmNpZXMuIE9rYXksIGEgcXVpY2sgY2hlY2suLi4gWWVzLCBgUlRXODhfODgyMkNVYCBkb2VzIGluZGVlZCBkZXBlbmQgb24gYFJUVzg4YCAob2J2aW91c2x5KSwgYnV0IGFsc28gb24gYFVTQmAgYW5kIGBNQUM4MDIxMWAuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlLiBTbywgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIEkndmUgZ290IGV2ZXJ5dGhpbmcgSSBuZWVkLCBJIHNob3VsZCBlbmFibGUgYFJUVzg4YCwgYFJUVzg4Xzg4MjJDVWAsIGBVU0JgLCBhbmQgYE1BQzgwMjExYC4gVGhhdCBzaG91bGQgY292ZXIgYWxsIHRoZSBuZWNlc3NhcnkgYmFzZSBtb2R1bGVzIGZvciB0aGlzIGNoaXBzZXQuIE5vdywgbGV0J3MganVzdCBxdWlja2x5IGNvbmZpcm0gdGhvc2UgZGVwZW5kZW5jaWVzIHRvIGJlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsLiBUaW1lIHRvIGRlbHZlIGludG8gdGhlIGBSVFc4OF84ODIyQ1VgIGNvbmZpZy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODMyOCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxNTo0NC4yODI0NDk5M1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg4NDk0OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJUVzg4Xzg4MjJDVVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc9MTA0PWNvbmZpZyBSVFc4OF84ODIyQ1NcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjExNTpjb25maWcgUlRXODhfODgyMkNVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTExNi1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTU6NDQuMzMxMzA0NTk5WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIzMjU3MzIyMjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIFdpcmVsZXNzIEtjb25maWcqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlciBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgc29tZSBmZWF0dXJlIG9yIG9wdGlvbiBpcyBjb250cm9sbGVkLiBMZXQncyBzZWUuLi4gSSdsbCBzdGFydCBieSBsb29raW5nIGF0IHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnYCBmaWxlLCBhcm91bmQgbGluZSAxMTUuIFRoYXQgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBjaGVjayB0aGUgZ2VuZXJhbCBzZXR0aW5ncyBhbmQgZGVwZW5kZW5jaWVzIGZvciB0aGlzIGRyaXZlci4gSG9wZWZ1bGx5LCBpdCdsbCBwcm92aWRlIHNvbWUgY2xhcml0eSByZWdhcmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBJJ20gaW50ZXJlc3RlZCBpbiBhbmQgdGhlaXIgZGVwZW5kZW5jaWVzLiBUaGlzIEtjb25maWcgZmlsZSBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIGRyaXZlcnMgYXJlIGJ1aWx0IGFuZCBjb25maWd1cmVkLCBhbmQgbGluZSAxMTUgZmVlbHMgbGlrZSBhIGdvb2Qgc3BvdCB0byBzdGFydCBteSBzZWFyY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MDIyLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTY6MDcuNTg4NjI5MzE2WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMTA6XFx0XFx0aGVscFxcbiAxMTE6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODgyMkNTIGNoaXBzZXRcXG4gMTEyOlxcdFxcbiAxMTM6XFx0XFx0ICA4MDIuMTFhYyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcbiAxMTQ6XFx0XFxuIDExNTpcXHRjb25maWcgUlRXODhfODgyMkNVXFxuIDExNjpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4gMTE3OlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuIDExODpcXHRcXHRzZWxlY3QgUlRXODhfQ09SRVxcbiAxMTk6XFx0XFx0c2VsZWN0IFJUVzg4X1VTQlxcbiAxMjA6XFx0XFx0c2VsZWN0IFJUVzg4Xzg4MjJDXFxuIDEyMTpcXHRcXHRoZWxwXFxuIDEyMjpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODIyQ1UgY2hpcHNldFxcbiAxMjM6XFx0XFxuIDEyNDpcXHRcXHQgIDgwMi4xMWFjIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXG4gMTI1OlxcdFxcbiAxMjY6XFx0Y29uZmlnIFJUVzg4Xzg3MjNERVxcbiAxMjc6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODcyM0RFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuIDEyODpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAxMjk6XFx0XFx0c2VsZWN0IFJUVzg4X0NPUkVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTY6MDcuNTg4NzAxOTM2WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0ODU4OTcyOTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUlRXODggRHJpdmVyIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBSVFc4OF84ODIyQ1VgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdGhpcyBpcyBhIFVTQi1iYXNlZCBtb2R1bGUsIHNvIHRoYXQncyBhIGtleSBkZXBlbmRlbmN5LiBPYnZpb3VzbHkuIFRoZW4sIEkgc2VlIGBSVFc4OGAgZGVwZW5kcyBvbiBgTUFDODAyMTFgLCB3aGljaCBpcyB0aGUgZXhwZWN0ZWQgZnJhbWV3b3JrIGZvciB0aGlzIHR5cGUgb2Ygd2lyZWxlc3MgaGFyZHdhcmUuIFRvIGdhaW4gYSBiZXR0ZXIgcGljdHVyZSwgSSBuZWVkIHRvIHpvb20gb3V0IGEgYml0IGFuZCBzZWUgd2hhdCBvdGhlciBtb2R1bGVzIGBSVFc4OGAgcmVsaWVzIG9uLiBVbmRlcnN0YW5kaW5nIHRoZSBicm9hZGVyIGRlcGVuZGVuY2llcyBvZiBgUlRXODhgIHdpbGwgYmUgY3JpdGljYWwgdG8gYXNzZXNzaW5nIGl0cyBvdmVyYWxsIGludGVncmF0aW9uLiBJIHNob3VsZCBzdGFydCB0aGVyZSwgYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NTYzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxNjozMi40NDc2NzgxMjVaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzAxOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRtZW51Y29uZmlnIFJUVzg4XFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4MDIuMTFhYyB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIG1hYzgwMjExLWJhc2VkIHdpcmVsZXNzIGRyaXZlcnMgdGhhdFxcbiAgIDc6XFx0XFx0ICBlbmFibGVzIFJlYWx0ZWsgSUVFRSA4MDIuMTFhYyB3aXJlbGVzcyBjaGlwc2V0cy5cXG4gICA4OlxcdFxcbiAgIDk6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgcnR3ODguXFxuICAxMDpcXHRcXG4gIDExOlxcdGlmIFJUVzg4XFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBSVFc4OF9DT1JFXFxuICAxNDpcXHRcXHR0cmlzdGF0ZVxcbiAgMTU6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBSVFc4OF9QQ0lcXG4gIDE4OlxcdFxcdHRyaXN0YXRlXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBSVFc4OF9TRElPXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjE2OjMyLjQ0Nzc1MDA0NVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NTg4MTc0ODU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBSVFc4OCBEcml2ZXIgYW5kIENhbGlicmF0aW9uIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYFJUVzg4YCBkcml2ZXIsIGFuZCBpdCdzIGNsZWFyIHRoYXQgaXQgZGVwZW5kcyBvbiBgTUFDODAyMTFgLiBUaGVyZWZvcmUsIHRvIGVuYWJsZSBpdCwgSSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgYFJUVzg4YCwgYFJUVzg4Xzg4MjJDVWAsIGBVU0JgLCBhbmQgYE1BQzgwMjExYCBjb25maWd1cmF0aW9ucyBhcmUgc2V0LiBUaGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guXG5cbk5vdywgSSdtIGRpZ2dpbmcgZGVlcGVyIGJlY2F1c2UgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSB0b3VjaGluZyBzb21lIHNwZWNpZmljIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGBydHc4ODIyYy5jYCBmaWxlLiBTcGVjaWZpY2FsbHksIGl0IG1lbnRpb25zIG1vZGlmaWNhdGlvbnMgdG8gYHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyYCwgYHJ0dzg4MjJjX2RhY19pcV9zb3J0YCwgYHJ0dzg4MjJjX2RhY19pcV9vZmZzZXRgLCBgcnR3ODgyMmNfZGFjX2lxX2NoZWNrYCwgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYCwgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoYCwgYW5kIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGFsbCBpbnZvbHZlZCB3aXRoIERBQyBjYWxpYnJhdGlvbiwgc28gaXQgbWFrZXMgc2Vuc2UgdG8gZm9jdXMgb24gdGhlbS5cblxuR2l2ZW4gdGhlIG1vZGlmaWNhdGlvbnMsIEkndmUgZGVjaWRlZCBteSBmb2N1cyBzeW1ib2xzIHNob3VsZCBiZTogYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gLCBgcnR3ODgyMmNfcmZfZGFjX2NhbGAsIGFuZCBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYC4gTm93LCBsZXQncyBzZWUgaWYgSSBjYW4gaW5jbHVkZSB0aGVtIGFzIEZvY3VzU3ltYm9scy5cblxuSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiBgcnR3ODgyMmNfcmZfZGFjX2NhbGAgYW5kIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgIGFyZSBzdGF0aWMgb3IgaW5saW5lZC4gQWgsIHRoZXkgYXJlIHN0YXRpYy4gSG93ZXZlciwgdGhleSBhcmUgYWxzbyBxdWl0ZSBsYXJnZTogYHJ0dzg4MjJjX3JmX2RhY19jYWxgIGlzIDYwIGxpbmVzLCBhbmQgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAgaXMgMTUgbGluZXMuIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBpcyA1MCBsaW5lcy5cblxuQ29uc2lkZXJpbmcgdGhlIHNpemVzIGFuZCB0aGUgcG90ZW50aWFsIGZvciBvcHRpbWl6YXRpb24sIEkgdGhpbmsgaXQncyBiZXR0ZXIgdG8gaW5jbHVkZSBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgYmVjYXVzZSBpdCdzIGRlZmluaXRlbHkgbm90IGlubGluZWQgKHNpbmNlIGl0cyBhZGRyZXNzIGlzIHRha2VuKS4gQWxzbywgSSdsbCBpbmNsdWRlIGBydHc4ODIyY19yZl9pbml0YCwgc2luY2UgaXQgY2FsbHMgYHJ0dzg4MjJjX3JmX2RhY19jYWxgLlxuXG5JIG5lZWQgdG8gcXVpY2tseSBjb25maXJtIHdoZXRoZXIgYHJ0dzg4MjJjX3JmX2luaXRgIGlzIHN0YXRpYy4gWWVzLiBTbywgdGhlIGluY2x1c2lvbiBvZiBgcnR3ODgyMmNfcmZfaW5pdGAgbG9va3MgZ29vZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgcnR3ODgyMmNfcmZfZGFjX2NhbGAgaXMgYWxzbyBzdGF0aWMsIHdoaWNoIGl0IGlzLiBBbmQgSSB3aWxsIGFkZCBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCwgYXMgdGhhdCBpcyBzdGF0aWMgdG9vLlxuXG5TbywgSSdtIGdvaW5nIHRvIGFkZCBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAsIGBydHc4ODIyY19yZl9kYWNfY2FsYCwgYW5kIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgIHRvIGBGb2N1c1N5bWJvbHNgLlxuXG5JIGp1c3QgbmVlZCB0byBlbnN1cmUgbXkgZWFybGllciBhbmFseXNpcyByZW1haW5zIGNvcnJlY3QuIElzIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgIHN0YXRpYz8gWWVzLiBPa2F5LCBhbmQgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYCBpcyBzdGF0aWMgdG9vLiBJJ2xsIGFsc28gYWRkIGBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaGAuXG5cbkZpbmFsbHksIHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0J3MganVzdCBkbyBhIHF1aWNrIHNjYW4gb2YgYHJ0dzg4MjJjLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIEkgbWlnaHQgaGF2ZSBtaXNzZWQuIFRoYXQgbG9va3MgbGlrZSBhIGNvbXByZWhlbnNpdmUgbGlzdC4gSSBhbSBzYXRpc2ZpZWQgd2l0aCB0aGUgYWJvdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMDY5LCJPdXRwdXRUb2tlbnMiOjY5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Njc3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTY6NDIuMDM1OTI4MTgxWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODg1MjY0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiBydHc4ODIyY19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0zMDkzPXN0cnVjdCBkcGtfY2ZnX3BhaXIge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMwOTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjMwOTk6dm9pZCBydHc4ODIyY19wYXJzZV90YmxfZHBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMxMDAtXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBydHdfdGFibGUgKnRibClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0zNDgxPXN0YXRpYyB1OCBydHc4ODIyY19kcGtfYWdjX2xvc3NfY2hrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzQ5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzQ5ODpzdHJ1Y3QgcnR3ODgyMmNfZHBrX2RhdGEge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zNDk5LVxcdHU4IHR4YmI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjE2OjQyLjA4NDc4NzZaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMwOTg0NDM4MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhc29uaW5nIGZvciBGdXp6aW5nIFJlYWx0ZWsgODgyMkMgREFDIElRIENhbGlicmF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXaGlsZSBgcnR3ODgyMmNfcGFyc2VfdGJsX2Rwa2AgaXNuJ3QgZGlyZWN0bHkgcmVsZXZhbnQgdG8gdGhlIHBhdGNoIGl0c2VsZiwgd2hpY2ggZm9jdXNlcyBvbiBEQUMgSVEgY2FsaWJyYXRpb24sIGl0J3MgZ29vZCB0byBrZWVwIGl0IGluIG1pbmQuIE15IHByaW1hcnkgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gdGhlIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBmdW5jdGlvbiwgYWxvbmcgd2l0aCBgcnR3ODgyMmNfcmZfZGFjX2NhbGAgYW5kIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgLiBFdmVuIGlmIHRoZSBsYXR0ZXIgdHdvIGFyZSBzdGF0aWMsIHN5emthbGxlciBoYXMgYSBoYWJpdCBvZiBmaW5kaW5nIHRoZW0gaWYgdGhleSBhcmVuJ3QgaW5saW5lZCwgc28gbGV0J3Mga2VlcCB0aGF0IGluIG1pbmQuXG5cbkZpcnN0LCBsZXQgbWUgY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBXZSBkZWZpbml0ZWx5IG5lZWQgYFJUVzg4YCwgYFJUVzg4Xzg4MjJDVWAsIGBVU0JgLCBhbmQgYE1BQzgwMjExYC4gVGhvdWdoIFVTQiBhbmQgTUFDODAyMTEgYXJlIHByZXR0eSBzdGFuZGFyZCBmb3Igc3l6a2FsbGVyLCBpdCdzIGFsd2F5cyBiZXR0ZXIgdG8gc3BlY2lmeSB0aGVtLiBOb3csIGFyZSB0aGVyZSBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzPyBBaCwgYFJUVzg4X0NPUkVgLCBgUlRXODhfVVNCYCwgYW5kIGBSVFc4OF84ODIyQ2AgYXJlIGFsbCBzZWxlY3RlZCBieSBgUlRXODhfODgyMkNVYCwgc28gd2UgZG9uJ3QgbmVlZCB0byBzcGVjaWZ5IHRob3NlIGV4cGxpY2l0bHkuIE5pY2UuXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybSByZWFjaGFiaWxpdHkuIERvZXMgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAgZ2V0IGNhbGxlZCB0aHJvdWdoIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYD8gWWVwLCBpdCdzOiBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgLVx1MDAzZSBgcnR3ODgyMmNfcmZfaW5pdGAgLVx1MDAzZSBgcnR3ODgyMmNfcmZfZGFjX2NhbGAgLVx1MDAzZSBgcnR3ODgyMmNfZGFjX2NhbF9zdGVwMmAgLVx1MDAzZSBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYC5cblxuQ2FuIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBiZSBjYWxsZWQgZnJvbSBzb21ld2hlcmUgZWxzZT8gT2theSwgbG9va2luZyBhdCBgcnR3ODgyMmNfb3BzYCwgaXQncyBjYWxsZWQgd2hlbiB0aGUgZGV2aWNlIHByb2Jlcy4gUmlnaHQsIHNvIGBydHc4ODIyY3VfcHJvYmVgIGNhbGxzIGBydHdfdXNiX3Byb2JlYCwgd2hpY2ggY2FsbHMgYHJ0d19jb3JlX2luaXRgLCBhbmQgdGhhdCdzIGhvdyB0aGUgZGV2aWNlIGlzIHNldCB1cC4gVGhlbiwgd2hlbiB0aGUgaW50ZXJmYWNlIGlzIGJyb3VnaHQgdXAsIGBydHdfbWFjODAyMTFfc3RhcnRgIGNhbGxzIGBydHdfY29yZV9zdGFydGAsIHdoaWNoIGluIHR1cm4gY2FsbHMgYHJ0d19wb3dlcl9vbmAsIGFuZCAqdGhhdCdzKiB3aGVuIGBjaGlwLVx1MDAzZW9wcy1cdTAwM2VwaHlfc2V0X3BhcmFtKHJ0d2RldilgIGlzIGNhbGxlZC4gVGhhdCdzIGEgc3RhbmRhcmQgZmxvdyBmb3IgbWFjODAyMTEgZHJpdmVycy4gRXhjZWxsZW50LCBpdCdzIHJlYWNoYWJsZS5cblxuSGVyZSdzIHRoZSByZWFzb25pbmc6IFRoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIFJGIGNhbGlicmF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgREFDIElRIGNhbGlicmF0aW9uLCBpbiB0aGUgUmVhbHRlayA4ODIyQyB3aXJlbGVzcyBkcml2ZXIgKGBydHc4ODIyYy5jYCkuIEl04oCZcyByZXBsYWNpbmcgYSBjdXN0b20gc29ydGluZyBmdW5jdGlvbiB3aXRoIGEgc3RhbmRhcmQgb25lIGFuZCBtYWtpbmcgY2hhbmdlcyB0byBob3cgSVEgb2Zmc2V0cyBhcmUgY2FsY3VsYXRlZCBhbmQgdmFsaWRhdGVkLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBiZWNhdXNlIHRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGRldmljZXMgKGBydHc4ODIyY3VgKSwgd2hpY2ggaXMgcGVyZmVjdCBzaW5jZSBzeXprYWxsZXIgY2FuIGVhc2lseSBlbXVsYXRlIHRob3NlIHVzaW5nIGBzeXpfdXNiX2Nvbm5lY3RgLiBXaGVuIHRoYXQgZW11bGF0ZWQgVVNCIFdpLUZpIGludGVyZmFjZSBpcyBhY3RpdmF0ZWQsIHRoZSBkcml2ZXIgaW5pdGlhdGVzIFJGIGNhbGlicmF0aW9uLCB0cmlnZ2VyaW5nIHRoZXNlIG1vZGlmaWVkIGZ1bmN0aW9ucy5cblxuU28sIGxldCdzIGtlZXAgdGhlIGZvY3VzIG9uOlxuXG4qICAgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gXG4qICAgYHJ0dzg4MjJjX3JmX2RhY19jYWxgXG4qICAgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWBcblxuV2l0aCB0aGVzZSBjb25maWd1cmF0aW9uczpcblxuKiAgIGBSVFc4OGBcbiogICBgUlRXODhfODgyMkNVYFxuKiAgIGBVU0JgXG4qICAgYE1BQzgwMjExYFxuXG5KdXN0IHRvIGRvdWJsZSBjaGVjaywgYFJUVzg4Xzg4MjJDVWAgc2hvdWxkIGJlIHN1ZmZpY2llbnQuIFdoYXQgYWJvdXQgUENJZSAoYFJUVzg4Xzg4MjJDRWApPyBTeXprYWxsZXIgZG9lc24ndCBlYXNpbHkgZW11bGF0ZSBQQ0llLCBidXQgVVNCIHNob3VsZCBiZSBlYXN5LCBzbyBgUlRXODhfODgyMkNVYCBpcyB0aGUga2V5IGZvciBmdXp6aW5nLlxuXG5Pa2F5LCBJJ20gcmVhZHkgdG8gc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMDM5LCJPdXRwdXRUb2tlbnMiOjIzOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxNjo1NS4xODMyMzM2MTlaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjI2MDk0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUlRXODhcIixcbiAgICBcIlJUVzg4Xzg4MjJDVVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1cIixcbiAgICBcInJ0dzg4MjJjX3JmX2RhY19jYWxcIixcbiAgICBcInJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBSRiBjYWxpYnJhdGlvbiBsb2dpYyAoc3BlY2lmaWNhbGx5IERBQyBJUSBjYWxpYnJhdGlvbikgaW4gdGhlIFJlYWx0ZWsgODgyMkMgd2lyZWxlc3MgZHJpdmVyIChgcnR3ODgyMmMuY2ApLiBJdCByZXBsYWNlcyBhIGN1c3RvbSBzb3J0aW5nIGltcGxlbWVudGF0aW9uIHdpdGggdGhlIHN0YW5kYXJkIGBzb3J0KClgIGZ1bmN0aW9uIGFuZCBjaGFuZ2VzIHRoZSBsb2dpYyBmb3IgY2FsY3VsYXRpbmcgSVEgb2Zmc2V0cyBhbmQgY2hlY2tpbmcgdmFsdWVzLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBiZWNhdXNlIHRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGRldmljZXMgKGBydHc4ODIyY3VgKSwgd2hpY2ggY2FuIGJlIGVtdWxhdGVkIGJ5IHN5emthbGxlciB2aWEgYHN5el91c2JfY29ubmVjdGAuIFdoZW4gdGhlIGVtdWxhdGVkIFVTQiBXaS1GaSBpbnRlcmZhY2UgaXMgYnJvdWdodCB1cCwgdGhlIGRyaXZlciBwZXJmb3JtcyBSRiBjYWxpYnJhdGlvbiwgdHJpZ2dlcmluZyB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg4XCIsXG4gICAgXCJSVFc4OF84ODIyQ1VcIixcbiAgICBcIlVTQlwiLFxuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHc4ODIyY19waHlfc2V0X3BhcmFtXCIsXG4gICAgXCJydHc4ODIyY19yZl9kYWNfY2FsXCIsXG4gICAgXCJydHc4ODIyY19kYWNfY2FsX3JmX21vZGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgUkYgY2FsaWJyYXRpb24gbG9naWMgKHNwZWNpZmljYWxseSBEQUMgSVEgY2FsaWJyYXRpb24pIGluIHRoZSBSZWFsdGVrIDg4MjJDIHdpcmVsZXNzIGRyaXZlciAoYHJ0dzg4MjJjLmNgKS4gSXQgcmVwbGFjZXMgYSBjdXN0b20gc29ydGluZyBpbXBsZW1lbnRhdGlvbiB3aXRoIHRoZSBzdGFuZGFyZCBgc29ydCgpYCBmdW5jdGlvbiBhbmQgY2hhbmdlcyB0aGUgbG9naWMgZm9yIGNhbGN1bGF0aW5nIElRIG9mZnNldHMgYW5kIGNoZWNraW5nIHZhbHVlcy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYmVjYXVzZSB0aGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIChgcnR3ODgyMmN1YCksIHdoaWNoIGNhbiBiZSBlbXVsYXRlZCBieSBzeXprYWxsZXIgdmlhIGBzeXpfdXNiX2Nvbm5lY3RgLiBXaGVuIHRoZSBlbXVsYXRlZCBVU0IgV2ktRmkgaW50ZXJmYWNlIGlzIGJyb3VnaHQgdXAsIHRoZSBkcml2ZXIgcGVyZm9ybXMgUkYgY2FsaWJyYXRpb24sIHRyaWdnZXJpbmcgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTY6NTUuMjU5NTAwNjU3WiIsIlNlcSI6MzMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTk4MzM0NDA3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjE2OjU1LjI2MDAyNTM4N1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozMTk4MjgxNDc3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBJUSBjYWxpYnJhdGlvbiBsb2dpYyBpbiB0aGUgUmVhbHRlayBydHc4OCB3aXJlbGVzcyBkcml2ZXIuIEl0IHJlcGxhY2VzIGN1c3RvbSBzb3J0aW5nIGFuZCBtaW4vbWF4IGNhbGN1bGF0aW9ucyB3aXRoIHN0YW5kYXJkIGtlcm5lbCBmdW5jdGlvbnMgKGBzb3J0KClgKSBhbmQgc2ltcGxpZmllcyB0aGUgYXJpdGhtZXRpYyBieSB1c2luZyBzaWduZWQgMzItYml0IGludGVnZXJzIChgczMyYCkgaW5zdGVhZCBvZiB1bnNpZ25lZCBpbnRlZ2VycyB3aXRoIG1hbnVhbCBzaWduIGhhbmRsaW5nLiBUaGUgYXJyYXlzIGBpdmAgYW5kIGBxdmAgYXJlIGFsbG9jYXRlZCBvbiB0aGUgc3RhY2sgYW5kIHBvcHVsYXRlZCBieSByZWFkaW5nIGhhcmR3YXJlIHJlZ2lzdGVycy4gV2hpbGUgdGhlcmUgaXMgYSB0aGVvcmV0aWNhbCBwcmUtZXhpc3RpbmcgZWRnZSBjYXNlIHdoZXJlIHRoZSBhcnJheXMgbWlnaHQgbm90IGJlIGZ1bGx5IHBvcHVsYXRlZCBpZiB0aGUgaGFyZHdhcmUgZmFpbHMgdG8gcHJvdmlkZSBlbm91Z2ggdmFsaWQgc2FtcGxlcyB3aXRoaW4gMTAsMDAwIGl0ZXJhdGlvbnMsIHRoaXMgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4YWNlcmJhdGUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBUaGUgZGF0YSBpcyB1c2VkIHN0cmljdGx5IGZvciBpbnRlcm5hbCBoYXJkd2FyZSBjYWxpYnJhdGlvbiBhbmQgaXMgbm90IGNvcGllZCB0byB1c2Vyc3BhY2UsIG1lYW5pbmcgdGhlcmUgaXMgbm8gcmlzayBvZiBhbiBpbmZvLWxlYWsuIEFueSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBtZW1vcnkgY29ycnVwdGlvbiB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIEEgZGVkaWNhdGVkIEtNU0FOIHJ1biBpcyBub3QganVzdGlmaWVkIGFzIG5vIG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWsgdnVsbmVyYWJpbGl0aWVzIGFyZSBpbnRyb2R1Y2VkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQ1MTg3OWJkNzc1YmRkOGYxN2E3ZTM3YmY1N2IyOTMwNGQ5YzA4ZTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAwNjoxMjoxNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuY1xuaW5kZXggMjQ0YzgwMjY0NzljMi4uNmZjZGZjNjRjM2IxZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jXG5AQCAtMyw2ICszLDggQEBcbiAgKi9cbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdG9wcy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvc29ydC5oXHUwMDNlXG4gI2luY2x1ZGUgXCJtYWluLmhcIlxuICNpbmNsdWRlIFwiY29leC5oXCJcbiAjaW5jbHVkZSBcImZ3LmhcIlxuQEAgLTE1Myw4NCArMTU1LDMwIEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19yZXN0b3JlX3JlZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgdm9pZCBydHc4ODIyY19yZl9taW5tYXhfY21wKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiB2YWx1ZSxcbi1cdFx0XHRcdCAgIHUzMiAqbWluLCB1MzIgKm1heClcbitzdGF0aWMgaW50IHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpXG4ge1xuLVx0aWYgKHZhbHVlIFx1MDAzZT0gMHgyMDApIHtcbi1cdFx0aWYgKCptaW4gXHUwMDNlPSAweDIwMCkge1xuLVx0XHRcdGlmICgqbWluIFx1MDAzZSB2YWx1ZSlcbi1cdFx0XHRcdCptaW4gPSB2YWx1ZTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHQqbWluID0gdmFsdWU7XG4tXHRcdH1cbi1cdFx0aWYgKCptYXggXHUwMDNlPSAweDIwMCkge1xuLVx0XHRcdGlmICgqbWF4IFx1MDAzYyB2YWx1ZSlcbi1cdFx0XHRcdCptYXggPSB2YWx1ZTtcbi1cdFx0fVxuLVx0fSBlbHNlIHtcbi1cdFx0aWYgKCptaW4gXHUwMDNjIDB4MjAwKSB7XG4tXHRcdFx0aWYgKCptaW4gXHUwMDNlIHZhbHVlKVxuLVx0XHRcdFx0Km1pbiA9IHZhbHVlO1xuLVx0XHR9XG4tXG4tXHRcdGlmICgqbWF4ICBcdTAwM2U9IDB4MjAwKSB7XG4tXHRcdFx0Km1heCA9IHZhbHVlO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdGlmICgqbWF4IFx1MDAzYyB2YWx1ZSlcbi1cdFx0XHRcdCptYXggPSB2YWx1ZTtcbi1cdFx0fVxuLVx0fVxuLX1cbitcdHMzMiB2YSA9ICooY29uc3QgczMyICopYTtcbitcdHMzMiB2YiA9ICooY29uc3QgczMyICopYjtcbiBcbi1zdGF0aWMgdm9pZCBfX3J0dzg4MjJjX2RhY19pcV9zb3J0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqdjEsIHUzMiAqdjIpXG4te1xuLVx0aWYgKCp2MSBcdTAwM2U9IDB4MjAwIFx1MDAyNlx1MDAyNiAqdjIgXHUwMDNlPSAweDIwMCkge1xuLVx0XHRpZiAoKnYxIFx1MDAzZSAqdjIpXG4tXHRcdFx0c3dhcCgqdjEsICp2Mik7XG4tXHR9IGVsc2UgaWYgKCp2MSBcdTAwM2MgMHgyMDAgXHUwMDI2XHUwMDI2ICp2MiBcdTAwM2MgMHgyMDApIHtcbi1cdFx0aWYgKCp2MSBcdTAwM2UgKnYyKVxuLVx0XHRcdHN3YXAoKnYxLCAqdjIpO1xuLVx0fSBlbHNlIGlmICgqdjEgXHUwMDNjIDB4MjAwIFx1MDAyNlx1MDAyNiAqdjIgXHUwMDNlPSAweDIwMCkge1xuLVx0XHRzd2FwKCp2MSwgKnYyKTtcbi1cdH1cbitcdHJldHVybiAodmEgXHUwMDNlIHZiKSAtICh2YSBcdTAwM2MgdmIpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKml2LCB1MzIgKnF2KVxuK3N0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9zb3J0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiAqaXYsIHMzMiAqcXYpXG4ge1xuLVx0dTMyIGksIGo7XG4tXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBEQUNLX1NOXzg4MjJDIC0gMTsgaSsrKSB7XG4tXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIChEQUNLX1NOXzg4MjJDIC0gMSAtIGkpIDsgaisrKSB7XG4tXHRcdFx0X19ydHc4ODIyY19kYWNfaXFfc29ydChydHdkZXYsIFx1MDAyNml2W2pdLCBcdTAwMjZpdltqICsgMV0pO1xuLVx0XHRcdF9fcnR3ODgyMmNfZGFjX2lxX3NvcnQocnR3ZGV2LCBcdTAwMjZxdltqXSwgXHUwMDI2cXZbaiArIDFdKTtcbi1cdFx0fVxuLVx0fVxuK1x0c29ydChpdiwgREFDS19TTl84ODIyQywgc2l6ZW9mKHMzMiksIHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyLCBOVUxMKTtcbitcdHNvcnQocXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICp2ZWMsIHUzMiAqdmFsKVxuK3N0YXRpYyBzMzIgcnR3ODgyMmNfZGFjX2lxX29mZnNldChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKnZlYylcbiB7XG4tXHR1MzIgcCwgbSwgdCwgaTtcbitcdHMzMiBzdW0gPSAwO1xuIFxuLVx0bSA9IDA7XG4tXHRwID0gMDtcbi1cdGZvciAoaSA9IDEwOyBpIFx1MDAzYyBEQUNLX1NOXzg4MjJDIC0gMTA7IGkrKykge1xuLVx0XHRpZiAodmVjW2ldIFx1MDAzZSAweDIwMClcbi1cdFx0XHRtID0gKDB4NDAwIC0gdmVjW2ldKSArIG07XG4tXHRcdGVsc2Vcbi1cdFx0XHRwID0gdmVjW2ldICsgcDtcbi1cdH1cbitcdGZvciAodTMyIGkgPSAxMDsgaSBcdTAwM2MgREFDS19TTl84ODIyQyAtIDEwOyBpKyspXG4rXHRcdHN1bSArPSB2ZWNbaV07XG4gXG4tXHRpZiAocCBcdTAwM2UgbSkge1xuLVx0XHR0ID0gcCAtIG07XG4tXHRcdHQgPSB0IC8gKERBQ0tfU05fODgyMkMgLSAyMCk7XG4tXHR9IGVsc2Uge1xuLVx0XHR0ID0gbSAtIHA7XG4tXHRcdHQgPSB0IC8gKERBQ0tfU05fODgyMkMgLSAyMCk7XG4tXHRcdGlmICh0ICE9IDB4MClcbi1cdFx0XHR0ID0gMHg0MDAgLSB0O1xuLVx0fVxuK1x0czMyIGF2ZyA9IHN1bSAvIChEQUNLX1NOXzg4MjJDIC0gMjApO1xuIFxuLVx0KnZhbCA9IHQ7XG4rXHRyZXR1cm4gYXZnIFx1MDAzZT0gMCA/IGF2ZyA6IDB4NDAwICsgYXZnO1xuIH1cbiBcbiBzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIodTggcGF0aClcbkBAIC0yNzEsMjkgKzIxOSwyNyBAQCBzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcih1OCBwYXRoKVxuIFx0cmV0dXJuIGJhc2VfYWRkcjtcbiB9XG4gXG4tc3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiB2YWx1ZSlcbitzdGF0aWMgYm9vbCBydHc4ODIyY19kYWNfaXFfY2hlY2soc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyIHZhbHVlKVxuIHtcbi1cdGJvb2wgcmV0ID0gdHJ1ZTtcbiBcbi1cdGlmICgodmFsdWUgXHUwMDNlPSAweDIwMCBcdTAwMjZcdTAwMjYgKDB4NDAwIC0gdmFsdWUpIFx1MDAzZSAweDY0KSB8fFxuLVx0ICAgICh2YWx1ZSBcdTAwM2MgMHgyMDAgXHUwMDI2XHUwMDI2IHZhbHVlIFx1MDAzZSAweDY0KSkge1xuLVx0XHRyZXQgPSBmYWxzZTtcbitcdGlmICh2YWx1ZSBcdTAwM2UgMTAwIHx8IHZhbHVlIFx1MDAzYyAtMTAwKSB7XG4gXHRcdHJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1JGSywgXCJbREFDS10gRXJyb3Igb3ZlcmZsb3dcXG5cIik7XG4rXHRcdHJldHVybiBmYWxzZTtcbiBcdH1cbiBcbi1cdHJldHVybiByZXQ7XG4rXHRyZXR1cm4gdHJ1ZTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdilcbitzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKml2LCBzMzIgKnF2KVxuIHtcbiBcdHUzMiB0ZW1wO1xuLVx0aW50IGkgPSAwLCBjbnQgPSAwO1xuK1x0dTMyIGkgPSAwLCBjbnQgPSAwO1xuIFxuIFx0d2hpbGUgKGkgXHUwMDNjIERBQ0tfU05fODgyMkMgXHUwMDI2XHUwMDI2IGNudCBcdTAwM2MgMTAwMDApIHtcbiBcdFx0Y250Kys7XG4gXHRcdHRlbXAgPSBydHdfcmVhZDMyX21hc2socnR3ZGV2LCAweDJkYmMsIDB4M2ZmZmZmKTtcbi1cdFx0aXZbaV0gPSAodGVtcCBcdTAwMjYgMHgzZmYwMDApIFx1MDAzZVx1MDAzZSAxMjtcbi1cdFx0cXZbaV0gPSB0ZW1wIFx1MDAyNiAweDNmZjtcbitcdFx0aXZbaV0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyLCA5KTtcbitcdFx0cXZbaV0gPSBzaWduX2V4dGVuZDMyKHRlbXAgXHUwMDI2IDB4M2ZmLCA5KTtcbiBcbiBcdFx0aWYgKHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIGl2W2ldKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIHF2W2ldKSlcbkBAIC0zMDIsMTMgKzI0OCwxMiBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKml2LCB1MzIgKnF2KVxuIH1cbiBcbiBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuLVx0XHRcdFx0ICAgICAgIHUzMiAqaXYsIHUzMiAqcXYsXG4rXHRcdFx0XHQgICAgICAgczMyICppdiwgczMyICpxdixcbiBcdFx0XHRcdCAgICAgICB1MzIgKmlfdmFsdWUsIHUzMiAqcV92YWx1ZSlcbiB7XG4tXHR1MzIgaV9tYXggPSAwLCBxX21heCA9IDAsIGlfbWluID0gMCwgcV9taW4gPSAwO1xuLVx0dTMyIGlfZGVsdGEsIHFfZGVsdGE7XG4rXHRzMzIgaV9tYXggPSAwLCBxX21heCA9IDAsIGlfbWluID0gMCwgcV9taW4gPSAwO1xuIFx0dTMyIHRlbXA7XG4tXHRpbnQgaSwgY250ID0gMDtcbitcdHUzMiBpLCBjbnQgPSAwO1xuIFxuIFx0ZG8ge1xuIFx0XHRpX21pbiA9IGl2WzBdO1xuQEAgLTMxNiwyMyArMjYxLDE4IEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4gXHRcdHFfbWluID0gcXZbMF07XG4gXHRcdHFfbWF4ID0gcXZbMF07XG4gXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIERBQ0tfU05fODgyMkM7IGkrKykge1xuLVx0XHRcdHJ0dzg4MjJjX3JmX21pbm1heF9jbXAocnR3ZGV2LCBpdltpXSwgXHUwMDI2aV9taW4sIFx1MDAyNmlfbWF4KTtcbi1cdFx0XHRydHc4ODIyY19yZl9taW5tYXhfY21wKHJ0d2RldiwgcXZbaV0sIFx1MDAyNnFfbWluLCBcdTAwMjZxX21heCk7XG4rXHRcdFx0aWYgKGl2W2ldIFx1MDAzYyBpX21pbilcbitcdFx0XHRcdGlfbWluID0gaXZbaV07XG4rXHRcdFx0aWYgKGl2W2ldIFx1MDAzZSBpX21heClcbitcdFx0XHRcdGlfbWF4ID0gaXZbaV07XG4rXHRcdFx0aWYgKHF2W2ldIFx1MDAzYyBxX21pbilcbitcdFx0XHRcdHFfbWluID0gcXZbaV07XG4rXHRcdFx0aWYgKHF2W2ldIFx1MDAzZSBxX21heClcbitcdFx0XHRcdHFfbWF4ID0gcXZbaV07XG4gXHRcdH1cbiBcbi1cdFx0aWYgKGlfbWF4IFx1MDAzYyAweDIwMCBcdTAwMjZcdTAwMjYgaV9taW4gXHUwMDNjIDB4MjAwKVxuLVx0XHRcdGlfZGVsdGEgPSBpX21heCAtIGlfbWluO1xuLVx0XHRlbHNlIGlmIChpX21heCBcdTAwM2U9IDB4MjAwIFx1MDAyNlx1MDAyNiBpX21pbiBcdTAwM2U9IDB4MjAwKVxuLVx0XHRcdGlfZGVsdGEgPSBpX21heCAtIGlfbWluO1xuLVx0XHRlbHNlXG4tXHRcdFx0aV9kZWx0YSA9IGlfbWF4ICsgKDB4NDAwIC0gaV9taW4pO1xuLVxuLVx0XHRpZiAocV9tYXggXHUwMDNjIDB4MjAwIFx1MDAyNlx1MDAyNiBxX21pbiBcdTAwM2MgMHgyMDApXG4tXHRcdFx0cV9kZWx0YSA9IHFfbWF4IC0gcV9taW47XG4tXHRcdGVsc2UgaWYgKHFfbWF4IFx1MDAzZT0gMHgyMDAgXHUwMDI2XHUwMDI2IHFfbWluIFx1MDAzZT0gMHgyMDApXG4tXHRcdFx0cV9kZWx0YSA9IHFfbWF4IC0gcV9taW47XG4tXHRcdGVsc2Vcbi1cdFx0XHRxX2RlbHRhID0gcV9tYXggKyAoMHg0MDAgLSBxX21pbik7XG4rXHRcdHUzMiBpX2RlbHRhID0gKHUzMikoaV9tYXggLSBpX21pbik7XG4rXHRcdHUzMiBxX2RlbHRhID0gKHUzMikocV9tYXggLSBxX21pbik7XG4gXG4gXHRcdHJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1JGSyxcbiBcdFx0XHRcIltEQUNLXSBpOiBtaW49MHglMDh4LCBtYXg9MHglMDh4LCBkZWx0YT0weCUwOHhcXG5cIixcbkBAIC0zNDUsMjQgKzI4NSwyNCBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuIFxuIFx0XHRpZiAoaV9kZWx0YSBcdTAwM2UgNSB8fCBxX2RlbHRhIFx1MDAzZSA1KSB7XG4gXHRcdFx0dGVtcCA9IHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpO1xuLVx0XHRcdGl2WzBdID0gKHRlbXAgXHUwMDI2IDB4M2ZmMDAwKSBcdTAwM2VcdTAwM2UgMTI7XG4tXHRcdFx0cXZbMF0gPSB0ZW1wIFx1MDAyNiAweDNmZjtcbitcdFx0XHRpdlswXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgXHUwMDI2IDB4M2ZmMDAwKSBcdTAwM2VcdTAwM2UgMTIsIDkpO1xuK1x0XHRcdHF2WzBdID0gc2lnbl9leHRlbmQzMih0ZW1wIFx1MDAyNiAweDNmZiwgOSk7XG4gXHRcdFx0dGVtcCA9IHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpO1xuLVx0XHRcdGl2W0RBQ0tfU05fODgyMkMgLSAxXSA9ICh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyO1xuLVx0XHRcdHF2W0RBQ0tfU05fODgyMkMgLSAxXSA9IHRlbXAgXHUwMDI2IDB4M2ZmO1xuK1x0XHRcdGl2W0RBQ0tfU05fODgyMkMgLSAxXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgXHUwMDI2IDB4M2ZmMDAwKSBcdTAwM2VcdTAwM2UgMTIsIDkpO1xuK1x0XHRcdHF2W0RBQ0tfU05fODgyMkMgLSAxXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCBcdTAwMjYgMHgzZmYsIDkpO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4gXHR9IHdoaWxlIChjbnQrKyBcdTAwM2MgMTAwKTtcbiBcbi1cdHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBpdiwgaV92YWx1ZSk7XG4tXHRydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgcXYsIHFfdmFsdWUpO1xuK1x0KmlfdmFsdWUgPSBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgaXYpO1xuK1x0KnFfdmFsdWUgPSBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgcXYpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3JmX21vZGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbiBcdFx0XHRcdCAgICAgdTMyICppX3ZhbHVlLCB1MzIgKnFfdmFsdWUpXG4ge1xuLVx0dTMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTtcbitcdHMzMiBpdltEQUNLX1NOXzg4MjJDXSwgcXZbREFDS19TTl84ODIyQ107XG4gXHR1MzIgcmZfYSwgcmZfYjtcbiBcbiBcdHJmX2EgPSBydHdfcmVhZF9yZihydHdkZXYsIFJGX1BBVEhfQSwgMHgwLCBSRlJFR19NQVNLKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjE2OjU1LjI2MDAyNjI4N1oiLCJTZXEiOjM1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzI2NTEyNzA2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgcnR3ODgyMmMgREFDIENhbGlicmF0aW9uIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCB0b3VjaGVzIHNldmVyYWwgZnVuY3Rpb25zIHdpdGhpbiB0aGUgYHJ0dzg4MjJjLmNgIGZpbGUsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggREFDIElRIGNhbGlicmF0aW9uLiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgaXQncyByZWZhY3RvcmluZyBhbmQgb3B0aW1pemluZyBleGlzdGluZyBjb2RlLCB3aGljaCBpcyBnb29kLiBUaGUga2V5IGNoYW5nZXMgSSdtIHNlZWluZyBhcmUgYXJvdW5kIGBydHc4ODIyY19kYWNfaXFfY21wX3MzMmAsIGBydHc4ODIyY19kYWNfaXFfc29ydGAsIGBydHc4ODIyY19kYWNfaXFfb2Zmc2V0YCwgYHJ0dzg4MjJjX2RhY19pcV9jaGVja2AsIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAsIGFuZCBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2hgLCBhbmQgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAuIEl0J3MgY29udmVydGluZyB0aGUgYGl2YCBhbmQgYHF2YCBhcnJheXMgdG8gYHMzMmAgaW4gYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAsIHdoaWNoIHNlZW1zIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgc2lnbmVkIGludGVnZXIgY2hhbmdlLiBUaGUgcmVwbGFjZW1lbnQgb2YgYSBjdXN0b20gc29ydCB3aXRoIGBzb3J0KClgIGZyb20gYGxpbnV4L3NvcnQuaGAgaXMgYSBzdGFuZGFyZCBvcHRpbWl6YXRpb24gYW5kIGdvb2QgZm9yIGNvZGUgbWFpbnRlbmFuY2UgYW5kIGxpa2VseSBmb3IgcGVyZm9ybWFuY2UuIFNhbWUgd2l0aCB0aGUgYXJpdGhtZXRpYyByZXBsYWNlbWVudCBvZiBjdXN0b20gbWluL21heCBsb2dpYyBhbmQgb2Zmc2V0IGNhbGN1bGF0aW9ucy5cblxuQnV0IHRoZW4gbXkgYXR0ZW50aW9uIGlzIGRyYXduIHRvIGhvdyBgaXZgIGFuZCBgcXZgIGFyZSBwb3B1bGF0ZWQgaW4gYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYCB3aGljaCBpcyB3aGVyZSBJIHNlZSB0aGUgcG90ZW50aWFsIGZvciBpc3N1ZXMuIEkgaW1tZWRpYXRlbHkgc2VlIHRoZSByZWdpc3RlciByZWFkIGBydHdfcmVhZDMyX21hc2tgIGFuZCBhc3NpZ25tZW50IHRvIGBpdltpXWAgYW5kIGBxdltpXWAuIEknbSBjb25jZXJuZWQgYWJvdXQgdW5pbml0aWFsaXplZCBtZW1vcnkgaGVyZS4gTG9va2luZyBjbG9zZXIsIGl0IGxvb2tzIGxpa2UgYGl2YCBhbmQgYHF2YCBhcmUgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBpbiBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBhbmQgdGhlbiBwYXNzZWQgdG8gYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBoYXBwZW5zIGluc2lkZSBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgLiBUaGUgY29kZSBoYXMgYSBsb29wIHRoYXQgcmVhZHMgYSByZWdpc3RlciBhbmQgcG9wdWxhdGVzIGBpdmAgYW5kIGBxdmAgdW50aWwgaXQgcmVhY2hlcyBgREFDS19TTl84ODIyQ2Agb3IgYSBjb3VudGVyIGhpdHMgMTAwMDAuIFRoYXQgbG9va3Mgc3VzcGVjdDsgaWYgdGhlIGxvb3AgdGVybWluYXRlcyBlYXJseSwgdGhlIHJlc3Qgb2YgdGhlIGFycmF5IHdpbGwgYmUgdW5pbml0aWFsaXplZC5cblxuT2theSwgSSBzZWUgaXQncyByZWFkaW5nIHRoZSBoYXJkd2FyZSByZWdpc3Rlci4gSWYgYGNudGAgaGl0cyAxMDAwMCBiZWZvcmUgYGlgIHJlYWNoZXMgYERBQ0tfU05fODgyMkNgLCB0aGUgcmVzdCBvZiBgaXZgIGFuZCBgcXZgICp3aWxsKiBiZSB1bmluaXRpYWxpemVkLiBBbmQgdGhlIG9yaWdpbmFsIGNvZGUgaGFkIHRoZSBzYW1lIHZ1bG5lcmFiaWxpdHkhIFNvIHRoZSBxdWVzdGlvbiBpczogZG9lcyB0aGlzIHBhdGNoIGludHJvZHVjZSB0aGlzIG9yIG1lcmVseSBleHBvc2UgaXQ/XG5cbkxldCdzIHRoaW5rLiBUaGUgcGF0Y2ggKmNoYW5nZXMqIGhvdyBgaXZgIGFuZCBgcXZgIGFyZSBzb3J0ZWQgYW5kIHByb2Nlc3NlZCBhZnRlciB0aGUgc2FtcGxlLiBUaGUgb3JpZ2luYWwgdXNlZCBhIGN1c3RvbSBzb3J0IGBfX3J0dzg4MjJjX2RhY19pcV9zb3J0YC4gVGhpcyBwYXRjaCBub3cgdXNlcyBgc29ydCgpYC4gSWYgYGl2YCBhbmQgYHF2YCBhcmUgcGFydGlhbGx5IHVuaW5pdGlhbGl6ZWQsIHRoZSBgc29ydCgpYCBmdW5jdGlvbiBpcyBnb2luZyB0byByZWFkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBCdXQgc2luY2UgdGhlIG9yaWdpbmFsIGNvZGUgaGFkIHRoZSBzYW1lIGlzc3VlLCBJIGRvbid0IHRoaW5rIHRoaXMgY2hhbmdlIGludHJvZHVjZWQgaXQuXG5cblRoaXMgaXMgYSBoYXJkd2FyZSBjYWxpYnJhdGlvbiByb3V0aW5lOyB0aGUgbWVtb3J5IGlzIG9uIHRoZSBzdGFjay4gSXMgdGhpcyBhIHBvdGVudGlhbCBpbmZvcm1hdGlvbiBsZWFrPyBObywgYmVjYXVzZSB0aGUgcmVzdWx0cyBvZiB0aGUgY2FsaWJyYXRpb24gYXJlbid0IHNlbnQgdG8gdXNlciBzcGFjZSBkaXJlY3RseS4gVGhleSBhcmUgdXNlZCB0byBjb21wdXRlIG90aGVyIHZhbHVlcyB0aGF0IGFyZSB3cml0dGVuIHRvIGhhcmR3YXJlIHJlZ2lzdGVycy4gT2theSwgc28gYSBsZWFrIHNlZW1zIHVubGlrZWx5LiBJcyB0aGVyZSBhIHJpc2sgdGhhdCBpdCBjb3VsZCBjYXVzZSBicmFuY2hpbmcgb24gdW5pbml0aWFsaXplZCBtZW1vcnk/IFllcywgYHNvcnQoKWAgY291bGQgYnJhbmNoIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlmIGBpdmAgYW5kIGBxdmAgYXJlIG9ubHkgcGFydGlhbGx5IGZpbGxlZC4gS01TQU4gY291bGQgYmUgaGVscGZ1bCBoZXJlIGJlY2F1c2UgS01TQU4gZGV0ZWN0cyB1c2VzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBJZiB3ZSBoYXZlIHVuaW5pdGlhbGl6ZWQgZGF0YSBpbiB0aGUgYXJyYXksIEtNU0FOIHdvdWxkIGNvbXBsYWluLlxuXG5UaGlua2luZyB0aGlzIHRocm91Z2gsIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAgaXMgY2FsbGVkIGluIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgLiBJZiB0aGUgc2FtcGxpbmcgZmFpbHMgdG8gZmlsbCB0aGUgYGl2YCBhbmQgYHF2YCBhcnJheXMsIHRoZW4gYHJ0dzg4MjJjX2RhY19pcV9zb3J0YCBzb3J0cyB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhhdCdzIGEgYnVnLiBJcyB0aGUgcGF0Y2ggaW50cm9kdWNpbmcgdGhpcz8gTm8uIFRoZSBvcmlnaW5hbCBjb2RlIGRpZCB0aGUgc2FtZSB0aGluZyB3aXRoIHRoZSBzYW1lIHBvdGVudGlhbCBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNlLiBUaGUgcGF0Y2ggaXMganVzdCByZWZhY3RvcmluZyB0aGUgc29ydCBhbmQgbWluL21heCBsb2dpYywgYnV0IHRoZSBmdW5kYW1lbnRhbCBpc3N1ZSBpcyB1bmNoYW5nZWQuXG5cbkxldCBtZSBjb25maXJtIHRoYXQ6IElmIHRoZSBjb3VudCByZWFjaGVzIDEwMDAwIGJlZm9yZSB0aGUgYXJyYXkgaXMgZnVsbCwgYGlgIGNvdWxkIGJlIGxlc3MgdGhhbiBgREFDS19TTl84ODIyQ2AuIExldCBtZSBxdWlja2x5IGxvb2sgdXAgdGhlIGRlZmluaXRpb24gb2YgYERBQ0tfU05fODgyMkNgLlxuXG4iLCJJbnB1dFRva2VucyI6NTUzNCwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NzQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxNzoxMi41MjUxNTc2MjhaIiwiU2VxIjozNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NDAzNzcyNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBEQUNLX1NOXzg4MjJDXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuaD0xMzM9Y29uc3Qgc3RydWN0IHJ0d190YWJsZSBuYW1lICMjIF90YmwgPSB7XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5oLTE0MS0jZGVmaW5lIERBQ0tfUkZfODgyMkNcXHRcXHQxXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5oOjE0MjojZGVmaW5lIERBQ0tfU05fODgyMkNcXHRcXHQxMDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmgtMTQzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxNzoxNC4xNjU1NDA3MThaIiwiU2VxIjozNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMwNzcyNzA1NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIHJ0dzg4MjJjIElRIENhbGlicmF0aW9uIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoIGlzIGEgcmVmYWN0b3Jpbmcgb2YgdGhlIElRIGNhbGlicmF0aW9uIGxvZ2ljIHdpdGhpbiB0aGUgcnR3ODggd2lyZWxlc3MgZHJpdmVyIGZvciBSZWFsdGVrIGhhcmR3YXJlLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIHN3aXRjaGluZyBmcm9tIHNvbWUgY3VzdG9tLCBwb3RlbnRpYWxseSBsZXNzIGVmZmljaWVudCwgYWxnb3JpdGhtcyB0byB1c2UgZXN0YWJsaXNoZWQga2VybmVsIGZ1bmN0aW9ucyBsaWtlIGBzb3J0KClgIGFuZCBgc2lnbl9leHRlbmQzMmAgYW5kIHNpbXBsaWZ5aW5nIHRoZSBhcml0aG1ldGljIHdpdGggc2lnbmVkIDMyLWJpdCBpbnRlZ2VycyAoYHMzMmApLiBUaGlzIGZlZWxzIGxpa2UgYSBnb29kIG1vdmUgZm9yIGNvZGUgbWFpbnRhaW5hYmlsaXR5IGFuZCByZWFkYWJpbGl0eS5cblxuVGhlIGtleSBhcmVhIG9mIGNvbmNlcm4sIG5hdHVyYWxseSwgaXMgbWVtb3J5IHNhZmV0eSwgc3BlY2lmaWNhbGx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGUgY29kZSB1c2VzIGFycmF5cyBgaXZgIGFuZCBgcXZgIHdoaWNoIGFyZSBwb3B1bGF0ZWQgZnJvbSBoYXJkd2FyZSByZWdpc3RlciByZWFkcyBhbmQgdXNlZCBsb2NhbGx5IHdpdGhpbiBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYC4gVGhlIGxvb3AgaGFzIGEgbWF4aW11bSBvZiAxMDAwMCBhdHRlbXB0cyB0byBnZXQgdGhlIHJlcXVpcmVkIG51bWJlciBvZiB2YWxpZCBzYW1wbGVzICgxMDApLiBUaGUgY3VycmVudCBjb2RlLCBhbmQgdGhlIHJlZmFjdG9yZWQgY29kZSwgd2lsbCBwb3RlbnRpYWxseSByZWFkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZyb20gdGhlc2UgYXJyYXlzIGlmIHRoZSBoYXJkd2FyZSBmYWlscyB0byBkZWxpdmVyIGEgZ29vZCBzYW1wbGUgc2V0IHdpdGhpbiAxMCwwMDAgdHJpZXMuICpIb3dldmVyKiwgdGhpcyBpc24ndCBhICpuZXcqIHByb2JsZW0gaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBLTVNBTiB3b3VsZCBjYXRjaCBpdCwgYnV0IHRoaXMgcHJlLWV4aXN0aW5nIHBvdGVudGlhbCBpc3N1ZSAoaWYgaXQgZXZlbiAqaXMqIGFuIGlzc3VlLCBnaXZlbiB0aGUgMTAsMDAwIGF0dGVtcHRzKSBpcyB1bnJlbGF0ZWQgdG8gdGhlIHBhdGNoLlxuXG5JIHNlZSB0aGF0IHRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgY2hhbmdlcyBzb21lIGNhbGN1bGF0aW9ucyBpbnNpZGUgYHJ0dzg4MjJjX2RhY19pcV9vZmZzZXRgLCBidXQgaXQncyBub3cganVzdCBzdW1taW5nIHRoZSBtaWRkbGUgODAgZWxlbWVudHMgb2YgYSB2ZWN0b3IsIGFuZCB0aGVuIGRvaW5nIHNvbWUgc2ltcGxlIGNhbGN1bGF0aW9ucy4gQWdhaW4sIHRoZSBjb3JlIGhlcmUgaXMganVzdCBhbGdvcml0aG1pYyBzaW1wbGlmaWNhdGlvbiwgc28gbm8sIHRoaXMgaXNuJ3QgaW50cm9kdWNpbmcgYSBuZXcgcmlzay4gVGhlIGRhdGEgaXMgKm5vdCogZXhwb3NlZCB0byB1c2Vyc3BhY2UuIEl0IGlzIHB1cmVseSBmb3IgaW50ZXJuYWwgaGFyZHdhcmUgY2FsaWJyYXRpb24uIFRoZXJlZm9yZSwgdGhlcmUncyBubyB3YXkgdG8gbGVhayB1bmluaXRpYWxpemVkIGRhdGEuIElmIHRoZXJlICppcyogdW5pbml0aWFsaXplZCBkYXRhLCBpdCB3b3VsZCBvbmx5IGJlIGluIHRoZSBzdGFjaywgYW5kIHRoZSB1c3VhbCBtZW1vcnkgc2FmZXR5IGNoZWNrcyBsaWtlIEtBU0FOIGFuZCBvdGhlciBzdGF0aWMgYW5hbHlzaXMgdG9vbHMgYXJlIGdvb2QgZW5vdWdoLlxuXG5UaGUgY29kZSBjaGFuZ2VzIGluY2x1ZGUgdXNpbmcgYHNvcnQoKWAgd2hpY2ggaXMgZmluZSwgYW5kIGBzaWduX2V4dGVuZDMyYCB3aGljaCBpcyBhbHNvIGZpbmUuIFRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyBuZXcgc3RydWN0dXJlcyB0aGF0IGFyZSBzZW50IHRvIHVzZXJzcGFjZS4gVGhpcyBzZWVtcyBlbnRpcmVseSBzYWZlLiBTbywgSSdtIGNvbmZpZGVudCBpbiBzYXlpbmcgdGhhdCB0aGUgcGF0Y2ggZG9lcyAqbm90KiBpbnRyb2R1Y2UgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcywgYW5kIEtNU0FOIGlzbid0IHNwZWNpZmljYWxseSBuZWVkZWQgaGVyZS4gSW4gb3RoZXIgd29yZHMsIEknZCBzYXkgYE5lZWRzS01TQU4gPSBmYWxzZWAuIEl0J3MgYSBjbGVhbiByZWZhY3RvcmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQzMSwiT3V0cHV0VG9rZW5zIjoyMzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjE3OjI3LjI0MjgxNTE0OFoiLCJTZXEiOjM4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBJUSBjYWxpYnJhdGlvbiBsb2dpYyBpbiB0aGUgUmVhbHRlayBydHc4OCB3aXJlbGVzcyBkcml2ZXIuIEl0IHJlcGxhY2VzIGN1c3RvbSBzb3J0aW5nIGFuZCBtaW4vbWF4IGNhbGN1bGF0aW9ucyB3aXRoIHN0YW5kYXJkIGtlcm5lbCBmdW5jdGlvbnMgKGBzb3J0KClgKSBhbmQgc2ltcGxpZmllcyB0aGUgYXJpdGhtZXRpYyBieSB1c2luZyBzaWduZWQgMzItYml0IGludGVnZXJzIChgczMyYCkgaW5zdGVhZCBvZiB1bnNpZ25lZCBpbnRlZ2VycyB3aXRoIG1hbnVhbCBzaWduIGhhbmRsaW5nLiBUaGUgYXJyYXlzIGBpdmAgYW5kIGBxdmAgYXJlIGFsbG9jYXRlZCBvbiB0aGUgc3RhY2sgYW5kIHBvcHVsYXRlZCBieSByZWFkaW5nIGhhcmR3YXJlIHJlZ2lzdGVycy4gV2hpbGUgdGhlcmUgaXMgYSB0aGVvcmV0aWNhbCBwcmUtZXhpc3RpbmcgZWRnZSBjYXNlIHdoZXJlIHRoZSBhcnJheXMgbWlnaHQgbm90IGJlIGZ1bGx5IHBvcHVsYXRlZCBpZiB0aGUgaGFyZHdhcmUgZmFpbHMgdG8gcHJvdmlkZSBlbm91Z2ggdmFsaWQgc2FtcGxlcyB3aXRoaW4gMTAsMDAwIGl0ZXJhdGlvbnMsIHRoaXMgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4YWNlcmJhdGUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBUaGUgZGF0YSBpcyB1c2VkIHN0cmljdGx5IGZvciBpbnRlcm5hbCBoYXJkd2FyZSBjYWxpYnJhdGlvbiBhbmQgaXMgbm90IGNvcGllZCB0byB1c2Vyc3BhY2UsIG1lYW5pbmcgdGhlcmUgaXMgbm8gcmlzayBvZiBhbiBpbmZvLWxlYWsuIEFueSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBtZW1vcnkgY29ycnVwdGlvbiB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIEEgZGVkaWNhdGVkIEtNU0FOIHJ1biBpcyBub3QganVzdGlmaWVkIGFzIG5vIG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWsgdnVsbmVyYWJpbGl0aWVzIGFyZSBpbnRyb2R1Y2VkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgSVEgY2FsaWJyYXRpb24gbG9naWMgaW4gdGhlIFJlYWx0ZWsgcnR3ODggd2lyZWxlc3MgZHJpdmVyLiBJdCByZXBsYWNlcyBjdXN0b20gc29ydGluZyBhbmQgbWluL21heCBjYWxjdWxhdGlvbnMgd2l0aCBzdGFuZGFyZCBrZXJuZWwgZnVuY3Rpb25zIChgc29ydCgpYCkgYW5kIHNpbXBsaWZpZXMgdGhlIGFyaXRobWV0aWMgYnkgdXNpbmcgc2lnbmVkIDMyLWJpdCBpbnRlZ2VycyAoYHMzMmApIGluc3RlYWQgb2YgdW5zaWduZWQgaW50ZWdlcnMgd2l0aCBtYW51YWwgc2lnbiBoYW5kbGluZy4gVGhlIGFycmF5cyBgaXZgIGFuZCBgcXZgIGFyZSBhbGxvY2F0ZWQgb24gdGhlIHN0YWNrIGFuZCBwb3B1bGF0ZWQgYnkgcmVhZGluZyBoYXJkd2FyZSByZWdpc3RlcnMuIFdoaWxlIHRoZXJlIGlzIGEgdGhlb3JldGljYWwgcHJlLWV4aXN0aW5nIGVkZ2UgY2FzZSB3aGVyZSB0aGUgYXJyYXlzIG1pZ2h0IG5vdCBiZSBmdWxseSBwb3B1bGF0ZWQgaWYgdGhlIGhhcmR3YXJlIGZhaWxzIHRvIHByb3ZpZGUgZW5vdWdoIHZhbGlkIHNhbXBsZXMgd2l0aGluIDEwLDAwMCBpdGVyYXRpb25zLCB0aGlzIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleGFjZXJiYXRlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gVGhlIGRhdGEgaXMgdXNlZCBzdHJpY3RseSBmb3IgaW50ZXJuYWwgaGFyZHdhcmUgY2FsaWJyYXRpb24gYW5kIGlzIG5vdCBjb3BpZWQgdG8gdXNlcnNwYWNlLCBtZWFuaW5nIHRoZXJlIGlzIG5vIHJpc2sgb2YgYW4gaW5mby1sZWFrLiBBbnkgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgbWVtb3J5IGNvcnJ1cHRpb24gd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOLiBBIGRlZGljYXRlZCBLTVNBTiBydW4gaXMgbm90IGp1c3RpZmllZCBhcyBubyBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrIHZ1bG5lcmFiaWxpdGllcyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqbq5b[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-13 05:54:19 +0000 UTC FinishedAt: 2026-08-13 06:17:28 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "e51dca02911f7857201a01fd884a7666500adefc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW88", "RTW88_8822CU", "USB", "MAC80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "e51dca02911f7857201a01fd884a7666500adefc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW88", "RTW88_8822CU", "USB", "MAC80211" ], "series_id": "ce2a7b3a-b465-47ec-801a-f1b3f96b97cd" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtw8822c_phy_set_param", "rtw8822c_rf_dac_cal", "rtw8822c_dac_cal_rf_mode" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEzIDA2OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg4JiMzNDssCiAgICAmIzM0O1JUVzg4Xzg4MjJDVSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHc4ODIyY19waHlfc2V0X3BhcmFtJiMzNDssCiAgICAmIzM0O3J0dzg4MjJjX3JmX2RhY19jYWwmIzM0OywKICAgICYjMzQ7cnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBJUSBjYWxpYnJhdGlvbiBsb2dpYyBpbiB0aGUgUmVhbHRlayBydHc4OCB3aXJlbGVzcyBkcml2ZXIuIEl0IHJlcGxhY2VzIGN1c3RvbSBzb3J0aW5nIGFuZCBtaW4vbWF4IGNhbGN1bGF0aW9ucyB3aXRoIHN0YW5kYXJkIGtlcm5lbCBmdW5jdGlvbnMgKGBzb3J0KClgKSBhbmQgc2ltcGxpZmllcyB0aGUgYXJpdGhtZXRpYyBieSB1c2luZyBzaWduZWQgMzItYml0IGludGVnZXJzIChgczMyYCkgaW5zdGVhZCBvZiB1bnNpZ25lZCBpbnRlZ2VycyB3aXRoIG1hbnVhbCBzaWduIGhhbmRsaW5nLiBUaGUgYXJyYXlzIGBpdmAgYW5kIGBxdmAgYXJlIGFsbG9jYXRlZCBvbiB0aGUgc3RhY2sgYW5kIHBvcHVsYXRlZCBieSByZWFkaW5nIGhhcmR3YXJlIHJlZ2lzdGVycy4gV2hpbGUgdGhlcmUgaXMgYSB0aGVvcmV0aWNhbCBwcmUtZXhpc3RpbmcgZWRnZSBjYXNlIHdoZXJlIHRoZSBhcnJheXMgbWlnaHQgbm90IGJlIGZ1bGx5IHBvcHVsYXRlZCBpZiB0aGUgaGFyZHdhcmUgZmFpbHMgdG8gcHJvdmlkZSBlbm91Z2ggdmFsaWQgc2FtcGxlcyB3aXRoaW4gMTAsMDAwIGl0ZXJhdGlvbnMsIHRoaXMgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4YWNlcmJhdGUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBUaGUgZGF0YSBpcyB1c2VkIHN0cmljdGx5IGZvciBpbnRlcm5hbCBoYXJkd2FyZSBjYWxpYnJhdGlvbiBhbmQgaXMgbm90IGNvcGllZCB0byB1c2Vyc3BhY2UsIG1lYW5pbmcgdGhlcmUgaXMgbm8gcmlzayBvZiBhbiBpbmZvLWxlYWsuIEFueSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBtZW1vcnkgY29ycnVwdGlvbiB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIEEgZGVkaWNhdGVkIEtNU0FOIHJ1biBpcyBub3QganVzdGlmaWVkIGFzIG5vIG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWsgdnVsbmVyYWJpbGl0aWVzIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgUkYgY2FsaWJyYXRpb24gbG9naWMgKHNwZWNpZmljYWxseSBEQUMgSVEgY2FsaWJyYXRpb24pIGluIHRoZSBSZWFsdGVrIDg4MjJDIHdpcmVsZXNzIGRyaXZlciAoYHJ0dzg4MjJjLmNgKS4gSXQgcmVwbGFjZXMgYSBjdXN0b20gc29ydGluZyBpbXBsZW1lbnRhdGlvbiB3aXRoIHRoZSBzdGFuZGFyZCBgc29ydCgpYCBmdW5jdGlvbiBhbmQgY2hhbmdlcyB0aGUgbG9naWMgZm9yIGNhbGN1bGF0aW5nIElRIG9mZnNldHMgYW5kIGNoZWNraW5nIHZhbHVlcy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYmVjYXVzZSB0aGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIChgcnR3ODgyMmN1YCksIHdoaWNoIGNhbiBiZSBlbXVsYXRlZCBieSBzeXprYWxsZXIgdmlhIGBzeXpfdXNiX2Nvbm5lY3RgLiBXaGVuIHRoZSBlbXVsYXRlZCBVU0IgV2ktRmkgaW50ZXJmYWNlIGlzIGJyb3VnaHQgdXAsIHRoZSBkcml2ZXIgcGVyZm9ybXMgUkYgY2FsaWJyYXRpb24sIHRyaWdnZXJpbmcgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQ1MTg3OWJkNzc1YmRkOGYxN2E3ZTM3YmY1N2IyOTMwNGQ5YzA4ZTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAwNjoxMjoxNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmNcbmluZGV4IDI0NGM4MDI2NDc5YzIuLjZmY2RmYzY0YzNiMWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuY1xuQEAgLTMsNiAmIzQzOzMsOCBAQFxuICAqL1xuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdG9wcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3NvcnQuaFx1MDAzZVxuICNpbmNsdWRlIFwmIzM0O21haW4uaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2NvZXguaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2Z3LmhcJiMzNDtcbkBAIC0xNTMsODQgJiM0MzsxNTUsMzAgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX3Jlc3RvcmVfcmVnKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4gXHR9XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX3JmX21pbm1heF9jbXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyIHZhbHVlLFxuLVx0XHRcdFx0ICAgdTMyICptaW4sIHUzMiAqbWF4KVxuJiM0MztzdGF0aWMgaW50IHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpXG4ge1xuLVx0aWYgKHZhbHVlIFx1MDAzZT0gMHgyMDApIHtcbi1cdFx0aWYgKCptaW4gXHUwMDNlPSAweDIwMCkge1xuLVx0XHRcdGlmICgqbWluIFx1MDAzZSB2YWx1ZSlcbi1cdFx0XHRcdCptaW4gPSB2YWx1ZTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHQqbWluID0gdmFsdWU7XG4tXHRcdH1cbi1cdFx0aWYgKCptYXggXHUwMDNlPSAweDIwMCkge1xuLVx0XHRcdGlmICgqbWF4IFx1MDAzYyB2YWx1ZSlcbi1cdFx0XHRcdCptYXggPSB2YWx1ZTtcbi1cdFx0fVxuLVx0fSBlbHNlIHtcbi1cdFx0aWYgKCptaW4gXHUwMDNjIDB4MjAwKSB7XG4tXHRcdFx0aWYgKCptaW4gXHUwMDNlIHZhbHVlKVxuLVx0XHRcdFx0Km1pbiA9IHZhbHVlO1xuLVx0XHR9XG4tXG4tXHRcdGlmICgqbWF4ICBcdTAwM2U9IDB4MjAwKSB7XG4tXHRcdFx0Km1heCA9IHZhbHVlO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdGlmICgqbWF4IFx1MDAzYyB2YWx1ZSlcbi1cdFx0XHRcdCptYXggPSB2YWx1ZTtcbi1cdFx0fVxuLVx0fVxuLX1cbiYjNDM7XHRzMzIgdmEgPSAqKGNvbnN0IHMzMiAqKWE7XG4mIzQzO1x0czMyIHZiID0gKihjb25zdCBzMzIgKiliO1xuIFxuLXN0YXRpYyB2b2lkIF9fcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICp2MSwgdTMyICp2Milcbi17XG4tXHRpZiAoKnYxIFx1MDAzZT0gMHgyMDAgXHUwMDI2XHUwMDI2ICp2MiBcdTAwM2U9IDB4MjAwKSB7XG4tXHRcdGlmICgqdjEgXHUwMDNlICp2Milcbi1cdFx0XHRzd2FwKCp2MSwgKnYyKTtcbi1cdH0gZWxzZSBpZiAoKnYxIFx1MDAzYyAweDIwMCBcdTAwMjZcdTAwMjYgKnYyIFx1MDAzYyAweDIwMCkge1xuLVx0XHRpZiAoKnYxIFx1MDAzZSAqdjIpXG4tXHRcdFx0c3dhcCgqdjEsICp2Mik7XG4tXHR9IGVsc2UgaWYgKCp2MSBcdTAwM2MgMHgyMDAgXHUwMDI2XHUwMDI2ICp2MiBcdTAwM2U9IDB4MjAwKSB7XG4tXHRcdHN3YXAoKnYxLCAqdjIpO1xuLVx0fVxuJiM0MztcdHJldHVybiAodmEgXHUwMDNlIHZiKSAtICh2YSBcdTAwM2MgdmIpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKml2LCB1MzIgKnF2KVxuJiM0MztzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKml2LCBzMzIgKnF2KVxuIHtcbi1cdHUzMiBpLCBqO1xuLVxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgREFDS19TTl84ODIyQyAtIDE7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIChEQUNLX1NOXzg4MjJDIC0gMSAtIGkpIDsgaiYjNDM7JiM0MzspIHtcbi1cdFx0XHRfX3J0dzg4MjJjX2RhY19pcV9zb3J0KHJ0d2RldiwgXHUwMDI2aXZbal0sIFx1MDAyNml2W2ogJiM0MzsgMV0pO1xuLVx0XHRcdF9fcnR3ODgyMmNfZGFjX2lxX3NvcnQocnR3ZGV2LCBcdTAwMjZxdltqXSwgXHUwMDI2cXZbaiAmIzQzOyAxXSk7XG4tXHRcdH1cbi1cdH1cbiYjNDM7XHRzb3J0KGl2LCBEQUNLX1NOXzg4MjJDLCBzaXplb2YoczMyKSwgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzIsIE5VTEwpO1xuJiM0MztcdHNvcnQocXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICp2ZWMsIHUzMiAqdmFsKVxuJiM0MztzdGF0aWMgczMyIHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICp2ZWMpXG4ge1xuLVx0dTMyIHAsIG0sIHQsIGk7XG4mIzQzO1x0czMyIHN1bSA9IDA7XG4gXG4tXHRtID0gMDtcbi1cdHAgPSAwO1xuLVx0Zm9yIChpID0gMTA7IGkgXHUwMDNjIERBQ0tfU05fODgyMkMgLSAxMDsgaSYjNDM7JiM0MzspIHtcbi1cdFx0aWYgKHZlY1tpXSBcdTAwM2UgMHgyMDApXG4tXHRcdFx0bSA9ICgweDQwMCAtIHZlY1tpXSkgJiM0MzsgbTtcbi1cdFx0ZWxzZVxuLVx0XHRcdHAgPSB2ZWNbaV0gJiM0MzsgcDtcbi1cdH1cbiYjNDM7XHRmb3IgKHUzMiBpID0gMTA7IGkgXHUwMDNjIERBQ0tfU05fODgyMkMgLSAxMDsgaSYjNDM7JiM0MzspXG4mIzQzO1x0XHRzdW0gJiM0Mzs9IHZlY1tpXTtcbiBcbi1cdGlmIChwIFx1MDAzZSBtKSB7XG4tXHRcdHQgPSBwIC0gbTtcbi1cdFx0dCA9IHQgLyAoREFDS19TTl84ODIyQyAtIDIwKTtcbi1cdH0gZWxzZSB7XG4tXHRcdHQgPSBtIC0gcDtcbi1cdFx0dCA9IHQgLyAoREFDS19TTl84ODIyQyAtIDIwKTtcbi1cdFx0aWYgKHQgIT0gMHgwKVxuLVx0XHRcdHQgPSAweDQwMCAtIHQ7XG4tXHR9XG4mIzQzO1x0czMyIGF2ZyA9IHN1bSAvIChEQUNLX1NOXzg4MjJDIC0gMjApO1xuIFxuLVx0KnZhbCA9IHQ7XG4mIzQzO1x0cmV0dXJuIGF2ZyBcdTAwM2U9IDAgPyBhdmcgOiAweDQwMCAmIzQzOyBhdmc7XG4gfVxuIFxuIHN0YXRpYyB1MzIgcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcih1OCBwYXRoKVxuQEAgLTI3MSwyOSAmIzQzOzIxOSwyNyBAQCBzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcih1OCBwYXRoKVxuIFx0cmV0dXJuIGJhc2VfYWRkcjtcbiB9XG4gXG4tc3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiB2YWx1ZSlcbiYjNDM7c3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiB2YWx1ZSlcbiB7XG4tXHRib29sIHJldCA9IHRydWU7XG4gXG4tXHRpZiAoKHZhbHVlIFx1MDAzZT0gMHgyMDAgXHUwMDI2XHUwMDI2ICgweDQwMCAtIHZhbHVlKSBcdTAwM2UgMHg2NCkgfHxcbi1cdCAgICAodmFsdWUgXHUwMDNjIDB4MjAwIFx1MDAyNlx1MDAyNiB2YWx1ZSBcdTAwM2UgMHg2NCkpIHtcbi1cdFx0cmV0ID0gZmFsc2U7XG4mIzQzO1x0aWYgKHZhbHVlIFx1MDAzZSAxMDAgfHwgdmFsdWUgXHUwMDNjIC0xMDApIHtcbiBcdFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLCBcJiMzNDtbREFDS10gRXJyb3Igb3ZlcmZsb3dcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuIFx0fVxuIFxuLVx0cmV0dXJuIHJldDtcbiYjNDM7XHRyZXR1cm4gdHJ1ZTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdilcbiYjNDM7c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdilcbiB7XG4gXHR1MzIgdGVtcDtcbi1cdGludCBpID0gMCwgY250ID0gMDtcbiYjNDM7XHR1MzIgaSA9IDAsIGNudCA9IDA7XG4gXG4gXHR3aGlsZSAoaSBcdTAwM2MgREFDS19TTl84ODIyQyBcdTAwMjZcdTAwMjYgY250IFx1MDAzYyAxMDAwMCkge1xuIFx0XHRjbnQmIzQzOyYjNDM7O1xuIFx0XHR0ZW1wID0gcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZik7XG4tXHRcdGl2W2ldID0gKHRlbXAgXHUwMDI2IDB4M2ZmMDAwKSBcdTAwM2VcdTAwM2UgMTI7XG4tXHRcdHF2W2ldID0gdGVtcCBcdTAwMjYgMHgzZmY7XG4mIzQzO1x0XHRpdltpXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgXHUwMDI2IDB4M2ZmMDAwKSBcdTAwM2VcdTAwM2UgMTIsIDkpO1xuJiM0MztcdFx0cXZbaV0gPSBzaWduX2V4dGVuZDMyKHRlbXAgXHUwMDI2IDB4M2ZmLCA5KTtcbiBcbiBcdFx0aWYgKHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIGl2W2ldKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIHF2W2ldKSlcbkBAIC0zMDIsMTMgJiM0MzsyNDgsMTIgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdilcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2Rldixcbi1cdFx0XHRcdCAgICAgICB1MzIgKml2LCB1MzIgKnF2LFxuJiM0MztcdFx0XHRcdCAgICAgICBzMzIgKml2LCBzMzIgKnF2LFxuIFx0XHRcdFx0ICAgICAgIHUzMiAqaV92YWx1ZSwgdTMyICpxX3ZhbHVlKVxuIHtcbi1cdHUzMiBpX21heCA9IDAsIHFfbWF4ID0gMCwgaV9taW4gPSAwLCBxX21pbiA9IDA7XG4tXHR1MzIgaV9kZWx0YSwgcV9kZWx0YTtcbiYjNDM7XHRzMzIgaV9tYXggPSAwLCBxX21heCA9IDAsIGlfbWluID0gMCwgcV9taW4gPSAwO1xuIFx0dTMyIHRlbXA7XG4tXHRpbnQgaSwgY250ID0gMDtcbiYjNDM7XHR1MzIgaSwgY250ID0gMDtcbiBcbiBcdGRvIHtcbiBcdFx0aV9taW4gPSBpdlswXTtcbkBAIC0zMTYsMjMgJiM0MzsyNjEsMTggQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbiBcdFx0cV9taW4gPSBxdlswXTtcbiBcdFx0cV9tYXggPSBxdlswXTtcbiBcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgREFDS19TTl84ODIyQzsgaSYjNDM7JiM0MzspIHtcbi1cdFx0XHRydHc4ODIyY19yZl9taW5tYXhfY21wKHJ0d2RldiwgaXZbaV0sIFx1MDAyNmlfbWluLCBcdTAwMjZpX21heCk7XG4tXHRcdFx0cnR3ODgyMmNfcmZfbWlubWF4X2NtcChydHdkZXYsIHF2W2ldLCBcdTAwMjZxX21pbiwgXHUwMDI2cV9tYXgpO1xuJiM0MztcdFx0XHRpZiAoaXZbaV0gXHUwMDNjIGlfbWluKVxuJiM0MztcdFx0XHRcdGlfbWluID0gaXZbaV07XG4mIzQzO1x0XHRcdGlmIChpdltpXSBcdTAwM2UgaV9tYXgpXG4mIzQzO1x0XHRcdFx0aV9tYXggPSBpdltpXTtcbiYjNDM7XHRcdFx0aWYgKHF2W2ldIFx1MDAzYyBxX21pbilcbiYjNDM7XHRcdFx0XHRxX21pbiA9IHF2W2ldO1xuJiM0MztcdFx0XHRpZiAocXZbaV0gXHUwMDNlIHFfbWF4KVxuJiM0MztcdFx0XHRcdHFfbWF4ID0gcXZbaV07XG4gXHRcdH1cbiBcbi1cdFx0aWYgKGlfbWF4IFx1MDAzYyAweDIwMCBcdTAwMjZcdTAwMjYgaV9taW4gXHUwMDNjIDB4MjAwKVxuLVx0XHRcdGlfZGVsdGEgPSBpX21heCAtIGlfbWluO1xuLVx0XHRlbHNlIGlmIChpX21heCBcdTAwM2U9IDB4MjAwIFx1MDAyNlx1MDAyNiBpX21pbiBcdTAwM2U9IDB4MjAwKVxuLVx0XHRcdGlfZGVsdGEgPSBpX21heCAtIGlfbWluO1xuLVx0XHRlbHNlXG4tXHRcdFx0aV9kZWx0YSA9IGlfbWF4ICYjNDM7ICgweDQwMCAtIGlfbWluKTtcbi1cbi1cdFx0aWYgKHFfbWF4IFx1MDAzYyAweDIwMCBcdTAwMjZcdTAwMjYgcV9taW4gXHUwMDNjIDB4MjAwKVxuLVx0XHRcdHFfZGVsdGEgPSBxX21heCAtIHFfbWluO1xuLVx0XHRlbHNlIGlmIChxX21heCBcdTAwM2U9IDB4MjAwIFx1MDAyNlx1MDAyNiBxX21pbiBcdTAwM2U9IDB4MjAwKVxuLVx0XHRcdHFfZGVsdGEgPSBxX21heCAtIHFfbWluO1xuLVx0XHRlbHNlXG4tXHRcdFx0cV9kZWx0YSA9IHFfbWF4ICYjNDM7ICgweDQwMCAtIHFfbWluKTtcbiYjNDM7XHRcdHUzMiBpX2RlbHRhID0gKHUzMikoaV9tYXggLSBpX21pbik7XG4mIzQzO1x0XHR1MzIgcV9kZWx0YSA9ICh1MzIpKHFfbWF4IC0gcV9taW4pO1xuIFxuIFx0XHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssXG4gXHRcdFx0XCYjMzQ7W0RBQ0tdIGk6IG1pbj0weCUwOHgsIG1heD0weCUwOHgsIGRlbHRhPTB4JTA4eFxcblwmIzM0OyxcbkBAIC0zNDUsMjQgJiM0MzsyODUsMjQgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbiBcbiBcdFx0aWYgKGlfZGVsdGEgXHUwMDNlIDUgfHwgcV9kZWx0YSBcdTAwM2UgNSkge1xuIFx0XHRcdHRlbXAgPSBydHdfcmVhZDMyX21hc2socnR3ZGV2LCAweDJkYmMsIDB4M2ZmZmZmKTtcbi1cdFx0XHRpdlswXSA9ICh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyO1xuLVx0XHRcdHF2WzBdID0gdGVtcCBcdTAwMjYgMHgzZmY7XG4mIzQzO1x0XHRcdGl2WzBdID0gc2lnbl9leHRlbmQzMigodGVtcCBcdTAwMjYgMHgzZmYwMDApIFx1MDAzZVx1MDAzZSAxMiwgOSk7XG4mIzQzO1x0XHRcdHF2WzBdID0gc2lnbl9leHRlbmQzMih0ZW1wIFx1MDAyNiAweDNmZiwgOSk7XG4gXHRcdFx0dGVtcCA9IHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpO1xuLVx0XHRcdGl2W0RBQ0tfU05fODgyMkMgLSAxXSA9ICh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyO1xuLVx0XHRcdHF2W0RBQ0tfU05fODgyMkMgLSAxXSA9IHRlbXAgXHUwMDI2IDB4M2ZmO1xuJiM0MztcdFx0XHRpdltEQUNLX1NOXzg4MjJDIC0gMV0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyLCA5KTtcbiYjNDM7XHRcdFx0cXZbREFDS19TTl84ODIyQyAtIDFdID0gc2lnbl9leHRlbmQzMih0ZW1wIFx1MDAyNiAweDNmZiwgOSk7XG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiBcdH0gd2hpbGUgKGNudCYjNDM7JiM0MzsgXHUwMDNjIDEwMCk7XG4gXG4tXHRydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgaXYsIGlfdmFsdWUpO1xuLVx0cnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIHF2LCBxX3ZhbHVlKTtcbiYjNDM7XHQqaV92YWx1ZSA9IHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBpdik7XG4mIzQzO1x0KnFfdmFsdWUgPSBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgcXYpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3JmX21vZGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbiBcdFx0XHRcdCAgICAgdTMyICppX3ZhbHVlLCB1MzIgKnFfdmFsdWUpXG4ge1xuLVx0dTMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTtcbiYjNDM7XHRzMzIgaXZbREFDS19TTl84ODIyQ10sIHF2W0RBQ0tfU05fODgyMkNdO1xuIFx0dTMyIHJmX2EsIHJmX2I7XG4gXG4gXHRyZl9hID0gcnR3X3JlYWRfcmYocnR3ZGV2LCBSRl9QQVRIX0EsIDB4MCwgUkZSRUdfTUFTSyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg4JiMzNDssCiAgICAmIzM0O1JUVzg4Xzg4MjJDVSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHc4ODIyY19waHlfc2V0X3BhcmFtJiMzNDssCiAgICAmIzM0O3J0dzg4MjJjX3JmX2RhY19jYWwmIzM0OywKICAgICYjMzQ7cnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBSRiBjYWxpYnJhdGlvbiBsb2dpYyAoc3BlY2lmaWNhbGx5IERBQyBJUSBjYWxpYnJhdGlvbikgaW4gdGhlIFJlYWx0ZWsgODgyMkMgd2lyZWxlc3MgZHJpdmVyIChgcnR3ODgyMmMuY2ApLiBJdCByZXBsYWNlcyBhIGN1c3RvbSBzb3J0aW5nIGltcGxlbWVudGF0aW9uIHdpdGggdGhlIHN0YW5kYXJkIGBzb3J0KClgIGZ1bmN0aW9uIGFuZCBjaGFuZ2VzIHRoZSBsb2dpYyBmb3IgY2FsY3VsYXRpbmcgSVEgb2Zmc2V0cyBhbmQgY2hlY2tpbmcgdmFsdWVzLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBiZWNhdXNlIHRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGRldmljZXMgKGBydHc4ODIyY3VgKSwgd2hpY2ggY2FuIGJlIGVtdWxhdGVkIGJ5IHN5emthbGxlciB2aWEgYHN5el91c2JfY29ubmVjdGAuIFdoZW4gdGhlIGVtdWxhdGVkIFVTQiBXaS1GaSBpbnRlcmZhY2UgaXMgYnJvdWdodCB1cCwgdGhlIGRyaXZlciBwZXJmb3JtcyBSRiBjYWxpYnJhdGlvbiwgdHJpZ2dlcmluZyB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDUxODc5YmQ3NzViZGQ4ZjE3YTdlMzdiZjU3YjI5MzA0ZDljMDhlMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDEzIDA2OjEyOjE2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jCmluZGV4IDI0NGM4MDI2NDc5YzIuLjZmY2RmYzY0YzNiMWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMKQEAgLTMsNiAmIzQzOzMsOCBAQAogICovCiAKICNpbmNsdWRlICZsdDtsaW51eC9tb2R1bGUuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvYml0b3BzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3NvcnQuaCZndDsKICNpbmNsdWRlICYjMzQ7bWFpbi5oJiMzNDsKICNpbmNsdWRlICYjMzQ7Y29leC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7ZncuaCYjMzQ7CkBAIC0xNTMsODQgJiM0MzsxNTUsMzAgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX3Jlc3RvcmVfcmVnKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsCiAJfQogfQogCi1zdGF0aWMgdm9pZCBydHc4ODIyY19yZl9taW5tYXhfY21wKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiB2YWx1ZSwKLQkJCQkgICB1MzIgKm1pbiwgdTMyICptYXgpCiYjNDM7c3RhdGljIGludCBydHc4ODIyY19kYWNfaXFfY21wX3MzMihjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogewotCWlmICh2YWx1ZSAmZ3Q7PSAweDIwMCkgewotCQlpZiAoKm1pbiAmZ3Q7PSAweDIwMCkgewotCQkJaWYgKCptaW4gJmd0OyB2YWx1ZSkKLQkJCQkqbWluID0gdmFsdWU7Ci0JCX0gZWxzZSB7Ci0JCQkqbWluID0gdmFsdWU7Ci0JCX0KLQkJaWYgKCptYXggJmd0Oz0gMHgyMDApIHsKLQkJCWlmICgqbWF4ICZsdDsgdmFsdWUpCi0JCQkJKm1heCA9IHZhbHVlOwotCQl9Ci0JfSBlbHNlIHsKLQkJaWYgKCptaW4gJmx0OyAweDIwMCkgewotCQkJaWYgKCptaW4gJmd0OyB2YWx1ZSkKLQkJCQkqbWluID0gdmFsdWU7Ci0JCX0KLQotCQlpZiAoKm1heCAgJmd0Oz0gMHgyMDApIHsKLQkJCSptYXggPSB2YWx1ZTsKLQkJfSBlbHNlIHsKLQkJCWlmICgqbWF4ICZsdDsgdmFsdWUpCi0JCQkJKm1heCA9IHZhbHVlOwotCQl9Ci0JfQotfQomIzQzOwlzMzIgdmEgPSAqKGNvbnN0IHMzMiAqKWE7CiYjNDM7CXMzMiB2YiA9ICooY29uc3QgczMyICopYjsKIAotc3RhdGljIHZvaWQgX19ydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKnYxLCB1MzIgKnYyKQotewotCWlmICgqdjEgJmd0Oz0gMHgyMDAgJmFtcDsmYW1wOyAqdjIgJmd0Oz0gMHgyMDApIHsKLQkJaWYgKCp2MSAmZ3Q7ICp2MikKLQkJCXN3YXAoKnYxLCAqdjIpOwotCX0gZWxzZSBpZiAoKnYxICZsdDsgMHgyMDAgJmFtcDsmYW1wOyAqdjIgJmx0OyAweDIwMCkgewotCQlpZiAoKnYxICZndDsgKnYyKQotCQkJc3dhcCgqdjEsICp2Mik7Ci0JfSBlbHNlIGlmICgqdjEgJmx0OyAweDIwMCAmYW1wOyZhbXA7ICp2MiAmZ3Q7PSAweDIwMCkgewotCQlzd2FwKCp2MSwgKnYyKTsKLQl9CiYjNDM7CXJldHVybiAodmEgJmd0OyB2YikgLSAodmEgJmx0OyB2Yik7CiB9CiAKLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9zb3J0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqaXYsIHUzMiAqcXYpCiYjNDM7c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdikKIHsKLQl1MzIgaSwgajsKLQotCWZvciAoaSA9IDA7IGkgJmx0OyBEQUNLX1NOXzg4MjJDIC0gMTsgaSYjNDM7JiM0MzspIHsKLQkJZm9yIChqID0gMDsgaiAmbHQ7IChEQUNLX1NOXzg4MjJDIC0gMSAtIGkpIDsgaiYjNDM7JiM0MzspIHsKLQkJCV9fcnR3ODgyMmNfZGFjX2lxX3NvcnQocnR3ZGV2LCAmYW1wO2l2W2pdLCAmYW1wO2l2W2ogJiM0MzsgMV0pOwotCQkJX19ydHc4ODIyY19kYWNfaXFfc29ydChydHdkZXYsICZhbXA7cXZbal0sICZhbXA7cXZbaiAmIzQzOyAxXSk7Ci0JCX0KLQl9CiYjNDM7CXNvcnQoaXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7CiYjNDM7CXNvcnQocXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7CiB9CiAKLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICp2ZWMsIHUzMiAqdmFsKQomIzQzO3N0YXRpYyBzMzIgcnR3ODgyMmNfZGFjX2lxX29mZnNldChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKnZlYykKIHsKLQl1MzIgcCwgbSwgdCwgaTsKJiM0MzsJczMyIHN1bSA9IDA7CiAKLQltID0gMDsKLQlwID0gMDsKLQlmb3IgKGkgPSAxMDsgaSAmbHQ7IERBQ0tfU05fODgyMkMgLSAxMDsgaSYjNDM7JiM0MzspIHsKLQkJaWYgKHZlY1tpXSAmZ3Q7IDB4MjAwKQotCQkJbSA9ICgweDQwMCAtIHZlY1tpXSkgJiM0MzsgbTsKLQkJZWxzZQotCQkJcCA9IHZlY1tpXSAmIzQzOyBwOwotCX0KJiM0MzsJZm9yICh1MzIgaSA9IDEwOyBpICZsdDsgREFDS19TTl84ODIyQyAtIDEwOyBpJiM0MzsmIzQzOykKJiM0MzsJCXN1bSAmIzQzOz0gdmVjW2ldOwogCi0JaWYgKHAgJmd0OyBtKSB7Ci0JCXQgPSBwIC0gbTsKLQkJdCA9IHQgLyAoREFDS19TTl84ODIyQyAtIDIwKTsKLQl9IGVsc2UgewotCQl0ID0gbSAtIHA7Ci0JCXQgPSB0IC8gKERBQ0tfU05fODgyMkMgLSAyMCk7Ci0JCWlmICh0ICE9IDB4MCkKLQkJCXQgPSAweDQwMCAtIHQ7Ci0JfQomIzQzOwlzMzIgYXZnID0gc3VtIC8gKERBQ0tfU05fODgyMkMgLSAyMCk7CiAKLQkqdmFsID0gdDsKJiM0MzsJcmV0dXJuIGF2ZyAmZ3Q7PSAwID8gYXZnIDogMHg0MDAgJiM0MzsgYXZnOwogfQogCiBzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIodTggcGF0aCkKQEAgLTI3MSwyOSAmIzQzOzIxOSwyNyBAQCBzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcih1OCBwYXRoKQogCXJldHVybiBiYXNlX2FkZHI7CiB9CiAKLXN0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgdmFsdWUpCiYjNDM7c3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiB2YWx1ZSkKIHsKLQlib29sIHJldCA9IHRydWU7CiAKLQlpZiAoKHZhbHVlICZndDs9IDB4MjAwICZhbXA7JmFtcDsgKDB4NDAwIC0gdmFsdWUpICZndDsgMHg2NCkgfHwKLQkgICAgKHZhbHVlICZsdDsgMHgyMDAgJmFtcDsmYW1wOyB2YWx1ZSAmZ3Q7IDB4NjQpKSB7Ci0JCXJldCA9IGZhbHNlOwomIzQzOwlpZiAodmFsdWUgJmd0OyAxMDAgfHwgdmFsdWUgJmx0OyAtMTAwKSB7CiAJCXJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1JGSywgJiMzNDtbREFDS10gRXJyb3Igb3ZlcmZsb3dcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiBmYWxzZTsKIAl9CiAKLQlyZXR1cm4gcmV0OwomIzQzOwlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdikKJiM0MztzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKml2LCBzMzIgKnF2KQogewogCXUzMiB0ZW1wOwotCWludCBpID0gMCwgY250ID0gMDsKJiM0MzsJdTMyIGkgPSAwLCBjbnQgPSAwOwogCiAJd2hpbGUgKGkgJmx0OyBEQUNLX1NOXzg4MjJDICZhbXA7JmFtcDsgY250ICZsdDsgMTAwMDApIHsKIAkJY250JiM0MzsmIzQzOzsKIAkJdGVtcCA9IHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpOwotCQlpdltpXSA9ICh0ZW1wICZhbXA7IDB4M2ZmMDAwKSAmZ3Q7Jmd0OyAxMjsKLQkJcXZbaV0gPSB0ZW1wICZhbXA7IDB4M2ZmOwomIzQzOwkJaXZbaV0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wICZhbXA7IDB4M2ZmMDAwKSAmZ3Q7Jmd0OyAxMiwgOSk7CiYjNDM7CQlxdltpXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCAmYW1wOyAweDNmZiwgOSk7CiAKIAkJaWYgKHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIGl2W2ldKSAmYW1wOyZhbXA7CiAJCSAgICBydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBxdltpXSkpCkBAIC0zMDIsMTMgJiM0MzsyNDgsMTIgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdikKIH0KIAogc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwKLQkJCQkgICAgICAgdTMyICppdiwgdTMyICpxdiwKJiM0MzsJCQkJICAgICAgIHMzMiAqaXYsIHMzMiAqcXYsCiAJCQkJICAgICAgIHUzMiAqaV92YWx1ZSwgdTMyICpxX3ZhbHVlKQogewotCXUzMiBpX21heCA9IDAsIHFfbWF4ID0gMCwgaV9taW4gPSAwLCBxX21pbiA9IDA7Ci0JdTMyIGlfZGVsdGEsIHFfZGVsdGE7CiYjNDM7CXMzMiBpX21heCA9IDAsIHFfbWF4ID0gMCwgaV9taW4gPSAwLCBxX21pbiA9IDA7CiAJdTMyIHRlbXA7Ci0JaW50IGksIGNudCA9IDA7CiYjNDM7CXUzMiBpLCBjbnQgPSAwOwogCiAJZG8gewogCQlpX21pbiA9IGl2WzBdOwpAQCAtMzE2LDIzICYjNDM7MjYxLDE4IEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsCiAJCXFfbWluID0gcXZbMF07CiAJCXFfbWF4ID0gcXZbMF07CiAJCWZvciAoaSA9IDA7IGkgJmx0OyBEQUNLX1NOXzg4MjJDOyBpJiM0MzsmIzQzOykgewotCQkJcnR3ODgyMmNfcmZfbWlubWF4X2NtcChydHdkZXYsIGl2W2ldLCAmYW1wO2lfbWluLCAmYW1wO2lfbWF4KTsKLQkJCXJ0dzg4MjJjX3JmX21pbm1heF9jbXAocnR3ZGV2LCBxdltpXSwgJmFtcDtxX21pbiwgJmFtcDtxX21heCk7CiYjNDM7CQkJaWYgKGl2W2ldICZsdDsgaV9taW4pCiYjNDM7CQkJCWlfbWluID0gaXZbaV07CiYjNDM7CQkJaWYgKGl2W2ldICZndDsgaV9tYXgpCiYjNDM7CQkJCWlfbWF4ID0gaXZbaV07CiYjNDM7CQkJaWYgKHF2W2ldICZsdDsgcV9taW4pCiYjNDM7CQkJCXFfbWluID0gcXZbaV07CiYjNDM7CQkJaWYgKHF2W2ldICZndDsgcV9tYXgpCiYjNDM7CQkJCXFfbWF4ID0gcXZbaV07CiAJCX0KIAotCQlpZiAoaV9tYXggJmx0OyAweDIwMCAmYW1wOyZhbXA7IGlfbWluICZsdDsgMHgyMDApCi0JCQlpX2RlbHRhID0gaV9tYXggLSBpX21pbjsKLQkJZWxzZSBpZiAoaV9tYXggJmd0Oz0gMHgyMDAgJmFtcDsmYW1wOyBpX21pbiAmZ3Q7PSAweDIwMCkKLQkJCWlfZGVsdGEgPSBpX21heCAtIGlfbWluOwotCQllbHNlCi0JCQlpX2RlbHRhID0gaV9tYXggJiM0MzsgKDB4NDAwIC0gaV9taW4pOwotCi0JCWlmIChxX21heCAmbHQ7IDB4MjAwICZhbXA7JmFtcDsgcV9taW4gJmx0OyAweDIwMCkKLQkJCXFfZGVsdGEgPSBxX21heCAtIHFfbWluOwotCQllbHNlIGlmIChxX21heCAmZ3Q7PSAweDIwMCAmYW1wOyZhbXA7IHFfbWluICZndDs9IDB4MjAwKQotCQkJcV9kZWx0YSA9IHFfbWF4IC0gcV9taW47Ci0JCWVsc2UKLQkJCXFfZGVsdGEgPSBxX21heCAmIzQzOyAoMHg0MDAgLSBxX21pbik7CiYjNDM7CQl1MzIgaV9kZWx0YSA9ICh1MzIpKGlfbWF4IC0gaV9taW4pOwomIzQzOwkJdTMyIHFfZGVsdGEgPSAodTMyKShxX21heCAtIHFfbWluKTsKIAogCQlydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssCiAJCQkmIzM0O1tEQUNLXSBpOiBtaW49MHglMDh4LCBtYXg9MHglMDh4LCBkZWx0YT0weCUwOHhcbiYjMzQ7LApAQCAtMzQ1LDI0ICYjNDM7Mjg1LDI0IEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsCiAKIAkJaWYgKGlfZGVsdGEgJmd0OyA1IHx8IHFfZGVsdGEgJmd0OyA1KSB7CiAJCQl0ZW1wID0gcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZik7Ci0JCQlpdlswXSA9ICh0ZW1wICZhbXA7IDB4M2ZmMDAwKSAmZ3Q7Jmd0OyAxMjsKLQkJCXF2WzBdID0gdGVtcCAmYW1wOyAweDNmZjsKJiM0MzsJCQlpdlswXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgJmFtcDsgMHgzZmYwMDApICZndDsmZ3Q7IDEyLCA5KTsKJiM0MzsJCQlxdlswXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCAmYW1wOyAweDNmZiwgOSk7CiAJCQl0ZW1wID0gcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZik7Ci0JCQlpdltEQUNLX1NOXzg4MjJDIC0gMV0gPSAodGVtcCAmYW1wOyAweDNmZjAwMCkgJmd0OyZndDsgMTI7Ci0JCQlxdltEQUNLX1NOXzg4MjJDIC0gMV0gPSB0ZW1wICZhbXA7IDB4M2ZmOwomIzQzOwkJCWl2W0RBQ0tfU05fODgyMkMgLSAxXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgJmFtcDsgMHgzZmYwMDApICZndDsmZ3Q7IDEyLCA5KTsKJiM0MzsJCQlxdltEQUNLX1NOXzg4MjJDIC0gMV0gPSBzaWduX2V4dGVuZDMyKHRlbXAgJmFtcDsgMHgzZmYsIDkpOwogCQl9IGVsc2UgewogCQkJYnJlYWs7CiAJCX0KIAl9IHdoaWxlIChjbnQmIzQzOyYjNDM7ICZsdDsgMTAwKTsKIAotCXJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBpdiwgaV92YWx1ZSk7Ci0JcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIHF2LCBxX3ZhbHVlKTsKJiM0MzsJKmlfdmFsdWUgPSBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgaXYpOwomIzQzOwkqcV92YWx1ZSA9IHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBxdik7CiB9CiAKIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LAogCQkJCSAgICAgdTMyICppX3ZhbHVlLCB1MzIgKnFfdmFsdWUpCiB7Ci0JdTMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTsKJiM0MzsJczMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTsKIAl1MzIgcmZfYSwgcmZfYjsKIAogCXJmX2EgPSBydHdfcmVhZF9yZihydHdkZXYsIFJGX1BBVEhfQSwgMHgwLCBSRlJFR19NQVNLKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUzNwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQ4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciBSZWFsdGVrIDg4MjJDIERBQyBJUSBDYWxpYnJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSBoYXZlIGEgcGF0Y2ggdG91Y2hpbmcgc2V2ZXJhbCBmdW5jdGlvbnM6IGBydHc4ODIyY19kYWNfaXFfY21wX3MzMmAsIGBydHc4ODIyY19kYWNfaXFfc29ydGAsIGV0Yy4gYWxsIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jYC4gVGhlc2UgYXJlIGNsZWFybHkgcmVsYXRlZCB0byBEQUMgSVEgY2FsaWJyYXRpb24gZm9yIHRoZSBSZWFsdGVrIDg4MjJDIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IFJGIGNhbGlicmF0aW9uLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHdoZXRoZXIgdGhlc2UgY2hhbmdlcyBpbnRyb2R1Y2UgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgd2FycmFudCBmdXp6aW5nLgoKQnV0IHdhaXQsIHRoZSBpbnN0cnVjdGlvbnMgc3BlY2lmeSBzb21lIGV4ZW1wdGlvbnMuIFRoZSBrZXkgaGVyZSBpcyB3aGV0aGVyIHRoaXMgY29kZSBpcyByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUuIFRoZXkgc3BlY2lmaWNhbGx5IGNhbGwgb3V0IHBoeXNpY2FsIFBDSWUvVVNCIGRldmljZXMgdGhhdCBhcmUgZGlmZmljdWx0IHRvIHJlYWNoIHdpdGhvdXQgc3BlY2lmaWMgZW11bGF0ZWQgaGFyZHdhcmUuCgpUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBJcyBgcnR3ODhgIGEgZHJpdmVyIGZvciBhIHBoeXNpY2FsIFdpLUZpIGNhcmQ/IFllcywgaXQgaXMgZm9yIFJlYWx0ZWsgODAyLjExYWMgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVycy4gSXQmIzM5O3Mgbm90IGEgdmlydHVhbCBkcml2ZXIgbGlrZSBgbWFjODAyMTFfaHdzaW1gLiBCdXQgY2FuIGl0IGJlIGVtdWxhdGVkIGluIFFFTVU/IFR5cGljYWxseSwgV2ktRmkgZHJpdmVycyBmb3IgcGh5c2ljYWwgUENJZS9VU0IgZGV2aWNlcyBhcmUgcHJvYmxlbWF0aWMgdW5sZXNzIHRoZXJlJiMzOTtzIGVtdWxhdGlvbi4KCk5vdywgdGhlIGludGVyZXN0aW5nIGJpdC4gVGhlIGBydHc4OGAgZHJpdmVyIHN1cHBvcnRzICpib3RoKiBVU0IgYW5kIFBDSWUuIFRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlIFVTQiBzaWRlIGlzIGVtdWxhdGFibGUuIEZvcnR1bmF0ZWx5LCBJIHJlbWVtYmVyIHRoYXQgc3l6a2FsbGVyIGhhcyBgc3l6X3VzYl9jb25uZWN0YCwgd2hpY2ggY291bGQgYmUgYSB3YXkgdG8gZW11bGF0ZSBVU0IgZGV2aWNlcy4gU28sIGlzIHRoZXJlIGEgVVNCIGRyaXZlciBjb21wb25lbnQgaW4gYHJ0dzg4YD8gVGhhdCYjMzk7cyB0aGUga2V5IHRvIG1ha2luZyBhIGRlY2lzaW9uIGhlcmUuIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgdGhlIFVTQiBwYXRoIGlzIHByZXNlbnQgYW5kIGV4cGxvaXRhYmxlIHZpYSBzdGFuZGFyZCBlbXVsYXRpb24gdGVjaG5pcXVlcy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgY29kZSB0byBiZSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA2OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg4Lip1c2ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlPTExMD1ydHc4OF9zZGlvLW9ianNcdFx0XHQ6PSBzZGlvLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtMTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZToxMTI6b2JqLSQoQ09ORklHX1JUVzg4X1VTQilcdFx0JiM0Mzs9IHJ0dzg4X3VzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjExMzpydHc4OF91c2Itb2Jqc1x0XHRcdDo9IHVzYi5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYnUuYz04Nj1NT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgcnR3Xzg4MjJidV9pZF90YWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJidS5jLTg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYnUuYzo4ODpzdGF0aWMgaW50IHJ0dzg4MjJidV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmJ1LmMtODktXHRcdFx0ICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmN1LmM9Mjg9TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHJ0d184ODIyY3VfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYy0yOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmN1LmM6MzA6c3RhdGljIGludCBydHc4ODIyY3VfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jLTMxLVx0XHRcdCAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmM9ODA9c3RhdGljIHZvaWQgcnR3ODgxMmFfcmVhZF9yZmVfdHlwZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODh4eGEuYy0xMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmM6MTI0OnN0YXRpYyB2b2lkIHJ0dzg4eHhhX3JlYWRfdXNiX3R5cGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODh4eGEuYy0xMjUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODh4eGEuYz0yMDA9aW50IHJ0dzg4eHhhX3JlYWRfZWZ1c2Uoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggKmxvZ19tYXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jLTI0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODh4eGEuYzoyNDE6XHRydHc4OHh4YV9yZWFkX3VzYl90eXBlKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmMtMjQyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmM9OTc0PXN0YXRpYyBpbnQgcnR3X3VzYl9pbml0X3J4KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYy05NzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3VzYi5jOjk4MDpcdHJ0d3VzYi1cdTAwM2VyeHdxID0gYWxsb2Nfd29ya3F1ZXVlKFwmIzM0O3J0dzg4X3VzYjogcnggd3FcJiMzNDssIFdRX0JIIHwgV1FfUEVSQ1BVLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYy05ODEtXHRcdFx0XHQgICAgICAgMCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYz0xMDI1PXN0YXRpYyBpbnQgcnR3X3VzYl9pbml0X3R4KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYy0xMDI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYzoxMDMwOlx0cnR3dXNiLVx1MDAzZXR4d3EgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZShcJiMzNDtydHc4OF91c2I6IHR4IHdxXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmMtMTAzMS1cdGlmICghcnR3dXNiLVx1MDAzZXR4d3EpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTg4CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgcnR3ODggRHJpdmVyIEZhbWlseSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgdG8gYmUgdG91Y2hpbmcgYHJ0dzg4MjJjLmNgLiBSaWdodCwgc28gdGhpcyBpcyBwYXJ0IG9mIHRoZSBgcnR3ODhgIGRyaXZlciwgd2hpY2ggSSBrbm93IGFsc28gaGFzIGEgVVNCIGNvbXBvbmVudCwgc3BlY2lmaWNhbGx5IGBydHc4OF91c2JgLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgb3Igbm90IHRoaXMgYHJ0dzg4MjJjYCBpcyBhY3R1YWxseSB1c2VkIGJ5IHRoZSBVU0IgaW1wbGVtZW50YXRpb24uIEl0JiMzOTtzIGEga2V5IHF1ZXN0aW9uIGhlcmUuIFRvIGZpZ3VyZSB0aGlzIG91dCwgSSYjMzk7bSBnb2luZyB0byBuZWVkIHRvIGRpZyBpbnRvIHRoZSBVU0Igc3BlY2lmaWMgZmlsZXMuIEl0JiMzOTtzIHRpbWUgdG8gY2hlY2sgYHJ0dzg4MjJjdS5jYCBvciBzb21ldGhpbmcgYW5hbG9nb3VzLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBhbnN3ZXJzIEkgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4ODIyYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNjMzIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlPTM3PW9iai0kKENPTkZJR19SVFc4OF84ODIyQylcdCYjNDM7PSBydHc4OF84ODIyYy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjM4OnJ0dzg4Xzg4MjJjLW9ianNcdFx0Oj0gcnR3ODgyMmMubyBydHc4ODIyY190YWJsZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZT00MD1vYmotJChDT05GSUdfUlRXODhfODgyMkNFKVx0JiM0Mzs9IHJ0dzg4Xzg4MjJjZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjQxOnJ0dzg4Xzg4MjJjZS1vYmpzXHRcdDo9IHJ0dzg4MjJjZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZT00Mz1vYmotJChDT05GSUdfUlRXODhfODgyMkNTKVx0JiM0Mzs9IHJ0dzg4Xzg4MjJjcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjQ0OnJ0dzg4Xzg4MjJjcy1vYmpzXHRcdDo9IHJ0dzg4MjJjcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZT00Nj1vYmotJChDT05GSUdfUlRXODhfODgyMkNVKVx0JiM0Mzs9IHJ0dzg4Xzg4MjJjdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjQ3OnJ0dzg4Xzg4MjJjdS1vYmpzXHRcdDo9IHJ0dzg4MjJjdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTQ4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMy0jaW5jbHVkZSBcJiMzNDtwaHkuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE0OiNpbmNsdWRlIFwmIzM0O3J0dzg4MjJjLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNTojaW5jbHVkZSBcJiMzNDtydHc4ODIyY190YWJsZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTYtI2luY2x1ZGUgXCYjMzQ7bWFjLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MjU6c3RhdGljIHZvaWQgcnR3ODgyMmNfY29uZmlnX3RyeF9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHR4X3BhdGgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjYtXHRcdFx0XHQgICAgIHU4IHJ4X3BhdGgsIGJvb2wgaXNfdHgyX3BhdGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI4OnN0YXRpYyB2b2lkIHJ0dzg4MjJjZV9lZnVzZV9wYXJzaW5nKHN0cnVjdCBydHdfZWZ1c2UgKmVmdXNlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI5Olx0XHRcdFx0ICAgIHN0cnVjdCBydHc4ODIyY19lZnVzZSAqbWFwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzQ6c3RhdGljIHZvaWQgcnR3ODgyMmN1X2VmdXNlX3BhcnNpbmcoc3RydWN0IHJ0d19lZnVzZSAqZWZ1c2UsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzU6XHRcdFx0XHQgICAgc3RydWN0IHJ0dzg4MjJjX2VmdXNlICptYXApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0MDpzdGF0aWMgdm9pZCBydHc4ODIyY3NfZWZ1c2VfcGFyc2luZyhzdHJ1Y3QgcnR3X2VmdXNlICplZnVzZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0MTpcdFx0XHRcdCAgICBzdHJ1Y3QgcnR3ODgyMmNfZWZ1c2UgKm1hcClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ2OnN0YXRpYyBpbnQgcnR3ODgyMmNfcmVhZF9lZnVzZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCAqbG9nX21hcClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDgtXHRzdHJ1Y3QgcnR3X2VmdXNlICplZnVzZSA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VlZnVzZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0OTpcdHN0cnVjdCBydHc4ODIyY19lZnVzZSAqbWFwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTUwLVx0aW50IGk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NTI6XHRtYXAgPSAoc3RydWN0IHJ0dzg4MjJjX2VmdXNlICopbG9nX21hcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzMtXHRjYXNlIFJUV19IQ0lfVFlQRV9QQ0lFOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc0Olx0XHRydHc4ODIyY2VfZWZ1c2VfcGFyc2luZyhlZnVzZSwgbWFwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03NS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzYtXHRjYXNlIFJUV19IQ0lfVFlQRV9VU0I6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6Nzc6XHRcdHJ0dzg4MjJjdV9lZnVzZV9wYXJzaW5nKGVmdXNlLCBtYXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTc4LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03OS1cdGNhc2UgUlRXX0hDSV9UWVBFX1NESU86XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODA6XHRcdHJ0dzg4MjJjc19lZnVzZV9wYXJzaW5nKGVmdXNlLCBtYXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTgxLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTA6c3RhdGljIHZvaWQgcnR3ODgyMmNfaGVhZGVyX2ZpbGVfaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBib29sIHByZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMDM6c3RhdGljIHZvaWQgcnR3ODgyMmNfYmJfcmVzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTEwOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19iYWNrdXBfcmVnKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTExLVx0XHRcdFx0ICAgIHN0cnVjdCBydHdfYmFja3VwX2luZm8gKmJhY2t1cCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEzOTpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfcmVzdG9yZV9yZWcoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDAtXHRcdFx0XHQgICAgIHN0cnVjdCBydHdfYmFja3VwX2luZm8gKmJhY2t1cCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE1ODpzdGF0aWMgaW50IHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE2NjpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKml2LCBzMzIgKnF2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTY4Olx0c29ydChpdiwgREFDS19TTl84ODIyQywgc2l6ZW9mKHMzMiksIHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyLCBOVUxMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNjk6XHRzb3J0KHF2LCBEQUNLX1NOXzg4MjJDLCBzaXplb2YoczMyKSwgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzIsIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3MC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3MjpzdGF0aWMgczMyIHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICp2ZWMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTczLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE4NDpzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIodTggcGF0aClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xODUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MjAzOnN0YXRpYyB1MzIgcnR3ODgyMmNfZ2V0X3BhdGhfcmVhZF9hZGRyKHU4IHBhdGgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjA0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjIyMjpzdGF0aWMgYm9vbCBydHc4ODIyY19kYWNfaXFfY2hlY2soc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyIHZhbHVlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTIyMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTIzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyMzM6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yMzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MjQ0Olx0XHRpZiAocnR3ODgyMmNfZGFjX2lxX2NoZWNrKHJ0d2RldiwgaXZbaV0pIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI0NTpcdFx0ICAgIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIHF2W2ldKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yNDYtXHRcdFx0aSYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyNTA6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yNTEtXHRcdFx0XHQgICAgICAgczMyICppdiwgczMyICpxdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI4NDpcdFx0cnR3ODgyMmNfZGFjX2lxX3NvcnQocnR3ZGV2LCBpdiwgcXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI4NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI5ODpcdCppX3ZhbHVlID0gcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIGl2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyOTk6XHQqcV92YWx1ZSA9IHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBxdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzAwLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzAyOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMwMy1cdFx0XHRcdCAgICAgdTMyICppX3ZhbHVlLCB1MzIgKnFfdmFsdWUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzozMTQ6XHRydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShydHdkZXYsIGl2LCBxdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzE1Olx0cnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2gocnR3ZGV2LCBpdiwgcXYsIGlfdmFsdWUsIHFfdmFsdWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMxNi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjMxODpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfYmJfc2V0dGluZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMxOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMzMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzozMzQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9hZGMoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMzUtXHRcdFx0XHQgdTggcGF0aCwgdTMyICphZGNfaWMsIHUzMiAqYWRjX3FjKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzQ1Olx0YmFzZV9hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zNDYtXHRzd2l0Y2ggKHBhdGgpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzcxLVx0XHRydHdfd3JpdGUzMihydHdkZXYsIDB4MWMyNCwgMHgwMDAxMDAwMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzcyOlx0XHRydHc4ODIyY19kYWNfY2FsX3JmX21vZGUocnR3ZGV2LCBcdTAwMjZpYywgXHUwMDI2cWMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM3My1cdFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zOTEtXHRcdHJ0d193cml0ZTMyKHJ0d2RldiwgMHgxYzNjLCBwYXRoX3NlbCAmIzQzOyAweDgxMDMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM5MjpcdFx0cnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlKHJ0d2RldiwgXHUwMDI2aWMsIFx1MDAyNnFjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zOTMtXHRcdHJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1JGSyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQxMjpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3N0ZXAxKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDEzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQxODpcdGJhc2VfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIocGF0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDE5Olx0cmVhZF9hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfcmVhZF9hZGRyKHBhdGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQyMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ1NzpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3N0ZXAyKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDU4LVx0XHRcdFx0ICAgdTggcGF0aCwgdTMyICppY19vdXQsIHUzMiAqcWNfb3V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00NjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDYzOlx0YmFzZV9hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00NjQtXHRydHdfd3JpdGUzMl9tYXNrKHJ0d2RldiwgYmFzZV9hZGRyICYjNDM7IDB4YmMsIDB4ZjAwMDAwMDAsIDB4MCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0NzU6XHRydHc4ODIyY19kYWNfY2FsX3JmX21vZGUocnR3ZGV2LCBcdTAwMjZpY19pbiwgXHUwMDI2cWNfaW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ3Ni1cdGljID0gaWNfaW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTUwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo1MDY6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9zdGVwMyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTUwNy1cdFx0XHRcdCAgIHUzMiBhZGNfaWMsIHUzMiBhZGNfcWMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTUxNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo1MTY6XHRiYXNlX2FkZHIgPSBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHBhdGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjUxNzpcdHJlYWRfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcihwYXRoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01MTgtXHRpYyA9ICppY19pbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTU2LVx0cnR3X3dyaXRlMzIocnR3ZGV2LCBiYXNlX2FkZHIgJiM0MzsgMHg2MCwgMHhmMDAwMDAwMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NTU3Olx0cnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlKHJ0d2RldiwgXHUwMDI2aWMsIFx1MDAyNnFjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01NTgtXHRpZiAoaWMgXHUwMDNlPSAweDEwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01ODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NTgzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfc3RlcDQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01ODQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjU4NTpcdHUzMiBiYXNlX2FkZHIgPSBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHBhdGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTU4Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjU5MzpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2JhY2t1cF92ZWMoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01OTQtXHRcdFx0XHRcdHU4IHBhdGgsIHU4IHZlYywgdTMyIHdfYWRkciwgdTMyIHJfYWRkcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjYxMDpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2JhY2t1cF9wYXRoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjExLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjE5LVx0LyogYmFja3VwIEkgdmVjdG9yICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjIwOlx0d19hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKSAmIzQzOyAweGIwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjYyMTpcdHJfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcihwYXRoKSAmIzQzOyAweDEwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjYyMjpcdHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX3ZlYyhydHdkZXYsIHBhdGgsIDAsIHdfYWRkciwgcl9hZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02MjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjI0LVx0LyogYmFja3VwIFEgdmVjdG9yICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjI1Olx0d19hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKSAmIzQzOyAweGIwICYjNDM7IHdfb2ZmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjYyNjpcdHJfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcihwYXRoKSAmIzQzOyAweDEwICYjNDM7IHJfb2ZmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjYyNzpcdHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX3ZlYyhydHdkZXYsIHBhdGgsIDEsIHdfYWRkciwgcl9hZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02MjgtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTYyOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2MzA6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9iYWNrdXBfZGNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjMxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjY1NDpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2JhY2t1cChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTY1NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTY2Ny1cdHJ0d193cml0ZTMyX21hc2socnR3ZGV2LCAweDE4NjAsIDB4ZmMwMDAwMDAsIDB4M2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjY2ODpcdHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX3BhdGgocnR3ZGV2LCBSRl9QQVRIX0EpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTY2OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjcyLVx0cnR3X3dyaXRlMzJfbWFzayhydHdkZXYsIDB4NDE2MCwgMHhmYzAwMDAwMCwgMHgzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjczOlx0cnR3ODgyMmNfZGFjX2NhbF9iYWNrdXBfcGF0aChydHdkZXYsIFJGX1BBVEhfQik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjY3NTpcdHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX2RjayhydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTY3Ni1cdHJ0d193cml0ZTMyX3NldChydHdkZXYsIDB4MTgzMCwgQklUKDMwKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTY4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2ODQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX2RjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTY4NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTcxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3MTQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX3ByZXBhcmUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03MTUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03NDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NzQzOlx0cnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX2RjayhydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTc0NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc2NzpzdGF0aWMgYm9vbCBydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmVfd2FpdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTc2OC1cdFx0XHRcdFx0ICB1MzIgdGFyZ2V0X2FkZHIsIHUzMiB0b2dnbGVfYWRkcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc4NDpzdGF0aWMgYm9vbCBydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmVfcGF0aChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTc4NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTc5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3OTM6XHR3X2kgPSBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHBhdGgpICYjNDM7IDB4YjA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6Nzk0Olx0cl9pID0gcnR3ODgyMmNfZ2V0X3BhdGhfcmVhZF9hZGRyKHBhdGgpICYjNDM7IDB4MDg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6Nzk1Olx0d19xID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKSAmIzQzOyAweGIwICYjNDM7IHdfb2ZmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc5NjpcdHJfcSA9IHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcihwYXRoKSAmIzQzOyAweDA4ICYjNDM7IHJfb2ZmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTc5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3OTg6XHRpZiAoIXJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZV93YWl0KHJ0d2Rldiwgcl9pLCB3X2kgJiM0MzsgMHg4KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03OTktXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjgxMTpcdGlmICghcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX3dhaXQocnR3ZGV2LCByX3EsIHdfcSAmIzQzOyAweDgpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTgxMi1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04MzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODMxOnN0YXRpYyBib29sIF9fcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODMyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo4MzM6XHRpZiAoIXJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZV9wYXRoKHJ0d2RldiwgUkZfUEFUSF9BKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04MzQtXHRcdHJldHVybiBmYWxzZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04MzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODM2Olx0aWYgKCFydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmVfcGF0aChydHdkZXYsIFJGX1BBVEhfQikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODM3LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg0MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo4NDI6c3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODQzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg1ODpcdHJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZV9wcmVwYXJlKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODU5LVx0aWYgKCFjaGVja19od19yZWFkeShydHdkZXYsIDB4MjgwOCwgMHg3ZmZmODAsIDB4ZmZmZikgfHxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg2NTpcdGlmICghX19ydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmUocnR3ZGV2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg2Ni1cdFx0cnR3X2VycihydHdkZXYsIFwmIzM0O2ZhaWxlZCB0byByZXN0b3JlIGRhY2sgdmVjdG9yc1xcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg4Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo4ODM6c3RhdGljIHZvaWQgcnR3ODgyMmNfcmZfZGFjX2NhbChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg4NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo4OTI6XHRpZiAocnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlKHJ0d2RldikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODkzLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg5Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo4OTc6XHRydHc4ODIyY19kYWNfYmFja3VwX3JlZyhydHdkZXYsIGJhY2t1cCwgYmFja3VwX3JmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04OTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODk5Olx0cnR3ODgyMmNfZGFjX2JiX3NldHRpbmcocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTAxLVx0LyogcGF0aC1BICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTAyOlx0cnR3ODgyMmNfZGFjX2NhbF9hZGMocnR3ZGV2LCBSRl9QQVRIX0EsIFx1MDAyNmFkY19pY19hLCBcdTAwMjZhZGNfcWNfYSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTAzLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgMTA7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTA0Olx0XHRydHc4ODIyY19kYWNfY2FsX3N0ZXAxKHJ0d2RldiwgUkZfUEFUSF9BKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MDU6XHRcdHJ0dzg4MjJjX2RhY19jYWxfc3RlcDIocnR3ZGV2LCBSRl9QQVRIX0EsIFx1MDAyNmljLCBcdTAwMjZxYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTA2LVx0XHRpY19hID0gaWM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MDk6XHRcdHJ0dzg4MjJjX2RhY19jYWxfc3RlcDMocnR3ZGV2LCBSRl9QQVRIX0EsIGFkY19pY19hLCBhZGNfcWNfYSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MTAtXHRcdFx0XHQgICAgICAgXHUwMDI2aWMsIFx1MDAyNnFjLCBcdTAwMjZpX2EsIFx1MDAyNnFfYSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkxNC1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MTU6XHRydHc4ODIyY19kYWNfY2FsX3N0ZXA0KHJ0d2RldiwgUkZfUEFUSF9BKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTE3LVx0LyogcGF0aC1CICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTE4Olx0cnR3ODgyMmNfZGFjX2NhbF9hZGMocnR3ZGV2LCBSRl9QQVRIX0IsIFx1MDAyNmFkY19pY19iLCBcdTAwMjZhZGNfcWNfYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTE5LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgMTA7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTIwOlx0XHRydHc4ODIyY19kYWNfY2FsX3N0ZXAxKHJ0d2RldiwgUkZfUEFUSF9CKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MjE6XHRcdHJ0dzg4MjJjX2RhY19jYWxfc3RlcDIocnR3ZGV2LCBSRl9QQVRIX0IsIFx1MDAyNmljLCBcdTAwMjZxYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTIyLVx0XHRpY19iID0gaWM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MjU6XHRcdHJ0dzg4MjJjX2RhY19jYWxfc3RlcDMocnR3ZGV2LCBSRl9QQVRIX0IsIGFkY19pY19iLCBhZGNfcWNfYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MjYtXHRcdFx0XHQgICAgICAgXHUwMDI2aWMsIFx1MDAyNnFjLCBcdTAwMjZpX2IsIFx1MDAyNnFfYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkzMC1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MzE6XHRydHc4ODIyY19kYWNfY2FsX3N0ZXA0KHJ0d2RldiwgUkZfUEFUSF9CKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MzItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkzOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5Mzk6XHRydHc4ODIyY19kYWNfcmVzdG9yZV9yZWcocnR3ZGV2LCBiYWNrdXAsIGJhY2t1cF9yZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTk0MS1cdC8qIGJhY2t1cCByZXN1bHRzIHRvIHJlc3RvcmUsIHNhdmluZyBhIGxvdCBvZiB0aW1lICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTQyOlx0cnR3ODgyMmNfZGFjX2NhbF9iYWNrdXAocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05NDMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTk0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5NTA6c3RhdGljIHZvaWQgcnR3ODgyMmNfcmZfeDJfY2hlY2soc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05NTEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05NjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTY0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3NldF9wb3dlcl90cmltKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHM4IGJiX2dhaW5bMl1bOF0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTY1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjk5NjpzdGF0aWMgdm9pZCBydHc4ODIyY19wb3dlcl90cmltKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTk3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTAyNy1cdGlmIChzZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTAyODpcdFx0cnR3ODgyMmNfc2V0X3Bvd2VyX3RyaW0ocnR3ZGV2LCBiYl9nYWluKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDI5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEwMzM6c3RhdGljIHZvaWQgcnR3ODgyMmNfdGhlcm1hbF90cmltKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTAzNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTA1MTpzdGF0aWMgdm9pZCBydHc4ODIyY19wYV9iaWFzKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTA1Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwNzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTA3MzpzdGF0aWMgdm9pZCBydHc4ODIyY19yZmtfaGFuZHNoYWtlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIGJvb2wgaXNfYmVmb3JlX2spXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTA3NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTExOTpzdGF0aWMgdm9pZCBydHc4ODIyY19yZmtfcG93ZXJfc2F2ZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExMjAtXHRcdFx0XHQgICAgYm9vbCBpc19wb3dlcl9zYXZlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjExMzE6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX2JhY2t1cF9iYl9yZWcoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgY29uc3QgdTMyIHJlZ1tdLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExMzItXHRcdFx0XHRcdCAgdTMyIHJlZ19iYWNrdXBbXSwgdTMyIHJlZ19udW0pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTE0NDpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfcmVsb2FkX2JiX3JlZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExNDUtXHRcdFx0XHRcdCAgY29uc3QgdTMyIHJlZ1tdLCB1MzIgcmVnX2JhY2t1cFtdLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0xMTU3PXN0YXRpYyBib29sIGNoZWNrX3JmX3N0YXR1cyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBzdGF0dXMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTE3MjpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfdHhfcGF1c2Uoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTczLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTE4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMTg4OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19iYl9kcGsoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTg5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTIxOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMjIwOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19hZmVfZHBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTIyMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEyNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTI1NjpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfYWZlX2Rwa19yZXN0b3JlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTI1Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEyODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTI4OTpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfYmJfZHBrX3Jlc3RvcmUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMjkwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTMyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMzI5OnN0YXRpYyBib29sIF9ydHc4ODIyY190eGdhcGtfZ2Fpbl92YWxpZChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgZ2FpbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzMwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTMzNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMzM4OnN0YXRpYyB2b2lkIF9ydHc4ODIyY190eGdhcGtfd3JpdGVfZ2Fpbl9iYl90YWJsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEzMzktXHRcdFx0XHRcdFx0IHU4IGJhbmQsIHU4IHBhdGgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEzNjgtXHRcdHYgPSB0eGdhcGstXHUwMDNlcmYzZl9icFtiYW5kXVtnYWluXVtwYXRoXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMzY5Olx0XHRpZiAoX3J0dzg4MjJjX3R4Z2Fwa19nYWluX3ZhbGlkKHJ0d2RldiwgdikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzcwLVx0XHRcdGlmICghY2hlY2tfdHhnYWluKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEzOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTM5MjpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfd3JpdGVfZ2Fpbl9iYl90YWJsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEzOTMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDAwLVx0XHRmb3IgKHBhdGggPSAwOyBwYXRoIFx1MDAzYyBydHdkZXYtXHUwMDNlaGFsLnJmX3BhdGhfbnVtOyBwYXRoJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE0MDE6XHRcdFx0X3J0dzg4MjJjX3R4Z2Fwa193cml0ZV9nYWluX2JiX3RhYmxlKHJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDAyLVx0XHRcdFx0XHRcdFx0ICAgICBiYW5kLCBwYXRoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNDA3OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19yZWFkX29mZnNldChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE0MDgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE0ODQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX2NhbGN1bGF0ZV9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQ5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNDk1Olx0cnR3ODgyMmNfdHhnYXBrX2JhY2t1cF9iYl9yZWcocnR3ZGV2LCBiYl9yZWcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQ5Ni1cdFx0XHRcdCAgICAgIHJlZ19iYWNrdXAsIEFSUkFZX1NJWkUoYmJfcmVnKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1MTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTUxNzpcdFx0cnR3ODgyMmNfdHhnYXBrX3JlYWRfb2Zmc2V0KHJ0d2RldiwgcGF0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTUxOC1cdFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLCBcJiMzNDs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTU1MTpcdFx0cnR3ODgyMmNfdHhnYXBrX3JlYWRfb2Zmc2V0KHJ0d2RldiwgcGF0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU1Mi1cdFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLCBcJiMzNDs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU1My1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNTU0Olx0cnR3ODgyMmNfdHhnYXBrX3JlbG9hZF9iYl9yZWcocnR3ZGV2LCBiYl9yZWcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU1NS1cdFx0XHRcdCAgICAgIHJlZ19iYWNrdXAsIEFSUkFZX1NJWkUoYmJfcmVnKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTU1ODpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfcmZfcmVzdG9yZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE1NzA6c3RhdGljIHUzMiBydHc4ODIyY190eGdhcGtfY2FsX2dhaW4oc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyIGdhaW4sIHM4IG9mZnNldClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTcxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNTc2Olx0aWYgKF9ydHc4ODIyY190eGdhcGtfZ2Fpbl92YWxpZChydHdkZXYsIGdhaW4pKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU3Ny1cdFx0bmV3X2dhaW4gPSBnYWluO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE1OTQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX3dyaXRlX3R4X2dhaW4oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTk1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTYyNC1cdFx0XHRcdHYgPSB0eGdhcGstXHUwMDNlcmYzZl9icFtiYW5kXVtqXVtwYXRoXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNjI1Olx0XHRcdFx0aWYgKF9ydHc4ODIyY190eGdhcGtfZ2Fpbl92YWxpZChydHdkZXYsIHYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2MjYtXHRcdFx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjMyLVx0XHRcdHYgPSB0eGdhcGstXHUwMDNlcmYzZl9icFtiYW5kXVtpXVtwYXRoXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNjMzOlx0XHRcdGlmIChfcnR3ODgyMmNfdHhnYXBrX2dhaW5fdmFsaWQocnR3ZGV2LCB2KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2MzQtXHRcdFx0XHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2NDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTY1MDpcdFx0XHR0bXBfM2YgPSBydHc4ODIyY190eGdhcGtfY2FsX2dhaW4ocnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2NTEtXHRcdFx0XHRcdFx0XHQgIHR4Z2Fway1cdTAwM2VyZjNmX2JwW2JhbmRdW2ldW3BhdGhdLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE2NjQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX3NhdmVfYWxsX3R4X2dhaW5fdGFibGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjY1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTY4MS1cdFx0XHRcJiMzNDtbVFhHQVBLXSBBbHJlYWR5IFJlYWQgdHhnYXBrLVx1MDAzZXJlYWRfdHhnYWluIHJldHVybiEhIVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTY4MjpcdFx0cnR3ODgyMmNfdHhnYXBrX3dyaXRlX2dhaW5fYmJfdGFibGUocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjgzLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3MTgtXHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTcxOTpcdHJ0dzg4MjJjX3R4Z2Fwa193cml0ZV9nYWluX2JiX3RhYmxlKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTcyMC1cdHR4Z2Fway1cdTAwM2VyZWFkX3R4Z2FpbiA9IDE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3MjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTcyMzpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGsoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzI0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTczMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzMyOlx0cnR3ODgyMmNfdHhnYXBrX3NhdmVfYWxsX3R4X2dhaW5fdGFibGUocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzMzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NDc6XHRydHc4ODIyY190eGdhcGtfYmFja3VwX2JiX3JlZyhydHdkZXYsIGJiX3JlZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzQ4LVx0XHRcdFx0ICAgICAgYmJfcmVnX2JhY2t1cCwgQVJSQVlfU0laRShiYl9yZWcpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzQ5Olx0cnR3ODgyMmNfdHhnYXBrX3R4X3BhdXNlKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc1MC1cdGZvciAocGF0aCA9IDA7IHBhdGggXHUwMDNjIHJ0d2Rldi1cdTAwM2VoYWwucmZfcGF0aF9udW07IHBhdGgmIzQzOyYjNDM7KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3NTItXHRcdFx0XHRcdCAgICAgIFJGX0NGR0NILCBSRlJFR19NQVNLKSBcdTAwMjYgTUFTS0JZVEUwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NTM6XHRcdHJ0dzg4MjJjX3R4Z2Fwa19iYl9kcGsocnR3ZGV2LCBwYXRoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzU0Olx0XHRydHc4ODIyY190eGdhcGtfYWZlX2RwayhydHdkZXYsIHBhdGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NTU6XHRcdHJ0dzg4MjJjX3R4Z2Fwa19jYWxjdWxhdGVfb2Zmc2V0KHJ0d2RldiwgcGF0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc1NjpcdFx0cnR3ODgyMmNfdHhnYXBrX3JmX3Jlc3RvcmUocnR3ZGV2LCBwYXRoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzU3Olx0XHRydHc4ODIyY190eGdhcGtfYWZlX2Rwa19yZXN0b3JlKHJ0d2RldiwgcGF0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc1ODpcdFx0cnR3ODgyMmNfdHhnYXBrX2JiX2Rwa19yZXN0b3JlKHJ0d2RldiwgcGF0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc1OS1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzYwOlx0cnR3ODgyMmNfdHhnYXBrX3dyaXRlX3R4X2dhaW4ocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzYxOlx0cnR3ODgyMmNfdHhnYXBrX3JlbG9hZF9iYl9yZWcocnR3ZGV2LCBiYl9yZWcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc2Mi1cdFx0XHRcdCAgICAgIGJiX3JlZ19iYWNrdXAsIEFSUkFZX1NJWkUoYmJfcmVnKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3NjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc2NTpzdGF0aWMgdm9pZCBydHc4ODIyY19kb19nYXBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc2Ni17XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTE4NgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDIwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgcnR3ODggRHJpdmVyIGFuZCBVU0IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSYjMzk7bSBzZWVpbmcgdGhhdCB0aGUgYHJ0dzg4YCBkcml2ZXIgaGFzIGEgVVNCIGNvdW50ZXJwYXJ0LCBgcnR3ODhfdXNiYC4gVGhlIGBydHc4ODIyY2AgY29kZSwgc3BlY2lmaWNhbGx5LCBzZWVtcyB0byBiZSB1dGlsaXplZCBieSB0aGUgVVNCIHZhcmlhbnQsIGBydHc4ODIyY3VgLiBOb3csIHRoZSBjcnVjaWFsIHBhcnQgaGVyZSBpcyB0aGUgY29ubmVjdGlvbiB3aXRoIHN5emthbGxlciBhbmQgaXRzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyB0aHJvdWdoIGBzeXpfdXNiX2Nvbm5lY3RgLiBUaGlzIG1lYW5zLCBhbmQgdGhpcyBpcyBpbXBvcnRhbnQsIHRoYXQgSSBjYW4gcG90ZW50aWFsbHkgcmVhY2ggYW5kIGludGVyYWN0IHdpdGggdGhpcyBkcml2ZXIgd2l0aGluIGEgdmlydHVhbGl6ZWQgUUVNVSBlbnZpcm9ubWVudCwgd2hpY2ggaXMgYSBzaWduaWZpY2FudCBhZHZhbnRhZ2UgZm9yIG15IHJlc2VhcmNoLgoKVGhlIGtleSBxdWVzdGlvbiBpbiBteSBtaW5kIGlzIHdoZXRoZXIgYHJ0dzg4YCAqcmVxdWlyZXMqIHBoeXNpY2FsIGhhcmR3YXJlLCBvciBpZiBpdHMgVVNCLWNvbm5lY3RlZCBjb21wb25lbnQsIGBydHc4ODIyY3VgLCBjYW4gYmUgKmZ1bGx5KiBlbXVsYXRlZCB0aHJvdWdoIFVTQiBnYWRnZXQgZW11bGF0aW9uLiBzeXprYWxsZXIsIGJlaW5nIHRoZSBwb3dlcmZ1bCB0b29sIHRoYXQgaXQgaXMsIGNhbiBpbmplY3QgZGVzY3JpcHRvcnMgYW5kIHJlc3BvbnNlcywgYmFzaWNhbGx5IG1pbWlja2luZyBhIHJlYWwgVVNCIGRldmljZS4KCklmIGBydHc4ODIyY3VgICppcyogaW5kZWVkIGEgVVNCIGRyaXZlciwgaXQgc2hvdWxkIHJlZ2lzdGVyIGl0c2VsZiB3aXRoIHRoZSBrZXJuZWwgdmlhIGB1c2JfcmVnaXN0ZXJgLiBUaGlzIGlzIGEgY3J1Y2lhbCBjaGVjay4gSWYgbXkgc3l6a2FsbGVyLWVtdWxhdGVkIFVTQiBkZXZpY2UgcHJlc2VudHMgdGhlIGNvcnJlY3QgdmVuZG9yL3Byb2R1Y3QgSUQsIHRoZW4gdGhlIGtlcm5lbCAqc2hvdWxkKiBhdHRlbXB0IHRvIHByb2JlIGBydHc4ODIyY3VfcHJvYmVgLgoKVGhlcmVmb3JlLCBteSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgKm11c3QqIGV4YW1pbmUgdGhlIGNvZGUgZm9yIGBydHc4ODIyY3VfcHJvYmVgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSByZWFsIG1hZ2ljIGxpa2VseSBoYXBwZW5zLCBhbmQgd2hlcmUgYW55IHZ1bG5lcmFiaWxpdGllcyBtaWdodCByZXZlYWwgdGhlbXNlbHZlcy4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgcHJvYmUgZnVuY3Rpb24gZG9lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4ODIyY3VfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jPTI4PU1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBydHdfODgyMmN1X2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmN1LmMtMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jOjMwOnN0YXRpYyBpbnQgcnR3ODgyMmN1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYy0zMS1cdFx0XHQgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYz0zNj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4MjJjdV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYy0zOC1cdC5pZF90YWJsZSA9IHJ0d184ODIyY3VfaWRfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jOjM5Olx0LnByb2JlID0gcnR3ODgyMmN1X3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYy00MC1cdC5kaXNjb25uZWN0ID0gcnR3X3VzYl9kaXNjb25uZWN0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA2OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MTQzCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgcnR3ODgyMmN1X3Byb2JlYCBmdW5jdGlvbi4gSSYjMzk7bSBnb2luZyB0byB3YWxrIHRocm91Z2ggdGhpcyBsaW5lIGJ5IGxpbmUgYW5kIHJlYWxseSB1bmRlcnN0YW5kIHdoYXQgdGhpcyB0aGluZyBpcyBkb2luZy4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIHJvbGUuIEkmIzM5O20gZm9jdXNpbmcgaW4sIHJlYWxseSwgb24gd2hhdCBpdCBkb2VzIGFuZCB3aHkgaXQgZG9lcyBpdC4gV2hhdCBhcmUgaXRzIGRlcGVuZGVuY2llcz8gV2hhdCBhcmUgdGhlIHBvdGVudGlhbCBmYWlsdXJlIHBvaW50cz8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgdGhhdCBJJiMzOTtsbCBuZWVkIHRvIGtub3cgdGhpcyBzdHVmZiBjb2xkLCBlc3BlY2lhbGx5IGlmIEkgaGF2ZSB0byB0cm91Ymxlc2hvb3QgaXQgbGF0ZXIuIFRoaXMgaXMgaW1wb3J0YW50LiBMZXQmIzM5O3MgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdGF0aWMgaW50IHJ0dzg4MjJjdV9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmN1LmM9Mjg9TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHJ0d184ODIyY3VfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYy0yOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmN1LmM6MzA6c3RhdGljIGludCBydHc4ODIyY3VfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jLTMxLVx0XHRcdCAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY1MDAKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhpbmtpbmcsIGV4cHJlc3NlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaXZpbmcgaW50byB0aGUgRHJpdmVyIENvZGUqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgc3BlY2lmaWMgcGllY2Ugb2YgdGhlIGBydHc4ODIyY3UuY2AgZHJpdmVyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGp1bXAgcmlnaHQgaW4gYW5kIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZyBhcm91bmQgbGluZSAzMC4gVGhhdCYjMzk7cyB1c3VhbGx5IGEgZ29vZCBzdGFydGluZyBwb2ludC4gSXQmIzM5O3Mgb2Z0ZW4gd2hlcmUgdGhlIGNvcmUgZnVuY3Rpb24gZGVmaW5pdGlvbiBvciBhIGNydWNpYWwgaW5pdGlhbGl6YXRpb24gYmxvY2sgcmVzaWRlcywgZ2l2aW5nIG1lIGEgc29saWQgY29udGV4dCBmb3IgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljLiBJJiMzOTttIGhvcGluZyB0byBxdWlja2x5IGdyYXNwIHRoZSBoaWdoLWxldmVsIHB1cnBvc2Ugb2YgdGhhdCBzZWN0aW9uIGFuZCB0aGVuIGRyaWxsIGRvd24gaW50byBzcGVjaWZpYyBkZXRhaWxzIGFzIG5lZWRlZC4gTGV0JiMzOTtzIHNlZSB3aGF0IHNlY3JldHMgaXQgaG9sZHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA2OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjA6XHRcdHsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oUlRXX1VTQl9WRU5ET1JfSURfUkVBTFRFSywgMHhkODJiLCAweGZmLCAweGZmLCAweGZmKSxcbiAgMjE6XHRcdCAgLmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KVx1MDAyNihydHc4ODIyY19od19zcGVjKSB9LFxuICAyMjpcdFx0eyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDEzYjEsIDB4MDA0MywgMHhmZiwgMHhmZiwgMHhmZiksXG4gIDIzOlx0XHQgIC5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdClcdTAwMjYocnR3ODgyMmNfaHdfc3BlYykgfSwgLyogQWxwaGEgLSBBbHBoYSAqL1xuICAyNDpcdFx0eyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDIwMDEsIDB4MzMyOSwgMHhmZiwgMHhmZiwgMHhmZiksXG4gIDI1Olx0XHQgIC5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdClcdTAwMjYocnR3ODgyMmNfaHdfc3BlYykgfSwgLyogRC1MaW5rIEFDMTNVIHJldi4gQTEgKi9cbiAgMjY6XHRcdHt9LFxuICAyNzpcdH07XG4gIDI4Olx0TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHJ0d184ODIyY3VfaWRfdGFibGUpO1xuICAyOTpcdFxuICAzMDpcdHN0YXRpYyBpbnQgcnR3ODgyMmN1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuICAzMTpcdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbiAgMzI6XHR7XG4gIDMzOlx0XHRyZXR1cm4gcnR3X3VzYl9wcm9iZShpbnRmLCBpZCk7XG4gIDM0Olx0fVxuICAzNTpcdFxuICAzNjpcdHN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODgyMmN1X2RyaXZlciA9IHtcbiAgMzc6XHRcdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXG4gIDM4Olx0XHQuaWRfdGFibGUgPSBydHdfODgyMmN1X2lkX3RhYmxlLFxuICAzOTpcdFx0LnByb2JlID0gcnR3ODgyMmN1X3Byb2JlLFxuICA0MDpcdFx0LmRpc2Nvbm5lY3QgPSBydHdfdXNiX2Rpc2Nvbm5lY3QsXG4gIDQxOlx0fTtcbiAgNDI6XHRtb2R1bGVfdXNiX2RyaXZlcihydHdfODgyMmN1X2RyaXZlcik7XG4gIDQzOlx0XG4gIDQ0Olx0TU9EVUxFX0FVVEhPUihcJiMzNDtSZWFsdGVrIENvcnBvcmF0aW9uXCYjMzQ7KTtcbiAgNDU6XHRNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7UmVhbHRlayA4MDIuMTFhYyB3aXJlbGVzcyA4ODIyY3UgZHJpdmVyXCYjMzQ7KTtcbiAgNDY6XHRNT0RVTEVfTElDRU5TRShcJiMzNDtEdWFsIEJTRC9HUExcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzMwNQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDI1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipUcmFjaW5nIHRoZSBVU0IgUHJvYmUgYW5kIENhbGlicmF0aW9uIEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyB0aGUgdHJhY2UgYmVnaW5zIHdpdGggYSBjYWxsIHRvIGBydHdfdXNiX3Byb2JlYC4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IHN0ZW1taW5nIGZyb20gdGhpcyBmdW5jdGlvbiwgcGFydGljdWxhcmx5IHRvIHNlZSBpZiBpdCB1bHRpbWF0ZWx5IHJlYWNoZXMgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYCBvciBzb21ldGhpbmcgZnVuY3Rpb25hbGx5IHNpbWlsYXIuIFRoaXMgaXMgd2hlcmUgdGhlIHBhdGNoIHRvdWNoZXMgdGhpbmdzLgoKVGhlIHBhdGNoIGl0c2VsZiBzZWVtcyB0byBiZSBoZWF2aWx5IGZvY3VzZWQgb24gdGhlIERBQyBjYWxpYnJhdGlvbiBwcm9jZXNzLCBhcyBpdCBtb2RpZmllcyBzZXZlcmFsIGtleSBmdW5jdGlvbnM6IGBydHc4ODIyY19kYWNfaXFfc29ydGAsIGBydHc4ODIyY19kYWNfaXFfb2Zmc2V0YCwgYHJ0dzg4MjJjX2RhY19pcV9jaGVja2AsIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAsIGBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaGAsIGFuZCBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYC4gVGhlc2UgYXBwZWFyIHRvIGJlIGludGltYXRlbHkgaW52b2x2ZWQgaW4gYSBjb21wbGV4IGNhbGlicmF0aW9uIHNlcXVlbmNlLgoKTG9va2luZyBhdCB0aGUgY2FsbCBncmFwaCwgaXQmIzM5O3MgY2xlYXIgdGhhdCBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBpcyB0aGUgY2VudHJhbCBmdW5jdGlvbiBkcml2aW5nIHRoZXNlLiBJdCBzZWVtcyB0byBiZSBjYWxsZWQgZnJvbSBgcnR3ODgyMmNfZGFjX2NhbF9zdGVwMmAgYW5kIGBydHc4ODIyY19kYWNfY2FsX3N0ZXAzYCwgd2hpY2gsIGluIHR1cm4sIGFyZSBjYWxsZWQgZnJvbSBgcnR3ODgyMmNfcmZfZGFjX2NhbGAuIE5vdywgSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnVydGhlcjogd2hlcmUgaXMgYHJ0dzg4MjJjX3JmX2RhY19jYWxgIGludm9rZWQ/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc3RhY2sgZnJvbSB0aGUgVVNCIHByb2JlIHRvIHRoaXMgcG9pbnQgaXMgY3J1Y2lhbCB0byBzZWVpbmcgdGhlIGJpZ2dlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4ODIyY19yZl9kYWNfY2FsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTg0Mj1zdGF0aWMgYm9vbCBydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmUoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg4MzpzdGF0aWMgdm9pZCBydHc4ODIyY19yZl9kYWNfY2FsKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODg0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9MTc3OD1zdGF0aWMgdm9pZCBydHc4ODIyY19yZl9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc3OS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc4MDpcdHJ0dzg4MjJjX3JmX2RhY19jYWwocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzgxLVx0cnR3ODgyMmNfcmZfeDJfY2hlY2socnR3ZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgzMjgKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIHF1ZXN0aW9uOgoKKipUcmFjaW5nIHRoZSBDYWxsIE9yaWdpbiBvZiBgcnR3ODgyMmNfcmZfaW5pdGAqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYHJ0dzg4MjJjX3JmX2luaXRgIGlzIGJlaW5nIGNhbGxlZCBmcm9tLiBUaGlzIGZ1bmN0aW9uIGlzIHByZXR0eSBjcnVjaWFsIGluIHRoZSBSZWFsdGVrIFdpRmkgZHJpdmVyIHN0YWNrLCBlc3BlY2lhbGx5IGZvciB0aGUgODgyMkMgY2hpcCwgc28ga25vd2luZyBpdHMgZW50cnkgcG9pbnQgaXMgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGFuZCBwb3RlbnRpYWwgZGVidWdnaW5nLiBJJiMzOTtsbCBuZWVkIHRvIHJldHJhY2UgdGhlIGNvZGUgZXhlY3V0aW9uIHBhdGguIEkmIzM5O20gYXNzdW1pbmcgdGhhdCBpdCYjMzk7cyBwYXJ0IG9mIHRoZSBnZW5lcmFsIGRyaXZlciBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4KCkZpcnN0LCBJJiMzOTtkIHdhbnQgdG8gdXNlIGEgdG9vbCBsaWtlIGBncmVwYCAob3IgbXkgSURFJiMzOTtzIHNlYXJjaCBmdW5jdGlvbikgdG8gc2VhcmNoIHRoZSBkcml2ZXIgc291cmNlIHRyZWUgZm9yIGFsbCBpbnN0YW5jZXMgd2hlcmUgYHJ0dzg4MjJjX3JmX2luaXRgIGlzIGNhbGxlZC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGxpc3Qgb2YgcG90ZW50aWFsIGNhbGwgc2l0ZXMuIFRoZW4sIEkmIzM5O2QgbmVlZCB0byBleGFtaW5lIHRob3NlIHNpdGVzLCBsb29raW5nIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlIGNhbGwgYW5kIHdoaWNoIGZ1bmN0aW9ucyBhcmUgY2FsbGluZyBpdC4gSSYjMzk7ZCBsb29rIGZvciBmdW5jdGlvbiBwcm90b3R5cGVzIG9yIGRlZmluaXRpb25zIGFzc29jaWF0ZWQgd2l0aCBpbml0aWFsaXphdGlvbiwgcHJvYmluZyBvciBkZXZpY2UgZGV0ZWN0aW9uLgoKSSYjMzk7ZCBhbHNvIGNvbnNpZGVyIHRoZSBicm9hZGVyIGRyaXZlciBzdHJ1Y3R1cmUuIERvZXMgdGhpcyBkcml2ZXIgZm9sbG93IGEgc3RhbmRhcmQgcHJvYmUvYXR0YWNoL2RldGFjaCBtb2RlbD8gSWYgc28sIGBydHc4ODIyY19yZl9pbml0YCBsaWtlbHkgZmFsbHMgc29tZXdoZXJlIHdpdGhpbiB0aGUgJiMzNDthdHRhY2gmIzM0OyBwaGFzZSwgYWZ0ZXIgdGhlIGhhcmR3YXJlIGlzIHJlY29nbml6ZWQuIEdpdmVuIHRoYXQsIEkmIzM5O2QgdHJhY2UgYmFjayBmcm9tIGFueSBhdHRhY2ggb3IgaW5pdGlhbGl6YXRpb24gcmVsYXRlZCBmdW5jdGlvbnMsIGxvb2tpbmcgdG8gc2VlIHdoaWNoIGZ1bmN0aW9ucyBldmVudHVhbGx5IGVuZCB1cCBjYWxsaW5nIGBydHc4ODIyY19yZl9pbml0YC4KCkJhc2ljYWxseSwgSSYjMzk7bSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBvYnZpb3VzIGFuZCB3b3JrIG15IHdheSBvdXR3YXJkLCBmb2xsb3dpbmcgdGhlIGZ1bmN0aW9uIGNhbGwgZ3JhcGguIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgYXJndW1lbnRzIGJlaW5nIHBhc3NlZCB0byBgcnR3ODgyMmNfcmZfaW5pdGAgYXMgd2VsbCwgYXMgdGhvc2Ugd291bGQgcHJvdmlkZSBoaW50cyBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIHN5c3RlbSBhdCB0aGUgcG9pbnQgb2YgdGhlIGNhbGwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA2OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg4MjJjX3JmX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9MTc2NT1zdGF0aWMgdm9pZCBydHc4ODIyY19kb19nYXBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3NzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc3ODpzdGF0aWMgdm9pZCBydHc4ODIyY19yZl9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc3OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTE4MDM9c3RhdGljIHZvaWQgcnR3ODgyMmNfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xODQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE4NDk6XHRydHc4ODIyY19yZl9pbml0KHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTg1MC1cdHJ0dzg4MjJjX3B3cnRyYWNrX2luaXQocnR3ZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkxNjcKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIHF1ZXN0aW9uOgoKKipQaW5wb2ludGluZyB0aGUgT3JpZ2luIG9mIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCBmcm9tLiBUaGF0JiMzOTtzIHRoZSBjb3JlIHF1ZXN0aW9uLCByaWdodD8gSWRlbnRpZnlpbmcgdGhlIGNhbGwgc2l0ZXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgY29udGV4dCwgdGhlIGRhdGEgaXQmIzM5O3Mgb3BlcmF0aW5nIG9uLCBhbmQgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuIEtub3dpbmcgdGhlIGNhbGxlciBhbHNvIGhlbHBzIGluIGRlYnVnZ2luZyBhbmQgbW9kaWZpY2F0aW9uLCBhcyBJIGNhbiB0cmFjZSB0aGUgY2FsbCBzdGFjayB0byBzZWUgdGhlIHNlcXVlbmNlIG9mIGV2ZW50cyBsZWFkaW5nIHVwIHRvIGl0cyBleGVjdXRpb24uIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bGwgbmVlZCB0byB1c2Ugc29tZSB0b29saW5nLCBtb3N0IGxpa2VseSBhIGNvZGUgc2VhcmNoIG9yIHN0YXRpYyBhbmFseXNpcyB0b29sLiBJJiMzOTtkIHR5cGljYWxseSBzdGFydCBieSBncmVwcGluZyB0aGUgY29kZWJhc2UgZm9yIHRoZSBmdW5jdGlvbiBuYW1lIGRpcmVjdGx5LiBGcm9tIHRoZXJlLCBJJiMzOTtkIGV4YW1pbmUgdGhlIGNhbGwgc2l0ZXMuIEkgd2lsbCBiZSBsb29raW5nIGZvciBjb21tb24gcGF0dGVybnMuIElzIGl0IGNhbGxlZCB3aXRoaW4gYSBzcGVjaWZpYyBkcml2ZXIgY29tcG9uZW50LCBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIG9yIGluIHJlc3BvbnNlIHRvIHNvbWUga2luZCBvZiBldmVudD8gVGhlIGNvbnRleHQgd2lsbCBiZSBrZXkuIE9uY2UgSSBsb2NhdGUgdGhlIGNhbGxzLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiBvcmRlciB0byB0cnVseSB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgZm9yIHRoZSBmdW5jdGlvbiBjYWxsLCBhbmQgaG93IHRoaXMgZnVuY3Rpb24gY2FsbCBpcyByZWxhdGVkIHRvIG90aGVyIHJvdXRpbmVzIGluIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4ODIyY19waHlfc2V0X3BhcmFtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTE3ODc9c3RhdGljIHZvaWQgcnR3ODgyMmNfcHdydHJhY2tfaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xODAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE4MDM6c3RhdGljIHZvaWQgcnR3ODgyMmNfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE4MDQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz00ODk5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MjJjX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDkwMS1cdC5wb3dlcl9vZmZcdFx0PSBydHdfcG93ZXJfb2ZmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ5MDI6XHQucGh5X3NldF9wYXJhbVx0XHQ9IHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDkwMy1cdC5yZWFkX2VmdXNlXHRcdD0gcnR3ODgyMmNfcmVhZF9lZnVzZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk4ODEKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipEaWdnaW5nIGludG8gUEhZIFBhcmFtZXRlciBTZXR0aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgcGh5X3NldF9wYXJhbWAuIFRoaXMgaXMgYSBjaGlwIG9wZXJhdGlvbiwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgYSBwcmV0dHkgZnVuZGFtZW50YWwgZnVuY3Rpb24gZGVhbGluZyB3aXRoIHRoZSBwaHlzaWNhbCBsYXllciBvZiB0aGUgY29tbXVuaWNhdGlvbiBpbnRlcmZhY2UuIFRoZSBxdWVzdGlvbiBub3cgaXM6IHdoZXJlIGlzIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24gYWN0dWFsbHkgYmVpbmcgKnVzZWQqPyBJIG5lZWQgdG8gdHJhY2UgaXRzIGNhbGxzIHRvIHVuZGVyc3RhbmQgaG93IHBhcmFtZXRlcnMgYXJlIGJlaW5nIHNldCwgd2hhdCBjb250ZXh0cyB0cmlnZ2VyIHBhcmFtZXRlciBjaGFuZ2VzLCBhbmQgdWx0aW1hdGVseSwgaG93IHRoaXMgaW1wYWN0cyB0aGUgb3ZlcmFsbCBzeXN0ZW0gYmVoYXZpb3IuIEtub3dpbmcgd2hlcmUgYHBoeV9zZXRfcGFyYW1gIGlzIGNhbGxlZCB3aWxsIGdpdmUgbWUgaW5zaWdodHMgaW50byBpdHMgcm9sZSB3aXRoaW4gdGhlIHdpZGVyIHNvZnR3YXJlIGFyY2hpdGVjdHVyZS4gVGltZSB0byBzdGFydCBkaWdnaW5nIHRocm91Z2ggdGhlIGNvZGViYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfc2V0X3BhcmFtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MTM3ND1pbnQgcnR3X3Bvd2VyX29uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTQxMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE0MTM6XHRjaGlwLVx1MDAzZW9wcy1cdTAwM2VwaHlfc2V0X3BhcmFtKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNDE0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oPTg2Mj1zdHJ1Y3QgcnR3X2NoaXBfb3BzIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaC04NjktXHRpbnQgKCpyZWFkX2VmdXNlKShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCAqbWFwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oOjg3MDpcdHZvaWQgKCpwaHlfc2V0X3BhcmFtKShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oLTg3MS1cdHZvaWQgKCpzZXRfY2hhbm5lbCkoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggY2hhbm5lbCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM9NTUzPXN0YXRpYyB2b2lkIHJ0dzg3MDNiX3B3cnRyYWNrX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmMtNTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jOjU3ODpzdGF0aWMgdm9pZCBydHc4NzAzYl9waHlfc2V0X3BhcmFtKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmMtNTc5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM9MTgzNj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4NzAzYl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jLTE4NDMtXHQucmVhZF9lZnVzZVx0XHQ9IHJ0dzg3MDNiX3JlYWRfZWZ1c2UsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM6MTg0NDpcdC5waHlfc2V0X3BhcmFtXHRcdD0gcnR3ODcwM2JfcGh5X3NldF9wYXJhbSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYy0xODQ1LVx0LnNldF9jaGFubmVsXHRcdD0gcnR3ODcwM2Jfc2V0X2NoYW5uZWwsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jPTY3PXN0YXRpYyB2b2lkIHJ0dzg3MjNkX3B3cnRyYWNrX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmMtODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmM6ODU6c3RhdGljIHZvaWQgcnR3ODcyM2RfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jLTg2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmM9MTM5Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4NzIzZF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jLTEzOTQtXHQucG93ZXJfb2ZmXHRcdD0gcnR3X3Bvd2VyX29mZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYzoxMzk1Olx0LnBoeV9zZXRfcGFyYW1cdFx0PSBydHc4NzIzZF9waHlfc2V0X3BhcmFtLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jLTEzOTYtXHQucmVhZF9lZnVzZVx0XHQ9IHJ0dzg3MjN4X3JlYWRfZWZ1c2UsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYS5jPTkxND1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODEyYV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYS5jLTkxNi1cdC5wb3dlcl9vZmZcdFx0PSBydHc4ODEyYV9wb3dlcl9vZmYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhLmM6OTE3Olx0LnBoeV9zZXRfcGFyYW1cdFx0PSBOVUxMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYS5jLTkxOC1cdC5yZWFkX2VmdXNlXHRcdD0gcnR3ODh4eGFfcmVhZF9lZnVzZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmM9MjY1PXN0YXRpYyB2b2lkIHJ0dzg4MTRhX2NvbmZpZ19jY2tfcnhfYW50ZW5uYV9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jLTI4Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYzoyODM6c3RhdGljIHZvaWQgcnR3ODgxNGFfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jLTI4NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jPTIwNTA9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgxNGFfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYy0yMDUyLVx0LnBvd2VyX29mZlx0XHQ9IHJ0d19wb3dlcl9vZmYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmM6MjA1MzpcdC5waHlfc2V0X3BhcmFtXHRcdD0gcnR3ODgxNGFfcGh5X3NldF9wYXJhbSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYy0yMDU0LVx0LnJlYWRfZWZ1c2VcdFx0PSBydHc4ODE0YV9yZWFkX2VmdXNlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYz04NjA9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgyMWFfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYy04NjItXHQucG93ZXJfb2ZmXHRcdD0gcnR3ODgyMWFfcG93ZXJfb2ZmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYS5jOjg2MzpcdC5waHlfc2V0X3BhcmFtXHRcdD0gTlVMTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYy04NjQtXHQucmVhZF9lZnVzZVx0XHQ9IHJ0dzg4eHhhX3JlYWRfZWZ1c2UsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jPTE1MT1zdGF0aWMgdm9pZCBydHc4ODIxY19waHlfYmZfaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYy0xNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmM6MTU4OnN0YXRpYyB2b2lkIHJ0dzg4MjFjX3BoeV9zZXRfcGFyYW0oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYy0xNTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYz0xNjU4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MjFjX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmMtMTY2MC1cdC5wb3dlcl9vZmZcdFx0PSBydHdfcG93ZXJfb2ZmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jOjE2NjE6XHQucGh5X3NldF9wYXJhbVx0XHQ9IHJ0dzg4MjFjX3BoeV9zZXRfcGFyYW0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmMtMTY2Mi1cdC5yZWFkX2VmdXNlXHRcdD0gcnR3ODgyMWNfcmVhZF9lZnVzZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmM9MTQ1PXN0YXRpYyB2b2lkIHJ0dzg4MjJiX3BoeV9iZl9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jLTE1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYzoxNTI6c3RhdGljIHZvaWQgcnR3ODgyMmJfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jLTE1My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jPTIxNTA9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgyMmJfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYy0yMTUyLVx0LnBvd2VyX29mZlx0XHQ9IHJ0d19wb3dlcl9vZmYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmM6MjE1MzpcdC5waHlfc2V0X3BhcmFtXHRcdD0gcnR3ODgyMmJfcGh5X3NldF9wYXJhbSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYy0yMTU0LVx0LnJlYWRfZWZ1c2VcdFx0PSBydHc4ODIyYl9yZWFkX2VmdXNlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0xNzg3PXN0YXRpYyB2b2lkIHJ0dzg4MjJjX3B3cnRyYWNrX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTgwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxODAzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW0oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xODA0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9NDg5OT1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODIyY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ5MDEtXHQucG93ZXJfb2ZmXHRcdD0gcnR3X3Bvd2VyX29mZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0OTAyOlx0LnBoeV9zZXRfcGFyYW1cdFx0PSBydHc4ODIyY19waHlfc2V0X3BhcmFtLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ5MDMtXHQucmVhZF9lZnVzZVx0XHQ9IHJ0dzg4MjJjX3JlYWRfZWZ1c2UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA2OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMDMzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTEwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyBhbmQgRnV6emluZyBSRiBDYWxpYnJhdGlvbiBpbiBydHc4ODIyY3UqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aC4gSXQgYXBwZWFycyB0aGF0IGBydHdfcG93ZXJfb25gIGNhbGxzIGBjaGlwLSZndDtvcHMtJmd0O3BoeV9zZXRfcGFyYW0ocnR3ZGV2KWAuIERpZ2dpbmcgZGVlcGVyLCBgcnR3X3Bvd2VyX29uYCBpcyByZWFjaGVkIGZyb20gYHJ0d19jb3JlX3N0YXJ0YCwgd2hpY2ggaXMgaW5pdGlhdGVkIGZyb20gYHJ0d19tYWM4MDIxMV9zdGFydGAuIFRoaXMgYHJ0d19tYWM4MDIxMV9zdGFydGAgaXMgdGhlIGBtYWM4MDIxMSBzdGFydGAgY2FsbGJhY2ssIHNvIGl0IHNlZW1zIGxpa2UgYnJpbmdpbmcgdGhlIGludGVyZmFjZSB1cCBpcyB0aGUgdHJpZ2dlci4gIFRoaXMgdGhlbiBjYWxscyBgcGh5X3NldF9wYXJhbWAsIHdoaWNoIGluIHRoaXMgY2FzZSBsZWFkcyB0byBgcnR3ODgyMmNfcmZfaW5pdGAgYW5kIHVsdGltYXRlbHkgY2FsbHMgYHJ0dzg4MjJjX3JmX2RhY19jYWxgLiBTcGVjaWZpY2FsbHkgaXQgY2FsbHMgYHJ0dzg4MjJjX2RhY19jYWxfc3RlcDJgLCBgcnR3ODgyMmNfZGFjX2NhbF9zdGVwM2AgZXZlbnR1YWxseSBjYWxsaW5nIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgLCB3aGljaCB0aGVuIGNhbGxzIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAgYW5kIGBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaGAuCgpUaGUgcGF0Y2ggaXRzZWxmIGlzIGludGVyZXN0aW5nIOKAkyBpdCYjMzk7cyByZXBsYWNpbmcgY3VzdG9tIHNvcnRpbmcgd2l0aCB0aGUgc3RhbmRhcmQgYHNvcnQoKWAgZnVuY3Rpb24gYW5kIG1vZGlmeWluZyBzb21lIGNhbGN1bGF0aW9ucyBpbiBgcnR3ODgyMmNfZGFjX2lxX29mZnNldGAgYW5kIGNoZWNraW5nIGluIGBydHc4ODIyY19kYWNfaXFfY2hlY2tgLiBTbywgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBSRiBjYWxpYnJhdGlvbi4KCk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogSXMgdGhpcyBjb2RlIHJlYWNoYWJsZSBpbiBhIGZ1enppbmcgZW52aXJvbm1lbnQgbGlrZSBRRU1VPyBZZXMhIEkgY2FuIHNlZSBob3cgYHN5emthbGxlcmAgY2FuIGVtdWxhdGUgYSBVU0IgZGV2aWNlIG1hdGNoaW5nIGBydHc4ODIyY3VgIHVzaW5nIGBzeXpfdXNiX2Nvbm5lY3RgLiBPbmNlIHRoZSBkZXZpY2UgaXMgcHJvYmVkLCBgc3l6a2FsbGVyYCBjYW4gY3JlYXRlIGEgbmV0ZGV2IGFuZCBicmluZyBpdCB1cCAoYGlmY29uZmlnIHVwYCkuIFRoaXMgd2lsbCBzZXQgdXAgdGhlIGV4ZWN1dGlvbiBwYXRoIG9mIGBydHdfbWFjODAyMTFfc3RhcnRgIC0mZ3Q7IGBydHdfY29yZV9zdGFydGAgLSZndDsgYHJ0d19wb3dlcl9vbmAgLSZndDsgYHBoeV9zZXRfcGFyYW1gIC0mZ3Q7IGBydHc4ODIyY19yZl9pbml0YCAtJmd0OyBgcnR3ODgyMmNfcmZfZGFjX2NhbGAuICBBaGEhICBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgIHJlYWRzIGZyb20gdGhlIGRldmljZSB1c2luZyBgcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZilgLiBUaGlzIHJlYWQgd2lsbCBvY2N1ciBkdXJpbmcgVVNCIGNvbnRyb2wgb3IgYnVsayB0cmFuc2ZlcnMuIEFuZCBzeXprYWxsZXImIzM5O3MgVVNCIGZ1enplciB3aWxsIHByb3ZpZGUgcmFuZG9tIHZhbHVlcyBmb3IgdGhpcyByZWFkLiBTbywgdGhlIGNvZGUgd2lsbCAqZGVmaW5pdGVseSogcHJvY2VzcyB0aGVzZSByYW5kb20gdmFsdWVzLiBUaGlzIGlzIGZhbnRhc3RpYy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgdGhlcmVmb3JlIGZ1enphYmxlLgoKTXkgZm9jdXMgc2hvdWxkIGJlIG9uIGlkZW50aWZ5aW5nIHRoZSBtb3N0IHJlbGV2YW50IGZ1bmN0aW9ucyB0byB0YXJnZXQuIFNwZWNpZmljYWxseTogYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYCwgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoYCwgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAsIGFuZCBgcnR3ODgyMmNfcmZfZGFjX2NhbGAuCgpOb3csIEkgbmVlZCB0byBjb25zaWRlciBpbmxpbmluZy4gQXJlIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAgYW5kIGBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaGAgaW5saW5lZD8gIFRoZXkgYXJlIHN0YXRpYywgYnV0IGNhbGxlZCBmcm9tIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgLiBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBpcyBhbHNvIHN0YXRpYy4gSXQgaXMgYWxzbyBjYWxsZWQgZnJvbSBzZXZlcmFsIG90aGVyIGZ1bmN0aW9ucywgc28gaXQgc2VlbXMgdGhpcyB3aWxsIGJlIGlubGluZWQuIGBydHc4ODIyY19yZl9kYWNfY2FsYCBpcyBhbHNvIHN0YXRpYywgYXMgaXMgYHJ0dzg4MjJjX3JmX2luaXRgLiAgQWgsIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBpcyBhbHNvIHN0YXRpYywgKmJ1dCogaXRzIGFkZHJlc3MgaXMgdGFrZW4gaW4gYHJ0dzg4MjJjX29wc2AuIFRoaXMgaXMga2V5LiBUaGF0IG1ha2VzIGl0ICpkZWZpbml0ZWx5KiBub3QgaW5saW5lZCBhbmQgYSBnb29kIGZvY3VzIHN5bWJvbC4gQWx0aG91Z2gsIGBydHc4ODIyY19yZl9kYWNfY2FsYCBhbmQgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAgYXJlIGFsc28gZ29vZCBiZWNhdXNlIHRoZXkgYXJlIHByZXR0eSBsYXJnZSwgc28gaXQgaXMgbGVzcyBsaWtlbHkgdGhleSBhcmUgaW5saW5lZC4gR2l2ZW4gdGhhdCB0aGUgcGF0Y2ggb25seSB0b3VjaGVzIHN0YXRpYyBmdW5jdGlvbnMgaW4gYHJ0dzg4MjJjLmNgLCBJIGFtIHByZXR0eSBjb25maWRlbnQgd2l0aCB1c2luZyBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgYXMgdGhlIHByaW1hcnkgZm9jdXMsIGFuZCBpbmNsdWRpbmcgYHJ0dzg4MjJjXwoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA2OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSVFc4OCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjI6bWVudWNvbmZpZyBSVFc4OFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDgwMi4xMWFjIHdpcmVsZXNzIGNoaXBzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc9MTE9aWYgUlRXODhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxMzpjb25maWcgUlRXODhfQ09SRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE0LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTc6Y29uZmlnIFJUVzg4X1BDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE4LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMDpjb25maWcgUlRXODhfU0RJT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIxLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMzpjb25maWcgUlRXODhfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjQtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjI2OmNvbmZpZyBSVFc4OF84ODIyQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI3LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyOTpjb25maWcgUlRXODhfODgyMkNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zMC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MzI6Y29uZmlnIFJUVzg4Xzg3MjNYXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMzMtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjM1OmNvbmZpZyBSVFc4OF84NzAzQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTM2LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6Mzk6Y29uZmlnIFJUVzg4Xzg3MjNEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDAtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy00Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo0Mzpjb25maWcgUlRXODhfODgyMUNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy00NC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6NDY6Y29uZmlnIFJUVzg4Xzg4WFhBXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDctXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjQ5OmNvbmZpZyBSVFc4OF84ODIxQVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTUwLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6NTM6Y29uZmlnIFJUVzg4Xzg4MTJBXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTQtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy01Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo1Nzpjb25maWcgUlRXODhfODgxNEFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy01OC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6NjA6Y29uZmlnIFJUVzg4Xzg4MjJCRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTYxLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIyQkUgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy03MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo3MTpjb25maWcgUlRXODhfODgyMkJTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNzItXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjJCUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy04MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo4Mjpjb25maWcgUlRXODhfODgyMkJVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctODMtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjJCVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjkzOmNvbmZpZyBSVFc4OF84ODIyQ0VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy05NC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMkNFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjEwNDpjb25maWcgUlRXODhfODgyMkNTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTA1LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIyQ1MgU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjExNTpjb25maWcgUlRXODhfODgyMkNVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTE2LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTI2OmNvbmZpZyBSVFc4OF84NzIzREVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMjctXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg3MjNERSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxMzc6Y29uZmlnIFJUVzg4Xzg3MjNEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEzOC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODcyM0RTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxNDg6Y29uZmlnIFJUVzg4Xzg3MjNDU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE0OS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODcyM0NTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxNjI6Y29uZmlnIFJUVzg4Xzg3MjNEVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE2My1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODcyM0RVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjE3Mzpjb25maWcgUlRXODhfODgyMUNFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTc0LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIxQ0UgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTg0OmNvbmZpZyBSVFc4OF84ODIxQ1NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xODUtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjFDUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xOTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTk1OmNvbmZpZyBSVFc4OF84ODIxQ1VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xOTYtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjFDVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMDY6Y29uZmlnIFJUVzg4Xzg4MjFBVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIwNy1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgyMUFVLzg4MTFBVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMTc6Y29uZmlnIFJUVzg4Xzg4MTJBVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIxOC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODgxMkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjIyODpjb25maWcgUlRXODhfODgxNEFFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjI5LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODE0QUUgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjM5OmNvbmZpZyBSVFc4OF84ODE0QVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNDAtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MTRBVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyNTA6Y29uZmlnIFJUVzg4X0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjUxLVx0Ym9vbCBcJiMzNDtSZWFsdGVrIHJ0dzg4IGRlYnVnIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjI1ODpjb25maWcgUlRXODhfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI1OS1cdGJvb2wgXCYjMzQ7UmVhbHRlayBydHc4OCBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjI2Njpjb25maWcgUlRXODhfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI2Ny1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgzMjgKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS2VybmVsIENvbmZpZ3VyYXRpb24gVGhvdWdodCBQcm9jZXNzKioKCk9rYXksIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgYFJUVzg4YCBhbmQgYFJUVzg4Xzg4MjJDVWAgYXJlIGVuYWJsZWQuIFRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCwgYnV0IGxldCYjMzk7cyBicmVhayBpdCBkb3duIGEgYml0IGZ1cnRoZXIuIGBSVFc4OF84ODIyQ1VgIGFwcGFyZW50bHkgYnJpbmdzIGluIGBSVFc4OF9DT1JFYCwgYFJUVzg4X1VTQmAsIGFuZCBgUlRXODhfODgyMkNgLCB3aGljaCBzb3VuZHMgYWJvdXQgcmlnaHQgZm9yIHRoZSA4ODIyQ1UgY2hpcHNldC4gU28sIGluIHRoZW9yeSwganVzdCBlbmFibGluZyBgUlRXODhgIGFuZCBgUlRXODhfODgyMkNVYCBzaG91bGQgY292ZXIgYWxsIHRoZSBuZWNlc3NhcnkgYmFzZXMuCgpIb2xkIG9uIGEgc2Vjb25kLCBnb3R0YSBkb3VibGUtY2hlY2sgdGhvc2UgZGVwZW5kZW5jaWVzLiBJIGtub3cgdGhpcyBmcm9tIGV4cGVyaWVuY2UsIGFuZCB0aGUga2VybmVsIGNhbiBiZSB0cmlja3kgd2l0aCBpdHMgZGVwZW5kZW5jaWVzLiBPa2F5LCBhIHF1aWNrIGNoZWNrLi4uIFllcywgYFJUVzg4Xzg4MjJDVWAgZG9lcyBpbmRlZWQgZGVwZW5kIG9uIGBSVFc4OGAgKG9idmlvdXNseSksIGJ1dCBhbHNvIG9uIGBVU0JgIGFuZCBgTUFDODAyMTFgLiBSaWdodCwgdGhhdCBtYWtlcyBzZW5zZS4gU28sIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJJiMzOTt2ZSBnb3QgZXZlcnl0aGluZyBJIG5lZWQsIEkgc2hvdWxkIGVuYWJsZSBgUlRXODhgLCBgUlRXODhfODgyMkNVYCwgYFVTQmAsIGFuZCBgTUFDODAyMTFgLiBUaGF0IHNob3VsZCBjb3ZlciBhbGwgdGhlIG5lY2Vzc2FyeSBiYXNlIG1vZHVsZXMgZm9yIHRoaXMgY2hpcHNldC4gTm93LCBsZXQmIzM5O3MganVzdCBxdWlja2x5IGNvbmZpcm0gdGhvc2UgZGVwZW5kZW5jaWVzIHRvIGJlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbC4gVGltZSB0byBkZWx2ZSBpbnRvIHRoZSBgUlRXODhfODgyMkNVYCBjb25maWcuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJUVzg4Xzg4MjJDVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZz0xMDQ9Y29uZmlnIFJUVzg4Xzg4MjJDU1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTE1OmNvbmZpZyBSVFc4OF84ODIyQ1VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTYtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4MjJDVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA2OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MDIyCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgUmVhbHRlayBXaXJlbGVzcyBLY29uZmlnKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBzb21lIGZlYXR1cmUgb3Igb3B0aW9uIGlzIGNvbnRyb2xsZWQuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bGwgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZ2AgZmlsZSwgYXJvdW5kIGxpbmUgMTE1LiBUaGF0IHNob3VsZCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gY2hlY2sgdGhlIGdlbmVyYWwgc2V0dGluZ3MgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBkcml2ZXIuIEhvcGVmdWxseSwgaXQmIzM5O2xsIHByb3ZpZGUgc29tZSBjbGFyaXR5IHJlZ2FyZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIEkmIzM5O20gaW50ZXJlc3RlZCBpbiBhbmQgdGhlaXIgZGVwZW5kZW5jaWVzLiBUaGlzIEtjb25maWcgZmlsZSBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIGRyaXZlcnMgYXJlIGJ1aWx0IGFuZCBjb25maWd1cmVkLCBhbmQgbGluZSAxMTUgZmVlbHMgbGlrZSBhIGdvb2Qgc3BvdCB0byBzdGFydCBteSBzZWFyY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA2OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMTA6XHRcdGhlbHBcbiAxMTE6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjJDUyBjaGlwc2V0XG4gMTEyOlx0XG4gMTEzOlx0XHQgIDgwMi4xMWFjIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXG4gMTE0Olx0XG4gMTE1Olx0Y29uZmlnIFJUVzg4Xzg4MjJDVVxuIDExNjpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODIyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclwmIzM0O1xuIDExNzpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAxMTg6XHRcdHNlbGVjdCBSVFc4OF9DT1JFXG4gMTE5Olx0XHRzZWxlY3QgUlRXODhfVVNCXG4gMTIwOlx0XHRzZWxlY3QgUlRXODhfODgyMkNcbiAxMjE6XHRcdGhlbHBcbiAxMjI6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4MjJDVSBjaGlwc2V0XG4gMTIzOlx0XG4gMTI0Olx0XHQgIDgwMi4xMWFjIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcbiAxMjU6XHRcbiAxMjY6XHRjb25maWcgUlRXODhfODcyM0RFXG4gMTI3Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg3MjNERSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXCYjMzQ7XG4gMTI4Olx0XHRkZXBlbmRzIG9uIFBDSVxuIDEyOTpcdFx0c2VsZWN0IFJUVzg4X0NPUkVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk1NjMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFJUVzg4IERyaXZlciBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBSVFc4OF84ODIyQ1VgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdGhpcyBpcyBhIFVTQi1iYXNlZCBtb2R1bGUsIHNvIHRoYXQmIzM5O3MgYSBrZXkgZGVwZW5kZW5jeS4gT2J2aW91c2x5LiBUaGVuLCBJIHNlZSBgUlRXODhgIGRlcGVuZHMgb24gYE1BQzgwMjExYCwgd2hpY2ggaXMgdGhlIGV4cGVjdGVkIGZyYW1ld29yayBmb3IgdGhpcyB0eXBlIG9mIHdpcmVsZXNzIGhhcmR3YXJlLiBUbyBnYWluIGEgYmV0dGVyIHBpY3R1cmUsIEkgbmVlZCB0byB6b29tIG91dCBhIGJpdCBhbmQgc2VlIHdoYXQgb3RoZXIgbW9kdWxlcyBgUlRXODhgIHJlbGllcyBvbi4gVW5kZXJzdGFuZGluZyB0aGUgYnJvYWRlciBkZXBlbmRlbmNpZXMgb2YgYFJUVzg4YCB3aWxsIGJlIGNyaXRpY2FsIHRvIGFzc2Vzc2luZyBpdHMgb3ZlcmFsbCBpbnRlZ3JhdGlvbi4gSSBzaG91bGQgc3RhcnQgdGhlcmUsIGFuZCBzZWUgd2hhdCBJIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdG1lbnVjb25maWcgUlRXODhcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODAyLjExYWMgd2lyZWxlc3MgY2hpcHMgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIG1hYzgwMjExLWJhc2VkIHdpcmVsZXNzIGRyaXZlcnMgdGhhdFxuICAgNzpcdFx0ICBlbmFibGVzIFJlYWx0ZWsgSUVFRSA4MDIuMTFhYyB3aXJlbGVzcyBjaGlwc2V0cy5cbiAgIDg6XHRcbiAgIDk6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBydHc4OC5cbiAgMTA6XHRcbiAgMTE6XHRpZiBSVFc4OFxuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBSVFc4OF9DT1JFXG4gIDE0Olx0XHR0cmlzdGF0ZVxuICAxNTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIFJUVzg4X1BDSVxuICAxODpcdFx0dHJpc3RhdGVcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgUlRXODhfU0RJT1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDA2OQoJCQkJCQkJb3V0cHV0OiA2OQoJCQkJCQkJdGhvdWdodHM6IDY3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgUlRXODggRHJpdmVyIGFuZCBDYWxpYnJhdGlvbiBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYFJUVzg4YCBkcml2ZXIsIGFuZCBpdCYjMzk7cyBjbGVhciB0aGF0IGl0IGRlcGVuZHMgb24gYE1BQzgwMjExYC4gVGhlcmVmb3JlLCB0byBlbmFibGUgaXQsIEkmIzM5O2xsIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBgUlRXODhgLCBgUlRXODhfODgyMkNVYCwgYFVTQmAsIGFuZCBgTUFDODAyMTFgIGNvbmZpZ3VyYXRpb25zIGFyZSBzZXQuIFRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4KCk5vdywgSSYjMzk7bSBkaWdnaW5nIGRlZXBlciBiZWNhdXNlIHRoaXMgcGF0Y2ggc2VlbXMgdG8gYmUgdG91Y2hpbmcgc29tZSBzcGVjaWZpYyBmdW5jdGlvbnMgd2l0aGluIHRoZSBgcnR3ODgyMmMuY2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBpdCBtZW50aW9ucyBtb2RpZmljYXRpb25zIHRvIGBydHc4ODIyY19kYWNfaXFfY21wX3MzMmAsIGBydHc4ODIyY19kYWNfaXFfc29ydGAsIGBydHc4ODIyY19kYWNfaXFfb2Zmc2V0YCwgYHJ0dzg4MjJjX2RhY19pcV9jaGVja2AsIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAsIGBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaGAsIGFuZCBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBhbGwgaW52b2x2ZWQgd2l0aCBEQUMgY2FsaWJyYXRpb24sIHNvIGl0IG1ha2VzIHNlbnNlIHRvIGZvY3VzIG9uIHRoZW0uCgpHaXZlbiB0aGUgbW9kaWZpY2F0aW9ucywgSSYjMzk7dmUgZGVjaWRlZCBteSBmb2N1cyBzeW1ib2xzIHNob3VsZCBiZTogYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gLCBgcnR3ODgyMmNfcmZfZGFjX2NhbGAsIGFuZCBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYC4gTm93LCBsZXQmIzM5O3Mgc2VlIGlmIEkgY2FuIGluY2x1ZGUgdGhlbSBhcyBGb2N1c1N5bWJvbHMuCgpJIG5lZWQgdG8gZG91YmxlLWNoZWNrIGlmIGBydHc4ODIyY19yZl9kYWNfY2FsYCBhbmQgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAgYXJlIHN0YXRpYyBvciBpbmxpbmVkLiBBaCwgdGhleSBhcmUgc3RhdGljLiBIb3dldmVyLCB0aGV5IGFyZSBhbHNvIHF1aXRlIGxhcmdlOiBgcnR3ODgyMmNfcmZfZGFjX2NhbGAgaXMgNjAgbGluZXMsIGFuZCBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBpcyAxNSBsaW5lcy4gYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gIGlzIDUwIGxpbmVzLgoKQ29uc2lkZXJpbmcgdGhlIHNpemVzIGFuZCB0aGUgcG90ZW50aWFsIGZvciBvcHRpbWl6YXRpb24sIEkgdGhpbmsgaXQmIzM5O3MgYmV0dGVyIHRvIGluY2x1ZGUgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gIGJlY2F1c2UgaXQmIzM5O3MgZGVmaW5pdGVseSBub3QgaW5saW5lZCAoc2luY2UgaXRzIGFkZHJlc3MgaXMgdGFrZW4pLiBBbHNvLCBJJiMzOTtsbCBpbmNsdWRlIGBydHc4ODIyY19yZl9pbml0YCwgc2luY2UgaXQgY2FsbHMgYHJ0dzg4MjJjX3JmX2RhY19jYWxgLgoKSSBuZWVkIHRvIHF1aWNrbHkgY29uZmlybSB3aGV0aGVyIGBydHc4ODIyY19yZl9pbml0YCBpcyBzdGF0aWMuIFllcy4gU28sIHRoZSBpbmNsdXNpb24gb2YgYHJ0dzg4MjJjX3JmX2luaXRgIGxvb2tzIGdvb2QuIEkgbmVlZCB0byBtYWtlIHN1cmUgYHJ0dzg4MjJjX3JmX2RhY19jYWxgIGlzIGFsc28gc3RhdGljLCB3aGljaCBpdCBpcy4gQW5kIEkgd2lsbCBhZGQgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAsIGFzIHRoYXQgaXMgc3RhdGljIHRvby4KClNvLCBJJiMzOTttIGdvaW5nIHRvIGFkZCBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAsIGBydHc4ODIyY19yZl9kYWNfY2FsYCwgYW5kIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgIHRvIGBGb2N1c1N5bWJvbHNgLgoKSSBqdXN0IG5lZWQgdG8gZW5zdXJlIG15IGVhcmxpZXIgYW5hbHlzaXMgcmVtYWlucyBjb3JyZWN0LiBJcyBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBzdGF0aWM/IFllcy4gT2theSwgYW5kIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAgaXMgc3RhdGljIHRvby4gSSYjMzk7bGwgYWxzbyBhZGQgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoYC4KCkZpbmFsbHksIHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0JiMzOTtzIGp1c3QgZG8gYSBxdWljayBzY2FuIG9mIGBydHc4ODIyYy5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyBJIG1pZ2h0IGhhdmUgbWlzc2VkLiBUaGF0IGxvb2tzIGxpa2UgYSBjb21wcmVoZW5zaXZlIGxpc3QuIEkgYW0gc2F0aXNmaWVkIHdpdGggdGhlIGFib3ZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiBydHc4ODIyY18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTMwOTM9c3RydWN0IGRwa19jZmdfcGFpciB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMwOTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzA5OTp2b2lkIHJ0dzg4MjJjX3BhcnNlX3RibF9kcGsoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMTAwLVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgcnR3X3RhYmxlICp0YmwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jPTM0ODE9c3RhdGljIHU4IHJ0dzg4MjJjX2Rwa19hZ2NfbG9zc19jaGsoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzQ5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzozNDk4OnN0cnVjdCBydHc4ODIyY19kcGtfZGF0YSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzQ5OS1cdHU4IHR4YmI7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA2OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMDM5CgkJCQkJCQlvdXRwdXQ6IDIzOAoJCQkJCQkJdGhvdWdodHM6IDg3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFzb25pbmcgZm9yIEZ1enppbmcgUmVhbHRlayA4ODIyQyBEQUMgSVEgQ2FsaWJyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2hpbGUgYHJ0dzg4MjJjX3BhcnNlX3RibF9kcGtgIGlzbiYjMzk7dCBkaXJlY3RseSByZWxldmFudCB0byB0aGUgcGF0Y2ggaXRzZWxmLCB3aGljaCBmb2N1c2VzIG9uIERBQyBJUSBjYWxpYnJhdGlvbiwgaXQmIzM5O3MgZ29vZCB0byBrZWVwIGl0IGluIG1pbmQuIE15IHByaW1hcnkgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gdGhlIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBmdW5jdGlvbiwgYWxvbmcgd2l0aCBgcnR3ODgyMmNfcmZfZGFjX2NhbGAgYW5kIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgLiBFdmVuIGlmIHRoZSBsYXR0ZXIgdHdvIGFyZSBzdGF0aWMsIHN5emthbGxlciBoYXMgYSBoYWJpdCBvZiBmaW5kaW5nIHRoZW0gaWYgdGhleSBhcmVuJiMzOTt0IGlubGluZWQsIHNvIGxldCYjMzk7cyBrZWVwIHRoYXQgaW4gbWluZC4KCkZpcnN0LCBsZXQgbWUgY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBXZSBkZWZpbml0ZWx5IG5lZWQgYFJUVzg4YCwgYFJUVzg4Xzg4MjJDVWAsIGBVU0JgLCBhbmQgYE1BQzgwMjExYC4gVGhvdWdoIFVTQiBhbmQgTUFDODAyMTEgYXJlIHByZXR0eSBzdGFuZGFyZCBmb3Igc3l6a2FsbGVyLCBpdCYjMzk7cyBhbHdheXMgYmV0dGVyIHRvIHNwZWNpZnkgdGhlbS4gTm93LCBhcmUgdGhlcmUgYW55IG90aGVyIGRlcGVuZGVuY2llcz8gQWgsIGBSVFc4OF9DT1JFYCwgYFJUVzg4X1VTQmAsIGFuZCBgUlRXODhfODgyMkNgIGFyZSBhbGwgc2VsZWN0ZWQgYnkgYFJUVzg4Xzg4MjJDVWAsIHNvIHdlIGRvbiYjMzk7dCBuZWVkIHRvIHNwZWNpZnkgdGhvc2UgZXhwbGljaXRseS4gTmljZS4KCkxldCYjMzk7cyBxdWlja2x5IGNvbmZpcm0gcmVhY2hhYmlsaXR5LiBEb2VzIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgIGdldCBjYWxsZWQgdGhyb3VnaCBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWA/IFllcCwgaXQmIzM5O3M6IGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCAtJmd0OyBgcnR3ODgyMmNfcmZfaW5pdGAgLSZndDsgYHJ0dzg4MjJjX3JmX2RhY19jYWxgIC0mZ3Q7IGBydHc4ODIyY19kYWNfY2FsX3N0ZXAyYCAtJmd0OyBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYC4KCkNhbiBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgYmUgY2FsbGVkIGZyb20gc29tZXdoZXJlIGVsc2U/IE9rYXksIGxvb2tpbmcgYXQgYHJ0dzg4MjJjX29wc2AsIGl0JiMzOTtzIGNhbGxlZCB3aGVuIHRoZSBkZXZpY2UgcHJvYmVzLiBSaWdodCwgc28gYHJ0dzg4MjJjdV9wcm9iZWAgY2FsbHMgYHJ0d191c2JfcHJvYmVgLCB3aGljaCBjYWxscyBgcnR3X2NvcmVfaW5pdGAsIGFuZCB0aGF0JiMzOTtzIGhvdyB0aGUgZGV2aWNlIGlzIHNldCB1cC4gVGhlbiwgd2hlbiB0aGUgaW50ZXJmYWNlIGlzIGJyb3VnaHQgdXAsIGBydHdfbWFjODAyMTFfc3RhcnRgIGNhbGxzIGBydHdfY29yZV9zdGFydGAsIHdoaWNoIGluIHR1cm4gY2FsbHMgYHJ0d19wb3dlcl9vbmAsIGFuZCAqdGhhdCYjMzk7cyogd2hlbiBgY2hpcC0mZ3Q7b3BzLSZndDtwaHlfc2V0X3BhcmFtKHJ0d2RldilgIGlzIGNhbGxlZC4gVGhhdCYjMzk7cyBhIHN0YW5kYXJkIGZsb3cgZm9yIG1hYzgwMjExIGRyaXZlcnMuIEV4Y2VsbGVudCwgaXQmIzM5O3MgcmVhY2hhYmxlLgoKSGVyZSYjMzk7cyB0aGUgcmVhc29uaW5nOiBUaGlzIHBhdGNoIG1vZGlmaWVzIHRoZSBSRiBjYWxpYnJhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IERBQyBJUSBjYWxpYnJhdGlvbiwgaW4gdGhlIFJlYWx0ZWsgODgyMkMgd2lyZWxlc3MgZHJpdmVyIChgcnR3ODgyMmMuY2ApLiBJdOKAmXMgcmVwbGFjaW5nIGEgY3VzdG9tIHNvcnRpbmcgZnVuY3Rpb24gd2l0aCBhIHN0YW5kYXJkIG9uZSBhbmQgbWFraW5nIGNoYW5nZXMgdG8gaG93IElRIG9mZnNldHMgYXJlIGNhbGN1bGF0ZWQgYW5kIHZhbGlkYXRlZC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYmVjYXVzZSB0aGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIChgcnR3ODgyMmN1YCksIHdoaWNoIGlzIHBlcmZlY3Qgc2luY2Ugc3l6a2FsbGVyIGNhbiBlYXNpbHkgZW11bGF0ZSB0aG9zZSB1c2luZyBgc3l6X3VzYl9jb25uZWN0YC4gV2hlbiB0aGF0IGVtdWxhdGVkIFVTQiBXaS1GaSBpbnRlcmZhY2UgaXMgYWN0aXZhdGVkLCB0aGUgZHJpdmVyIGluaXRpYXRlcyBSRiBjYWxpYnJhdGlvbiwgdHJpZ2dlcmluZyB0aGVzZSBtb2RpZmllZCBmdW5jdGlvbnMuCgpTbywgbGV0JiMzOTtzIGtlZXAgdGhlIGZvY3VzIG9uOgoKKiAgIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYAoqICAgYHJ0dzg4MjJjX3JmX2RhY19jYWxgCiogICBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYAoKV2l0aCB0aGVzZSBjb25maWd1cmF0aW9uczoKCiogICBgUlRXODhgCiogICBgUlRXODhfODgyMkNVYAoqICAgYFVTQmAKKiAgIGBNQUM4MDIxMWAKCkp1c3QgdG8gZG91YmxlIGNoZWNrLCBgUlRXODhfODgyMkNVYCBzaG91bGQgYmUgc3VmZmljaWVudC4gV2hhdCBhYm91dCBQQ0llIChgUlRXODhfODgyMkNFYCk/IFN5emthbGxlciBkb2VzbiYjMzk7dCBlYXNpbHkgZW11bGF0ZSBQQ0llLCBidXQgVVNCIHNob3VsZCBiZSBlYXN5LCBzbyBgUlRXODhfODgyMkNVYCBpcyB0aGUga2V5IGZvciBmdXp6aW5nLgoKT2theSwgSSYjMzk7bSByZWFkeSB0byBzZXQtcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg4JiMzNDssCiAgICAmIzM0O1JUVzg4Xzg4MjJDVSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHc4ODIyY19waHlfc2V0X3BhcmFtJiMzNDssCiAgICAmIzM0O3J0dzg4MjJjX3JmX2RhY19jYWwmIzM0OywKICAgICYjMzQ7cnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBSRiBjYWxpYnJhdGlvbiBsb2dpYyAoc3BlY2lmaWNhbGx5IERBQyBJUSBjYWxpYnJhdGlvbikgaW4gdGhlIFJlYWx0ZWsgODgyMkMgd2lyZWxlc3MgZHJpdmVyIChgcnR3ODgyMmMuY2ApLiBJdCByZXBsYWNlcyBhIGN1c3RvbSBzb3J0aW5nIGltcGxlbWVudGF0aW9uIHdpdGggdGhlIHN0YW5kYXJkIGBzb3J0KClgIGZ1bmN0aW9uIGFuZCBjaGFuZ2VzIHRoZSBsb2dpYyBmb3IgY2FsY3VsYXRpbmcgSVEgb2Zmc2V0cyBhbmQgY2hlY2tpbmcgdmFsdWVzLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBiZWNhdXNlIHRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGRldmljZXMgKGBydHc4ODIyY3VgKSwgd2hpY2ggY2FuIGJlIGVtdWxhdGVkIGJ5IHN5emthbGxlciB2aWEgYHN5el91c2JfY29ubmVjdGAuIFdoZW4gdGhlIGVtdWxhdGVkIFVTQiBXaS1GaSBpbnRlcmZhY2UgaXMgYnJvdWdodCB1cCwgdGhlIGRyaXZlciBwZXJmb3JtcyBSRiBjYWxpYnJhdGlvbiwgdHJpZ2dlcmluZyB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSVFc4OCYjMzQ7LAogICAgJiMzNDtSVFc4OF84ODIyQ1UmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnR3ODgyMmNfcGh5X3NldF9wYXJhbSYjMzQ7LAogICAgJiMzNDtydHc4ODIyY19yZl9kYWNfY2FsJiMzNDssCiAgICAmIzM0O3J0dzg4MjJjX2RhY19jYWxfcmZfbW9kZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgUkYgY2FsaWJyYXRpb24gbG9naWMgKHNwZWNpZmljYWxseSBEQUMgSVEgY2FsaWJyYXRpb24pIGluIHRoZSBSZWFsdGVrIDg4MjJDIHdpcmVsZXNzIGRyaXZlciAoYHJ0dzg4MjJjLmNgKS4gSXQgcmVwbGFjZXMgYSBjdXN0b20gc29ydGluZyBpbXBsZW1lbnRhdGlvbiB3aXRoIHRoZSBzdGFuZGFyZCBgc29ydCgpYCBmdW5jdGlvbiBhbmQgY2hhbmdlcyB0aGUgbG9naWMgZm9yIGNhbGN1bGF0aW5nIElRIG9mZnNldHMgYW5kIGNoZWNraW5nIHZhbHVlcy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYmVjYXVzZSB0aGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIChgcnR3ODgyMmN1YCksIHdoaWNoIGNhbiBiZSBlbXVsYXRlZCBieSBzeXprYWxsZXIgdmlhIGBzeXpfdXNiX2Nvbm5lY3RgLiBXaGVuIHRoZSBlbXVsYXRlZCBVU0IgV2ktRmkgaW50ZXJmYWNlIGlzIGJyb3VnaHQgdXAsIHRoZSBkcml2ZXIgcGVyZm9ybXMgUkYgY2FsaWJyYXRpb24sIHRyaWdnZXJpbmcgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdGhlIElRIGNhbGlicmF0aW9uIGxvZ2ljIGluIHRoZSBSZWFsdGVrIHJ0dzg4IHdpcmVsZXNzIGRyaXZlci4gSXQgcmVwbGFjZXMgY3VzdG9tIHNvcnRpbmcgYW5kIG1pbi9tYXggY2FsY3VsYXRpb25zIHdpdGggc3RhbmRhcmQga2VybmVsIGZ1bmN0aW9ucyAoYHNvcnQoKWApIGFuZCBzaW1wbGlmaWVzIHRoZSBhcml0aG1ldGljIGJ5IHVzaW5nIHNpZ25lZCAzMi1iaXQgaW50ZWdlcnMgKGBzMzJgKSBpbnN0ZWFkIG9mIHVuc2lnbmVkIGludGVnZXJzIHdpdGggbWFudWFsIHNpZ24gaGFuZGxpbmcuIFRoZSBhcnJheXMgYGl2YCBhbmQgYHF2YCBhcmUgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBhbmQgcG9wdWxhdGVkIGJ5IHJlYWRpbmcgaGFyZHdhcmUgcmVnaXN0ZXJzLiBXaGlsZSB0aGVyZSBpcyBhIHRoZW9yZXRpY2FsIHByZS1leGlzdGluZyBlZGdlIGNhc2Ugd2hlcmUgdGhlIGFycmF5cyBtaWdodCBub3QgYmUgZnVsbHkgcG9wdWxhdGVkIGlmIHRoZSBoYXJkd2FyZSBmYWlscyB0byBwcm92aWRlIGVub3VnaCB2YWxpZCBzYW1wbGVzIHdpdGhpbiAxMCwwMDAgaXRlcmF0aW9ucywgdGhpcyBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhhY2VyYmF0ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIFRoZSBkYXRhIGlzIHVzZWQgc3RyaWN0bHkgZm9yIGludGVybmFsIGhhcmR3YXJlIGNhbGlicmF0aW9uIGFuZCBpcyBub3QgY29waWVkIHRvIHVzZXJzcGFjZSwgbWVhbmluZyB0aGVyZSBpcyBubyByaXNrIG9mIGFuIGluZm8tbGVhay4gQW55IHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIG1lbW9yeSBjb3JydXB0aW9uIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gQSBkZWRpY2F0ZWQgS01TQU4gcnVuIGlzIG5vdCBqdXN0aWZpZWQgYXMgbm8gbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVhayB2dWxuZXJhYmlsaXRpZXMgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGQ1MTg3OWJkNzc1YmRkOGYxN2E3ZTM3YmY1N2IyOTMwNGQ5YzA4ZTAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAxMyAwNjoxMjoxNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYwppbmRleCAyNDRjODAyNjQ3OWMyLi42ZmNkZmM2NGMzYjFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jCkBAIC0zLDYgJiM0MzszLDggQEAKICAqLwogCiAjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2JpdG9wcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9zb3J0LmgmZ3Q7CiAjaW5jbHVkZSAmIzM0O21haW4uaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2NvZXguaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2Z3LmgmIzM0OwpAQCAtMTUzLDg0ICYjNDM7MTU1LDMwIEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19yZXN0b3JlX3JlZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LAogCX0KIH0KIAotc3RhdGljIHZvaWQgcnR3ODgyMmNfcmZfbWlubWF4X2NtcChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgdmFsdWUsCi0JCQkJICAgdTMyICptaW4sIHUzMiAqbWF4KQomIzQzO3N0YXRpYyBpbnQgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzIoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKIHsKLQlpZiAodmFsdWUgJmd0Oz0gMHgyMDApIHsKLQkJaWYgKCptaW4gJmd0Oz0gMHgyMDApIHsKLQkJCWlmICgqbWluICZndDsgdmFsdWUpCi0JCQkJKm1pbiA9IHZhbHVlOwotCQl9IGVsc2UgewotCQkJKm1pbiA9IHZhbHVlOwotCQl9Ci0JCWlmICgqbWF4ICZndDs9IDB4MjAwKSB7Ci0JCQlpZiAoKm1heCAmbHQ7IHZhbHVlKQotCQkJCSptYXggPSB2YWx1ZTsKLQkJfQotCX0gZWxzZSB7Ci0JCWlmICgqbWluICZsdDsgMHgyMDApIHsKLQkJCWlmICgqbWluICZndDsgdmFsdWUpCi0JCQkJKm1pbiA9IHZhbHVlOwotCQl9Ci0KLQkJaWYgKCptYXggICZndDs9IDB4MjAwKSB7Ci0JCQkqbWF4ID0gdmFsdWU7Ci0JCX0gZWxzZSB7Ci0JCQlpZiAoKm1heCAmbHQ7IHZhbHVlKQotCQkJCSptYXggPSB2YWx1ZTsKLQkJfQotCX0KLX0KJiM0MzsJczMyIHZhID0gKihjb25zdCBzMzIgKilhOwomIzQzOwlzMzIgdmIgPSAqKGNvbnN0IHMzMiAqKWI7CiAKLXN0YXRpYyB2b2lkIF9fcnR3ODgyMmNfZGFjX2lxX3NvcnQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICp2MSwgdTMyICp2MikKLXsKLQlpZiAoKnYxICZndDs9IDB4MjAwICZhbXA7JmFtcDsgKnYyICZndDs9IDB4MjAwKSB7Ci0JCWlmICgqdjEgJmd0OyAqdjIpCi0JCQlzd2FwKCp2MSwgKnYyKTsKLQl9IGVsc2UgaWYgKCp2MSAmbHQ7IDB4MjAwICZhbXA7JmFtcDsgKnYyICZsdDsgMHgyMDApIHsKLQkJaWYgKCp2MSAmZ3Q7ICp2MikKLQkJCXN3YXAoKnYxLCAqdjIpOwotCX0gZWxzZSBpZiAoKnYxICZsdDsgMHgyMDAgJmFtcDsmYW1wOyAqdjIgJmd0Oz0gMHgyMDApIHsKLQkJc3dhcCgqdjEsICp2Mik7Ci0JfQomIzQzOwlyZXR1cm4gKHZhICZndDsgdmIpIC0gKHZhICZsdDsgdmIpOwogfQogCi1zdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKml2LCB1MzIgKnF2KQomIzQzO3N0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9zb3J0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiAqaXYsIHMzMiAqcXYpCiB7Ci0JdTMyIGksIGo7Ci0KLQlmb3IgKGkgPSAwOyBpICZsdDsgREFDS19TTl84ODIyQyAtIDE7IGkmIzQzOyYjNDM7KSB7Ci0JCWZvciAoaiA9IDA7IGogJmx0OyAoREFDS19TTl84ODIyQyAtIDEgLSBpKSA7IGomIzQzOyYjNDM7KSB7Ci0JCQlfX3J0dzg4MjJjX2RhY19pcV9zb3J0KHJ0d2RldiwgJmFtcDtpdltqXSwgJmFtcDtpdltqICYjNDM7IDFdKTsKLQkJCV9fcnR3ODgyMmNfZGFjX2lxX3NvcnQocnR3ZGV2LCAmYW1wO3F2W2pdLCAmYW1wO3F2W2ogJiM0MzsgMV0pOwotCQl9Ci0JfQomIzQzOwlzb3J0KGl2LCBEQUNLX1NOXzg4MjJDLCBzaXplb2YoczMyKSwgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzIsIE5VTEwpOwomIzQzOwlzb3J0KHF2LCBEQUNLX1NOXzg4MjJDLCBzaXplb2YoczMyKSwgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzIsIE5VTEwpOwogfQogCi1zdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqdmVjLCB1MzIgKnZhbCkKJiM0MztzdGF0aWMgczMyIHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICp2ZWMpCiB7Ci0JdTMyIHAsIG0sIHQsIGk7CiYjNDM7CXMzMiBzdW0gPSAwOwogCi0JbSA9IDA7Ci0JcCA9IDA7Ci0JZm9yIChpID0gMTA7IGkgJmx0OyBEQUNLX1NOXzg4MjJDIC0gMTA7IGkmIzQzOyYjNDM7KSB7Ci0JCWlmICh2ZWNbaV0gJmd0OyAweDIwMCkKLQkJCW0gPSAoMHg0MDAgLSB2ZWNbaV0pICYjNDM7IG07Ci0JCWVsc2UKLQkJCXAgPSB2ZWNbaV0gJiM0MzsgcDsKLQl9CiYjNDM7CWZvciAodTMyIGkgPSAxMDsgaSAmbHQ7IERBQ0tfU05fODgyMkMgLSAxMDsgaSYjNDM7JiM0MzspCiYjNDM7CQlzdW0gJiM0Mzs9IHZlY1tpXTsKIAotCWlmIChwICZndDsgbSkgewotCQl0ID0gcCAtIG07Ci0JCXQgPSB0IC8gKERBQ0tfU05fODgyMkMgLSAyMCk7Ci0JfSBlbHNlIHsKLQkJdCA9IG0gLSBwOwotCQl0ID0gdCAvIChEQUNLX1NOXzg4MjJDIC0gMjApOwotCQlpZiAodCAhPSAweDApCi0JCQl0ID0gMHg0MDAgLSB0OwotCX0KJiM0MzsJczMyIGF2ZyA9IHN1bSAvIChEQUNLX1NOXzg4MjJDIC0gMjApOwogCi0JKnZhbCA9IHQ7CiYjNDM7CXJldHVybiBhdmcgJmd0Oz0gMCA/IGF2ZyA6IDB4NDAwICYjNDM7IGF2ZzsKIH0KIAogc3RhdGljIHUzMiBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHU4IHBhdGgpCkBAIC0yNzEsMjkgJiM0MzsyMTksMjcgQEAgc3RhdGljIHUzMiBydHc4ODIyY19nZXRfcGF0aF9yZWFkX2FkZHIodTggcGF0aCkKIAlyZXR1cm4gYmFzZV9hZGRyOwogfQogCi1zdGF0aWMgYm9vbCBydHc4ODIyY19kYWNfaXFfY2hlY2soc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyIHZhbHVlKQomIzQzO3N0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgdmFsdWUpCiB7Ci0JYm9vbCByZXQgPSB0cnVlOwogCi0JaWYgKCh2YWx1ZSAmZ3Q7PSAweDIwMCAmYW1wOyZhbXA7ICgweDQwMCAtIHZhbHVlKSAmZ3Q7IDB4NjQpIHx8Ci0JICAgICh2YWx1ZSAmbHQ7IDB4MjAwICZhbXA7JmFtcDsgdmFsdWUgJmd0OyAweDY0KSkgewotCQlyZXQgPSBmYWxzZTsKJiM0MzsJaWYgKHZhbHVlICZndDsgMTAwIHx8IHZhbHVlICZsdDsgLTEwMCkgewogCQlydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssICYjMzQ7W0RBQ0tdIEVycm9yIG92ZXJmbG93XG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gZmFsc2U7CiAJfQogCi0JcmV0dXJuIHJldDsKJiM0MzsJcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqaXYsIHUzMiAqcXYpCiYjNDM7c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdikKIHsKIAl1MzIgdGVtcDsKLQlpbnQgaSA9IDAsIGNudCA9IDA7CiYjNDM7CXUzMiBpID0gMCwgY250ID0gMDsKIAogCXdoaWxlIChpICZsdDsgREFDS19TTl84ODIyQyAmYW1wOyZhbXA7IGNudCAmbHQ7IDEwMDAwKSB7CiAJCWNudCYjNDM7JiM0Mzs7CiAJCXRlbXAgPSBydHdfcmVhZDMyX21hc2socnR3ZGV2LCAweDJkYmMsIDB4M2ZmZmZmKTsKLQkJaXZbaV0gPSAodGVtcCAmYW1wOyAweDNmZjAwMCkgJmd0OyZndDsgMTI7Ci0JCXF2W2ldID0gdGVtcCAmYW1wOyAweDNmZjsKJiM0MzsJCWl2W2ldID0gc2lnbl9leHRlbmQzMigodGVtcCAmYW1wOyAweDNmZjAwMCkgJmd0OyZndDsgMTIsIDkpOwomIzQzOwkJcXZbaV0gPSBzaWduX2V4dGVuZDMyKHRlbXAgJmFtcDsgMHgzZmYsIDkpOwogCiAJCWlmIChydHc4ODIyY19kYWNfaXFfY2hlY2socnR3ZGV2LCBpdltpXSkgJmFtcDsmYW1wOwogCQkgICAgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHJ0d2RldiwgcXZbaV0pKQpAQCAtMzAyLDEzICYjNDM7MjQ4LDEyIEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqaXYsIHUzMiAqcXYpCiB9CiAKIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsCi0JCQkJICAgICAgIHUzMiAqaXYsIHUzMiAqcXYsCiYjNDM7CQkJCSAgICAgICBzMzIgKml2LCBzMzIgKnF2LAogCQkJCSAgICAgICB1MzIgKmlfdmFsdWUsIHUzMiAqcV92YWx1ZSkKIHsKLQl1MzIgaV9tYXggPSAwLCBxX21heCA9IDAsIGlfbWluID0gMCwgcV9taW4gPSAwOwotCXUzMiBpX2RlbHRhLCBxX2RlbHRhOwomIzQzOwlzMzIgaV9tYXggPSAwLCBxX21heCA9IDAsIGlfbWluID0gMCwgcV9taW4gPSAwOwogCXUzMiB0ZW1wOwotCWludCBpLCBjbnQgPSAwOwomIzQzOwl1MzIgaSwgY250ID0gMDsKIAogCWRvIHsKIAkJaV9taW4gPSBpdlswXTsKQEAgLTMxNiwyMyAmIzQzOzI2MSwxOCBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LAogCQlxX21pbiA9IHF2WzBdOwogCQlxX21heCA9IHF2WzBdOwogCQlmb3IgKGkgPSAwOyBpICZsdDsgREFDS19TTl84ODIyQzsgaSYjNDM7JiM0MzspIHsKLQkJCXJ0dzg4MjJjX3JmX21pbm1heF9jbXAocnR3ZGV2LCBpdltpXSwgJmFtcDtpX21pbiwgJmFtcDtpX21heCk7Ci0JCQlydHc4ODIyY19yZl9taW5tYXhfY21wKHJ0d2RldiwgcXZbaV0sICZhbXA7cV9taW4sICZhbXA7cV9tYXgpOwomIzQzOwkJCWlmIChpdltpXSAmbHQ7IGlfbWluKQomIzQzOwkJCQlpX21pbiA9IGl2W2ldOwomIzQzOwkJCWlmIChpdltpXSAmZ3Q7IGlfbWF4KQomIzQzOwkJCQlpX21heCA9IGl2W2ldOwomIzQzOwkJCWlmIChxdltpXSAmbHQ7IHFfbWluKQomIzQzOwkJCQlxX21pbiA9IHF2W2ldOwomIzQzOwkJCWlmIChxdltpXSAmZ3Q7IHFfbWF4KQomIzQzOwkJCQlxX21heCA9IHF2W2ldOwogCQl9CiAKLQkJaWYgKGlfbWF4ICZsdDsgMHgyMDAgJmFtcDsmYW1wOyBpX21pbiAmbHQ7IDB4MjAwKQotCQkJaV9kZWx0YSA9IGlfbWF4IC0gaV9taW47Ci0JCWVsc2UgaWYgKGlfbWF4ICZndDs9IDB4MjAwICZhbXA7JmFtcDsgaV9taW4gJmd0Oz0gMHgyMDApCi0JCQlpX2RlbHRhID0gaV9tYXggLSBpX21pbjsKLQkJZWxzZQotCQkJaV9kZWx0YSA9IGlfbWF4ICYjNDM7ICgweDQwMCAtIGlfbWluKTsKLQotCQlpZiAocV9tYXggJmx0OyAweDIwMCAmYW1wOyZhbXA7IHFfbWluICZsdDsgMHgyMDApCi0JCQlxX2RlbHRhID0gcV9tYXggLSBxX21pbjsKLQkJZWxzZSBpZiAocV9tYXggJmd0Oz0gMHgyMDAgJmFtcDsmYW1wOyBxX21pbiAmZ3Q7PSAweDIwMCkKLQkJCXFfZGVsdGEgPSBxX21heCAtIHFfbWluOwotCQllbHNlCi0JCQlxX2RlbHRhID0gcV9tYXggJiM0MzsgKDB4NDAwIC0gcV9taW4pOwomIzQzOwkJdTMyIGlfZGVsdGEgPSAodTMyKShpX21heCAtIGlfbWluKTsKJiM0MzsJCXUzMiBxX2RlbHRhID0gKHUzMikocV9tYXggLSBxX21pbik7CiAKIAkJcnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLAogCQkJJiMzNDtbREFDS10gaTogbWluPTB4JTA4eCwgbWF4PTB4JTA4eCwgZGVsdGE9MHglMDh4XG4mIzM0OywKQEAgLTM0NSwyNCAmIzQzOzI4NSwyNCBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LAogCiAJCWlmIChpX2RlbHRhICZndDsgNSB8fCBxX2RlbHRhICZndDsgNSkgewogCQkJdGVtcCA9IHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpOwotCQkJaXZbMF0gPSAodGVtcCAmYW1wOyAweDNmZjAwMCkgJmd0OyZndDsgMTI7Ci0JCQlxdlswXSA9IHRlbXAgJmFtcDsgMHgzZmY7CiYjNDM7CQkJaXZbMF0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wICZhbXA7IDB4M2ZmMDAwKSAmZ3Q7Jmd0OyAxMiwgOSk7CiYjNDM7CQkJcXZbMF0gPSBzaWduX2V4dGVuZDMyKHRlbXAgJmFtcDsgMHgzZmYsIDkpOwogCQkJdGVtcCA9IHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpOwotCQkJaXZbREFDS19TTl84ODIyQyAtIDFdID0gKHRlbXAgJmFtcDsgMHgzZmYwMDApICZndDsmZ3Q7IDEyOwotCQkJcXZbREFDS19TTl84ODIyQyAtIDFdID0gdGVtcCAmYW1wOyAweDNmZjsKJiM0MzsJCQlpdltEQUNLX1NOXzg4MjJDIC0gMV0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wICZhbXA7IDB4M2ZmMDAwKSAmZ3Q7Jmd0OyAxMiwgOSk7CiYjNDM7CQkJcXZbREFDS19TTl84ODIyQyAtIDFdID0gc2lnbl9leHRlbmQzMih0ZW1wICZhbXA7IDB4M2ZmLCA5KTsKIAkJfSBlbHNlIHsKIAkJCWJyZWFrOwogCQl9CiAJfSB3aGlsZSAoY250JiM0MzsmIzQzOyAmbHQ7IDEwMCk7CiAKLQlydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgaXYsIGlfdmFsdWUpOwotCXJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBxdiwgcV92YWx1ZSk7CiYjNDM7CSppX3ZhbHVlID0gcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIGl2KTsKJiM0MzsJKnFfdmFsdWUgPSBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgcXYpOwogfQogCiBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3JmX21vZGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwKIAkJCQkgICAgIHUzMiAqaV92YWx1ZSwgdTMyICpxX3ZhbHVlKQogewotCXUzMiBpdltEQUNLX1NOXzg4MjJDXSwgcXZbREFDS19TTl84ODIyQ107CiYjNDM7CXMzMiBpdltEQUNLX1NOXzg4MjJDXSwgcXZbREFDS19TTl84ODIyQ107CiAJdTMyIHJmX2EsIHJmX2I7CiAKIAlyZl9hID0gcnR3X3JlYWRfcmYocnR3ZGV2LCBSRl9QQVRIX0EsIDB4MCwgUkZSRUdfTUFTSyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTM0CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTY3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgcnR3ODgyMmMgREFDIENhbGlicmF0aW9uIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggdG91Y2hlcyBzZXZlcmFsIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGBydHc4ODIyYy5jYCBmaWxlLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIERBQyBJUSBjYWxpYnJhdGlvbi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IGl0JiMzOTtzIHJlZmFjdG9yaW5nIGFuZCBvcHRpbWl6aW5nIGV4aXN0aW5nIGNvZGUsIHdoaWNoIGlzIGdvb2QuIFRoZSBrZXkgY2hhbmdlcyBJJiMzOTttIHNlZWluZyBhcmUgYXJvdW5kIGBydHc4ODIyY19kYWNfaXFfY21wX3MzMmAsIGBydHc4ODIyY19kYWNfaXFfc29ydGAsIGBydHc4ODIyY19kYWNfaXFfb2Zmc2V0YCwgYHJ0dzg4MjJjX2RhY19pcV9jaGVja2AsIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAsIGFuZCBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2hgLCBhbmQgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAuIEl0JiMzOTtzIGNvbnZlcnRpbmcgdGhlIGBpdmAgYW5kIGBxdmAgYXJyYXlzIHRvIGBzMzJgIGluIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgLCB3aGljaCBzZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIHNpZ25lZCBpbnRlZ2VyIGNoYW5nZS4gVGhlIHJlcGxhY2VtZW50IG9mIGEgY3VzdG9tIHNvcnQgd2l0aCBgc29ydCgpYCBmcm9tIGBsaW51eC9zb3J0LmhgIGlzIGEgc3RhbmRhcmQgb3B0aW1pemF0aW9uIGFuZCBnb29kIGZvciBjb2RlIG1haW50ZW5hbmNlIGFuZCBsaWtlbHkgZm9yIHBlcmZvcm1hbmNlLiBTYW1lIHdpdGggdGhlIGFyaXRobWV0aWMgcmVwbGFjZW1lbnQgb2YgY3VzdG9tIG1pbi9tYXggbG9naWMgYW5kIG9mZnNldCBjYWxjdWxhdGlvbnMuCgpCdXQgdGhlbiBteSBhdHRlbnRpb24gaXMgZHJhd24gdG8gaG93IGBpdmAgYW5kIGBxdmAgYXJlIHBvcHVsYXRlZCBpbiBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgIHdoaWNoIGlzIHdoZXJlIEkgc2VlIHRoZSBwb3RlbnRpYWwgZm9yIGlzc3Vlcy4gSSBpbW1lZGlhdGVseSBzZWUgdGhlIHJlZ2lzdGVyIHJlYWQgYHJ0d19yZWFkMzJfbWFza2AgYW5kIGFzc2lnbm1lbnQgdG8gYGl2W2ldYCBhbmQgYHF2W2ldYC4gSSYjMzk7bSBjb25jZXJuZWQgYWJvdXQgdW5pbml0aWFsaXplZCBtZW1vcnkgaGVyZS4gTG9va2luZyBjbG9zZXIsIGl0IGxvb2tzIGxpa2UgYGl2YCBhbmQgYHF2YCBhcmUgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBpbiBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBhbmQgdGhlbiBwYXNzZWQgdG8gYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBoYXBwZW5zIGluc2lkZSBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgLiBUaGUgY29kZSBoYXMgYSBsb29wIHRoYXQgcmVhZHMgYSByZWdpc3RlciBhbmQgcG9wdWxhdGVzIGBpdmAgYW5kIGBxdmAgdW50aWwgaXQgcmVhY2hlcyBgREFDS19TTl84ODIyQ2Agb3IgYSBjb3VudGVyIGhpdHMgMTAwMDAuIFRoYXQgbG9va3Mgc3VzcGVjdDsgaWYgdGhlIGxvb3AgdGVybWluYXRlcyBlYXJseSwgdGhlIHJlc3Qgb2YgdGhlIGFycmF5IHdpbGwgYmUgdW5pbml0aWFsaXplZC4KCk9rYXksIEkgc2VlIGl0JiMzOTtzIHJlYWRpbmcgdGhlIGhhcmR3YXJlIHJlZ2lzdGVyLiBJZiBgY250YCBoaXRzIDEwMDAwIGJlZm9yZSBgaWAgcmVhY2hlcyBgREFDS19TTl84ODIyQ2AsIHRoZSByZXN0IG9mIGBpdmAgYW5kIGBxdmAgKndpbGwqIGJlIHVuaW5pdGlhbGl6ZWQuIEFuZCB0aGUgb3JpZ2luYWwgY29kZSBoYWQgdGhlIHNhbWUgdnVsbmVyYWJpbGl0eSEgU28gdGhlIHF1ZXN0aW9uIGlzOiBkb2VzIHRoaXMgcGF0Y2ggaW50cm9kdWNlIHRoaXMgb3IgbWVyZWx5IGV4cG9zZSBpdD8KCkxldCYjMzk7cyB0aGluay4gVGhlIHBhdGNoICpjaGFuZ2VzKiBob3cgYGl2YCBhbmQgYHF2YCBhcmUgc29ydGVkIGFuZCBwcm9jZXNzZWQgYWZ0ZXIgdGhlIHNhbXBsZS4gVGhlIG9yaWdpbmFsIHVzZWQgYSBjdXN0b20gc29ydCBgX19ydHc4ODIyY19kYWNfaXFfc29ydGAuIFRoaXMgcGF0Y2ggbm93IHVzZXMgYHNvcnQoKWAuIElmIGBpdmAgYW5kIGBxdmAgYXJlIHBhcnRpYWxseSB1bmluaXRpYWxpemVkLCB0aGUgYHNvcnQoKWAgZnVuY3Rpb24gaXMgZ29pbmcgdG8gcmVhZCB1bmluaXRpYWxpemVkIG1lbW9yeS4gQnV0IHNpbmNlIHRoZSBvcmlnaW5hbCBjb2RlIGhhZCB0aGUgc2FtZSBpc3N1ZSwgSSBkb24mIzM5O3QgdGhpbmsgdGhpcyBjaGFuZ2UgaW50cm9kdWNlZCBpdC4KClRoaXMgaXMgYSBoYXJkd2FyZSBjYWxpYnJhdGlvbiByb3V0aW5lOyB0aGUgbWVtb3J5IGlzIG9uIHRoZSBzdGFjay4gSXMgdGhpcyBhIHBvdGVudGlhbCBpbmZvcm1hdGlvbiBsZWFrPyBObywgYmVjYXVzZSB0aGUgcmVzdWx0cyBvZiB0aGUgY2FsaWJyYXRpb24gYXJlbiYjMzk7dCBzZW50IHRvIHVzZXIgc3BhY2UgZGlyZWN0bHkuIFRoZXkgYXJlIHVzZWQgdG8gY29tcHV0ZSBvdGhlciB2YWx1ZXMgdGhhdCBhcmUgd3JpdHRlbiB0byBoYXJkd2FyZSByZWdpc3RlcnMuIE9rYXksIHNvIGEgbGVhayBzZWVtcyB1bmxpa2VseS4gSXMgdGhlcmUgYSByaXNrIHRoYXQgaXQgY291bGQgY2F1c2UgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5PyBZZXMsIGBzb3J0KClgIGNvdWxkIGJyYW5jaCBvbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpZiBgaXZgIGFuZCBgcXZgIGFyZSBvbmx5IHBhcnRpYWxseSBmaWxsZWQuIEtNU0FOIGNvdWxkIGJlIGhlbHBmdWwgaGVyZSBiZWNhdXNlIEtNU0FOIGRldGVjdHMgdXNlcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gSWYgd2UgaGF2ZSB1bmluaXRpYWxpemVkIGRhdGEgaW4gdGhlIGFycmF5LCBLTVNBTiB3b3VsZCBjb21wbGFpbi4KClRoaW5raW5nIHRoaXMgdGhyb3VnaCwgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYCBpcyBjYWxsZWQgaW4gYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAuIElmIHRoZSBzYW1wbGluZyBmYWlscyB0byBmaWxsIHRoZSBgaXZgIGFuZCBgcXZgIGFycmF5cywgdGhlbiBgcnR3ODgyMmNfZGFjX2lxX3NvcnRgIHNvcnRzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGF0JiMzOTtzIGEgYnVnLiBJcyB0aGUgcGF0Y2ggaW50cm9kdWNpbmcgdGhpcz8gTm8uIFRoZSBvcmlnaW5hbCBjb2RlIGRpZCB0aGUgc2FtZSB0aGluZyB3aXRoIHRoZSBzYW1lIHBvdGVudGlhbCBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNlLiBUaGUgcGF0Y2ggaXMganVzdCByZWZhY3RvcmluZyB0aGUgc29ydCBhbmQgbWluL21heCBsb2dpYywgYnV0IHRoZSBmdW5kYW1lbnRhbCBpc3N1ZSBpcyB1bmNoYW5nZWQuCgpMZXQgbWUgY29uZmlybSB0aGF0OiBJZiB0aGUgY291bnQgcmVhY2hlcyAxMDAwMCBiZWZvcmUgdGhlIGFycmF5IGlzIGZ1bGwsIGBpYCBjb3VsZCBiZSBsZXNzIHRoYW4gYERBQ0tfU05fODgyMkNgLiBMZXQgbWUgcXVpY2tseSBsb29rIHVwIHRoZSBkZWZpbml0aW9uIG9mIGBEQUNLX1NOXzg4MjJDYC4KCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIERBQ0tfU05fODgyMkMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5oPTEzMz1jb25zdCBzdHJ1Y3QgcnR3X3RhYmxlIG5hbWUgIyMgX3RibCA9IHtcdFx0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuaC0xNDEtI2RlZmluZSBEQUNLX1JGXzg4MjJDXHRcdDFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuaDoxNDI6I2RlZmluZSBEQUNLX1NOXzg4MjJDXHRcdDEwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5oLTE0My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQzMQoJCQkJCQkJb3V0cHV0OiAyMzAKCQkJCQkJCXRob3VnaHRzOiAxMDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBydHc4ODIyYyBJUSBDYWxpYnJhdGlvbiBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoIGlzIGEgcmVmYWN0b3Jpbmcgb2YgdGhlIElRIGNhbGlicmF0aW9uIGxvZ2ljIHdpdGhpbiB0aGUgcnR3ODggd2lyZWxlc3MgZHJpdmVyIGZvciBSZWFsdGVrIGhhcmR3YXJlLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIHN3aXRjaGluZyBmcm9tIHNvbWUgY3VzdG9tLCBwb3RlbnRpYWxseSBsZXNzIGVmZmljaWVudCwgYWxnb3JpdGhtcyB0byB1c2UgZXN0YWJsaXNoZWQga2VybmVsIGZ1bmN0aW9ucyBsaWtlIGBzb3J0KClgIGFuZCBgc2lnbl9leHRlbmQzMmAgYW5kIHNpbXBsaWZ5aW5nIHRoZSBhcml0aG1ldGljIHdpdGggc2lnbmVkIDMyLWJpdCBpbnRlZ2VycyAoYHMzMmApLiBUaGlzIGZlZWxzIGxpa2UgYSBnb29kIG1vdmUgZm9yIGNvZGUgbWFpbnRhaW5hYmlsaXR5IGFuZCByZWFkYWJpbGl0eS4KClRoZSBrZXkgYXJlYSBvZiBjb25jZXJuLCBuYXR1cmFsbHksIGlzIG1lbW9yeSBzYWZldHksIHNwZWNpZmljYWxseSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGNvZGUgdXNlcyBhcnJheXMgYGl2YCBhbmQgYHF2YCB3aGljaCBhcmUgcG9wdWxhdGVkIGZyb20gaGFyZHdhcmUgcmVnaXN0ZXIgcmVhZHMgYW5kIHVzZWQgbG9jYWxseSB3aXRoaW4gYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAuIFRoZSBsb29wIGhhcyBhIG1heGltdW0gb2YgMTAwMDAgYXR0ZW1wdHMgdG8gZ2V0IHRoZSByZXF1aXJlZCBudW1iZXIgb2YgdmFsaWQgc2FtcGxlcyAoMTAwKS4gVGhlIGN1cnJlbnQgY29kZSwgYW5kIHRoZSByZWZhY3RvcmVkIGNvZGUsIHdpbGwgcG90ZW50aWFsbHkgcmVhZCB1bmluaXRpYWxpemVkIG1lbW9yeSBmcm9tIHRoZXNlIGFycmF5cyBpZiB0aGUgaGFyZHdhcmUgZmFpbHMgdG8gZGVsaXZlciBhIGdvb2Qgc2FtcGxlIHNldCB3aXRoaW4gMTAsMDAwIHRyaWVzLiAqSG93ZXZlciosIHRoaXMgaXNuJiMzOTt0IGEgKm5ldyogcHJvYmxlbSBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIEtNU0FOIHdvdWxkIGNhdGNoIGl0LCBidXQgdGhpcyBwcmUtZXhpc3RpbmcgcG90ZW50aWFsIGlzc3VlIChpZiBpdCBldmVuICppcyogYW4gaXNzdWUsIGdpdmVuIHRoZSAxMCwwMDAgYXR0ZW1wdHMpIGlzIHVucmVsYXRlZCB0byB0aGUgcGF0Y2guCgpJIHNlZSB0aGF0IHRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgY2hhbmdlcyBzb21lIGNhbGN1bGF0aW9ucyBpbnNpZGUgYHJ0dzg4MjJjX2RhY19pcV9vZmZzZXRgLCBidXQgaXQmIzM5O3Mgbm93IGp1c3Qgc3VtbWluZyB0aGUgbWlkZGxlIDgwIGVsZW1lbnRzIG9mIGEgdmVjdG9yLCBhbmQgdGhlbiBkb2luZyBzb21lIHNpbXBsZSBjYWxjdWxhdGlvbnMuIEFnYWluLCB0aGUgY29yZSBoZXJlIGlzIGp1c3QgYWxnb3JpdGhtaWMgc2ltcGxpZmljYXRpb24sIHNvIG5vLCB0aGlzIGlzbiYjMzk7dCBpbnRyb2R1Y2luZyBhIG5ldyByaXNrLiBUaGUgZGF0YSBpcyAqbm90KiBleHBvc2VkIHRvIHVzZXJzcGFjZS4gSXQgaXMgcHVyZWx5IGZvciBpbnRlcm5hbCBoYXJkd2FyZSBjYWxpYnJhdGlvbi4gVGhlcmVmb3JlLCB0aGVyZSYjMzk7cyBubyB3YXkgdG8gbGVhayB1bmluaXRpYWxpemVkIGRhdGEuIElmIHRoZXJlICppcyogdW5pbml0aWFsaXplZCBkYXRhLCBpdCB3b3VsZCBvbmx5IGJlIGluIHRoZSBzdGFjaywgYW5kIHRoZSB1c3VhbCBtZW1vcnkgc2FmZXR5IGNoZWNrcyBsaWtlIEtBU0FOIGFuZCBvdGhlciBzdGF0aWMgYW5hbHlzaXMgdG9vbHMgYXJlIGdvb2QgZW5vdWdoLgoKVGhlIGNvZGUgY2hhbmdlcyBpbmNsdWRlIHVzaW5nIGBzb3J0KClgIHdoaWNoIGlzIGZpbmUsIGFuZCBgc2lnbl9leHRlbmQzMmAgd2hpY2ggaXMgYWxzbyBmaW5lLiBUaGVyZSBhcmUgbm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gbmV3IHN0cnVjdHVyZXMgdGhhdCBhcmUgc2VudCB0byB1c2Vyc3BhY2UuIFRoaXMgc2VlbXMgZW50aXJlbHkgc2FmZS4gU28sIEkmIzM5O20gY29uZmlkZW50IGluIHNheWluZyB0aGF0IHRoZSBwYXRjaCBkb2VzICpub3QqIGludHJvZHVjZSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgdnVsbmVyYWJpbGl0aWVzLCBhbmQgS01TQU4gaXNuJiMzOTt0IHNwZWNpZmljYWxseSBuZWVkZWQgaGVyZS4gSW4gb3RoZXIgd29yZHMsIEkmIzM5O2Qgc2F5IGBOZWVkc0tNU0FOID0gZmFsc2VgLiBJdCYjMzk7cyBhIGNsZWFuIHJlZmFjdG9yaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdGhlIElRIGNhbGlicmF0aW9uIGxvZ2ljIGluIHRoZSBSZWFsdGVrIHJ0dzg4IHdpcmVsZXNzIGRyaXZlci4gSXQgcmVwbGFjZXMgY3VzdG9tIHNvcnRpbmcgYW5kIG1pbi9tYXggY2FsY3VsYXRpb25zIHdpdGggc3RhbmRhcmQga2VybmVsIGZ1bmN0aW9ucyAoYHNvcnQoKWApIGFuZCBzaW1wbGlmaWVzIHRoZSBhcml0aG1ldGljIGJ5IHVzaW5nIHNpZ25lZCAzMi1iaXQgaW50ZWdlcnMgKGBzMzJgKSBpbnN0ZWFkIG9mIHVuc2lnbmVkIGludGVnZXJzIHdpdGggbWFudWFsIHNpZ24gaGFuZGxpbmcuIFRoZSBhcnJheXMgYGl2YCBhbmQgYHF2YCBhcmUgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBhbmQgcG9wdWxhdGVkIGJ5IHJlYWRpbmcgaGFyZHdhcmUgcmVnaXN0ZXJzLiBXaGlsZSB0aGVyZSBpcyBhIHRoZW9yZXRpY2FsIHByZS1leGlzdGluZyBlZGdlIGNhc2Ugd2hlcmUgdGhlIGFycmF5cyBtaWdodCBub3QgYmUgZnVsbHkgcG9wdWxhdGVkIGlmIHRoZSBoYXJkd2FyZSBmYWlscyB0byBwcm92aWRlIGVub3VnaCB2YWxpZCBzYW1wbGVzIHdpdGhpbiAxMCwwMDAgaXRlcmF0aW9ucywgdGhpcyBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhhY2VyYmF0ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIFRoZSBkYXRhIGlzIHVzZWQgc3RyaWN0bHkgZm9yIGludGVybmFsIGhhcmR3YXJlIGNhbGlicmF0aW9uIGFuZCBpcyBub3QgY29waWVkIHRvIHVzZXJzcGFjZSwgbWVhbmluZyB0aGVyZSBpcyBubyByaXNrIG9mIGFuIGluZm8tbGVhay4gQW55IHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIG1lbW9yeSBjb3JydXB0aW9uIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gQSBkZWRpY2F0ZWQgS01TQU4gcnVuIGlzIG5vdCBqdXN0aWZpZWQgYXMgbm8gbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVhayB2dWxuZXJhYmlsaXRpZXMgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdGhlIElRIGNhbGlicmF0aW9uIGxvZ2ljIGluIHRoZSBSZWFsdGVrIHJ0dzg4IHdpcmVsZXNzIGRyaXZlci4gSXQgcmVwbGFjZXMgY3VzdG9tIHNvcnRpbmcgYW5kIG1pbi9tYXggY2FsY3VsYXRpb25zIHdpdGggc3RhbmRhcmQga2VybmVsIGZ1bmN0aW9ucyAoYHNvcnQoKWApIGFuZCBzaW1wbGlmaWVzIHRoZSBhcml0aG1ldGljIGJ5IHVzaW5nIHNpZ25lZCAzMi1iaXQgaW50ZWdlcnMgKGBzMzJgKSBpbnN0ZWFkIG9mIHVuc2lnbmVkIGludGVnZXJzIHdpdGggbWFudWFsIHNpZ24gaGFuZGxpbmcuIFRoZSBhcnJheXMgYGl2YCBhbmQgYHF2YCBhcmUgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBhbmQgcG9wdWxhdGVkIGJ5IHJlYWRpbmcgaGFyZHdhcmUgcmVnaXN0ZXJzLiBXaGlsZSB0aGVyZSBpcyBhIHRoZW9yZXRpY2FsIHByZS1leGlzdGluZyBlZGdlIGNhc2Ugd2hlcmUgdGhlIGFycmF5cyBtaWdodCBub3QgYmUgZnVsbHkgcG9wdWxhdGVkIGlmIHRoZSBoYXJkd2FyZSBmYWlscyB0byBwcm92aWRlIGVub3VnaCB2YWxpZCBzYW1wbGVzIHdpdGhpbiAxMCwwMDAgaXRlcmF0aW9ucywgdGhpcyBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhhY2VyYmF0ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIFRoZSBkYXRhIGlzIHVzZWQgc3RyaWN0bHkgZm9yIGludGVybmFsIGhhcmR3YXJlIGNhbGlicmF0aW9uIGFuZCBpcyBub3QgY29waWVkIHRvIHVzZXJzcGFjZSwgbWVhbmluZyB0aGVyZSBpcyBubyByaXNrIG9mIGFuIGluZm8tbGVhay4gQW55IHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIG1lbW9yeSBjb3JydXB0aW9uIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gQSBkZWRpY2F0ZWQgS01TQU4gcnVuIGlzIG5vdCBqdXN0aWZpZWQgYXMgbm8gbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVhayB2dWxuZXJhYmlsaXRpZXMgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEyOjE3LjE2NzEwODE3M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMDA3NTc0NzU3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVFc4OFwiLFxuICAgIFwiUlRXODhfODgyMkNVXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnR3ODgyMmNfcGh5X3NldF9wYXJhbVwiLFxuICAgIFwicnR3ODgyMmNfcmZfZGFjX2NhbFwiLFxuICAgIFwicnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIElRIGNhbGlicmF0aW9uIGxvZ2ljIGluIHRoZSBSZWFsdGVrIHJ0dzg4IHdpcmVsZXNzIGRyaXZlci4gSXQgcmVwbGFjZXMgY3VzdG9tIHNvcnRpbmcgYW5kIG1pbi9tYXggY2FsY3VsYXRpb25zIHdpdGggc3RhbmRhcmQga2VybmVsIGZ1bmN0aW9ucyAoYHNvcnQoKWApIGFuZCBzaW1wbGlmaWVzIHRoZSBhcml0aG1ldGljIGJ5IHVzaW5nIHNpZ25lZCAzMi1iaXQgaW50ZWdlcnMgKGBzMzJgKSBpbnN0ZWFkIG9mIHVuc2lnbmVkIGludGVnZXJzIHdpdGggbWFudWFsIHNpZ24gaGFuZGxpbmcuIFRoZSBhcnJheXMgYGl2YCBhbmQgYHF2YCBhcmUgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBhbmQgcG9wdWxhdGVkIGJ5IHJlYWRpbmcgaGFyZHdhcmUgcmVnaXN0ZXJzLiBXaGlsZSB0aGVyZSBpcyBhIHRoZW9yZXRpY2FsIHByZS1leGlzdGluZyBlZGdlIGNhc2Ugd2hlcmUgdGhlIGFycmF5cyBtaWdodCBub3QgYmUgZnVsbHkgcG9wdWxhdGVkIGlmIHRoZSBoYXJkd2FyZSBmYWlscyB0byBwcm92aWRlIGVub3VnaCB2YWxpZCBzYW1wbGVzIHdpdGhpbiAxMCwwMDAgaXRlcmF0aW9ucywgdGhpcyBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhhY2VyYmF0ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIFRoZSBkYXRhIGlzIHVzZWQgc3RyaWN0bHkgZm9yIGludGVybmFsIGhhcmR3YXJlIGNhbGlicmF0aW9uIGFuZCBpcyBub3QgY29waWVkIHRvIHVzZXJzcGFjZSwgbWVhbmluZyB0aGVyZSBpcyBubyByaXNrIG9mIGFuIGluZm8tbGVhay4gQW55IHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIG1lbW9yeSBjb3JydXB0aW9uIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gQSBkZWRpY2F0ZWQgS01TQU4gcnVuIGlzIG5vdCBqdXN0aWZpZWQgYXMgbm8gbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVhayB2dWxuZXJhYmlsaXRpZXMgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFJGIGNhbGlicmF0aW9uIGxvZ2ljIChzcGVjaWZpY2FsbHkgREFDIElRIGNhbGlicmF0aW9uKSBpbiB0aGUgUmVhbHRlayA4ODIyQyB3aXJlbGVzcyBkcml2ZXIgKGBydHc4ODIyYy5jYCkuIEl0IHJlcGxhY2VzIGEgY3VzdG9tIHNvcnRpbmcgaW1wbGVtZW50YXRpb24gd2l0aCB0aGUgc3RhbmRhcmQgYHNvcnQoKWAgZnVuY3Rpb24gYW5kIGNoYW5nZXMgdGhlIGxvZ2ljIGZvciBjYWxjdWxhdGluZyBJUSBvZmZzZXRzIGFuZCBjaGVja2luZyB2YWx1ZXMuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGJlY2F1c2UgdGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgZGV2aWNlcyAoYHJ0dzg4MjJjdWApLCB3aGljaCBjYW4gYmUgZW11bGF0ZWQgYnkgc3l6a2FsbGVyIHZpYSBgc3l6X3VzYl9jb25uZWN0YC4gV2hlbiB0aGUgZW11bGF0ZWQgVVNCIFdpLUZpIGludGVyZmFjZSBpcyBicm91Z2h0IHVwLCB0aGUgZHJpdmVyIHBlcmZvcm1zIFJGIGNhbGlicmF0aW9uLCB0cmlnZ2VyaW5nIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEyOjE3LjE2NzExMjY1M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAzNDUwMTc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDUxODc5YmQ3NzViZGQ4ZjE3YTdlMzdiZjU3YjI5MzA0ZDljMDhlMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyAxMyAwNjoxMjoxNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmNcXG5pbmRleCAyNDRjODAyNjQ3OWMyLi42ZmNkZmM2NGMzYjFkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuY1xcbkBAIC0zLDYgKzMsOCBAQFxcbiAgKi9cXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JpdG9wcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvc29ydC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXFwibWFpbi5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiY29leC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiZncuaFxcXCJcXG5AQCAtMTUzLDg0ICsxNTUsMzAgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX3Jlc3RvcmVfcmVnKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuIFxcdH1cXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgcnR3ODgyMmNfcmZfbWlubWF4X2NtcChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgdmFsdWUsXFxuLVxcdFxcdFxcdFxcdCAgIHUzMiAqbWluLCB1MzIgKm1heClcXG4rc3RhdGljIGludCBydHc4ODIyY19kYWNfaXFfY21wX3MzMihjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKVxcbiB7XFxuLVxcdGlmICh2YWx1ZSBcXHUwMDNlPSAweDIwMCkge1xcbi1cXHRcXHRpZiAoKm1pbiBcXHUwMDNlPSAweDIwMCkge1xcbi1cXHRcXHRcXHRpZiAoKm1pbiBcXHUwMDNlIHZhbHVlKVxcbi1cXHRcXHRcXHRcXHQqbWluID0gdmFsdWU7XFxuLVxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdCptaW4gPSB2YWx1ZTtcXG4tXFx0XFx0fVxcbi1cXHRcXHRpZiAoKm1heCBcXHUwMDNlPSAweDIwMCkge1xcbi1cXHRcXHRcXHRpZiAoKm1heCBcXHUwMDNjIHZhbHVlKVxcbi1cXHRcXHRcXHRcXHQqbWF4ID0gdmFsdWU7XFxuLVxcdFxcdH1cXG4tXFx0fSBlbHNlIHtcXG4tXFx0XFx0aWYgKCptaW4gXFx1MDAzYyAweDIwMCkge1xcbi1cXHRcXHRcXHRpZiAoKm1pbiBcXHUwMDNlIHZhbHVlKVxcbi1cXHRcXHRcXHRcXHQqbWluID0gdmFsdWU7XFxuLVxcdFxcdH1cXG4tXFxuLVxcdFxcdGlmICgqbWF4ICBcXHUwMDNlPSAweDIwMCkge1xcbi1cXHRcXHRcXHQqbWF4ID0gdmFsdWU7XFxuLVxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdGlmICgqbWF4IFxcdTAwM2MgdmFsdWUpXFxuLVxcdFxcdFxcdFxcdCptYXggPSB2YWx1ZTtcXG4tXFx0XFx0fVxcbi1cXHR9XFxuLX1cXG4rXFx0czMyIHZhID0gKihjb25zdCBzMzIgKilhO1xcbitcXHRzMzIgdmIgPSAqKGNvbnN0IHMzMiAqKWI7XFxuIFxcbi1zdGF0aWMgdm9pZCBfX3J0dzg4MjJjX2RhY19pcV9zb3J0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqdjEsIHUzMiAqdjIpXFxuLXtcXG4tXFx0aWYgKCp2MSBcXHUwMDNlPSAweDIwMCBcXHUwMDI2XFx1MDAyNiAqdjIgXFx1MDAzZT0gMHgyMDApIHtcXG4tXFx0XFx0aWYgKCp2MSBcXHUwMDNlICp2MilcXG4tXFx0XFx0XFx0c3dhcCgqdjEsICp2Mik7XFxuLVxcdH0gZWxzZSBpZiAoKnYxIFxcdTAwM2MgMHgyMDAgXFx1MDAyNlxcdTAwMjYgKnYyIFxcdTAwM2MgMHgyMDApIHtcXG4tXFx0XFx0aWYgKCp2MSBcXHUwMDNlICp2MilcXG4tXFx0XFx0XFx0c3dhcCgqdjEsICp2Mik7XFxuLVxcdH0gZWxzZSBpZiAoKnYxIFxcdTAwM2MgMHgyMDAgXFx1MDAyNlxcdTAwMjYgKnYyIFxcdTAwM2U9IDB4MjAwKSB7XFxuLVxcdFxcdHN3YXAoKnYxLCAqdjIpO1xcbi1cXHR9XFxuK1xcdHJldHVybiAodmEgXFx1MDAzZSB2YikgLSAodmEgXFx1MDAzYyB2Yik7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9zb3J0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqaXYsIHUzMiAqcXYpXFxuK3N0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9zb3J0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiAqaXYsIHMzMiAqcXYpXFxuIHtcXG4tXFx0dTMyIGksIGo7XFxuLVxcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgREFDS19TTl84ODIyQyAtIDE7IGkrKykge1xcbi1cXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgKERBQ0tfU05fODgyMkMgLSAxIC0gaSkgOyBqKyspIHtcXG4tXFx0XFx0XFx0X19ydHc4ODIyY19kYWNfaXFfc29ydChydHdkZXYsIFxcdTAwMjZpdltqXSwgXFx1MDAyNml2W2ogKyAxXSk7XFxuLVxcdFxcdFxcdF9fcnR3ODgyMmNfZGFjX2lxX3NvcnQocnR3ZGV2LCBcXHUwMDI2cXZbal0sIFxcdTAwMjZxdltqICsgMV0pO1xcbi1cXHRcXHR9XFxuLVxcdH1cXG4rXFx0c29ydChpdiwgREFDS19TTl84ODIyQywgc2l6ZW9mKHMzMiksIHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyLCBOVUxMKTtcXG4rXFx0c29ydChxdiwgREFDS19TTl84ODIyQywgc2l6ZW9mKHMzMiksIHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyLCBOVUxMKTtcXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2lxX29mZnNldChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKnZlYywgdTMyICp2YWwpXFxuK3N0YXRpYyBzMzIgcnR3ODgyMmNfZGFjX2lxX29mZnNldChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKnZlYylcXG4ge1xcbi1cXHR1MzIgcCwgbSwgdCwgaTtcXG4rXFx0czMyIHN1bSA9IDA7XFxuIFxcbi1cXHRtID0gMDtcXG4tXFx0cCA9IDA7XFxuLVxcdGZvciAoaSA9IDEwOyBpIFxcdTAwM2MgREFDS19TTl84ODIyQyAtIDEwOyBpKyspIHtcXG4tXFx0XFx0aWYgKHZlY1tpXSBcXHUwMDNlIDB4MjAwKVxcbi1cXHRcXHRcXHRtID0gKDB4NDAwIC0gdmVjW2ldKSArIG07XFxuLVxcdFxcdGVsc2VcXG4tXFx0XFx0XFx0cCA9IHZlY1tpXSArIHA7XFxuLVxcdH1cXG4rXFx0Zm9yICh1MzIgaSA9IDEwOyBpIFxcdTAwM2MgREFDS19TTl84ODIyQyAtIDEwOyBpKyspXFxuK1xcdFxcdHN1bSArPSB2ZWNbaV07XFxuIFxcbi1cXHRpZiAocCBcXHUwMDNlIG0pIHtcXG4tXFx0XFx0dCA9IHAgLSBtO1xcbi1cXHRcXHR0ID0gdCAvIChEQUNLX1NOXzg4MjJDIC0gMjApO1xcbi1cXHR9IGVsc2Uge1xcbi1cXHRcXHR0ID0gbSAtIHA7XFxuLVxcdFxcdHQgPSB0IC8gKERBQ0tfU05fODgyMkMgLSAyMCk7XFxuLVxcdFxcdGlmICh0ICE9IDB4MClcXG4tXFx0XFx0XFx0dCA9IDB4NDAwIC0gdDtcXG4tXFx0fVxcbitcXHRzMzIgYXZnID0gc3VtIC8gKERBQ0tfU05fODgyMkMgLSAyMCk7XFxuIFxcbi1cXHQqdmFsID0gdDtcXG4rXFx0cmV0dXJuIGF2ZyBcXHUwMDNlPSAwID8gYXZnIDogMHg0MDAgKyBhdmc7XFxuIH1cXG4gXFxuIHN0YXRpYyB1MzIgcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcih1OCBwYXRoKVxcbkBAIC0yNzEsMjkgKzIxOSwyNyBAQCBzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcih1OCBwYXRoKVxcbiBcXHRyZXR1cm4gYmFzZV9hZGRyO1xcbiB9XFxuIFxcbi1zdGF0aWMgYm9vbCBydHc4ODIyY19kYWNfaXFfY2hlY2soc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyIHZhbHVlKVxcbitzdGF0aWMgYm9vbCBydHc4ODIyY19kYWNfaXFfY2hlY2soc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyIHZhbHVlKVxcbiB7XFxuLVxcdGJvb2wgcmV0ID0gdHJ1ZTtcXG4gXFxuLVxcdGlmICgodmFsdWUgXFx1MDAzZT0gMHgyMDAgXFx1MDAyNlxcdTAwMjYgKDB4NDAwIC0gdmFsdWUpIFxcdTAwM2UgMHg2NCkgfHxcXG4tXFx0ICAgICh2YWx1ZSBcXHUwMDNjIDB4MjAwIFxcdTAwMjZcXHUwMDI2IHZhbHVlIFxcdTAwM2UgMHg2NCkpIHtcXG4tXFx0XFx0cmV0ID0gZmFsc2U7XFxuK1xcdGlmICh2YWx1ZSBcXHUwMDNlIDEwMCB8fCB2YWx1ZSBcXHUwMDNjIC0xMDApIHtcXG4gXFx0XFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLCBcXFwiW0RBQ0tdIEVycm9yIG92ZXJmbG93XFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXHR9XFxuIFxcbi1cXHRyZXR1cm4gcmV0O1xcbitcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdilcXG4rc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdilcXG4ge1xcbiBcXHR1MzIgdGVtcDtcXG4tXFx0aW50IGkgPSAwLCBjbnQgPSAwO1xcbitcXHR1MzIgaSA9IDAsIGNudCA9IDA7XFxuIFxcbiBcXHR3aGlsZSAoaSBcXHUwMDNjIERBQ0tfU05fODgyMkMgXFx1MDAyNlxcdTAwMjYgY250IFxcdTAwM2MgMTAwMDApIHtcXG4gXFx0XFx0Y250Kys7XFxuIFxcdFxcdHRlbXAgPSBydHdfcmVhZDMyX21hc2socnR3ZGV2LCAweDJkYmMsIDB4M2ZmZmZmKTtcXG4tXFx0XFx0aXZbaV0gPSAodGVtcCBcXHUwMDI2IDB4M2ZmMDAwKSBcXHUwMDNlXFx1MDAzZSAxMjtcXG4tXFx0XFx0cXZbaV0gPSB0ZW1wIFxcdTAwMjYgMHgzZmY7XFxuK1xcdFxcdGl2W2ldID0gc2lnbl9leHRlbmQzMigodGVtcCBcXHUwMDI2IDB4M2ZmMDAwKSBcXHUwMDNlXFx1MDAzZSAxMiwgOSk7XFxuK1xcdFxcdHF2W2ldID0gc2lnbl9leHRlbmQzMih0ZW1wIFxcdTAwMjYgMHgzZmYsIDkpO1xcbiBcXG4gXFx0XFx0aWYgKHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIGl2W2ldKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHJ0d2RldiwgcXZbaV0pKVxcbkBAIC0zMDIsMTMgKzI0OCwxMiBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKml2LCB1MzIgKnF2KVxcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbi1cXHRcXHRcXHRcXHQgICAgICAgdTMyICppdiwgdTMyICpxdixcXG4rXFx0XFx0XFx0XFx0ICAgICAgIHMzMiAqaXYsIHMzMiAqcXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgICB1MzIgKmlfdmFsdWUsIHUzMiAqcV92YWx1ZSlcXG4ge1xcbi1cXHR1MzIgaV9tYXggPSAwLCBxX21heCA9IDAsIGlfbWluID0gMCwgcV9taW4gPSAwO1xcbi1cXHR1MzIgaV9kZWx0YSwgcV9kZWx0YTtcXG4rXFx0czMyIGlfbWF4ID0gMCwgcV9tYXggPSAwLCBpX21pbiA9IDAsIHFfbWluID0gMDtcXG4gXFx0dTMyIHRlbXA7XFxuLVxcdGludCBpLCBjbnQgPSAwO1xcbitcXHR1MzIgaSwgY250ID0gMDtcXG4gXFxuIFxcdGRvIHtcXG4gXFx0XFx0aV9taW4gPSBpdlswXTtcXG5AQCAtMzE2LDIzICsyNjEsMTggQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG4gXFx0XFx0cV9taW4gPSBxdlswXTtcXG4gXFx0XFx0cV9tYXggPSBxdlswXTtcXG4gXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIERBQ0tfU05fODgyMkM7IGkrKykge1xcbi1cXHRcXHRcXHRydHc4ODIyY19yZl9taW5tYXhfY21wKHJ0d2RldiwgaXZbaV0sIFxcdTAwMjZpX21pbiwgXFx1MDAyNmlfbWF4KTtcXG4tXFx0XFx0XFx0cnR3ODgyMmNfcmZfbWlubWF4X2NtcChydHdkZXYsIHF2W2ldLCBcXHUwMDI2cV9taW4sIFxcdTAwMjZxX21heCk7XFxuK1xcdFxcdFxcdGlmIChpdltpXSBcXHUwMDNjIGlfbWluKVxcbitcXHRcXHRcXHRcXHRpX21pbiA9IGl2W2ldO1xcbitcXHRcXHRcXHRpZiAoaXZbaV0gXFx1MDAzZSBpX21heClcXG4rXFx0XFx0XFx0XFx0aV9tYXggPSBpdltpXTtcXG4rXFx0XFx0XFx0aWYgKHF2W2ldIFxcdTAwM2MgcV9taW4pXFxuK1xcdFxcdFxcdFxcdHFfbWluID0gcXZbaV07XFxuK1xcdFxcdFxcdGlmIChxdltpXSBcXHUwMDNlIHFfbWF4KVxcbitcXHRcXHRcXHRcXHRxX21heCA9IHF2W2ldO1xcbiBcXHRcXHR9XFxuIFxcbi1cXHRcXHRpZiAoaV9tYXggXFx1MDAzYyAweDIwMCBcXHUwMDI2XFx1MDAyNiBpX21pbiBcXHUwMDNjIDB4MjAwKVxcbi1cXHRcXHRcXHRpX2RlbHRhID0gaV9tYXggLSBpX21pbjtcXG4tXFx0XFx0ZWxzZSBpZiAoaV9tYXggXFx1MDAzZT0gMHgyMDAgXFx1MDAyNlxcdTAwMjYgaV9taW4gXFx1MDAzZT0gMHgyMDApXFxuLVxcdFxcdFxcdGlfZGVsdGEgPSBpX21heCAtIGlfbWluO1xcbi1cXHRcXHRlbHNlXFxuLVxcdFxcdFxcdGlfZGVsdGEgPSBpX21heCArICgweDQwMCAtIGlfbWluKTtcXG4tXFxuLVxcdFxcdGlmIChxX21heCBcXHUwMDNjIDB4MjAwIFxcdTAwMjZcXHUwMDI2IHFfbWluIFxcdTAwM2MgMHgyMDApXFxuLVxcdFxcdFxcdHFfZGVsdGEgPSBxX21heCAtIHFfbWluO1xcbi1cXHRcXHRlbHNlIGlmIChxX21heCBcXHUwMDNlPSAweDIwMCBcXHUwMDI2XFx1MDAyNiBxX21pbiBcXHUwMDNlPSAweDIwMClcXG4tXFx0XFx0XFx0cV9kZWx0YSA9IHFfbWF4IC0gcV9taW47XFxuLVxcdFxcdGVsc2VcXG4tXFx0XFx0XFx0cV9kZWx0YSA9IHFfbWF4ICsgKDB4NDAwIC0gcV9taW4pO1xcbitcXHRcXHR1MzIgaV9kZWx0YSA9ICh1MzIpKGlfbWF4IC0gaV9taW4pO1xcbitcXHRcXHR1MzIgcV9kZWx0YSA9ICh1MzIpKHFfbWF4IC0gcV9taW4pO1xcbiBcXG4gXFx0XFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLFxcbiBcXHRcXHRcXHRcXFwiW0RBQ0tdIGk6IG1pbj0weCUwOHgsIG1heD0weCUwOHgsIGRlbHRhPTB4JTA4eFxcXFxuXFxcIixcXG5AQCAtMzQ1LDI0ICsyODUsMjQgQEAgc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2goc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG4gXFxuIFxcdFxcdGlmIChpX2RlbHRhIFxcdTAwM2UgNSB8fCBxX2RlbHRhIFxcdTAwM2UgNSkge1xcbiBcXHRcXHRcXHR0ZW1wID0gcnR3X3JlYWQzMl9tYXNrKHJ0d2RldiwgMHgyZGJjLCAweDNmZmZmZik7XFxuLVxcdFxcdFxcdGl2WzBdID0gKHRlbXAgXFx1MDAyNiAweDNmZjAwMCkgXFx1MDAzZVxcdTAwM2UgMTI7XFxuLVxcdFxcdFxcdHF2WzBdID0gdGVtcCBcXHUwMDI2IDB4M2ZmO1xcbitcXHRcXHRcXHRpdlswXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgXFx1MDAyNiAweDNmZjAwMCkgXFx1MDAzZVxcdTAwM2UgMTIsIDkpO1xcbitcXHRcXHRcXHRxdlswXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCBcXHUwMDI2IDB4M2ZmLCA5KTtcXG4gXFx0XFx0XFx0dGVtcCA9IHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpO1xcbi1cXHRcXHRcXHRpdltEQUNLX1NOXzg4MjJDIC0gMV0gPSAodGVtcCBcXHUwMDI2IDB4M2ZmMDAwKSBcXHUwMDNlXFx1MDAzZSAxMjtcXG4tXFx0XFx0XFx0cXZbREFDS19TTl84ODIyQyAtIDFdID0gdGVtcCBcXHUwMDI2IDB4M2ZmO1xcbitcXHRcXHRcXHRpdltEQUNLX1NOXzg4MjJDIC0gMV0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wIFxcdTAwMjYgMHgzZmYwMDApIFxcdTAwM2VcXHUwMDNlIDEyLCA5KTtcXG4rXFx0XFx0XFx0cXZbREFDS19TTl84ODIyQyAtIDFdID0gc2lnbl9leHRlbmQzMih0ZW1wIFxcdTAwMjYgMHgzZmYsIDkpO1xcbiBcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0fVxcbiBcXHR9IHdoaWxlIChjbnQrKyBcXHUwMDNjIDEwMCk7XFxuIFxcbi1cXHRydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgaXYsIGlfdmFsdWUpO1xcbi1cXHRydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgcXYsIHFfdmFsdWUpO1xcbitcXHQqaV92YWx1ZSA9IHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBpdik7XFxuK1xcdCpxX3ZhbHVlID0gcnR3ODgyMmNfZGFjX2lxX29mZnNldChydHdkZXYsIHF2KTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgdTMyICppX3ZhbHVlLCB1MzIgKnFfdmFsdWUpXFxuIHtcXG4tXFx0dTMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTtcXG4rXFx0czMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTtcXG4gXFx0dTMyIHJmX2EsIHJmX2I7XFxuIFxcbiBcXHRyZl9hID0gcnR3X3JlYWRfcmYocnR3ZGV2LCBSRl9QQVRIX0EsIDB4MCwgUkZSRUdfTUFTSyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEyOjE3LjY3MTMyNTc5OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI3NzU4ODE3MTI2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVFc4OFwiLFxuICAgIFwiUlRXODhfODgyMkNVXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnR3ODgyMmNfcGh5X3NldF9wYXJhbVwiLFxuICAgIFwicnR3ODgyMmNfcmZfZGFjX2NhbFwiLFxuICAgIFwicnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFJGIGNhbGlicmF0aW9uIGxvZ2ljIChzcGVjaWZpY2FsbHkgREFDIElRIGNhbGlicmF0aW9uKSBpbiB0aGUgUmVhbHRlayA4ODIyQyB3aXJlbGVzcyBkcml2ZXIgKGBydHc4ODIyYy5jYCkuIEl0IHJlcGxhY2VzIGEgY3VzdG9tIHNvcnRpbmcgaW1wbGVtZW50YXRpb24gd2l0aCB0aGUgc3RhbmRhcmQgYHNvcnQoKWAgZnVuY3Rpb24gYW5kIGNoYW5nZXMgdGhlIGxvZ2ljIGZvciBjYWxjdWxhdGluZyBJUSBvZmZzZXRzIGFuZCBjaGVja2luZyB2YWx1ZXMuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGJlY2F1c2UgdGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgZGV2aWNlcyAoYHJ0dzg4MjJjdWApLCB3aGljaCBjYW4gYmUgZW11bGF0ZWQgYnkgc3l6a2FsbGVyIHZpYSBgc3l6X3VzYl9jb25uZWN0YC4gV2hlbiB0aGUgZW11bGF0ZWQgVVNCIFdpLUZpIGludGVyZmFjZSBpcyBicm91Z2h0IHVwLCB0aGUgZHJpdmVyIHBlcmZvcm1zIFJGIGNhbGlicmF0aW9uLCB0cmlnZ2VyaW5nIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQ1MTg3OWJkNzc1YmRkOGYxN2E3ZTM3YmY1N2IyOTMwNGQ5YzA4ZTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAwNjoxMjoxNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuY1xuaW5kZXggMjQ0YzgwMjY0NzljMi4uNmZjZGZjNjRjM2IxZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jXG5AQCAtMyw2ICszLDggQEBcbiAgKi9cbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdG9wcy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvc29ydC5oXHUwMDNlXG4gI2luY2x1ZGUgXCJtYWluLmhcIlxuICNpbmNsdWRlIFwiY29leC5oXCJcbiAjaW5jbHVkZSBcImZ3LmhcIlxuQEAgLTE1Myw4NCArMTU1LDMwIEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19yZXN0b3JlX3JlZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgdm9pZCBydHc4ODIyY19yZl9taW5tYXhfY21wKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiB2YWx1ZSxcbi1cdFx0XHRcdCAgIHUzMiAqbWluLCB1MzIgKm1heClcbitzdGF0aWMgaW50IHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpXG4ge1xuLVx0aWYgKHZhbHVlIFx1MDAzZT0gMHgyMDApIHtcbi1cdFx0aWYgKCptaW4gXHUwMDNlPSAweDIwMCkge1xuLVx0XHRcdGlmICgqbWluIFx1MDAzZSB2YWx1ZSlcbi1cdFx0XHRcdCptaW4gPSB2YWx1ZTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHQqbWluID0gdmFsdWU7XG4tXHRcdH1cbi1cdFx0aWYgKCptYXggXHUwMDNlPSAweDIwMCkge1xuLVx0XHRcdGlmICgqbWF4IFx1MDAzYyB2YWx1ZSlcbi1cdFx0XHRcdCptYXggPSB2YWx1ZTtcbi1cdFx0fVxuLVx0fSBlbHNlIHtcbi1cdFx0aWYgKCptaW4gXHUwMDNjIDB4MjAwKSB7XG4tXHRcdFx0aWYgKCptaW4gXHUwMDNlIHZhbHVlKVxuLVx0XHRcdFx0Km1pbiA9IHZhbHVlO1xuLVx0XHR9XG4tXG4tXHRcdGlmICgqbWF4ICBcdTAwM2U9IDB4MjAwKSB7XG4tXHRcdFx0Km1heCA9IHZhbHVlO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdGlmICgqbWF4IFx1MDAzYyB2YWx1ZSlcbi1cdFx0XHRcdCptYXggPSB2YWx1ZTtcbi1cdFx0fVxuLVx0fVxuLX1cbitcdHMzMiB2YSA9ICooY29uc3QgczMyICopYTtcbitcdHMzMiB2YiA9ICooY29uc3QgczMyICopYjtcbiBcbi1zdGF0aWMgdm9pZCBfX3J0dzg4MjJjX2RhY19pcV9zb3J0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqdjEsIHUzMiAqdjIpXG4te1xuLVx0aWYgKCp2MSBcdTAwM2U9IDB4MjAwIFx1MDAyNlx1MDAyNiAqdjIgXHUwMDNlPSAweDIwMCkge1xuLVx0XHRpZiAoKnYxIFx1MDAzZSAqdjIpXG4tXHRcdFx0c3dhcCgqdjEsICp2Mik7XG4tXHR9IGVsc2UgaWYgKCp2MSBcdTAwM2MgMHgyMDAgXHUwMDI2XHUwMDI2ICp2MiBcdTAwM2MgMHgyMDApIHtcbi1cdFx0aWYgKCp2MSBcdTAwM2UgKnYyKVxuLVx0XHRcdHN3YXAoKnYxLCAqdjIpO1xuLVx0fSBlbHNlIGlmICgqdjEgXHUwMDNjIDB4MjAwIFx1MDAyNlx1MDAyNiAqdjIgXHUwMDNlPSAweDIwMCkge1xuLVx0XHRzd2FwKCp2MSwgKnYyKTtcbi1cdH1cbitcdHJldHVybiAodmEgXHUwMDNlIHZiKSAtICh2YSBcdTAwM2MgdmIpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKml2LCB1MzIgKnF2KVxuK3N0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9zb3J0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiAqaXYsIHMzMiAqcXYpXG4ge1xuLVx0dTMyIGksIGo7XG4tXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBEQUNLX1NOXzg4MjJDIC0gMTsgaSsrKSB7XG4tXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIChEQUNLX1NOXzg4MjJDIC0gMSAtIGkpIDsgaisrKSB7XG4tXHRcdFx0X19ydHc4ODIyY19kYWNfaXFfc29ydChydHdkZXYsIFx1MDAyNml2W2pdLCBcdTAwMjZpdltqICsgMV0pO1xuLVx0XHRcdF9fcnR3ODgyMmNfZGFjX2lxX3NvcnQocnR3ZGV2LCBcdTAwMjZxdltqXSwgXHUwMDI2cXZbaiArIDFdKTtcbi1cdFx0fVxuLVx0fVxuK1x0c29ydChpdiwgREFDS19TTl84ODIyQywgc2l6ZW9mKHMzMiksIHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyLCBOVUxMKTtcbitcdHNvcnQocXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICp2ZWMsIHUzMiAqdmFsKVxuK3N0YXRpYyBzMzIgcnR3ODgyMmNfZGFjX2lxX29mZnNldChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKnZlYylcbiB7XG4tXHR1MzIgcCwgbSwgdCwgaTtcbitcdHMzMiBzdW0gPSAwO1xuIFxuLVx0bSA9IDA7XG4tXHRwID0gMDtcbi1cdGZvciAoaSA9IDEwOyBpIFx1MDAzYyBEQUNLX1NOXzg4MjJDIC0gMTA7IGkrKykge1xuLVx0XHRpZiAodmVjW2ldIFx1MDAzZSAweDIwMClcbi1cdFx0XHRtID0gKDB4NDAwIC0gdmVjW2ldKSArIG07XG4tXHRcdGVsc2Vcbi1cdFx0XHRwID0gdmVjW2ldICsgcDtcbi1cdH1cbitcdGZvciAodTMyIGkgPSAxMDsgaSBcdTAwM2MgREFDS19TTl84ODIyQyAtIDEwOyBpKyspXG4rXHRcdHN1bSArPSB2ZWNbaV07XG4gXG4tXHRpZiAocCBcdTAwM2UgbSkge1xuLVx0XHR0ID0gcCAtIG07XG4tXHRcdHQgPSB0IC8gKERBQ0tfU05fODgyMkMgLSAyMCk7XG4tXHR9IGVsc2Uge1xuLVx0XHR0ID0gbSAtIHA7XG4tXHRcdHQgPSB0IC8gKERBQ0tfU05fODgyMkMgLSAyMCk7XG4tXHRcdGlmICh0ICE9IDB4MClcbi1cdFx0XHR0ID0gMHg0MDAgLSB0O1xuLVx0fVxuK1x0czMyIGF2ZyA9IHN1bSAvIChEQUNLX1NOXzg4MjJDIC0gMjApO1xuIFxuLVx0KnZhbCA9IHQ7XG4rXHRyZXR1cm4gYXZnIFx1MDAzZT0gMCA/IGF2ZyA6IDB4NDAwICsgYXZnO1xuIH1cbiBcbiBzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIodTggcGF0aClcbkBAIC0yNzEsMjkgKzIxOSwyNyBAQCBzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcih1OCBwYXRoKVxuIFx0cmV0dXJuIGJhc2VfYWRkcjtcbiB9XG4gXG4tc3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiB2YWx1ZSlcbitzdGF0aWMgYm9vbCBydHc4ODIyY19kYWNfaXFfY2hlY2soc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyIHZhbHVlKVxuIHtcbi1cdGJvb2wgcmV0ID0gdHJ1ZTtcbiBcbi1cdGlmICgodmFsdWUgXHUwMDNlPSAweDIwMCBcdTAwMjZcdTAwMjYgKDB4NDAwIC0gdmFsdWUpIFx1MDAzZSAweDY0KSB8fFxuLVx0ICAgICh2YWx1ZSBcdTAwM2MgMHgyMDAgXHUwMDI2XHUwMDI2IHZhbHVlIFx1MDAzZSAweDY0KSkge1xuLVx0XHRyZXQgPSBmYWxzZTtcbitcdGlmICh2YWx1ZSBcdTAwM2UgMTAwIHx8IHZhbHVlIFx1MDAzYyAtMTAwKSB7XG4gXHRcdHJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1JGSywgXCJbREFDS10gRXJyb3Igb3ZlcmZsb3dcXG5cIik7XG4rXHRcdHJldHVybiBmYWxzZTtcbiBcdH1cbiBcbi1cdHJldHVybiByZXQ7XG4rXHRyZXR1cm4gdHJ1ZTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdilcbitzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKml2LCBzMzIgKnF2KVxuIHtcbiBcdHUzMiB0ZW1wO1xuLVx0aW50IGkgPSAwLCBjbnQgPSAwO1xuK1x0dTMyIGkgPSAwLCBjbnQgPSAwO1xuIFxuIFx0d2hpbGUgKGkgXHUwMDNjIERBQ0tfU05fODgyMkMgXHUwMDI2XHUwMDI2IGNudCBcdTAwM2MgMTAwMDApIHtcbiBcdFx0Y250Kys7XG4gXHRcdHRlbXAgPSBydHdfcmVhZDMyX21hc2socnR3ZGV2LCAweDJkYmMsIDB4M2ZmZmZmKTtcbi1cdFx0aXZbaV0gPSAodGVtcCBcdTAwMjYgMHgzZmYwMDApIFx1MDAzZVx1MDAzZSAxMjtcbi1cdFx0cXZbaV0gPSB0ZW1wIFx1MDAyNiAweDNmZjtcbitcdFx0aXZbaV0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyLCA5KTtcbitcdFx0cXZbaV0gPSBzaWduX2V4dGVuZDMyKHRlbXAgXHUwMDI2IDB4M2ZmLCA5KTtcbiBcbiBcdFx0aWYgKHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIGl2W2ldKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIHF2W2ldKSlcbkBAIC0zMDIsMTMgKzI0OCwxMiBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKml2LCB1MzIgKnF2KVxuIH1cbiBcbiBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuLVx0XHRcdFx0ICAgICAgIHUzMiAqaXYsIHUzMiAqcXYsXG4rXHRcdFx0XHQgICAgICAgczMyICppdiwgczMyICpxdixcbiBcdFx0XHRcdCAgICAgICB1MzIgKmlfdmFsdWUsIHUzMiAqcV92YWx1ZSlcbiB7XG4tXHR1MzIgaV9tYXggPSAwLCBxX21heCA9IDAsIGlfbWluID0gMCwgcV9taW4gPSAwO1xuLVx0dTMyIGlfZGVsdGEsIHFfZGVsdGE7XG4rXHRzMzIgaV9tYXggPSAwLCBxX21heCA9IDAsIGlfbWluID0gMCwgcV9taW4gPSAwO1xuIFx0dTMyIHRlbXA7XG4tXHRpbnQgaSwgY250ID0gMDtcbitcdHUzMiBpLCBjbnQgPSAwO1xuIFxuIFx0ZG8ge1xuIFx0XHRpX21pbiA9IGl2WzBdO1xuQEAgLTMxNiwyMyArMjYxLDE4IEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4gXHRcdHFfbWluID0gcXZbMF07XG4gXHRcdHFfbWF4ID0gcXZbMF07XG4gXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIERBQ0tfU05fODgyMkM7IGkrKykge1xuLVx0XHRcdHJ0dzg4MjJjX3JmX21pbm1heF9jbXAocnR3ZGV2LCBpdltpXSwgXHUwMDI2aV9taW4sIFx1MDAyNmlfbWF4KTtcbi1cdFx0XHRydHc4ODIyY19yZl9taW5tYXhfY21wKHJ0d2RldiwgcXZbaV0sIFx1MDAyNnFfbWluLCBcdTAwMjZxX21heCk7XG4rXHRcdFx0aWYgKGl2W2ldIFx1MDAzYyBpX21pbilcbitcdFx0XHRcdGlfbWluID0gaXZbaV07XG4rXHRcdFx0aWYgKGl2W2ldIFx1MDAzZSBpX21heClcbitcdFx0XHRcdGlfbWF4ID0gaXZbaV07XG4rXHRcdFx0aWYgKHF2W2ldIFx1MDAzYyBxX21pbilcbitcdFx0XHRcdHFfbWluID0gcXZbaV07XG4rXHRcdFx0aWYgKHF2W2ldIFx1MDAzZSBxX21heClcbitcdFx0XHRcdHFfbWF4ID0gcXZbaV07XG4gXHRcdH1cbiBcbi1cdFx0aWYgKGlfbWF4IFx1MDAzYyAweDIwMCBcdTAwMjZcdTAwMjYgaV9taW4gXHUwMDNjIDB4MjAwKVxuLVx0XHRcdGlfZGVsdGEgPSBpX21heCAtIGlfbWluO1xuLVx0XHRlbHNlIGlmIChpX21heCBcdTAwM2U9IDB4MjAwIFx1MDAyNlx1MDAyNiBpX21pbiBcdTAwM2U9IDB4MjAwKVxuLVx0XHRcdGlfZGVsdGEgPSBpX21heCAtIGlfbWluO1xuLVx0XHRlbHNlXG4tXHRcdFx0aV9kZWx0YSA9IGlfbWF4ICsgKDB4NDAwIC0gaV9taW4pO1xuLVxuLVx0XHRpZiAocV9tYXggXHUwMDNjIDB4MjAwIFx1MDAyNlx1MDAyNiBxX21pbiBcdTAwM2MgMHgyMDApXG4tXHRcdFx0cV9kZWx0YSA9IHFfbWF4IC0gcV9taW47XG4tXHRcdGVsc2UgaWYgKHFfbWF4IFx1MDAzZT0gMHgyMDAgXHUwMDI2XHUwMDI2IHFfbWluIFx1MDAzZT0gMHgyMDApXG4tXHRcdFx0cV9kZWx0YSA9IHFfbWF4IC0gcV9taW47XG4tXHRcdGVsc2Vcbi1cdFx0XHRxX2RlbHRhID0gcV9tYXggKyAoMHg0MDAgLSBxX21pbik7XG4rXHRcdHUzMiBpX2RlbHRhID0gKHUzMikoaV9tYXggLSBpX21pbik7XG4rXHRcdHUzMiBxX2RlbHRhID0gKHUzMikocV9tYXggLSBxX21pbik7XG4gXG4gXHRcdHJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1JGSyxcbiBcdFx0XHRcIltEQUNLXSBpOiBtaW49MHglMDh4LCBtYXg9MHglMDh4LCBkZWx0YT0weCUwOHhcXG5cIixcbkBAIC0zNDUsMjQgKzI4NSwyNCBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuIFxuIFx0XHRpZiAoaV9kZWx0YSBcdTAwM2UgNSB8fCBxX2RlbHRhIFx1MDAzZSA1KSB7XG4gXHRcdFx0dGVtcCA9IHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpO1xuLVx0XHRcdGl2WzBdID0gKHRlbXAgXHUwMDI2IDB4M2ZmMDAwKSBcdTAwM2VcdTAwM2UgMTI7XG4tXHRcdFx0cXZbMF0gPSB0ZW1wIFx1MDAyNiAweDNmZjtcbitcdFx0XHRpdlswXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgXHUwMDI2IDB4M2ZmMDAwKSBcdTAwM2VcdTAwM2UgMTIsIDkpO1xuK1x0XHRcdHF2WzBdID0gc2lnbl9leHRlbmQzMih0ZW1wIFx1MDAyNiAweDNmZiwgOSk7XG4gXHRcdFx0dGVtcCA9IHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpO1xuLVx0XHRcdGl2W0RBQ0tfU05fODgyMkMgLSAxXSA9ICh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyO1xuLVx0XHRcdHF2W0RBQ0tfU05fODgyMkMgLSAxXSA9IHRlbXAgXHUwMDI2IDB4M2ZmO1xuK1x0XHRcdGl2W0RBQ0tfU05fODgyMkMgLSAxXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgXHUwMDI2IDB4M2ZmMDAwKSBcdTAwM2VcdTAwM2UgMTIsIDkpO1xuK1x0XHRcdHF2W0RBQ0tfU05fODgyMkMgLSAxXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCBcdTAwMjYgMHgzZmYsIDkpO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4gXHR9IHdoaWxlIChjbnQrKyBcdTAwM2MgMTAwKTtcbiBcbi1cdHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBpdiwgaV92YWx1ZSk7XG4tXHRydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgcXYsIHFfdmFsdWUpO1xuK1x0KmlfdmFsdWUgPSBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgaXYpO1xuK1x0KnFfdmFsdWUgPSBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgcXYpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3JmX21vZGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbiBcdFx0XHRcdCAgICAgdTMyICppX3ZhbHVlLCB1MzIgKnFfdmFsdWUpXG4ge1xuLVx0dTMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTtcbitcdHMzMiBpdltEQUNLX1NOXzg4MjJDXSwgcXZbREFDS19TTl84ODIyQ107XG4gXHR1MzIgcmZfYSwgcmZfYjtcbiBcbiBcdHJmX2EgPSBydHdfcmVhZF9yZihydHdkZXYsIFJGX1BBVEhfQSwgMHgwLCBSRlJFR19NQVNLKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEyOjE3LjY3MTMyNzEzOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIxMjQxMzk3ODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRGVjaXNpb24gZm9yIFJlYWx0ZWsgODgyMkMgREFDIElRIENhbGlicmF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSBoYXZlIGEgcGF0Y2ggdG91Y2hpbmcgc2V2ZXJhbCBmdW5jdGlvbnM6IGBydHc4ODIyY19kYWNfaXFfY21wX3MzMmAsIGBydHc4ODIyY19kYWNfaXFfc29ydGAsIGV0Yy4gYWxsIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jYC4gVGhlc2UgYXJlIGNsZWFybHkgcmVsYXRlZCB0byBEQUMgSVEgY2FsaWJyYXRpb24gZm9yIHRoZSBSZWFsdGVrIDg4MjJDIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IFJGIGNhbGlicmF0aW9uLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHdoZXRoZXIgdGhlc2UgY2hhbmdlcyBpbnRyb2R1Y2UgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgd2FycmFudCBmdXp6aW5nLlxuXG5CdXQgd2FpdCwgdGhlIGluc3RydWN0aW9ucyBzcGVjaWZ5IHNvbWUgZXhlbXB0aW9ucy4gVGhlIGtleSBoZXJlIGlzIHdoZXRoZXIgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVS4gVGhleSBzcGVjaWZpY2FsbHkgY2FsbCBvdXQgcGh5c2ljYWwgUENJZS9VU0IgZGV2aWNlcyB0aGF0IGFyZSBkaWZmaWN1bHQgdG8gcmVhY2ggd2l0aG91dCBzcGVjaWZpYyBlbXVsYXRlZCBoYXJkd2FyZS5cblxuVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogSXMgYHJ0dzg4YCBhIGRyaXZlciBmb3IgYSBwaHlzaWNhbCBXaS1GaSBjYXJkPyBZZXMsIGl0IGlzIGZvciBSZWFsdGVrIDgwMi4xMWFjIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlcnMuIEl0J3Mgbm90IGEgdmlydHVhbCBkcml2ZXIgbGlrZSBgbWFjODAyMTFfaHdzaW1gLiBCdXQgY2FuIGl0IGJlIGVtdWxhdGVkIGluIFFFTVU/IFR5cGljYWxseSwgV2ktRmkgZHJpdmVycyBmb3IgcGh5c2ljYWwgUENJZS9VU0IgZGV2aWNlcyBhcmUgcHJvYmxlbWF0aWMgdW5sZXNzIHRoZXJlJ3MgZW11bGF0aW9uLlxuXG5Ob3csIHRoZSBpbnRlcmVzdGluZyBiaXQuIFRoZSBgcnR3ODhgIGRyaXZlciBzdXBwb3J0cyAqYm90aCogVVNCIGFuZCBQQ0llLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBVU0Igc2lkZSBpcyBlbXVsYXRhYmxlLiBGb3J0dW5hdGVseSwgSSByZW1lbWJlciB0aGF0IHN5emthbGxlciBoYXMgYHN5el91c2JfY29ubmVjdGAsIHdoaWNoIGNvdWxkIGJlIGEgd2F5IHRvIGVtdWxhdGUgVVNCIGRldmljZXMuIFNvLCBpcyB0aGVyZSBhIFVTQiBkcml2ZXIgY29tcG9uZW50IGluIGBydHc4OGA/IFRoYXQncyB0aGUga2V5IHRvIG1ha2luZyBhIGRlY2lzaW9uIGhlcmUuIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgdGhlIFVTQiBwYXRoIGlzIHByZXNlbnQgYW5kIGV4cGxvaXRhYmxlIHZpYSBzdGFuZGFyZCBlbXVsYXRpb24gdGVjaG5pcXVlcy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlIHRvIGJlIGNlcnRhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1MzcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0ODQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxMjozOC45MTI3MjkxNDhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc5OTY5MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODguKnVzYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlPTExMD1ydHc4OF9zZGlvLW9ianNcXHRcXHRcXHQ6PSBzZGlvLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTExMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjExMjpvYmotJChDT05GSUdfUlRXODhfVVNCKVxcdFxcdCs9IHJ0dzg4X3VzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZToxMTM6cnR3ODhfdXNiLW9ianNcXHRcXHRcXHQ6PSB1c2Iub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYnUuYz04Nj1NT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgcnR3Xzg4MjJidV9pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYnUuYy04Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJidS5jOjg4OnN0YXRpYyBpbnQgcnR3ODgyMmJ1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmJ1LmMtODktXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYz0yOD1NT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgcnR3Xzg4MjJjdV9pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYy0yOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jOjMwOnN0YXRpYyBpbnQgcnR3ODgyMmN1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmN1LmMtMzEtXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jPTgwPXN0YXRpYyB2b2lkIHJ0dzg4MTJhX3JlYWRfcmZlX3R5cGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODh4eGEuYy0xMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jOjEyNDpzdGF0aWMgdm9pZCBydHc4OHh4YV9yZWFkX3VzYl90eXBlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jLTEyNS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmM9MjAwPWludCBydHc4OHh4YV9yZWFkX2VmdXNlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4ICpsb2dfbWFwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4OHh4YS5jLTI0MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmM6MjQxOlxcdHJ0dzg4eHhhX3JlYWRfdXNiX3R5cGUocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4eHhhLmMtMjQyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYz05NzQ9c3RhdGljIGludCBydHdfdXNiX2luaXRfcngoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmMtOTc5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmM6OTgwOlxcdHJ0d3VzYi1cXHUwMDNlcnh3cSA9IGFsbG9jX3dvcmtxdWV1ZShcXFwicnR3ODhfdXNiOiByeCB3cVxcXCIsIFdRX0JIIHwgV1FfUEVSQ1BVLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmMtOTgxLVxcdFxcdFxcdFxcdCAgICAgICAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmM9MTAyNT1zdGF0aWMgaW50IHJ0d191c2JfaW5pdF90eChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC91c2IuYy0xMDI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmM6MTAzMDpcXHRydHd1c2ItXFx1MDAzZXR4d3EgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZShcXFwicnR3ODhfdXNiOiB0eCB3cVxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvdXNiLmMtMTAzMS1cXHRpZiAoIXJ0d3VzYi1cXHUwMDNldHh3cSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxMjozOC45ODA3MzAxOTZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTQzMjcyOTU5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBydHc4OCBEcml2ZXIgRmFtaWx5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgdG8gYmUgdG91Y2hpbmcgYHJ0dzg4MjJjLmNgLiBSaWdodCwgc28gdGhpcyBpcyBwYXJ0IG9mIHRoZSBgcnR3ODhgIGRyaXZlciwgd2hpY2ggSSBrbm93IGFsc28gaGFzIGEgVVNCIGNvbXBvbmVudCwgc3BlY2lmaWNhbGx5IGBydHc4OF91c2JgLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgb3Igbm90IHRoaXMgYHJ0dzg4MjJjYCBpcyBhY3R1YWxseSB1c2VkIGJ5IHRoZSBVU0IgaW1wbGVtZW50YXRpb24uIEl0J3MgYSBrZXkgcXVlc3Rpb24gaGVyZS4gVG8gZmlndXJlIHRoaXMgb3V0LCBJJ20gZ29pbmcgdG8gbmVlZCB0byBkaWcgaW50byB0aGUgVVNCIHNwZWNpZmljIGZpbGVzLiBJdCdzIHRpbWUgdG8gY2hlY2sgYHJ0dzg4MjJjdS5jYCBvciBzb21ldGhpbmcgYW5hbG9nb3VzLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBhbnN3ZXJzIEkgbmVlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU4OCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEzOjAwLjQxMzQ2Mjg5OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzQ2NzI4NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODgyMmNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNjMzIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlPTM3PW9iai0kKENPTkZJR19SVFc4OF84ODIyQylcXHQrPSBydHc4OF84ODIyYy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTozODpydHc4OF84ODIyYy1vYmpzXFx0XFx0Oj0gcnR3ODgyMmMubyBydHc4ODIyY190YWJsZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlPTQwPW9iai0kKENPTkZJR19SVFc4OF84ODIyQ0UpXFx0Kz0gcnR3ODhfODgyMmNlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlOjQxOnJ0dzg4Xzg4MjJjZS1vYmpzXFx0XFx0Oj0gcnR3ODgyMmNlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L01ha2VmaWxlLTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU9NDM9b2JqLSQoQ09ORklHX1JUVzg4Xzg4MjJDUylcXHQrPSBydHc4OF84ODIyY3Mub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGU6NDQ6cnR3ODhfODgyMmNzLW9ianNcXHRcXHQ6PSBydHc4ODIyY3Mub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvTWFrZWZpbGUtNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZT00Nj1vYmotJChDT05GSUdfUlRXODhfODgyMkNVKVxcdCs9IHJ0dzg4Xzg4MjJjdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZTo0NzpydHc4OF84ODIyY3Utb2Jqc1xcdFxcdDo9IHJ0dzg4MjJjdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9NYWtlZmlsZS00OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMy0jaW5jbHVkZSBcXFwicGh5LmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE0OiNpbmNsdWRlIFxcXCJydHc4ODIyYy5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNTojaW5jbHVkZSBcXFwicnR3ODgyMmNfdGFibGUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTYtI2luY2x1ZGUgXFxcIm1hYy5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyNTpzdGF0aWMgdm9pZCBydHc4ODIyY19jb25maWdfdHJ4X21vZGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggdHhfcGF0aCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjYtXFx0XFx0XFx0XFx0ICAgICB1OCByeF9wYXRoLCBib29sIGlzX3R4Ml9wYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI4OnN0YXRpYyB2b2lkIHJ0dzg4MjJjZV9lZnVzZV9wYXJzaW5nKHN0cnVjdCBydHdfZWZ1c2UgKmVmdXNlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyOTpcXHRcXHRcXHRcXHQgICAgc3RydWN0IHJ0dzg4MjJjX2VmdXNlICptYXApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzQ6c3RhdGljIHZvaWQgcnR3ODgyMmN1X2VmdXNlX3BhcnNpbmcoc3RydWN0IHJ0d19lZnVzZSAqZWZ1c2UsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM1OlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgcnR3ODgyMmNfZWZ1c2UgKm1hcClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0MDpzdGF0aWMgdm9pZCBydHc4ODIyY3NfZWZ1c2VfcGFyc2luZyhzdHJ1Y3QgcnR3X2VmdXNlICplZnVzZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDE6XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBydHc4ODIyY19lZnVzZSAqbWFwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ2OnN0YXRpYyBpbnQgcnR3ODgyMmNfcmVhZF9lZnVzZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCAqbG9nX21hcClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00OC1cXHRzdHJ1Y3QgcnR3X2VmdXNlICplZnVzZSA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWVmdXNlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0OTpcXHRzdHJ1Y3QgcnR3ODgyMmNfZWZ1c2UgKm1hcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTAtXFx0aW50IGk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo1MjpcXHRtYXAgPSAoc3RydWN0IHJ0dzg4MjJjX2VmdXNlICopbG9nX21hcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzMtXFx0Y2FzZSBSVFdfSENJX1RZUEVfUENJRTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NzQ6XFx0XFx0cnR3ODgyMmNlX2VmdXNlX3BhcnNpbmcoZWZ1c2UsIG1hcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTc1LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03Ni1cXHRjYXNlIFJUV19IQ0lfVFlQRV9VU0I6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc3OlxcdFxcdHJ0dzg4MjJjdV9lZnVzZV9wYXJzaW5nKGVmdXNlLCBtYXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03OC1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzktXFx0Y2FzZSBSVFdfSENJX1RZUEVfU0RJTzpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODA6XFx0XFx0cnR3ODgyMmNzX2VmdXNlX3BhcnNpbmcoZWZ1c2UsIG1hcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTgxLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MDpzdGF0aWMgdm9pZCBydHc4ODIyY19oZWFkZXJfZmlsZV9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIGJvb2wgcHJlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMDM6c3RhdGljIHZvaWQgcnR3ODgyMmNfYmJfcmVzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjExMDpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfYmFja3VwX3JlZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTEtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBydHdfYmFja3VwX2luZm8gKmJhY2t1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEzOTpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfcmVzdG9yZV9yZWcoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQwLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHJ0d19iYWNrdXBfaW5mbyAqYmFja3VwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTU4OnN0YXRpYyBpbnQgcnR3ODgyMmNfZGFjX2lxX2NtcF9zMzIoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE2NjpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKml2LCBzMzIgKnF2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNjg6XFx0c29ydChpdiwgREFDS19TTl84ODIyQywgc2l6ZW9mKHMzMiksIHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyLCBOVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTY5OlxcdHNvcnQocXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3MC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTcyOnN0YXRpYyBzMzIgcnR3ODgyMmNfZGFjX2lxX29mZnNldChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKnZlYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTczLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE4NDpzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIodTggcGF0aClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yMDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjIwMzpzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcih1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yMDQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTIyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MjIyOnN0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgdmFsdWUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTIyMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoyMzM6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyICppdiwgczMyICpxdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMjM0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI0NDpcXHRcXHRpZiAocnR3ODgyMmNfZGFjX2lxX2NoZWNrKHJ0d2RldiwgaXZbaV0pIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI0NTpcXHRcXHQgICAgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHJ0d2RldiwgcXZbaV0pKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yNDYtXFx0XFx0XFx0aSsrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MjUwOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI1MS1cXHRcXHRcXHRcXHQgICAgICAgczMyICppdiwgczMyICpxdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI4NDpcXHRcXHRydHc4ODIyY19kYWNfaXFfc29ydChydHdkZXYsIGl2LCBxdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTI4NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0yOTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI5ODpcXHQqaV92YWx1ZSA9IHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjI5OTpcXHQqcV92YWx1ZSA9IHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBxdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMwMC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMwMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzAyOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMDMtXFx0XFx0XFx0XFx0ICAgICB1MzIgKmlfdmFsdWUsIHUzMiAqcV92YWx1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjMxNDpcXHRydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShydHdkZXYsIGl2LCBxdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjMxNTpcXHRydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaChydHdkZXYsIGl2LCBxdiwgaV92YWx1ZSwgcV92YWx1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMxNi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzE4OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19iYl9zZXR0aW5nKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMxOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzozMzQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9hZGMoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzM1LVxcdFxcdFxcdFxcdCB1OCBwYXRoLCB1MzIgKmFkY19pYywgdTMyICphZGNfcWMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzozNDU6XFx0YmFzZV9hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzQ2LVxcdHN3aXRjaCAocGF0aCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM3MS1cXHRcXHRydHdfd3JpdGUzMihydHdkZXYsIDB4MWMyNCwgMHgwMDAxMDAwMik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM3MjpcXHRcXHRydHc4ODIyY19kYWNfY2FsX3JmX21vZGUocnR3ZGV2LCBcXHUwMDI2aWMsIFxcdTAwMjZxYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM3My1cXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzkxLVxcdFxcdHJ0d193cml0ZTMyKHJ0d2RldiwgMHgxYzNjLCBwYXRoX3NlbCArIDB4ODEwMyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjM5MjpcXHRcXHRydHc4ODIyY19kYWNfY2FsX3JmX21vZGUocnR3ZGV2LCBcXHUwMDI2aWMsIFxcdTAwMjZxYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTM5My1cXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0MTI6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9zdGVwMShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00MTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDE4OlxcdGJhc2VfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIocGF0aCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQxOTpcXHRyZWFkX2FkZHIgPSBydHc4ODIyY19nZXRfcGF0aF9yZWFkX2FkZHIocGF0aCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00NTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjQ1NzpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3N0ZXAyKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ1OC1cXHRcXHRcXHRcXHQgICB1OCBwYXRoLCB1MzIgKmljX291dCwgdTMyICpxY19vdXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0NjM6XFx0YmFzZV9hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDY0LVxcdHJ0d193cml0ZTMyX21hc2socnR3ZGV2LCBiYXNlX2FkZHIgKyAweGJjLCAweGYwMDAwMDAwLCAweDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTQ3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NDc1OlxcdHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZShydHdkZXYsIFxcdTAwMjZpY19pbiwgXFx1MDAyNnFjX2luKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDc2LVxcdGljID0gaWNfaW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo1MDY6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9zdGVwMyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01MDctXFx0XFx0XFx0XFx0ICAgdTMyIGFkY19pYywgdTMyIGFkY19xYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01MTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjUxNjpcXHRiYXNlX2FkZHIgPSBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHBhdGgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo1MTc6XFx0cmVhZF9hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfcmVhZF9hZGRyKHBhdGgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01MTgtXFx0aWMgPSAqaWNfaW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTU2LVxcdHJ0d193cml0ZTMyKHJ0d2RldiwgYmFzZV9hZGRyICsgMHg2MCwgMHhmMDAwMDAwMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjU1NzpcXHRydHc4ODIyY19kYWNfY2FsX3JmX21vZGUocnR3ZGV2LCBcXHUwMDI2aWMsIFxcdTAwMjZxYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTU1OC1cXHRpZiAoaWMgXFx1MDAzZT0gMHgxMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01ODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjU4MzpzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3N0ZXA0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTU4NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjU4NTpcXHR1MzIgYmFzZV9hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNTg2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTU5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NTkzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX3ZlYyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy01OTQtXFx0XFx0XFx0XFx0XFx0dTggcGF0aCwgdTggdmVjLCB1MzIgd19hZGRyLCB1MzIgcl9hZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTYwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjEwOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX3BhdGgoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjExLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02MTktXFx0LyogYmFja3VwIEkgdmVjdG9yICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjYyMDpcXHR3X2FkZHIgPSBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHBhdGgpICsgMHhiMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjIxOlxcdHJfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcihwYXRoKSArIDB4MTA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjYyMjpcXHRydHc4ODIyY19kYWNfY2FsX2JhY2t1cF92ZWMocnR3ZGV2LCBwYXRoLCAwLCB3X2FkZHIsIHJfYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTYyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjI0LVxcdC8qIGJhY2t1cCBRIHZlY3RvciAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2MjU6XFx0d19hZGRyID0gcnR3ODgyMmNfZ2V0X3BhdGhfd3JpdGVfYWRkcihwYXRoKSArIDB4YjAgKyB3X29mZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjI2OlxcdHJfYWRkciA9IHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcihwYXRoKSArIDB4MTAgKyByX29mZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjI3OlxcdHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX3ZlYyhydHdkZXYsIHBhdGgsIDEsIHdfYWRkciwgcl9hZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjI4LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2MzA6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9iYWNrdXBfZGNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTYzMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2NTQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9iYWNrdXAoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02NjctXFx0cnR3X3dyaXRlMzJfbWFzayhydHdkZXYsIDB4MTg2MCwgMHhmYzAwMDAwMCwgMHgzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjY2ODpcXHRydHc4ODIyY19kYWNfY2FsX2JhY2t1cF9wYXRoKHJ0d2RldiwgUkZfUEFUSF9BKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjY5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTY3Mi1cXHRydHdfd3JpdGUzMl9tYXNrKHJ0d2RldiwgMHg0MTYwLCAweGZjMDAwMDAwLCAweDNjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NjczOlxcdHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwX3BhdGgocnR3ZGV2LCBSRl9QQVRIX0IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjY3NTpcXHRydHc4ODIyY19kYWNfY2FsX2JhY2t1cF9kY2socnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjc2LVxcdHJ0d193cml0ZTMyX3NldChydHdkZXYsIDB4MTgzMCwgQklUKDMwKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNjgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo2ODQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX2RjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy02ODUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTcxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6NzE0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZV9wcmVwYXJlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTcxNS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3NDM6XFx0cnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX2RjayhydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03NDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3Njc6c3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX3dhaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzY4LVxcdFxcdFxcdFxcdFxcdCAgdTMyIHRhcmdldF9hZGRyLCB1MzIgdG9nZ2xlX2FkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3ODQ6c3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX3BhdGgoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNzg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03OTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc5MzpcXHR3X2kgPSBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHBhdGgpICsgMHhiMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6Nzk0OlxcdHJfaSA9IHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcihwYXRoKSArIDB4MDg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc5NTpcXHR3X3EgPSBydHc4ODIyY19nZXRfcGF0aF93cml0ZV9hZGRyKHBhdGgpICsgMHhiMCArIHdfb2ZmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo3OTY6XFx0cl9xID0gcnR3ODgyMmNfZ2V0X3BhdGhfcmVhZF9hZGRyKHBhdGgpICsgMHgwOCArIHJfb2ZmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03OTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjc5ODpcXHRpZiAoIXJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZV93YWl0KHJ0d2Rldiwgcl9pLCB3X2kgKyAweDgpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy03OTktXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTgxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODExOlxcdGlmICghcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX3dhaXQocnR3ZGV2LCByX3EsIHdfcSArIDB4OCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTgxMi1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo4MzE6c3RhdGljIGJvb2wgX19ydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODMyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODMzOlxcdGlmICghcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlX3BhdGgocnR3ZGV2LCBSRl9QQVRIX0EpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04MzQtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04MzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjgzNjpcXHRpZiAoIXJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZV9wYXRoKHJ0d2RldiwgUkZfUEFUSF9CKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODM3LVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04NDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg0MjpzdGF0aWMgYm9vbCBydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04NTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg1ODpcXHRydHc4ODIyY19kYWNfY2FsX3Jlc3RvcmVfcHJlcGFyZShydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04NTktXFx0aWYgKCFjaGVja19od19yZWFkeShydHdkZXYsIDB4MjgwOCwgMHg3ZmZmODAsIDB4ZmZmZikgfHxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04NjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg2NTpcXHRpZiAoIV9fcnR3ODgyMmNfZGFjX2NhbF9yZXN0b3JlKHJ0d2RldikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODY2LVxcdFxcdHJ0d19lcnIocnR3ZGV2LCBcXFwiZmFpbGVkIHRvIHJlc3RvcmUgZGFjayB2ZWN0b3JzXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04ODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg4MzpzdGF0aWMgdm9pZCBydHc4ODIyY19yZl9kYWNfY2FsKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg4NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo4OTI6XFx0aWYgKHJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZShydHdkZXYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04OTMtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg5Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODk3OlxcdHJ0dzg4MjJjX2RhY19iYWNrdXBfcmVnKHJ0d2RldiwgYmFja3VwLCBiYWNrdXBfcmYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy04OTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjg5OTpcXHRydHc4ODIyY19kYWNfYmJfc2V0dGluZyhydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkwMS1cXHQvKiBwYXRoLUEgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTAyOlxcdHJ0dzg4MjJjX2RhY19jYWxfYWRjKHJ0d2RldiwgUkZfUEFUSF9BLCBcXHUwMDI2YWRjX2ljX2EsIFxcdTAwMjZhZGNfcWNfYSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkwMy1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgMTA7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MDQ6XFx0XFx0cnR3ODgyMmNfZGFjX2NhbF9zdGVwMShydHdkZXYsIFJGX1BBVEhfQSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjkwNTpcXHRcXHRydHc4ODIyY19kYWNfY2FsX3N0ZXAyKHJ0d2RldiwgUkZfUEFUSF9BLCBcXHUwMDI2aWMsIFxcdTAwMjZxYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkwNi1cXHRcXHRpY19hID0gaWM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MDk6XFx0XFx0cnR3ODgyMmNfZGFjX2NhbF9zdGVwMyhydHdkZXYsIFJGX1BBVEhfQSwgYWRjX2ljX2EsIGFkY19xY19hLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MTAtXFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZpYywgXFx1MDAyNnFjLCBcXHUwMDI2aV9hLCBcXHUwMDI2cV9hKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MTQtXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MTU6XFx0cnR3ODgyMmNfZGFjX2NhbF9zdGVwNChydHdkZXYsIFJGX1BBVEhfQSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTE3LVxcdC8qIHBhdGgtQiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5MTg6XFx0cnR3ODgyMmNfZGFjX2NhbF9hZGMocnR3ZGV2LCBSRl9QQVRIX0IsIFxcdTAwMjZhZGNfaWNfYiwgXFx1MDAyNmFkY19xY19iKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTE5LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAxMDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjkyMDpcXHRcXHRydHc4ODIyY19kYWNfY2FsX3N0ZXAxKHJ0d2RldiwgUkZfUEFUSF9CKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTIxOlxcdFxcdHJ0dzg4MjJjX2RhY19jYWxfc3RlcDIocnR3ZGV2LCBSRl9QQVRIX0IsIFxcdTAwMjZpYywgXFx1MDAyNnFjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTIyLVxcdFxcdGljX2IgPSBpYztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05MjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjkyNTpcXHRcXHRydHc4ODIyY19kYWNfY2FsX3N0ZXAzKHJ0d2RldiwgUkZfUEFUSF9CLCBhZGNfaWNfYiwgYWRjX3FjX2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkyNi1cXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNmljLCBcXHUwMDI2cWMsIFxcdTAwMjZpX2IsIFxcdTAwMjZxX2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkzMC1cXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjkzMTpcXHRydHc4ODIyY19kYWNfY2FsX3N0ZXA0KHJ0d2RldiwgUkZfUEFUSF9CKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTMyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTkzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTM5OlxcdHJ0dzg4MjJjX2RhY19yZXN0b3JlX3JlZyhydHdkZXYsIGJhY2t1cCwgYmFja3VwX3JmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05NDEtXFx0LyogYmFja3VwIHJlc3VsdHMgdG8gcmVzdG9yZSwgc2F2aW5nIGEgbG90IG9mIHRpbWUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTQyOlxcdHJ0dzg4MjJjX2RhY19jYWxfYmFja3VwKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTk0My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05NDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjk1MDpzdGF0aWMgdm9pZCBydHc4ODIyY19yZl94Ml9jaGVjayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05NTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTk2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6OTY0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3NldF9wb3dlcl90cmltKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHM4IGJiX2dhaW5bMl1bOF0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTk2NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtOTk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo5OTY6c3RhdGljIHZvaWQgcnR3ODgyMmNfcG93ZXJfdHJpbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy05OTcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwMjctXFx0aWYgKHNldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTAyODpcXHRcXHRydHc4ODIyY19zZXRfcG93ZXJfdHJpbShydHdkZXYsIGJiX2dhaW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDI5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwMzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEwMzM6c3RhdGljIHZvaWQgcnR3ODgyMmNfdGhlcm1hbF90cmltKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEwNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEwNTE6c3RhdGljIHZvaWQgcnR3ODgyMmNfcGFfYmlhcyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMDcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMDczOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3Jma19oYW5kc2hha2Uoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgYm9vbCBpc19iZWZvcmVfaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTA3NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTExOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTExOTpzdGF0aWMgdm9pZCBydHc4ODIyY19yZmtfcG93ZXJfc2F2ZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTIwLVxcdFxcdFxcdFxcdCAgICBib29sIGlzX3Bvd2VyX3NhdmUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTEzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTEzMTpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfYmFja3VwX2JiX3JlZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBjb25zdCB1MzIgcmVnW10sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExMzItXFx0XFx0XFx0XFx0XFx0ICB1MzIgcmVnX2JhY2t1cFtdLCB1MzIgcmVnX251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMTQ0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19yZWxvYWRfYmJfcmVnKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExNDUtXFx0XFx0XFx0XFx0XFx0ICBjb25zdCB1MzIgcmVnW10sIHUzMiByZWdfYmFja3VwW10sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9MTE1Nz1zdGF0aWMgYm9vbCBjaGVja19yZl9zdGF0dXMoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggc3RhdHVzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjExNzI6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX3R4X3BhdXNlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExNzMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTExODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjExODg6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX2JiX2RwayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMTg5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMjE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMjIwOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19hZmVfZHBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEyMjEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEyNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEyNTY6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX2FmZV9kcGtfcmVzdG9yZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMjU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMjg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMjg5OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19iYl9kcGtfcmVzdG9yZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMjkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMzI5OnN0YXRpYyBib29sIF9ydHc4ODIyY190eGdhcGtfZ2Fpbl92YWxpZChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgZ2FpbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTMzMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTMzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTMzODpzdGF0aWMgdm9pZCBfcnR3ODgyMmNfdHhnYXBrX3dyaXRlX2dhaW5fYmJfdGFibGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTMzOS1cXHRcXHRcXHRcXHRcXHRcXHQgdTggYmFuZCwgdTggcGF0aClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzY4LVxcdFxcdHYgPSB0eGdhcGstXFx1MDAzZXJmM2ZfYnBbYmFuZF1bZ2Fpbl1bcGF0aF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjEzNjk6XFx0XFx0aWYgKF9ydHc4ODIyY190eGdhcGtfZ2Fpbl92YWxpZChydHdkZXYsIHYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEzNzAtXFx0XFx0XFx0aWYgKCFjaGVja190eGdhaW4pIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xMzkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxMzkyOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa193cml0ZV9nYWluX2JiX3RhYmxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTEzOTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE0MDAtXFx0XFx0Zm9yIChwYXRoID0gMDsgcGF0aCBcXHUwMDNjIHJ0d2Rldi1cXHUwMDNlaGFsLnJmX3BhdGhfbnVtOyBwYXRoKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTQwMTpcXHRcXHRcXHRfcnR3ODgyMmNfdHhnYXBrX3dyaXRlX2dhaW5fYmJfdGFibGUocnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDAyLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgYmFuZCwgcGF0aCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTQwNzpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfcmVhZF9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTggcGF0aClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQwOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTQ4My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTQ4NDpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfY2FsY3VsYXRlX29mZnNldChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNDk1OlxcdHJ0dzg4MjJjX3R4Z2Fwa19iYWNrdXBfYmJfcmVnKHJ0d2RldiwgYmJfcmVnLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNDk2LVxcdFxcdFxcdFxcdCAgICAgIHJlZ19iYWNrdXAsIEFSUkFZX1NJWkUoYmJfcmVnKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTUxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTUxNzpcXHRcXHRydHc4ODIyY190eGdhcGtfcmVhZF9vZmZzZXQocnR3ZGV2LCBwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTUxOC1cXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssIFxcXCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTU1MTpcXHRcXHRydHc4ODIyY190eGdhcGtfcmVhZF9vZmZzZXQocnR3ZGV2LCBwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU1Mi1cXHRcXHRydHdfZGJnKHJ0d2RldiwgUlRXX0RCR19SRkssIFxcXCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NTMtXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNTU0OlxcdHJ0dzg4MjJjX3R4Z2Fwa19yZWxvYWRfYmJfcmVnKHJ0d2RldiwgYmJfcmVnLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTU1LVxcdFxcdFxcdFxcdCAgICAgIHJlZ19iYWNrdXAsIEFSUkFZX1NJWkUoYmJfcmVnKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTU1ODpzdGF0aWMgdm9pZCBydHc4ODIyY190eGdhcGtfcmZfcmVzdG9yZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCBwYXRoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTU5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNTY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNTcwOnN0YXRpYyB1MzIgcnR3ODgyMmNfdHhnYXBrX2NhbF9nYWluKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiBnYWluLCBzOCBvZmZzZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NzEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE1NzY6XFx0aWYgKF9ydHc4ODIyY190eGdhcGtfZ2Fpbl92YWxpZChydHdkZXYsIGdhaW4pKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1NzctXFx0XFx0bmV3X2dhaW4gPSBnYWluO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE1OTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE1OTQ6c3RhdGljIHZvaWQgcnR3ODgyMmNfdHhnYXBrX3dyaXRlX3R4X2dhaW4oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTU5NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTYyNC1cXHRcXHRcXHRcXHR2ID0gdHhnYXBrLVxcdTAwM2VyZjNmX2JwW2JhbmRdW2pdW3BhdGhdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNjI1OlxcdFxcdFxcdFxcdGlmIChfcnR3ODgyMmNfdHhnYXBrX2dhaW5fdmFsaWQocnR3ZGV2LCB2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTYyNi1cXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjMyLVxcdFxcdFxcdHYgPSB0eGdhcGstXFx1MDAzZXJmM2ZfYnBbYmFuZF1baV1bcGF0aF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE2MzM6XFx0XFx0XFx0aWYgKF9ydHc4ODIyY190eGdhcGtfZ2Fpbl92YWxpZChydHdkZXYsIHYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2MzQtXFx0XFx0XFx0XFx0cnR3X2RiZyhydHdkZXYsIFJUV19EQkdfUkZLLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2NDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE2NTA6XFx0XFx0XFx0dG1wXzNmID0gcnR3ODgyMmNfdHhnYXBrX2NhbF9nYWluKHJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTY1MS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgIHR4Z2Fway1cXHUwMDNlcmYzZl9icFtiYW5kXVtpXVtwYXRoXSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNjYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNjY0OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2Fwa19zYXZlX2FsbF90eF9nYWluX3RhYmxlKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2NjUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE2ODEtXFx0XFx0XFx0XFxcIltUWEdBUEtdIEFscmVhZHkgUmVhZCB0eGdhcGstXFx1MDAzZXJlYWRfdHhnYWluIHJldHVybiEhIVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE2ODI6XFx0XFx0cnR3ODgyMmNfdHhnYXBrX3dyaXRlX2dhaW5fYmJfdGFibGUocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTY4My1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTcxOC1cXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3MTk6XFx0cnR3ODgyMmNfdHhnYXBrX3dyaXRlX2dhaW5fYmJfdGFibGUocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTcyMC1cXHR0eGdhcGstXFx1MDAzZXJlYWRfdHhnYWluID0gMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzIzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3R4Z2FwayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzMyOlxcdHJ0dzg4MjJjX3R4Z2Fwa19zYXZlX2FsbF90eF9nYWluX3RhYmxlKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3MzMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc0Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc0NzpcXHRydHc4ODIyY190eGdhcGtfYmFja3VwX2JiX3JlZyhydHdkZXYsIGJiX3JlZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc0OC1cXHRcXHRcXHRcXHQgICAgICBiYl9yZWdfYmFja3VwLCBBUlJBWV9TSVpFKGJiX3JlZykpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzQ5OlxcdHJ0dzg4MjJjX3R4Z2Fwa190eF9wYXVzZShydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzUwLVxcdGZvciAocGF0aCA9IDA7IHBhdGggXFx1MDAzYyBydHdkZXYtXFx1MDAzZWhhbC5yZl9wYXRoX251bTsgcGF0aCsrKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc1Mi1cXHRcXHRcXHRcXHRcXHQgICAgICBSRl9DRkdDSCwgUkZSRUdfTUFTSykgXFx1MDAyNiBNQVNLQllURTA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NTM6XFx0XFx0cnR3ODgyMmNfdHhnYXBrX2JiX2RwayhydHdkZXYsIHBhdGgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzU0OlxcdFxcdHJ0dzg4MjJjX3R4Z2Fwa19hZmVfZHBrKHJ0d2RldiwgcGF0aCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NTU6XFx0XFx0cnR3ODgyMmNfdHhnYXBrX2NhbGN1bGF0ZV9vZmZzZXQocnR3ZGV2LCBwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc1NjpcXHRcXHRydHc4ODIyY190eGdhcGtfcmZfcmVzdG9yZShydHdkZXYsIHBhdGgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzU3OlxcdFxcdHJ0dzg4MjJjX3R4Z2Fwa19hZmVfZHBrX3Jlc3RvcmUocnR3ZGV2LCBwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc1ODpcXHRcXHRydHc4ODIyY190eGdhcGtfYmJfZHBrX3Jlc3RvcmUocnR3ZGV2LCBwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc1OS1cXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NjA6XFx0cnR3ODgyMmNfdHhnYXBrX3dyaXRlX3R4X2dhaW4ocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTc2MTpcXHRydHc4ODIyY190eGdhcGtfcmVsb2FkX2JiX3JlZyhydHdkZXYsIGJiX3JlZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc2Mi1cXHRcXHRcXHRcXHQgICAgICBiYl9yZWdfYmFja3VwLCBBUlJBWV9TSVpFKGJiX3JlZykpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE3NjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3NjU6c3RhdGljIHZvaWQgcnR3ODgyMmNfZG9fZ2FwayhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzY2LXtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTM6MDAuNTQ4MTQyNjM1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODQzNDMwMzI4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgcnR3ODggRHJpdmVyIGFuZCBVU0IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEknbSBzZWVpbmcgdGhhdCB0aGUgYHJ0dzg4YCBkcml2ZXIgaGFzIGEgVVNCIGNvdW50ZXJwYXJ0LCBgcnR3ODhfdXNiYC4gVGhlIGBydHc4ODIyY2AgY29kZSwgc3BlY2lmaWNhbGx5LCBzZWVtcyB0byBiZSB1dGlsaXplZCBieSB0aGUgVVNCIHZhcmlhbnQsIGBydHc4ODIyY3VgLiBOb3csIHRoZSBjcnVjaWFsIHBhcnQgaGVyZSBpcyB0aGUgY29ubmVjdGlvbiB3aXRoIHN5emthbGxlciBhbmQgaXRzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyB0aHJvdWdoIGBzeXpfdXNiX2Nvbm5lY3RgLiBUaGlzIG1lYW5zLCBhbmQgdGhpcyBpcyBpbXBvcnRhbnQsIHRoYXQgSSBjYW4gcG90ZW50aWFsbHkgcmVhY2ggYW5kIGludGVyYWN0IHdpdGggdGhpcyBkcml2ZXIgd2l0aGluIGEgdmlydHVhbGl6ZWQgUUVNVSBlbnZpcm9ubWVudCwgd2hpY2ggaXMgYSBzaWduaWZpY2FudCBhZHZhbnRhZ2UgZm9yIG15IHJlc2VhcmNoLlxuXG5UaGUga2V5IHF1ZXN0aW9uIGluIG15IG1pbmQgaXMgd2hldGhlciBgcnR3ODhgICpyZXF1aXJlcyogcGh5c2ljYWwgaGFyZHdhcmUsIG9yIGlmIGl0cyBVU0ItY29ubmVjdGVkIGNvbXBvbmVudCwgYHJ0dzg4MjJjdWAsIGNhbiBiZSAqZnVsbHkqIGVtdWxhdGVkIHRocm91Z2ggVVNCIGdhZGdldCBlbXVsYXRpb24uIHN5emthbGxlciwgYmVpbmcgdGhlIHBvd2VyZnVsIHRvb2wgdGhhdCBpdCBpcywgY2FuIGluamVjdCBkZXNjcmlwdG9ycyBhbmQgcmVzcG9uc2VzLCBiYXNpY2FsbHkgbWltaWNraW5nIGEgcmVhbCBVU0IgZGV2aWNlLlxuXG5JZiBgcnR3ODgyMmN1YCAqaXMqIGluZGVlZCBhIFVTQiBkcml2ZXIsIGl0IHNob3VsZCByZWdpc3RlciBpdHNlbGYgd2l0aCB0aGUga2VybmVsIHZpYSBgdXNiX3JlZ2lzdGVyYC4gVGhpcyBpcyBhIGNydWNpYWwgY2hlY2suIElmIG15IHN5emthbGxlci1lbXVsYXRlZCBVU0IgZGV2aWNlIHByZXNlbnRzIHRoZSBjb3JyZWN0IHZlbmRvci9wcm9kdWN0IElELCB0aGVuIHRoZSBrZXJuZWwgKnNob3VsZCogYXR0ZW1wdCB0byBwcm9iZSBgcnR3ODgyMmN1X3Byb2JlYC5cblxuVGhlcmVmb3JlLCBteSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgKm11c3QqIGV4YW1pbmUgdGhlIGNvZGUgZm9yIGBydHc4ODIyY3VfcHJvYmVgLiBUaGF0J3Mgd2hlcmUgdGhlIHJlYWwgbWFnaWMgbGlrZWx5IGhhcHBlbnMsIGFuZCB3aGVyZSBhbnkgdnVsbmVyYWJpbGl0aWVzIG1pZ2h0IHJldmVhbCB0aGVtc2VsdmVzLiBMZXQncyBzZWUgd2hhdCB0aGF0IHByb2JlIGZ1bmN0aW9uIGRvZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MTg2LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEzOjA4Ljk4MjQ0ODE0N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Njg2MjEwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4ODIyY3VfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYz0yOD1NT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgcnR3Xzg4MjJjdV9pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYy0yOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jOjMwOnN0YXRpYyBpbnQgcnR3ODgyMmN1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmN1LmMtMzEtXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYz0zNj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4MjJjdV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jLTM4LVxcdC5pZF90YWJsZSA9IHJ0d184ODIyY3VfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYzozOTpcXHQucHJvYmUgPSBydHc4ODIyY3VfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYy00MC1cXHQuZGlzY29ubmVjdCA9IHJ0d191c2JfZGlzY29ubmVjdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTM6MDkuMDY5MzE0MTE0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjMxMjU2Mjc1OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGBydHc4ODIyY3VfcHJvYmVgIGZ1bmN0aW9uLiBJJ20gZ29pbmcgdG8gd2FsayB0aHJvdWdoIHRoaXMgbGluZSBieSBsaW5lIGFuZCByZWFsbHkgdW5kZXJzdGFuZCB3aGF0IHRoaXMgdGhpbmcgaXMgZG9pbmcuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyByb2xlLiBJJ20gZm9jdXNpbmcgaW4sIHJlYWxseSwgb24gd2hhdCBpdCBkb2VzIGFuZCB3aHkgaXQgZG9lcyBpdC4gV2hhdCBhcmUgaXRzIGRlcGVuZGVuY2llcz8gV2hhdCBhcmUgdGhlIHBvdGVudGlhbCBmYWlsdXJlIHBvaW50cz8gSSdtIGFudGljaXBhdGluZyB0aGF0IEknbGwgbmVlZCB0byBrbm93IHRoaXMgc3R1ZmYgY29sZCwgZXNwZWNpYWxseSBpZiBJIGhhdmUgdG8gdHJvdWJsZXNob290IGl0IGxhdGVyLiBUaGlzIGlzIGltcG9ydGFudC4gTGV0J3MgZGlnIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjE0MywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEzOjMyLjE5NDk0NTI2NloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzY2MjMyOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RhdGljIGludCBydHc4ODIyY3VfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYz0yOD1NT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgcnR3Xzg4MjJjdV9pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyY3UuYy0yOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jOjMwOnN0YXRpYyBpbnQgcnR3ODgyMmN1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmN1LmMtMzEtXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxMzozMi4yNzE1NzY0OTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODM0MDcyMDYwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aGlua2luZywgZXhwcmVzc2VkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIGludG8gdGhlIERyaXZlciBDb2RlKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgc3BlY2lmaWMgcGllY2Ugb2YgdGhlIGBydHc4ODIyY3UuY2AgZHJpdmVyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGp1bXAgcmlnaHQgaW4gYW5kIHNlZSB3aGF0J3MgaGFwcGVuaW5nIGFyb3VuZCBsaW5lIDMwLiBUaGF0J3MgdXN1YWxseSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEl0J3Mgb2Z0ZW4gd2hlcmUgdGhlIGNvcmUgZnVuY3Rpb24gZGVmaW5pdGlvbiBvciBhIGNydWNpYWwgaW5pdGlhbGl6YXRpb24gYmxvY2sgcmVzaWRlcywgZ2l2aW5nIG1lIGEgc29saWQgY29udGV4dCBmb3IgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljLiBJJ20gaG9waW5nIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGhpZ2gtbGV2ZWwgcHVycG9zZSBvZiB0aGF0IHNlY3Rpb24gYW5kIHRoZW4gZHJpbGwgZG93biBpbnRvIHNwZWNpZmljIGRldGFpbHMgYXMgbmVlZGVkLiBMZXQncyBzZWUgd2hhdCBzZWNyZXRzIGl0IGhvbGRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjUwMCwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEzOjQwLjYxMjMwMDAwOFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDIwOlxcdFxcdHsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oUlRXX1VTQl9WRU5ET1JfSURfUkVBTFRFSywgMHhkODJiLCAweGZmLCAweGZmLCAweGZmKSxcXG4gIDIxOlxcdFxcdCAgLmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KVxcdTAwMjYocnR3ODgyMmNfaHdfc3BlYykgfSxcXG4gIDIyOlxcdFxcdHsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oMHgxM2IxLCAweDAwNDMsIDB4ZmYsIDB4ZmYsIDB4ZmYpLFxcbiAgMjM6XFx0XFx0ICAuZHJpdmVyX2luZm8gPSAoa2VybmVsX3Vsb25nX3QpXFx1MDAyNihydHc4ODIyY19od19zcGVjKSB9LCAvKiBBbHBoYSAtIEFscGhhICovXFxuICAyNDpcXHRcXHR7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MjAwMSwgMHgzMzI5LCAweGZmLCAweGZmLCAweGZmKSxcXG4gIDI1OlxcdFxcdCAgLmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KVxcdTAwMjYocnR3ODgyMmNfaHdfc3BlYykgfSwgLyogRC1MaW5rIEFDMTNVIHJldi4gQTEgKi9cXG4gIDI2OlxcdFxcdHt9LFxcbiAgMjc6XFx0fTtcXG4gIDI4OlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBydHdfODgyMmN1X2lkX3RhYmxlKTtcXG4gIDI5OlxcdFxcbiAgMzA6XFx0c3RhdGljIGludCBydHc4ODIyY3VfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuICAzMTpcXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuICAzMjpcXHR7XFxuICAzMzpcXHRcXHRyZXR1cm4gcnR3X3VzYl9wcm9iZShpbnRmLCBpZCk7XFxuICAzNDpcXHR9XFxuICAzNTpcXHRcXG4gIDM2OlxcdHN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODgyMmN1X2RyaXZlciA9IHtcXG4gIDM3OlxcdFxcdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXFxuICAzODpcXHRcXHQuaWRfdGFibGUgPSBydHdfODgyMmN1X2lkX3RhYmxlLFxcbiAgMzk6XFx0XFx0LnByb2JlID0gcnR3ODgyMmN1X3Byb2JlLFxcbiAgNDA6XFx0XFx0LmRpc2Nvbm5lY3QgPSBydHdfdXNiX2Rpc2Nvbm5lY3QsXFxuICA0MTpcXHR9O1xcbiAgNDI6XFx0bW9kdWxlX3VzYl9kcml2ZXIocnR3Xzg4MjJjdV9kcml2ZXIpO1xcbiAgNDM6XFx0XFxuICA0NDpcXHRNT0RVTEVfQVVUSE9SKFxcXCJSZWFsdGVrIENvcnBvcmF0aW9uXFxcIik7XFxuICA0NTpcXHRNT0RVTEVfREVTQ1JJUFRJT04oXFxcIlJlYWx0ZWsgODAyLjExYWMgd2lyZWxlc3MgODgyMmN1IGRyaXZlclxcXCIpO1xcbiAgNDY6XFx0TU9EVUxFX0xJQ0VOU0UoXFxcIkR1YWwgQlNEL0dQTFxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxMzo0MC42MTIzOTc1ODhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI0MDExNzEyODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJhY2luZyB0aGUgVVNCIFByb2JlIGFuZCBDYWxpYnJhdGlvbiBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyB0aGUgdHJhY2UgYmVnaW5zIHdpdGggYSBjYWxsIHRvIGBydHdfdXNiX3Byb2JlYC4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IHN0ZW1taW5nIGZyb20gdGhpcyBmdW5jdGlvbiwgcGFydGljdWxhcmx5IHRvIHNlZSBpZiBpdCB1bHRpbWF0ZWx5IHJlYWNoZXMgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYCBvciBzb21ldGhpbmcgZnVuY3Rpb25hbGx5IHNpbWlsYXIuIFRoaXMgaXMgd2hlcmUgdGhlIHBhdGNoIHRvdWNoZXMgdGhpbmdzLlxuXG5UaGUgcGF0Y2ggaXRzZWxmIHNlZW1zIHRvIGJlIGhlYXZpbHkgZm9jdXNlZCBvbiB0aGUgREFDIGNhbGlicmF0aW9uIHByb2Nlc3MsIGFzIGl0IG1vZGlmaWVzIHNldmVyYWwga2V5IGZ1bmN0aW9uczogYHJ0dzg4MjJjX2RhY19pcV9zb3J0YCwgYHJ0dzg4MjJjX2RhY19pcV9vZmZzZXRgLCBgcnR3ODgyMmNfZGFjX2lxX2NoZWNrYCwgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYCwgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoYCwgYW5kIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgLiBUaGVzZSBhcHBlYXIgdG8gYmUgaW50aW1hdGVseSBpbnZvbHZlZCBpbiBhIGNvbXBsZXggY2FsaWJyYXRpb24gc2VxdWVuY2UuXG5cbkxvb2tpbmcgYXQgdGhlIGNhbGwgZ3JhcGgsIGl0J3MgY2xlYXIgdGhhdCBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBpcyB0aGUgY2VudHJhbCBmdW5jdGlvbiBkcml2aW5nIHRoZXNlLiBJdCBzZWVtcyB0byBiZSBjYWxsZWQgZnJvbSBgcnR3ODgyMmNfZGFjX2NhbF9zdGVwMmAgYW5kIGBydHc4ODIyY19kYWNfY2FsX3N0ZXAzYCwgd2hpY2gsIGluIHR1cm4sIGFyZSBjYWxsZWQgZnJvbSBgcnR3ODgyMmNfcmZfZGFjX2NhbGAuIE5vdywgSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnVydGhlcjogd2hlcmUgaXMgYHJ0dzg4MjJjX3JmX2RhY19jYWxgIGludm9rZWQ/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc3RhY2sgZnJvbSB0aGUgVVNCIHByb2JlIHRvIHRoaXMgcG9pbnQgaXMgY3J1Y2lhbCB0byBzZWVpbmcgdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzMwNSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjE0OjAzLjAxMzU3MTg3MloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ4NDk0MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODgyMmNfcmZfZGFjX2NhbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9ODQyPXN0YXRpYyBib29sIHJ0dzg4MjJjX2RhY19jYWxfcmVzdG9yZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTg4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6ODgzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3JmX2RhY19jYWwoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtODg0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0xNzc4PXN0YXRpYyB2b2lkIHJ0dzg4MjJjX3JmX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc3OS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjE3ODA6XFx0cnR3ODgyMmNfcmZfZGFjX2NhbChydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzgxLVxcdHJ0dzg4MjJjX3JmX3gyX2NoZWNrKHJ0d2Rldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjE0OjAzLjA3ODQyNTYxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIxMzk5OTQ4MzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBxdWVzdGlvbjpcblxuKipUcmFjaW5nIHRoZSBDYWxsIE9yaWdpbiBvZiBgcnR3ODgyMmNfcmZfaW5pdGAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBgcnR3ODgyMmNfcmZfaW5pdGAgaXMgYmVpbmcgY2FsbGVkIGZyb20uIFRoaXMgZnVuY3Rpb24gaXMgcHJldHR5IGNydWNpYWwgaW4gdGhlIFJlYWx0ZWsgV2lGaSBkcml2ZXIgc3RhY2ssIGVzcGVjaWFsbHkgZm9yIHRoZSA4ODIyQyBjaGlwLCBzbyBrbm93aW5nIGl0cyBlbnRyeSBwb2ludCBpcyBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIHBvdGVudGlhbCBkZWJ1Z2dpbmcuIEknbGwgbmVlZCB0byByZXRyYWNlIHRoZSBjb2RlIGV4ZWN1dGlvbiBwYXRoLiBJJ20gYXNzdW1pbmcgdGhhdCBpdCdzIHBhcnQgb2YgdGhlIGdlbmVyYWwgZHJpdmVyIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLlxuXG5GaXJzdCwgSSdkIHdhbnQgdG8gdXNlIGEgdG9vbCBsaWtlIGBncmVwYCAob3IgbXkgSURFJ3Mgc2VhcmNoIGZ1bmN0aW9uKSB0byBzZWFyY2ggdGhlIGRyaXZlciBzb3VyY2UgdHJlZSBmb3IgYWxsIGluc3RhbmNlcyB3aGVyZSBgcnR3ODgyMmNfcmZfaW5pdGAgaXMgY2FsbGVkLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgbGlzdCBvZiBwb3RlbnRpYWwgY2FsbCBzaXRlcy4gVGhlbiwgSSdkIG5lZWQgdG8gZXhhbWluZSB0aG9zZSBzaXRlcywgbG9va2luZyBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZSBjYWxsIGFuZCB3aGljaCBmdW5jdGlvbnMgYXJlIGNhbGxpbmcgaXQuIEknZCBsb29rIGZvciBmdW5jdGlvbiBwcm90b3R5cGVzIG9yIGRlZmluaXRpb25zIGFzc29jaWF0ZWQgd2l0aCBpbml0aWFsaXphdGlvbiwgcHJvYmluZyBvciBkZXZpY2UgZGV0ZWN0aW9uLlxuXG5JJ2QgYWxzbyBjb25zaWRlciB0aGUgYnJvYWRlciBkcml2ZXIgc3RydWN0dXJlLiBEb2VzIHRoaXMgZHJpdmVyIGZvbGxvdyBhIHN0YW5kYXJkIHByb2JlL2F0dGFjaC9kZXRhY2ggbW9kZWw/IElmIHNvLCBgcnR3ODgyMmNfcmZfaW5pdGAgbGlrZWx5IGZhbGxzIHNvbWV3aGVyZSB3aXRoaW4gdGhlIFwiYXR0YWNoXCIgcGhhc2UsIGFmdGVyIHRoZSBoYXJkd2FyZSBpcyByZWNvZ25pemVkLiBHaXZlbiB0aGF0LCBJJ2QgdHJhY2UgYmFjayBmcm9tIGFueSBhdHRhY2ggb3IgaW5pdGlhbGl6YXRpb24gcmVsYXRlZCBmdW5jdGlvbnMsIGxvb2tpbmcgdG8gc2VlIHdoaWNoIGZ1bmN0aW9ucyBldmVudHVhbGx5IGVuZCB1cCBjYWxsaW5nIGBydHc4ODIyY19yZl9pbml0YC5cblxuQmFzaWNhbGx5LCBJJ20gZ29pbmcgdG8gc3RhcnQgd2l0aCB0aGUgb2J2aW91cyBhbmQgd29yayBteSB3YXkgb3V0d2FyZCwgZm9sbG93aW5nIHRoZSBmdW5jdGlvbiBjYWxsIGdyYXBoLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgYXJndW1lbnRzIGJlaW5nIHBhc3NlZCB0byBgcnR3ODgyMmNfcmZfaW5pdGAgYXMgd2VsbCwgYXMgdGhvc2Ugd291bGQgcHJvdmlkZSBoaW50cyBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIHN5c3RlbSBhdCB0aGUgcG9pbnQgb2YgdGhlIGNhbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MzI4LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTQ6MjQuNDc4Mzc2MjM0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjU0MDg3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4ODIyY19yZl9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0xNzY1PXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RvX2dhcGsoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xNzc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxNzc4OnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3JmX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTc3OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9MTgwMz1zdGF0aWMgdm9pZCBydHc4ODIyY19waHlfc2V0X3BhcmFtKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTg0OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MTg0OTpcXHRydHc4ODIyY19yZl9pbml0KHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTE4NTAtXFx0cnR3ODgyMmNfcHdydHJhY2tfaW5pdChydHdkZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxNDoyNC41NzA5MjMyNDJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjExNzQzMzI0ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIHF1ZXN0aW9uOlxuXG4qKlBpbnBvaW50aW5nIHRoZSBPcmlnaW4gb2YgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQgZnJvbS4gVGhhdCdzIHRoZSBjb3JlIHF1ZXN0aW9uLCByaWdodD8gSWRlbnRpZnlpbmcgdGhlIGNhbGwgc2l0ZXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgY29udGV4dCwgdGhlIGRhdGEgaXQncyBvcGVyYXRpbmcgb24sIGFuZCBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4gS25vd2luZyB0aGUgY2FsbGVyIGFsc28gaGVscHMgaW4gZGVidWdnaW5nIGFuZCBtb2RpZmljYXRpb24sIGFzIEkgY2FuIHRyYWNlIHRoZSBjYWxsIHN0YWNrIHRvIHNlZSB0aGUgc2VxdWVuY2Ugb2YgZXZlbnRzIGxlYWRpbmcgdXAgdG8gaXRzIGV4ZWN1dGlvbi4gTGV0J3Mgc2VlLi4uIEknbGwgbmVlZCB0byB1c2Ugc29tZSB0b29saW5nLCBtb3N0IGxpa2VseSBhIGNvZGUgc2VhcmNoIG9yIHN0YXRpYyBhbmFseXNpcyB0b29sLiBJJ2QgdHlwaWNhbGx5IHN0YXJ0IGJ5IGdyZXBwaW5nIHRoZSBjb2RlYmFzZSBmb3IgdGhlIGZ1bmN0aW9uIG5hbWUgZGlyZWN0bHkuIEZyb20gdGhlcmUsIEknZCBleGFtaW5lIHRoZSBjYWxsIHNpdGVzLiBJIHdpbGwgYmUgbG9va2luZyBmb3IgY29tbW9uIHBhdHRlcm5zLiBJcyBpdCBjYWxsZWQgd2l0aGluIGEgc3BlY2lmaWMgZHJpdmVyIGNvbXBvbmVudCwgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBvciBpbiByZXNwb25zZSB0byBzb21lIGtpbmQgb2YgZXZlbnQ/IFRoZSBjb250ZXh0IHdpbGwgYmUga2V5LiBPbmNlIEkgbG9jYXRlIHRoZSBjYWxscywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gb3JkZXIgdG8gdHJ1bHkgdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlIGZvciB0aGUgZnVuY3Rpb24gY2FsbCwgYW5kIGhvdyB0aGlzIGZ1bmN0aW9uIGNhbGwgaXMgcmVsYXRlZCB0byBvdGhlciByb3V0aW5lcyBpbiB0aGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkxNjcsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxNDo0NS43NDUyNTg5NjNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzYyNDkxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4ODIyY19waHlfc2V0X3BhcmFtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0xNzg3PXN0YXRpYyB2b2lkIHJ0dzg4MjJjX3B3cnRyYWNrX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xODAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxODAzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW0oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTgwNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9NDg5OT1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODIyY19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDkwMS1cXHQucG93ZXJfb2ZmXFx0XFx0PSBydHdfcG93ZXJfb2ZmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0OTAyOlxcdC5waHlfc2V0X3BhcmFtXFx0XFx0PSBydHc4ODIyY19waHlfc2V0X3BhcmFtLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00OTAzLVxcdC5yZWFkX2VmdXNlXFx0XFx0PSBydHc4ODIyY19yZWFkX2VmdXNlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxNDo0NS44NTg4ODkwM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTg5MjE4MjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDpcblxuKipEaWdnaW5nIGludG8gUEhZIFBhcmFtZXRlciBTZXR0aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYHBoeV9zZXRfcGFyYW1gLiBUaGlzIGlzIGEgY2hpcCBvcGVyYXRpb24sIHdoaWNoIG1lYW5zIGl0J3MgYSBwcmV0dHkgZnVuZGFtZW50YWwgZnVuY3Rpb24gZGVhbGluZyB3aXRoIHRoZSBwaHlzaWNhbCBsYXllciBvZiB0aGUgY29tbXVuaWNhdGlvbiBpbnRlcmZhY2UuIFRoZSBxdWVzdGlvbiBub3cgaXM6IHdoZXJlIGlzIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24gYWN0dWFsbHkgYmVpbmcgKnVzZWQqPyBJIG5lZWQgdG8gdHJhY2UgaXRzIGNhbGxzIHRvIHVuZGVyc3RhbmQgaG93IHBhcmFtZXRlcnMgYXJlIGJlaW5nIHNldCwgd2hhdCBjb250ZXh0cyB0cmlnZ2VyIHBhcmFtZXRlciBjaGFuZ2VzLCBhbmQgdWx0aW1hdGVseSwgaG93IHRoaXMgaW1wYWN0cyB0aGUgb3ZlcmFsbCBzeXN0ZW0gYmVoYXZpb3IuIEtub3dpbmcgd2hlcmUgYHBoeV9zZXRfcGFyYW1gIGlzIGNhbGxlZCB3aWxsIGdpdmUgbWUgaW5zaWdodHMgaW50byBpdHMgcm9sZSB3aXRoaW4gdGhlIHdpZGVyIHNvZnR3YXJlIGFyY2hpdGVjdHVyZS4gVGltZSB0byBzdGFydCBkaWdnaW5nIHRocm91Z2ggdGhlIGNvZGViYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTg4MSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjE0OjU0LjQ0ODExMDI1NloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExOTg3NjU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9zZXRfcGFyYW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MTM3ND1pbnQgcnR3X3Bvd2VyX29uKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYy0xNDEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jOjE0MTM6XFx0Y2hpcC1cXHUwMDNlb3BzLVxcdTAwM2VwaHlfc2V0X3BhcmFtKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMTQxNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oPTg2Mj1zdHJ1Y3QgcnR3X2NoaXBfb3BzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oLTg2OS1cXHRpbnQgKCpyZWFkX2VmdXNlKShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1OCAqbWFwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uaDo4NzA6XFx0dm9pZCAoKnBoeV9zZXRfcGFyYW0pKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5oLTg3MS1cXHR2b2lkICgqc2V0X2NoYW5uZWwpKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IGNoYW5uZWwsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM9NTUzPXN0YXRpYyB2b2lkIHJ0dzg3MDNiX3B3cnRyYWNrX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcwM2IuYy01NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jOjU3ODpzdGF0aWMgdm9pZCBydHc4NzAzYl9waHlfc2V0X3BhcmFtKHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzAzYi5jLTU3OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM9MTgzNj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4NzAzYl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmMtMTg0My1cXHQucmVhZF9lZnVzZVxcdFxcdD0gcnR3ODcwM2JfcmVhZF9lZnVzZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmM6MTg0NDpcXHQucGh5X3NldF9wYXJhbVxcdFxcdD0gcnR3ODcwM2JfcGh5X3NldF9wYXJhbSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MDNiLmMtMTg0NS1cXHQuc2V0X2NoYW5uZWxcXHRcXHQ9IHJ0dzg3MDNiX3NldF9jaGFubmVsLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4NzIzZC5jPTY3PXN0YXRpYyB2b2lkIHJ0dzg3MjNkX3B3cnRyYWNrX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYy04NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmM6ODU6c3RhdGljIHZvaWQgcnR3ODcyM2RfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYy04Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmM9MTM5Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4NzIzZF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg3MjNkLmMtMTM5NC1cXHQucG93ZXJfb2ZmXFx0XFx0PSBydHdfcG93ZXJfb2ZmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYzoxMzk1OlxcdC5waHlfc2V0X3BhcmFtXFx0XFx0PSBydHc4NzIzZF9waHlfc2V0X3BhcmFtLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODcyM2QuYy0xMzk2LVxcdC5yZWFkX2VmdXNlXFx0XFx0PSBydHc4NzIzeF9yZWFkX2VmdXNlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODEyYS5jPTkxND1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODEyYV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhLmMtOTE2LVxcdC5wb3dlcl9vZmZcXHRcXHQ9IHJ0dzg4MTJhX3Bvd2VyX29mZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTJhLmM6OTE3OlxcdC5waHlfc2V0X3BhcmFtXFx0XFx0PSBOVUxMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxMmEuYy05MTgtXFx0LnJlYWRfZWZ1c2VcXHRcXHQ9IHJ0dzg4eHhhX3JlYWRfZWZ1c2UsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmM9MjY1PXN0YXRpYyB2b2lkIHJ0dzg4MTRhX2NvbmZpZ19jY2tfcnhfYW50ZW5uYV9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmMtMjgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYzoyODM6c3RhdGljIHZvaWQgcnR3ODgxNGFfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgxNGEuYy0yODQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jPTIwNTA9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgxNGFfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODE0YS5jLTIwNTItXFx0LnBvd2VyX29mZlxcdFxcdD0gcnR3X3Bvd2VyX29mZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmM6MjA1MzpcXHQucGh5X3NldF9wYXJhbVxcdFxcdD0gcnR3ODgxNGFfcGh5X3NldF9wYXJhbSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MTRhLmMtMjA1NC1cXHQucmVhZF9lZnVzZVxcdFxcdD0gcnR3ODgxNGFfcmVhZF9lZnVzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWEuYz04NjA9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgyMWFfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYS5jLTg2Mi1cXHQucG93ZXJfb2ZmXFx0XFx0PSBydHc4ODIxYV9wb3dlcl9vZmYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYS5jOjg2MzpcXHQucGh5X3NldF9wYXJhbVxcdFxcdD0gTlVMTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFhLmMtODY0LVxcdC5yZWFkX2VmdXNlXFx0XFx0PSBydHc4OHh4YV9yZWFkX2VmdXNlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jPTE1MT1zdGF0aWMgdm9pZCBydHc4ODIxY19waHlfYmZfaW5pdChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jLTE1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmM6MTU4OnN0YXRpYyB2b2lkIHJ0dzg4MjFjX3BoeV9zZXRfcGFyYW0oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjFjLmMtMTU5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYz0xNjU4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3X2NoaXBfb3BzIHJ0dzg4MjFjX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMWMuYy0xNjYwLVxcdC5wb3dlcl9vZmZcXHRcXHQ9IHJ0d19wb3dlcl9vZmYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jOjE2NjE6XFx0LnBoeV9zZXRfcGFyYW1cXHRcXHQ9IHJ0dzg4MjFjX3BoeV9zZXRfcGFyYW0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIxYy5jLTE2NjItXFx0LnJlYWRfZWZ1c2VcXHRcXHQ9IHJ0dzg4MjFjX3JlYWRfZWZ1c2UsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmM9MTQ1PXN0YXRpYyB2b2lkIHJ0dzg4MjJiX3BoeV9iZl9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmMtMTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYzoxNTI6c3RhdGljIHZvaWQgcnR3ODgyMmJfcGh5X3NldF9wYXJhbShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmIuYy0xNTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jPTIxNTA9c3RhdGljIGNvbnN0IHN0cnVjdCBydHdfY2hpcF9vcHMgcnR3ODgyMmJfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYi5jLTIxNTItXFx0LnBvd2VyX29mZlxcdFxcdD0gcnR3X3Bvd2VyX29mZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmM6MjE1MzpcXHQucGh5X3NldF9wYXJhbVxcdFxcdD0gcnR3ODgyMmJfcGh5X3NldF9wYXJhbSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJiLmMtMjE1NC1cXHQucmVhZF9lZnVzZVxcdFxcdD0gcnR3ODgyMmJfcmVhZF9lZnVzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0xNzg3PXN0YXRpYyB2b2lkIHJ0dzg4MjJjX3B3cnRyYWNrX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0xODAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzoxODAzOnN0YXRpYyB2b2lkIHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW0oc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMTgwNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM9NDg5OT1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0d19jaGlwX29wcyBydHc4ODIyY19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtNDkwMS1cXHQucG93ZXJfb2ZmXFx0XFx0PSBydHdfcG93ZXJfb2ZmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYzo0OTAyOlxcdC5waHlfc2V0X3BhcmFtXFx0XFx0PSBydHc4ODIyY19waHlfc2V0X3BhcmFtLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy00OTAzLVxcdC5yZWFkX2VmdXNlXFx0XFx0PSBydHc4ODIyY19yZWFkX2VmdXNlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxNDo1NC41NjAxMDIwMzNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDExMTU3NjM4NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgYW5kIEZ1enppbmcgUkYgQ2FsaWJyYXRpb24gaW4gcnR3ODgyMmN1KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoLiBJdCBhcHBlYXJzIHRoYXQgYHJ0d19wb3dlcl9vbmAgY2FsbHMgYGNoaXAtXHUwMDNlb3BzLVx1MDAzZXBoeV9zZXRfcGFyYW0ocnR3ZGV2KWAuIERpZ2dpbmcgZGVlcGVyLCBgcnR3X3Bvd2VyX29uYCBpcyByZWFjaGVkIGZyb20gYHJ0d19jb3JlX3N0YXJ0YCwgd2hpY2ggaXMgaW5pdGlhdGVkIGZyb20gYHJ0d19tYWM4MDIxMV9zdGFydGAuIFRoaXMgYHJ0d19tYWM4MDIxMV9zdGFydGAgaXMgdGhlIGBtYWM4MDIxMSBzdGFydGAgY2FsbGJhY2ssIHNvIGl0IHNlZW1zIGxpa2UgYnJpbmdpbmcgdGhlIGludGVyZmFjZSB1cCBpcyB0aGUgdHJpZ2dlci4gIFRoaXMgdGhlbiBjYWxscyBgcGh5X3NldF9wYXJhbWAsIHdoaWNoIGluIHRoaXMgY2FzZSBsZWFkcyB0byBgcnR3ODgyMmNfcmZfaW5pdGAgYW5kIHVsdGltYXRlbHkgY2FsbHMgYHJ0dzg4MjJjX3JmX2RhY19jYWxgLiBTcGVjaWZpY2FsbHkgaXQgY2FsbHMgYHJ0dzg4MjJjX2RhY19jYWxfc3RlcDJgLCBgcnR3ODgyMmNfZGFjX2NhbF9zdGVwM2AgZXZlbnR1YWxseSBjYWxsaW5nIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgLCB3aGljaCB0aGVuIGNhbGxzIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAgYW5kIGBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaGAuXG5cblRoZSBwYXRjaCBpdHNlbGYgaXMgaW50ZXJlc3Rpbmcg4oCTIGl0J3MgcmVwbGFjaW5nIGN1c3RvbSBzb3J0aW5nIHdpdGggdGhlIHN0YW5kYXJkIGBzb3J0KClgIGZ1bmN0aW9uIGFuZCBtb2RpZnlpbmcgc29tZSBjYWxjdWxhdGlvbnMgaW4gYHJ0dzg4MjJjX2RhY19pcV9vZmZzZXRgIGFuZCBjaGVja2luZyBpbiBgcnR3ODgyMmNfZGFjX2lxX2NoZWNrYC4gU28sIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgUkYgY2FsaWJyYXRpb24uXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogSXMgdGhpcyBjb2RlIHJlYWNoYWJsZSBpbiBhIGZ1enppbmcgZW52aXJvbm1lbnQgbGlrZSBRRU1VPyBZZXMhIEkgY2FuIHNlZSBob3cgYHN5emthbGxlcmAgY2FuIGVtdWxhdGUgYSBVU0IgZGV2aWNlIG1hdGNoaW5nIGBydHc4ODIyY3VgIHVzaW5nIGBzeXpfdXNiX2Nvbm5lY3RgLiBPbmNlIHRoZSBkZXZpY2UgaXMgcHJvYmVkLCBgc3l6a2FsbGVyYCBjYW4gY3JlYXRlIGEgbmV0ZGV2IGFuZCBicmluZyBpdCB1cCAoYGlmY29uZmlnIHVwYCkuIFRoaXMgd2lsbCBzZXQgdXAgdGhlIGV4ZWN1dGlvbiBwYXRoIG9mIGBydHdfbWFjODAyMTFfc3RhcnRgIC1cdTAwM2UgYHJ0d19jb3JlX3N0YXJ0YCAtXHUwMDNlIGBydHdfcG93ZXJfb25gIC1cdTAwM2UgYHBoeV9zZXRfcGFyYW1gIC1cdTAwM2UgYHJ0dzg4MjJjX3JmX2luaXRgIC1cdTAwM2UgYHJ0dzg4MjJjX3JmX2RhY19jYWxgLiAgQWhhISAgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYCByZWFkcyBmcm9tIHRoZSBkZXZpY2UgdXNpbmcgYHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpYC4gVGhpcyByZWFkIHdpbGwgb2NjdXIgZHVyaW5nIFVTQiBjb250cm9sIG9yIGJ1bGsgdHJhbnNmZXJzLiBBbmQgc3l6a2FsbGVyJ3MgVVNCIGZ1enplciB3aWxsIHByb3ZpZGUgcmFuZG9tIHZhbHVlcyBmb3IgdGhpcyByZWFkLiBTbywgdGhlIGNvZGUgd2lsbCAqZGVmaW5pdGVseSogcHJvY2VzcyB0aGVzZSByYW5kb20gdmFsdWVzLiBUaGlzIGlzIGZhbnRhc3RpYy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgdGhlcmVmb3JlIGZ1enphYmxlLlxuXG5NeSBmb2N1cyBzaG91bGQgYmUgb24gaWRlbnRpZnlpbmcgdGhlIG1vc3QgcmVsZXZhbnQgZnVuY3Rpb25zIHRvIHRhcmdldC4gU3BlY2lmaWNhbGx5OiBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgLCBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2hgLCBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCwgYW5kIGBydHc4ODIyY19yZl9kYWNfY2FsYC5cblxuTm93LCBJIG5lZWQgdG8gY29uc2lkZXIgaW5saW5pbmcuIEFyZSBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgIGFuZCBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2hgIGlubGluZWQ/ICBUaGV5IGFyZSBzdGF0aWMsIGJ1dCBjYWxsZWQgZnJvbSBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYC4gYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAgaXMgYWxzbyBzdGF0aWMuIEl0IGlzIGFsc28gY2FsbGVkIGZyb20gc2V2ZXJhbCBvdGhlciBmdW5jdGlvbnMsIHNvIGl0IHNlZW1zIHRoaXMgd2lsbCBiZSBpbmxpbmVkLiBgcnR3ODgyMmNfcmZfZGFjX2NhbGAgaXMgYWxzbyBzdGF0aWMsIGFzIGlzIGBydHc4ODIyY19yZl9pbml0YC4gIEFoLCBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgaXMgYWxzbyBzdGF0aWMsICpidXQqIGl0cyBhZGRyZXNzIGlzIHRha2VuIGluIGBydHc4ODIyY19vcHNgLiBUaGlzIGlzIGtleS4gVGhhdCBtYWtlcyBpdCAqZGVmaW5pdGVseSogbm90IGlubGluZWQgYW5kIGEgZ29vZCBmb2N1cyBzeW1ib2wuIEFsdGhvdWdoLCBgcnR3ODgyMmNfcmZfZGFjX2NhbGAgYW5kIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgIGFyZSBhbHNvIGdvb2QgYmVjYXVzZSB0aGV5IGFyZSBwcmV0dHkgbGFyZ2UsIHNvIGl0IGlzIGxlc3MgbGlrZWx5IHRoZXkgYXJlIGlubGluZWQuIEdpdmVuIHRoYXQgdGhlIHBhdGNoIG9ubHkgdG91Y2hlcyBzdGF0aWMgZnVuY3Rpb25zIGluIGBydHc4ODIyYy5jYCwgSSBhbSBwcmV0dHkgY29uZmlkZW50IHdpdGggdXNpbmcgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gIGFzIHRoZSBwcmltYXJ5IGZvY3VzLCBhbmQgaW5jbHVkaW5nIGBydHc4ODIyY19cblxuIiwiSW5wdXRUb2tlbnMiOjMzMDMzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxNTozNS42NzU4Njk3MzNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NjM3NTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSVFc4OFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjptZW51Y29uZmlnIFJUVzg4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODAyLjExYWMgd2lyZWxlc3MgY2hpcHMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZz0xMT1pZiBSVFc4OFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTM6Y29uZmlnIFJUVzg4X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTQtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTc6Y29uZmlnIFJUVzg4X1BDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjA6Y29uZmlnIFJUVzg4X1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjEtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjIzOmNvbmZpZyBSVFc4OF9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjQtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjI2OmNvbmZpZyBSVFc4OF84ODIyQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNy1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6Mjk6Y29uZmlnIFJUVzg4Xzg4MjJDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTMwLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzozMjpjb25maWcgUlRXODhfODcyM1hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMzMtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjM1OmNvbmZpZyBSVFc4OF84NzAzQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0zNi1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzozOTpjb25maWcgUlRXODhfODcyM0RcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDAtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy00Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6NDM6Y29uZmlnIFJUVzg4Xzg4MjFDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTQ0LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo0Njpjb25maWcgUlRXODhfODhYWEFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDctXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjQ5OmNvbmZpZyBSVFc4OF84ODIxQVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy01MC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo1Mzpjb25maWcgUlRXODhfODgxMkFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctNTQtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy01Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6NTc6Y29uZmlnIFJUVzg4Xzg4MTRBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTU4LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo2MDpjb25maWcgUlRXODhfODgyMkJFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjJCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzo3MTpjb25maWcgUlRXODhfODgyMkJTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTcyLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MjJCUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy04MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6ODI6Y29uZmlnIFJUVzg4Xzg4MjJCVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy04My1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy05Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6OTM6Y29uZmlnIFJUVzg4Xzg4MjJDRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy05NC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQ0UgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjEwNDpjb25maWcgUlRXODhfODgyMkNTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTEwNS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQ1MgU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxMTU6Y29uZmlnIFJUVzg4Xzg4MjJDVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTYtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgyMkNVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxMjY6Y29uZmlnIFJUVzg4Xzg3MjNERVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMjctXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODcyM0RFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxMzc6Y29uZmlnIFJUVzg4Xzg3MjNEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMzgtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODcyM0RTIFNESU8gd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MTQ4OmNvbmZpZyBSVFc4OF84NzIzQ1NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTQ5LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg3MjNDUyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjE2Mjpjb25maWcgUlRXODhfODcyM0RVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE2My1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4NzIzRFUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjE3Mzpjb25maWcgUlRXODhfODgyMUNFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE3NC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIxQ0UgUENJIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjE4NDpjb25maWcgUlRXODhfODgyMUNTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTE4NS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIxQ1MgU0RJTyB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMTk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoxOTU6Y29uZmlnIFJUVzg4Xzg4MjFDVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xOTYtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgyMUNVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZzoyMDY6Y29uZmlnIFJUVzg4Xzg4MjFBVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yMDctXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODgyMUFVLzg4MTFBVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjE3OmNvbmZpZyBSVFc4OF84ODEyQVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjE4LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MTJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjI4OmNvbmZpZyBSVFc4OF84ODE0QUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjI5LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MTRBRSBQQ0kgd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTIzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjM5OmNvbmZpZyBSVFc4OF84ODE0QVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWctMjQwLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4MTRBVSBVU0Igd2lyZWxlc3MgbmV0d29yayBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjUwOmNvbmZpZyBSVFc4OF9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNTEtXFx0Ym9vbCBcXFwiUmVhbHRlayBydHc4OCBkZWJ1ZyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc6MjU4OmNvbmZpZyBSVFc4OF9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTI1OS1cXHRib29sIFxcXCJSZWFsdGVrIHJ0dzg4IGRlYnVnZnMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjI2Njpjb25maWcgUlRXODhfTEVEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0yNjctXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxNTozNS43MjA1MTQ5NTJaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODU2MTkzMDk5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLZXJuZWwgQ29uZmlndXJhdGlvbiBUaG91Z2h0IFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gbWFrZSBzdXJlIGBSVFc4OGAgYW5kIGBSVFc4OF84ODIyQ1VgIGFyZSBlbmFibGVkLiBUaGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gsIGJ1dCBsZXQncyBicmVhayBpdCBkb3duIGEgYml0IGZ1cnRoZXIuIGBSVFc4OF84ODIyQ1VgIGFwcGFyZW50bHkgYnJpbmdzIGluIGBSVFc4OF9DT1JFYCwgYFJUVzg4X1VTQmAsIGFuZCBgUlRXODhfODgyMkNgLCB3aGljaCBzb3VuZHMgYWJvdXQgcmlnaHQgZm9yIHRoZSA4ODIyQ1UgY2hpcHNldC4gU28sIGluIHRoZW9yeSwganVzdCBlbmFibGluZyBgUlRXODhgIGFuZCBgUlRXODhfODgyMkNVYCBzaG91bGQgY292ZXIgYWxsIHRoZSBuZWNlc3NhcnkgYmFzZXMuXG5cbkhvbGQgb24gYSBzZWNvbmQsIGdvdHRhIGRvdWJsZS1jaGVjayB0aG9zZSBkZXBlbmRlbmNpZXMuIEkga25vdyB0aGlzIGZyb20gZXhwZXJpZW5jZSwgYW5kIHRoZSBrZXJuZWwgY2FuIGJlIHRyaWNreSB3aXRoIGl0cyBkZXBlbmRlbmNpZXMuIE9rYXksIGEgcXVpY2sgY2hlY2suLi4gWWVzLCBgUlRXODhfODgyMkNVYCBkb2VzIGluZGVlZCBkZXBlbmQgb24gYFJUVzg4YCAob2J2aW91c2x5KSwgYnV0IGFsc28gb24gYFVTQmAgYW5kIGBNQUM4MDIxMWAuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlLiBTbywgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIEkndmUgZ290IGV2ZXJ5dGhpbmcgSSBuZWVkLCBJIHNob3VsZCBlbmFibGUgYFJUVzg4YCwgYFJUVzg4Xzg4MjJDVWAsIGBVU0JgLCBhbmQgYE1BQzgwMjExYC4gVGhhdCBzaG91bGQgY292ZXIgYWxsIHRoZSBuZWNlc3NhcnkgYmFzZSBtb2R1bGVzIGZvciB0aGlzIGNoaXBzZXQuIE5vdywgbGV0J3MganVzdCBxdWlja2x5IGNvbmZpcm0gdGhvc2UgZGVwZW5kZW5jaWVzIHRvIGJlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsLiBUaW1lIHRvIGRlbHZlIGludG8gdGhlIGBSVFc4OF84ODIyQ1VgIGNvbmZpZy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODMyOCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxNTo0NC4yODI0NDk5M1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg4NDk0OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJUVzg4Xzg4MjJDVVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L0tjb25maWc9MTA0PWNvbmZpZyBSVFc4OF84ODIyQ1NcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZy0xMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnOjExNTpjb25maWcgUlRXODhfODgyMkNVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnLTExNi1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTU6NDQuMzMxMzA0NTk5WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIzMjU3MzIyMjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIFdpcmVsZXNzIEtjb25maWcqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlciBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgc29tZSBmZWF0dXJlIG9yIG9wdGlvbiBpcyBjb250cm9sbGVkLiBMZXQncyBzZWUuLi4gSSdsbCBzdGFydCBieSBsb29raW5nIGF0IHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnYCBmaWxlLCBhcm91bmQgbGluZSAxMTUuIFRoYXQgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBjaGVjayB0aGUgZ2VuZXJhbCBzZXR0aW5ncyBhbmQgZGVwZW5kZW5jaWVzIGZvciB0aGlzIGRyaXZlci4gSG9wZWZ1bGx5LCBpdCdsbCBwcm92aWRlIHNvbWUgY2xhcml0eSByZWdhcmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBJJ20gaW50ZXJlc3RlZCBpbiBhbmQgdGhlaXIgZGVwZW5kZW5jaWVzLiBUaGlzIEtjb25maWcgZmlsZSBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIGRyaXZlcnMgYXJlIGJ1aWx0IGFuZCBjb25maWd1cmVkLCBhbmQgbGluZSAxMTUgZmVlbHMgbGlrZSBhIGdvb2Qgc3BvdCB0byBzdGFydCBteSBzZWFyY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MDIyLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTY6MDcuNTg4NjI5MzE2WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMTA6XFx0XFx0aGVscFxcbiAxMTE6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODgyMkNTIGNoaXBzZXRcXG4gMTEyOlxcdFxcbiAxMTM6XFx0XFx0ICA4MDIuMTFhYyBTRElPIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcbiAxMTQ6XFx0XFxuIDExNTpcXHRjb25maWcgUlRXODhfODgyMkNVXFxuIDExNjpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODIyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgYWRhcHRlclxcXCJcXG4gMTE3OlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuIDExODpcXHRcXHRzZWxlY3QgUlRXODhfQ09SRVxcbiAxMTk6XFx0XFx0c2VsZWN0IFJUVzg4X1VTQlxcbiAxMjA6XFx0XFx0c2VsZWN0IFJUVzg4Xzg4MjJDXFxuIDEyMTpcXHRcXHRoZWxwXFxuIDEyMjpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODIyQ1UgY2hpcHNldFxcbiAxMjM6XFx0XFxuIDEyNDpcXHRcXHQgIDgwMi4xMWFjIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXG4gMTI1OlxcdFxcbiAxMjY6XFx0Y29uZmlnIFJUVzg4Xzg3MjNERVxcbiAxMjc6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODcyM0RFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIGFkYXB0ZXJcXFwiXFxuIDEyODpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAxMjk6XFx0XFx0c2VsZWN0IFJUVzg4X0NPUkVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTY6MDcuNTg4NzAxOTM2WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0ODU4OTcyOTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUlRXODggRHJpdmVyIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBSVFc4OF84ODIyQ1VgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdGhpcyBpcyBhIFVTQi1iYXNlZCBtb2R1bGUsIHNvIHRoYXQncyBhIGtleSBkZXBlbmRlbmN5LiBPYnZpb3VzbHkuIFRoZW4sIEkgc2VlIGBSVFc4OGAgZGVwZW5kcyBvbiBgTUFDODAyMTFgLCB3aGljaCBpcyB0aGUgZXhwZWN0ZWQgZnJhbWV3b3JrIGZvciB0aGlzIHR5cGUgb2Ygd2lyZWxlc3MgaGFyZHdhcmUuIFRvIGdhaW4gYSBiZXR0ZXIgcGljdHVyZSwgSSBuZWVkIHRvIHpvb20gb3V0IGEgYml0IGFuZCBzZWUgd2hhdCBvdGhlciBtb2R1bGVzIGBSVFc4OGAgcmVsaWVzIG9uLiBVbmRlcnN0YW5kaW5nIHRoZSBicm9hZGVyIGRlcGVuZGVuY2llcyBvZiBgUlRXODhgIHdpbGwgYmUgY3JpdGljYWwgdG8gYXNzZXNzaW5nIGl0cyBvdmVyYWxsIGludGVncmF0aW9uLiBJIHNob3VsZCBzdGFydCB0aGVyZSwgYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NTYzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxNjozMi40NDc2NzgxMjVaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzAxOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRtZW51Y29uZmlnIFJUVzg4XFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4MDIuMTFhYyB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIG1hYzgwMjExLWJhc2VkIHdpcmVsZXNzIGRyaXZlcnMgdGhhdFxcbiAgIDc6XFx0XFx0ICBlbmFibGVzIFJlYWx0ZWsgSUVFRSA4MDIuMTFhYyB3aXJlbGVzcyBjaGlwc2V0cy5cXG4gICA4OlxcdFxcbiAgIDk6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgcnR3ODguXFxuICAxMDpcXHRcXG4gIDExOlxcdGlmIFJUVzg4XFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBSVFc4OF9DT1JFXFxuICAxNDpcXHRcXHR0cmlzdGF0ZVxcbiAgMTU6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBSVFc4OF9QQ0lcXG4gIDE4OlxcdFxcdHRyaXN0YXRlXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBSVFc4OF9TRElPXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjE2OjMyLjQ0Nzc1MDA0NVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NTg4MTc0ODU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBSVFc4OCBEcml2ZXIgYW5kIENhbGlicmF0aW9uIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYFJUVzg4YCBkcml2ZXIsIGFuZCBpdCdzIGNsZWFyIHRoYXQgaXQgZGVwZW5kcyBvbiBgTUFDODAyMTFgLiBUaGVyZWZvcmUsIHRvIGVuYWJsZSBpdCwgSSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgYFJUVzg4YCwgYFJUVzg4Xzg4MjJDVWAsIGBVU0JgLCBhbmQgYE1BQzgwMjExYCBjb25maWd1cmF0aW9ucyBhcmUgc2V0LiBUaGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guXG5cbk5vdywgSSdtIGRpZ2dpbmcgZGVlcGVyIGJlY2F1c2UgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSB0b3VjaGluZyBzb21lIHNwZWNpZmljIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGBydHc4ODIyYy5jYCBmaWxlLiBTcGVjaWZpY2FsbHksIGl0IG1lbnRpb25zIG1vZGlmaWNhdGlvbnMgdG8gYHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyYCwgYHJ0dzg4MjJjX2RhY19pcV9zb3J0YCwgYHJ0dzg4MjJjX2RhY19pcV9vZmZzZXRgLCBgcnR3ODgyMmNfZGFjX2lxX2NoZWNrYCwgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYCwgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoYCwgYW5kIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGFsbCBpbnZvbHZlZCB3aXRoIERBQyBjYWxpYnJhdGlvbiwgc28gaXQgbWFrZXMgc2Vuc2UgdG8gZm9jdXMgb24gdGhlbS5cblxuR2l2ZW4gdGhlIG1vZGlmaWNhdGlvbnMsIEkndmUgZGVjaWRlZCBteSBmb2N1cyBzeW1ib2xzIHNob3VsZCBiZTogYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gLCBgcnR3ODgyMmNfcmZfZGFjX2NhbGAsIGFuZCBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYC4gTm93LCBsZXQncyBzZWUgaWYgSSBjYW4gaW5jbHVkZSB0aGVtIGFzIEZvY3VzU3ltYm9scy5cblxuSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiBgcnR3ODgyMmNfcmZfZGFjX2NhbGAgYW5kIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgIGFyZSBzdGF0aWMgb3IgaW5saW5lZC4gQWgsIHRoZXkgYXJlIHN0YXRpYy4gSG93ZXZlciwgdGhleSBhcmUgYWxzbyBxdWl0ZSBsYXJnZTogYHJ0dzg4MjJjX3JmX2RhY19jYWxgIGlzIDYwIGxpbmVzLCBhbmQgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAgaXMgMTUgbGluZXMuIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBpcyA1MCBsaW5lcy5cblxuQ29uc2lkZXJpbmcgdGhlIHNpemVzIGFuZCB0aGUgcG90ZW50aWFsIGZvciBvcHRpbWl6YXRpb24sIEkgdGhpbmsgaXQncyBiZXR0ZXIgdG8gaW5jbHVkZSBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgYmVjYXVzZSBpdCdzIGRlZmluaXRlbHkgbm90IGlubGluZWQgKHNpbmNlIGl0cyBhZGRyZXNzIGlzIHRha2VuKS4gQWxzbywgSSdsbCBpbmNsdWRlIGBydHc4ODIyY19yZl9pbml0YCwgc2luY2UgaXQgY2FsbHMgYHJ0dzg4MjJjX3JmX2RhY19jYWxgLlxuXG5JIG5lZWQgdG8gcXVpY2tseSBjb25maXJtIHdoZXRoZXIgYHJ0dzg4MjJjX3JmX2luaXRgIGlzIHN0YXRpYy4gWWVzLiBTbywgdGhlIGluY2x1c2lvbiBvZiBgcnR3ODgyMmNfcmZfaW5pdGAgbG9va3MgZ29vZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgcnR3ODgyMmNfcmZfZGFjX2NhbGAgaXMgYWxzbyBzdGF0aWMsIHdoaWNoIGl0IGlzLiBBbmQgSSB3aWxsIGFkZCBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCwgYXMgdGhhdCBpcyBzdGF0aWMgdG9vLlxuXG5TbywgSSdtIGdvaW5nIHRvIGFkZCBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAsIGBydHc4ODIyY19yZl9kYWNfY2FsYCwgYW5kIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgIHRvIGBGb2N1c1N5bWJvbHNgLlxuXG5JIGp1c3QgbmVlZCB0byBlbnN1cmUgbXkgZWFybGllciBhbmFseXNpcyByZW1haW5zIGNvcnJlY3QuIElzIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgIHN0YXRpYz8gWWVzLiBPa2F5LCBhbmQgYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYCBpcyBzdGF0aWMgdG9vLiBJJ2xsIGFsc28gYWRkIGBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaGAuXG5cbkZpbmFsbHksIHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0J3MganVzdCBkbyBhIHF1aWNrIHNjYW4gb2YgYHJ0dzg4MjJjLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIEkgbWlnaHQgaGF2ZSBtaXNzZWQuIFRoYXQgbG9va3MgbGlrZSBhIGNvbXByZWhlbnNpdmUgbGlzdC4gSSBhbSBzYXRpc2ZpZWQgd2l0aCB0aGUgYWJvdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMDY5LCJPdXRwdXRUb2tlbnMiOjY5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Njc3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTY6NDIuMDM1OTI4MTgxWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODg1MjY0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiBydHc4ODIyY19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0zMDkzPXN0cnVjdCBkcGtfY2ZnX3BhaXIge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMwOTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jOjMwOTk6dm9pZCBydHc4ODIyY19wYXJzZV90YmxfZHBrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jLTMxMDAtXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBydHdfdGFibGUgKnRibClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYz0zNDgxPXN0YXRpYyB1OCBydHc4ODIyY19kcGtfYWdjX2xvc3NfY2hrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHU4IHBhdGgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmMtMzQ5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmM6MzQ5ODpzdHJ1Y3QgcnR3ODgyMmNfZHBrX2RhdGEge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYy0zNDk5LVxcdHU4IHR4YmI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjE2OjQyLjA4NDc4NzZaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMwOTg0NDM4MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhc29uaW5nIGZvciBGdXp6aW5nIFJlYWx0ZWsgODgyMkMgREFDIElRIENhbGlicmF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXaGlsZSBgcnR3ODgyMmNfcGFyc2VfdGJsX2Rwa2AgaXNuJ3QgZGlyZWN0bHkgcmVsZXZhbnQgdG8gdGhlIHBhdGNoIGl0c2VsZiwgd2hpY2ggZm9jdXNlcyBvbiBEQUMgSVEgY2FsaWJyYXRpb24sIGl0J3MgZ29vZCB0byBrZWVwIGl0IGluIG1pbmQuIE15IHByaW1hcnkgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gdGhlIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBmdW5jdGlvbiwgYWxvbmcgd2l0aCBgcnR3ODgyMmNfcmZfZGFjX2NhbGAgYW5kIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgLiBFdmVuIGlmIHRoZSBsYXR0ZXIgdHdvIGFyZSBzdGF0aWMsIHN5emthbGxlciBoYXMgYSBoYWJpdCBvZiBmaW5kaW5nIHRoZW0gaWYgdGhleSBhcmVuJ3QgaW5saW5lZCwgc28gbGV0J3Mga2VlcCB0aGF0IGluIG1pbmQuXG5cbkZpcnN0LCBsZXQgbWUgY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBXZSBkZWZpbml0ZWx5IG5lZWQgYFJUVzg4YCwgYFJUVzg4Xzg4MjJDVWAsIGBVU0JgLCBhbmQgYE1BQzgwMjExYC4gVGhvdWdoIFVTQiBhbmQgTUFDODAyMTEgYXJlIHByZXR0eSBzdGFuZGFyZCBmb3Igc3l6a2FsbGVyLCBpdCdzIGFsd2F5cyBiZXR0ZXIgdG8gc3BlY2lmeSB0aGVtLiBOb3csIGFyZSB0aGVyZSBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzPyBBaCwgYFJUVzg4X0NPUkVgLCBgUlRXODhfVVNCYCwgYW5kIGBSVFc4OF84ODIyQ2AgYXJlIGFsbCBzZWxlY3RlZCBieSBgUlRXODhfODgyMkNVYCwgc28gd2UgZG9uJ3QgbmVlZCB0byBzcGVjaWZ5IHRob3NlIGV4cGxpY2l0bHkuIE5pY2UuXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybSByZWFjaGFiaWxpdHkuIERvZXMgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAgZ2V0IGNhbGxlZCB0aHJvdWdoIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYD8gWWVwLCBpdCdzOiBgcnR3ODgyMmNfcGh5X3NldF9wYXJhbWAgLVx1MDAzZSBgcnR3ODgyMmNfcmZfaW5pdGAgLVx1MDAzZSBgcnR3ODgyMmNfcmZfZGFjX2NhbGAgLVx1MDAzZSBgcnR3ODgyMmNfZGFjX2NhbF9zdGVwMmAgLVx1MDAzZSBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYC5cblxuQ2FuIGBydHc4ODIyY19waHlfc2V0X3BhcmFtYCBiZSBjYWxsZWQgZnJvbSBzb21ld2hlcmUgZWxzZT8gT2theSwgbG9va2luZyBhdCBgcnR3ODgyMmNfb3BzYCwgaXQncyBjYWxsZWQgd2hlbiB0aGUgZGV2aWNlIHByb2Jlcy4gUmlnaHQsIHNvIGBydHc4ODIyY3VfcHJvYmVgIGNhbGxzIGBydHdfdXNiX3Byb2JlYCwgd2hpY2ggY2FsbHMgYHJ0d19jb3JlX2luaXRgLCBhbmQgdGhhdCdzIGhvdyB0aGUgZGV2aWNlIGlzIHNldCB1cC4gVGhlbiwgd2hlbiB0aGUgaW50ZXJmYWNlIGlzIGJyb3VnaHQgdXAsIGBydHdfbWFjODAyMTFfc3RhcnRgIGNhbGxzIGBydHdfY29yZV9zdGFydGAsIHdoaWNoIGluIHR1cm4gY2FsbHMgYHJ0d19wb3dlcl9vbmAsIGFuZCAqdGhhdCdzKiB3aGVuIGBjaGlwLVx1MDAzZW9wcy1cdTAwM2VwaHlfc2V0X3BhcmFtKHJ0d2RldilgIGlzIGNhbGxlZC4gVGhhdCdzIGEgc3RhbmRhcmQgZmxvdyBmb3IgbWFjODAyMTEgZHJpdmVycy4gRXhjZWxsZW50LCBpdCdzIHJlYWNoYWJsZS5cblxuSGVyZSdzIHRoZSByZWFzb25pbmc6IFRoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIFJGIGNhbGlicmF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgREFDIElRIGNhbGlicmF0aW9uLCBpbiB0aGUgUmVhbHRlayA4ODIyQyB3aXJlbGVzcyBkcml2ZXIgKGBydHc4ODIyYy5jYCkuIEl04oCZcyByZXBsYWNpbmcgYSBjdXN0b20gc29ydGluZyBmdW5jdGlvbiB3aXRoIGEgc3RhbmRhcmQgb25lIGFuZCBtYWtpbmcgY2hhbmdlcyB0byBob3cgSVEgb2Zmc2V0cyBhcmUgY2FsY3VsYXRlZCBhbmQgdmFsaWRhdGVkLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBiZWNhdXNlIHRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGRldmljZXMgKGBydHc4ODIyY3VgKSwgd2hpY2ggaXMgcGVyZmVjdCBzaW5jZSBzeXprYWxsZXIgY2FuIGVhc2lseSBlbXVsYXRlIHRob3NlIHVzaW5nIGBzeXpfdXNiX2Nvbm5lY3RgLiBXaGVuIHRoYXQgZW11bGF0ZWQgVVNCIFdpLUZpIGludGVyZmFjZSBpcyBhY3RpdmF0ZWQsIHRoZSBkcml2ZXIgaW5pdGlhdGVzIFJGIGNhbGlicmF0aW9uLCB0cmlnZ2VyaW5nIHRoZXNlIG1vZGlmaWVkIGZ1bmN0aW9ucy5cblxuU28sIGxldCdzIGtlZXAgdGhlIGZvY3VzIG9uOlxuXG4qICAgYHJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1gXG4qICAgYHJ0dzg4MjJjX3JmX2RhY19jYWxgXG4qICAgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWBcblxuV2l0aCB0aGVzZSBjb25maWd1cmF0aW9uczpcblxuKiAgIGBSVFc4OGBcbiogICBgUlRXODhfODgyMkNVYFxuKiAgIGBVU0JgXG4qICAgYE1BQzgwMjExYFxuXG5KdXN0IHRvIGRvdWJsZSBjaGVjaywgYFJUVzg4Xzg4MjJDVWAgc2hvdWxkIGJlIHN1ZmZpY2llbnQuIFdoYXQgYWJvdXQgUENJZSAoYFJUVzg4Xzg4MjJDRWApPyBTeXprYWxsZXIgZG9lc24ndCBlYXNpbHkgZW11bGF0ZSBQQ0llLCBidXQgVVNCIHNob3VsZCBiZSBlYXN5LCBzbyBgUlRXODhfODgyMkNVYCBpcyB0aGUga2V5IGZvciBmdXp6aW5nLlxuXG5Pa2F5LCBJJ20gcmVhZHkgdG8gc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMDM5LCJPdXRwdXRUb2tlbnMiOjIzOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxNjo1NS4xODMyMzM2MTlaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjI2MDk0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUlRXODhcIixcbiAgICBcIlJUVzg4Xzg4MjJDVVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0dzg4MjJjX3BoeV9zZXRfcGFyYW1cIixcbiAgICBcInJ0dzg4MjJjX3JmX2RhY19jYWxcIixcbiAgICBcInJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBSRiBjYWxpYnJhdGlvbiBsb2dpYyAoc3BlY2lmaWNhbGx5IERBQyBJUSBjYWxpYnJhdGlvbikgaW4gdGhlIFJlYWx0ZWsgODgyMkMgd2lyZWxlc3MgZHJpdmVyIChgcnR3ODgyMmMuY2ApLiBJdCByZXBsYWNlcyBhIGN1c3RvbSBzb3J0aW5nIGltcGxlbWVudGF0aW9uIHdpdGggdGhlIHN0YW5kYXJkIGBzb3J0KClgIGZ1bmN0aW9uIGFuZCBjaGFuZ2VzIHRoZSBsb2dpYyBmb3IgY2FsY3VsYXRpbmcgSVEgb2Zmc2V0cyBhbmQgY2hlY2tpbmcgdmFsdWVzLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBiZWNhdXNlIHRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGRldmljZXMgKGBydHc4ODIyY3VgKSwgd2hpY2ggY2FuIGJlIGVtdWxhdGVkIGJ5IHN5emthbGxlciB2aWEgYHN5el91c2JfY29ubmVjdGAuIFdoZW4gdGhlIGVtdWxhdGVkIFVTQiBXaS1GaSBpbnRlcmZhY2UgaXMgYnJvdWdodCB1cCwgdGhlIGRyaXZlciBwZXJmb3JtcyBSRiBjYWxpYnJhdGlvbiwgdHJpZ2dlcmluZyB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg4XCIsXG4gICAgXCJSVFc4OF84ODIyQ1VcIixcbiAgICBcIlVTQlwiLFxuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHc4ODIyY19waHlfc2V0X3BhcmFtXCIsXG4gICAgXCJydHc4ODIyY19yZl9kYWNfY2FsXCIsXG4gICAgXCJydHc4ODIyY19kYWNfY2FsX3JmX21vZGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgUkYgY2FsaWJyYXRpb24gbG9naWMgKHNwZWNpZmljYWxseSBEQUMgSVEgY2FsaWJyYXRpb24pIGluIHRoZSBSZWFsdGVrIDg4MjJDIHdpcmVsZXNzIGRyaXZlciAoYHJ0dzg4MjJjLmNgKS4gSXQgcmVwbGFjZXMgYSBjdXN0b20gc29ydGluZyBpbXBsZW1lbnRhdGlvbiB3aXRoIHRoZSBzdGFuZGFyZCBgc29ydCgpYCBmdW5jdGlvbiBhbmQgY2hhbmdlcyB0aGUgbG9naWMgZm9yIGNhbGN1bGF0aW5nIElRIG9mZnNldHMgYW5kIGNoZWNraW5nIHZhbHVlcy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYmVjYXVzZSB0aGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIChgcnR3ODgyMmN1YCksIHdoaWNoIGNhbiBiZSBlbXVsYXRlZCBieSBzeXprYWxsZXIgdmlhIGBzeXpfdXNiX2Nvbm5lY3RgLiBXaGVuIHRoZSBlbXVsYXRlZCBVU0IgV2ktRmkgaW50ZXJmYWNlIGlzIGJyb3VnaHQgdXAsIHRoZSBkcml2ZXIgcGVyZm9ybXMgUkYgY2FsaWJyYXRpb24sIHRyaWdnZXJpbmcgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTY6NTUuMjU5NTAwNjU3WiIsIlNlcSI6MzMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTk4MzM0NDA3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjE2OjU1LjI2MDAyNTM4N1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozMTk4MjgxNDc3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBJUSBjYWxpYnJhdGlvbiBsb2dpYyBpbiB0aGUgUmVhbHRlayBydHc4OCB3aXJlbGVzcyBkcml2ZXIuIEl0IHJlcGxhY2VzIGN1c3RvbSBzb3J0aW5nIGFuZCBtaW4vbWF4IGNhbGN1bGF0aW9ucyB3aXRoIHN0YW5kYXJkIGtlcm5lbCBmdW5jdGlvbnMgKGBzb3J0KClgKSBhbmQgc2ltcGxpZmllcyB0aGUgYXJpdGhtZXRpYyBieSB1c2luZyBzaWduZWQgMzItYml0IGludGVnZXJzIChgczMyYCkgaW5zdGVhZCBvZiB1bnNpZ25lZCBpbnRlZ2VycyB3aXRoIG1hbnVhbCBzaWduIGhhbmRsaW5nLiBUaGUgYXJyYXlzIGBpdmAgYW5kIGBxdmAgYXJlIGFsbG9jYXRlZCBvbiB0aGUgc3RhY2sgYW5kIHBvcHVsYXRlZCBieSByZWFkaW5nIGhhcmR3YXJlIHJlZ2lzdGVycy4gV2hpbGUgdGhlcmUgaXMgYSB0aGVvcmV0aWNhbCBwcmUtZXhpc3RpbmcgZWRnZSBjYXNlIHdoZXJlIHRoZSBhcnJheXMgbWlnaHQgbm90IGJlIGZ1bGx5IHBvcHVsYXRlZCBpZiB0aGUgaGFyZHdhcmUgZmFpbHMgdG8gcHJvdmlkZSBlbm91Z2ggdmFsaWQgc2FtcGxlcyB3aXRoaW4gMTAsMDAwIGl0ZXJhdGlvbnMsIHRoaXMgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4YWNlcmJhdGUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBUaGUgZGF0YSBpcyB1c2VkIHN0cmljdGx5IGZvciBpbnRlcm5hbCBoYXJkd2FyZSBjYWxpYnJhdGlvbiBhbmQgaXMgbm90IGNvcGllZCB0byB1c2Vyc3BhY2UsIG1lYW5pbmcgdGhlcmUgaXMgbm8gcmlzayBvZiBhbiBpbmZvLWxlYWsuIEFueSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBtZW1vcnkgY29ycnVwdGlvbiB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIEEgZGVkaWNhdGVkIEtNU0FOIHJ1biBpcyBub3QganVzdGlmaWVkIGFzIG5vIG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWsgdnVsbmVyYWJpbGl0aWVzIGFyZSBpbnRyb2R1Y2VkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQ1MTg3OWJkNzc1YmRkOGYxN2E3ZTM3YmY1N2IyOTMwNGQ5YzA4ZTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAwNjoxMjoxNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuY1xuaW5kZXggMjQ0YzgwMjY0NzljMi4uNmZjZGZjNjRjM2IxZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5jXG5AQCAtMyw2ICszLDggQEBcbiAgKi9cbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdG9wcy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvc29ydC5oXHUwMDNlXG4gI2luY2x1ZGUgXCJtYWluLmhcIlxuICNpbmNsdWRlIFwiY29leC5oXCJcbiAjaW5jbHVkZSBcImZ3LmhcIlxuQEAgLTE1Myw4NCArMTU1LDMwIEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19yZXN0b3JlX3JlZyhzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgdm9pZCBydHc4ODIyY19yZl9taW5tYXhfY21wKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiB2YWx1ZSxcbi1cdFx0XHRcdCAgIHUzMiAqbWluLCB1MzIgKm1heClcbitzdGF0aWMgaW50IHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpXG4ge1xuLVx0aWYgKHZhbHVlIFx1MDAzZT0gMHgyMDApIHtcbi1cdFx0aWYgKCptaW4gXHUwMDNlPSAweDIwMCkge1xuLVx0XHRcdGlmICgqbWluIFx1MDAzZSB2YWx1ZSlcbi1cdFx0XHRcdCptaW4gPSB2YWx1ZTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHQqbWluID0gdmFsdWU7XG4tXHRcdH1cbi1cdFx0aWYgKCptYXggXHUwMDNlPSAweDIwMCkge1xuLVx0XHRcdGlmICgqbWF4IFx1MDAzYyB2YWx1ZSlcbi1cdFx0XHRcdCptYXggPSB2YWx1ZTtcbi1cdFx0fVxuLVx0fSBlbHNlIHtcbi1cdFx0aWYgKCptaW4gXHUwMDNjIDB4MjAwKSB7XG4tXHRcdFx0aWYgKCptaW4gXHUwMDNlIHZhbHVlKVxuLVx0XHRcdFx0Km1pbiA9IHZhbHVlO1xuLVx0XHR9XG4tXG4tXHRcdGlmICgqbWF4ICBcdTAwM2U9IDB4MjAwKSB7XG4tXHRcdFx0Km1heCA9IHZhbHVlO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdGlmICgqbWF4IFx1MDAzYyB2YWx1ZSlcbi1cdFx0XHRcdCptYXggPSB2YWx1ZTtcbi1cdFx0fVxuLVx0fVxuLX1cbitcdHMzMiB2YSA9ICooY29uc3QgczMyICopYTtcbitcdHMzMiB2YiA9ICooY29uc3QgczMyICopYjtcbiBcbi1zdGF0aWMgdm9pZCBfX3J0dzg4MjJjX2RhY19pcV9zb3J0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiAqdjEsIHUzMiAqdjIpXG4te1xuLVx0aWYgKCp2MSBcdTAwM2U9IDB4MjAwIFx1MDAyNlx1MDAyNiAqdjIgXHUwMDNlPSAweDIwMCkge1xuLVx0XHRpZiAoKnYxIFx1MDAzZSAqdjIpXG4tXHRcdFx0c3dhcCgqdjEsICp2Mik7XG4tXHR9IGVsc2UgaWYgKCp2MSBcdTAwM2MgMHgyMDAgXHUwMDI2XHUwMDI2ICp2MiBcdTAwM2MgMHgyMDApIHtcbi1cdFx0aWYgKCp2MSBcdTAwM2UgKnYyKVxuLVx0XHRcdHN3YXAoKnYxLCAqdjIpO1xuLVx0fSBlbHNlIGlmICgqdjEgXHUwMDNjIDB4MjAwIFx1MDAyNlx1MDAyNiAqdjIgXHUwMDNlPSAweDIwMCkge1xuLVx0XHRzd2FwKCp2MSwgKnYyKTtcbi1cdH1cbitcdHJldHVybiAodmEgXHUwMDNlIHZiKSAtICh2YSBcdTAwM2MgdmIpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfaXFfc29ydChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKml2LCB1MzIgKnF2KVxuK3N0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9zb3J0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHMzMiAqaXYsIHMzMiAqcXYpXG4ge1xuLVx0dTMyIGksIGo7XG4tXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBEQUNLX1NOXzg4MjJDIC0gMTsgaSsrKSB7XG4tXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIChEQUNLX1NOXzg4MjJDIC0gMSAtIGkpIDsgaisrKSB7XG4tXHRcdFx0X19ydHc4ODIyY19kYWNfaXFfc29ydChydHdkZXYsIFx1MDAyNml2W2pdLCBcdTAwMjZpdltqICsgMV0pO1xuLVx0XHRcdF9fcnR3ODgyMmNfZGFjX2lxX3NvcnQocnR3ZGV2LCBcdTAwMjZxdltqXSwgXHUwMDI2cXZbaiArIDFdKTtcbi1cdFx0fVxuLVx0fVxuK1x0c29ydChpdiwgREFDS19TTl84ODIyQywgc2l6ZW9mKHMzMiksIHJ0dzg4MjJjX2RhY19pcV9jbXBfczMyLCBOVUxMKTtcbitcdHNvcnQocXYsIERBQ0tfU05fODgyMkMsIHNpemVvZihzMzIpLCBydHc4ODIyY19kYWNfaXFfY21wX3MzMiwgTlVMTCk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICp2ZWMsIHUzMiAqdmFsKVxuK3N0YXRpYyBzMzIgcnR3ODgyMmNfZGFjX2lxX29mZnNldChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKnZlYylcbiB7XG4tXHR1MzIgcCwgbSwgdCwgaTtcbitcdHMzMiBzdW0gPSAwO1xuIFxuLVx0bSA9IDA7XG4tXHRwID0gMDtcbi1cdGZvciAoaSA9IDEwOyBpIFx1MDAzYyBEQUNLX1NOXzg4MjJDIC0gMTA7IGkrKykge1xuLVx0XHRpZiAodmVjW2ldIFx1MDAzZSAweDIwMClcbi1cdFx0XHRtID0gKDB4NDAwIC0gdmVjW2ldKSArIG07XG4tXHRcdGVsc2Vcbi1cdFx0XHRwID0gdmVjW2ldICsgcDtcbi1cdH1cbitcdGZvciAodTMyIGkgPSAxMDsgaSBcdTAwM2MgREFDS19TTl84ODIyQyAtIDEwOyBpKyspXG4rXHRcdHN1bSArPSB2ZWNbaV07XG4gXG4tXHRpZiAocCBcdTAwM2UgbSkge1xuLVx0XHR0ID0gcCAtIG07XG4tXHRcdHQgPSB0IC8gKERBQ0tfU05fODgyMkMgLSAyMCk7XG4tXHR9IGVsc2Uge1xuLVx0XHR0ID0gbSAtIHA7XG4tXHRcdHQgPSB0IC8gKERBQ0tfU05fODgyMkMgLSAyMCk7XG4tXHRcdGlmICh0ICE9IDB4MClcbi1cdFx0XHR0ID0gMHg0MDAgLSB0O1xuLVx0fVxuK1x0czMyIGF2ZyA9IHN1bSAvIChEQUNLX1NOXzg4MjJDIC0gMjApO1xuIFxuLVx0KnZhbCA9IHQ7XG4rXHRyZXR1cm4gYXZnIFx1MDAzZT0gMCA/IGF2ZyA6IDB4NDAwICsgYXZnO1xuIH1cbiBcbiBzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3dyaXRlX2FkZHIodTggcGF0aClcbkBAIC0yNzEsMjkgKzIxOSwyNyBAQCBzdGF0aWMgdTMyIHJ0dzg4MjJjX2dldF9wYXRoX3JlYWRfYWRkcih1OCBwYXRoKVxuIFx0cmV0dXJuIGJhc2VfYWRkcjtcbiB9XG4gXG4tc3RhdGljIGJvb2wgcnR3ODgyMmNfZGFjX2lxX2NoZWNrKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHUzMiB2YWx1ZSlcbitzdGF0aWMgYm9vbCBydHc4ODIyY19kYWNfaXFfY2hlY2soc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgczMyIHZhbHVlKVxuIHtcbi1cdGJvb2wgcmV0ID0gdHJ1ZTtcbiBcbi1cdGlmICgodmFsdWUgXHUwMDNlPSAweDIwMCBcdTAwMjZcdTAwMjYgKDB4NDAwIC0gdmFsdWUpIFx1MDAzZSAweDY0KSB8fFxuLVx0ICAgICh2YWx1ZSBcdTAwM2MgMHgyMDAgXHUwMDI2XHUwMDI2IHZhbHVlIFx1MDAzZSAweDY0KSkge1xuLVx0XHRyZXQgPSBmYWxzZTtcbitcdGlmICh2YWx1ZSBcdTAwM2UgMTAwIHx8IHZhbHVlIFx1MDAzYyAtMTAwKSB7XG4gXHRcdHJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1JGSywgXCJbREFDS10gRXJyb3Igb3ZlcmZsb3dcXG5cIik7XG4rXHRcdHJldHVybiBmYWxzZTtcbiBcdH1cbiBcbi1cdHJldHVybiByZXQ7XG4rXHRyZXR1cm4gdHJ1ZTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldiwgdTMyICppdiwgdTMyICpxdilcbitzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCBzMzIgKml2LCBzMzIgKnF2KVxuIHtcbiBcdHUzMiB0ZW1wO1xuLVx0aW50IGkgPSAwLCBjbnQgPSAwO1xuK1x0dTMyIGkgPSAwLCBjbnQgPSAwO1xuIFxuIFx0d2hpbGUgKGkgXHUwMDNjIERBQ0tfU05fODgyMkMgXHUwMDI2XHUwMDI2IGNudCBcdTAwM2MgMTAwMDApIHtcbiBcdFx0Y250Kys7XG4gXHRcdHRlbXAgPSBydHdfcmVhZDMyX21hc2socnR3ZGV2LCAweDJkYmMsIDB4M2ZmZmZmKTtcbi1cdFx0aXZbaV0gPSAodGVtcCBcdTAwMjYgMHgzZmYwMDApIFx1MDAzZVx1MDAzZSAxMjtcbi1cdFx0cXZbaV0gPSB0ZW1wIFx1MDAyNiAweDNmZjtcbitcdFx0aXZbaV0gPSBzaWduX2V4dGVuZDMyKCh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyLCA5KTtcbitcdFx0cXZbaV0gPSBzaWduX2V4dGVuZDMyKHRlbXAgXHUwMDI2IDB4M2ZmLCA5KTtcbiBcbiBcdFx0aWYgKHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIGl2W2ldKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIHJ0dzg4MjJjX2RhY19pcV9jaGVjayhydHdkZXYsIHF2W2ldKSlcbkBAIC0zMDIsMTMgKzI0OCwxMiBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZShzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LCB1MzIgKml2LCB1MzIgKnF2KVxuIH1cbiBcbiBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuLVx0XHRcdFx0ICAgICAgIHUzMiAqaXYsIHUzMiAqcXYsXG4rXHRcdFx0XHQgICAgICAgczMyICppdiwgczMyICpxdixcbiBcdFx0XHRcdCAgICAgICB1MzIgKmlfdmFsdWUsIHUzMiAqcV92YWx1ZSlcbiB7XG4tXHR1MzIgaV9tYXggPSAwLCBxX21heCA9IDAsIGlfbWluID0gMCwgcV9taW4gPSAwO1xuLVx0dTMyIGlfZGVsdGEsIHFfZGVsdGE7XG4rXHRzMzIgaV9tYXggPSAwLCBxX21heCA9IDAsIGlfbWluID0gMCwgcV9taW4gPSAwO1xuIFx0dTMyIHRlbXA7XG4tXHRpbnQgaSwgY250ID0gMDtcbitcdHUzMiBpLCBjbnQgPSAwO1xuIFxuIFx0ZG8ge1xuIFx0XHRpX21pbiA9IGl2WzBdO1xuQEAgLTMxNiwyMyArMjYxLDE4IEBAIHN0YXRpYyB2b2lkIHJ0dzg4MjJjX2RhY19jYWxfaXFfc2VhcmNoKHN0cnVjdCBydHdfZGV2ICpydHdkZXYsXG4gXHRcdHFfbWluID0gcXZbMF07XG4gXHRcdHFfbWF4ID0gcXZbMF07XG4gXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIERBQ0tfU05fODgyMkM7IGkrKykge1xuLVx0XHRcdHJ0dzg4MjJjX3JmX21pbm1heF9jbXAocnR3ZGV2LCBpdltpXSwgXHUwMDI2aV9taW4sIFx1MDAyNmlfbWF4KTtcbi1cdFx0XHRydHc4ODIyY19yZl9taW5tYXhfY21wKHJ0d2RldiwgcXZbaV0sIFx1MDAyNnFfbWluLCBcdTAwMjZxX21heCk7XG4rXHRcdFx0aWYgKGl2W2ldIFx1MDAzYyBpX21pbilcbitcdFx0XHRcdGlfbWluID0gaXZbaV07XG4rXHRcdFx0aWYgKGl2W2ldIFx1MDAzZSBpX21heClcbitcdFx0XHRcdGlfbWF4ID0gaXZbaV07XG4rXHRcdFx0aWYgKHF2W2ldIFx1MDAzYyBxX21pbilcbitcdFx0XHRcdHFfbWluID0gcXZbaV07XG4rXHRcdFx0aWYgKHF2W2ldIFx1MDAzZSBxX21heClcbitcdFx0XHRcdHFfbWF4ID0gcXZbaV07XG4gXHRcdH1cbiBcbi1cdFx0aWYgKGlfbWF4IFx1MDAzYyAweDIwMCBcdTAwMjZcdTAwMjYgaV9taW4gXHUwMDNjIDB4MjAwKVxuLVx0XHRcdGlfZGVsdGEgPSBpX21heCAtIGlfbWluO1xuLVx0XHRlbHNlIGlmIChpX21heCBcdTAwM2U9IDB4MjAwIFx1MDAyNlx1MDAyNiBpX21pbiBcdTAwM2U9IDB4MjAwKVxuLVx0XHRcdGlfZGVsdGEgPSBpX21heCAtIGlfbWluO1xuLVx0XHRlbHNlXG4tXHRcdFx0aV9kZWx0YSA9IGlfbWF4ICsgKDB4NDAwIC0gaV9taW4pO1xuLVxuLVx0XHRpZiAocV9tYXggXHUwMDNjIDB4MjAwIFx1MDAyNlx1MDAyNiBxX21pbiBcdTAwM2MgMHgyMDApXG4tXHRcdFx0cV9kZWx0YSA9IHFfbWF4IC0gcV9taW47XG4tXHRcdGVsc2UgaWYgKHFfbWF4IFx1MDAzZT0gMHgyMDAgXHUwMDI2XHUwMDI2IHFfbWluIFx1MDAzZT0gMHgyMDApXG4tXHRcdFx0cV9kZWx0YSA9IHFfbWF4IC0gcV9taW47XG4tXHRcdGVsc2Vcbi1cdFx0XHRxX2RlbHRhID0gcV9tYXggKyAoMHg0MDAgLSBxX21pbik7XG4rXHRcdHUzMiBpX2RlbHRhID0gKHUzMikoaV9tYXggLSBpX21pbik7XG4rXHRcdHUzMiBxX2RlbHRhID0gKHUzMikocV9tYXggLSBxX21pbik7XG4gXG4gXHRcdHJ0d19kYmcocnR3ZGV2LCBSVFdfREJHX1JGSyxcbiBcdFx0XHRcIltEQUNLXSBpOiBtaW49MHglMDh4LCBtYXg9MHglMDh4LCBkZWx0YT0weCUwOHhcXG5cIixcbkBAIC0zNDUsMjQgKzI4NSwyNCBAQCBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX2lxX3NlYXJjaChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2LFxuIFxuIFx0XHRpZiAoaV9kZWx0YSBcdTAwM2UgNSB8fCBxX2RlbHRhIFx1MDAzZSA1KSB7XG4gXHRcdFx0dGVtcCA9IHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpO1xuLVx0XHRcdGl2WzBdID0gKHRlbXAgXHUwMDI2IDB4M2ZmMDAwKSBcdTAwM2VcdTAwM2UgMTI7XG4tXHRcdFx0cXZbMF0gPSB0ZW1wIFx1MDAyNiAweDNmZjtcbitcdFx0XHRpdlswXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgXHUwMDI2IDB4M2ZmMDAwKSBcdTAwM2VcdTAwM2UgMTIsIDkpO1xuK1x0XHRcdHF2WzBdID0gc2lnbl9leHRlbmQzMih0ZW1wIFx1MDAyNiAweDNmZiwgOSk7XG4gXHRcdFx0dGVtcCA9IHJ0d19yZWFkMzJfbWFzayhydHdkZXYsIDB4MmRiYywgMHgzZmZmZmYpO1xuLVx0XHRcdGl2W0RBQ0tfU05fODgyMkMgLSAxXSA9ICh0ZW1wIFx1MDAyNiAweDNmZjAwMCkgXHUwMDNlXHUwMDNlIDEyO1xuLVx0XHRcdHF2W0RBQ0tfU05fODgyMkMgLSAxXSA9IHRlbXAgXHUwMDI2IDB4M2ZmO1xuK1x0XHRcdGl2W0RBQ0tfU05fODgyMkMgLSAxXSA9IHNpZ25fZXh0ZW5kMzIoKHRlbXAgXHUwMDI2IDB4M2ZmMDAwKSBcdTAwM2VcdTAwM2UgMTIsIDkpO1xuK1x0XHRcdHF2W0RBQ0tfU05fODgyMkMgLSAxXSA9IHNpZ25fZXh0ZW5kMzIodGVtcCBcdTAwMjYgMHgzZmYsIDkpO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4gXHR9IHdoaWxlIChjbnQrKyBcdTAwM2MgMTAwKTtcbiBcbi1cdHJ0dzg4MjJjX2RhY19pcV9vZmZzZXQocnR3ZGV2LCBpdiwgaV92YWx1ZSk7XG4tXHRydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgcXYsIHFfdmFsdWUpO1xuK1x0KmlfdmFsdWUgPSBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgaXYpO1xuK1x0KnFfdmFsdWUgPSBydHc4ODIyY19kYWNfaXFfb2Zmc2V0KHJ0d2RldiwgcXYpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBydHc4ODIyY19kYWNfY2FsX3JmX21vZGUoc3RydWN0IHJ0d19kZXYgKnJ0d2RldixcbiBcdFx0XHRcdCAgICAgdTMyICppX3ZhbHVlLCB1MzIgKnFfdmFsdWUpXG4ge1xuLVx0dTMyIGl2W0RBQ0tfU05fODgyMkNdLCBxdltEQUNLX1NOXzg4MjJDXTtcbitcdHMzMiBpdltEQUNLX1NOXzg4MjJDXSwgcXZbREFDS19TTl84ODIyQ107XG4gXHR1MzIgcmZfYSwgcmZfYjtcbiBcbiBcdHJmX2EgPSBydHdfcmVhZF9yZihydHdkZXYsIFJGX1BBVEhfQSwgMHgwLCBSRlJFR19NQVNLKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjE2OjU1LjI2MDAyNjI4N1oiLCJTZXEiOjM1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzI2NTEyNzA2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgcnR3ODgyMmMgREFDIENhbGlicmF0aW9uIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCB0b3VjaGVzIHNldmVyYWwgZnVuY3Rpb25zIHdpdGhpbiB0aGUgYHJ0dzg4MjJjLmNgIGZpbGUsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggREFDIElRIGNhbGlicmF0aW9uLiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgaXQncyByZWZhY3RvcmluZyBhbmQgb3B0aW1pemluZyBleGlzdGluZyBjb2RlLCB3aGljaCBpcyBnb29kLiBUaGUga2V5IGNoYW5nZXMgSSdtIHNlZWluZyBhcmUgYXJvdW5kIGBydHc4ODIyY19kYWNfaXFfY21wX3MzMmAsIGBydHc4ODIyY19kYWNfaXFfc29ydGAsIGBydHc4ODIyY19kYWNfaXFfb2Zmc2V0YCwgYHJ0dzg4MjJjX2RhY19pcV9jaGVja2AsIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAsIGFuZCBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zZWFyY2hgLCBhbmQgYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAuIEl0J3MgY29udmVydGluZyB0aGUgYGl2YCBhbmQgYHF2YCBhcnJheXMgdG8gYHMzMmAgaW4gYHJ0dzg4MjJjX2RhY19jYWxfcmZfbW9kZWAsIHdoaWNoIHNlZW1zIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgc2lnbmVkIGludGVnZXIgY2hhbmdlLiBUaGUgcmVwbGFjZW1lbnQgb2YgYSBjdXN0b20gc29ydCB3aXRoIGBzb3J0KClgIGZyb20gYGxpbnV4L3NvcnQuaGAgaXMgYSBzdGFuZGFyZCBvcHRpbWl6YXRpb24gYW5kIGdvb2QgZm9yIGNvZGUgbWFpbnRlbmFuY2UgYW5kIGxpa2VseSBmb3IgcGVyZm9ybWFuY2UuIFNhbWUgd2l0aCB0aGUgYXJpdGhtZXRpYyByZXBsYWNlbWVudCBvZiBjdXN0b20gbWluL21heCBsb2dpYyBhbmQgb2Zmc2V0IGNhbGN1bGF0aW9ucy5cblxuQnV0IHRoZW4gbXkgYXR0ZW50aW9uIGlzIGRyYXduIHRvIGhvdyBgaXZgIGFuZCBgcXZgIGFyZSBwb3B1bGF0ZWQgaW4gYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYCB3aGljaCBpcyB3aGVyZSBJIHNlZSB0aGUgcG90ZW50aWFsIGZvciBpc3N1ZXMuIEkgaW1tZWRpYXRlbHkgc2VlIHRoZSByZWdpc3RlciByZWFkIGBydHdfcmVhZDMyX21hc2tgIGFuZCBhc3NpZ25tZW50IHRvIGBpdltpXWAgYW5kIGBxdltpXWAuIEknbSBjb25jZXJuZWQgYWJvdXQgdW5pbml0aWFsaXplZCBtZW1vcnkgaGVyZS4gTG9va2luZyBjbG9zZXIsIGl0IGxvb2tzIGxpa2UgYGl2YCBhbmQgYHF2YCBhcmUgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBpbiBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYCBhbmQgdGhlbiBwYXNzZWQgdG8gYHJ0dzg4MjJjX2RhY19jYWxfaXFfc2FtcGxlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBoYXBwZW5zIGluc2lkZSBgcnR3ODgyMmNfZGFjX2NhbF9pcV9zYW1wbGVgLiBUaGUgY29kZSBoYXMgYSBsb29wIHRoYXQgcmVhZHMgYSByZWdpc3RlciBhbmQgcG9wdWxhdGVzIGBpdmAgYW5kIGBxdmAgdW50aWwgaXQgcmVhY2hlcyBgREFDS19TTl84ODIyQ2Agb3IgYSBjb3VudGVyIGhpdHMgMTAwMDAuIFRoYXQgbG9va3Mgc3VzcGVjdDsgaWYgdGhlIGxvb3AgdGVybWluYXRlcyBlYXJseSwgdGhlIHJlc3Qgb2YgdGhlIGFycmF5IHdpbGwgYmUgdW5pbml0aWFsaXplZC5cblxuT2theSwgSSBzZWUgaXQncyByZWFkaW5nIHRoZSBoYXJkd2FyZSByZWdpc3Rlci4gSWYgYGNudGAgaGl0cyAxMDAwMCBiZWZvcmUgYGlgIHJlYWNoZXMgYERBQ0tfU05fODgyMkNgLCB0aGUgcmVzdCBvZiBgaXZgIGFuZCBgcXZgICp3aWxsKiBiZSB1bmluaXRpYWxpemVkLiBBbmQgdGhlIG9yaWdpbmFsIGNvZGUgaGFkIHRoZSBzYW1lIHZ1bG5lcmFiaWxpdHkhIFNvIHRoZSBxdWVzdGlvbiBpczogZG9lcyB0aGlzIHBhdGNoIGludHJvZHVjZSB0aGlzIG9yIG1lcmVseSBleHBvc2UgaXQ/XG5cbkxldCdzIHRoaW5rLiBUaGUgcGF0Y2ggKmNoYW5nZXMqIGhvdyBgaXZgIGFuZCBgcXZgIGFyZSBzb3J0ZWQgYW5kIHByb2Nlc3NlZCBhZnRlciB0aGUgc2FtcGxlLiBUaGUgb3JpZ2luYWwgdXNlZCBhIGN1c3RvbSBzb3J0IGBfX3J0dzg4MjJjX2RhY19pcV9zb3J0YC4gVGhpcyBwYXRjaCBub3cgdXNlcyBgc29ydCgpYC4gSWYgYGl2YCBhbmQgYHF2YCBhcmUgcGFydGlhbGx5IHVuaW5pdGlhbGl6ZWQsIHRoZSBgc29ydCgpYCBmdW5jdGlvbiBpcyBnb2luZyB0byByZWFkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBCdXQgc2luY2UgdGhlIG9yaWdpbmFsIGNvZGUgaGFkIHRoZSBzYW1lIGlzc3VlLCBJIGRvbid0IHRoaW5rIHRoaXMgY2hhbmdlIGludHJvZHVjZWQgaXQuXG5cblRoaXMgaXMgYSBoYXJkd2FyZSBjYWxpYnJhdGlvbiByb3V0aW5lOyB0aGUgbWVtb3J5IGlzIG9uIHRoZSBzdGFjay4gSXMgdGhpcyBhIHBvdGVudGlhbCBpbmZvcm1hdGlvbiBsZWFrPyBObywgYmVjYXVzZSB0aGUgcmVzdWx0cyBvZiB0aGUgY2FsaWJyYXRpb24gYXJlbid0IHNlbnQgdG8gdXNlciBzcGFjZSBkaXJlY3RseS4gVGhleSBhcmUgdXNlZCB0byBjb21wdXRlIG90aGVyIHZhbHVlcyB0aGF0IGFyZSB3cml0dGVuIHRvIGhhcmR3YXJlIHJlZ2lzdGVycy4gT2theSwgc28gYSBsZWFrIHNlZW1zIHVubGlrZWx5LiBJcyB0aGVyZSBhIHJpc2sgdGhhdCBpdCBjb3VsZCBjYXVzZSBicmFuY2hpbmcgb24gdW5pbml0aWFsaXplZCBtZW1vcnk/IFllcywgYHNvcnQoKWAgY291bGQgYnJhbmNoIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlmIGBpdmAgYW5kIGBxdmAgYXJlIG9ubHkgcGFydGlhbGx5IGZpbGxlZC4gS01TQU4gY291bGQgYmUgaGVscGZ1bCBoZXJlIGJlY2F1c2UgS01TQU4gZGV0ZWN0cyB1c2VzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBJZiB3ZSBoYXZlIHVuaW5pdGlhbGl6ZWQgZGF0YSBpbiB0aGUgYXJyYXksIEtNU0FOIHdvdWxkIGNvbXBsYWluLlxuXG5UaGlua2luZyB0aGlzIHRocm91Z2gsIGBydHc4ODIyY19kYWNfY2FsX2lxX3NhbXBsZWAgaXMgY2FsbGVkIGluIGBydHc4ODIyY19kYWNfY2FsX3JmX21vZGVgLiBJZiB0aGUgc2FtcGxpbmcgZmFpbHMgdG8gZmlsbCB0aGUgYGl2YCBhbmQgYHF2YCBhcnJheXMsIHRoZW4gYHJ0dzg4MjJjX2RhY19pcV9zb3J0YCBzb3J0cyB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhhdCdzIGEgYnVnLiBJcyB0aGUgcGF0Y2ggaW50cm9kdWNpbmcgdGhpcz8gTm8uIFRoZSBvcmlnaW5hbCBjb2RlIGRpZCB0aGUgc2FtZSB0aGluZyB3aXRoIHRoZSBzYW1lIHBvdGVudGlhbCBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNlLiBUaGUgcGF0Y2ggaXMganVzdCByZWZhY3RvcmluZyB0aGUgc29ydCBhbmQgbWluL21heCBsb2dpYywgYnV0IHRoZSBmdW5kYW1lbnRhbCBpc3N1ZSBpcyB1bmNoYW5nZWQuXG5cbkxldCBtZSBjb25maXJtIHRoYXQ6IElmIHRoZSBjb3VudCByZWFjaGVzIDEwMDAwIGJlZm9yZSB0aGUgYXJyYXkgaXMgZnVsbCwgYGlgIGNvdWxkIGJlIGxlc3MgdGhhbiBgREFDS19TTl84ODIyQ2AuIExldCBtZSBxdWlja2x5IGxvb2sgdXAgdGhlIGRlZmluaXRpb24gb2YgYERBQ0tfU05fODgyMkNgLlxuXG4iLCJJbnB1dFRva2VucyI6NTUzNCwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NzQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxNzoxMi41MjUxNTc2MjhaIiwiU2VxIjozNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NDAzNzcyNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBEQUNLX1NOXzg4MjJDXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcnR3ODgyMmMuaD0xMzM9Y29uc3Qgc3RydWN0IHJ0d190YWJsZSBuYW1lICMjIF90YmwgPSB7XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5oLTE0MS0jZGVmaW5lIERBQ0tfUkZfODgyMkNcXHRcXHQxXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9ydHc4ODIyYy5oOjE0MjojZGVmaW5lIERBQ0tfU05fODgyMkNcXHRcXHQxMDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3J0dzg4MjJjLmgtMTQzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxNzoxNC4xNjU1NDA3MThaIiwiU2VxIjozNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMwNzcyNzA1NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIHJ0dzg4MjJjIElRIENhbGlicmF0aW9uIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoIGlzIGEgcmVmYWN0b3Jpbmcgb2YgdGhlIElRIGNhbGlicmF0aW9uIGxvZ2ljIHdpdGhpbiB0aGUgcnR3ODggd2lyZWxlc3MgZHJpdmVyIGZvciBSZWFsdGVrIGhhcmR3YXJlLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIHN3aXRjaGluZyBmcm9tIHNvbWUgY3VzdG9tLCBwb3RlbnRpYWxseSBsZXNzIGVmZmljaWVudCwgYWxnb3JpdGhtcyB0byB1c2UgZXN0YWJsaXNoZWQga2VybmVsIGZ1bmN0aW9ucyBsaWtlIGBzb3J0KClgIGFuZCBgc2lnbl9leHRlbmQzMmAgYW5kIHNpbXBsaWZ5aW5nIHRoZSBhcml0aG1ldGljIHdpdGggc2lnbmVkIDMyLWJpdCBpbnRlZ2VycyAoYHMzMmApLiBUaGlzIGZlZWxzIGxpa2UgYSBnb29kIG1vdmUgZm9yIGNvZGUgbWFpbnRhaW5hYmlsaXR5IGFuZCByZWFkYWJpbGl0eS5cblxuVGhlIGtleSBhcmVhIG9mIGNvbmNlcm4sIG5hdHVyYWxseSwgaXMgbWVtb3J5IHNhZmV0eSwgc3BlY2lmaWNhbGx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGUgY29kZSB1c2VzIGFycmF5cyBgaXZgIGFuZCBgcXZgIHdoaWNoIGFyZSBwb3B1bGF0ZWQgZnJvbSBoYXJkd2FyZSByZWdpc3RlciByZWFkcyBhbmQgdXNlZCBsb2NhbGx5IHdpdGhpbiBgcnR3ODgyMmNfZGFjX2NhbF9yZl9tb2RlYC4gVGhlIGxvb3AgaGFzIGEgbWF4aW11bSBvZiAxMDAwMCBhdHRlbXB0cyB0byBnZXQgdGhlIHJlcXVpcmVkIG51bWJlciBvZiB2YWxpZCBzYW1wbGVzICgxMDApLiBUaGUgY3VycmVudCBjb2RlLCBhbmQgdGhlIHJlZmFjdG9yZWQgY29kZSwgd2lsbCBwb3RlbnRpYWxseSByZWFkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZyb20gdGhlc2UgYXJyYXlzIGlmIHRoZSBoYXJkd2FyZSBmYWlscyB0byBkZWxpdmVyIGEgZ29vZCBzYW1wbGUgc2V0IHdpdGhpbiAxMCwwMDAgdHJpZXMuICpIb3dldmVyKiwgdGhpcyBpc24ndCBhICpuZXcqIHByb2JsZW0gaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBLTVNBTiB3b3VsZCBjYXRjaCBpdCwgYnV0IHRoaXMgcHJlLWV4aXN0aW5nIHBvdGVudGlhbCBpc3N1ZSAoaWYgaXQgZXZlbiAqaXMqIGFuIGlzc3VlLCBnaXZlbiB0aGUgMTAsMDAwIGF0dGVtcHRzKSBpcyB1bnJlbGF0ZWQgdG8gdGhlIHBhdGNoLlxuXG5JIHNlZSB0aGF0IHRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgY2hhbmdlcyBzb21lIGNhbGN1bGF0aW9ucyBpbnNpZGUgYHJ0dzg4MjJjX2RhY19pcV9vZmZzZXRgLCBidXQgaXQncyBub3cganVzdCBzdW1taW5nIHRoZSBtaWRkbGUgODAgZWxlbWVudHMgb2YgYSB2ZWN0b3IsIGFuZCB0aGVuIGRvaW5nIHNvbWUgc2ltcGxlIGNhbGN1bGF0aW9ucy4gQWdhaW4sIHRoZSBjb3JlIGhlcmUgaXMganVzdCBhbGdvcml0aG1pYyBzaW1wbGlmaWNhdGlvbiwgc28gbm8sIHRoaXMgaXNuJ3QgaW50cm9kdWNpbmcgYSBuZXcgcmlzay4gVGhlIGRhdGEgaXMgKm5vdCogZXhwb3NlZCB0byB1c2Vyc3BhY2UuIEl0IGlzIHB1cmVseSBmb3IgaW50ZXJuYWwgaGFyZHdhcmUgY2FsaWJyYXRpb24uIFRoZXJlZm9yZSwgdGhlcmUncyBubyB3YXkgdG8gbGVhayB1bmluaXRpYWxpemVkIGRhdGEuIElmIHRoZXJlICppcyogdW5pbml0aWFsaXplZCBkYXRhLCBpdCB3b3VsZCBvbmx5IGJlIGluIHRoZSBzdGFjaywgYW5kIHRoZSB1c3VhbCBtZW1vcnkgc2FmZXR5IGNoZWNrcyBsaWtlIEtBU0FOIGFuZCBvdGhlciBzdGF0aWMgYW5hbHlzaXMgdG9vbHMgYXJlIGdvb2QgZW5vdWdoLlxuXG5UaGUgY29kZSBjaGFuZ2VzIGluY2x1ZGUgdXNpbmcgYHNvcnQoKWAgd2hpY2ggaXMgZmluZSwgYW5kIGBzaWduX2V4dGVuZDMyYCB3aGljaCBpcyBhbHNvIGZpbmUuIFRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyBuZXcgc3RydWN0dXJlcyB0aGF0IGFyZSBzZW50IHRvIHVzZXJzcGFjZS4gVGhpcyBzZWVtcyBlbnRpcmVseSBzYWZlLiBTbywgSSdtIGNvbmZpZGVudCBpbiBzYXlpbmcgdGhhdCB0aGUgcGF0Y2ggZG9lcyAqbm90KiBpbnRyb2R1Y2UgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcywgYW5kIEtNU0FOIGlzbid0IHNwZWNpZmljYWxseSBuZWVkZWQgaGVyZS4gSW4gb3RoZXIgd29yZHMsIEknZCBzYXkgYE5lZWRzS01TQU4gPSBmYWxzZWAuIEl0J3MgYSBjbGVhbiByZWZhY3RvcmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQzMSwiT3V0cHV0VG9rZW5zIjoyMzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjE3OjI3LjI0MjgxNTE0OFoiLCJTZXEiOjM4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBJUSBjYWxpYnJhdGlvbiBsb2dpYyBpbiB0aGUgUmVhbHRlayBydHc4OCB3aXJlbGVzcyBkcml2ZXIuIEl0IHJlcGxhY2VzIGN1c3RvbSBzb3J0aW5nIGFuZCBtaW4vbWF4IGNhbGN1bGF0aW9ucyB3aXRoIHN0YW5kYXJkIGtlcm5lbCBmdW5jdGlvbnMgKGBzb3J0KClgKSBhbmQgc2ltcGxpZmllcyB0aGUgYXJpdGhtZXRpYyBieSB1c2luZyBzaWduZWQgMzItYml0IGludGVnZXJzIChgczMyYCkgaW5zdGVhZCBvZiB1bnNpZ25lZCBpbnRlZ2VycyB3aXRoIG1hbnVhbCBzaWduIGhhbmRsaW5nLiBUaGUgYXJyYXlzIGBpdmAgYW5kIGBxdmAgYXJlIGFsbG9jYXRlZCBvbiB0aGUgc3RhY2sgYW5kIHBvcHVsYXRlZCBieSByZWFkaW5nIGhhcmR3YXJlIHJlZ2lzdGVycy4gV2hpbGUgdGhlcmUgaXMgYSB0aGVvcmV0aWNhbCBwcmUtZXhpc3RpbmcgZWRnZSBjYXNlIHdoZXJlIHRoZSBhcnJheXMgbWlnaHQgbm90IGJlIGZ1bGx5IHBvcHVsYXRlZCBpZiB0aGUgaGFyZHdhcmUgZmFpbHMgdG8gcHJvdmlkZSBlbm91Z2ggdmFsaWQgc2FtcGxlcyB3aXRoaW4gMTAsMDAwIGl0ZXJhdGlvbnMsIHRoaXMgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4YWNlcmJhdGUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBUaGUgZGF0YSBpcyB1c2VkIHN0cmljdGx5IGZvciBpbnRlcm5hbCBoYXJkd2FyZSBjYWxpYnJhdGlvbiBhbmQgaXMgbm90IGNvcGllZCB0byB1c2Vyc3BhY2UsIG1lYW5pbmcgdGhlcmUgaXMgbm8gcmlzayBvZiBhbiBpbmZvLWxlYWsuIEFueSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBtZW1vcnkgY29ycnVwdGlvbiB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIEEgZGVkaWNhdGVkIEtNU0FOIHJ1biBpcyBub3QganVzdGlmaWVkIGFzIG5vIG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWsgdnVsbmVyYWJpbGl0aWVzIGFyZSBpbnRyb2R1Y2VkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgSVEgY2FsaWJyYXRpb24gbG9naWMgaW4gdGhlIFJlYWx0ZWsgcnR3ODggd2lyZWxlc3MgZHJpdmVyLiBJdCByZXBsYWNlcyBjdXN0b20gc29ydGluZyBhbmQgbWluL21heCBjYWxjdWxhdGlvbnMgd2l0aCBzdGFuZGFyZCBrZXJuZWwgZnVuY3Rpb25zIChgc29ydCgpYCkgYW5kIHNpbXBsaWZpZXMgdGhlIGFyaXRobWV0aWMgYnkgdXNpbmcgc2lnbmVkIDMyLWJpdCBpbnRlZ2VycyAoYHMzMmApIGluc3RlYWQgb2YgdW5zaWduZWQgaW50ZWdlcnMgd2l0aCBtYW51YWwgc2lnbiBoYW5kbGluZy4gVGhlIGFycmF5cyBgaXZgIGFuZCBgcXZgIGFyZSBhbGxvY2F0ZWQgb24gdGhlIHN0YWNrIGFuZCBwb3B1bGF0ZWQgYnkgcmVhZGluZyBoYXJkd2FyZSByZWdpc3RlcnMuIFdoaWxlIHRoZXJlIGlzIGEgdGhlb3JldGljYWwgcHJlLWV4aXN0aW5nIGVkZ2UgY2FzZSB3aGVyZSB0aGUgYXJyYXlzIG1pZ2h0IG5vdCBiZSBmdWxseSBwb3B1bGF0ZWQgaWYgdGhlIGhhcmR3YXJlIGZhaWxzIHRvIHByb3ZpZGUgZW5vdWdoIHZhbGlkIHNhbXBsZXMgd2l0aGluIDEwLDAwMCBpdGVyYXRpb25zLCB0aGlzIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleGFjZXJiYXRlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gVGhlIGRhdGEgaXMgdXNlZCBzdHJpY3RseSBmb3IgaW50ZXJuYWwgaGFyZHdhcmUgY2FsaWJyYXRpb24gYW5kIGlzIG5vdCBjb3BpZWQgdG8gdXNlcnNwYWNlLCBtZWFuaW5nIHRoZXJlIGlzIG5vIHJpc2sgb2YgYW4gaW5mby1sZWFrLiBBbnkgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgbWVtb3J5IGNvcnJ1cHRpb24gd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOLiBBIGRlZGljYXRlZCBLTVNBTiBydW4gaXMgbm90IGp1c3RpZmllZCBhcyBubyBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrIHZ1bG5lcmFiaWxpdGllcyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqbq5b[1] Phase: Succeeded StartedAt: 2026-08-13 06:17:55 +0000 UTC FinishedAt: 2026-08-13 06:17:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbq5b[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-13 06:17:55 +0000 UTC FinishedAt: 2026-08-13 06:17:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbq5b[2] Phase: Succeeded StartedAt: 2026-08-13 06:17:55 +0000 UTC FinishedAt: 2026-08-13 07:01:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-13 06:17:55 +0000 UTC FinishedAt: 2026-08-13 07:01:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-13 06:17:55 +0000 UTC FinishedAt: 2026-08-13 06:18:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-13 06:17:55 +0000 UTC FinishedAt: 2026-08-13 06:18:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowqbq5b/series-workflowqbq5b-convert-artifact-4141257643/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-13 06:18:05 +0000 UTC FinishedAt: 2026-08-13 06:34:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-13 06:18:05 +0000 UTC FinishedAt: 2026-08-13 06:34:24 +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:*926b2a2b-2ad6-426d-8900-a56781efad19,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-workflowqbq5b/series-workflowqbq5b-convert-artifact-4141257643/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": "605085f4-4690-4083-a192-af1ff6a828bc", "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-workflowqbq5b/series-workflowqbq5b-build-action-925508777/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-13 06:18:05 +0000 UTC FinishedAt: 2026-08-13 06:34:14 +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:*926b2a2b-2ad6-426d-8900-a56781efad19,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-workflowqbq5b/series-workflowqbq5b-convert-artifact-4141257643/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": "605085f4-4690-4083-a192-af1ff6a828bc", "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-workflowqbq5b/series-workflowqbq5b-build-action-925508777/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-13 06:34:24 +0000 UTC FinishedAt: 2026-08-13 06:34:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-13 06:34:24 +0000 UTC FinishedAt: 2026-08-13 06:34:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-13 06:34:24 +0000 UTC FinishedAt: 2026-08-13 06:34:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-13 06:34:24 +0000 UTC FinishedAt: 2026-08-13 06:34:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowqbq5b/series-workflowqbq5b-convert-artifact-4021145218/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-13 06:34:34 +0000 UTC FinishedAt: 2026-08-13 06:36:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-13 06:34:34 +0000 UTC FinishedAt: 2026-08-13 06:36:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*605085f4-4690-4083-a192-af1ff6a828bc,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-workflowqbq5b/series-workflowqbq5b-build-action-925508777/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-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-13 06:36:39 +0000 UTC FinishedAt: 2026-08-13 06:36:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-13 06:36:39 +0000 UTC FinishedAt: 2026-08-13 06:36:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-13 06:36:39 +0000 UTC FinishedAt: 2026-08-13 06:57:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-13 06:36:39 +0000 UTC FinishedAt: 2026-08-13 06:57:39 +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:*926b2a2b-2ad6-426d-8900-a56781efad19,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-workflowqbq5b/series-workflowqbq5b-convert-artifact-4021145218/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": "ed645b87-be29-40cb-868a-6a0b2876f1f2", "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-workflowqbq5b/series-workflowqbq5b-build-action-887208150/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-13 06:36:39 +0000 UTC FinishedAt: 2026-08-13 06:57:29 +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:*926b2a2b-2ad6-426d-8900-a56781efad19,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-workflowqbq5b/series-workflowqbq5b-convert-artifact-4021145218/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": "ed645b87-be29-40cb-868a-6a0b2876f1f2", "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-workflowqbq5b/series-workflowqbq5b-build-action-887208150/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-13 06:57:39 +0000 UTC FinishedAt: 2026-08-13 06:57:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-13 06:57:39 +0000 UTC FinishedAt: 2026-08-13 06:57:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-13 06:57:39 +0000 UTC FinishedAt: 2026-08-13 06:59:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-13 06:57:39 +0000 UTC FinishedAt: 2026-08-13 06:59:41 +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:*ed645b87-be29-40cb-868a-6a0b2876f1f2,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-workflowqbq5b/series-workflowqbq5b-build-action-887208150/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-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-13 06:59:51 +0000 UTC FinishedAt: 2026-08-13 07:01:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-13 06:59:51 +0000 UTC FinishedAt: 2026-08-13 07:01:13 +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":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"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:*605085f4-4690-4083-a192-af1ff6a828bc,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ed645b87-be29-40cb-868a-6a0b2876f1f2,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-workflowqbq5b/series-workflowqbq5b-build-action-925508777/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-workflowqbq5b/series-workflowqbq5b-build-action-887208150/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-13 06:59:51 +0000 UTC FinishedAt: 2026-08-13 07:00:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-13 06:59:51 +0000 UTC FinishedAt: 2026-08-13 06:59:57 +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":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"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-workflowqbq5b/series-workflowqbq5b-convert-artifact-545589175/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-13 06:59:51 +0000 UTC FinishedAt: 2026-08-13 06:59:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-13 06:59:51 +0000 UTC FinishedAt: 2026-08-13 06:59:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-13 06:59:51 +0000 UTC FinishedAt: 2026-08-13 06:59:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-13 07:00:01 +0000 UTC FinishedAt: 2026-08-13 07:01:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbq5b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw8822c_phy_set_param","rtw8822c_rf_dac_cal","rtw8822c_dac_cal_rf_mode"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e51dca02911f7857201a01fd884a7666500adefc","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW88","RTW88_8822CU","USB","MAC80211"],"series_id":"ce2a7b3a-b465-47ec-801a-f1b3f96b97cd","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-13 07:00:01 +0000 UTC FinishedAt: 2026-08-13 07:01:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*605085f4-4690-4083-a192-af1ff6a828bc,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ed645b87-be29-40cb-868a-6a0b2876f1f2,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-workflowqbq5b/series-workflowqbq5b-build-action-925508777/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-workflowqbq5b/series-workflowqbq5b-build-action-887208150/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-workflowqbq5b/series-workflowqbq5b-convert-artifact-545589175/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,}