Name: series-workflowwq7g7 Phase: Succeeded StartedAt: 2026-08-30 14:47:48 +0000 UTC FinishedAt: 2026-08-30 16:27:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwq7g7[0] Phase: Succeeded StartedAt: 2026-08-30 14:47:48 +0000 UTC FinishedAt: 2026-08-30 15:47:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwq7g7[0].run-triage Phase: Succeeded StartedAt: 2026-08-30 14:47:48 +0000 UTC FinishedAt: 2026-08-30 15:47:42 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "76671054f9a1ff6abb976583cd8da37650acdc97", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "CFG80211", "RTW89", "RTW89_CORE", "RTW89_USB", "RTW89_8852AU", "RTW89_PCI", "RTW89_8852AE", "PM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "76671054f9a1ff6abb976583cd8da37650acdc97", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "CFG80211", "RTW89", "RTW89_CORE", "RTW89_USB", "RTW89_8852AU", "RTW89_PCI", "RTW89_8852AE", "PM" ], "series_id": "fcbd670d-9a29-4628-ad61-6903e6c1cac9" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__rtw89_wow_parse_akm", "rtw89_core_rx", "rtw89_core_tx_write" ], "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+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NDFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtSVFc4OSYjMzQ7LAogICAgJiMzNDtSVFc4OV9DT1JFJiMzNDssCiAgICAmIzM0O1JUVzg5X1VTQiYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQVUmIzM0OywKICAgICYjMzQ7UlRXODlfUENJJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJBRSYjMzQ7LAogICAgJiMzNDtQTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fcnR3ODlfd293X3BhcnNlX2FrbSYjMzQ7LAogICAgJiMzNDtydHc4OV9jb3JlX3J4JiMzNDssCiAgICAmIzM0O3J0dzg5X2NvcmVfdHhfd3JpdGUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIChPT0IpIHJlYWQgdnVsbmVyYWJpbGl0eSBpbiB0aGUgcnR3ODkgZHJpdmVyIChib3RoIGluIHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHggYW5kIF9fcnR3ODlfd293X3BhcnNlX2FrbSkuIFByZXZpb3VzbHksIHRoZSBmdWxsIHBhY2tldCBsZW5ndGggKHNrYi1cdTAwM2VsZW4pIHdhcyBwYXNzZWQgdG8gY2ZnODAyMTFfZmluZF9pZSBpbnN0ZWFkIG9mIHRoZSBsZW5ndGggb2YgdGhlIGluZm9ybWF0aW9uIGVsZW1lbnRzIChza2ItXHUwMDNlbGVuIC0gaGRyX2xlbiksIGFuZCB0aGVyZSB3YXMgbm8gY2hlY2sgdmVyaWZ5aW5nIHRoYXQgc2tiLVx1MDAzZWxlbiBcdTAwM2U9IGhkcl9sZW4uIFRoaXMgY291bGQgbGVhZCB0byByZWFkaW5nIHVwIHRvIGhkcl9sZW4gYnl0ZXMgcGFzdCB0aGUgZW5kIG9mIHRoZSBza2IgZGF0YSBidWZmZXIuXG5cbk91dC1vZi1ib3VuZHMgYnVmZmVyIHJlYWRzIGFyZSBzdGFuZGFyZCBtZW1vcnkgc2FmZXR5IGJ1Z3MgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgcmVhZCB1bmluaXRpYWxpemVkIG1lbW9yeSAoc3RhY2ssIGhlYXAsIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIG9yIGxlYWsga2VybmVsIG1lbW9yeSB0byB1c2Vyc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdGllcyBpbiBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KCkgYW5kIF9fcnR3ODlfd293X3BhcnNlX2FrbSgpIGJ5IHZhbGlkYXRpbmcgdGhhdCBza2ItXHUwMDNlbGVuIGlzIGF0IGxlYXN0IHRoZSBoZWFkZXIgbGVuZ3RoIGFuZCBwYXNzaW5nIHRoZSBhZGp1c3RlZCBpbmZvcm1hdGlvbiBlbGVtZW50IGxlbmd0aCAoc2tiLVx1MDAzZWxlbiAtIGhkcl9sZW4pIHRvIGNmZzgwMjExX2ZpbmRfaWUoKSBpbnN0ZWFkIG9mIHRoZSB1bmFkanVzdGVkIHNrYi1cdTAwM2VsZW4uIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIFJYIGFuZCBUWCBwYWNrZXQgcHJvY2Vzc2luZyBvbiBydHc4OSBkZXZpY2VzICh3aGljaCBpbmNsdWRlIFVTQi1zdXBwb3J0ZWQgZGV2aWNlcyB0ZXN0YWJsZSB2aWEgVVNCIGVtdWxhdGlvbiBpbiB2aXJ0dWFsIGVudmlyb25tZW50cykuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6MDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjOWFiZDg0NDA5YWIyZDI0Mjk5OGVhOWM0NGFkMDk0NTllOWVkZDVmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMzAgMTU6MDU6MzMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuY1xuaW5kZXggNjhkYWQ2MDkwZjg3ZS4uN2I0NjcxNWVhMTJkYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuY1xuQEAgLTI1MzIsOSAmIzQzOzI1MzIsMTEgQEAgc3RhdGljIHZvaWQgcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2IpO1xuIFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNrYi1cdTAwM2VkYXRhO1xuJiM0MztcdHNpemVfdCBoZHJfbGVuID0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LCB1LmJlYWNvbi52YXJpYWJsZSk7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkICpwa3RfbGlzdCA9IHJ0d2Rldi1cdTAwM2VzY2FuX2luZm8ucGt0X2xpc3Q7XG4gXHRzdHJ1Y3QgcnR3ODlfcGt0b2ZsZF9pbmZvICppbmZvO1xuIFx0Y29uc3QgdTggKmllcyA9IG1nbXQtXHUwMDNldS5iZWFjb24udmFyaWFibGUsICpzc2lkX2llO1xuJiM0MztcdHNpemVfdCBpZV9sZW47XG4gXHRib29sIHF1ZXVlX3dvcmsgPSBmYWxzZTtcbiBcbiBcdGlmIChyeF9zdGF0dXMtXHUwMDNlYmFuZCAhPSBOTDgwMjExX0JBTkRfNkdIWilcbkBAIC0yNTQ1LDcgJiM0MzsyNTQ3LDEyIEBAIHN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4tXHRzc2lkX2llID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9TU0lELCBpZXMsIHNrYi1cdTAwM2VsZW4pO1xuJiM0MztcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBoZHJfbGVuKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRpZV9sZW4gPSBza2ItXHUwMDNlbGVuIC0gaGRyX2xlbjtcbiYjNDM7XG4mIzQzO1x0c3NpZF9pZSA9IGNmZzgwMjExX2ZpbmRfaWUoV0xBTl9FSURfU1NJRCwgaWVzLCBpZV9sZW4pO1xuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpbmZvLCBcdTAwMjZwa3RfbGlzdFtOTDgwMjExX0JBTkRfNkdIWl0sIGxpc3QpIHtcbiBcdFx0aWYgKGV0aGVyX2FkZHJfZXF1YWwoaW5mby1cdTAwM2Vic3NpZCwgbWdtdC1cdTAwM2Vic3NpZCkpIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xuaW5kZXggOGRhZGQ4ZGY0ZmM2NS4uODJiNzRkZWQ2ODYzMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmNcbkBAIC0xNiwxMCAmIzQzOzE2LDE2IEBAIHZvaWQgX19ydHc4OV93b3dfcGFyc2VfYWttKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2tiLVx1MDAzZWRhdGE7XG4gXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbiYjNDM7XHRzaXplX3QgaGRyX2xlbiA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5hc3NvY19yZXEudmFyaWFibGUpO1xuIFx0Y29uc3QgdTggKnJzbiwgKmllcyA9IG1nbXQtXHUwMDNldS5hc3NvY19yZXEudmFyaWFibGU7XG4gXHRzdHJ1Y3QgcnR3ODlfcnNuX2llICpyc25faWU7XG4gXG4tXHRyc24gPSBjZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX1JTTiwgaWVzLCBza2ItXHUwMDNlbGVuKTtcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgaGRyX2xlbilcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0cnNuID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9SU04sIGllcyxcbiYjNDM7XHRcdFx0ICAgICAgIHNrYi1cdTAwM2VsZW4gLSBoZHJfbGVuKTtcbiYjNDM7XG4gXHRpZiAoIXJzbilcbiBcdFx0cmV0dXJuO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjA1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjM3bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtSVFc4OSYjMzQ7LAogICAgJiMzNDtSVFc4OV9DT1JFJiMzNDssCiAgICAmIzM0O1JUVzg5X1VTQiYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQVUmIzM0OywKICAgICYjMzQ7UlRXODlfUENJJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJBRSYjMzQ7LAogICAgJiMzNDtQTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fcnR3ODlfd293X3BhcnNlX2FrbSYjMzQ7LAogICAgJiMzNDtydHc4OV9jb3JlX3J4JiMzNDssCiAgICAmIzM0O3J0dzg5X2NvcmVfdHhfd3JpdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdGllcyBpbiBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KCkgYW5kIF9fcnR3ODlfd293X3BhcnNlX2FrbSgpIGJ5IHZhbGlkYXRpbmcgdGhhdCBza2ItXHUwMDNlbGVuIGlzIGF0IGxlYXN0IHRoZSBoZWFkZXIgbGVuZ3RoIGFuZCBwYXNzaW5nIHRoZSBhZGp1c3RlZCBpbmZvcm1hdGlvbiBlbGVtZW50IGxlbmd0aCAoc2tiLVx1MDAzZWxlbiAtIGhkcl9sZW4pIHRvIGNmZzgwMjExX2ZpbmRfaWUoKSBpbnN0ZWFkIG9mIHRoZSB1bmFkanVzdGVkIHNrYi1cdTAwM2VsZW4uIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIFJYIGFuZCBUWCBwYWNrZXQgcHJvY2Vzc2luZyBvbiBydHc4OSBkZXZpY2VzICh3aGljaCBpbmNsdWRlIFVTQi1zdXBwb3J0ZWQgZGV2aWNlcyB0ZXN0YWJsZSB2aWEgVVNCIGVtdWxhdGlvbiBpbiB2aXJ0dWFsIGVudmlyb25tZW50cykuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjOWFiZDg0NDA5YWIyZDI0Mjk5OGVhOWM0NGFkMDk0NTllOWVkZDVmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMzAgMTU6MDU6MzMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jCmluZGV4IDY4ZGFkNjA5MGY4N2UuLjdiNDY3MTVlYTEyZGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jCkBAIC0yNTMyLDkgJiM0MzsyNTMyLDExIEBAIHN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogewogCXN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMgPSBJRUVFODAyMTFfU0tCX1JYQ0Ioc2tiKTsKIAlzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2tiLSZndDtkYXRhOwomIzQzOwlzaXplX3QgaGRyX2xlbiA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5iZWFjb24udmFyaWFibGUpOwogCXN0cnVjdCBsaXN0X2hlYWQgKnBrdF9saXN0ID0gcnR3ZGV2LSZndDtzY2FuX2luZm8ucGt0X2xpc3Q7CiAJc3RydWN0IHJ0dzg5X3BrdG9mbGRfaW5mbyAqaW5mbzsKIAljb25zdCB1OCAqaWVzID0gbWdtdC0mZ3Q7dS5iZWFjb24udmFyaWFibGUsICpzc2lkX2llOwomIzQzOwlzaXplX3QgaWVfbGVuOwogCWJvb2wgcXVldWVfd29yayA9IGZhbHNlOwogCiAJaWYgKHJ4X3N0YXR1cy0mZ3Q7YmFuZCAhPSBOTDgwMjExX0JBTkRfNkdIWikKQEAgLTI1NDUsNyAmIzQzOzI1NDcsMTIgQEAgc3RhdGljIHZvaWQgcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsCiAJCXJldHVybjsKIAl9CiAKLQlzc2lkX2llID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9TU0lELCBpZXMsIHNrYi0mZ3Q7bGVuKTsKJiM0MzsJaWYgKHNrYi0mZ3Q7bGVuICZsdDsgaGRyX2xlbikKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJaWVfbGVuID0gc2tiLSZndDtsZW4gLSBoZHJfbGVuOwomIzQzOwomIzQzOwlzc2lkX2llID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9TU0lELCBpZXMsIGllX2xlbik7CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGluZm8sICZhbXA7cGt0X2xpc3RbTkw4MDIxMV9CQU5EXzZHSFpdLCBsaXN0KSB7CiAJCWlmIChldGhlcl9hZGRyX2VxdWFsKGluZm8tJmd0O2Jzc2lkLCBtZ210LSZndDtic3NpZCkpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jCmluZGV4IDhkYWRkOGRmNGZjNjUuLjgyYjc0ZGVkNjg2MzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYwpAQCAtMTYsMTAgJiM0MzsxNiwxNiBAQCB2b2lkIF9fcnR3ODlfd293X3BhcnNlX2FrbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNrYi0mZ3Q7ZGF0YTsKIAlzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gJmFtcDtydHdkZXYtJmd0O3dvdzsKJiM0MzsJc2l6ZV90IGhkcl9sZW4gPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUuYXNzb2NfcmVxLnZhcmlhYmxlKTsKIAljb25zdCB1OCAqcnNuLCAqaWVzID0gbWdtdC0mZ3Q7dS5hc3NvY19yZXEudmFyaWFibGU7CiAJc3RydWN0IHJ0dzg5X3Jzbl9pZSAqcnNuX2llOwogCi0JcnNuID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9SU04sIGllcywgc2tiLSZndDtsZW4pOwomIzQzOwlpZiAoc2tiLSZndDtsZW4gJmx0OyBoZHJfbGVuKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlyc24gPSBjZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX1JTTiwgaWVzLAomIzQzOwkJCSAgICAgICBza2ItJmd0O2xlbiAtIGhkcl9sZW4pOwomIzQzOwogCWlmICghcnNuKQogCQlyZXR1cm47CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg4MQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWx0ZWsgUlRXODkgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgYW5kIGltcGFjdC4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIG1vZGlmaWNhdGlvbnMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9gIGRpcmVjdG9yeSwgc3BlY2lmaWNhbGx5IGBjb3JlLmNgIGFuZCBgd293LmNgLiBSaWdodCBhd2F5LCBJJiMzOTttIHRoaW5raW5nLCAmIzM0O0lzIHRoaXMgZHJpdmVyIGZvciB0aGUgUmVhbHRlayA4MDIuMTFheCBkZXZpY2VzPyYjMzQ7IFRoYXQmIzM5O3MgdGhlIGZpcnN0IHF1ZXN0aW9uLiBJIG5lZWQgdG8gY29uZmlybSB0aGUgdGFyZ2V0ZWQgaGFyZHdhcmUuCgpOZXh0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJhbCBpbXBsaWNhdGlvbnMuIFdoYXQgaW50ZXJmYWNlcyBkb2VzIHRoaXMgZHJpdmVyIHN1cHBvcnQ/IFBDSWU/IFVTQj8gU0RJTz8gVGhpcyB3aWxsIGdyZWF0bHkgYWZmZWN0IGhvdyB3ZSB0ZXN0IGl0LiBDYW4gSSB0ZXN0IHRoaXMgdmlydHVhbGx5LCBtYXliZSB3aXRoIFFFTVUgb3Igc3l6a2FsbGVyPyBPciBkbyBJIG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUgdG8gZ2V0IGEgbWVhbmluZ2Z1bCB0ZXN0PwoKSG9sZCBvbiwgYmVmb3JlIEkgZ2V0IHRvbyBmYXIsIGxldCBtZSBjaGVjayB0aGUgYEtjb25maWdgIGZvciBSVFc4OS4gVGhhdCBzaG91bGQgcXVpY2tseSB0ZWxsIG1lIHdoYXQgYnVzIHR5cGVzIGFyZSBzdXBwb3J0ZWQgYW5kIGhvdyB0aGUgZHJpdmVyIGlzIGNvbmZpZ3VyZWQuIFRoYXQmIzM5O2xsIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbnN0cmFpbnRzIG9mIHRoZSBjaGFuZ2VzLiBUaW1lIHRvIGZpcmUgdXAgZ3JlcHBlciBvciBqdXN0IHJlYWQgdGhvc2UgZmlsZXMgZGlyZWN0bHkuIEdvdHRhIGdldCB0aGUgYmlnIHBpY3R1cmUgZmlyc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJUVzg5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjI6bWVudWNvbmZpZyBSVFc4OVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDgwMi4xMWF4IHdpcmVsZXNzIGNoaXBzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc9MTE9aWYgUlRXODlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMzpjb25maWcgUlRXODlfQ09SRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTc6Y29uZmlnIFJUVzg5X1BDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE4LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMDpjb25maWcgUlRXODlfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjEtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIzOmNvbmZpZyBSVFc4OV84ODUxQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI0LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyNjpjb25maWcgUlRXODlfODg1MkFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNy1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6Mjk6Y29uZmlnIFJUVzg5Xzg4NTJCX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMwLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzozMjpjb25maWcgUlRXODlfODg1MkJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zMy1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MzU6Y29uZmlnIFJUVzg5Xzg4NTJCVFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTM2LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzozODpjb25maWcgUlRXODlfODg1MkNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zOS1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NDE6Y29uZmlnIFJUVzg5Xzg5MjJBXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDItXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjQ0OmNvbmZpZyBSVFc4OV84ODUxQkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00NS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MUJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjU1OmNvbmZpZyBSVFc4OV84ODUxQlVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy01Ni1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MUJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjY2OmNvbmZpZyBSVFc4OV84ODUyQUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy02Ny1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkFFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjc3OmNvbmZpZyBSVFc4OV84ODUyQVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy03OC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjg4OmNvbmZpZyBSVFc4OV84ODUyQkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04OS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEwMDpjb25maWcgUlRXODlfODg1MkJVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTAxLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjExMjpjb25maWcgUlRXODlfODg1MkJURVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTExMy1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkJFLVZUIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMjQ6Y29uZmlnIFJUVzg5Xzg4NTJDRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyNS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkNFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2RSkgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTM1OmNvbmZpZyBSVFc4OV84ODUyQ1VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMzYtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJDVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNkUpIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE0Njpjb25maWcgUlRXODlfODkyMkFFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTQ3LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4OTIyQUUvODkyMkFFLVZTIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA3KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNjA6Y29uZmlnIFJUVzg5Xzg5MjJBVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2MS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODkyMkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA3KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNzI6Y29uZmlnIFJUVzg5X0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTczLVx0Ym9vbFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNzU6Y29uZmlnIFJUVzg5X0RFQlVHTVNHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTc2LVx0Ym9vbCBcJiMzNDtSZWFsdGVrIHJ0dzg5IGRlYnVnIG1lc3NhZ2Ugc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTg0OmNvbmZpZyBSVFc4OV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTg1LVx0Ym9vbCBcJiMzNDtSZWFsdGVrIHJ0dzg5IGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2NjcKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAyMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUlRXODkgVVNCIEFkYXB0ZXIgSW52ZXN0aWdhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHJlbWluZCBteXNlbGYgb2YgdGhlIFJUVzg5IFVTQiBhZGFwdGVyIHZhcmlhbnRzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGg6IGBSVFc4OV84ODUxQlVgLCBgUlRXODlfODg1MkFVYCwgYFJUVzg5Xzg4NTJCVWAsIGBSVFc4OV84ODUyQ1VgLCBhbmQgYFJUVzg5Xzg5MjJBVWAuIE5vdywgdGhlIGludGVyZXN0aW5nIHBhcnQ6IGNhbiB3ZSBlZmZlY3RpdmVseSBwcm9iZSBhbmQgZnV6eiB0aGVzZSBVU0ItY29ubmVjdGVkIGFkYXB0ZXJzIHZpYSBVU0IgZW11bGF0aW9uIHRlY2huaXF1ZXM/IEkmIzM5O20gdGhpbmtpbmcgb2YgVVNCIFJhdywgVVNCIGdhZGdldCwgYW5kIHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMg4oCTIHNwZWNpZmljYWxseSwgdGhlIGBzeXpfdXNiX2Nvbm5lY3RgIGNhbGwgY29tZXMgdG8gbWluZC4gCgpUaGUgY29yZSBxdWVzdGlvbiBoZXJlIGlzIHdoZXRoZXIgd2UgY2FuIGxldmVyYWdlIHRoZXNlIGVtdWxhdGlvbiBtZXRob2RzIChzeXprYWxsZXImIzM5O3MgcmF3IFVTQiBkcml2ZXIsIHZ1c2IsIGR1bW15X2hjZCkgdG8gaW50ZXJhY3Qgd2l0aCBhbmQgcG90ZW50aWFsbHkgZXhwbG9pdCB2dWxuZXJhYmlsaXRpZXMgaW4gdGhlc2Ugd2lyZWxlc3MgYWRhcHRlcnMuCgpCdXQgYmVmb3JlIGRpdmluZyB0b28gZGVlcCBpbnRvIHRoYXQsIGxldCYjMzk7cyBwaXZvdCBzbGlnaHRseS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBmdW5jdGlvbnMgYHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHhgIGFuZCBgX19ydHc4OV93b3dfcGFyc2VfYWttYCBhcmUgYmVpbmcgKnVzZWQqLiBTbywgSSBuZWVkIHRvIGZpbmQgdGhlIGNhbGwgc2l0ZXMgZm9yIHRob3NlLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHNlYXJjaCBmb3Igd2hlcmUgdGhvc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQuIFRoaXMgaW5mb3JtYXRpb24gc2hvdWxkIHByb3ZpZGUgY29udGV4dCBmb3Igb3VyIGVtdWxhdGlvbiBlZmZvcnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTI1MDU9c3RhdGljIHZvaWQgcnR3ODlfY2FuY2VsXzZnaHpfcHJvYmVfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0yNTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MjUzMDpzdGF0aWMgdm9pZCBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTI1MzEtXHRcdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTMwMzg9c3RhdGljIHZvaWQgcnR3ODlfdmlmX3J4X3N0YXRzX2l0ZXIodm9pZCAqZGF0YSwgdTggKm1hYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zMDU5LVx0ICAgICBpZWVlODAyMTFfaXNfcHJvYmVfcmVzcChoZHItXHUwMDNlZnJhbWVfY29udHJvbCkpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MzA2MDpcdFx0cnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eChydHdkZXYsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zMDYxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MDEKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgZmFtaWxpYXIgd2l0aCB0aGlzIHRlY2huaWNhbCBjb250ZXh0OgoKKipJbnZlc3RpZ2F0aW5nIFdha2Utb24tV2lyZWxlc3MgRnVuY3Rpb25hbGl0eSoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzICYjMzQ7d2FrZS1vbi13aXJlbGVzcyYjMzQ7IHRoaW5nLCBhbmQgSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhlIHJlbGV2YW50IGRyaXZlcnMgYW5kIGZ1bmN0aW9uYWxpdHksIGFuZCBJIHRoaW5rIGl0JiMzOTtzIHRpbWUgdG8gcmVmaW5lIG15IHNlYXJjaC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBsb29raW5nIGZvciBjb2RlIHRoYXQgaW52b2x2ZXMgdGhpcyBgX19ydHc4OV93b3dfcGFyc2VfYWttYCBvciBgcnR3ODlfd293X3BhcnNlX2FrbWAgbmFtaW5nIGNvbnZlbnRpb24uIFRoaXMgc2VlbXMgdG8gYmUgYSB2ZXJ5IHNwZWNpZmljIGZ1bmN0aW9uIG9yIG1vZHVsZSBuYW1lIHJlbGF0ZWQgdG8gdGhlIEFLTSAoQXV0aGVudGljYXRlZCBLZXkgTWFuYWdlbWVudCkgcGFyc2luZyB3aXRoaW4gdGhlIFJUVzg5IHdpcmVsZXNzIGRyaXZlciBhbmQgd2FrZS1vbi13aXJlbGVzcyBmZWF0dXJlLiBJIHN1c3BlY3QgSSBtaWdodCBmaW5kIHNvbWUgaW1wb3J0YW50IGRldGFpbHMgYWJvdXQgaXRzIHdvcmtpbmdzIGhlcmUsIGhvdyBpdCBoYW5kbGVzIHNlY3VyaXR5LCBhbmQgaG93IHRoZSB3YWtlLW9uLXdpcmVsZXNzIHRyaWdnZXJzIGFyZSBtYW5hZ2VkLiBUaGlzIGNvdWxkIGJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgaXNzdWUgYXQgaGFuZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV93b3dfcGFyc2VfYWttJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0xMzc3PXN0YXRpYyBpbnQgcnR3ODlfY29yZV90eF93cml0ZV9saW5rKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0xMzk3LVx0cnR3ODlfdHJhZmZpY19zdGF0c19hY2N1KHJ0d2RldiwgcnR3dmlmLCBza2IsIHRydWUsIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MTM5ODpcdHJ0dzg5X3dvd19wYXJzZV9ha20ocnR3ZGV2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMTM5OS1cdHJ0dzg5X2NvcmVfdHhfdXBkYXRlX2Rlc2NfaW5mbyhydHdkZXYsIFx1MDAyNnR4X3JlcSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTU6dm9pZCBfX3J0dzg5X3dvd19wYXJzZV9ha20oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xNi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuaD0xMTI9c3RhdGljIGlubGluZSBib29sIHJ0d193b3dfaGFzX21nZF9mZWF0dXJlcyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuaC0xMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5oOjExOTp2b2lkIF9fcnR3ODlfd293X3BhcnNlX2FrbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuaC0xMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5oPTEyMT1zdGF0aWMgaW5saW5lXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5oOjEyMjp2b2lkIHJ0dzg5X3dvd19wYXJzZV9ha20oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuaC0xMjMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmgtMTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuaDoxMjk6XHRfX3J0dzg5X3dvd19wYXJzZV9ha20ocnR3ZGV2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuaC0xMzAtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293Lmg9MTM1PXN0YXRpYyBpbmxpbmVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293Lmg6MTM2OnZvaWQgcnR3ODlfd293X3BhcnNlX2FrbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5oLTEzNy17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjRtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzY2MAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDcyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJUVzg5IFdpcmVsZXNzIERyaXZlciBWdWxuZXJhYmlsaXR5IGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIE15IGluaXRpYWwgZm9jdXMgaXMgdG8gdW5kZXJzdGFuZCB0aGUgbmF0dXJlIG9mIHRoaXMgYnVnLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGNvbnRleHQgb2YgYF9fcnR3ODlfd293X3BhcnNlX2FrbWAgYW5kIGBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4YC4gVGhlIHRleHQgcG9pbnRzIG91dCBhIGNydWNpYWwgZGV0YWlsIGFib3V0IGhvdyB0aGUgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgYXJlIGhhbmRsZWQuIEluIHRoZSBgcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eGAgZnVuY3Rpb24sIHRoZSBgaWVzYCBwb2ludGVyIGlzIGRlcml2ZWQgZnJvbSBgbWdtdC0mZ3Q7dS5iZWFjb24udmFyaWFibGVgLCBhbmQgdGhlIGxlbmd0aCBwYXNzZWQgdG8gYGNmZzgwMjExX2ZpbmRfaWVgIHVzZWQgdG8gYmUgdGhlIHRvdGFsIGBza2ItJmd0O2xlbmAuIFRoZSBsZW5ndGggb2YgdGhlIGRhdGEgYmVpbmcgc2VhcmNoZWQgaXMgdGhlIGZ1bGwgU0tCIGJ1ZmZlci4gSG93ZXZlciwgYGllc2AgcG9pbnRzIHRvIGEgbG9jYXRpb24gKmFmdGVyKiB0aGUgbWFuYWdlbWVudCBoZWFkZXIsIGVmZmVjdGl2ZWx5IG1ha2luZyB0aGUgZGF0YSBzdGFydCBhdCBgb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LCB1LmJlYWNvbi52YXJpYWJsZSlgLiBUaGlzIG1lYW5zIHRoYXQgYGNmZzgwMjExX2ZpbmRfaWVgIHdhcyBwb3RlbnRpYWxseSByZWFkaW5nIHBhc3QgdGhlIGVuZCBvZiB0aGUgYHNrYi0mZ3Q7ZGF0YWAgYnkgYGhkcl9sZW5gIGJ5dGVzLiBUaGUgYnVnIGNvdWxkIHJlc3VsdCBpbiBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaWYgYHNrYi0mZ3Q7bGVuYCB3YXMgc21hbGxlciB0aGFuIGBoZHJfbGVuYC4gVGhlIGZpeCwgYXMgZGVzY3JpYmVkLCBpbnZvbHZlcyBjaGVja2luZyBgc2tiLSZndDtsZW4gJmx0OyBoZHJfbGVuYCBhbmQgcmV0dXJuaW5nIGlmIHRydWUsIGFzIHdlbGwgYXMgc3VidHJhY3RpbmcgdGhlIGhlYWRlciBsZW5ndGggZnJvbSB0aGUgZGF0YSBsZW5ndGggc2VudCB0byBgY2ZnODAyMTFfZmluZF9pZWAuCgpUaGUgc2FtZSBpc3N1ZSBzZWVtcyB0byBiZSBwcmVzZW50IGluIGBfX3J0dzg5X3dvd19wYXJzZV9ha21gLCB1c2luZyB0aGUgc2FtZSBmaXggc3RyYXRlZ3kuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IGlzIHRoaXMgZHJpdmVyIGZ1enphYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VPyBMZXQmIzM5O3MgY2FyZWZ1bGx5IGNvbnNpZGVyIHRoZSBjcml0ZXJpYSBmb3IgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0Oy4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGUgY2hhbmdlcyBvbmx5IGludm9sdmUgZG9jdW1lbnRhdGlvbiwgY29zbWV0aWMgY2hhbmdlcywgdW5yZWFjaGFibGUgY29kZSBwYXRocywgb3IgY29kZSB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlLgoKVGhlIGNydWNpYWwgcG9pbnQgaGVyZSBpcyB3aGV0aGVyIHRoZSBSVFc4OSBkcml2ZXIgaXMgcmVhY2hhYmxlIHRocm91Z2ggVVNCIGVtdWxhdGlvbiwgcGFydGljdWxhcmx5IHVzaW5nIGB1c2IgZ2FkZ2V0YCBvciBgdnVzYmAuIEkmIzM5O2xsIG5lZWQgdG8gcmVzZWFyY2ggaG93IFVTQiBwcm9iaW5nIGlzIGhhbmRsZWQgaW4gdGhlIFJUVzg5IGRyaXZlciB0byBhbnN3ZXIgdGhpcy4gSSB3aWxsIGxvb2sgZm9yIGNhbGxzIHRvIGB1c2IgcHJvYmVgIGluIHRoZSBydHc4OSBkcml2ZXIgdG8gZ2V0IGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VzYl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM9NTk9TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHJ0d184ODUxYnVfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYy02MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM6NjE6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUxYnVfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYy02Mi1cdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYy02Ni19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYzo2Nzptb2R1bGVfdXNiX2RyaXZlcihydHdfODg1MWJ1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTY4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM9NzM9TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHJ0d184ODUyYXVfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy03NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM6NzU6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyYXVfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy03Ni1cdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy04MC19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYzo4MTptb2R1bGVfdXNiX2RyaXZlcihydHdfODg1MmF1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTgyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM9NzM9TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHJ0d184ODUyYnVfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYy03NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM6NzU6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyYnVfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYy03Ni1cdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYy04MC19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYzo4MTptb2R1bGVfdXNiX2RyaXZlcihydHdfODg1MmJ1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTgyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmM9Nzk9TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHJ0d184ODUyY3VfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYy04MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmM6ODE6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyY3VfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYy04Mi1cdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYy04Ni19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYzo4Nzptb2R1bGVfdXNiX2RyaXZlcihydHdfODg1MmN1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTg4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM9NzQ9TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHJ0d184OTIyYXVfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy03NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM6NzY6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184OTIyYXVfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy03Ny1cdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy04MS19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYzo4Mjptb2R1bGVfdXNiX2RyaXZlcihydHdfODkyMmF1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jLTgzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDI3NwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIFdpcmVsZXNzIERyaXZlciBWdWxuZXJhYmlsaXRpZXMqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIFVTQiB3aXJlbGVzcyBkcml2ZXIgc2l0dWF0aW9uLiBJdCBzZWVtcyBsaWtlIHVzaW5nIFVTQiBlbXVsYXRpb24gd2l0aCB0b29scyBsaWtlIHN5emthbGxlciwgc3BlY2lmaWNhbGx5IGl0cyBkdW1teV9oY2QvcmF3LWdhZGdldC91c2JfZnV6emVyIGNhcGFiaWxpdGllcywgaXMgYSB2aWFibGUgYXBwcm9hY2ggdG8gZW11bGF0ZSBhbmQgZnV6eiB0aGVzZSBkcml2ZXJzLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2UuCgpGaXJzdCwgSSB3YW50IHRvIHRyYWNlIGhvdyB3ZSByZWFjaCBgX19ydHc4OV93b3dfcGFyc2VfYWttYCBhbmQgYHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHhgLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eGAuIExvb2tzIGxpa2UgaXQmIzM5O3MgY2FsbGVkIGZyb20gYHJ0dzg5X3ZpZl9yeF9zdGF0c19pdGVyYCwgc28gdGhhdCYjMzk7cyB0aGUgbmV4dCBmdW5jdGlvbiB0byBpbnNwZWN0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBydHc4OV92aWZfcnhfc3RhdHNfaXRlcmAgZG9lcyBhbmQgd2hhdCBjYWxscyAqaXQqLiBUaGlzIHdpbGwgYWxsb3cgbWUgdG8gYXNzZXNzIHRoZSBpbnB1dHMgYW5kIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIEl0JiMzOTtzIGFsbCBhYm91dCBmaW5kaW5nIHRoZSBhY2Nlc3MgcG9pbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV92aWZfcnhfc3RhdHNfaXRlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9MjQwMD1zdGF0aWMgYm9vbCBydHc4OV9jb3JlX3J4X3BwZHVfbWF0Y2goc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTI0MzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzoyNDM2OnN0cnVjdCBydHc4OV92aWZfcnhfc3RhdHNfaXRlcl9kYXRhIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTI0MzctXHRzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9Mjk5Nj1zdGF0aWMgdm9pZCBydHc4OV92aWZfcnhfYmNuX3N0YXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTMwMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzozMDM4OnN0YXRpYyB2b2lkIHJ0dzg5X3ZpZl9yeF9zdGF0c19pdGVyKHZvaWQgKmRhdGEsIHU4ICptYWMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zMDM5LVx0XHRcdFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zMDQwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjMwNDE6XHRzdHJ1Y3QgcnR3ODlfdmlmX3J4X3N0YXRzX2l0ZXJfZGF0YSAqaXRlcl9kYXRhID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTMwNDItXHRzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYgPSBpdGVyX2RhdGEtXHUwMDNlcnR3ZGV2O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTMxNDA9c3RhdGljIHZvaWQgcnR3ODlfY29yZV9yeF9zdGF0cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMzE0NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzozMTQ1Olx0c3RydWN0IHJ0dzg5X3ZpZl9yeF9zdGF0c19pdGVyX2RhdGEgaXRlcl9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMzE0Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zMTUzLVx0aXRlcl9kYXRhLmJzc2lkID0gZ2V0X2hkcl9ic3NpZCgoc3RydWN0IGllZWU4MDIxMV9oZHIgKilza2ItXHUwMDNlZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzozMTU0Olx0cnR3ODlfaXRlcmF0ZV92aWZzX2JoKHJ0d2RldiwgcnR3ODlfdmlmX3J4X3N0YXRzX2l0ZXIsIFx1MDAyNml0ZXJfZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zMTU1LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0NDgKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKlRyYWNpbmcgdGhlIENhbGxzIHRvIGBydHc4OV9jb3JlX3J4X3N0YXRzYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBgcnR3ODlfY29yZV9yeF9zdGF0c2AgaXMgYmVpbmcgdXNlZC4gTXkgZmlyc3Qgc3RlcCwgbmF0dXJhbGx5LCBpcyB0byB0cmFjZSB0aG9zZSBjYWxscy4gSSB3YW50IHRvIHNlZSB3aGljaCBvdGhlciBmdW5jdGlvbnMgb3IgbW9kdWxlcyBkZXBlbmQgb24gdGhpcyBvbmUuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgZ3JhcGggd2lsbCBnaXZlIG1lIGEgZ29vZCBzZW5zZSBvZiB0aGUgY29udGV4dCBhbmQgcHVycG9zZSBvZiB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24uIEZyb20gdGhlcmUsIEkgY2FuIGJlZ2luIHRvIHVucmF2ZWwgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9jb3JlX3J4X3N0YXRzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0zMDM4PXN0YXRpYyB2b2lkIHJ0dzg5X3ZpZl9yeF9zdGF0c19pdGVyKHZvaWQgKmRhdGEsIHU4ICptYWMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMzEzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjMxNDA6c3RhdGljIHZvaWQgcnR3ODlfY29yZV9yeF9zdGF0cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zMTQxLVx0XHRcdFx0c3RydWN0IHJ0dzg5X3J4X3BoeV9wcGR1ICpwaHlfcHBkdSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0zOTc5PXN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcnhfdG9fbWFjODAyMTEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTM5OTEtXHRydHc4OV9jb3JlX2h3X3RvX3NiYW5kX3JhdGUocnhfc3RhdHVzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjM5OTI6XHRydHc4OV9jb3JlX3J4X3N0YXRzKHJ0d2RldiwgcGh5X3BwZHUsIGRlc2NfaW5mbywgc2tiX3BwZHUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMzk5My1cdHJ0dzg5X2NvcmVfdXBkYXRlX3J4X3N0YXR1c19ieV9wcGR1KHJ0d2Rldiwgcnhfc3RhdHVzLCBwaHlfcHBkdSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMDI1CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gUlgvVFggUGFja2V0IEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgcnR3ODlgIGRyaXZlciBjb2RlLiBGaXJzdCwgaXQgbG9va3MgbGlrZSBgcnR3ODlfY29yZV9yeF90b19tYWM4MDIxMWAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQmIzM5O3MgcmVzcG9uc2libGUgZm9yIHByb2Nlc3NpbmcgdGhvc2UgaW5jb21pbmcgUlggcGFja2V0cyBjb21pbmcgaW4gZnJvbSB0aGUgaGFyZHdhcmUgb3IgdGhlIFVTQiBpbnRlcmZhY2Ug4oCTIG1ha2VzIHNlbnNlLiBOb3csIGxldCYjMzk7cyBzZWUsIEkgYWxzbyBzZWUgdGhhdCBgX19ydHc4OV93b3dfcGFyc2VfYWttYCBnZXRzIGNhbGxlZCB3aGVuIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBUWCBvcGVyYXRpb24gdGhyb3VnaCBgcnR3ODlfY29yZV90eF93cml0ZV9saW5rYC4gSG1tLCB0aGF0IHNvdW5kcyBsaWtlIGl0IG1pZ2h0IHJlbGF0ZSB0byBXYWtlLW9uLVdMQU4gZnVuY3Rpb25hbGl0eS4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byBgX19ydHc4OV93b3dfcGFyc2VfYWttYCBhIGxpdHRsZSBmdXJ0aGVyLCBhbmQgSSBzaG91bGQgc3RhcnQgd2l0aCBgd293LmNgLiBMZXQmIzM5O3MgZ2V0IHRoYXQgZmlsZSBvcGVuIGFuZCByZWFkIHRocm91Z2ggaXQgY2FyZWZ1bGx5OyBpdCYjMzk7cyB0aGUgb2J2aW91cyBuZXh0IHN0ZXAgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhpcyB3aG9sZSB0aGluZyBmaXRzIHRvZ2V0aGVyIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcbiAgIDI6XHQvKiBDb3B5cmlnaHQoYykgMjAxOS0yMDIyICBSZWFsdGVrIENvcnBvcmF0aW9uXG4gICAzOlx0ICovXG4gICA0Olx0I2luY2x1ZGUgXCYjMzQ7Y2FtLmhcJiMzNDtcbiAgIDU6XHQjaW5jbHVkZSBcJiMzNDtjb3JlLmhcJiMzNDtcbiAgIDY6XHQjaW5jbHVkZSBcJiMzNDtkZWJ1Zy5oXCYjMzQ7XG4gICA3Olx0I2luY2x1ZGUgXCYjMzQ7ZncuaFwmIzM0O1xuICAgODpcdCNpbmNsdWRlIFwmIzM0O21hYy5oXCYjMzQ7XG4gICA5Olx0I2luY2x1ZGUgXCYjMzQ7cGh5LmhcJiMzNDtcbiAgMTA6XHQjaW5jbHVkZSBcJiMzNDtwcy5oXCYjMzQ7XG4gIDExOlx0I2luY2x1ZGUgXCYjMzQ7cmVnLmhcJiMzNDtcbiAgMTI6XHQjaW5jbHVkZSBcJiMzNDt1dGlsLmhcJiMzNDtcbiAgMTM6XHQjaW5jbHVkZSBcJiMzNDt3b3cuaFwmIzM0O1xuICAxNDpcdFxuICAxNTpcdHZvaWQgX19ydHc4OV93b3dfcGFyc2VfYWttKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiAgMTY6XHR7XG4gIDE3Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2tiLVx1MDAzZWRhdGE7XG4gIDE4Olx0XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbiAgMTk6XHRcdHNpemVfdCBoZHJfbGVuID0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LCB1LmFzc29jX3JlcS52YXJpYWJsZSk7XG4gIDIwOlx0XHRjb25zdCB1OCAqcnNuLCAqaWVzID0gbWdtdC1cdTAwM2V1LmFzc29jX3JlcS52YXJpYWJsZTtcbiAgMjE6XHRcdHN0cnVjdCBydHc4OV9yc25faWUgKnJzbl9pZTtcbiAgMjI6XHRcbiAgMjM6XHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBoZHJfbGVuKVxuICAyNDpcdFx0XHRyZXR1cm47XG4gIDI1Olx0XG4gIDI2Olx0XHRyc24gPSBjZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX1JTTiwgaWVzLFxuICAyNzpcdFx0XHRcdCAgICAgICBza2ItXHUwMDNlbGVuIC0gaGRyX2xlbik7XG4gIDI4Olx0XG4gIDI5Olx0XHRpZiAoIXJzbilcbiAgMzA6XHRcdFx0cmV0dXJuO1xuICAzMTpcdFxuICAzMjpcdFx0cnNuX2llID0gKHN0cnVjdCBydHc4OV9yc25faWUgKilyc247XG4gIDMzOlx0XHRydHdfd293LVx1MDAzZWFrbSA9IHJzbl9pZS1cdTAwM2Vha21fY2lwaGVyX3N1aXRlLnR5cGU7XG4gIDM0Olx0fVxuICAzNTpcdFxuICAzNjpcdCNkZWZpbmUgUlRXODlfQ0lQSEVSX0lORk9fREVGKGNpcGhlcikgXFxcbiAgMzc6XHRcdHtXTEFOX0NJUEhFUl9TVUlURV8gIyMgY2lwaGVyLCAuZndfYWxnID0gUlRXODlfV09XX0ZXX0FMR18gIyMgY2lwaGVyLCBcXFxuICAzODpcdFx0IC5sZW4gPSBXTEFOX0tFWV9MRU5fICMjIGNpcGhlcn1cbiAgMzk6XHRcbiAgNDA6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2NpcGhlcl9pbmZvIHJ0dzg5X2NpcGhlcl9pbmZvX2RlZnNbXSA9IHtcbiAgNDE6XHRcdFJUVzg5X0NJUEhFUl9JTkZPX0RFRihXRVA0MCksXG4gIDQyOlx0XHRSVFc4OV9DSVBIRVJfSU5GT19ERUYoV0VQMTA0KSxcbiAgNDM6XHRcdFJUVzg5X0NJUEhFUl9JTkZPX0RFRihUS0lQKSxcbiAgNDQ6XHRcdFJUVzg5X0NJUEhFUl9JTkZPX0RFRihDQ01QKSxcbiAgNDU6XHRcdFJUVzg5X0NJUEhFUl9JTkZPX0RFRihHQ01QKSxcbiAgNDY6XHRcdFJUVzg5X0NJUEhFUl9JTkZPX0RFRihDQ01QXzI1NiksXG4gIDQ3Olx0XHRSVFc4OV9DSVBIRVJfSU5GT19ERUYoR0NNUF8yNTYpLFxuICA0ODpcdFx0UlRXODlfQ0lQSEVSX0lORk9fREVGKEFFU19DTUFDKSxcbiAgNDk6XHR9O1xuICA1MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzI2NgoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYGNvcmUuY2AgLSBMaW5lIDI1MzAqKgoKQWxyaWdodCwgdGltZSB0byB0cm91Ymxlc2hvb3QuIEJhc2VkIG9uIHRoZSBzeW1wdG9tcywgSSYjMzk7bSBnZXR0aW5nIGEgaHVuY2ggaXQmIzM5O3Mgc29tZXdoZXJlIGRlZXAgd2l0aGluIHRoZSBjb3JlLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgY29yZS5jYC4gTXkgZ3V0IHNheXMgdGhhdCBsaW5lIDI1MzAgbWlnaHQgYmUgd2hlcmUgdGhpbmdzIGFyZSBnZXR0aW5nIGhhaXJ5LiBJdCYjMzk7cyBhIGJyb2FkIHN0YXJ0aW5nIHBvaW50LCBJIGtub3csIGJ1dCBvZnRlbiB0aGUgZGVlcGVzdCBpc3N1ZXMgaGlkZSBpbiB0aGUgY29yZSBsaWJyYXJpZXMuIEkmIzM5O2xsIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCBmdW5jdGlvbiBvciBibG9jayBpcyBsb2NhdGVkIHRoZXJlLCBzbyBJIGFtIGdvaW5nIHRvIGhhdmUgYSBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIEhvcGVmdWxseSB0aGUgaXNzdWUgaXMgb2J2aW91cyBxdWlja2x5LiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCBzZWN0aW9uIGlzIGhhbmRsaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjUyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyNTI1Olx0XHRcdCAqIHNpbmNlIGlmIGR1cmluZyBzY2FubmluZywgcGt0X2xpc3QgaXMgYWNjZXNzZWQgaW4gYm90dG9tIGhhbGYuXG4yNTI2Olx0XHRcdCAqL1xuMjUyNzpcdFx0fVxuMjUyODpcdH1cbjI1Mjk6XHRcbjI1MzA6XHRzdGF0aWMgdm9pZCBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbjI1MzE6XHRcdFx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpXG4yNTMyOlx0e1xuMjUzMzpcdFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2IpO1xuMjUzNDpcdFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNrYi1cdTAwM2VkYXRhO1xuMjUzNTpcdFx0c2l6ZV90IGhkcl9sZW4gPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUuYmVhY29uLnZhcmlhYmxlKTtcbjI1MzY6XHRcdHN0cnVjdCBsaXN0X2hlYWQgKnBrdF9saXN0ID0gcnR3ZGV2LVx1MDAzZXNjYW5faW5mby5wa3RfbGlzdDtcbjI1Mzc6XHRcdHN0cnVjdCBydHc4OV9wa3RvZmxkX2luZm8gKmluZm87XG4yNTM4Olx0XHRjb25zdCB1OCAqaWVzID0gbWdtdC1cdTAwM2V1LmJlYWNvbi52YXJpYWJsZSwgKnNzaWRfaWU7XG4yNTM5Olx0XHRzaXplX3QgaWVfbGVuO1xuMjU0MDpcdFx0Ym9vbCBxdWV1ZV93b3JrID0gZmFsc2U7XG4yNTQxOlx0XG4yNTQyOlx0XHRpZiAocnhfc3RhdHVzLVx1MDAzZWJhbmQgIT0gTkw4MDIxMV9CQU5EXzZHSFopXG4yNTQzOlx0XHRcdHJldHVybjtcbjI1NDQ6XHRcbjI1NDU6XHRcdGlmICh1bmxpa2VseSghKHJ0d2Rldi1cdTAwM2VjaGlwLVx1MDAzZXN1cHBvcnRfYmFuZHMgXHUwMDI2IEJJVChOTDgwMjExX0JBTkRfNkdIWikpKSkge1xuMjU0NjpcdFx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19VTkVYUCwgXCYjMzQ7aW52YWxpZCByeCBvbiB1bnN1cHBvcnRlZCA2IEdIelxcblwmIzM0Oyk7XG4yNTQ3Olx0XHRcdHJldHVybjtcbjI1NDg6XHRcdH1cbjI1NDk6XHRcbjI1NTA6XHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBoZHJfbGVuKVxuMjU1MTpcdFx0XHRyZXR1cm47XG4yNTUyOlx0XG4yNTUzOlx0XHRpZV9sZW4gPSBza2ItXHUwMDNlbGVuIC0gaGRyX2xlbjtcbjI1NTQ6XHRcbjI1NTU6XHRcdHNzaWRfaWUgPSBjZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX1NTSUQsIGllcywgaWVfbGVuKTtcbjI1NTY6XHRcbjI1NTc6XHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoaW5mbywgXHUwMDI2cGt0X2xpc3RbTkw4MDIxMV9CQU5EXzZHSFpdLCBsaXN0KSB7XG4yNTU4Olx0XHRcdGlmIChldGhlcl9hZGRyX2VxdWFsKGluZm8tXHUwMDNlYnNzaWQsIG1nbXQtXHUwMDNlYnNzaWQpKSB7XG4yNTU5Olx0XHRcdFx0aW5mby1cdTAwM2VjYW5jZWwgPSB0cnVlO1xuMjU2MDpcdFx0XHRcdHF1ZXVlX3dvcmsgPSB0cnVlO1xuMjU2MTpcdFx0XHRcdGNvbnRpbnVlO1xuMjU2MjpcdFx0XHR9XG4yNTYzOlx0XG4yNTY0Olx0XHRcdGlmICghc3NpZF9pZSB8fCBzc2lkX2llWzFdICE9IGluZm8tXHUwMDNlc3NpZF9sZW4gfHwgaW5mby1cdTAwM2Vzc2lkX2xlbiA9PSAwKVxuMjU2NTpcdFx0XHRcdGNvbnRpbnVlO1xuMjU2NjpcdFxuMjU2NzpcdFx0XHRpZiAobWVtY21wKFx1MDAyNnNzaWRfaWVbMl0sIGluZm8tXHUwMDNlc3NpZCwgaW5mby1cdTAwM2Vzc2lkX2xlbikgPT0gMCkge1xuMjU2ODpcdFx0XHRcdGluZm8tXHUwMDNlY2FuY2VsID0gdHJ1ZTtcbjI1Njk6XHRcdFx0XHRxdWV1ZV93b3JrID0gdHJ1ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQzMTgKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBEaXZlIGZvciBSVFc4OSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0aGlzIHNvcnRlZC4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgS2NvbmZpZyByZXF1aXJlbWVudHMgZm9yIFJUVzg5LiBUaGF0IG1lYW5zIEkgbmVlZCB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIHNvdXJjZS4gTGV0JiMzOTtzIHN0YXJ0IGJ5IG5hdmlnYXRpbmcgdG8gdGhlIHJlbGV2YW50IGZpbGU6IGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCB3aGVyZSBJIGNhbiBzZWUgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGFsbCB0aGUgY3J1Y2lhbCBjb25maWd1cmF0aW9ucyB0aGF0IGdvdmVybiBob3cgdGhpcyBkcml2ZXIgYmVoYXZlcyB3aXRoaW4gdGhlIGtlcm5lbC4gSXTigJlzIHRoZSByb2FkbWFwLCB0aGUgYmx1ZXByaW50LiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3ZlIGdvdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDkwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxuICAgMjpcdG1lbnVjb25maWcgUlRXODlcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODAyLjExYXggd2lyZWxlc3MgY2hpcHMgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIG1hYzgwMjExLWJhc2VkIHdpcmVsZXNzIGRyaXZlcnMgdGhhdFxuICAgNzpcdFx0ICBlbmFibGVzIFJlYWx0ZWsgSUVFRSA4MDIuMTFheCB3aXJlbGVzcyBjaGlwc2V0cy5cbiAgIDg6XHRcbiAgIDk6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBydHc4OS5cbiAgMTA6XHRcbiAgMTE6XHRpZiBSVFc4OVxuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBSVFc4OV9DT1JFXG4gIDE0Olx0XHR0cmlzdGF0ZVxuICAxNTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIFJUVzg5X1BDSVxuICAxODpcdFx0dHJpc3RhdGVcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgUlRXODlfVVNCXG4gIDIxOlx0XHR0cmlzdGF0ZVxuICAyMjpcdFxuICAyMzpcdGNvbmZpZyBSVFc4OV84ODUxQlxuICAyNDpcdFx0dHJpc3RhdGVcbiAgMjU6XHRcbiAgMjY6XHRjb25maWcgUlRXODlfODg1MkFcbiAgMjc6XHRcdHRyaXN0YXRlXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIFJUVzg5Xzg4NTJCX0NPTU1PTlxuICAzMDpcdFx0dHJpc3RhdGVcbiAgMzE6XHRcbiAgMzI6XHRjb25maWcgUlRXODlfODg1MkJcbiAgMzM6XHRcdHRyaXN0YXRlXG4gIDM0Olx0XG4gIDM1Olx0Y29uZmlnIFJUVzg5Xzg4NTJCVFxuICAzNjpcdFx0dHJpc3RhdGVcbiAgMzc6XHRcbiAgMzg6XHRjb25maWcgUlRXODlfODg1MkNcbiAgMzk6XHRcdHRyaXN0YXRlXG4gIDQwOlx0XG4gIDQxOlx0Y29uZmlnIFJUVzg5Xzg5MjJBXG4gIDQyOlx0XHR0cmlzdGF0ZVxuICA0MzpcdFxuICA0NDpcdGNvbmZpZyBSVFc4OV84ODUxQkVcbiAgNDU6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MUJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4gIDQ2Olx0XHRkZXBlbmRzIG9uIFBDSVxuICA0NzpcdFx0c2VsZWN0IFJUVzg5X0NPUkVcbiAgNDg6XHRcdHNlbGVjdCBSVFc4OV9QQ0lcbiAgNDk6XHRcdHNlbGVjdCBSVFc4OV84ODUxQlxuICA1MDpcdFx0aGVscFxuICA1MTpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MUJFIGNoaXBzZXRcbiAgNTI6XHRcbiAgNTM6XHRcdCAgODAyLjExYXggUENJZSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXG4gIDU0Olx0XG4gIDU1Olx0Y29uZmlnIFJUVzg5Xzg4NTFCVVxuICA1NjpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUxQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcJiMzNDtcbiAgNTc6XHRcdGRlcGVuZHMgb24gVVNCXG4gIDU4Olx0XHRzZWxlY3QgUlRXODlfQ09SRVxuICA1OTpcdFx0c2VsZWN0IFJUVzg5X1VTQlxuICA2MDpcdFx0c2VsZWN0IFJUVzg5Xzg4NTFCXG4gIDYxOlx0XHRoZWxwXG4gIDYyOlx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODUxQlUgY2hpcHNldFxuICA2MzpcdFxuICA2NDpcdFx0ICA4MDIuMTFheCBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxuICA2NTpcdFxuICA2NjpcdGNvbmZpZyBSVFc4OV84ODUyQUVcbiAgNjc6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkFFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4gIDY4Olx0XHRkZXBlbmRzIG9uIFBDSVxuICA2OTpcdFx0c2VsZWN0IFJUVzg5X0NPUkVcbiAgNzA6XHRcdHNlbGVjdCBSVFc4OV9QQ0lcbiAgNzE6XHRcdHNlbGVjdCBSVFc4OV84ODUyQVxuICA3MjpcdFx0aGVscFxuICA3MzpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkFFIGNoaXBzZXRcbiAgNzQ6XHRcbiAgNzU6XHRcdCAgODAyLjExYXggUENJZSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXG4gIDc2Olx0XG4gIDc3Olx0Y29uZmlnIFJUVzg5Xzg4NTJBVVxuICA3ODpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcJiMzNDtcbiAgNzk6XHRcdGRlcGVuZHMgb24gVVNCXG4gIDgwOlx0XHRzZWxlY3QgUlRXODlfQ09SRVxuICA4MTpcdFx0c2VsZWN0IFJUVzg5X1VTQlxuICA4MjpcdFx0c2VsZWN0IFJUVzg5Xzg4NTJBXG4gIDgzOlx0XHRoZWxwXG4gIDg0Olx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODUyQVUgY2hpcHNldFxuICA4NTpcdFxuICA4NjpcdFx0ICA4MDIuMTFheCBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxuICA4NzpcdFxuICA4ODpcdGNvbmZpZyBSVFc4OV84ODUyQkVcbiAgODk6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4gIDkwOlx0XHRkZXBlbmRzIG9uIFBDSVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTc2MQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaXZpbmcgaW50byB0aGUgcnR3ODkgS2NvbmZpZyoqCgpBbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGlzIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGFzc3VtaW5nIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlciwgYW5kIHRoZSBLY29uZmlnIGlzIHdoZXJlIGFsbCB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoaXMgbW9kdWxlIGFyZSBkZWZpbmVkLiBLbm93aW5nIHRoaXMsIG15IG1pbmQgaW1tZWRpYXRlbHkgc3RhcnRzIHBhcnNpbmcgdGhlIGltcGxpY2F0aW9ucy4gSeKAmW0gdGhpbmtpbmcgd2UmIzM5O2xsIGZpbmQgdGhpbmdzIGxpa2U6CgoqICAgKipDaGlwc2V0IFNlbGVjdGlvbjoqKiBUaGVyZSB3aWxsIGxpa2VseSBiZSBvcHRpb25zIGZvciBkaWZmZXJlbnQgUmVhbHRlayA4MDIuMTFheCBjaGlwc2V0cyB0aGF0IHRoaXMgZHJpdmVyIHN1cHBvcnRzIChlLmcuLCBzcGVjaWZpYyBSVEw4ODUyQUUgdmFyaWFudHMpLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBgc2VsZWN0YCBzdGF0ZW1lbnRzIGFuZCBkZXBlbmRlbmNpZXMgb24gZGV2aWNlIElEcyBvciBvdGhlciBoYXJkd2FyZSBmZWF0dXJlcy4KKiAgICoqRmVhdHVyZSBGbGFnczoqKiBXZSBzaG91bGQgc2VlIG9wdGlvbnMgdG8gZW5hYmxlIG9yIGRpc2FibGUgc3BlY2lmaWMgZnVuY3Rpb25hbGl0aWVz4oCUdGhpbmdzIGxpa2UgTVUtTUlNTyBzdXBwb3J0LCBiZWFtZm9ybWluZywgZGlmZmVyZW50IHBvd2VyLXNhdmluZyBtb2RlcywgODAyLjExdyBzZWN1cml0eS4gVGhlIGNvbmZpZ3VyYXRpb24gd2lsbCBkaXJlY3RseSBhZmZlY3QgdGhlIGRyaXZlciYjMzk7cyBmb290cHJpbnQgYW5kIGZlYXR1cmUgc2V0LgoqICAgKipEZWJ1Z2dpbmcgYW5kIExvZ2dpbmc6KiogVGhlcmUgd2lsbCBiZSBvcHRpb25zIHRvIGVuYWJsZSB2YXJpb3VzIGRlYnVnZ2luZyBsZXZlbHMgb3IgbG9nZ2luZywgdmVyeSB1c2VmdWwgZm9yIGFueW9uZSB3b3JraW5nIHRvIGFuYWx5emUgdGhlIGRyaXZlci4gSeKAmWxsIGxvb2sgZm9yIGBib29sYCwgYHRyaXN0YXRlYCwgb3IgYHN0cmluZ2Agb3B0aW9ucyB3aXRoIGRlc2NyaXB0aW9ucyBvZiB0aGUgbG9nZ2luZyBsZXZlbHMgYW5kIGhvdyB0byBjb250cm9sIHRoZW0uCiogICAqKkZpcm13YXJlIExvYWRpbmc6KiogVGhpcyBpcyBjcml0aWNhbC4gVGhlIEtjb25maWcgcHJvYmFibHkgZGVmaW5lcyB0aGUgbG9jYXRpb25zIChlLmcuLCBpbiB0aGUgZmlybXdhcmUgZGlyZWN0b3J5KSBvciBldmVuIHRoZSBmaXJtd2FyZSBmaWxlcyB0aGVtc2VsdmVzLiBUaGVzZSB3aWxsIGJlIG5lY2Vzc2FyeSBmb3IgYSBmdWxsIHJldmlldy4KKiAgICoqRGVwZW5kZW5jaWVzOioqIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGZlYXR1cmVzIG9yIGRyaXZlcnMuIFRoaXMgd2lsbCBoZWxwIHVuZGVyc3RhbmQgaG93IHRoZSBydHc4OSBkcml2ZXIgaW50ZWdyYXRlcyBpbnRvIHRoZSBicm9hZGVyIGtlcm5lbCBlbnZpcm9ubWVudC4gVGhpbmdzIGxpa2UgY3J5cHRvZ3JhcGhpYyBtb2R1bGVzIChlLmcuLCBgQ09ORklHX0NSWVBUT2ApIG9yIG5ldHdvcmtpbmcgaW5mcmFzdHJ1Y3R1cmUgKGUuZy4sIGBDT05GSUdfTkVUYCkgYXJlIHBvc3NpYmlsaXRpZXMuCiogICAqKkRlZmF1bHQgVmFsdWVzOioqIEkmIzM5O2xsIGJlIG5vdGluZyBkZWZhdWx0IHZhbHVlcyBmb3IgdGhlIGNvbmZpZ3VyYXRpb25zLiBUaGF0IHByb3ZpZGVzIGEgc2Vuc2Ugb2YgdGhlIGludGVuZGVkICYjMzQ7b3V0LW9mLXRoZS1ib3gmIzM0OyBleHBlcmllbmNlIGFuZCBjYW4gZ3VpZGUgdGhlIGRpcmVjdGlvbiBvZiB0d2Vha2luZyBhbmQgY3VzdG9taXphdGlvbi4KClNvLCBJJiMzOTttIGFscmVhZHkgbWVudGFsbHkgcHJlcGFyaW5nIHRvIHNlZSB0aGUgc3RydWN0dXJlIG9mIHRoZSBjb25maWcgZmlsZSBhbmQgdG8gY29ubmVjdCB0aGUgcGllY2VzIG9mIGluZm9ybWF0aW9uIHdpdGggd2hhdCBJIGtub3cgYWJvdXQgd2lyZWxlc3MgZHJpdmVyIGFyY2hpdGVjdHVyZXMgYW5kIHRoZSBjb21tb24gS2NvbmZpZyBpZGlvbXMuIFRoaXMgaXNu4oCZdCBqdXN0IGFib3V0IGxvb2tpbmcgYXQgaW5kaXZpZHVhbCBvcHRpb25zOyBpdCYjMzk7cyBhYm91dCBzZWVpbmcgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB0aGUgZHJpdmVy4oCZcyBmdW5jdGlvbmFsaXR5IGFuZCBpbnRlZ3JhdGlvbiB3aXRoaW4gdGhlIGtlcm5lbC4gVGltZSB0byBkaWcgaW4hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgOTE6XHRcdHNlbGVjdCBSVFc4OV9DT1JFXG4gIDkyOlx0XHRzZWxlY3QgUlRXODlfUENJXG4gIDkzOlx0XHRzZWxlY3QgUlRXODlfODg1MkJcbiAgOTQ6XHRcdHNlbGVjdCBSVFc4OV84ODUyQl9DT01NT05cbiAgOTU6XHRcdGhlbHBcbiAgOTY6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4NTJCRSBjaGlwc2V0XG4gIDk3Olx0XG4gIDk4Olx0XHQgIDgwMi4xMWF4IFBDSWUgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxuICA5OTpcdFxuIDEwMDpcdGNvbmZpZyBSVFc4OV84ODUyQlVcbiAxMDE6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4gMTAyOlx0XHRkZXBlbmRzIG9uIFVTQlxuIDEwMzpcdFx0c2VsZWN0IFJUVzg5X0NPUkVcbiAxMDQ6XHRcdHNlbGVjdCBSVFc4OV9VU0JcbiAxMDU6XHRcdHNlbGVjdCBSVFc4OV84ODUyQlxuIDEwNjpcdFx0c2VsZWN0IFJUVzg5Xzg4NTJCX0NPTU1PTlxuIDEwNzpcdFx0aGVscFxuIDEwODpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkJVIGNoaXBzZXRcbiAxMDk6XHRcbiAxMTA6XHRcdCAgODAyLjExYXggVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcbiAxMTE6XHRcbiAxMTI6XHRjb25maWcgUlRXODlfODg1MkJURVxuIDExMzpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQkUtVlQgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcJiMzNDtcbiAxMTQ6XHRcdGRlcGVuZHMgb24gUENJXG4gMTE1Olx0XHRzZWxlY3QgUlRXODlfQ09SRVxuIDExNjpcdFx0c2VsZWN0IFJUVzg5X1BDSVxuIDExNzpcdFx0c2VsZWN0IFJUVzg5Xzg4NTJCVFxuIDExODpcdFx0c2VsZWN0IFJUVzg5Xzg4NTJCX0NPTU1PTlxuIDExOTpcdFx0aGVscFxuIDEyMDpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkJFLVZUIGNoaXBzZXRcbiAxMjE6XHRcbiAxMjI6XHRcdCAgODAyLjExYXggUENJZSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXG4gMTIzOlx0XG4gMTI0Olx0Y29uZmlnIFJUVzg5Xzg4NTJDRVxuIDEyNTpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQ0UgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDZFKSBhZGFwdGVyXCYjMzQ7XG4gMTI2Olx0XHRkZXBlbmRzIG9uIFBDSVxuIDEyNzpcdFx0c2VsZWN0IFJUVzg5X0NPUkVcbiAxMjg6XHRcdHNlbGVjdCBSVFc4OV9QQ0lcbiAxMjk6XHRcdHNlbGVjdCBSVFc4OV84ODUyQ1xuIDEzMDpcdFx0aGVscFxuIDEzMTpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkNFIGNoaXBzZXRcbiAxMzI6XHRcbiAxMzM6XHRcdCAgODAyLjExYXggUENJZSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2RSkgYWRhcHRlclxuIDEzNDpcdFxuIDEzNTpcdGNvbmZpZyBSVFc4OV84ODUyQ1VcbiAxMzY6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkNVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2RSkgYWRhcHRlclwmIzM0O1xuIDEzNzpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAxMzg6XHRcdHNlbGVjdCBSVFc4OV9DT1JFXG4gMTM5Olx0XHRzZWxlY3QgUlRXODlfVVNCXG4gMTQwOlx0XHRzZWxlY3QgUlRXODlfODg1MkNcbiAxNDE6XHRcdGhlbHBcbiAxNDI6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4NTJDVSBjaGlwc2V0XG4gMTQzOlx0XG4gMTQ0Olx0XHQgIDgwMi4xMWF4IFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2RSkgYWRhcHRlclxuIDE0NTpcdFxuIDE0NjpcdGNvbmZpZyBSVFc4OV84OTIyQUVcbiAxNDc6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODkyMkFFLzg5MjJBRS1WUyBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclwmIzM0O1xuIDE0ODpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAxNDk6XHRcdHNlbGVjdCBSVFc4OV9DT1JFXG4gMTUwOlx0XHRzZWxlY3QgUlRXODlfUENJXG4gMTUxOlx0XHRzZWxlY3QgUlRXODlfODkyMkFcbiAxNTI6XHRcdGhlbHBcbiAxNTM6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg5MjJBRS84OTIyQUUtVlMgY2hpcHNldFxuIDE1NDpcdFxuIDE1NTpcdFx0ICA4MDIuMTFiZSBQQ0llIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDcpIGFkYXB0ZXJcbiAxNTY6XHRcdCAgc3VwcG9ydGluZyAyeDIgMkdIei81R0h6LzZHSHogNDA5Ni1RQU0gMTYwTUh6IGNoYW5uZWxzLlxuIDE1NzpcdFxuIDE1ODpcdFx0ICBUaGUgdmFyaWFudCA4OTIyQUUtVlMgaGFzIHRoZSBzYW1lIGZlYXR1cmVzIGV4Y2VwdCAxMDI0LVFBTS5cbiAxNTk6XHRcbiAxNjA6XHRjb25maWcgUlRXODlfODkyMkFVXG4gMTYxOlx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg5MjJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclwmIzM0O1xuIDE2MjpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAxNjM6XHRcdHNlbGVjdCBSVFc4OV9DT1JFXG4gMTY0Olx0XHRzZWxlY3QgUlRXODlfVVNCXG4gMTY1Olx0XHRzZWxlY3QgUlRXODlfODkyMkFcbiAxNjY6XHRcdGhlbHBcbiAxNjc6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg5MjJBVSBjaGlwc2V0XG4gMTY4Olx0XG4gMTY5Olx0XHQgIDgwMi4xMWJlIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA3KSBhZGFwdGVyXG4gMTcwOlx0XHQgIHN1cHBvcnRpbmcgMngyIDJHSHovNUdIei82R0h6IDQwOTYtUUFNIDE2ME1IeiBjaGFubmVscy5cbiAxNzE6XHRcbiAxNzI6XHRjb25maWcgUlRXODlfREVCVUdcbiAxNzM6XHRcdGJvb2xcbiAxNzQ6XHRcbiAxNzU6XHRjb25maWcgUlRXODlfREVCVUdNU0dcbiAxNzY6XHRcdGJvb2wgXCYjMzQ7UmVhbHRlayBydHc4OSBkZWJ1ZyBtZXNzYWdlIHN1cHBvcnRcJiMzNDtcbiAxNzc6XHRcdGRlcGVuZHMgb24gUlRXODlfQ09SRVxuIDE3ODpcdFx0c2VsZWN0IFJUVzg5X0RFQlVHXG4gMTc5Olx0XHRoZWxwXG4gMTgwOlx0XHQgIEVuYWJsZSBkZWJ1ZyBtZXNzYWdlIHN1cHBvcnRcbiAxODE6XHRcbiAxODI6XHRcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBzaW1wbGlmeSBkZWJ1ZyBwcm9ibGVtc1xuIDE4MzpcdFxuIDE4NDpcdGNvbmZpZyBSVFc4OV9ERUJVR0ZTXG4gMTg1Olx0XHRib29sIFwmIzM0O1JlYWx0ZWsgcnR3ODkgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4gMTg2Olx0XHRkZXBlbmRzIG9uIFJUVzg5X0NPUkUgXHUwMDI2XHUwMDI2IENGRzgwMjExX0RFQlVHRlNcbiAxODc6XHRcdHNlbGVjdCBSVFc4OV9ERUJVR1xuIDE4ODpcdFx0aGVscFxuIDE4OTpcdFx0ICBFbmFibGUgZGVidWdmcyBzdXBwb3J0XG4gMTkwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3OTkxCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBCdWlsZCBQcm9jZXNzKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgY29yZS5vYCBhbmQgYHdvdy5vYCBhcmUgZ2V0dGluZyBidWlsdC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBgTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHNlZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb21waWxhdGlvbiBzdGVwcyBpbnZvbHZlZC4gSXQmIzM5O2xsIGdpdmUgbWUgdGhlIGNsZWFyZXN0IHBpY3R1cmUgb2YgaG93IHRoZXNlIG9iamVjdCBmaWxlcyBhcmUgZ2VuZXJhdGVkLCB3aGljaCBpcyBjcnVjaWFsIGZvciBbKippbnNlcnQgeW91ciByZWxldmFudCBmaWVsZCwgZS5nLiwgZGVidWdnaW5nIGEgYnVpbGQgaXNzdWUsIG9wdGltaXppbmcgY29tcGlsYXRpb24sIHVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIHBpcGVsaW5lLCBtb2RpZnlpbmcgdGhlIGJ1aWxkKipdLiBMb29raW5nIGF0IHRoZSBgTWFrZWZpbGVgIHdpbGwgcXVpY2tseSB0ZWxsIG1lIHRoZSBjb21waWxlciBmbGFncywgaW5jbHVkZSBwYXRocywgc291cmNlIGZpbGVzLCBhbmQgYW55IGxpbmtpbmcgc3RlcHMuIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgZXhhY3QgcnVsZXMgcmVzcG9uc2libGUgZm9yIGNvbXBpbGluZyB0aG9zZSBzcGVjaWZpYyBvYmplY3QgZmlsZXMuIFRoYXQmIzM5O3MgbXkgc3RhcnRpbmcgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3dvd1xcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU9ND1ydHc4OV9jb3JlLXkgJiM0Mzs9IGNvcmUubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjIzOnJ0dzg5X2NvcmUtJChDT05GSUdfUE0pICYjNDM7PSB3b3cub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0yNC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjRtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgzNDEKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA0NjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFsdGVrIHJ0dzg5IFdpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uIGFuZCBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIEkgc2VlIGBydHc4OV9jb3JlLXkgJiM0Mzs9IGNvcmUub2AgYW5kIGFsc28gYHJ0dzg5X2NvcmUtJChDT05GSUdfUE0pICYjNDM7PSB3b3cub2AuICBUaGF0IG1lYW5zIHRoZSBjb3JlIG1vZHVsZSBpcyBhbHdheXMgaW5jbHVkZWQsIGFuZCBgd293Lm9gIChXYWtlLW9uLVdMQU4/KSBpcyBvbmx5IGluY2x1ZGVkIGlmIHBvd2VyIG1hbmFnZW1lbnQgaXMgZW5hYmxlZC4gYFJUVzg5X0NPUkVgIGlzIHRoZSBjb3JlLCBhbmQgaXQmIzM5O3MgYmVpbmcgc2VsZWN0ZWQgYnkgYSBidW5jaCBvZiBkcml2ZXJzIC0gYDg4NTJBVWAsIGA4ODUyQ1VgLCB0aGUgdXN1YWwgc3VzcGVjdHMuCgpJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyB3aG9sZSB0aGluZyBpcyBjb25maWd1cmVkLiBUbyBzdGF0aWNhbGx5IGJ1aWxkIHRoaXMgZHJpdmVyLCBJIG5lZWQgYSBmZXcgdGhpbmdzOiBgTUFDODAyMTFgLCBvYnZpb3VzbHksIGBSVFc4OWAsIGBSVFc4OV9DT1JFYCAtIHRoYXQmIzM5O3MgdGhlIGJhc2UuIFRoZW4gZWl0aGVyIGBSVFc4OV9QQ0lgICpvciogYFJUVzg5X1VTQmAsIGRlcGVuZGluZyBvbiB0aGUgaGFyZHdhcmUsIGFuZCBvbmUgb2YgdGhvc2Ugc3BlY2lmaWMgZGV2aWNlIGRyaXZlcnMgbGlrZSBgUlRXODlfODg1MkFVYC4gQW5kLCBvZiBjb3Vyc2UsIGBQTWAgaWYgSSB3YW50IHRoYXQgYHdvdy5vYCBtb2R1bGUuICBHb3QgaXQuCgpOb3csIGxldCYjMzk7cyBzd2l0Y2ggZ2VhcnMgYW5kIGZvY3VzIG9uIHRoZSBjb2RlIGNoYW5nZXMgaW4gdGhpcyBwYXRjaC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGltcGFjdCBvZiB0aGlzIGBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4YCBmdW5jdGlvbi4gTGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIGF0IHRoZSBwYXRjaCwgaXQmIzM5O3MgZGVmaW5lZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmNgLiBBaCwgaXQmIzM5O3MgYSBgc3RhdGljYCBoZWxwZXIgZnVuY3Rpb24uIFNvLCBpdCYjMzk7cyBub3QgZGlyZWN0bHkgZXhwb3NlZCBhcyBhbiBlbnRyeSBwb2ludC4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3csIGJ1dCBJIHN0aWxsIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZS4KCkxldCBtZSB0cmFjZSB0aGUgY2FsbHMuIEl0JiMzOTtzIGNhbGxlZCBieSBgcnR3ODlfdmlmX3J4X3N0YXRzX2l0ZXJgLCB3aGljaCBpcyBjYWxsZWQgYnkgYHJ0dzg5X2NvcmVfcnhfc3RhdHNgLCB3aGljaCwgaW4gdHVybiwgaXMgY2FsbGVkIGJ5IGBydHc4OV9jb3JlX3J4X3RvX21hYzgwMjExYCwgYW5kIHVsdGltYXRlbHksIGBydHc4OV9jb3JlX3J4YC4gVGhhdCYjMzk7cyB0aGUgY3JpdGljYWwgUlggcGF0aC4KCk9rYXksIGxldCBtZSBxdWlja2x5IGdsYW5jZSBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmhgIGFuZCBgY29yZS5jYCBmb3IgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gcmVjZWl2ZSwgb3IgYW55IGNoYW5nZXMgdGhhdCBjb3VsZCBiZSByZWxldmFudCB0byBob3cgdGhpcyBtb2R1bGUgaW50ZXJhY3RzIHdpdGggdGhlIGNvcmUgd2lyZWxlc3MgZnVuY3Rpb25hbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODlfY29yZV9yeCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9MTkwMD1FWFBPUlRfU1lNQk9MKHJ0dzg5X2NvcmVfZmlsbF90eGRlc2NfZndjbWRfdjIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMTkwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjE5MDI6c3RhdGljIGludCBydHc4OV9jb3JlX3J4X3Byb2Nlc3NfbWFjX3BwZHUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMTkwMy1cdFx0XHRcdFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTE5Nzk9c3RhdGljIHU4IHJ0dzg5X2dldF9kYXRhX3JhdGVfbnNzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTE2IGRhdGFfcmF0ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0xOTk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MTk5OTpzdGF0aWMgdm9pZCBydHc4OV9jb3JlX3J4X3Byb2Nlc3NfcGh5X3BwZHVfaXRlcih2b2lkICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMjAwMC1cdFx0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTIyMzE9c3RhdGljIHZvaWQgcnR3ODlfY29yZV91cGRhdGVfcGh5X3BwZHUoc3RydWN0IHJ0dzg5X3J4X3BoeV9wcGR1ICpwaHlfcHBkdSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0yMjQ3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MjI0ODpzdGF0aWMgaW50IHJ0dzg5X2NvcmVfcnhfcHJvY2Vzc19waHlfcHBkdShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0yMjQ5LVx0XHRcdFx0XHQgIHN0cnVjdCBydHc4OV9yeF9waHlfcHBkdSAqcGh5X3BwZHUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMjI3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjIyNzM6c3RhdGljIGludCBydHc4OV9jb3JlX3J4X3BhcnNlX3BoeV9zdHMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMjI3NC1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcnR3ODlfcnhfcGh5X3BwZHUgKnBoeV9wcGR1KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTIzMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzoyMzIyOnN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcnhfcHJvY2Vzc19waHlfc3RzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTIzMjMtXHRcdFx0XHRcdCAgc3RydWN0IHJ0dzg5X3J4X3BoeV9wcGR1ICpwaHlfcHBkdSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0yMzI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MjMyNzpcdHJldCA9IHJ0dzg5X2NvcmVfcnhfcGFyc2VfcGh5X3N0cyhydHdkZXYsIHBoeV9wcGR1KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTIzMjgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTIzMzMtXHRpZWVlODAyMTFfaXRlcmF0ZV9zdGF0aW9uc19hdG9taWMocnR3ZGV2LVx1MDAzZWh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MjMzNDpcdFx0XHRcdFx0ICBydHc4OV9jb3JlX3J4X3Byb2Nlc3NfcGh5X3BwZHVfaXRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTIzMzUtXHRcdFx0XHRcdCAgcGh5X3BwZHUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTIzOTE9Ym9vbCBydHc4OV9jaGVja19yeF9zdGF0dV9naV9tYXRjaChzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzLCB1OCBnaV9sdGYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMjM5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjI0MDA6c3RhdGljIGJvb2wgcnR3ODlfY29yZV9yeF9wcGR1X21hdGNoKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTI0MDEtXHRcdFx0XHQgICAgIHN0cnVjdCBydHc4OV9yeF9kZXNjX2luZm8gKmRlc2NfaW5mbyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0zMDM4PXN0YXRpYyB2b2lkIHJ0dzg5X3ZpZl9yeF9zdGF0c19pdGVyKHZvaWQgKmRhdGEsIHU4ICptYWMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMzEzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjMxNDA6c3RhdGljIHZvaWQgcnR3ODlfY29yZV9yeF9zdGF0cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zMTQxLVx0XHRcdFx0c3RydWN0IHJ0dzg5X3J4X3BoeV9wcGR1ICpwaHlfcHBkdSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0zOTEzPXN0YXRpYyBib29sIHJ0dzg5X2NvcmVfc2tiX3BuX3ZhbGlkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zOTc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6Mzk3OTpzdGF0aWMgdm9pZCBydHc4OV9jb3JlX3J4X3RvX21hYzgwMjExKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTM5ODAtXHRcdFx0XHQgICAgICBzdHJ1Y3QgcnR3ODlfcnhfcGh5X3BwZHUgKnBoeV9wcGR1LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTM5OTEtXHRydHc4OV9jb3JlX2h3X3RvX3NiYW5kX3JhdGUocnhfc3RhdHVzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjM5OTI6XHRydHc4OV9jb3JlX3J4X3N0YXRzKHJ0d2RldiwgcGh5X3BwZHUsIGRlc2NfaW5mbywgc2tiX3BwZHUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMzk5My1cdHJ0dzg5X2NvcmVfdXBkYXRlX3J4X3N0YXR1c19ieV9wcGR1KHJ0d2Rldiwgcnhfc3RhdHVzLCBwaHlfcHBkdSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDAwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQwMDY6c3RhdGljIHZvaWQgcnR3ODlfY29yZV9yeF9wZW5kaW5nX3NrYihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDA3LVx0XHRcdFx0ICAgICAgc3RydWN0IHJ0dzg5X3J4X3BoeV9wcGR1ICpwaHlfcHBkdSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDIxLVx0XHRyeF9zdGF0dXMgPSBJRUVFODAyMTFfU0tCX1JYQ0Ioc2tiX3BwZHUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDAyMjpcdFx0aWYgKHJ0dzg5X2NvcmVfcnhfcHBkdV9tYXRjaChydHdkZXYsIGRlc2NfaW5mbywgcnhfc3RhdHVzKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQwMjMtXHRcdFx0cnR3ODlfY2hpcF9xdWVyeV9wcGR1KHJ0d2RldiwgcGh5X3BwZHUsIHJ4X3N0YXR1cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDI0LVx0XHRydHc4OV9jb3JyZWN0X2Nja19jaGFuKHJ0d2Rldiwgcnhfc3RhdHVzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQwMjU6XHRcdHJ0dzg5X2NvcmVfcnhfdG9fbWFjODAyMTEocnR3ZGV2LCBwaHlfcHBkdSwgZGVzY19pbmZvLCBza2JfcHBkdSwgcnhfc3RhdHVzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQwMjYtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDAyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQwMjk6c3RhdGljIHZvaWQgcnR3ODlfY29yZV9yeF9wcm9jZXNzX3BwZHVfc3RzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQwMzAtXHRcdFx0XHRcdCAgIHN0cnVjdCBydHc4OV9yeF9kZXNjX2luZm8gKmRlc2NfaW5mbyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDQxLVx0aWYgKGRlc2NfaW5mby1cdTAwM2VtYWNfaW5mb192YWxpZCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDA0MjpcdFx0cmV0ID0gcnR3ODlfY29yZV9yeF9wcm9jZXNzX21hY19wcGR1KHJ0d2Rldiwgc2tiLCBcdTAwMjZwaHlfcHBkdSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDQzLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQwNDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo0MDQ3Olx0cmV0ID0gcnR3ODlfY29yZV9yeF9wcm9jZXNzX3BoeV9wcGR1KHJ0d2RldiwgXHUwMDI2cGh5X3BwZHUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDA0OC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDA1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQwNTE6XHRydHc4OV9jb3JlX3J4X3Byb2Nlc3NfcGh5X3N0cyhydHdkZXYsIFx1MDAyNnBoeV9wcGR1KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQwNTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDUzLW91dDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQwNTQ6XHRydHc4OV9jb3JlX3J4X3BlbmRpbmdfc2tiKHJ0d2RldiwgXHUwMDI2cGh5X3BwZHUsIGRlc2NfaW5mbywgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQwNTUtXHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQwNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo0MDU4OnN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcnhfcHJvY2Vzc19yZXBvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDA1OS1cdFx0XHRcdFx0IHN0cnVjdCBydHc4OV9yeF9kZXNjX2luZm8gKmRlc2NfaW5mbyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDY2LVx0Y2FzZSBSVFc4OV9DT1JFX1JYX1RZUEVfUFBEVV9TVEFUOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDA2NzpcdFx0cnR3ODlfY29yZV9yeF9wcm9jZXNzX3BwZHVfc3RzKHJ0d2RldiwgZGVzY19pbmZvLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDA2OC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9NDQ0Nz1zdGF0aWMgdm9pZCBydHc4OV9jb3JlX2ZsdXNoX3BwZHVfcnhfcXVldWUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQ0NTctXHRcdHJ4X3N0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2JfcHBkdSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo0NDU4Olx0XHRydHc4OV9jb3JlX3J4X3RvX21hYzgwMjExKHJ0d2RldiwgTlVMTCwgZGVzY19pbmZvLCBza2JfcHBkdSwgcnhfc3RhdHVzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQ0NTktXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9NDQ2Mj1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQ0NjM6dm9pZCBydHc4OV9jb3JlX3J4X3BrdF9oZGwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDQ2NC1cdFx0XHQgICBjb25zdCBzdHJ1Y3QgcnR3ODlfcnhfZGVzY19pbmZvICpkZXNjKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQ0OTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo0NDk3OnZvaWQgcnR3ODlfY29yZV9yeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00NDk4LVx0XHQgICBzdHJ1Y3QgcnR3ODlfcnhfZGVzY19pbmZvICpkZXNjX2luZm8sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDUwNi1cdGlmIChkZXNjX2luZm8tXHUwMDNlcGt0X3R5cGUgIT0gUlRXODlfQ09SRV9SWF9UWVBFX1dJRkkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQ1MDc6XHRcdHJ0dzg5X2NvcmVfcnhfcHJvY2Vzc19yZXBvcnQocnR3ZGV2LCBkZXNjX2luZm8sIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00NTA4LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDUxOC1cdHJ0dzg5X2NvcmVfdXBkYXRlX3J4X3N0YXR1cyhydHdkZXYsIHNrYiwgZGVzY19pbmZvLCByeF9zdGF0dXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDUxOTpcdHJ0dzg5X2NvcmVfcnhfcGt0X2hkbChydHdkZXYsIHNrYiwgZGVzY19pbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQ1MjAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDUyNy1cdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQ1Mjg6XHRcdHJ0dzg5X2NvcmVfcnhfdG9fbWFjODAyMTEocnR3ZGV2LCBOVUxMLCBkZXNjX2luZm8sIHNrYiwgcnhfc3RhdHVzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQ1MjktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDUzMDpFWFBPUlRfU1lNQk9MKHJ0dzg5X2NvcmVfcngpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDUzMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD0yMTY9ZW51bSBydHc4OV9jb3JlX3R4X3R5cGUge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTIyMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjIyMjplbnVtIHJ0dzg5X2NvcmVfcnhfdHlwZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0yMjMtXHRSVFc4OV9DT1JFX1JYX1RZUEVfV0lGSVx0XHQ9IDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9ODA5Mz11OCBydHc4OV9jb3JlX2dldF9jaF9kbWFfdjIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBxc2VsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjgwOTQ6dm9pZCBydHc4OV9jb3JlX3J4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTgwOTUtXHRcdCAgIHN0cnVjdCBydHc4OV9yeF9kZXNjX2luZm8gKmRlc2NfaW5mbyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BjaS5jPTMyMT1zdGF0aWMgdTMyIHJ0dzg5X3BjaV9yeGJkX2RlbGl2ZXJfc2ticyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9wY2kuYy0zOTMtXHRpZiAobHMpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGNpLmM6Mzk0Olx0XHRydHc4OV9jb3JlX3J4KHJ0d2RldiwgZGVzY19pbmZvLCBuZXcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9wY2kuYy0zOTUtXHRcdHJ4X3JpbmctXHUwMDNlZGlsaXZlcl9za2IgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM9NDM2PXN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yeF9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTQ4Mi1cdFx0XHRza2JfcHV0X2RhdGEoc2tiLCBwa3RfcHRyICYjNDM7IHBrdF9vZmZzZXQsIGRlc2NfaW5mby5wa3Rfc2l6ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjQ4MzpcdFx0XHRydHc4OV9jb3JlX3J4KHJ0d2RldiwgXHUwMDI2ZGVzY19pbmZvLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy00ODQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNzk3CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIFVTQiBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBSZWFsdGVrIFVTQiBkcml2ZXIg4oCTIHNwZWNpZmljYWxseSwgYHJ0dzg5X3VzYi5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7QWhhISBgcnR3ODlfdXNiX3J4X2hhbmRsZXJgIGlzIGNhbGxpbmcgYHJ0dzg5X2NvcmVfcnhgIHdoZW4gaXQgZ2V0cyBwYWNrZXRzIHZpYSBVU0IuIFRoYXQmIzM5O3MgdGhlIGV4cGVjdGVkIHBhdGggZm9yIFJYLiYjMzQ7CgpCdXQgdGhlIHJlYWwgcXVlc3Rpb24gSSB3YW50IHRvIGFuc3dlciBpcyB3aG8mIzM5O3MgdXNpbmcgYF9fcnR3ODlfd293X3BhcnNlX2FrbWA/IElzIGl0IHJlbGF0ZWQgdG8gdGhlIGlzc3VlIEkgYW0gZGVidWdnaW5nLCBhbmQgaWYgc28gd2hlcmUgZG8gSSBmaW5kIHRoZSBzb3VyY2U/CgpMZXQmIzM5O3Mgc2Vl4oCmIEkgc2hvdWxkIGNoZWNrIGlmIGBydHc4OV9jb3JlX3R4X3dyaXRlX2xpbmtgIGlzIGEgY2FsbGVyLiBPciBvdGhlciBjYWxsZXJzIHBlcmhhcHMuIE5vdywgbGV0JiMzOTtzIHNlZSwgYHJ0dzg5X3dvd19wYXJzZV9ha21gIGlzIGNhbGxpbmcgYF9fcnR3ODlfd293X3BhcnNlX2FrbWAuIE9rYXksIHRoYXQmIzM5O3MgZmluZS4KClJpZ2h0LCBiYWNrIHRvIHRoZSBtYWluIHF1ZXN0aW9uLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIGBydHc4OV9jb3JlX3R4X3dyaXRlX2xpbmtgIHRvIHNlZSB3aGVyZSAqaXQqIGdldHMgY2FsbGVkLiBUaGF0IHdpbGwgdGVsbCBtZSB3aGljaCBwYXJ0IG9mIHRoZSBkcml2ZXIgaXMgdHJpZ2dlcmluZyB0aGlzIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9jb3JlX3R4X3dyaXRlX2xpbmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTEzMzY9aW50IHJ0dzg5X2gyY190eChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMTM3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjEzNzc6c3RhdGljIGludCBydHc4OV9jb3JlX3R4X3dyaXRlX2xpbmsoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMTM3OC1cdFx0XHRcdCAgICBzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTE0MTY9aW50IHJ0dzg5X2NvcmVfdHhfd3JpdGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTE0MzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzoxNDQwOlx0cmV0dXJuIHJ0dzg5X2NvcmVfdHhfd3JpdGVfbGluayhydHdkZXYsIHJ0d3ZpZl9saW5rLCBydHdzdGFfbGluaywgc2tiLCBxc2VsLCBOVUxMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTE0NDEtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTQ5MjY9aW50IHJ0dzg5X2NvcmVfc2VuZF9udWxsZnVuYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbmssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDk3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQ5NzU6XHRyZXQgPSBydHc4OV9jb3JlX3R4X3dyaXRlX2xpbmsocnR3ZGV2LCBydHd2aWZfbGluaywgcnR3c3RhX2xpbmssIHNrYiwgXHUwMDI2cXNlbCwgd2FpdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00OTc2LVx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDc5MAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIHRoZSBydHc4OSBXaXJlbGVzcyBEcml2ZXIqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkYXRhIGZsb3csIGVzcGVjaWFsbHkgYXJvdW5kIHRyYW5zbWl0IG9wZXJhdGlvbnMgd2l0aGluIHRoZSBgcnR3ODlgIGRyaXZlciwgc28gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBleGFtaW5pbmcgdHdvIGtleSBhcmVhcy4gRmlyc3QsIEkmIzM5O2xsIGJlIGRpZ2dpbmcgaW50byBgcnR3ODlfY29yZV90eF93cml0ZWAsIGJlY2F1c2UgdGhhdCBsaWtlbHkgaGFuZGxlcyB0aGUgY29yZSB3cml0aW5nIG9mIHRyYW5zbWl0IGRhdGEgd2l0aGluIHRoZSBkcml2ZXIuIFNlY29uZCwgSSYjMzk7bGwgbW92ZSBvbiB0byBgcnR3ODlfb3BzYCB0byBzZWUgd2hpY2ggbWFjODAyMTEgb3BlcmF0aW9ucyB0aGlzIGRyaXZlciBhY3R1YWxseSBleHBvcnRzLiBVbmRlcnN0YW5kaW5nIHRoZSBvcGVyYXRpb25zIGl0IHByb3ZpZGVzIHdpbGwgaGVscCBtZSBidWlsZCB1cCBhIG1vcmUgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUuIEkgZXhwZWN0IEkmIzM5O2xsIGZpbmQgYSBjbGVhciBtYXBwaW5nIG9mIHRoZSBkcml2ZXImIzM5O3MgdHJhbnNtaXQgY2FwYWJpbGl0aWVzIHRvIHRoZSBtYWM4MDIxMSBpbnRlcmZhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg5X29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9NzU0MD1zdHJ1Y3QgcnR3ODlfZGV2ICpydHc4OV9hbGxvY19pZWVlODAyMTFfaHcoc3RydWN0IGRldmljZSAqZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTc1NTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo3NTYwOlx0b3BzID0ga21lbWR1cChcdTAwMjZydHc4OV9vcHMsIHNpemVvZihydHc4OV9vcHMpLCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTc1NjEtXHRpZiAoIW9wcylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD0zMz1zdHJ1Y3QgcnR3ODlfZndfY21kX29mbGRfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzU6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIHJ0dzg5X29wcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTM2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxOTpzdGF0aWMgdm9pZCBydHc4OV9vcHNfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMjAtXHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCAqY29udHJvbCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6NDg6c3RhdGljIHZvaWQgcnR3ODlfb3BzX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNDktXHRcdFx0XHQgICAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6NTc6c3RhdGljIGludCBydHc4OV9vcHNfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNTgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy02NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo2NjpzdGF0aWMgdm9pZCBydHc4OV9vcHNfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTY3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6NzU6c3RhdGljIGludCBydHc4OV9vcHNfY29uZmlnKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBpbnQgcmFkaW9faWR4LCB1MzIgY2hhbmdlZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy03Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxMDc6c3RhdGljIGludCBfX3J0dzg5X29wc19hZGRfaWZhY2VfbGluayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTA4LVx0XHRcdFx0ICAgICAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE1MDpzdGF0aWMgdm9pZCBfX3J0dzg5X29wc19yZW1vdmVfaWZhY2VfbGluayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTUxLVx0XHRcdFx0XHQgIHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNjk6c3RhdGljIGludCBydHc4OV9vcHNfYWRkX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNzAtXHRcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0yMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjIzOlx0cmV0ID0gX19ydHc4OV9vcHNfYWRkX2lmYWNlX2xpbmsocnR3ZGV2LCBydHd2aWZfbGluayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMjI0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMjQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjI0MzpzdGF0aWMgdm9pZCBydHc4OV9vcHNfcmVtb3ZlX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0yNDQtXHRcdFx0XHQgICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMjY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjI2NzpcdF9fcnR3ODlfb3BzX3JlbW92ZV9pZmFjZV9saW5rKHJ0d2RldiwgcnR3dmlmX2xpbmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTI2OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMjgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjI4MjpzdGF0aWMgaW50IHJ0dzg5X29wc19jaGFuZ2VfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTI4My1cdFx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTI5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyOTQ6XHRydHc4OV9vcHNfcmVtb3ZlX2ludGVyZmFjZShodywgdmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0yOTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTI5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyOTk6XHRyZXQgPSBydHc4OV9vcHNfYWRkX2ludGVyZmFjZShodywgdmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0zMDAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0zMDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MzA4OnN0YXRpYyB2b2lkIHJ0dzg5X29wc19jb25maWd1cmVfZmlsdGVyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTMwOS1cdFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgY2hhbmdlZF9mbGFncyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM9NDc5PXN0YXRpYyB2b2lkIHJ0dzg5X2NvbmZfdHgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy00ODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6NDg4OnN0YXRpYyBpbnQgX19ydHc4OV9vcHNfc3RhX2FkZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNDg5LVx0XHRcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy01NTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6NTUyOnN0YXRpYyBpbnQgX19ydHc4OV9vcHNfc3RhX2Fzc29jKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy01NTMtXHRcdFx0XHQgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNTgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjU4MjpzdGF0aWMgaW50IF9fcnR3ODlfb3BzX3N0YV9kaXNhc3NvYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNTgzLVx0XHRcdFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTYwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo2MDk6c3RhdGljIGludCBfX3J0dzg5X29wc19zdGFfZGlzY29ubmVjdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNjEwLVx0XHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNjMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjYzMzpzdGF0aWMgaW50IF9fcnR3ODlfb3BzX3N0YV9yZW1vdmUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTYzNC1cdFx0XHRcdCAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM9NjYxPXN0YXRpYyB2b2lkIHJ0dzg5X3N0YXRpb25fbW9kZV9zdGFfYXNzb2Moc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy02NzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6Njc1Olx0X19ydHc4OV9vcHNfc3RhX2Fzc29jKHJ0d2RldiwgdmlmLCBzdGEsIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTY3Ni19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNjc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjY3ODpzdGF0aWMgdm9pZCBfX3J0dzg5X29wc19ic3NfbGlua19hc3NvYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNjc5LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTY4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo2ODg6c3RhdGljIHZvaWQgX19ydHc4OV9vcHNfYnNzX2Fzc29jKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy02ODktXHRcdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTY5NS1cdHJ0dzg5X3ZpZl9mb3JfZWFjaF9saW5rKHJ0d3ZpZiwgcnR3dmlmX2xpbmssIGxpbmtfaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6Njk2Olx0XHRfX3J0dzg5X29wc19ic3NfbGlua19hc3NvYyhydHdkZXYsIHJ0d3ZpZl9saW5rKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy02OTctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTY5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo2OTk6c3RhdGljIHZvaWQgcnR3ODlfb3BzX3ZpZl9jZmdfY2hhbmdlZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy03MDAtXHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLCB1NjQgY2hhbmdlZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNzExLVx0XHRcdHJ0dzg5X3N0YXRpb25fbW9kZV9zdGFfYXNzb2MocnR3ZGV2LCB2aWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjcxMjpcdFx0XHRfX3J0dzg5X29wc19ic3NfYXNzb2MocnR3ZGV2LCB2aWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTcxMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNzQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjc1MDpzdGF0aWMgdm9pZCBydHc4OV9vcHNfbGlua19pbmZvX2NoYW5nZWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNzUxLVx0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy03OTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6ODAwOnN0YXRpYyBpbnQgcnR3ODlfb3BzX3N0YXJ0X2FwKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTgwMS1cdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz04NDc9c3RhdGljXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6ODQ4OnZvaWQgcnR3ODlfb3BzX3N0b3BfYXAoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtODQ5LVx0XHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqbGlua19jb25mKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy04NzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6ODczOnN0YXRpYyBpbnQgcnR3ODlfb3BzX3NldF90aW0oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtODc0LVx0XHRcdCAgICAgYm9vbCBzZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTg4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo4ODc6c3RhdGljIGludCBydHc4OV9vcHNfY29uZl90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy04ODgtXHRcdFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy05MTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6OTE0OnN0YXRpYyBpbnQgX19ydHc4OV9vcHNfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTkxNS1cdFx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy05MjMtXHQgICAgbmV3X3N0YXRlID09IElFRUU4MDIxMV9TVEFfTk9ORSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo5MjQ6XHRcdHJldHVybiBfX3J0dzg5X29wc19zdGFfYWRkKHJ0d2RldiwgdmlmLCBzdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTkyNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtOTI5LVx0XHRcdHJldHVybiAwOyAvKiBkZWZlciB0byBic3NfaW5mb19jaGFuZ2VkIHRvIGhhdmUgdmlmIGluZm8gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo5MzA6XHRcdHJldHVybiBfX3J0dzg5X29wc19zdGFfYXNzb2MocnR3ZGV2LCB2aWYsIHN0YSwgZmFsc2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTkzMS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtOTM0LVx0ICAgIG5ld19zdGF0ZSA9PSBJRUVFODAyMTFfU1RBX0FVVEgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6OTM1Olx0XHRyZXR1cm4gX19ydHc4OV9vcHNfc3RhX2Rpc2Fzc29jKHJ0d2RldiwgdmlmLCBzdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTkzNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtOTM4LVx0ICAgIG5ld19zdGF0ZSA9PSBJRUVFODAyMTFfU1RBX05PTkUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6OTM5Olx0XHRyZXR1cm4gX19ydHc4OV9vcHNfc3RhX2Rpc2Nvbm5lY3QocnR3ZGV2LCB2aWYsIHN0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtOTQwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy05NDItXHQgICAgbmV3X3N0YXRlID09IElFRUU4MDIxMV9TVEFfTk9URVhJU1QpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6OTQzOlx0XHRyZXR1cm4gX19ydHc4OV9vcHNfc3RhX3JlbW92ZShydHdkZXYsIHZpZiwgc3RhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy05NDQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTk0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo5NDg6c3RhdGljIGludCBydHc4OV9vcHNfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTk0OS1cdFx0XHQgICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtOTU4LVx0cnR3ODlfbGVhdmVfcHNfbW9kZShydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjk1OTpcdHJldHVybiBfX3J0dzg5X29wc19zdGFfc3RhdGUoaHcsIHZpZiwgc3RhLCBvbGRfc3RhdGUsIG5ld19zdGF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtOTYwLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy05NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6OTYyOnN0YXRpYyBpbnQgcnR3ODlfb3BzX3NldF9rZXkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGVudW0gc2V0X2tleV9jbWQgY21kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTk2My1cdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEwMDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTAwMTpzdGF0aWMgaW50IHJ0dzg5X29wc19hbXBkdV9hY3Rpb24oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTAwMi1cdFx0XHRcdCAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTA1Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxMDUzOnN0YXRpYyBpbnQgcnR3ODlfb3BzX3NldF9ydHNfdGhyZXNob2xkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBpbnQgcmFkaW9faWR4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEwNTQtXHRcdFx0XHQgICAgICAgdTMyIHZhbHVlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMDY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjEwNjc6c3RhdGljIHZvaWQgcnR3ODlfb3BzX3N0YV9zdGF0aXN0aWNzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEwNjgtXHRcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jPTEwODQ9dm9pZCBfX3J0dzg5X2Ryb3BfcGFja2V0cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEwOTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTA5NzpzdGF0aWMgdm9pZCBydHc4OV9vcHNfZmx1c2goc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTA5OC1cdFx0XHQgICAgdTMyIHF1ZXVlcywgYm9vbCBkcm9wKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz0xMTM5PXN0YXRpYyB2b2lkIHJ0dzg5X3JhX21hc2tfaW5mb191cGRhdGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMTUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjExNTE6c3RhdGljIGludCBydHc4OV9vcHNfc2V0X2JpdHJhdGVfbWFzayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMTUyLVx0XHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM9MTE2NT1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxMTY2OmludCBydHc4OV9vcHNfc2V0X2FudGVubmEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGludCByYWRpb19pZHgsIHUzMiB0eF9hbnQsIHUzMiByeF9hbnQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTE2Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jPTExOTM9c3RhdGljXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTE5NDppbnQgcnR3ODlfb3BzX2dldF9hbnRlbm5hKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBpbnQgcmFkaW9faWR4LCB1MzIgKnR4X2FudCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMTk1LVx0XHRcdCAgdTMyICpyeF9hbnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEyMDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTIwNjpzdGF0aWMgdm9pZCBydHc4OV9vcHNfc3dfc2Nhbl9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMjA3LVx0XHRcdFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEyMjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTIyNzpzdGF0aWMgdm9pZCBydHc4OV9vcHNfc3dfc2Nhbl9jb21wbGV0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMjI4LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEyNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTI0NTpzdGF0aWMgdm9pZCBydHc4OV9vcHNfcmVjb25maWdfY29tcGxldGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTI0Ni1cdFx0XHRcdFx0ZW51bSBpZWVlODAyMTFfcmVjb25maWdfdHlwZSByZWNvbmZpZ190eXBlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMjUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjEyNTQ6c3RhdGljIGludCBydHc4OV9vcHNfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMjU1LVx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV9zY2FuX3JlcXVlc3QgKnJlcSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTI5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxMjk5OnN0YXRpYyB2b2lkIHJ0dzg5X29wc19jYW5jZWxfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMzAwLVx0XHRcdFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMzIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjEzMjM6c3RhdGljIHZvaWQgcnR3ODlfb3BzX3N0YV9yY191cGRhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTMyNC1cdFx0XHRcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMzM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjEzMzk6c3RhdGljIGludCBydHc4OV9vcHNfYWRkX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTM0MC1cdFx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHhfY29uZiAqY3R4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMzQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjEzNDk6c3RhdGljIHZvaWQgcnR3ODlfb3BzX3JlbW92ZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEzNTAtXHRcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eF9jb25mICpjdHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEzNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTM1OTpzdGF0aWMgdm9pZCBydHc4OV9vcHNfY2hhbmdlX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTM2MC1cdFx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFuY3R4X2NvbmYgKmN0eCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTM2OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxMzcwOnN0YXRpYyBpbnQgcnR3ODlfb3BzX2Fzc2lnbl92aWZfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMzcxLVx0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMzkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjEzOTI6c3RhdGljIHZvaWQgcnR3ODlfb3BzX3VuYXNzaWduX3ZpZl9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEzOTMtXHRcdFx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jPTE0MTQ9c3RhdGljXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTQxNTppbnQgcnR3ODlfb3BzX3N3aXRjaF92aWZfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNDE2LVx0XHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfdmlmX2NoYW5jdHhfc3dpdGNoICp2aWZzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNDYxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE0NjI6c3RhdGljIHZvaWQgcnR3ODlfb3BzX2NoYW5uZWxfc3dpdGNoX2JlYWNvbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNDYzLVx0XHRcdFx0XHQgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTQ4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNDgxOnN0YXRpYyBpbnQgcnR3ODlfb3BzX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE0ODItXHRcdFx0XHQgICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTUxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNTE3OnN0YXRpYyBpbnQgcnR3ODlfb3BzX2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNTE4LVx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz0xNTM1PXN0YXRpYyB2b2lkIHJ0dzg5X3NldF90aWRfY29uZmlnX2l0ZXIodm9pZCAqZGF0YSwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTU0My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNTQ0OnN0YXRpYyBpbnQgcnR3ODlfb3BzX3NldF90aWRfY29uZmlnKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE1NDUtXHRcdFx0XHQgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM9MTU2Mz1zdGF0aWMgYm9vbCBydHc4OV9jYW5fd29ya19vbl9saW5rcyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE1NzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTU3NjpzdGF0aWMgYm9vbCBydHc4OV9vcHNfY2FuX2FjdGl2YXRlX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE1NzctXHRcdFx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNjA1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE2MDY6c3RhdGljIHZvaWQgX19ydHc4OV9vcHNfY2xyX3ZpZl9saW5rcyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTYwNy1cdFx0XHRcdCAgICAgIHN0cnVjdCBydHc4OV92aWYgKnJ0d3ZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTYxOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNjIwOlx0XHRfX3J0dzg5X29wc19yZW1vdmVfaWZhY2VfbGluayhydHdkZXYsIHJ0d3ZpZl9saW5rKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNjIxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNjI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE2MjY6c3RhdGljIGludCBfX3J0dzg5X29wc19zZXRfdmlmX2xpbmtzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNjI3LVx0XHRcdFx0ICAgICBzdHJ1Y3QgcnR3ODlfdmlmICpydHd2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE2MzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTYzOTpcdFx0cmV0ID0gX19ydHc4OV9vcHNfYWRkX2lmYWNlX2xpbmsocnR3ZGV2LCBydHd2aWZfbGluayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTY0MC1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz0xNjc4PXN0YXRpY1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE2Nzk6aW50IHJ0dzg5X29wc19jaGFuZ2VfdmlmX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE2ODAtXHRcdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE3MjEtXHRpZiAoIW9sZF9saW5rcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNzIyOlx0XHRfX3J0dzg5X29wc19jbHJfdmlmX2xpbmtzKHJ0d2RldiwgcnR3dmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE3MjMtXHRcdFx0XHRcdCAgQklUKFJUVzg5X1ZJRl9JRExFX0xJTktfSUQpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNzI0LVx0ZWxzZSBpZiAoY2xyX2xpbmtzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE3MjU6XHRcdF9fcnR3ODlfb3BzX2Nscl92aWZfbGlua3MocnR3ZGV2LCBydHd2aWYsIGNscl9saW5rcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTcyNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTc0MC1cdGlmIChzZXRfbGlua3MpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNzQxOlx0XHRyZXQgPSBfX3J0dzg5X29wc19zZXRfdmlmX2xpbmtzKHJ0d2RldiwgcnR3dmlmLCBzZXRfbGlua3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE3NDItXHRcdGlmIChyZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTc0MzpcdFx0XHRfX3J0dzg5X29wc19jbHJfdmlmX2xpbmtzKHJ0d2RldiwgcnR3dmlmLCBzZXRfbGlua3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE3NDQtXHR9IGVsc2UgaWYgKCFuZXdfbGlua3MpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNzQ1Olx0XHRyZXQgPSBfX3J0dzg5X29wc19zZXRfdmlmX2xpbmtzKHJ0d2RldiwgcnR3dmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE3NDYtXHRcdFx0XHRcdFx0QklUKFJUVzg5X1ZJRl9JRExFX0xJTktfSUQpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNzQ3LVx0XHRpZiAocmV0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE3NDg6XHRcdFx0X19ydHc4OV9vcHNfY2xyX3ZpZl9saW5rcyhydHdkZXYsIHJ0d3ZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNzQ5LVx0XHRcdFx0XHRcdCAgQklUKFJUVzg5X1ZJRl9JRExFX0xJTktfSUQpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTc1OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNzU5OnN0YXRpYyB2b2lkIF9fcnR3ODlfb3BzX2Nscl9zdGFfbGlua3Moc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE3NjAtXHRcdFx0XHQgICAgICBzdHJ1Y3QgcnR3ODlfc3RhICpydHdzdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE3ODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTc4MjpzdGF0aWMgaW50IF9fcnR3ODlfb3BzX3NldF9zdGFfbGlua3Moc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE3ODMtXHRcdFx0XHQgICAgIHN0cnVjdCBydHc4OV9zdGEgKnJ0d3N0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTgxNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxODE1Olx0XHRfX3J0dzg5X29wc19ic3NfbGlua19hc3NvYyhydHdkZXYsIHJ0d3ZpZl9saW5rKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xODE2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz0xODM1PXN0YXRpY1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE4MzY6aW50IHJ0dzg5X29wc19jaGFuZ2Vfc3RhX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE4MzctXHRcdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE4NTgtXHRpZiAoY2xyX2xpbmtzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE4NTk6XHRcdF9fcnR3ODlfb3BzX2Nscl9zdGFfbGlua3MocnR3ZGV2LCBydHdzdGEsIGNscl9saW5rcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTg2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xODYxLVx0aWYgKHNldF9saW5rcykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE4NjI6XHRcdHJldCA9IF9fcnR3ODlfb3BzX3NldF9zdGFfbGlua3MocnR3ZGV2LCBydHdzdGEsIHNldF9saW5rcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTg2My1cdFx0aWYgKHJldClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxODY0Olx0XHRcdF9fcnR3ODlfb3BzX2Nscl9zdGFfbGlua3MocnR3ZGV2LCBydHdzdGEsIHNldF9saW5rcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTg2NS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTg3MC0jaWZkZWYgQ09ORklHX1BNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTg3MTpzdGF0aWMgaW50IHJ0dzg5X29wc19zdXNwZW5kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE4NzItXHRcdFx0ICAgICBzdHJ1Y3QgY2ZnODAyMTFfd293bGFuICp3b3dsYW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE4OTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTg5MzpzdGF0aWMgaW50IHJ0dzg5X29wc19yZXN1bWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTg5NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE5MTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTkxMzpzdGF0aWMgdm9pZCBydHc4OV9vcHNfc2V0X3dha2V1cChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBlbmFibGVkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE5MTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz0xOTIwPXN0YXRpYyB2b2lkIHJ0dzg5X3NldF9yZWtleV9kYXRhKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xOTQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5NDE6c3RhdGljIGludCBydHc4OV9vcHNfZ2V0X3N1cnZleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IGlkeCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xOTQyLVx0XHRcdFx0c3RydWN0IHN1cnZleV9pbmZvICpzdXJ2ZXkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE5NzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTk3NTpzdGF0aWMgdm9pZCBydHc4OV9vcHNfcmZraWxsX3BvbGwoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTk3Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE5ODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTk4ODpjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBydHc4OV9vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTk4OTpcdC50eFx0XHRcdD0gcnR3ODlfb3BzX3R4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5OTA6XHQud2FrZV90eF9xdWV1ZVx0XHQ9IHJ0dzg5X29wc193YWtlX3R4X3F1ZXVlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5OTE6XHQuc3RhcnRcdFx0XHQ9IHJ0dzg5X29wc19zdGFydCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxOTkyOlx0LnN0b3BcdFx0XHQ9IHJ0dzg5X29wc19zdG9wLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5OTM6XHQuY29uZmlnXHRcdFx0PSBydHc4OV9vcHNfY29uZmlnLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5OTQ6XHQuYWRkX2ludGVyZmFjZVx0XHQ9IHJ0dzg5X29wc19hZGRfaW50ZXJmYWNlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5OTU6XHQuY2hhbmdlX2ludGVyZmFjZSAgICAgICA9IHJ0dzg5X29wc19jaGFuZ2VfaW50ZXJmYWNlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5OTY6XHQucmVtb3ZlX2ludGVyZmFjZVx0PSBydHc4OV9vcHNfcmVtb3ZlX2ludGVyZmFjZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxOTk3Olx0LmNvbmZpZ3VyZV9maWx0ZXJcdD0gcnR3ODlfb3BzX2NvbmZpZ3VyZV9maWx0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTk5ODpcdC52aWZfY2ZnX2NoYW5nZWRcdD0gcnR3ODlfb3BzX3ZpZl9jZmdfY2hhbmdlZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxOTk5Olx0LmxpbmtfaW5mb19jaGFuZ2VkXHQ9IHJ0dzg5X29wc19saW5rX2luZm9fY2hhbmdlZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDAwOlx0LnN0YXJ0X2FwXHRcdD0gcnR3ODlfb3BzX3N0YXJ0X2FwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMDE6XHQuc3RvcF9hcFx0XHQ9IHJ0dzg5X29wc19zdG9wX2FwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMDI6XHQuc2V0X3RpbVx0XHQ9IHJ0dzg5X29wc19zZXRfdGltLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMDM6XHQuY29uZl90eFx0XHQ9IHJ0dzg5X29wc19jb25mX3R4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMDQ6XHQuc3RhX3N0YXRlXHRcdD0gcnR3ODlfb3BzX3N0YV9zdGF0ZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDA1Olx0LnNldF9rZXlcdFx0PSBydHc4OV9vcHNfc2V0X2tleSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDA2Olx0LmFtcGR1X2FjdGlvblx0XHQ9IHJ0dzg5X29wc19hbXBkdV9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAwNzpcdC5nZXRfc3VydmV5XHRcdD0gcnR3ODlfb3BzX2dldF9zdXJ2ZXksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAwODpcdC5zZXRfcnRzX3RocmVzaG9sZFx0PSBydHc4OV9vcHNfc2V0X3J0c190aHJlc2hvbGQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAwOTpcdC5zdGFfc3RhdGlzdGljc1x0XHQ9IHJ0dzg5X29wc19zdGFfc3RhdGlzdGljcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDEwOlx0LmZsdXNoXHRcdFx0PSBydHc4OV9vcHNfZmx1c2gsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAxMTpcdC5zZXRfYml0cmF0ZV9tYXNrXHQ9IHJ0dzg5X29wc19zZXRfYml0cmF0ZV9tYXNrLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMTI6XHQuc2V0X2FudGVubmFcdFx0PSBydHc4OV9vcHNfc2V0X2FudGVubmEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAxMzpcdC5nZXRfYW50ZW5uYVx0XHQ9IHJ0dzg5X29wc19nZXRfYW50ZW5uYSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDE0Olx0LnN3X3NjYW5fc3RhcnRcdFx0PSBydHc4OV9vcHNfc3dfc2Nhbl9zdGFydCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDE1Olx0LnN3X3NjYW5fY29tcGxldGVcdD0gcnR3ODlfb3BzX3N3X3NjYW5fY29tcGxldGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAxNjpcdC5yZWNvbmZpZ19jb21wbGV0ZVx0PSBydHc4OV9vcHNfcmVjb25maWdfY29tcGxldGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAxNzpcdC5od19zY2FuXHRcdD0gcnR3ODlfb3BzX2h3X3NjYW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAxODpcdC5jYW5jZWxfaHdfc2Nhblx0XHQ9IHJ0dzg5X29wc19jYW5jZWxfaHdfc2NhbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDE5Olx0LmFkZF9jaGFuY3R4XHRcdD0gcnR3ODlfb3BzX2FkZF9jaGFuY3R4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMjA6XHQucmVtb3ZlX2NoYW5jdHhcdFx0PSBydHc4OV9vcHNfcmVtb3ZlX2NoYW5jdHgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAyMTpcdC5jaGFuZ2VfY2hhbmN0eFx0XHQ9IHJ0dzg5X29wc19jaGFuZ2VfY2hhbmN0eCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDIyOlx0LmFzc2lnbl92aWZfY2hhbmN0eFx0PSBydHc4OV9vcHNfYXNzaWduX3ZpZl9jaGFuY3R4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMjM6XHQudW5hc3NpZ25fdmlmX2NoYW5jdHhcdD0gcnR3ODlfb3BzX3VuYXNzaWduX3ZpZl9jaGFuY3R4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMjQ6XHQuc3dpdGNoX3ZpZl9jaGFuY3R4XHQ9IHJ0dzg5X29wc19zd2l0Y2hfdmlmX2NoYW5jdHgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAyNTpcdC5jaGFubmVsX3N3aXRjaF9iZWFjb25cdD0gcnR3ODlfb3BzX2NoYW5uZWxfc3dpdGNoX2JlYWNvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDI2Olx0LnJlbWFpbl9vbl9jaGFubmVsXHRcdD0gcnR3ODlfb3BzX3JlbWFpbl9vbl9jaGFubmVsLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMjc6XHQuY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsXHQ9IHJ0dzg5X29wc19jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAyODpcdC5zZXRfc2FyX3NwZWNzXHRcdD0gcnR3ODlfb3BzX3NldF9zYXJfc3BlY3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAyOTpcdC5saW5rX3N0YV9yY191cGRhdGVcdD0gcnR3ODlfb3BzX3N0YV9yY191cGRhdGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAzMDpcdC5zZXRfdGlkX2NvbmZpZ1x0XHQ9IHJ0dzg5X29wc19zZXRfdGlkX2NvbmZpZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDMxOlx0LmNhbl9hY3RpdmF0ZV9saW5rc1x0PSBydHc4OV9vcHNfY2FuX2FjdGl2YXRlX2xpbmtzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMzI6XHQuY2hhbmdlX3ZpZl9saW5rc1x0PSBydHc4OV9vcHNfY2hhbmdlX3ZpZl9saW5rcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDMzOlx0LmNoYW5nZV9zdGFfbGlua3NcdD0gcnR3ODlfb3BzX2NoYW5nZV9zdGFfbGlua3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMjAzNC0jaWZkZWYgQ09ORklHX1BNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAzNTpcdC5zdXNwZW5kXHRcdD0gcnR3ODlfb3BzX3N1c3BlbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAzNjpcdC5yZXN1bWVcdFx0XHQ9IHJ0dzg5X29wc19yZXN1bWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAzNzpcdC5zZXRfd2FrZXVwXHRcdD0gcnR3ODlfb3BzX3NldF93YWtldXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMjAzOC1cdC5zZXRfcmVrZXlfZGF0YVx0XHQ9IHJ0dzg5X3NldF9yZWtleV9kYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTIwMzktI2VuZGlmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjA0MDpcdC5yZmtpbGxfcG9sbFx0XHQ9IHJ0dzg5X29wc19yZmtpbGxfcG9sbCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0yMDQxLX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjA0MjpFWFBPUlRfU1lNQk9MKHJ0dzg5X29wcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zYXIuYz00MTI9Y29uc3Qgc3RydWN0IGNmZzgwMjExX3Nhcl9jYXBhIHJ0dzg5X3Nhcl9jYXBhID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2FyLmMtNDE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zYXIuYzo0MTg6aW50IHJ0dzg5X29wc19zZXRfc2FyX3NwZWNzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zYXIuYy00MTktXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9zYXJfc3BlY3MgKnNhcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nhci5oPTMzPWludCBydHc4OV9wcmludF90YXMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nhci5oOjM0OmludCBydHc4OV9vcHNfc2V0X3Nhcl9zcGVjcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2FyLmgtMzUtXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9zYXJfc3BlY3MgKnNhcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5ODQ1CgkJCQkJCQlvdXRwdXQ6IDI3NwoJCQkJCQkJdGhvdWdodHM6IDEyNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgUmVhbHRlayBydHc4OSBXaXJlbGVzcyBEcml2ZXIgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBGaXJzdCwgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkLiBMb29rcyBsaWtlIGBfX3J0dzg5X3dvd19wYXJzZV9ha21gIGlzIGEgbm9uLXN0YXRpYywgZXhwb3J0ZWQgZnVuY3Rpb24sIHdoaWNoIGlzIHByb21pc2luZyBmb3IgcG90ZW50aWFsIGZ1enppbmcsIGFsb25nc2lkZSB0aGUgUlggZW50cnlwb2ludCBgcnR3ODlfY29yZV9yeGAgYW5kIGBydHc4OV9jb3JlX3R4X3dyaXRlYCAob3IgYHJ0dzg5X2NvcmVfdHhfd3JpdGVfbGlua2ApIGZvciBUWCBmcmFtZXMuIFRoZXJlJiMzOTtzIGFsc28gYHJ0dzg5X29wc190eGAgaW4gYG1hYzgwMjExLmNgLCBhbmQgd2hpbGUgYHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHhgIGlzIHN0YXRpYywgaXQmIzM5O3Mgc3RpbGwgcmVsZXZhbnQgZHVlIHRvIGl0cyBpbnZvbHZlbWVudCBpbiB0aGUgdnVsbmVyYWJpbGl0eS4gRG91YmxlIGNoZWNraW5nOiBgX19ydHc4OV93b3dfcGFyc2VfYWttYCBpcyBkZWZpbmVkIGFzIGV4cGVjdGVkLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uOiBpcyB0aGlzIGZ1enphYmxlPyBUaGUgcGF0Y2ggZm9jdXNlcyBvbiBsZW5ndGggYm91bmQgY2hlY2tzIHdpdGhpbiBgcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eGAgYW5kIGBfX3J0dzg5X3dvd19wYXJzZV9ha21gIHdoZW4gY2FsbGluZyBgY2ZnODAyMTFfZmluZF9pZWAuIFdpdGhvdXQgdGhlIGZpeCwgdGhlIGBjZmc4MDIxMV9maW5kX2llYCBmdW5jdGlvbiByZWNlaXZlcyBhbiBpbmNvcnJlY3QgbGVuZ3RoIGZvciB0aGUgSUUgYnVmZmVyLCBzdGFydGluZyBhdCBvZmZzZXQgYGhkcl9sZW5gLCBsZWFkaW5nIHRvIG91dC1vZi1ib3VuZHMgcmVhZHMgb3IgZXZlbiB1bmRlcmZsb3dzLiBUaGlzIHZ1bG5lcmFiaWxpdHkgaXMgcmVhY2hhYmxlIHZpYSBSWCAoYHJ0dzg5X2NvcmVfcnhgIGNoYWluKSBhbmQgVFggKGBydHc4OV9jb3JlX3R4X3dyaXRlX2xpbmtgIGNoYWluKSBwYXRocywgd2hpY2gsIGluIHRoZSBydHc4OSBkcml2ZXIsIGNhbiBiZSBlbXVsYXRlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGVyZWZvcmUsICpXb3J0aEZ1enppbmcqIG11c3QgYmUgc2V0IHRvIGB0cnVlYC4KCk5leHQsIEkgbmVlZCB0byBlbnN1cmUgdGhlIHByb3BlciBjb25maWd1cmF0aW9ucy4gYFJUVzg5YCBpcyBhIHRyaXN0YXRlLCBkZXBlbmRpbmcgb24gYE1BQzgwMjExYCwgd2hpY2ggaXRzZWxmIGRlcGVuZHMgb24gYE5FVGAsIGBXSVJFTEVTU2AsIGFuZCBgQ0ZHODAyMTFgLiBJIGFsc28gbmVlZCBgUlRXODlfQ09SRWAsIGFuZCBlaXRoZXIgYSBVU0IgZHJpdmVyIGxpa2UgYFJUVzg5Xzg4NTJBVWAgb3IgYSBQQ0llIGRyaXZlciwgbGlrZSBgUlRXODlfUENJYCwgZGVwZW5kaW5nIG9uIHRoZSB0YXJnZXQgaGFyZHdhcmUuIFRoZSBgUE1gIGNvbmZpZ3VyYXRpb24gaXMgYWxzbyBlc3NlbnRpYWwgZm9yIGJ1aWxkaW5nIGB3b3cuY2Agd2hpY2ggaW5jbHVkZXMgYHJ0dzg5X2NvcmUtJChDT05GSUdfUE0pICYjNDM7PSB3b3cub2AuIExvb2tpbmcgYXQgYFJUVzg5Xzg4NTJBVWAsIGl0IGRlcGVuZHMgb24gYFVTQmAgYW5kIHNlbGVjdHMgYFJUVzg5X0NPUkVgIGFuZCBgUlRXODlfVVNCYC4KClNvLCB0aGUgKkVuYWJsZUNvbmZpZ3MqIHNob3VsZCBiZTogYE1BQzgwMjExYCwgYENGRzgwMjExYCwgYFJUVzg5YCwgYFJUVzg5X0NPUkVgLCBgUlRXODlfVVNCYCwgYFJUVzg5Xzg4NTJBVWAgKG9yIG9uZSBvZiB0aGUgb3RoZXJzKSwgYFJUVzg5X1BDSWAgKG9yIGFub3RoZXIgUENJZSBjb25maWcpLCBhbmQgYFBNYC4KCk5vdywgZm9yICpGb2N1c1N5bWJvbHMqLCBJJiMzOTtsbCBpbmNsdWRlIHRoZSBpZGVudGlmaWVkIHZ1bG5lcmFibGUgZnVuY3Rpb25zOiBgX19ydHc4OV93b3dfcGFyc2VfYWttYCwgYHJ0dzg5X2NvcmVfcnhgLCBhbmQgYHJ0dzg5X2NvcmVfdHhfd3JpdGVgIChvciBzaW1pbGFyKS4KCkxldCYjMzk7cyBkbyBhIGZpbmFsIHZlcmlmaWNhdGlvbiB2aWEgcGF0Y2ggZGlmZiByZXZpZXcuIEluIGBjb3JlLmNgIGZvciBgcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eGAsIHRoZSBwYXRjaCBhZGRzIGBpZiAoc2tiLSZndDtsZW4gJmx0OyBoZHJfbGVuKSByZXR1cm47YCBhbmQgY29ycmVjdHMgdGhlIGxlbmd0aCBwYXNzZWQgdG8gYGNmZzgwMjExX2ZpbmRfaWVgLiBJbiBgd293LmNgLCBgX19ydHc4OV93b3dfcGFyc2VfYWttYCByZWNlaXZlcyB0aGUgc2FtZSBmaXguIEJvdGggcGF0Y2hlcyBwcmV2ZW50IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzLgoKQWxyaWdodCwgSSYjMzk7bSBjb25maWRlbnQgaW4gdGhlIGFuYWx5c2lzLiBUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoZXNlIGZpbmRpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7UlRXODkmIzM0OywKICAgICYjMzQ7UlRXODlfQ09SRSYjMzQ7LAogICAgJiMzNDtSVFc4OV9VU0ImIzM0OywKICAgICYjMzQ7UlRXODlfODg1MkFVJiMzNDssCiAgICAmIzM0O1JUVzg5X1BDSSYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQUUmIzM0OywKICAgICYjMzQ7UE0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX3J0dzg5X3dvd19wYXJzZV9ha20mIzM0OywKICAgICYjMzQ7cnR3ODlfY29yZV9yeCYjMzQ7LAogICAgJiMzNDtydHc4OV9jb3JlX3R4X3dyaXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIG91dC1vZi1ib3VuZHMgcmVhZCB2dWxuZXJhYmlsaXRpZXMgaW4gcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eCgpIGFuZCBfX3J0dzg5X3dvd19wYXJzZV9ha20oKSBieSB2YWxpZGF0aW5nIHRoYXQgc2tiLVx1MDAzZWxlbiBpcyBhdCBsZWFzdCB0aGUgaGVhZGVyIGxlbmd0aCBhbmQgcGFzc2luZyB0aGUgYWRqdXN0ZWQgaW5mb3JtYXRpb24gZWxlbWVudCBsZW5ndGggKHNrYi1cdTAwM2VsZW4gLSBoZHJfbGVuKSB0byBjZmc4MDIxMV9maW5kX2llKCkgaW5zdGVhZCBvZiB0aGUgdW5hZGp1c3RlZCBza2ItXHUwMDNlbGVuLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBSWCBhbmQgVFggcGFja2V0IHByb2Nlc3Npbmcgb24gcnR3ODkgZGV2aWNlcyAod2hpY2ggaW5jbHVkZSBVU0Itc3VwcG9ydGVkIGRldmljZXMgdGVzdGFibGUgdmlhIFVTQiBlbXVsYXRpb24gaW4gdmlydHVhbCBlbnZpcm9ubWVudHMpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtSVFc4OSYjMzQ7LAogICAgJiMzNDtSVFc4OV9DT1JFJiMzNDssCiAgICAmIzM0O1JUVzg5X1VTQiYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQVUmIzM0OywKICAgICYjMzQ7UlRXODlfUENJJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJBRSYjMzQ7LAogICAgJiMzNDtQTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fcnR3ODlfd293X3BhcnNlX2FrbSYjMzQ7LAogICAgJiMzNDtydHc4OV9jb3JlX3J4JiMzNDssCiAgICAmIzM0O3J0dzg5X2NvcmVfdHhfd3JpdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdGllcyBpbiBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KCkgYW5kIF9fcnR3ODlfd293X3BhcnNlX2FrbSgpIGJ5IHZhbGlkYXRpbmcgdGhhdCBza2ItXHUwMDNlbGVuIGlzIGF0IGxlYXN0IHRoZSBoZWFkZXIgbGVuZ3RoIGFuZCBwYXNzaW5nIHRoZSBhZGp1c3RlZCBpbmZvcm1hdGlvbiBlbGVtZW50IGxlbmd0aCAoc2tiLVx1MDAzZWxlbiAtIGhkcl9sZW4pIHRvIGNmZzgwMjExX2ZpbmRfaWUoKSBpbnN0ZWFkIG9mIHRoZSB1bmFkanVzdGVkIHNrYi1cdTAwM2VsZW4uIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIFJYIGFuZCBUWCBwYWNrZXQgcHJvY2Vzc2luZyBvbiBydHc4OSBkZXZpY2VzICh3aGljaCBpbmNsdWRlIFVTQi1zdXBwb3J0ZWQgZGV2aWNlcyB0ZXN0YWJsZSB2aWEgVVNCIGVtdWxhdGlvbiBpbiB2aXJ0dWFsIGVudmlyb25tZW50cykuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjQzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjRtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6NDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIChPT0IpIHJlYWQgdnVsbmVyYWJpbGl0eSBpbiB0aGUgcnR3ODkgZHJpdmVyIChib3RoIGluIHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHggYW5kIF9fcnR3ODlfd293X3BhcnNlX2FrbSkuIFByZXZpb3VzbHksIHRoZSBmdWxsIHBhY2tldCBsZW5ndGggKHNrYi1cdTAwM2VsZW4pIHdhcyBwYXNzZWQgdG8gY2ZnODAyMTFfZmluZF9pZSBpbnN0ZWFkIG9mIHRoZSBsZW5ndGggb2YgdGhlIGluZm9ybWF0aW9uIGVsZW1lbnRzIChza2ItXHUwMDNlbGVuIC0gaGRyX2xlbiksIGFuZCB0aGVyZSB3YXMgbm8gY2hlY2sgdmVyaWZ5aW5nIHRoYXQgc2tiLVx1MDAzZWxlbiBcdTAwM2U9IGhkcl9sZW4uIFRoaXMgY291bGQgbGVhZCB0byByZWFkaW5nIHVwIHRvIGhkcl9sZW4gYnl0ZXMgcGFzdCB0aGUgZW5kIG9mIHRoZSBza2IgZGF0YSBidWZmZXIuXG5cbk91dC1vZi1ib3VuZHMgYnVmZmVyIHJlYWRzIGFyZSBzdGFuZGFyZCBtZW1vcnkgc2FmZXR5IGJ1Z3MgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgcmVhZCB1bmluaXRpYWxpemVkIG1lbW9yeSAoc3RhY2ssIGhlYXAsIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIG9yIGxlYWsga2VybmVsIG1lbW9yeSB0byB1c2Vyc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYzlhYmQ4NDQwOWFiMmQyNDI5OThlYTljNDRhZDA5NDU5ZTllZGQ1ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDMwIDE1OjA1OjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYwppbmRleCA2OGRhZDYwOTBmODdlLi43YjQ2NzE1ZWExMmRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYwpAQCAtMjUzMiw5ICYjNDM7MjUzMiwxMSBAQCBzdGF0aWMgdm9pZCBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKHNrYik7CiAJc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNrYi0mZ3Q7ZGF0YTsKJiM0MzsJc2l6ZV90IGhkcl9sZW4gPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUuYmVhY29uLnZhcmlhYmxlKTsKIAlzdHJ1Y3QgbGlzdF9oZWFkICpwa3RfbGlzdCA9IHJ0d2Rldi0mZ3Q7c2Nhbl9pbmZvLnBrdF9saXN0OwogCXN0cnVjdCBydHc4OV9wa3RvZmxkX2luZm8gKmluZm87CiAJY29uc3QgdTggKmllcyA9IG1nbXQtJmd0O3UuYmVhY29uLnZhcmlhYmxlLCAqc3NpZF9pZTsKJiM0MzsJc2l6ZV90IGllX2xlbjsKIAlib29sIHF1ZXVlX3dvcmsgPSBmYWxzZTsKIAogCWlmIChyeF9zdGF0dXMtJmd0O2JhbmQgIT0gTkw4MDIxMV9CQU5EXzZHSFopCkBAIC0yNTQ1LDcgJiM0MzsyNTQ3LDEyIEBAIHN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogCQlyZXR1cm47CiAJfQogCi0Jc3NpZF9pZSA9IGNmZzgwMjExX2ZpbmRfaWUoV0xBTl9FSURfU1NJRCwgaWVzLCBza2ItJmd0O2xlbik7CiYjNDM7CWlmIChza2ItJmd0O2xlbiAmbHQ7IGhkcl9sZW4pCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWllX2xlbiA9IHNrYi0mZ3Q7bGVuIC0gaGRyX2xlbjsKJiM0MzsKJiM0MzsJc3NpZF9pZSA9IGNmZzgwMjExX2ZpbmRfaWUoV0xBTl9FSURfU1NJRCwgaWVzLCBpZV9sZW4pOwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShpbmZvLCAmYW1wO3BrdF9saXN0W05MODAyMTFfQkFORF82R0haXSwgbGlzdCkgewogCQlpZiAoZXRoZXJfYWRkcl9lcXVhbChpbmZvLSZndDtic3NpZCwgbWdtdC0mZ3Q7YnNzaWQpKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYwppbmRleCA4ZGFkZDhkZjRmYzY1Li44MmI3NGRlZDY4NjMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMKQEAgLTE2LDEwICYjNDM7MTYsMTYgQEAgdm9pZCBfX3J0dzg5X3dvd19wYXJzZV9ha20oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewogCXN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilza2ItJmd0O2RhdGE7CiAJc3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9ICZhbXA7cnR3ZGV2LSZndDt3b3c7CiYjNDM7CXNpemVfdCBoZHJfbGVuID0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LCB1LmFzc29jX3JlcS52YXJpYWJsZSk7CiAJY29uc3QgdTggKnJzbiwgKmllcyA9IG1nbXQtJmd0O3UuYXNzb2NfcmVxLnZhcmlhYmxlOwogCXN0cnVjdCBydHc4OV9yc25faWUgKnJzbl9pZTsKIAotCXJzbiA9IGNmZzgwMjExX2ZpbmRfaWUoV0xBTl9FSURfUlNOLCBpZXMsIHNrYi0mZ3Q7bGVuKTsKJiM0MzsJaWYgKHNrYi0mZ3Q7bGVuICZsdDsgaGRyX2xlbikKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJcnNuID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9SU04sIGllcywKJiM0MzsJCQkgICAgICAgc2tiLSZndDtsZW4gLSBoZHJfbGVuKTsKJiM0MzsKIAlpZiAoIXJzbikKIAkJcmV0dXJuOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODc4CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMzY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaCBmb3IgUG90ZW50aWFsIE1lbW9yeSBTYWZldHkgSXNzdWVzKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaCBhbmQgZmlndXJlIG91dCBpdHMgcG90ZW50aWFsIGZvciBpbnRyb2R1Y2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gU2luY2Ugd2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhpcyBmb3IgS01TQU4sIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgYWN0dWFsbHkgdG91Y2hpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgKE5lZWRzS01TQU49dHJ1ZSkgb3IgaWYgaXQmIzM5O3MganVzdCBkZWFsaW5nIHdpdGggb3V0LW9mLWJvdW5kcyBhY2Nlc3Mgb3IgYm91bmRzIGNoZWNraW5nLCB0aGluZ3MgbGlrZSB0aGF0IChOZWVkc0tNU0FOPWZhbHNlKS4gTGV0JiMzOTtzIHNlZS4uLgoKQWxyaWdodCwgdGhlIHBhdGNoIGl0c2VsZiBtb2RpZmllcyB0d28gZnVuY3Rpb25zIHdpdGhpbiB0aGUgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXJzOiBgcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eGAgaW4gYGNvcmUuY2AgYW5kIGBfX3J0dzg5X3dvd19wYXJzZV9ha21gIGluIGB3b3cuY2AuIEZyb20gdGhlIGRpZmYsIGl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgYm90aCBnZXR0aW5nIGEgc2ltaWxhciBmaXguIEJlZm9yZSwgdGhleSB3ZXJlIHNlYXJjaGluZyBmb3IgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgdXNpbmcgYGNmZzgwMjExX2ZpbmRfaWVgIHdpdGggYHNrYi0mZ3Q7bGVuYCBhcyB0aGUgYm91bmRhcnkuIFRoZSB1cGRhdGVkIGNvZGUgbm93IGluY2x1ZGVzIGEgY2hlY2sgdG8gZW5zdXJlIGBza2ItJmd0O2xlbmAgaXMgbm90IHNtYWxsZXIgdGhhbiBgaGRyX2xlbmAsIGFuZCBpZiBzbywgaXQgZXhpdHMuIE90aGVyd2lzZSwgaXQgY2FsY3VsYXRlcyBgaWVfbGVuYCAoZXNzZW50aWFsbHkgdGhlIHZhbGlkIHBheWxvYWQgbGVuZ3RoKSBhbmQgcGFzc2VzIHRoYXQgdG8gYGNmZzgwMjExX2ZpbmRfaWVgLiBTbyBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZGluZyBhIGxlbmd0aCBjaGVjayBiZWZvcmUgc2VhcmNoaW5nIGZvciB0aGUgSUVzLgoKSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgaGRyX2xlbmAgaXMgdXNlZCBmb3IgaW4gdGhlIGNvbnRleHQgb2YgdGhlc2UgZnVuY3Rpb25zIGFuZCB3aGF0IGBpZXNgIHBvaW50cyB0by4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gb2YgYHNrYmAuIElzIGBza2JgIGFsbG9jYXRlZCBieSB0aGUga2VybmVsIGFuZCwgaWYgc28sIGlzIGl0IGluaXRpYWxpemVkIGFwcHJvcHJpYXRlbHk/IEdpdmVuIHRoYXQgdGhlIGNvZGUmIzM5O3MgY2hhbmdpbmcgZnJvbSBwb3RlbnRpYWxseSB1c2luZyB0aGUgZnVsbCBgc2tiLSZndDtsZW5gIHRvIGNhbGN1bGF0aW5nIGEgbmV3IGxlbmd0aCwgdGhpcyBpcyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlzayBpZiBgaGRyX2xlbmAgaXMgbm90IHByb3Blcmx5IGFjY291bnRlZCBmb3IuIEkmIzM5O20gZ29pbmcgdG8gbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgc3Vycm91bmRpbmcgY29udGV4dCBhbmQgZW5zdXJlIHdlJiMzOTtyZSBub3QgcmVhZGluZyBwYXN0IHRoZSBpbnRlbmRlZCBib3VuZGFyaWVzLiBUaW1lIHRvIHVzZSByZWFkLWZpbGUgb3IgZ3JlcHBlciB0byBnZXQgYSBiZXR0ZXIgcGljdHVyZSBvZiB0aGUgd2hvbGUgc2l0dWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9MjUwNT1zdGF0aWMgdm9pZCBydHc4OV9jYW5jZWxfNmdoel9wcm9iZV93b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTI1MjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzoyNTMwOnN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMjUzMS1cdFx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9MzAzOD1zdGF0aWMgdm9pZCBydHc4OV92aWZfcnhfc3RhdHNfaXRlcih2b2lkICpkYXRhLCB1OCAqbWFjLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTMwNTktXHQgICAgIGllZWU4MDIxMV9pc19wcm9iZV9yZXNwKGhkci1cdTAwM2VmcmFtZV9jb250cm9sKSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzozMDYwOlx0XHRydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KHJ0d2Rldiwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTMwNjEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwOTcKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDoKCioqRGl2aW5nIGludG8gdGhlIFJlYWx0ZWsgV2lyZWxlc3MgRHJpdmVyKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBydHc4OWAgc2VyaWVzLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuY2AsIGFyb3VuZCBsaW5lIDI1MzAuIEkmIzM5O20gZ3Vlc3NpbmcgdGhlcmUmIzM5O3Mgc29tZSBjb3JlIGZ1bmN0aW9uYWxpdHkgb3IgaW5pdGlhbGl6YXRpb24gaGFwcGVuaW5nIHRoZXJlIHRoYXQmIzM5O3MgcmVsZXZhbnQgdG8gdGhlIGlzc3VlIEkmIzM5O20gY2hhc2luZy4gU2ltdWx0YW5lb3VzbHksIEkgc2hvdWxkIHByb2JhYmx5IGdsYW5jZSBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY2AgYXJvdW5kIGxpbmUgMTYuIFRoZSAmIzM0O3dvdyYjMzQ7IGRpcmVjdG9yeSBsaWtlbHkgaGFuZGxlcyBXYWtlLW9uLVdpcmVsZXNzLCB3aGljaCBpcyBvZnRlbiBhIHBvaW50IG9mIGNvbnRlbnRpb24gYW5kIGNhbiBiZSBpbnRlcnR3aW5lZCB3aXRoIGNvcmUgcG93ZXIgbWFuYWdlbWVudCBhbmQgZXZlbnQgaGFuZGxpbmcuIEkmIzM5O2xsIG5lZWQgdG8gY29ycmVsYXRlIHRoZSB0d28sIHNlZSBob3cgdGhleSBmaXQgdG9nZXRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNTI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI1MjU6XHRcdFx0ICogc2luY2UgaWYgZHVyaW5nIHNjYW5uaW5nLCBwa3RfbGlzdCBpcyBhY2Nlc3NlZCBpbiBib3R0b20gaGFsZi5cbjI1MjY6XHRcdFx0ICovXG4yNTI3Olx0XHR9XG4yNTI4Olx0fVxuMjUyOTpcdFxuMjUzMDpcdHN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuMjUzMTpcdFx0XHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbjI1MzI6XHR7XG4yNTMzOlx0XHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKHNrYik7XG4yNTM0Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2tiLVx1MDAzZWRhdGE7XG4yNTM1Olx0XHRzaXplX3QgaGRyX2xlbiA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5iZWFjb24udmFyaWFibGUpO1xuMjUzNjpcdFx0c3RydWN0IGxpc3RfaGVhZCAqcGt0X2xpc3QgPSBydHdkZXYtXHUwMDNlc2Nhbl9pbmZvLnBrdF9saXN0O1xuMjUzNzpcdFx0c3RydWN0IHJ0dzg5X3BrdG9mbGRfaW5mbyAqaW5mbztcbjI1Mzg6XHRcdGNvbnN0IHU4ICppZXMgPSBtZ210LVx1MDAzZXUuYmVhY29uLnZhcmlhYmxlLCAqc3NpZF9pZTtcbjI1Mzk6XHRcdHNpemVfdCBpZV9sZW47XG4yNTQwOlx0XHRib29sIHF1ZXVlX3dvcmsgPSBmYWxzZTtcbjI1NDE6XHRcbjI1NDI6XHRcdGlmIChyeF9zdGF0dXMtXHUwMDNlYmFuZCAhPSBOTDgwMjExX0JBTkRfNkdIWilcbjI1NDM6XHRcdFx0cmV0dXJuO1xuMjU0NDpcdFxuMjU0NTpcdFx0aWYgKHVubGlrZWx5KCEocnR3ZGV2LVx1MDAzZWNoaXAtXHUwMDNlc3VwcG9ydF9iYW5kcyBcdTAwMjYgQklUKE5MODAyMTFfQkFORF82R0haKSkpKSB7XG4yNTQ2Olx0XHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX1VORVhQLCBcJiMzNDtpbnZhbGlkIHJ4IG9uIHVuc3VwcG9ydGVkIDYgR0h6XFxuXCYjMzQ7KTtcbjI1NDc6XHRcdFx0cmV0dXJuO1xuMjU0ODpcdFx0fVxuMjU0OTpcdFxuMjU1MDpcdFx0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIGhkcl9sZW4pXG4yNTUxOlx0XHRcdHJldHVybjtcbjI1NTI6XHRcbjI1NTM6XHRcdGllX2xlbiA9IHNrYi1cdTAwM2VsZW4gLSBoZHJfbGVuO1xuMjU1NDpcdFxuMjU1NTpcdFx0c3NpZF9pZSA9IGNmZzgwMjExX2ZpbmRfaWUoV0xBTl9FSURfU1NJRCwgaWVzLCBpZV9sZW4pO1xuMjU1NjpcdFxuMjU1NzpcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpbmZvLCBcdTAwMjZwa3RfbGlzdFtOTDgwMjExX0JBTkRfNkdIWl0sIGxpc3QpIHtcbjI1NTg6XHRcdFx0aWYgKGV0aGVyX2FkZHJfZXF1YWwoaW5mby1cdTAwM2Vic3NpZCwgbWdtdC1cdTAwM2Vic3NpZCkpIHtcbjI1NTk6XHRcdFx0XHRpbmZvLVx1MDAzZWNhbmNlbCA9IHRydWU7XG4yNTYwOlx0XHRcdFx0cXVldWVfd29yayA9IHRydWU7XG4yNTYxOlx0XHRcdFx0Y29udGludWU7XG4yNTYyOlx0XHRcdH1cbjI1NjM6XHRcbjI1NjQ6XHRcdFx0aWYgKCFzc2lkX2llIHx8IHNzaWRfaWVbMV0gIT0gaW5mby1cdTAwM2Vzc2lkX2xlbiB8fCBpbmZvLVx1MDAzZXNzaWRfbGVuID09IDApXG4yNTY1Olx0XHRcdFx0Y29udGludWU7XG4yNTY2Olx0XG4yNTY3Olx0XHRcdGlmIChtZW1jbXAoXHUwMDI2c3NpZF9pZVsyXSwgaW5mby1cdTAwM2Vzc2lkLCBpbmZvLVx1MDAzZXNzaWRfbGVuKSA9PSAwKSB7XG4yNTY4Olx0XHRcdFx0aW5mby1cdTAwM2VjYW5jZWwgPSB0cnVlO1xuMjU2OTpcdFx0XHRcdHF1ZXVlX3dvcmsgPSB0cnVlO1xuMjU3MDpcdFx0XHR9XG4yNTcxOlx0XHR9XG4yNTcyOlx0XG4yNTczOlx0XHRpZiAocXVldWVfd29yaylcbjI1NzQ6XHRcdFx0d2lwaHlfd29ya19xdWV1ZShydHdkZXYtXHUwMDNlaHctXHUwMDNld2lwaHksIFx1MDAyNnJ0d2Rldi1cdTAwM2VjYW5jZWxfNmdoel9wcm9iZV93b3JrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI5NQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIFdha2Utb24tV0xBTiBDb2RlKioKCkFscmlnaHQsIGxldCYjMzk7cyBwdWxsIHVwIHRoZSBzb3VyY2UgY29kZSBmb3IgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFJlYWx0ZWsgODAyLjExIGNoaXBzZXQgaGFuZGxlcyBXYWtlLW9uLVdMQU4gZnVuY3Rpb25hbGl0eS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGludGVyZXN0ZWQgaW4gaG93IHRoZXkmIzM5O3ZlIGltcGxlbWVudGVkIHRoZSBkcml2ZXIgaG9va3MsIHRoZSBmaWx0ZXJpbmcgbWVjaGFuaXNtcyBmb3Igc3BlY2lmaWMgZnJhbWUgdHlwZXMgKG1hZ2ljIHBhY2tldHMsIG11bHRpY2FzdCwgZXRjLiksIGFuZCB0aGUgcG93ZXIgbWFuYWdlbWVudCBzZXF1ZW5jZXMgaW52b2x2ZWQgdG8gdHJhbnNpdGlvbiB0aGUgTklDIGZyb20gYSBsb3ctcG93ZXIgc3RhdGUgYmFjayB0byBhY3RpdmUuIEkgd2FudCB0byBzZWUgaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggdGhlIGZpcm13YXJlLCBhbmQgaWYgdGhleSYjMzk7cmUgcmVseWluZyBoZWF2aWx5IG9uIGhhcmR3YXJlIG9mZmxvYWQgb3IgaWYgdGhlcmUmIzM5O3MgYSBzaWduaWZpY2FudCBhbW91bnQgb2Ygc29mdHdhcmUgaW50ZXJ2ZW50aW9uIGluIGhhbmRsaW5nIHRoZSB3YWtlLXVwIHRyaWdnZXJzLiBJIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGlzIGltcGxlbWVudGF0aW9uIGFsaWducyB3aXRoIHRoZSBBQ1BJIHNwZWNpZmljYXRpb25zLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24mIzM5O3QgaW50cm9kdWNlIHBvd2VyIGxlYWtzIHdoZW4gdGhlIGRldmljZSBpcyBzdXBwb3NlZCB0byBiZSBzbGVlcGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgYXMgdGhpcyBhcmVhIG9mdGVuIGhhcyBzdWJ0bGUgYnVncyBhbmQgcXVpcmtzLiBMZXTigJlzIGRpdmUgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxuICAgMjpcdC8qIENvcHlyaWdodChjKSAyMDE5LTIwMjIgIFJlYWx0ZWsgQ29ycG9yYXRpb25cbiAgIDM6XHQgKi9cbiAgIDQ6XHQjaW5jbHVkZSBcJiMzNDtjYW0uaFwmIzM0O1xuICAgNTpcdCNpbmNsdWRlIFwmIzM0O2NvcmUuaFwmIzM0O1xuICAgNjpcdCNpbmNsdWRlIFwmIzM0O2RlYnVnLmhcJiMzNDtcbiAgIDc6XHQjaW5jbHVkZSBcJiMzNDtmdy5oXCYjMzQ7XG4gICA4Olx0I2luY2x1ZGUgXCYjMzQ7bWFjLmhcJiMzNDtcbiAgIDk6XHQjaW5jbHVkZSBcJiMzNDtwaHkuaFwmIzM0O1xuICAxMDpcdCNpbmNsdWRlIFwmIzM0O3BzLmhcJiMzNDtcbiAgMTE6XHQjaW5jbHVkZSBcJiMzNDtyZWcuaFwmIzM0O1xuICAxMjpcdCNpbmNsdWRlIFwmIzM0O3V0aWwuaFwmIzM0O1xuICAxMzpcdCNpbmNsdWRlIFwmIzM0O3dvdy5oXCYjMzQ7XG4gIDE0Olx0XG4gIDE1Olx0dm9pZCBfX3J0dzg5X3dvd19wYXJzZV9ha20oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuICAxNjpcdHtcbiAgMTc6XHRcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilza2ItXHUwMDNlZGF0YTtcbiAgMTg6XHRcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcdTAwMjZydHdkZXYtXHUwMDNld293O1xuICAxOTpcdFx0c2l6ZV90IGhkcl9sZW4gPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUuYXNzb2NfcmVxLnZhcmlhYmxlKTtcbiAgMjA6XHRcdGNvbnN0IHU4ICpyc24sICppZXMgPSBtZ210LVx1MDAzZXUuYXNzb2NfcmVxLnZhcmlhYmxlO1xuICAyMTpcdFx0c3RydWN0IHJ0dzg5X3Jzbl9pZSAqcnNuX2llO1xuICAyMjpcdFxuICAyMzpcdFx0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIGhkcl9sZW4pXG4gIDI0Olx0XHRcdHJldHVybjtcbiAgMjU6XHRcbiAgMjY6XHRcdHJzbiA9IGNmZzgwMjExX2ZpbmRfaWUoV0xBTl9FSURfUlNOLCBpZXMsXG4gIDI3Olx0XHRcdFx0ICAgICAgIHNrYi1cdTAwM2VsZW4gLSBoZHJfbGVuKTtcbiAgMjg6XHRcbiAgMjk6XHRcdGlmICghcnNuKVxuICAzMDpcdFx0XHRyZXR1cm47XG4gIDMxOlx0XG4gIDMyOlx0XHRyc25faWUgPSAoc3RydWN0IHJ0dzg5X3Jzbl9pZSAqKXJzbjtcbiAgMzM6XHRcdHJ0d193b3ctXHUwMDNlYWttID0gcnNuX2llLVx1MDAzZWFrbV9jaXBoZXJfc3VpdGUudHlwZTtcbiAgMzQ6XHR9XG4gIDM1Olx0XG4gIDM2Olx0I2RlZmluZSBSVFc4OV9DSVBIRVJfSU5GT19ERUYoY2lwaGVyKSBcXFxuICAzNzpcdFx0e1dMQU5fQ0lQSEVSX1NVSVRFXyAjIyBjaXBoZXIsIC5md19hbGcgPSBSVFc4OV9XT1dfRldfQUxHXyAjIyBjaXBoZXIsIFxcXG4gIDM4Olx0XHQgLmxlbiA9IFdMQU5fS0VZX0xFTl8gIyMgY2lwaGVyfVxuICAzOTpcdFxuICA0MDpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfY2lwaGVyX2luZm8gcnR3ODlfY2lwaGVyX2luZm9fZGVmc1tdID0ge1xuICA0MTpcdFx0UlRXODlfQ0lQSEVSX0lORk9fREVGKFdFUDQwKSxcbiAgNDI6XHRcdFJUVzg5X0NJUEhFUl9JTkZPX0RFRihXRVAxMDQpLFxuICA0MzpcdFx0UlRXODlfQ0lQSEVSX0lORk9fREVGKFRLSVApLFxuICA0NDpcdFx0UlRXODlfQ0lQSEVSX0lORk9fREVGKENDTVApLFxuICA0NTpcdFx0UlRXODlfQ0lQSEVSX0lORk9fREVGKEdDTVApLFxuICA0NjpcdFx0UlRXODlfQ0lQSEVSX0lORk9fREVGKENDTVBfMjU2KSxcbiAgNDc6XHRcdFJUVzg5X0NJUEhFUl9JTkZPX0RFRihHQ01QXzI1NiksXG4gIDQ4Olx0XHRSVFc4OV9DSVBIRVJfSU5GT19ERUYoQUVTX0NNQUMpLFxuICA0OTpcdH07XG4gIDUwOlx0XG4gIDUxOlx0I3VuZGVmIFJUVzg5X0NJUEhFUl9JTkZPX0RFRlxuICA1MjpcdFxuICA1MzpcdHN0YXRpYyBjb25zdFxuICA1NDpcdHN0cnVjdCBydHc4OV9jaXBoZXJfaW5mbyAqcnR3ODlfY2lwaGVyX2FsZ19yZWNvZ25pemUodTMyIGNpcGhlcilcbiAgNTU6XHR7XG4gIDU2Olx0XHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2lwaGVyX2luZm8gKmNpcGhlcl9pbmZvX2RlZnM7XG4gIDU3Olx0XHRpbnQgaTtcbiAgNTg6XHRcbiAgNTk6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUocnR3ODlfY2lwaGVyX2luZm9fZGVmcyk7IGkmIzQzOyYjNDM7KSB7XG4gIDYwOlx0XHRcdGNpcGhlcl9pbmZvX2RlZnMgPSBcdTAwMjZydHc4OV9jaXBoZXJfaW5mb19kZWZzW2ldO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NjUyCgkJCQkJCQlvdXRwdXQ6IDIyMAoJCQkJCQkJdGhvdWdodHM6IDQ5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipCdWcgQW5hbHlzaXMgYW5kIEtNU0FOIEV2YWx1YXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGlkZW50aWZ5IHRoZSByb290IGNhdXNlIG9mIHRoaXMgYnVnLiBJdCBhcHBlYXJzIHdlIGhhZCBhIGNsYXNzaWMgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkuIFRoZSBwcmV2aW91cyBjb2RlLCBzcGVjaWZpY2FsbHkgdGhpcyBsaW5lOiBgc3NpZF9pZSA9IGNmZzgwMjExX2ZpbmRfaWUoV0xBTl9FSURfU1NJRCwgaWVzLCBza2ItJmd0O2xlbik7YCwgd2FzIHRoZSBjdWxwcml0LiBJdCBzZWVtcyB0aGUgYGllc2AgcG9pbnRlciB3YXMgcmVmZXJlbmNpbmcgYG1nbXQtJmd0O3UuYmVhY29uLnZhcmlhYmxlYCwgYW4gb2Zmc2V0IGZyb20gYHNrYi0mZ3Q7ZGF0YWAsIGFuZCB0aGUgbGVuZ3RoIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24sIGBza2ItJmd0O2xlbmAsIGFsbG93ZWQgYGNmZzgwMjExX2ZpbmRfaWVgIHRvIHBvdGVudGlhbGx5IHJlYWQgcGFzdCB0aGUgYWN0dWFsIGJ1ZmZlciBib3VuZGFyaWVzIG9mIGBza2ItJmd0O2RhdGFgLCBieSBhbiBhbW91bnQgZXF1YWwgdG8gYGhkcl9sZW5gLiBUaGF0JiMzOTtzIGEgZGlyZWN0IGJ1ZmZlciBvdmVyLXJlYWQgc2l0dWF0aW9uISBUaGUgYWRkZWQgY2hlY2sgZm9yIGBza2ItJmd0O2xlbiAmbHQ7IGhkcl9sZW5gIGlzIGtleSwgYXMgaXMgdGhlIHBhdGNoIHRvIHJlZHVjZSB0aGUgcmVhZCBsZW5ndGggYnkgdGhhdCB2YWx1ZS4gS0FTQU4gd291bGQgZGVmaW5pdGVseSBjYXRjaCBzb21ldGhpbmcgbGlrZSB0aGlzLgoKTmV4dCwgSSBuZWVkIHRvIGV2YWx1YXRlIHRoZSBLTVNBTiBpbXBsaWNhdGlvbnMuIFRoZSBmdW5jdGlvbnMgaW52b2x2ZSBwYXJzaW5nIDgwMi4xMSBJRXMgZnJvbSBwYWNrZXQgZGF0YSB3aXRoaW4gYW4gYHNrYmAuIFNvIHRoZSBpbXBvcnRhbnQgcGFydCBpcyBtYWtpbmcgc3VyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBnZXRzIGFsbG9jYXRlZCBvciBsZWFrZWQgdG8gdXNlciBzcGFjZSwgcmlnaHQ/CgpUaGUgZml4IGFkanVzdHMgdGhlIGxlbmd0aCB0byBiZSBwYXNzZWQgdG8gYGNmZzgwMjExX2ZpbmRfaWVgIHRvIGBza2ItJmd0O2xlbiAtIGhkcl9sZW5gIGJ1dCBvbmx5IGlmIGBza2ItJmd0O2xlbiAmZ3Q7PSBoZHJfbGVuYC4gVGhpcyBwcmV2ZW50cyB0aG9zZSBPT0IgcmVhZHMgcGFzdCB0aGUgZW5kIG9mIHRoZSBgc2tiYCBidWZmZXIuIFNpbmNlIHdlJiMzOTtyZSBqdXN0IHByZXZlbnRpbmcgYWNjZXNzIGFuZCBub3QgaW50cm9kdWNpbmcgYW55dGhpbmcgbmV3LCB0aGVyZSBhcmVuJiMzOTt0IGFueSBwb3RlbnRpYWwgbGVha3MuCgpOb3csIGNoZWNraW5nIHRoZSBLTVNBTiBydWxlczogRG9lcyB0aGUgZml4IGludHJvZHVjZSBvciBtb2RpZnkga2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlIHdoZXJlIGZpZWxkcy9wYWRkaW5nIG1pZ2h0IGJlIHVuaW5pdGlhbGl6ZWQ/IE5vLiBEb2VzIGl0IGludHJvZHVjZSBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/IE5vcGUuIERvZXMgaXQgYWxsb2NhdGUvaW5pdGlhbGl6ZSBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzPyBOZWdhdGl2ZS4gRG9lcyBpdCBpbnRyb2R1Y2UgYm91bmRzIGNoZWNrcy9sZW5ndGhzIGFsbG93aW5nIGFjY2VzcyB0byB1bmluaXRpYWxpemVkIGJ5dGVzPyBObywgaWYgYW55dGhpbmcsIGl0IHByZXZlbnRzIHRoYXQuIFRodXMsIG5vIEtNU0FOIGNvbmNlcm5zIGhlcmUuCgpUaGVyZWZvcmUsIGBOZWVkc0tNU0FOYCBpcyBkZWZpbml0ZWx5IGBmYWxzZWAuIEkmIzM5O2xsIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoYXQgZmxhZyBhbmQgY2xlYXIgdGhlIGBLTVNBTlJlYXNvbmluZ2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgKE9PQikgcmVhZCB2dWxuZXJhYmlsaXR5IGluIHRoZSBydHc4OSBkcml2ZXIgKGJvdGggaW4gcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eCBhbmQgX19ydHc4OV93b3dfcGFyc2VfYWttKS4gUHJldmlvdXNseSwgdGhlIGZ1bGwgcGFja2V0IGxlbmd0aCAoc2tiLVx1MDAzZWxlbikgd2FzIHBhc3NlZCB0byBjZmc4MDIxMV9maW5kX2llIGluc3RlYWQgb2YgdGhlIGxlbmd0aCBvZiB0aGUgaW5mb3JtYXRpb24gZWxlbWVudHMgKHNrYi1cdTAwM2VsZW4gLSBoZHJfbGVuKSwgYW5kIHRoZXJlIHdhcyBubyBjaGVjayB2ZXJpZnlpbmcgdGhhdCBza2ItXHUwMDNlbGVuIFx1MDAzZT0gaGRyX2xlbi4gVGhpcyBjb3VsZCBsZWFkIHRvIHJlYWRpbmcgdXAgdG8gaGRyX2xlbiBieXRlcyBwYXN0IHRoZSBlbmQgb2YgdGhlIHNrYiBkYXRhIGJ1ZmZlci5cblxuT3V0LW9mLWJvdW5kcyBidWZmZXIgcmVhZHMgYXJlIHN0YW5kYXJkIG1lbW9yeSBzYWZldHkgYnVncyBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciByZWFkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IChzdGFjaywgaGVhcCwgb3IgcGFnZSBhbGxvY2F0aW9ucykgb3IgbGVhayBrZXJuZWwgbWVtb3J5IHRvIHVzZXJzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyAoT09CKSByZWFkIHZ1bG5lcmFiaWxpdHkgaW4gdGhlIHJ0dzg5IGRyaXZlciAoYm90aCBpbiBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4IGFuZCBfX3J0dzg5X3dvd19wYXJzZV9ha20pLiBQcmV2aW91c2x5LCB0aGUgZnVsbCBwYWNrZXQgbGVuZ3RoIChza2ItXHUwMDNlbGVuKSB3YXMgcGFzc2VkIHRvIGNmZzgwMjExX2ZpbmRfaWUgaW5zdGVhZCBvZiB0aGUgbGVuZ3RoIG9mIHRoZSBpbmZvcm1hdGlvbiBlbGVtZW50cyAoc2tiLVx1MDAzZWxlbiAtIGhkcl9sZW4pLCBhbmQgdGhlcmUgd2FzIG5vIGNoZWNrIHZlcmlmeWluZyB0aGF0IHNrYi1cdTAwM2VsZW4gXHUwMDNlPSBoZHJfbGVuLiBUaGlzIGNvdWxkIGxlYWQgdG8gcmVhZGluZyB1cCB0byBoZHJfbGVuIGJ5dGVzIHBhc3QgdGhlIGVuZCBvZiB0aGUgc2tiIGRhdGEgYnVmZmVyLlxuXG5PdXQtb2YtYm91bmRzIGJ1ZmZlciByZWFkcyBhcmUgc3RhbmRhcmQgbWVtb3J5IHNhZmV0eSBidWdzIGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIHJlYWQgdW5pbml0aWFsaXplZCBtZW1vcnkgKHN0YWNrLCBoZWFwLCBvciBwYWdlIGFsbG9jYXRpb25zKSBvciBsZWFrIGtlcm5lbCBtZW1vcnkgdG8gdXNlcnNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjA1OjMzLjczMTY5MTEyNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MTc5NDM4NTEwNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJSVFc4OVwiLFxuICAgIFwiUlRXODlfQ09SRVwiLFxuICAgIFwiUlRXODlfVVNCXCIsXG4gICAgXCJSVFc4OV84ODUyQVVcIixcbiAgICBcIlJUVzg5X1BDSVwiLFxuICAgIFwiUlRXODlfODg1MkFFXCIsXG4gICAgXCJQTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fcnR3ODlfd293X3BhcnNlX2FrbVwiLFxuICAgIFwicnR3ODlfY29yZV9yeFwiLFxuICAgIFwicnR3ODlfY29yZV90eF93cml0ZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyAoT09CKSByZWFkIHZ1bG5lcmFiaWxpdHkgaW4gdGhlIHJ0dzg5IGRyaXZlciAoYm90aCBpbiBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4IGFuZCBfX3J0dzg5X3dvd19wYXJzZV9ha20pLiBQcmV2aW91c2x5LCB0aGUgZnVsbCBwYWNrZXQgbGVuZ3RoIChza2ItXFx1MDAzZWxlbikgd2FzIHBhc3NlZCB0byBjZmc4MDIxMV9maW5kX2llIGluc3RlYWQgb2YgdGhlIGxlbmd0aCBvZiB0aGUgaW5mb3JtYXRpb24gZWxlbWVudHMgKHNrYi1cXHUwMDNlbGVuIC0gaGRyX2xlbiksIGFuZCB0aGVyZSB3YXMgbm8gY2hlY2sgdmVyaWZ5aW5nIHRoYXQgc2tiLVxcdTAwM2VsZW4gXFx1MDAzZT0gaGRyX2xlbi4gVGhpcyBjb3VsZCBsZWFkIHRvIHJlYWRpbmcgdXAgdG8gaGRyX2xlbiBieXRlcyBwYXN0IHRoZSBlbmQgb2YgdGhlIHNrYiBkYXRhIGJ1ZmZlci5cXG5cXG5PdXQtb2YtYm91bmRzIGJ1ZmZlciByZWFkcyBhcmUgc3RhbmRhcmQgbWVtb3J5IHNhZmV0eSBidWdzIGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIHJlYWQgdW5pbml0aWFsaXplZCBtZW1vcnkgKHN0YWNrLCBoZWFwLCBvciBwYWdlIGFsbG9jYXRpb25zKSBvciBsZWFrIGtlcm5lbCBtZW1vcnkgdG8gdXNlcnNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdGllcyBpbiBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KCkgYW5kIF9fcnR3ODlfd293X3BhcnNlX2FrbSgpIGJ5IHZhbGlkYXRpbmcgdGhhdCBza2ItXFx1MDAzZWxlbiBpcyBhdCBsZWFzdCB0aGUgaGVhZGVyIGxlbmd0aCBhbmQgcGFzc2luZyB0aGUgYWRqdXN0ZWQgaW5mb3JtYXRpb24gZWxlbWVudCBsZW5ndGggKHNrYi1cXHUwMDNlbGVuIC0gaGRyX2xlbikgdG8gY2ZnODAyMTFfZmluZF9pZSgpIGluc3RlYWQgb2YgdGhlIHVuYWRqdXN0ZWQgc2tiLVxcdTAwM2VsZW4uIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIFJYIGFuZCBUWCBwYWNrZXQgcHJvY2Vzc2luZyBvbiBydHc4OSBkZXZpY2VzICh3aGljaCBpbmNsdWRlIFVTQi1zdXBwb3J0ZWQgZGV2aWNlcyB0ZXN0YWJsZSB2aWEgVVNCIGVtdWxhdGlvbiBpbiB2aXJ0dWFsIGVudmlyb25tZW50cykuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjA1OjMzLjczMTY5NTMzNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk5NjQ4NDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzlhYmQ4NDQwOWFiMmQyNDI5OThlYTljNDRhZDA5NDU5ZTllZGQ1ZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAzMCAxNTowNTozMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jXFxuaW5kZXggNjhkYWQ2MDkwZjg3ZS4uN2I0NjcxNWVhMTJkYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jXFxuQEAgLTI1MzIsOSArMjUzMiwxMSBAQCBzdGF0aWMgdm9pZCBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4ge1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKHNrYik7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilza2ItXFx1MDAzZWRhdGE7XFxuK1xcdHNpemVfdCBoZHJfbGVuID0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LCB1LmJlYWNvbi52YXJpYWJsZSk7XFxuIFxcdHN0cnVjdCBsaXN0X2hlYWQgKnBrdF9saXN0ID0gcnR3ZGV2LVxcdTAwM2VzY2FuX2luZm8ucGt0X2xpc3Q7XFxuIFxcdHN0cnVjdCBydHc4OV9wa3RvZmxkX2luZm8gKmluZm87XFxuIFxcdGNvbnN0IHU4ICppZXMgPSBtZ210LVxcdTAwM2V1LmJlYWNvbi52YXJpYWJsZSwgKnNzaWRfaWU7XFxuK1xcdHNpemVfdCBpZV9sZW47XFxuIFxcdGJvb2wgcXVldWVfd29yayA9IGZhbHNlO1xcbiBcXG4gXFx0aWYgKHJ4X3N0YXR1cy1cXHUwMDNlYmFuZCAhPSBOTDgwMjExX0JBTkRfNkdIWilcXG5AQCAtMjU0NSw3ICsyNTQ3LDEyIEBAIHN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4gXFxuLVxcdHNzaWRfaWUgPSBjZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX1NTSUQsIGllcywgc2tiLVxcdTAwM2VsZW4pO1xcbitcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyBoZHJfbGVuKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRpZV9sZW4gPSBza2ItXFx1MDAzZWxlbiAtIGhkcl9sZW47XFxuK1xcbitcXHRzc2lkX2llID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9TU0lELCBpZXMsIGllX2xlbik7XFxuIFxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGluZm8sIFxcdTAwMjZwa3RfbGlzdFtOTDgwMjExX0JBTkRfNkdIWl0sIGxpc3QpIHtcXG4gXFx0XFx0aWYgKGV0aGVyX2FkZHJfZXF1YWwoaW5mby1cXHUwMDNlYnNzaWQsIG1nbXQtXFx1MDAzZWJzc2lkKSkge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xcbmluZGV4IDhkYWRkOGRmNGZjNjUuLjgyYjc0ZGVkNjg2MzEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmNcXG5AQCAtMTYsMTAgKzE2LDE2IEBAIHZvaWQgX19ydHc4OV93b3dfcGFyc2VfYWttKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4ge1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2tiLVxcdTAwM2VkYXRhO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbitcXHRzaXplX3QgaGRyX2xlbiA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5hc3NvY19yZXEudmFyaWFibGUpO1xcbiBcXHRjb25zdCB1OCAqcnNuLCAqaWVzID0gbWdtdC1cXHUwMDNldS5hc3NvY19yZXEudmFyaWFibGU7XFxuIFxcdHN0cnVjdCBydHc4OV9yc25faWUgKnJzbl9pZTtcXG4gXFxuLVxcdHJzbiA9IGNmZzgwMjExX2ZpbmRfaWUoV0xBTl9FSURfUlNOLCBpZXMsIHNrYi1cXHUwMDNlbGVuKTtcXG4rXFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2MgaGRyX2xlbilcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0cnNuID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9SU04sIGllcyxcXG4rXFx0XFx0XFx0ICAgICAgIHNrYi1cXHUwMDNlbGVuIC0gaGRyX2xlbik7XFxuK1xcbiBcXHRpZiAoIXJzbilcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6MDU6MzQuMTMyMDI5MDk5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyMjcwMjQ1MzkyMTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiUlRXODlcIixcbiAgICBcIlJUVzg5X0NPUkVcIixcbiAgICBcIlJUVzg5X1VTQlwiLFxuICAgIFwiUlRXODlfODg1MkFVXCIsXG4gICAgXCJSVFc4OV9QQ0lcIixcbiAgICBcIlJUVzg5Xzg4NTJBRVwiLFxuICAgIFwiUE1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX3J0dzg5X3dvd19wYXJzZV9ha21cIixcbiAgICBcInJ0dzg5X2NvcmVfcnhcIixcbiAgICBcInJ0dzg5X2NvcmVfdHhfd3JpdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0aWVzIGluIHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHgoKSBhbmQgX19ydHc4OV93b3dfcGFyc2VfYWttKCkgYnkgdmFsaWRhdGluZyB0aGF0IHNrYi1cXHUwMDNlbGVuIGlzIGF0IGxlYXN0IHRoZSBoZWFkZXIgbGVuZ3RoIGFuZCBwYXNzaW5nIHRoZSBhZGp1c3RlZCBpbmZvcm1hdGlvbiBlbGVtZW50IGxlbmd0aCAoc2tiLVxcdTAwM2VsZW4gLSBoZHJfbGVuKSB0byBjZmc4MDIxMV9maW5kX2llKCkgaW5zdGVhZCBvZiB0aGUgdW5hZGp1c3RlZCBza2ItXFx1MDAzZWxlbi4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgUlggYW5kIFRYIHBhY2tldCBwcm9jZXNzaW5nIG9uIHJ0dzg5IGRldmljZXMgKHdoaWNoIGluY2x1ZGUgVVNCLXN1cHBvcnRlZCBkZXZpY2VzIHRlc3RhYmxlIHZpYSBVU0IgZW11bGF0aW9uIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzlhYmQ4NDQwOWFiMmQyNDI5OThlYTljNDRhZDA5NDU5ZTllZGQ1ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDMwIDE1OjA1OjMzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuY1xuaW5kZXggNjhkYWQ2MDkwZjg3ZS4uN2I0NjcxNWVhMTJkYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuY1xuQEAgLTI1MzIsOSArMjUzMiwxMSBAQCBzdGF0aWMgdm9pZCBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKHNrYik7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2tiLVx1MDAzZWRhdGE7XG4rXHRzaXplX3QgaGRyX2xlbiA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5iZWFjb24udmFyaWFibGUpO1xuIFx0c3RydWN0IGxpc3RfaGVhZCAqcGt0X2xpc3QgPSBydHdkZXYtXHUwMDNlc2Nhbl9pbmZvLnBrdF9saXN0O1xuIFx0c3RydWN0IHJ0dzg5X3BrdG9mbGRfaW5mbyAqaW5mbztcbiBcdGNvbnN0IHU4ICppZXMgPSBtZ210LVx1MDAzZXUuYmVhY29uLnZhcmlhYmxlLCAqc3NpZF9pZTtcbitcdHNpemVfdCBpZV9sZW47XG4gXHRib29sIHF1ZXVlX3dvcmsgPSBmYWxzZTtcbiBcbiBcdGlmIChyeF9zdGF0dXMtXHUwMDNlYmFuZCAhPSBOTDgwMjExX0JBTkRfNkdIWilcbkBAIC0yNTQ1LDcgKzI1NDcsMTIgQEAgc3RhdGljIHZvaWQgcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbi1cdHNzaWRfaWUgPSBjZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX1NTSUQsIGllcywgc2tiLVx1MDAzZWxlbik7XG4rXHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgaGRyX2xlbilcbitcdFx0cmV0dXJuO1xuK1xuK1x0aWVfbGVuID0gc2tiLVx1MDAzZWxlbiAtIGhkcl9sZW47XG4rXG4rXHRzc2lkX2llID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9TU0lELCBpZXMsIGllX2xlbik7XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGluZm8sIFx1MDAyNnBrdF9saXN0W05MODAyMTFfQkFORF82R0haXSwgbGlzdCkge1xuIFx0XHRpZiAoZXRoZXJfYWRkcl9lcXVhbChpbmZvLVx1MDAzZWJzc2lkLCBtZ210LVx1MDAzZWJzc2lkKSkge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jXG5pbmRleCA4ZGFkZDhkZjRmYzY1Li44MmI3NGRlZDY4NjMxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xuQEAgLTE2LDEwICsxNiwxNiBAQCB2b2lkIF9fcnR3ODlfd293X3BhcnNlX2FrbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNrYi1cdTAwM2VkYXRhO1xuIFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG4rXHRzaXplX3QgaGRyX2xlbiA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5hc3NvY19yZXEudmFyaWFibGUpO1xuIFx0Y29uc3QgdTggKnJzbiwgKmllcyA9IG1nbXQtXHUwMDNldS5hc3NvY19yZXEudmFyaWFibGU7XG4gXHRzdHJ1Y3QgcnR3ODlfcnNuX2llICpyc25faWU7XG4gXG4tXHRyc24gPSBjZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX1JTTiwgaWVzLCBza2ItXHUwMDNlbGVuKTtcbitcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBoZHJfbGVuKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRyc24gPSBjZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX1JTTiwgaWVzLFxuK1x0XHRcdCAgICAgICBza2ItXHUwMDNlbGVuIC0gaGRyX2xlbik7XG4rXG4gXHRpZiAoIXJzbilcbiBcdFx0cmV0dXJuO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6MDU6MzQuMTMyMDMwMzU5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjA3MzkzMzExMjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhbHRlayBSVFc4OSBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgYW5kIGltcGFjdC4gSXQgbG9va3MgbGlrZSB3ZSdyZSBkZWFsaW5nIHdpdGggbW9kaWZpY2F0aW9ucyB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2AgZGlyZWN0b3J5LCBzcGVjaWZpY2FsbHkgYGNvcmUuY2AgYW5kIGB3b3cuY2AuIFJpZ2h0IGF3YXksIEknbSB0aGlua2luZywgXCJJcyB0aGlzIGRyaXZlciBmb3IgdGhlIFJlYWx0ZWsgODAyLjExYXggZGV2aWNlcz9cIiBUaGF0J3MgdGhlIGZpcnN0IHF1ZXN0aW9uLiBJIG5lZWQgdG8gY29uZmlybSB0aGUgdGFyZ2V0ZWQgaGFyZHdhcmUuXG5cbk5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmFsIGltcGxpY2F0aW9ucy4gV2hhdCBpbnRlcmZhY2VzIGRvZXMgdGhpcyBkcml2ZXIgc3VwcG9ydD8gUENJZT8gVVNCPyBTRElPPyBUaGlzIHdpbGwgZ3JlYXRseSBhZmZlY3QgaG93IHdlIHRlc3QgaXQuIENhbiBJIHRlc3QgdGhpcyB2aXJ0dWFsbHksIG1heWJlIHdpdGggUUVNVSBvciBzeXprYWxsZXI/IE9yIGRvIEkgbmVlZCBwaHlzaWNhbCBoYXJkd2FyZSB0byBnZXQgYSBtZWFuaW5nZnVsIHRlc3Q/XG5cbkhvbGQgb24sIGJlZm9yZSBJIGdldCB0b28gZmFyLCBsZXQgbWUgY2hlY2sgdGhlIGBLY29uZmlnYCBmb3IgUlRXODkuIFRoYXQgc2hvdWxkIHF1aWNrbHkgdGVsbCBtZSB3aGF0IGJ1cyB0eXBlcyBhcmUgc3VwcG9ydGVkIGFuZCBob3cgdGhlIGRyaXZlciBpcyBjb25maWd1cmVkLiBUaGF0J2xsIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbnN0cmFpbnRzIG9mIHRoZSBjaGFuZ2VzLiBUaW1lIHRvIGZpcmUgdXAgZ3JlcHBlciBvciBqdXN0IHJlYWQgdGhvc2UgZmlsZXMgZGlyZWN0bHkuIEdvdHRhIGdldCB0aGUgYmlnIHBpY3R1cmUgZmlyc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4ODEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTowOTowMS41MjUzNDU0NTNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA5NTMzODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSVFc4OVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjI6bWVudWNvbmZpZyBSVFc4OVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDgwMi4xMWF4IHdpcmVsZXNzIGNoaXBzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc9MTE9aWYgUlRXODlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzOmNvbmZpZyBSVFc4OV9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE3OmNvbmZpZyBSVFc4OV9QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIwOmNvbmZpZyBSVFc4OV9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjEtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIzOmNvbmZpZyBSVFc4OV84ODUxQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjY6Y29uZmlnIFJUVzg5Xzg4NTJBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI3LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyOTpjb25maWcgUlRXODlfODg1MkJfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMwLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzozMjpjb25maWcgUlRXODlfODg1MkJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzMtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM1OmNvbmZpZyBSVFc4OV84ODUyQlRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzYtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM4OmNvbmZpZyBSVFc4OV84ODUyQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zOS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NDE6Y29uZmlnIFJUVzg5Xzg5MjJBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQyLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo0NDpjb25maWcgUlRXODlfODg1MUJFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQ1LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTFCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy01NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NTU6Y29uZmlnIFJUVzg5Xzg4NTFCVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy01Ni1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUxQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjY2OmNvbmZpZyBSVFc4OV84ODUyQUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNjctXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkFFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo3Nzpjb25maWcgUlRXODlfODg1MkFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTc4LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6ODg6Y29uZmlnIFJUVzg5Xzg4NTJCRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04OS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQkUgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctOTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEwMDpjb25maWcgUlRXODlfODg1MkJVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwMS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMTI6Y29uZmlnIFJUVzg5Xzg4NTJCVEVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJCRS1WVCBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEyNDpjb25maWcgUlRXODlfODg1MkNFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyNS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQ0UgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDZFKSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEzNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTM1OmNvbmZpZyBSVFc4OV84ODUyQ1VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM2LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJDVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNkUpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNDY6Y29uZmlnIFJUVzg5Xzg5MjJBRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNDctXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODkyMkFFLzg5MjJBRS1WUyBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE2MDpjb25maWcgUlRXODlfODkyMkFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2MS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4OTIyQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDcpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNzI6Y29uZmlnIFJUVzg5X0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3My1cXHRib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTc1OmNvbmZpZyBSVFc4OV9ERUJVR01TR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzYtXFx0Ym9vbCBcXFwiUmVhbHRlayBydHc4OSBkZWJ1ZyBtZXNzYWdlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxODQ6Y29uZmlnIFJUVzg5X0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTg1LVxcdGJvb2wgXFxcIlJlYWx0ZWsgcnR3ODkgZGVidWdmcyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTowOTowMi4yMzQ4ODYyODNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2ODEyNzk4NzIyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSVFc4OSBVU0IgQWRhcHRlciBJbnZlc3RpZ2F0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHJlbWluZCBteXNlbGYgb2YgdGhlIFJUVzg5IFVTQiBhZGFwdGVyIHZhcmlhbnRzIHdlJ3JlIGRlYWxpbmcgd2l0aDogYFJUVzg5Xzg4NTFCVWAsIGBSVFc4OV84ODUyQVVgLCBgUlRXODlfODg1MkJVYCwgYFJUVzg5Xzg4NTJDVWAsIGFuZCBgUlRXODlfODkyMkFVYC4gTm93LCB0aGUgaW50ZXJlc3RpbmcgcGFydDogY2FuIHdlIGVmZmVjdGl2ZWx5IHByb2JlIGFuZCBmdXp6IHRoZXNlIFVTQi1jb25uZWN0ZWQgYWRhcHRlcnMgdmlhIFVTQiBlbXVsYXRpb24gdGVjaG5pcXVlcz8gSSdtIHRoaW5raW5nIG9mIFVTQiBSYXcsIFVTQiBnYWRnZXQsIGFuZCBzeXprYWxsZXIncyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMg4oCTIHNwZWNpZmljYWxseSwgdGhlIGBzeXpfdXNiX2Nvbm5lY3RgIGNhbGwgY29tZXMgdG8gbWluZC4gXG5cblRoZSBjb3JlIHF1ZXN0aW9uIGhlcmUgaXMgd2hldGhlciB3ZSBjYW4gbGV2ZXJhZ2UgdGhlc2UgZW11bGF0aW9uIG1ldGhvZHMgKHN5emthbGxlcidzIHJhdyBVU0IgZHJpdmVyLCB2dXNiLCBkdW1teV9oY2QpIHRvIGludGVyYWN0IHdpdGggYW5kIHBvdGVudGlhbGx5IGV4cGxvaXQgdnVsbmVyYWJpbGl0aWVzIGluIHRoZXNlIHdpcmVsZXNzIGFkYXB0ZXJzLlxuXG5CdXQgYmVmb3JlIGRpdmluZyB0b28gZGVlcCBpbnRvIHRoYXQsIGxldCdzIHBpdm90IHNsaWdodGx5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGZ1bmN0aW9ucyBgcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eGAgYW5kIGBfX3J0dzg5X3dvd19wYXJzZV9ha21gIGFyZSBiZWluZyAqdXNlZCouIFNvLCBJIG5lZWQgdG8gZmluZCB0aGUgY2FsbCBzaXRlcyBmb3IgdGhvc2UuIExldCdzIHN0YXJ0IHdpdGggYSBzZWFyY2ggZm9yIHdoZXJlIHRob3NlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkLiBUaGlzIGluZm9ybWF0aW9uIHNob3VsZCBwcm92aWRlIGNvbnRleHQgZm9yIG91ciBlbXVsYXRpb24gZWZmb3J0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY2NywiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNToxMDoxMC4zNjI4Nzc3MDlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA3NzE1NjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0yNTA1PXN0YXRpYyB2b2lkIHJ0dzg5X2NhbmNlbF82Z2h6X3Byb2JlX3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0yNTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjI1MzA6c3RhdGljIHZvaWQgcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMjUzMS1cXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTMwMzg9c3RhdGljIHZvaWQgcnR3ODlfdmlmX3J4X3N0YXRzX2l0ZXIodm9pZCAqZGF0YSwgdTggKm1hYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTMwNTktXFx0ICAgICBpZWVlODAyMTFfaXNfcHJvYmVfcmVzcChoZHItXFx1MDAzZWZyYW1lX2NvbnRyb2wpKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzozMDYwOlxcdFxcdHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHgocnR3ZGV2LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTMwNjEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjEwOjEwLjk3MDYwMDExNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg5MDkwODMwNTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIGZhbWlsaWFyIHdpdGggdGhpcyB0ZWNobmljYWwgY29udGV4dDpcblxuKipJbnZlc3RpZ2F0aW5nIFdha2Utb24tV2lyZWxlc3MgRnVuY3Rpb25hbGl0eSoqXG5cbkFscmlnaHQsIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBcIndha2Utb24td2lyZWxlc3NcIiB0aGluZywgYW5kIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhlIHJlbGV2YW50IGRyaXZlcnMgYW5kIGZ1bmN0aW9uYWxpdHksIGFuZCBJIHRoaW5rIGl0J3MgdGltZSB0byByZWZpbmUgbXkgc2VhcmNoLiBJJ20gZ29pbmcgdG8gc3RhcnQgbG9va2luZyBmb3IgY29kZSB0aGF0IGludm9sdmVzIHRoaXMgYF9fcnR3ODlfd293X3BhcnNlX2FrbWAgb3IgYHJ0dzg5X3dvd19wYXJzZV9ha21gIG5hbWluZyBjb252ZW50aW9uLiBUaGlzIHNlZW1zIHRvIGJlIGEgdmVyeSBzcGVjaWZpYyBmdW5jdGlvbiBvciBtb2R1bGUgbmFtZSByZWxhdGVkIHRvIHRoZSBBS00gKEF1dGhlbnRpY2F0ZWQgS2V5IE1hbmFnZW1lbnQpIHBhcnNpbmcgd2l0aGluIHRoZSBSVFc4OSB3aXJlbGVzcyBkcml2ZXIgYW5kIHdha2Utb24td2lyZWxlc3MgZmVhdHVyZS4gSSBzdXNwZWN0IEkgbWlnaHQgZmluZCBzb21lIGltcG9ydGFudCBkZXRhaWxzIGFib3V0IGl0cyB3b3JraW5ncyBoZXJlLCBob3cgaXQgaGFuZGxlcyBzZWN1cml0eSwgYW5kIGhvdyB0aGUgd2FrZS1vbi13aXJlbGVzcyB0cmlnZ2VycyBhcmUgbWFuYWdlZC4gVGhpcyBjb3VsZCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGlzc3VlIGF0IGhhbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MDEsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNToxMTo0MC4wNjE0MzUyNTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg1MzYwNzExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X3dvd19wYXJzZV9ha21cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0xMzc3PXN0YXRpYyBpbnQgcnR3ODlfY29yZV90eF93cml0ZV9saW5rKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTEzOTctXFx0cnR3ODlfdHJhZmZpY19zdGF0c19hY2N1KHJ0d2RldiwgcnR3dmlmLCBza2IsIHRydWUsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjEzOTg6XFx0cnR3ODlfd293X3BhcnNlX2FrbShydHdkZXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMTM5OS1cXHRydHc4OV9jb3JlX3R4X3VwZGF0ZV9kZXNjX2luZm8ocnR3ZGV2LCBcXHUwMDI2dHhfcmVxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxNTp2b2lkIF9fcnR3ODlfd293X3BhcnNlX2FrbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5oPTExMj1zdGF0aWMgaW5saW5lIGJvb2wgcnR3X3dvd19oYXNfbWdkX2ZlYXR1cmVzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmgtMTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293Lmg6MTE5OnZvaWQgX19ydHc4OV93b3dfcGFyc2VfYWttKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuaC0xMjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuaD0xMjE9c3RhdGljIGlubGluZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293Lmg6MTIyOnZvaWQgcnR3ODlfd293X3BhcnNlX2FrbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuaC0xMjMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuaC0xMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuaDoxMjk6XFx0X19ydHc4OV93b3dfcGFyc2VfYWttKHJ0d2Rldiwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5oLTEzMC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5oPTEzNT1zdGF0aWMgaW5saW5lXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuaDoxMzY6dm9pZCBydHc4OV93b3dfcGFyc2VfYWttKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5oLTEzNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjExOjQwLjc0NjgxMDk4NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1NTU4NTM0ODc4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJUVzg5IFdpcmVsZXNzIERyaXZlciBWdWxuZXJhYmlsaXR5IGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBNeSBpbml0aWFsIGZvY3VzIGlzIHRvIHVuZGVyc3RhbmQgdGhlIG5hdHVyZSBvZiB0aGlzIGJ1Zywgc3BlY2lmaWNhbGx5IGluIHRoZSBjb250ZXh0IG9mIGBfX3J0dzg5X3dvd19wYXJzZV9ha21gIGFuZCBgcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eGAuIFRoZSB0ZXh0IHBvaW50cyBvdXQgYSBjcnVjaWFsIGRldGFpbCBhYm91dCBob3cgdGhlIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIGFyZSBoYW5kbGVkLiBJbiB0aGUgYHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHhgIGZ1bmN0aW9uLCB0aGUgYGllc2AgcG9pbnRlciBpcyBkZXJpdmVkIGZyb20gYG1nbXQtXHUwMDNldS5iZWFjb24udmFyaWFibGVgLCBhbmQgdGhlIGxlbmd0aCBwYXNzZWQgdG8gYGNmZzgwMjExX2ZpbmRfaWVgIHVzZWQgdG8gYmUgdGhlIHRvdGFsIGBza2ItXHUwMDNlbGVuYC4gVGhlIGxlbmd0aCBvZiB0aGUgZGF0YSBiZWluZyBzZWFyY2hlZCBpcyB0aGUgZnVsbCBTS0IgYnVmZmVyLiBIb3dldmVyLCBgaWVzYCBwb2ludHMgdG8gYSBsb2NhdGlvbiAqYWZ0ZXIqIHRoZSBtYW5hZ2VtZW50IGhlYWRlciwgZWZmZWN0aXZlbHkgbWFraW5nIHRoZSBkYXRhIHN0YXJ0IGF0IGBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUuYmVhY29uLnZhcmlhYmxlKWAuIFRoaXMgbWVhbnMgdGhhdCBgY2ZnODAyMTFfZmluZF9pZWAgd2FzIHBvdGVudGlhbGx5IHJlYWRpbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSBgc2tiLVx1MDAzZWRhdGFgIGJ5IGBoZHJfbGVuYCBieXRlcy4gVGhlIGJ1ZyBjb3VsZCByZXN1bHQgaW4gYW4gb3V0LW9mLWJvdW5kcyByZWFkIGlmIGBza2ItXHUwMDNlbGVuYCB3YXMgc21hbGxlciB0aGFuIGBoZHJfbGVuYC4gVGhlIGZpeCwgYXMgZGVzY3JpYmVkLCBpbnZvbHZlcyBjaGVja2luZyBgc2tiLVx1MDAzZWxlbiBcdTAwM2MgaGRyX2xlbmAgYW5kIHJldHVybmluZyBpZiB0cnVlLCBhcyB3ZWxsIGFzIHN1YnRyYWN0aW5nIHRoZSBoZWFkZXIgbGVuZ3RoIGZyb20gdGhlIGRhdGEgbGVuZ3RoIHNlbnQgdG8gYGNmZzgwMjExX2ZpbmRfaWVgLlxuXG5UaGUgc2FtZSBpc3N1ZSBzZWVtcyB0byBiZSBwcmVzZW50IGluIGBfX3J0dzg5X3dvd19wYXJzZV9ha21gLCB1c2luZyB0aGUgc2FtZSBmaXggc3RyYXRlZ3kuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogaXMgdGhpcyBkcml2ZXIgZnV6emFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVU/IExldCdzIGNhcmVmdWxseSBjb25zaWRlciB0aGUgY3JpdGVyaWEgZm9yIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlIGNoYW5nZXMgb25seSBpbnZvbHZlIGRvY3VtZW50YXRpb24sIGNvc21ldGljIGNoYW5nZXMsIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMsIG9yIGNvZGUgdGhhdCByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IFFFTVUgZG9lc24ndCBlbXVsYXRlLlxuXG5UaGUgY3J1Y2lhbCBwb2ludCBoZXJlIGlzIHdoZXRoZXIgdGhlIFJUVzg5IGRyaXZlciBpcyByZWFjaGFibGUgdGhyb3VnaCBVU0IgZW11bGF0aW9uLCBwYXJ0aWN1bGFybHkgdXNpbmcgYHVzYiBnYWRnZXRgIG9yIGB2dXNiYC4gSSdsbCBuZWVkIHRvIHJlc2VhcmNoIGhvdyBVU0IgcHJvYmluZyBpcyBoYW5kbGVkIGluIHRoZSBSVFc4OSBkcml2ZXIgdG8gYW5zd2VyIHRoaXMuIEkgd2lsbCBsb29rIGZvciBjYWxscyB0byBgdXNiIHByb2JlYCBpbiB0aGUgcnR3ODkgZHJpdmVyIHRvIGdldCBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjYwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjE1OjU2LjMzMjE2MzQ4NloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg2MjMwMTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVzYl9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jPTU5PU1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBydHdfODg1MWJ1X2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM6NjE6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUxYnVfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmMtNjItXFx0Lm5hbWUgPSBLQlVJTERfTU9ETkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmMtNjYtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jOjY3Om1vZHVsZV91c2JfZHJpdmVyKHJ0d184ODUxYnVfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTY4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYz03Mz1NT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgcnR3Xzg4NTJhdV9pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy03NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jOjc1OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MmF1X2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTc2LVxcdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTgwLX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYzo4MTptb2R1bGVfdXNiX2RyaXZlcihydHdfODg1MmF1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy04Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM9NzM9TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHJ0d184ODUyYnVfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmMtNzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYzo3NTpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4NTJidV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYy03Ni1cXHQubmFtZSA9IEtCVUlMRF9NT0ROQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYy04MC19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM6ODE6bW9kdWxlX3VzYl9kcml2ZXIocnR3Xzg4NTJidV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmMtODItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jPTc5PU1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBydHdfODg1MmN1X2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmM6ODE6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyY3VfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmMtODItXFx0Lm5hbWUgPSBLQlVJTERfTU9ETkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmMtODYtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jOjg3Om1vZHVsZV91c2JfZHJpdmVyKHJ0d184ODUyY3VfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTg4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYz03ND1NT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgcnR3Xzg5MjJhdV9pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy03NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jOjc2OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODkyMmF1X2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jLTc3LVxcdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jLTgxLX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYzo4Mjptb2R1bGVfdXNiX2RyaXZlcihydHdfODkyMmF1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy04My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6MTU6NTYuOTE4NDAxMjExWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0MTAzMjE1NTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgV2lyZWxlc3MgRHJpdmVyIFZ1bG5lcmFiaWxpdGllcyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIFVTQiB3aXJlbGVzcyBkcml2ZXIgc2l0dWF0aW9uLiBJdCBzZWVtcyBsaWtlIHVzaW5nIFVTQiBlbXVsYXRpb24gd2l0aCB0b29scyBsaWtlIHN5emthbGxlciwgc3BlY2lmaWNhbGx5IGl0cyBkdW1teV9oY2QvcmF3LWdhZGdldC91c2JfZnV6emVyIGNhcGFiaWxpdGllcywgaXMgYSB2aWFibGUgYXBwcm9hY2ggdG8gZW11bGF0ZSBhbmQgZnV6eiB0aGVzZSBkcml2ZXJzLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2UuXG5cbkZpcnN0LCBJIHdhbnQgdG8gdHJhY2UgaG93IHdlIHJlYWNoIGBfX3J0dzg5X3dvd19wYXJzZV9ha21gIGFuZCBgcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eGAuIExldCdzIHN0YXJ0IHdpdGggYHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHhgLiBMb29rcyBsaWtlIGl0J3MgY2FsbGVkIGZyb20gYHJ0dzg5X3ZpZl9yeF9zdGF0c19pdGVyYCwgc28gdGhhdCdzIHRoZSBuZXh0IGZ1bmN0aW9uIHRvIGluc3BlY3QuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYHJ0dzg5X3ZpZl9yeF9zdGF0c19pdGVyYCBkb2VzIGFuZCB3aGF0IGNhbGxzICppdCouIFRoaXMgd2lsbCBhbGxvdyBtZSB0byBhc3Nlc3MgdGhlIGlucHV0cyBhbmQgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gSXQncyBhbGwgYWJvdXQgZmluZGluZyB0aGUgYWNjZXNzIHBvaW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyNzcsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6MTY6MjEuMDIxNjIwMTE1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzcxODgyOTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODlfdmlmX3J4X3N0YXRzX2l0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0yNDAwPXN0YXRpYyBib29sIHJ0dzg5X2NvcmVfcnhfcHBkdV9tYXRjaChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0yNDM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjI0MzY6c3RydWN0IHJ0dzg5X3ZpZl9yeF9zdGF0c19pdGVyX2RhdGEge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTI0MzctXFx0c3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9Mjk5Nj1zdGF0aWMgdm9pZCBydHc4OV92aWZfcnhfYmNuX3N0YXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMzAzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzozMDM4OnN0YXRpYyB2b2lkIHJ0dzg5X3ZpZl9yeF9zdGF0c19pdGVyKHZvaWQgKmRhdGEsIHU4ICptYWMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMzAzOS1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zMDQwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzozMDQxOlxcdHN0cnVjdCBydHc4OV92aWZfcnhfc3RhdHNfaXRlcl9kYXRhICppdGVyX2RhdGEgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTMwNDItXFx0c3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2ID0gaXRlcl9kYXRhLVxcdTAwM2VydHdkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0zMTQwPXN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcnhfc3RhdHMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMzE0NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MzE0NTpcXHRzdHJ1Y3QgcnR3ODlfdmlmX3J4X3N0YXRzX2l0ZXJfZGF0YSBpdGVyX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMzE0Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTMxNTMtXFx0aXRlcl9kYXRhLmJzc2lkID0gZ2V0X2hkcl9ic3NpZCgoc3RydWN0IGllZWU4MDIxMV9oZHIgKilza2ItXFx1MDAzZWRhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjMxNTQ6XFx0cnR3ODlfaXRlcmF0ZV92aWZzX2JoKHJ0d2RldiwgcnR3ODlfdmlmX3J4X3N0YXRzX2l0ZXIsIFxcdTAwMjZpdGVyX2RhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTMxNTUtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNToxNjoyMS4xNTg4MTQzOTlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjkyNTIwMTAyMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqVHJhY2luZyB0aGUgQ2FsbHMgdG8gYHJ0dzg5X2NvcmVfcnhfc3RhdHNgKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgYHJ0dzg5X2NvcmVfcnhfc3RhdHNgIGlzIGJlaW5nIHVzZWQuIE15IGZpcnN0IHN0ZXAsIG5hdHVyYWxseSwgaXMgdG8gdHJhY2UgdGhvc2UgY2FsbHMuIEkgd2FudCB0byBzZWUgd2hpY2ggb3RoZXIgZnVuY3Rpb25zIG9yIG1vZHVsZXMgZGVwZW5kIG9uIHRoaXMgb25lLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIGdyYXBoIHdpbGwgZ2l2ZSBtZSBhIGdvb2Qgc2Vuc2Ugb2YgdGhlIGNvbnRleHQgYW5kIHB1cnBvc2Ugb2YgdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uLiBGcm9tIHRoZXJlLCBJIGNhbiBiZWdpbiB0byB1bnJhdmVsIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0NDgsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNToxNjo1MC40MTA4MjY5MzNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNjI2OTE2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4OV9jb3JlX3J4X3N0YXRzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9MzAzOD1zdGF0aWMgdm9pZCBydHc4OV92aWZfcnhfc3RhdHNfaXRlcih2b2lkICpkYXRhLCB1OCAqbWFjLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMzEzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzozMTQwOnN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcnhfc3RhdHMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTMxNDEtXFx0XFx0XFx0XFx0c3RydWN0IHJ0dzg5X3J4X3BoeV9wcGR1ICpwaHlfcHBkdSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTM5Nzk9c3RhdGljIHZvaWQgcnR3ODlfY29yZV9yeF90b19tYWM4MDIxMShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zOTkxLVxcdHJ0dzg5X2NvcmVfaHdfdG9fc2JhbmRfcmF0ZShyeF9zdGF0dXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjM5OTI6XFx0cnR3ODlfY29yZV9yeF9zdGF0cyhydHdkZXYsIHBoeV9wcGR1LCBkZXNjX2luZm8sIHNrYl9wcGR1KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zOTkzLVxcdHJ0dzg5X2NvcmVfdXBkYXRlX3J4X3N0YXR1c19ieV9wcGR1KHJ0d2Rldiwgcnhfc3RhdHVzLCBwaHlfcHBkdSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjE2OjUwLjUzNzEwNDQ1OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNjI4MDM0MTgzNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBSWC9UWCBQYWNrZXQgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgcnR3ODlgIGRyaXZlciBjb2RlLiBGaXJzdCwgaXQgbG9va3MgbGlrZSBgcnR3ODlfY29yZV9yeF90b19tYWM4MDIxMWAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQncyByZXNwb25zaWJsZSBmb3IgcHJvY2Vzc2luZyB0aG9zZSBpbmNvbWluZyBSWCBwYWNrZXRzIGNvbWluZyBpbiBmcm9tIHRoZSBoYXJkd2FyZSBvciB0aGUgVVNCIGludGVyZmFjZSDigJMgbWFrZXMgc2Vuc2UuIE5vdywgbGV0J3Mgc2VlLCBJIGFsc28gc2VlIHRoYXQgYF9fcnR3ODlfd293X3BhcnNlX2FrbWAgZ2V0cyBjYWxsZWQgd2hlbiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBUWCBvcGVyYXRpb24gdGhyb3VnaCBgcnR3ODlfY29yZV90eF93cml0ZV9saW5rYC4gSG1tLCB0aGF0IHNvdW5kcyBsaWtlIGl0IG1pZ2h0IHJlbGF0ZSB0byBXYWtlLW9uLVdMQU4gZnVuY3Rpb25hbGl0eS4gSXQncyB0aW1lIHRvIGRpZyBpbnRvIGBfX3J0dzg5X3dvd19wYXJzZV9ha21gIGEgbGl0dGxlIGZ1cnRoZXIsIGFuZCBJIHNob3VsZCBzdGFydCB3aXRoIGB3b3cuY2AuIExldCdzIGdldCB0aGF0IGZpbGUgb3BlbiBhbmQgcmVhZCB0aHJvdWdoIGl0IGNhcmVmdWxseTsgaXQncyB0aGUgb2J2aW91cyBuZXh0IHN0ZXAgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhpcyB3aG9sZSB0aGluZyBmaXRzIHRvZ2V0aGVyIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjAyNSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNToxOTozMy4zNDA1MjY4NTVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgyNjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcXG4gICAyOlxcdC8qIENvcHlyaWdodChjKSAyMDE5LTIwMjIgIFJlYWx0ZWsgQ29ycG9yYXRpb25cXG4gICAzOlxcdCAqL1xcbiAgIDQ6XFx0I2luY2x1ZGUgXFxcImNhbS5oXFxcIlxcbiAgIDU6XFx0I2luY2x1ZGUgXFxcImNvcmUuaFxcXCJcXG4gICA2OlxcdCNpbmNsdWRlIFxcXCJkZWJ1Zy5oXFxcIlxcbiAgIDc6XFx0I2luY2x1ZGUgXFxcImZ3LmhcXFwiXFxuICAgODpcXHQjaW5jbHVkZSBcXFwibWFjLmhcXFwiXFxuICAgOTpcXHQjaW5jbHVkZSBcXFwicGh5LmhcXFwiXFxuICAxMDpcXHQjaW5jbHVkZSBcXFwicHMuaFxcXCJcXG4gIDExOlxcdCNpbmNsdWRlIFxcXCJyZWcuaFxcXCJcXG4gIDEyOlxcdCNpbmNsdWRlIFxcXCJ1dGlsLmhcXFwiXFxuICAxMzpcXHQjaW5jbHVkZSBcXFwid293LmhcXFwiXFxuICAxNDpcXHRcXG4gIDE1OlxcdHZvaWQgX19ydHc4OV93b3dfcGFyc2VfYWttKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gIDE2OlxcdHtcXG4gIDE3OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilza2ItXFx1MDAzZWRhdGE7XFxuICAxODpcXHRcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbiAgMTk6XFx0XFx0c2l6ZV90IGhkcl9sZW4gPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUuYXNzb2NfcmVxLnZhcmlhYmxlKTtcXG4gIDIwOlxcdFxcdGNvbnN0IHU4ICpyc24sICppZXMgPSBtZ210LVxcdTAwM2V1LmFzc29jX3JlcS52YXJpYWJsZTtcXG4gIDIxOlxcdFxcdHN0cnVjdCBydHc4OV9yc25faWUgKnJzbl9pZTtcXG4gIDIyOlxcdFxcbiAgMjM6XFx0XFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2MgaGRyX2xlbilcXG4gIDI0OlxcdFxcdFxcdHJldHVybjtcXG4gIDI1OlxcdFxcbiAgMjY6XFx0XFx0cnNuID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9SU04sIGllcyxcXG4gIDI3OlxcdFxcdFxcdFxcdCAgICAgICBza2ItXFx1MDAzZWxlbiAtIGhkcl9sZW4pO1xcbiAgMjg6XFx0XFxuICAyOTpcXHRcXHRpZiAoIXJzbilcXG4gIDMwOlxcdFxcdFxcdHJldHVybjtcXG4gIDMxOlxcdFxcbiAgMzI6XFx0XFx0cnNuX2llID0gKHN0cnVjdCBydHc4OV9yc25faWUgKilyc247XFxuICAzMzpcXHRcXHRydHdfd293LVxcdTAwM2Vha20gPSByc25faWUtXFx1MDAzZWFrbV9jaXBoZXJfc3VpdGUudHlwZTtcXG4gIDM0OlxcdH1cXG4gIDM1OlxcdFxcbiAgMzY6XFx0I2RlZmluZSBSVFc4OV9DSVBIRVJfSU5GT19ERUYoY2lwaGVyKSBcXFxcXFxuICAzNzpcXHRcXHR7V0xBTl9DSVBIRVJfU1VJVEVfICMjIGNpcGhlciwgLmZ3X2FsZyA9IFJUVzg5X1dPV19GV19BTEdfICMjIGNpcGhlciwgXFxcXFxcbiAgMzg6XFx0XFx0IC5sZW4gPSBXTEFOX0tFWV9MRU5fICMjIGNpcGhlcn1cXG4gIDM5OlxcdFxcbiAgNDA6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9jaXBoZXJfaW5mbyBydHc4OV9jaXBoZXJfaW5mb19kZWZzW10gPSB7XFxuICA0MTpcXHRcXHRSVFc4OV9DSVBIRVJfSU5GT19ERUYoV0VQNDApLFxcbiAgNDI6XFx0XFx0UlRXODlfQ0lQSEVSX0lORk9fREVGKFdFUDEwNCksXFxuICA0MzpcXHRcXHRSVFc4OV9DSVBIRVJfSU5GT19ERUYoVEtJUCksXFxuICA0NDpcXHRcXHRSVFc4OV9DSVBIRVJfSU5GT19ERUYoQ0NNUCksXFxuICA0NTpcXHRcXHRSVFc4OV9DSVBIRVJfSU5GT19ERUYoR0NNUCksXFxuICA0NjpcXHRcXHRSVFc4OV9DSVBIRVJfSU5GT19ERUYoQ0NNUF8yNTYpLFxcbiAgNDc6XFx0XFx0UlRXODlfQ0lQSEVSX0lORk9fREVGKEdDTVBfMjU2KSxcXG4gIDQ4OlxcdFxcdFJUVzg5X0NJUEhFUl9JTkZPX0RFRihBRVNfQ01BQyksXFxuICA0OTpcXHR9O1xcbiAgNTA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjE5OjMzLjM0MDcxMjAzNVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MzIzNzQ4NzAwNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYGNvcmUuY2AgLSBMaW5lIDI1MzAqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIHRyb3VibGVzaG9vdC4gQmFzZWQgb24gdGhlIHN5bXB0b21zLCBJJ20gZ2V0dGluZyBhIGh1bmNoIGl0J3Mgc29tZXdoZXJlIGRlZXAgd2l0aGluIHRoZSBjb3JlLiBMZXQncyBzdGFydCB3aXRoIGBjb3JlLmNgLiBNeSBndXQgc2F5cyB0aGF0IGxpbmUgMjUzMCBtaWdodCBiZSB3aGVyZSB0aGluZ3MgYXJlIGdldHRpbmcgaGFpcnkuIEl0J3MgYSBicm9hZCBzdGFydGluZyBwb2ludCwgSSBrbm93LCBidXQgb2Z0ZW4gdGhlIGRlZXBlc3QgaXNzdWVzIGhpZGUgaW4gdGhlIGNvcmUgbGlicmFyaWVzLiBJJ2xsIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCBmdW5jdGlvbiBvciBibG9jayBpcyBsb2NhdGVkIHRoZXJlLCBzbyBJIGFtIGdvaW5nIHRvIGhhdmUgYSBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIEhvcGVmdWxseSB0aGUgaXNzdWUgaXMgb2J2aW91cyBxdWlja2x5LiBMZXQncyBzZWUgd2hhdCB0aGF0IHNlY3Rpb24gaXMgaGFuZGxpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMjY2LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNToyNjo0NS43MTU1ODQ4NzJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDczNjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI1MjUsXG4gIFwiTGluZUNvdW50XCI6IDQ1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI1MjU6XFx0XFx0XFx0ICogc2luY2UgaWYgZHVyaW5nIHNjYW5uaW5nLCBwa3RfbGlzdCBpcyBhY2Nlc3NlZCBpbiBib3R0b20gaGFsZi5cXG4yNTI2OlxcdFxcdFxcdCAqL1xcbjI1Mjc6XFx0XFx0fVxcbjI1Mjg6XFx0fVxcbjI1Mjk6XFx0XFxuMjUzMDpcXHRzdGF0aWMgdm9pZCBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4yNTMxOlxcdFxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbjI1MzI6XFx0e1xcbjI1MzM6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2IpO1xcbjI1MzQ6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNrYi1cXHUwMDNlZGF0YTtcXG4yNTM1OlxcdFxcdHNpemVfdCBoZHJfbGVuID0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LCB1LmJlYWNvbi52YXJpYWJsZSk7XFxuMjUzNjpcXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkICpwa3RfbGlzdCA9IHJ0d2Rldi1cXHUwMDNlc2Nhbl9pbmZvLnBrdF9saXN0O1xcbjI1Mzc6XFx0XFx0c3RydWN0IHJ0dzg5X3BrdG9mbGRfaW5mbyAqaW5mbztcXG4yNTM4OlxcdFxcdGNvbnN0IHU4ICppZXMgPSBtZ210LVxcdTAwM2V1LmJlYWNvbi52YXJpYWJsZSwgKnNzaWRfaWU7XFxuMjUzOTpcXHRcXHRzaXplX3QgaWVfbGVuO1xcbjI1NDA6XFx0XFx0Ym9vbCBxdWV1ZV93b3JrID0gZmFsc2U7XFxuMjU0MTpcXHRcXG4yNTQyOlxcdFxcdGlmIChyeF9zdGF0dXMtXFx1MDAzZWJhbmQgIT0gTkw4MDIxMV9CQU5EXzZHSFopXFxuMjU0MzpcXHRcXHRcXHRyZXR1cm47XFxuMjU0NDpcXHRcXG4yNTQ1OlxcdFxcdGlmICh1bmxpa2VseSghKHJ0d2Rldi1cXHUwMDNlY2hpcC1cXHUwMDNlc3VwcG9ydF9iYW5kcyBcXHUwMDI2IEJJVChOTDgwMjExX0JBTkRfNkdIWikpKSkge1xcbjI1NDY6XFx0XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfVU5FWFAsIFxcXCJpbnZhbGlkIHJ4IG9uIHVuc3VwcG9ydGVkIDYgR0h6XFxcXG5cXFwiKTtcXG4yNTQ3OlxcdFxcdFxcdHJldHVybjtcXG4yNTQ4OlxcdFxcdH1cXG4yNTQ5OlxcdFxcbjI1NTA6XFx0XFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2MgaGRyX2xlbilcXG4yNTUxOlxcdFxcdFxcdHJldHVybjtcXG4yNTUyOlxcdFxcbjI1NTM6XFx0XFx0aWVfbGVuID0gc2tiLVxcdTAwM2VsZW4gLSBoZHJfbGVuO1xcbjI1NTQ6XFx0XFxuMjU1NTpcXHRcXHRzc2lkX2llID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9TU0lELCBpZXMsIGllX2xlbik7XFxuMjU1NjpcXHRcXG4yNTU3OlxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoaW5mbywgXFx1MDAyNnBrdF9saXN0W05MODAyMTFfQkFORF82R0haXSwgbGlzdCkge1xcbjI1NTg6XFx0XFx0XFx0aWYgKGV0aGVyX2FkZHJfZXF1YWwoaW5mby1cXHUwMDNlYnNzaWQsIG1nbXQtXFx1MDAzZWJzc2lkKSkge1xcbjI1NTk6XFx0XFx0XFx0XFx0aW5mby1cXHUwMDNlY2FuY2VsID0gdHJ1ZTtcXG4yNTYwOlxcdFxcdFxcdFxcdHF1ZXVlX3dvcmsgPSB0cnVlO1xcbjI1NjE6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMjU2MjpcXHRcXHRcXHR9XFxuMjU2MzpcXHRcXG4yNTY0OlxcdFxcdFxcdGlmICghc3NpZF9pZSB8fCBzc2lkX2llWzFdICE9IGluZm8tXFx1MDAzZXNzaWRfbGVuIHx8IGluZm8tXFx1MDAzZXNzaWRfbGVuID09IDApXFxuMjU2NTpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4yNTY2OlxcdFxcbjI1Njc6XFx0XFx0XFx0aWYgKG1lbWNtcChcXHUwMDI2c3NpZF9pZVsyXSwgaW5mby1cXHUwMDNlc3NpZCwgaW5mby1cXHUwMDNlc3NpZF9sZW4pID09IDApIHtcXG4yNTY4OlxcdFxcdFxcdFxcdGluZm8tXFx1MDAzZWNhbmNlbCA9IHRydWU7XFxuMjU2OTpcXHRcXHRcXHRcXHRxdWV1ZV93b3JrID0gdHJ1ZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6MjY6NDUuNzE2MDYxNDYyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE0NjcxODI1MjM4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgRGl2ZSBmb3IgUlRXODkqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0aGlzIHNvcnRlZC4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgS2NvbmZpZyByZXF1aXJlbWVudHMgZm9yIFJUVzg5LiBUaGF0IG1lYW5zIEkgbmVlZCB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIHNvdXJjZS4gTGV0J3Mgc3RhcnQgYnkgbmF2aWdhdGluZyB0byB0aGUgcmVsZXZhbnQgZmlsZTogYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIHdoZXJlIEkgY2FuIHNlZSB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgYWxsIHRoZSBjcnVjaWFsIGNvbmZpZ3VyYXRpb25zIHRoYXQgZ292ZXJuIGhvdyB0aGlzIGRyaXZlciBiZWhhdmVzIHdpdGhpbiB0aGUga2VybmVsLiBJdOKAmXMgdGhlIHJvYWRtYXAsIHRoZSBibHVlcHJpbnQuIExldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQzMTgsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjI5OjEyLjQzNDMxNzQwNFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjgyMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDkwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcXG4gICAyOlxcdG1lbnVjb25maWcgUlRXODlcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDgwMi4xMWF4IHdpcmVsZXNzIGNoaXBzIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgbWFjODAyMTEtYmFzZWQgd2lyZWxlc3MgZHJpdmVycyB0aGF0XFxuICAgNzpcXHRcXHQgIGVuYWJsZXMgUmVhbHRlayBJRUVFIDgwMi4xMWF4IHdpcmVsZXNzIGNoaXBzZXRzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCBydHc4OS5cXG4gIDEwOlxcdFxcbiAgMTE6XFx0aWYgUlRXODlcXG4gIDEyOlxcdFxcbiAgMTM6XFx0Y29uZmlnIFJUVzg5X0NPUkVcXG4gIDE0OlxcdFxcdHRyaXN0YXRlXFxuICAxNTpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIFJUVzg5X1BDSVxcbiAgMTg6XFx0XFx0dHJpc3RhdGVcXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIFJUVzg5X1VTQlxcbiAgMjE6XFx0XFx0dHJpc3RhdGVcXG4gIDIyOlxcdFxcbiAgMjM6XFx0Y29uZmlnIFJUVzg5Xzg4NTFCXFxuICAyNDpcXHRcXHR0cmlzdGF0ZVxcbiAgMjU6XFx0XFxuICAyNjpcXHRjb25maWcgUlRXODlfODg1MkFcXG4gIDI3OlxcdFxcdHRyaXN0YXRlXFxuICAyODpcXHRcXG4gIDI5OlxcdGNvbmZpZyBSVFc4OV84ODUyQl9DT01NT05cXG4gIDMwOlxcdFxcdHRyaXN0YXRlXFxuICAzMTpcXHRcXG4gIDMyOlxcdGNvbmZpZyBSVFc4OV84ODUyQlxcbiAgMzM6XFx0XFx0dHJpc3RhdGVcXG4gIDM0OlxcdFxcbiAgMzU6XFx0Y29uZmlnIFJUVzg5Xzg4NTJCVFxcbiAgMzY6XFx0XFx0dHJpc3RhdGVcXG4gIDM3OlxcdFxcbiAgMzg6XFx0Y29uZmlnIFJUVzg5Xzg4NTJDXFxuICAzOTpcXHRcXHR0cmlzdGF0ZVxcbiAgNDA6XFx0XFxuICA0MTpcXHRjb25maWcgUlRXODlfODkyMkFcXG4gIDQyOlxcdFxcdHRyaXN0YXRlXFxuICA0MzpcXHRcXG4gIDQ0OlxcdGNvbmZpZyBSVFc4OV84ODUxQkVcXG4gIDQ1OlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTFCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4gIDQ2OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA0NzpcXHRcXHRzZWxlY3QgUlRXODlfQ09SRVxcbiAgNDg6XFx0XFx0c2VsZWN0IFJUVzg5X1BDSVxcbiAgNDk6XFx0XFx0c2VsZWN0IFJUVzg5Xzg4NTFCXFxuICA1MDpcXHRcXHRoZWxwXFxuICA1MTpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODUxQkUgY2hpcHNldFxcbiAgNTI6XFx0XFxuICA1MzpcXHRcXHQgIDgwMi4xMWF4IFBDSWUgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcbiAgNTQ6XFx0XFxuICA1NTpcXHRjb25maWcgUlRXODlfODg1MUJVXFxuICA1NjpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUxQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuICA1NzpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgNTg6XFx0XFx0c2VsZWN0IFJUVzg5X0NPUkVcXG4gIDU5OlxcdFxcdHNlbGVjdCBSVFc4OV9VU0JcXG4gIDYwOlxcdFxcdHNlbGVjdCBSVFc4OV84ODUxQlxcbiAgNjE6XFx0XFx0aGVscFxcbiAgNjI6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MUJVIGNoaXBzZXRcXG4gIDYzOlxcdFxcbiAgNjQ6XFx0XFx0ICA4MDIuMTFheCBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcbiAgNjU6XFx0XFxuICA2NjpcXHRjb25maWcgUlRXODlfODg1MkFFXFxuICA2NzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQUUgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuICA2ODpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgNjk6XFx0XFx0c2VsZWN0IFJUVzg5X0NPUkVcXG4gIDcwOlxcdFxcdHNlbGVjdCBSVFc4OV9QQ0lcXG4gIDcxOlxcdFxcdHNlbGVjdCBSVFc4OV84ODUyQVxcbiAgNzI6XFx0XFx0aGVscFxcbiAgNzM6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkFFIGNoaXBzZXRcXG4gIDc0OlxcdFxcbiAgNzU6XFx0XFx0ICA4MDIuMTFheCBQQ0llIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXG4gIDc2OlxcdFxcbiAgNzc6XFx0Y29uZmlnIFJUVzg5Xzg4NTJBVVxcbiAgNzg6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbiAgNzk6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gIDgwOlxcdFxcdHNlbGVjdCBSVFc4OV9DT1JFXFxuICA4MTpcXHRcXHRzZWxlY3QgUlRXODlfVVNCXFxuICA4MjpcXHRcXHRzZWxlY3QgUlRXODlfODg1MkFcXG4gIDgzOlxcdFxcdGhlbHBcXG4gIDg0OlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4NTJBVSBjaGlwc2V0XFxuICA4NTpcXHRcXG4gIDg2OlxcdFxcdCAgODAyLjExYXggVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXG4gIDg3OlxcdFxcbiAgODg6XFx0Y29uZmlnIFJUVzg5Xzg4NTJCRVxcbiAgODk6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbiAgOTA6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6Mjk6MTIuNDM0NDQ4NTk0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwMzgxNzYyMTg1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBydHc4OSBLY29uZmlnKipcblxuQWxyaWdodCwgc28gdGhlIHRhc2sgYXQgaGFuZCBpcyB0byBkaWcgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ2AgZmlsZS4gSSdtIGFzc3VtaW5nIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVyLCBhbmQgdGhlIEtjb25maWcgaXMgd2hlcmUgYWxsIHRoZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcyBtb2R1bGUgYXJlIGRlZmluZWQuIEtub3dpbmcgdGhpcywgbXkgbWluZCBpbW1lZGlhdGVseSBzdGFydHMgcGFyc2luZyB0aGUgaW1wbGljYXRpb25zLiBJ4oCZbSB0aGlua2luZyB3ZSdsbCBmaW5kIHRoaW5ncyBsaWtlOlxuXG4qICAgKipDaGlwc2V0IFNlbGVjdGlvbjoqKiBUaGVyZSB3aWxsIGxpa2VseSBiZSBvcHRpb25zIGZvciBkaWZmZXJlbnQgUmVhbHRlayA4MDIuMTFheCBjaGlwc2V0cyB0aGF0IHRoaXMgZHJpdmVyIHN1cHBvcnRzIChlLmcuLCBzcGVjaWZpYyBSVEw4ODUyQUUgdmFyaWFudHMpLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGBzZWxlY3RgIHN0YXRlbWVudHMgYW5kIGRlcGVuZGVuY2llcyBvbiBkZXZpY2UgSURzIG9yIG90aGVyIGhhcmR3YXJlIGZlYXR1cmVzLlxuKiAgICoqRmVhdHVyZSBGbGFnczoqKiBXZSBzaG91bGQgc2VlIG9wdGlvbnMgdG8gZW5hYmxlIG9yIGRpc2FibGUgc3BlY2lmaWMgZnVuY3Rpb25hbGl0aWVz4oCUdGhpbmdzIGxpa2UgTVUtTUlNTyBzdXBwb3J0LCBiZWFtZm9ybWluZywgZGlmZmVyZW50IHBvd2VyLXNhdmluZyBtb2RlcywgODAyLjExdyBzZWN1cml0eS4gVGhlIGNvbmZpZ3VyYXRpb24gd2lsbCBkaXJlY3RseSBhZmZlY3QgdGhlIGRyaXZlcidzIGZvb3RwcmludCBhbmQgZmVhdHVyZSBzZXQuXG4qICAgKipEZWJ1Z2dpbmcgYW5kIExvZ2dpbmc6KiogVGhlcmUgd2lsbCBiZSBvcHRpb25zIHRvIGVuYWJsZSB2YXJpb3VzIGRlYnVnZ2luZyBsZXZlbHMgb3IgbG9nZ2luZywgdmVyeSB1c2VmdWwgZm9yIGFueW9uZSB3b3JraW5nIHRvIGFuYWx5emUgdGhlIGRyaXZlci4gSeKAmWxsIGxvb2sgZm9yIGBib29sYCwgYHRyaXN0YXRlYCwgb3IgYHN0cmluZ2Agb3B0aW9ucyB3aXRoIGRlc2NyaXB0aW9ucyBvZiB0aGUgbG9nZ2luZyBsZXZlbHMgYW5kIGhvdyB0byBjb250cm9sIHRoZW0uXG4qICAgKipGaXJtd2FyZSBMb2FkaW5nOioqIFRoaXMgaXMgY3JpdGljYWwuIFRoZSBLY29uZmlnIHByb2JhYmx5IGRlZmluZXMgdGhlIGxvY2F0aW9ucyAoZS5nLiwgaW4gdGhlIGZpcm13YXJlIGRpcmVjdG9yeSkgb3IgZXZlbiB0aGUgZmlybXdhcmUgZmlsZXMgdGhlbXNlbHZlcy4gVGhlc2Ugd2lsbCBiZSBuZWNlc3NhcnkgZm9yIGEgZnVsbCByZXZpZXcuXG4qICAgKipEZXBlbmRlbmNpZXM6KiogSSdtIGV4cGVjdGluZyB0byBzZWUgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBmZWF0dXJlcyBvciBkcml2ZXJzLiBUaGlzIHdpbGwgaGVscCB1bmRlcnN0YW5kIGhvdyB0aGUgcnR3ODkgZHJpdmVyIGludGVncmF0ZXMgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgZW52aXJvbm1lbnQuIFRoaW5ncyBsaWtlIGNyeXB0b2dyYXBoaWMgbW9kdWxlcyAoZS5nLiwgYENPTkZJR19DUllQVE9gKSBvciBuZXR3b3JraW5nIGluZnJhc3RydWN0dXJlIChlLmcuLCBgQ09ORklHX05FVGApIGFyZSBwb3NzaWJpbGl0aWVzLlxuKiAgICoqRGVmYXVsdCBWYWx1ZXM6KiogSSdsbCBiZSBub3RpbmcgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBjb25maWd1cmF0aW9ucy4gVGhhdCBwcm92aWRlcyBhIHNlbnNlIG9mIHRoZSBpbnRlbmRlZCBcIm91dC1vZi10aGUtYm94XCIgZXhwZXJpZW5jZSBhbmQgY2FuIGd1aWRlIHRoZSBkaXJlY3Rpb24gb2YgdHdlYWtpbmcgYW5kIGN1c3RvbWl6YXRpb24uXG5cblNvLCBJJ20gYWxyZWFkeSBtZW50YWxseSBwcmVwYXJpbmcgdG8gc2VlIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGNvbmZpZyBmaWxlIGFuZCB0byBjb25uZWN0IHRoZSBwaWVjZXMgb2YgaW5mb3JtYXRpb24gd2l0aCB3aGF0IEkga25vdyBhYm91dCB3aXJlbGVzcyBkcml2ZXIgYXJjaGl0ZWN0dXJlcyBhbmQgdGhlIGNvbW1vbiBLY29uZmlnIGlkaW9tcy4gVGhpcyBpc27igJl0IGp1c3QgYWJvdXQgbG9va2luZyBhdCBpbmRpdmlkdWFsIG9wdGlvbnM7IGl0J3MgYWJvdXQgc2VlaW5nIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgdGhlIGRyaXZlcuKAmXMgZnVuY3Rpb25hbGl0eSBhbmQgaW50ZWdyYXRpb24gd2l0aGluIHRoZSBrZXJuZWwuIFRpbWUgdG8gZGlnIGluIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTc2MSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6MzA6NTYuMjUyMDcyOTY5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0NDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA5MSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgOTE6XFx0XFx0c2VsZWN0IFJUVzg5X0NPUkVcXG4gIDkyOlxcdFxcdHNlbGVjdCBSVFc4OV9QQ0lcXG4gIDkzOlxcdFxcdHNlbGVjdCBSVFc4OV84ODUyQlxcbiAgOTQ6XFx0XFx0c2VsZWN0IFJUVzg5Xzg4NTJCX0NPTU1PTlxcbiAgOTU6XFx0XFx0aGVscFxcbiAgOTY6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkJFIGNoaXBzZXRcXG4gIDk3OlxcdFxcbiAgOTg6XFx0XFx0ICA4MDIuMTFheCBQQ0llIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXG4gIDk5OlxcdFxcbiAxMDA6XFx0Y29uZmlnIFJUVzg5Xzg4NTJCVVxcbiAxMDE6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbiAxMDI6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gMTAzOlxcdFxcdHNlbGVjdCBSVFc4OV9DT1JFXFxuIDEwNDpcXHRcXHRzZWxlY3QgUlRXODlfVVNCXFxuIDEwNTpcXHRcXHRzZWxlY3QgUlRXODlfODg1MkJcXG4gMTA2OlxcdFxcdHNlbGVjdCBSVFc4OV84ODUyQl9DT01NT05cXG4gMTA3OlxcdFxcdGhlbHBcXG4gMTA4OlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4NTJCVSBjaGlwc2V0XFxuIDEwOTpcXHRcXG4gMTEwOlxcdFxcdCAgODAyLjExYXggVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXG4gMTExOlxcdFxcbiAxMTI6XFx0Y29uZmlnIFJUVzg5Xzg4NTJCVEVcXG4gMTEzOlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJCRS1WVCBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4gMTE0OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDExNTpcXHRcXHRzZWxlY3QgUlRXODlfQ09SRVxcbiAxMTY6XFx0XFx0c2VsZWN0IFJUVzg5X1BDSVxcbiAxMTc6XFx0XFx0c2VsZWN0IFJUVzg5Xzg4NTJCVFxcbiAxMTg6XFx0XFx0c2VsZWN0IFJUVzg5Xzg4NTJCX0NPTU1PTlxcbiAxMTk6XFx0XFx0aGVscFxcbiAxMjA6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkJFLVZUIGNoaXBzZXRcXG4gMTIxOlxcdFxcbiAxMjI6XFx0XFx0ICA4MDIuMTFheCBQQ0llIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXG4gMTIzOlxcdFxcbiAxMjQ6XFx0Y29uZmlnIFJUVzg5Xzg4NTJDRVxcbiAxMjU6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkNFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2RSkgYWRhcHRlclxcXCJcXG4gMTI2OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDEyNzpcXHRcXHRzZWxlY3QgUlRXODlfQ09SRVxcbiAxMjg6XFx0XFx0c2VsZWN0IFJUVzg5X1BDSVxcbiAxMjk6XFx0XFx0c2VsZWN0IFJUVzg5Xzg4NTJDXFxuIDEzMDpcXHRcXHRoZWxwXFxuIDEzMTpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODUyQ0UgY2hpcHNldFxcbiAxMzI6XFx0XFxuIDEzMzpcXHRcXHQgIDgwMi4xMWF4IFBDSWUgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNkUpIGFkYXB0ZXJcXG4gMTM0OlxcdFxcbiAxMzU6XFx0Y29uZmlnIFJUVzg5Xzg4NTJDVVxcbiAxMzY6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkNVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2RSkgYWRhcHRlclxcXCJcXG4gMTM3OlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuIDEzODpcXHRcXHRzZWxlY3QgUlRXODlfQ09SRVxcbiAxMzk6XFx0XFx0c2VsZWN0IFJUVzg5X1VTQlxcbiAxNDA6XFx0XFx0c2VsZWN0IFJUVzg5Xzg4NTJDXFxuIDE0MTpcXHRcXHRoZWxwXFxuIDE0MjpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODUyQ1UgY2hpcHNldFxcbiAxNDM6XFx0XFxuIDE0NDpcXHRcXHQgIDgwMi4xMWF4IFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2RSkgYWRhcHRlclxcbiAxNDU6XFx0XFxuIDE0NjpcXHRjb25maWcgUlRXODlfODkyMkFFXFxuIDE0NzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4OTIyQUUvODkyMkFFLVZTIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA3KSBhZGFwdGVyXFxcIlxcbiAxNDg6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gMTQ5OlxcdFxcdHNlbGVjdCBSVFc4OV9DT1JFXFxuIDE1MDpcXHRcXHRzZWxlY3QgUlRXODlfUENJXFxuIDE1MTpcXHRcXHRzZWxlY3QgUlRXODlfODkyMkFcXG4gMTUyOlxcdFxcdGhlbHBcXG4gMTUzOlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg5MjJBRS84OTIyQUUtVlMgY2hpcHNldFxcbiAxNTQ6XFx0XFxuIDE1NTpcXHRcXHQgIDgwMi4xMWJlIFBDSWUgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclxcbiAxNTY6XFx0XFx0ICBzdXBwb3J0aW5nIDJ4MiAyR0h6LzVHSHovNkdIeiA0MDk2LVFBTSAxNjBNSHogY2hhbm5lbHMuXFxuIDE1NzpcXHRcXG4gMTU4OlxcdFxcdCAgVGhlIHZhcmlhbnQgODkyMkFFLVZTIGhhcyB0aGUgc2FtZSBmZWF0dXJlcyBleGNlcHQgMTAyNC1RQU0uXFxuIDE1OTpcXHRcXG4gMTYwOlxcdGNvbmZpZyBSVFc4OV84OTIyQVVcXG4gMTYxOlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg5MjJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclxcXCJcXG4gMTYyOlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuIDE2MzpcXHRcXHRzZWxlY3QgUlRXODlfQ09SRVxcbiAxNjQ6XFx0XFx0c2VsZWN0IFJUVzg5X1VTQlxcbiAxNjU6XFx0XFx0c2VsZWN0IFJUVzg5Xzg5MjJBXFxuIDE2NjpcXHRcXHRoZWxwXFxuIDE2NzpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4OTIyQVUgY2hpcHNldFxcbiAxNjg6XFx0XFxuIDE2OTpcXHRcXHQgIDgwMi4xMWJlIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA3KSBhZGFwdGVyXFxuIDE3MDpcXHRcXHQgIHN1cHBvcnRpbmcgMngyIDJHSHovNUdIei82R0h6IDQwOTYtUUFNIDE2ME1IeiBjaGFubmVscy5cXG4gMTcxOlxcdFxcbiAxNzI6XFx0Y29uZmlnIFJUVzg5X0RFQlVHXFxuIDE3MzpcXHRcXHRib29sXFxuIDE3NDpcXHRcXG4gMTc1OlxcdGNvbmZpZyBSVFc4OV9ERUJVR01TR1xcbiAxNzY6XFx0XFx0Ym9vbCBcXFwiUmVhbHRlayBydHc4OSBkZWJ1ZyBtZXNzYWdlIHN1cHBvcnRcXFwiXFxuIDE3NzpcXHRcXHRkZXBlbmRzIG9uIFJUVzg5X0NPUkVcXG4gMTc4OlxcdFxcdHNlbGVjdCBSVFc4OV9ERUJVR1xcbiAxNzk6XFx0XFx0aGVscFxcbiAxODA6XFx0XFx0ICBFbmFibGUgZGVidWcgbWVzc2FnZSBzdXBwb3J0XFxuIDE4MTpcXHRcXG4gMTgyOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBzaW1wbGlmeSBkZWJ1ZyBwcm9ibGVtc1xcbiAxODM6XFx0XFxuIDE4NDpcXHRjb25maWcgUlRXODlfREVCVUdGU1xcbiAxODU6XFx0XFx0Ym9vbCBcXFwiUmVhbHRlayBydHc4OSBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuIDE4NjpcXHRcXHRkZXBlbmRzIG9uIFJUVzg5X0NPUkUgXFx1MDAyNlxcdTAwMjYgQ0ZHODAyMTFfREVCVUdGU1xcbiAxODc6XFx0XFx0c2VsZWN0IFJUVzg5X0RFQlVHXFxuIDE4ODpcXHRcXHRoZWxwXFxuIDE4OTpcXHRcXHQgIEVuYWJsZSBkZWJ1Z2ZzIHN1cHBvcnRcXG4gMTkwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTozMDo1Ni4yNTIxNDg4NDlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTAwMTg3MzcwNjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIEJ1aWxkIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYGNvcmUub2AgYW5kIGB3b3cub2AgYXJlIGdldHRpbmcgYnVpbHQuIEknbSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBgTWFrZWZpbGVgLiBUaGF0J3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc2VlIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbXBpbGF0aW9uIHN0ZXBzIGludm9sdmVkLiBJdCdsbCBnaXZlIG1lIHRoZSBjbGVhcmVzdCBwaWN0dXJlIG9mIGhvdyB0aGVzZSBvYmplY3QgZmlsZXMgYXJlIGdlbmVyYXRlZCwgd2hpY2ggaXMgY3J1Y2lhbCBmb3IgWyoqaW5zZXJ0IHlvdXIgcmVsZXZhbnQgZmllbGQsIGUuZy4sIGRlYnVnZ2luZyBhIGJ1aWxkIGlzc3VlLCBvcHRpbWl6aW5nIGNvbXBpbGF0aW9uLCB1bmRlcnN0YW5kaW5nIHRoZSBidWlsZCBwaXBlbGluZSwgbW9kaWZ5aW5nIHRoZSBidWlsZCoqXS4gTG9va2luZyBhdCB0aGUgYE1ha2VmaWxlYCB3aWxsIHF1aWNrbHkgdGVsbCBtZSB0aGUgY29tcGlsZXIgZmxhZ3MsIGluY2x1ZGUgcGF0aHMsIHNvdXJjZSBmaWxlcywgYW5kIGFueSBsaW5raW5nIHN0ZXBzLiBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGV4YWN0IHJ1bGVzIHJlc3BvbnNpYmxlIGZvciBjb21waWxpbmcgdGhvc2Ugc3BlY2lmaWMgb2JqZWN0IGZpbGVzLiBUaGF0J3MgbXkgc3RhcnRpbmcgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3OTkxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTozMjozNi40Mzk1MjI5ODRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwODk0ODgzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3b3dcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlPTQ9cnR3ODlfY29yZS15ICs9IGNvcmUubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MjM6cnR3ODlfY29yZS0kKENPTkZJR19QTSkgKz0gd293Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTI0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTozMjozNy4yNDg0NzkwM1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyOTA1NjQ2MDk1MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFsdGVrIHJ0dzg5IFdpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uIGFuZCBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBidWlsZCBjb25maWd1cmF0aW9uLiBJIHNlZSBgcnR3ODlfY29yZS15ICs9IGNvcmUub2AgYW5kIGFsc28gYHJ0dzg5X2NvcmUtJChDT05GSUdfUE0pICs9IHdvdy5vYC4gIFRoYXQgbWVhbnMgdGhlIGNvcmUgbW9kdWxlIGlzIGFsd2F5cyBpbmNsdWRlZCwgYW5kIGB3b3cub2AgKFdha2Utb24tV0xBTj8pIGlzIG9ubHkgaW5jbHVkZWQgaWYgcG93ZXIgbWFuYWdlbWVudCBpcyBlbmFibGVkLiBgUlRXODlfQ09SRWAgaXMgdGhlIGNvcmUsIGFuZCBpdCdzIGJlaW5nIHNlbGVjdGVkIGJ5IGEgYnVuY2ggb2YgZHJpdmVycyAtIGA4ODUyQVVgLCBgODg1MkNVYCwgdGhlIHVzdWFsIHN1c3BlY3RzLlxuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyB3aG9sZSB0aGluZyBpcyBjb25maWd1cmVkLiBUbyBzdGF0aWNhbGx5IGJ1aWxkIHRoaXMgZHJpdmVyLCBJIG5lZWQgYSBmZXcgdGhpbmdzOiBgTUFDODAyMTFgLCBvYnZpb3VzbHksIGBSVFc4OWAsIGBSVFc4OV9DT1JFYCAtIHRoYXQncyB0aGUgYmFzZS4gVGhlbiBlaXRoZXIgYFJUVzg5X1BDSWAgKm9yKiBgUlRXODlfVVNCYCwgZGVwZW5kaW5nIG9uIHRoZSBoYXJkd2FyZSwgYW5kIG9uZSBvZiB0aG9zZSBzcGVjaWZpYyBkZXZpY2UgZHJpdmVycyBsaWtlIGBSVFc4OV84ODUyQVVgLiBBbmQsIG9mIGNvdXJzZSwgYFBNYCBpZiBJIHdhbnQgdGhhdCBgd293Lm9gIG1vZHVsZS4gIEdvdCBpdC5cblxuTm93LCBsZXQncyBzd2l0Y2ggZ2VhcnMgYW5kIGZvY3VzIG9uIHRoZSBjb2RlIGNoYW5nZXMgaW4gdGhpcyBwYXRjaC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGltcGFjdCBvZiB0aGlzIGBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4YCBmdW5jdGlvbi4gTGV0J3Mgc2VlLi4uIGxvb2tpbmcgYXQgdGhlIHBhdGNoLCBpdCdzIGRlZmluZWQgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jYC4gQWgsIGl0J3MgYSBgc3RhdGljYCBoZWxwZXIgZnVuY3Rpb24uIFNvLCBpdCdzIG5vdCBkaXJlY3RseSBleHBvc2VkIGFzIGFuIGVudHJ5IHBvaW50LiBUaGF0J3MgZ29vZCB0byBrbm93LCBidXQgSSBzdGlsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuXG5cbkxldCBtZSB0cmFjZSB0aGUgY2FsbHMuIEl0J3MgY2FsbGVkIGJ5IGBydHc4OV92aWZfcnhfc3RhdHNfaXRlcmAsIHdoaWNoIGlzIGNhbGxlZCBieSBgcnR3ODlfY29yZV9yeF9zdGF0c2AsIHdoaWNoLCBpbiB0dXJuLCBpcyBjYWxsZWQgYnkgYHJ0dzg5X2NvcmVfcnhfdG9fbWFjODAyMTFgLCBhbmQgdWx0aW1hdGVseSwgYHJ0dzg5X2NvcmVfcnhgLiBUaGF0J3MgdGhlIGNyaXRpY2FsIFJYIHBhdGguXG5cbk9rYXksIGxldCBtZSBxdWlja2x5IGdsYW5jZSBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmhgIGFuZCBgY29yZS5jYCBmb3IgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gcmVjZWl2ZSwgb3IgYW55IGNoYW5nZXMgdGhhdCBjb3VsZCBiZSByZWxldmFudCB0byBob3cgdGhpcyBtb2R1bGUgaW50ZXJhY3RzIHdpdGggdGhlIGNvcmUgd2lyZWxlc3MgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgzNDEsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6Mzc6MjcuODEzMDkyODMzWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDQ5ODgzNTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODlfY29yZV9yeFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTE5MDA9RVhQT1JUX1NZTUJPTChydHc4OV9jb3JlX2ZpbGxfdHhkZXNjX2Z3Y21kX3YyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0xOTAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjE5MDI6c3RhdGljIGludCBydHc4OV9jb3JlX3J4X3Byb2Nlc3NfbWFjX3BwZHUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTE5MDMtXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9MTk3OT1zdGF0aWMgdTggcnR3ODlfZ2V0X2RhdGFfcmF0ZV9uc3Moc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MTYgZGF0YV9yYXRlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMTk5OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzoxOTk5OnN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcnhfcHJvY2Vzc19waHlfcHBkdV9pdGVyKHZvaWQgKmRhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMjAwMC1cXHRcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9MjIzMT1zdGF0aWMgdm9pZCBydHc4OV9jb3JlX3VwZGF0ZV9waHlfcHBkdShzdHJ1Y3QgcnR3ODlfcnhfcGh5X3BwZHUgKnBoeV9wcGR1KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMjI0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzoyMjQ4OnN0YXRpYyBpbnQgcnR3ODlfY29yZV9yeF9wcm9jZXNzX3BoeV9wcGR1KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0yMjQ5LVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHJ0dzg5X3J4X3BoeV9wcGR1ICpwaHlfcHBkdSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTIyNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MjI3MzpzdGF0aWMgaW50IHJ0dzg5X2NvcmVfcnhfcGFyc2VfcGh5X3N0cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMjI3NC1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHJ0dzg5X3J4X3BoeV9wcGR1ICpwaHlfcHBkdSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTIzMjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MjMyMjpzdGF0aWMgdm9pZCBydHc4OV9jb3JlX3J4X3Byb2Nlc3NfcGh5X3N0cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMjMyMy1cXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBydHc4OV9yeF9waHlfcHBkdSAqcGh5X3BwZHUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0yMzI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjIzMjc6XFx0cmV0ID0gcnR3ODlfY29yZV9yeF9wYXJzZV9waHlfc3RzKHJ0d2RldiwgcGh5X3BwZHUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTIzMjgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTIzMzMtXFx0aWVlZTgwMjExX2l0ZXJhdGVfc3RhdGlvbnNfYXRvbWljKHJ0d2Rldi1cXHUwMDNlaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MjMzNDpcXHRcXHRcXHRcXHRcXHQgIHJ0dzg5X2NvcmVfcnhfcHJvY2Vzc19waHlfcHBkdV9pdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTIzMzUtXFx0XFx0XFx0XFx0XFx0ICBwaHlfcHBkdSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0yMzkxPWJvb2wgcnR3ODlfY2hlY2tfcnhfc3RhdHVfZ2lfbWF0Y2goc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cywgdTggZ2lfbHRmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMjM5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzoyNDAwOnN0YXRpYyBib29sIHJ0dzg5X2NvcmVfcnhfcHBkdV9tYXRjaChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMjQwMS1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBydHc4OV9yeF9kZXNjX2luZm8gKmRlc2NfaW5mbyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTMwMzg9c3RhdGljIHZvaWQgcnR3ODlfdmlmX3J4X3N0YXRzX2l0ZXIodm9pZCAqZGF0YSwgdTggKm1hYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTMxMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MzE0MDpzdGF0aWMgdm9pZCBydHc4OV9jb3JlX3J4X3N0YXRzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zMTQxLVxcdFxcdFxcdFxcdHN0cnVjdCBydHc4OV9yeF9waHlfcHBkdSAqcGh5X3BwZHUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0zOTEzPXN0YXRpYyBib29sIHJ0dzg5X2NvcmVfc2tiX3BuX3ZhbGlkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTM5NzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6Mzk3OTpzdGF0aWMgdm9pZCBydHc4OV9jb3JlX3J4X3RvX21hYzgwMjExKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zOTgwLVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBydHc4OV9yeF9waHlfcHBkdSAqcGh5X3BwZHUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zOTkxLVxcdHJ0dzg5X2NvcmVfaHdfdG9fc2JhbmRfcmF0ZShyeF9zdGF0dXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjM5OTI6XFx0cnR3ODlfY29yZV9yeF9zdGF0cyhydHdkZXYsIHBoeV9wcGR1LCBkZXNjX2luZm8sIHNrYl9wcGR1KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zOTkzLVxcdHJ0dzg5X2NvcmVfdXBkYXRlX3J4X3N0YXR1c19ieV9wcGR1KHJ0d2Rldiwgcnhfc3RhdHVzLCBwaHlfcHBkdSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQwMDY6c3RhdGljIHZvaWQgcnR3ODlfY29yZV9yeF9wZW5kaW5nX3NrYihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDAwNy1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgcnR3ODlfcnhfcGh5X3BwZHUgKnBoeV9wcGR1LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDAyMS1cXHRcXHRyeF9zdGF0dXMgPSBJRUVFODAyMTFfU0tCX1JYQ0Ioc2tiX3BwZHUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQwMjI6XFx0XFx0aWYgKHJ0dzg5X2NvcmVfcnhfcHBkdV9tYXRjaChydHdkZXYsIGRlc2NfaW5mbywgcnhfc3RhdHVzKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDIzLVxcdFxcdFxcdHJ0dzg5X2NoaXBfcXVlcnlfcHBkdShydHdkZXYsIHBoeV9wcGR1LCByeF9zdGF0dXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQwMjQtXFx0XFx0cnR3ODlfY29ycmVjdF9jY2tfY2hhbihydHdkZXYsIHJ4X3N0YXR1cyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDAyNTpcXHRcXHRydHc4OV9jb3JlX3J4X3RvX21hYzgwMjExKHJ0d2RldiwgcGh5X3BwZHUsIGRlc2NfaW5mbywgc2tiX3BwZHUsIHJ4X3N0YXR1cyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDAyNi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQwMjk6c3RhdGljIHZvaWQgcnR3ODlfY29yZV9yeF9wcm9jZXNzX3BwZHVfc3RzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDMwLVxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBydHc4OV9yeF9kZXNjX2luZm8gKmRlc2NfaW5mbyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQwNDEtXFx0aWYgKGRlc2NfaW5mby1cXHUwMDNlbWFjX2luZm9fdmFsaWQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo0MDQyOlxcdFxcdHJldCA9IHJ0dzg5X2NvcmVfcnhfcHJvY2Vzc19tYWNfcHBkdShydHdkZXYsIHNrYiwgXFx1MDAyNnBoeV9wcGR1KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDQzLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDQ2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQwNDc6XFx0cmV0ID0gcnR3ODlfY29yZV9yeF9wcm9jZXNzX3BoeV9wcGR1KHJ0d2RldiwgXFx1MDAyNnBoeV9wcGR1KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDQ4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQwNTE6XFx0cnR3ODlfY29yZV9yeF9wcm9jZXNzX3BoeV9zdHMocnR3ZGV2LCBcXHUwMDI2cGh5X3BwZHUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQwNTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDA1My1vdXQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDA1NDpcXHRydHc4OV9jb3JlX3J4X3BlbmRpbmdfc2tiKHJ0d2RldiwgXFx1MDAyNnBoeV9wcGR1LCBkZXNjX2luZm8sIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDA1NS1cXHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDA1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo0MDU4OnN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcnhfcHJvY2Vzc19yZXBvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQwNTktXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBydHc4OV9yeF9kZXNjX2luZm8gKmRlc2NfaW5mbyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQwNjYtXFx0Y2FzZSBSVFc4OV9DT1JFX1JYX1RZUEVfUFBEVV9TVEFUOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQwNjc6XFx0XFx0cnR3ODlfY29yZV9yeF9wcm9jZXNzX3BwZHVfc3RzKHJ0d2RldiwgZGVzY19pbmZvLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQwNjgtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz00NDQ3PXN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfZmx1c2hfcHBkdV9yeF9xdWV1ZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00NDU3LVxcdFxcdHJ4X3N0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2JfcHBkdSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDQ1ODpcXHRcXHRydHc4OV9jb3JlX3J4X3RvX21hYzgwMjExKHJ0d2RldiwgTlVMTCwgZGVzY19pbmZvLCBza2JfcHBkdSwgcnhfc3RhdHVzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00NDU5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTQ0NjI9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDQ2Mzp2b2lkIHJ0dzg5X2NvcmVfcnhfcGt0X2hkbChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDQ2NC1cXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgcnR3ODlfcnhfZGVzY19pbmZvICpkZXNjKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDQ5Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo0NDk3OnZvaWQgcnR3ODlfY29yZV9yeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDQ5OC1cXHRcXHQgICBzdHJ1Y3QgcnR3ODlfcnhfZGVzY19pbmZvICpkZXNjX2luZm8sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00NTA2LVxcdGlmIChkZXNjX2luZm8tXFx1MDAzZXBrdF90eXBlICE9IFJUVzg5X0NPUkVfUlhfVFlQRV9XSUZJKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDUwNzpcXHRcXHRydHc4OV9jb3JlX3J4X3Byb2Nlc3NfcmVwb3J0KHJ0d2RldiwgZGVzY19pbmZvLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQ1MDgtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDUxOC1cXHRydHc4OV9jb3JlX3VwZGF0ZV9yeF9zdGF0dXMocnR3ZGV2LCBza2IsIGRlc2NfaW5mbywgcnhfc3RhdHVzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo0NTE5OlxcdHJ0dzg5X2NvcmVfcnhfcGt0X2hkbChydHdkZXYsIHNrYiwgZGVzY19pbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00NTIwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDUyNy1cXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDUyODpcXHRcXHRydHc4OV9jb3JlX3J4X3RvX21hYzgwMjExKHJ0d2RldiwgTlVMTCwgZGVzY19pbmZvLCBza2IsIHJ4X3N0YXR1cyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDUyOS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDUzMDpFWFBPUlRfU1lNQk9MKHJ0dzg5X2NvcmVfcngpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQ1MzEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD0yMTY9ZW51bSBydHc4OV9jb3JlX3R4X3R5cGUge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMjIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjIyMjplbnVtIHJ0dzg5X2NvcmVfcnhfdHlwZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMjIzLVxcdFJUVzg5X0NPUkVfUlhfVFlQRV9XSUZJXFx0XFx0PSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9ODA5Mz11OCBydHc4OV9jb3JlX2dldF9jaF9kbWFfdjIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBxc2VsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo4MDk0OnZvaWQgcnR3ODlfY29yZV9yeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtODA5NS1cXHRcXHQgICBzdHJ1Y3QgcnR3ODlfcnhfZGVzY19pbmZvICpkZXNjX2luZm8sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BjaS5jPTMyMT1zdGF0aWMgdTMyIHJ0dzg5X3BjaV9yeGJkX2RlbGl2ZXJfc2ticyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BjaS5jLTM5My1cXHRpZiAobHMpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BjaS5jOjM5NDpcXHRcXHRydHc4OV9jb3JlX3J4KHJ0d2RldiwgZGVzY19pbmZvLCBuZXcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGNpLmMtMzk1LVxcdFxcdHJ4X3JpbmctXFx1MDAzZWRpbGl2ZXJfc2tiID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM9NDM2PXN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yeF9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNDgyLVxcdFxcdFxcdHNrYl9wdXRfZGF0YShza2IsIHBrdF9wdHIgKyBwa3Rfb2Zmc2V0LCBkZXNjX2luZm8ucGt0X3NpemUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NDgzOlxcdFxcdFxcdHJ0dzg5X2NvcmVfcngocnR3ZGV2LCBcXHUwMDI2ZGVzY19pbmZvLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNDg0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTozNzoyOC41NTgwODU5ODJaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjM3MjQ1MTI3MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIFVTQiBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgUmVhbHRlayBVU0IgZHJpdmVyIOKAkyBzcGVjaWZpY2FsbHksIGBydHc4OV91c2IuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkFoYSEgYHJ0dzg5X3VzYl9yeF9oYW5kbGVyYCBpcyBjYWxsaW5nIGBydHc4OV9jb3JlX3J4YCB3aGVuIGl0IGdldHMgcGFja2V0cyB2aWEgVVNCLiBUaGF0J3MgdGhlIGV4cGVjdGVkIHBhdGggZm9yIFJYLlwiXG5cbkJ1dCB0aGUgcmVhbCBxdWVzdGlvbiBJIHdhbnQgdG8gYW5zd2VyIGlzIHdobydzIHVzaW5nIGBfX3J0dzg5X3dvd19wYXJzZV9ha21gPyBJcyBpdCByZWxhdGVkIHRvIHRoZSBpc3N1ZSBJIGFtIGRlYnVnZ2luZywgYW5kIGlmIHNvIHdoZXJlIGRvIEkgZmluZCB0aGUgc291cmNlP1xuXG5MZXQncyBzZWXigKYgSSBzaG91bGQgY2hlY2sgaWYgYHJ0dzg5X2NvcmVfdHhfd3JpdGVfbGlua2AgaXMgYSBjYWxsZXIuIE9yIG90aGVyIGNhbGxlcnMgcGVyaGFwcy4gTm93LCBsZXQncyBzZWUsIGBydHc4OV93b3dfcGFyc2VfYWttYCBpcyBjYWxsaW5nIGBfX3J0dzg5X3dvd19wYXJzZV9ha21gLiBPa2F5LCB0aGF0J3MgZmluZS5cblxuUmlnaHQsIGJhY2sgdG8gdGhlIG1haW4gcXVlc3Rpb24uIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gYHJ0dzg5X2NvcmVfdHhfd3JpdGVfbGlua2AgdG8gc2VlIHdoZXJlICppdCogZ2V0cyBjYWxsZWQuIFRoYXQgd2lsbCB0ZWxsIG1lIHdoaWNoIHBhcnQgb2YgdGhlIGRyaXZlciBpcyB0cmlnZ2VyaW5nIHRoaXMgYmVoYXZpb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNzk3LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjQxOjI1LjgwMzIxNzAwMloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA4MzQzODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X2NvcmVfdHhfd3JpdGVfbGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTEzMzY9aW50IHJ0dzg5X2gyY190eChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0xMzc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjEzNzc6c3RhdGljIGludCBydHc4OV9jb3JlX3R4X3dyaXRlX2xpbmsoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTEzNzgtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbmssXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0xNDE2PWludCBydHc4OV9jb3JlX3R4X3dyaXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTE0MzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MTQ0MDpcXHRyZXR1cm4gcnR3ODlfY29yZV90eF93cml0ZV9saW5rKHJ0d2RldiwgcnR3dmlmX2xpbmssIHJ0d3N0YV9saW5rLCBza2IsIHFzZWwsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTE0NDEtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9NDkyNj1pbnQgcnR3ODlfY29yZV9zZW5kX251bGxmdW5jKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQ5NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDk3NTpcXHRyZXQgPSBydHc4OV9jb3JlX3R4X3dyaXRlX2xpbmsocnR3ZGV2LCBydHd2aWZfbGluaywgcnR3c3RhX2xpbmssIHNrYiwgXFx1MDAyNnFzZWwsIHdhaXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQ5NzYtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo0MToyNi4zMTE1Njc3OTFaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDY3NzIzNzE4ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGl2aW5nIGludG8gdGhlIHJ0dzg5IFdpcmVsZXNzIERyaXZlcioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBmbG93LCBlc3BlY2lhbGx5IGFyb3VuZCB0cmFuc21pdCBvcGVyYXRpb25zIHdpdGhpbiB0aGUgYHJ0dzg5YCBkcml2ZXIsIHNvIEknbSBnb2luZyB0byBzdGFydCBieSBleGFtaW5pbmcgdHdvIGtleSBhcmVhcy4gRmlyc3QsIEknbGwgYmUgZGlnZ2luZyBpbnRvIGBydHc4OV9jb3JlX3R4X3dyaXRlYCwgYmVjYXVzZSB0aGF0IGxpa2VseSBoYW5kbGVzIHRoZSBjb3JlIHdyaXRpbmcgb2YgdHJhbnNtaXQgZGF0YSB3aXRoaW4gdGhlIGRyaXZlci4gU2Vjb25kLCBJJ2xsIG1vdmUgb24gdG8gYHJ0dzg5X29wc2AgdG8gc2VlIHdoaWNoIG1hYzgwMjExIG9wZXJhdGlvbnMgdGhpcyBkcml2ZXIgYWN0dWFsbHkgZXhwb3J0cy4gVW5kZXJzdGFuZGluZyB0aGUgb3BlcmF0aW9ucyBpdCBwcm92aWRlcyB3aWxsIGhlbHAgbWUgYnVpbGQgdXAgYSBtb3JlIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLiBJIGV4cGVjdCBJJ2xsIGZpbmQgYSBjbGVhciBtYXBwaW5nIG9mIHRoZSBkcml2ZXIncyB0cmFuc21pdCBjYXBhYmlsaXRpZXMgdG8gdGhlIG1hYzgwMjExIGludGVyZmFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ3OTAsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo0MjoxMy4wODM5NDMxMDhaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NTM5ODk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTc1NDA9c3RydWN0IHJ0dzg5X2RldiAqcnR3ODlfYWxsb2NfaWVlZTgwMjExX2h3KHN0cnVjdCBkZXZpY2UgKmRldmljZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTc1NTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NzU2MDpcXHRvcHMgPSBrbWVtZHVwKFxcdTAwMjZydHc4OV9vcHMsIHNpemVvZihydHc4OV9vcHMpLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy03NTYxLVxcdGlmICghb3BzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9MzM9c3RydWN0IHJ0dzg5X2Z3X2NtZF9vZmxkX2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzU6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIHJ0dzg5X29wcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTk6c3RhdGljIHZvaWQgcnR3ODlfb3BzX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0yMC1cXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV90eF9jb250cm9sICpjb250cm9sLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo0ODpzdGF0aWMgdm9pZCBydHc4OV9vcHNfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNDktXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjU3OnN0YXRpYyBpbnQgcnR3ODlfb3BzX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy01OC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjY2OnN0YXRpYyB2b2lkIHJ0dzg5X29wc19zdG9wKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBib29sIHN1c3BlbmQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy03NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6NzU6c3RhdGljIGludCBydHc4OV9vcHNfY29uZmlnKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBpbnQgcmFkaW9faWR4LCB1MzIgY2hhbmdlZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNzYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTA3OnN0YXRpYyBpbnQgX19ydHc4OV9vcHNfYWRkX2lmYWNlX2xpbmsoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMDgtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE1MDpzdGF0aWMgdm9pZCBfX3J0dzg5X29wc19yZW1vdmVfaWZhY2VfbGluayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE1MS1cXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNjk6c3RhdGljIGludCBydHc4OV9vcHNfYWRkX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTcwLVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMjIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMjM6XFx0cmV0ID0gX19ydHc4OV9vcHNfYWRkX2lmYWNlX2xpbmsocnR3ZGV2LCBydHd2aWZfbGluayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTIyNC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTI0Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjQzOnN0YXRpYyB2b2lkIHJ0dzg5X29wc19yZW1vdmVfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0yNDQtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMjY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyNjc6XFx0X19ydHc4OV9vcHNfcmVtb3ZlX2lmYWNlX2xpbmsocnR3ZGV2LCBydHd2aWZfbGluayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTI2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0yODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjI4MjpzdGF0aWMgaW50IHJ0dzg5X29wc19jaGFuZ2VfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0yODMtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0yOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjI5NDpcXHRydHc4OV9vcHNfcmVtb3ZlX2ludGVyZmFjZShodywgdmlmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMjk1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTI5OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6Mjk5OlxcdHJldCA9IHJ0dzg5X29wc19hZGRfaW50ZXJmYWNlKGh3LCB2aWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0zMDAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0zMDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjMwODpzdGF0aWMgdm9pZCBydHc4OV9vcHNfY29uZmlndXJlX2ZpbHRlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMzA5LVxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgY2hhbmdlZF9mbGFncyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz00Nzk9c3RhdGljIHZvaWQgcnR3ODlfY29uZl90eChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNDg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo0ODg6c3RhdGljIGludCBfX3J0dzg5X29wc19zdGFfYWRkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNDg5LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTU1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6NTUyOnN0YXRpYyBpbnQgX19ydHc4OV9vcHNfc3RhX2Fzc29jKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNTUzLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTU4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6NTgyOnN0YXRpYyBpbnQgX19ydHc4OV9vcHNfc3RhX2Rpc2Fzc29jKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNTgzLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTYwOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6NjA5OnN0YXRpYyBpbnQgX19ydHc4OV9vcHNfc3RhX2Rpc2Nvbm5lY3Qoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy02MTAtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy02MzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjYzMzpzdGF0aWMgaW50IF9fcnR3ODlfb3BzX3N0YV9yZW1vdmUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy02MzQtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jPTY2MT1zdGF0aWMgdm9pZCBydHc4OV9zdGF0aW9uX21vZGVfc3RhX2Fzc29jKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy02NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjY3NTpcXHRfX3J0dzg5X29wc19zdGFfYXNzb2MocnR3ZGV2LCB2aWYsIHN0YSwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTY3Ni19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTY3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6Njc4OnN0YXRpYyB2b2lkIF9fcnR3ODlfb3BzX2Jzc19saW5rX2Fzc29jKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNjc5LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTY4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6Njg4OnN0YXRpYyB2b2lkIF9fcnR3ODlfb3BzX2Jzc19hc3NvYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTY4OS1cXHRcXHRcXHRcXHQgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNjk1LVxcdHJ0dzg5X3ZpZl9mb3JfZWFjaF9saW5rKHJ0d3ZpZiwgcnR3dmlmX2xpbmssIGxpbmtfaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjY5NjpcXHRcXHRfX3J0dzg5X29wc19ic3NfbGlua19hc3NvYyhydHdkZXYsIHJ0d3ZpZl9saW5rKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNjk3LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNjk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo2OTk6c3RhdGljIHZvaWQgcnR3ODlfb3BzX3ZpZl9jZmdfY2hhbmdlZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNzAwLVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsIHU2NCBjaGFuZ2VkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTcxMS1cXHRcXHRcXHRydHc4OV9zdGF0aW9uX21vZGVfc3RhX2Fzc29jKHJ0d2RldiwgdmlmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6NzEyOlxcdFxcdFxcdF9fcnR3ODlfb3BzX2Jzc19hc3NvYyhydHdkZXYsIHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTcxMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy03NDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjc1MDpzdGF0aWMgdm9pZCBydHc4OV9vcHNfbGlua19pbmZvX2NoYW5nZWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTc1MS1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTc5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6ODAwOnN0YXRpYyBpbnQgcnR3ODlfb3BzX3N0YXJ0X2FwKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy04MDEtXFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz04NDc9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjg0ODp2b2lkIHJ0dzg5X29wc19zdG9wX2FwKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy04NDktXFx0XFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmxpbmtfY29uZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy04NzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjg3MzpzdGF0aWMgaW50IHJ0dzg5X29wc19zZXRfdGltKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy04NzQtXFx0XFx0XFx0ICAgICBib29sIHNldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy04ODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjg4NzpzdGF0aWMgaW50IHJ0dzg5X29wc19jb25mX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy04ODgtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTkxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6OTE0OnN0YXRpYyBpbnQgX19ydHc4OV9vcHNfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy05MTUtXFx0XFx0XFx0XFx0IHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtOTIzLVxcdCAgICBuZXdfc3RhdGUgPT0gSUVFRTgwMjExX1NUQV9OT05FKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo5MjQ6XFx0XFx0cmV0dXJuIF9fcnR3ODlfb3BzX3N0YV9hZGQocnR3ZGV2LCB2aWYsIHN0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTkyNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy05MjktXFx0XFx0XFx0cmV0dXJuIDA7IC8qIGRlZmVyIHRvIGJzc19pbmZvX2NoYW5nZWQgdG8gaGF2ZSB2aWYgaW5mbyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo5MzA6XFx0XFx0cmV0dXJuIF9fcnR3ODlfb3BzX3N0YV9hc3NvYyhydHdkZXYsIHZpZiwgc3RhLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTkzMS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtOTM0LVxcdCAgICBuZXdfc3RhdGUgPT0gSUVFRTgwMjExX1NUQV9BVVRIKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo5MzU6XFx0XFx0cmV0dXJuIF9fcnR3ODlfb3BzX3N0YV9kaXNhc3NvYyhydHdkZXYsIHZpZiwgc3RhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtOTM2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTkzOC1cXHQgICAgbmV3X3N0YXRlID09IElFRUU4MDIxMV9TVEFfTk9ORSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6OTM5OlxcdFxcdHJldHVybiBfX3J0dzg5X29wc19zdGFfZGlzY29ubmVjdChydHdkZXYsIHZpZiwgc3RhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtOTQwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTk0Mi1cXHQgICAgbmV3X3N0YXRlID09IElFRUU4MDIxMV9TVEFfTk9URVhJU1QpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjk0MzpcXHRcXHRyZXR1cm4gX19ydHc4OV9vcHNfc3RhX3JlbW92ZShydHdkZXYsIHZpZiwgc3RhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtOTQ0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTk0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6OTQ4OnN0YXRpYyBpbnQgcnR3ODlfb3BzX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtOTQ5LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTk1OC1cXHRydHc4OV9sZWF2ZV9wc19tb2RlKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjk1OTpcXHRyZXR1cm4gX19ydHc4OV9vcHNfc3RhX3N0YXRlKGh3LCB2aWYsIHN0YSwgb2xkX3N0YXRlLCBuZXdfc3RhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy05NjAtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy05NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjk2MjpzdGF0aWMgaW50IHJ0dzg5X29wc19zZXRfa2V5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBlbnVtIHNldF9rZXlfY21kIGNtZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtOTYzLVxcdFxcdFxcdCAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMDAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxMDAxOnN0YXRpYyBpbnQgcnR3ODlfb3BzX2FtcGR1X2FjdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTAwMi1cXHRcXHRcXHRcXHQgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTA1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTA1MzpzdGF0aWMgaW50IHJ0dzg5X29wc19zZXRfcnRzX3RocmVzaG9sZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IHJhZGlvX2lkeCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTA1NC1cXHRcXHRcXHRcXHQgICAgICAgdTMyIHZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEwNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjEwNjc6c3RhdGljIHZvaWQgcnR3ODlfb3BzX3N0YV9zdGF0aXN0aWNzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMDY4LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz0xMDg0PXZvaWQgX19ydHc4OV9kcm9wX3BhY2tldHMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEwOTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjEwOTc6c3RhdGljIHZvaWQgcnR3ODlfb3BzX2ZsdXNoKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMDk4LVxcdFxcdFxcdCAgICB1MzIgcXVldWVzLCBib29sIGRyb3ApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM9MTEzOT1zdGF0aWMgdm9pZCBydHc4OV9yYV9tYXNrX2luZm9fdXBkYXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMTUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxMTUxOnN0YXRpYyBpbnQgcnR3ODlfb3BzX3NldF9iaXRyYXRlX21hc2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTExNTItXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz0xMTY1PXN0YXRpY1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxMTY2OmludCBydHc4OV9vcHNfc2V0X2FudGVubmEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGludCByYWRpb19pZHgsIHUzMiB0eF9hbnQsIHUzMiByeF9hbnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTExNjcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jPTExOTM9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjExOTQ6aW50IHJ0dzg5X29wc19nZXRfYW50ZW5uYShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IHJhZGlvX2lkeCwgdTMyICp0eF9hbnQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTExOTUtXFx0XFx0XFx0ICB1MzIgKnJ4X2FudClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMjA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxMjA2OnN0YXRpYyB2b2lkIHJ0dzg5X29wc19zd19zY2FuX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMjA3LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEyMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjEyMjc6c3RhdGljIHZvaWQgcnR3ODlfb3BzX3N3X3NjYW5fY29tcGxldGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEyMjgtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTI0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTI0NTpzdGF0aWMgdm9pZCBydHc4OV9vcHNfcmVjb25maWdfY29tcGxldGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEyNDYtXFx0XFx0XFx0XFx0XFx0ZW51bSBpZWVlODAyMTFfcmVjb25maWdfdHlwZSByZWNvbmZpZ190eXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEyNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjEyNTQ6c3RhdGljIGludCBydHc4OV9vcHNfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTI1NS1cXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfc2Nhbl9yZXF1ZXN0ICpyZXEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTI5OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTI5OTpzdGF0aWMgdm9pZCBydHc4OV9vcHNfY2FuY2VsX2h3X3NjYW4oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEzMDAtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEzMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjEzMjM6c3RhdGljIHZvaWQgcnR3ODlfb3BzX3N0YV9yY191cGRhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEzMjQtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTMzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTMzOTpzdGF0aWMgaW50IHJ0dzg5X29wc19hZGRfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTM0MC1cXHRcXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV9jaGFuY3R4X2NvbmYgKmN0eClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMzQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxMzQ5OnN0YXRpYyB2b2lkIHJ0dzg5X29wc19yZW1vdmVfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTM1MC1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eF9jb25mICpjdHgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTM1OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTM1OTpzdGF0aWMgdm9pZCBydHc4OV9vcHNfY2hhbmdlX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEzNjAtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHhfY29uZiAqY3R4LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEzNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjEzNzA6c3RhdGljIGludCBydHc4OV9vcHNfYXNzaWduX3ZpZl9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMzcxLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTM5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTM5MjpzdGF0aWMgdm9pZCBydHc4OV9vcHNfdW5hc3NpZ25fdmlmX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEzOTMtXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz0xNDE0PXN0YXRpY1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNDE1OmludCBydHc4OV9vcHNfc3dpdGNoX3ZpZl9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNDE2LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZl9jaGFuY3R4X3N3aXRjaCAqdmlmcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNDYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNDYyOnN0YXRpYyB2b2lkIHJ0dzg5X29wc19jaGFubmVsX3N3aXRjaF9iZWFjb24oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE0NjMtXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTQ4MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTQ4MTpzdGF0aWMgaW50IHJ0dzg5X29wc19yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTQ4Mi1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNTE3OnN0YXRpYyBpbnQgcnR3ODlfb3BzX2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTUxOC1cXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jPTE1MzU9c3RhdGljIHZvaWQgcnR3ODlfc2V0X3RpZF9jb25maWdfaXRlcih2b2lkICpkYXRhLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE1NDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE1NDQ6c3RhdGljIGludCBydHc4OV9vcHNfc2V0X3RpZF9jb25maWcoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE1NDUtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM9MTU2Mz1zdGF0aWMgYm9vbCBydHc4OV9jYW5fd29ya19vbl9saW5rcyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTU3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTU3NjpzdGF0aWMgYm9vbCBydHc4OV9vcHNfY2FuX2FjdGl2YXRlX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNTc3LVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE2MDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE2MDY6c3RhdGljIHZvaWQgX19ydHc4OV9vcHNfY2xyX3ZpZl9saW5rcyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE2MDctXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHJ0dzg5X3ZpZiAqcnR3dmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE2MTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE2MjA6XFx0XFx0X19ydHc4OV9vcHNfcmVtb3ZlX2lmYWNlX2xpbmsocnR3ZGV2LCBydHd2aWZfbGluayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE2MjEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTYyNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTYyNjpzdGF0aWMgaW50IF9fcnR3ODlfb3BzX3NldF92aWZfbGlua3Moc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNjI3LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHJ0dzg5X3ZpZiAqcnR3dmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE2MzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE2Mzk6XFx0XFx0cmV0ID0gX19ydHc4OV9vcHNfYWRkX2lmYWNlX2xpbmsocnR3ZGV2LCBydHd2aWZfbGluayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE2NDAtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jPTE2Nzg9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE2Nzk6aW50IHJ0dzg5X29wc19jaGFuZ2VfdmlmX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNjgwLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE3MjEtXFx0aWYgKCFvbGRfbGlua3MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE3MjI6XFx0XFx0X19ydHc4OV9vcHNfY2xyX3ZpZl9saW5rcyhydHdkZXYsIHJ0d3ZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTcyMy1cXHRcXHRcXHRcXHRcXHQgIEJJVChSVFc4OV9WSUZfSURMRV9MSU5LX0lEKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE3MjQtXFx0ZWxzZSBpZiAoY2xyX2xpbmtzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNzI1OlxcdFxcdF9fcnR3ODlfb3BzX2Nscl92aWZfbGlua3MocnR3ZGV2LCBydHd2aWYsIGNscl9saW5rcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE3MjYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTc0MC1cXHRpZiAoc2V0X2xpbmtzKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE3NDE6XFx0XFx0cmV0ID0gX19ydHc4OV9vcHNfc2V0X3ZpZl9saW5rcyhydHdkZXYsIHJ0d3ZpZiwgc2V0X2xpbmtzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTc0Mi1cXHRcXHRpZiAocmV0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNzQzOlxcdFxcdFxcdF9fcnR3ODlfb3BzX2Nscl92aWZfbGlua3MocnR3ZGV2LCBydHd2aWYsIHNldF9saW5rcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE3NDQtXFx0fSBlbHNlIGlmICghbmV3X2xpbmtzKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE3NDU6XFx0XFx0cmV0ID0gX19ydHc4OV9vcHNfc2V0X3ZpZl9saW5rcyhydHdkZXYsIHJ0d3ZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTc0Ni1cXHRcXHRcXHRcXHRcXHRcXHRCSVQoUlRXODlfVklGX0lETEVfTElOS19JRCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNzQ3LVxcdFxcdGlmIChyZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE3NDg6XFx0XFx0XFx0X19ydHc4OV9vcHNfY2xyX3ZpZl9saW5rcyhydHdkZXYsIHJ0d3ZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTc0OS1cXHRcXHRcXHRcXHRcXHRcXHQgIEJJVChSVFc4OV9WSUZfSURMRV9MSU5LX0lEKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTc1OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTc1OTpzdGF0aWMgdm9pZCBfX3J0dzg5X29wc19jbHJfc3RhX2xpbmtzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTc2MC1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgcnR3ODlfc3RhICpydHdzdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTc4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTc4MjpzdGF0aWMgaW50IF9fcnR3ODlfb3BzX3NldF9zdGFfbGlua3Moc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNzgzLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHJ0dzg5X3N0YSAqcnR3c3RhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE4MTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE4MTU6XFx0XFx0X19ydHc4OV9vcHNfYnNzX2xpbmtfYXNzb2MocnR3ZGV2LCBydHd2aWZfbGluayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE4MTYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM9MTgzNT1zdGF0aWNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTgzNjppbnQgcnR3ODlfb3BzX2NoYW5nZV9zdGFfbGlua3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE4MzctXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTg1OC1cXHRpZiAoY2xyX2xpbmtzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxODU5OlxcdFxcdF9fcnR3ODlfb3BzX2Nscl9zdGFfbGlua3MocnR3ZGV2LCBydHdzdGEsIGNscl9saW5rcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE4NjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE4NjEtXFx0aWYgKHNldF9saW5rcykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxODYyOlxcdFxcdHJldCA9IF9fcnR3ODlfb3BzX3NldF9zdGFfbGlua3MocnR3ZGV2LCBydHdzdGEsIHNldF9saW5rcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE4NjMtXFx0XFx0aWYgKHJldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTg2NDpcXHRcXHRcXHRfX3J0dzg5X29wc19jbHJfc3RhX2xpbmtzKHJ0d2RldiwgcnR3c3RhLCBzZXRfbGlua3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xODY1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xODcwLSNpZmRlZiBDT05GSUdfUE1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTg3MTpzdGF0aWMgaW50IHJ0dzg5X29wc19zdXNwZW5kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xODcyLVxcdFxcdFxcdCAgICAgc3RydWN0IGNmZzgwMjExX3dvd2xhbiAqd293bGFuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE4OTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE4OTM6c3RhdGljIGludCBydHc4OV9vcHNfcmVzdW1lKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xODk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xOTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxOTEzOnN0YXRpYyB2b2lkIHJ0dzg5X29wc19zZXRfd2FrZXVwKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBib29sIGVuYWJsZWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE5MTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jPTE5MjA9c3RhdGljIHZvaWQgcnR3ODlfc2V0X3Jla2V5X2RhdGEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTk0MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTk0MTpzdGF0aWMgaW50IHJ0dzg5X29wc19nZXRfc3VydmV5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBpbnQgaWR4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xOTQyLVxcdFxcdFxcdFxcdHN0cnVjdCBzdXJ2ZXlfaW5mbyAqc3VydmV5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE5NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5NzU6c3RhdGljIHZvaWQgcnR3ODlfb3BzX3Jma2lsbF9wb2xsKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xOTc2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xOTg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxOTg4OmNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIHJ0dzg5X29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTk4OTpcXHQudHhcXHRcXHRcXHQ9IHJ0dzg5X29wc190eCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTk5MDpcXHQud2FrZV90eF9xdWV1ZVxcdFxcdD0gcnR3ODlfb3BzX3dha2VfdHhfcXVldWUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5OTE6XFx0LnN0YXJ0XFx0XFx0XFx0PSBydHc4OV9vcHNfc3RhcnQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5OTI6XFx0LnN0b3BcXHRcXHRcXHQ9IHJ0dzg5X29wc19zdG9wLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxOTkzOlxcdC5jb25maWdcXHRcXHRcXHQ9IHJ0dzg5X29wc19jb25maWcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5OTQ6XFx0LmFkZF9pbnRlcmZhY2VcXHRcXHQ9IHJ0dzg5X29wc19hZGRfaW50ZXJmYWNlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxOTk1OlxcdC5jaGFuZ2VfaW50ZXJmYWNlICAgICAgID0gcnR3ODlfb3BzX2NoYW5nZV9pbnRlcmZhY2UsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5OTY6XFx0LnJlbW92ZV9pbnRlcmZhY2VcXHQ9IHJ0dzg5X29wc19yZW1vdmVfaW50ZXJmYWNlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxOTk3OlxcdC5jb25maWd1cmVfZmlsdGVyXFx0PSBydHc4OV9vcHNfY29uZmlndXJlX2ZpbHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTk5ODpcXHQudmlmX2NmZ19jaGFuZ2VkXFx0PSBydHc4OV9vcHNfdmlmX2NmZ19jaGFuZ2VkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxOTk5OlxcdC5saW5rX2luZm9fY2hhbmdlZFxcdD0gcnR3ODlfb3BzX2xpbmtfaW5mb19jaGFuZ2VkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDAwOlxcdC5zdGFydF9hcFxcdFxcdD0gcnR3ODlfb3BzX3N0YXJ0X2FwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDAxOlxcdC5zdG9wX2FwXFx0XFx0PSBydHc4OV9vcHNfc3RvcF9hcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAwMjpcXHQuc2V0X3RpbVxcdFxcdD0gcnR3ODlfb3BzX3NldF90aW0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMDM6XFx0LmNvbmZfdHhcXHRcXHQ9IHJ0dzg5X29wc19jb25mX3R4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDA0OlxcdC5zdGFfc3RhdGVcXHRcXHQ9IHJ0dzg5X29wc19zdGFfc3RhdGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMDU6XFx0LnNldF9rZXlcXHRcXHQ9IHJ0dzg5X29wc19zZXRfa2V5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDA2OlxcdC5hbXBkdV9hY3Rpb25cXHRcXHQ9IHJ0dzg5X29wc19hbXBkdV9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMDc6XFx0LmdldF9zdXJ2ZXlcXHRcXHQ9IHJ0dzg5X29wc19nZXRfc3VydmV5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDA4OlxcdC5zZXRfcnRzX3RocmVzaG9sZFxcdD0gcnR3ODlfb3BzX3NldF9ydHNfdGhyZXNob2xkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDA5OlxcdC5zdGFfc3RhdGlzdGljc1xcdFxcdD0gcnR3ODlfb3BzX3N0YV9zdGF0aXN0aWNzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDEwOlxcdC5mbHVzaFxcdFxcdFxcdD0gcnR3ODlfb3BzX2ZsdXNoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDExOlxcdC5zZXRfYml0cmF0ZV9tYXNrXFx0PSBydHc4OV9vcHNfc2V0X2JpdHJhdGVfbWFzayxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAxMjpcXHQuc2V0X2FudGVubmFcXHRcXHQ9IHJ0dzg5X29wc19zZXRfYW50ZW5uYSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAxMzpcXHQuZ2V0X2FudGVubmFcXHRcXHQ9IHJ0dzg5X29wc19nZXRfYW50ZW5uYSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAxNDpcXHQuc3dfc2Nhbl9zdGFydFxcdFxcdD0gcnR3ODlfb3BzX3N3X3NjYW5fc3RhcnQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMTU6XFx0LnN3X3NjYW5fY29tcGxldGVcXHQ9IHJ0dzg5X29wc19zd19zY2FuX2NvbXBsZXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDE2OlxcdC5yZWNvbmZpZ19jb21wbGV0ZVxcdD0gcnR3ODlfb3BzX3JlY29uZmlnX2NvbXBsZXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDE3OlxcdC5od19zY2FuXFx0XFx0PSBydHc4OV9vcHNfaHdfc2NhbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAxODpcXHQuY2FuY2VsX2h3X3NjYW5cXHRcXHQ9IHJ0dzg5X29wc19jYW5jZWxfaHdfc2NhbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAxOTpcXHQuYWRkX2NoYW5jdHhcXHRcXHQ9IHJ0dzg5X29wc19hZGRfY2hhbmN0eCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAyMDpcXHQucmVtb3ZlX2NoYW5jdHhcXHRcXHQ9IHJ0dzg5X29wc19yZW1vdmVfY2hhbmN0eCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAyMTpcXHQuY2hhbmdlX2NoYW5jdHhcXHRcXHQ9IHJ0dzg5X29wc19jaGFuZ2VfY2hhbmN0eCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAyMjpcXHQuYXNzaWduX3ZpZl9jaGFuY3R4XFx0PSBydHc4OV9vcHNfYXNzaWduX3ZpZl9jaGFuY3R4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDIzOlxcdC51bmFzc2lnbl92aWZfY2hhbmN0eFxcdD0gcnR3ODlfb3BzX3VuYXNzaWduX3ZpZl9jaGFuY3R4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDI0OlxcdC5zd2l0Y2hfdmlmX2NoYW5jdHhcXHQ9IHJ0dzg5X29wc19zd2l0Y2hfdmlmX2NoYW5jdHgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMjU6XFx0LmNoYW5uZWxfc3dpdGNoX2JlYWNvblxcdD0gcnR3ODlfb3BzX2NoYW5uZWxfc3dpdGNoX2JlYWNvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAyNjpcXHQucmVtYWluX29uX2NoYW5uZWxcXHRcXHQ9IHJ0dzg5X29wc19yZW1haW5fb25fY2hhbm5lbCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAyNzpcXHQuY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsXFx0PSBydHc4OV9vcHNfY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDI4OlxcdC5zZXRfc2FyX3NwZWNzXFx0XFx0PSBydHc4OV9vcHNfc2V0X3Nhcl9zcGVjcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAyOTpcXHQubGlua19zdGFfcmNfdXBkYXRlXFx0PSBydHc4OV9vcHNfc3RhX3JjX3VwZGF0ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAzMDpcXHQuc2V0X3RpZF9jb25maWdcXHRcXHQ9IHJ0dzg5X29wc19zZXRfdGlkX2NvbmZpZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAzMTpcXHQuY2FuX2FjdGl2YXRlX2xpbmtzXFx0PSBydHc4OV9vcHNfY2FuX2FjdGl2YXRlX2xpbmtzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDMyOlxcdC5jaGFuZ2VfdmlmX2xpbmtzXFx0PSBydHc4OV9vcHNfY2hhbmdlX3ZpZl9saW5rcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAzMzpcXHQuY2hhbmdlX3N0YV9saW5rc1xcdD0gcnR3ODlfb3BzX2NoYW5nZV9zdGFfbGlua3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTIwMzQtI2lmZGVmIENPTkZJR19QTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDM1OlxcdC5zdXNwZW5kXFx0XFx0PSBydHc4OV9vcHNfc3VzcGVuZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAzNjpcXHQucmVzdW1lXFx0XFx0XFx0PSBydHc4OV9vcHNfcmVzdW1lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDM3OlxcdC5zZXRfd2FrZXVwXFx0XFx0PSBydHc4OV9vcHNfc2V0X3dha2V1cCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMjAzOC1cXHQuc2V0X3Jla2V5X2RhdGFcXHRcXHQ9IHJ0dzg5X3NldF9yZWtleV9kYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0yMDM5LSNlbmRpZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDQwOlxcdC5yZmtpbGxfcG9sbFxcdFxcdD0gcnR3ODlfb3BzX3Jma2lsbF9wb2xsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0yMDQxLX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwNDI6RVhQT1JUX1NZTUJPTChydHc4OV9vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zYXIuYz00MTI9Y29uc3Qgc3RydWN0IGNmZzgwMjExX3Nhcl9jYXBhIHJ0dzg5X3Nhcl9jYXBhID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zYXIuYy00MTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zYXIuYzo0MTg6aW50IHJ0dzg5X29wc19zZXRfc2FyX3NwZWNzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2FyLmMtNDE5LVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgY2ZnODAyMTFfc2FyX3NwZWNzICpzYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nhci5oPTMzPWludCBydHc4OV9wcmludF90YXMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zYXIuaDozNDppbnQgcnR3ODlfb3BzX3NldF9zYXJfc3BlY3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zYXIuaC0zNS1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGNmZzgwMjExX3Nhcl9zcGVjcyAqc2FyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6NDI6MTMuMTMzNDg3NDA2WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjcxMTU2NzA0MDU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIFJlYWx0ZWsgcnR3ODkgV2lyZWxlc3MgRHJpdmVyIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEZpcnN0LCBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQuIExvb2tzIGxpa2UgYF9fcnR3ODlfd293X3BhcnNlX2FrbWAgaXMgYSBub24tc3RhdGljLCBleHBvcnRlZCBmdW5jdGlvbiwgd2hpY2ggaXMgcHJvbWlzaW5nIGZvciBwb3RlbnRpYWwgZnV6emluZywgYWxvbmdzaWRlIHRoZSBSWCBlbnRyeXBvaW50IGBydHc4OV9jb3JlX3J4YCBhbmQgYHJ0dzg5X2NvcmVfdHhfd3JpdGVgIChvciBgcnR3ODlfY29yZV90eF93cml0ZV9saW5rYCkgZm9yIFRYIGZyYW1lcy4gVGhlcmUncyBhbHNvIGBydHc4OV9vcHNfdHhgIGluIGBtYWM4MDIxMS5jYCwgYW5kIHdoaWxlIGBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4YCBpcyBzdGF0aWMsIGl0J3Mgc3RpbGwgcmVsZXZhbnQgZHVlIHRvIGl0cyBpbnZvbHZlbWVudCBpbiB0aGUgdnVsbmVyYWJpbGl0eS4gRG91YmxlIGNoZWNraW5nOiBgX19ydHc4OV93b3dfcGFyc2VfYWttYCBpcyBkZWZpbmVkIGFzIGV4cGVjdGVkLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IGlzIHRoaXMgZnV6emFibGU/IFRoZSBwYXRjaCBmb2N1c2VzIG9uIGxlbmd0aCBib3VuZCBjaGVja3Mgd2l0aGluIGBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4YCBhbmQgYF9fcnR3ODlfd293X3BhcnNlX2FrbWAgd2hlbiBjYWxsaW5nIGBjZmc4MDIxMV9maW5kX2llYC4gV2l0aG91dCB0aGUgZml4LCB0aGUgYGNmZzgwMjExX2ZpbmRfaWVgIGZ1bmN0aW9uIHJlY2VpdmVzIGFuIGluY29ycmVjdCBsZW5ndGggZm9yIHRoZSBJRSBidWZmZXIsIHN0YXJ0aW5nIGF0IG9mZnNldCBgaGRyX2xlbmAsIGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBvciBldmVuIHVuZGVyZmxvd3MuIFRoaXMgdnVsbmVyYWJpbGl0eSBpcyByZWFjaGFibGUgdmlhIFJYIChgcnR3ODlfY29yZV9yeGAgY2hhaW4pIGFuZCBUWCAoYHJ0dzg5X2NvcmVfdHhfd3JpdGVfbGlua2AgY2hhaW4pIHBhdGhzLCB3aGljaCwgaW4gdGhlIHJ0dzg5IGRyaXZlciwgY2FuIGJlIGVtdWxhdGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoZXJlZm9yZSwgKldvcnRoRnV6emluZyogbXVzdCBiZSBzZXQgdG8gYHRydWVgLlxuXG5OZXh0LCBJIG5lZWQgdG8gZW5zdXJlIHRoZSBwcm9wZXIgY29uZmlndXJhdGlvbnMuIGBSVFc4OWAgaXMgYSB0cmlzdGF0ZSwgZGVwZW5kaW5nIG9uIGBNQUM4MDIxMWAsIHdoaWNoIGl0c2VsZiBkZXBlbmRzIG9uIGBORVRgLCBgV0lSRUxFU1NgLCBhbmQgYENGRzgwMjExYC4gSSBhbHNvIG5lZWQgYFJUVzg5X0NPUkVgLCBhbmQgZWl0aGVyIGEgVVNCIGRyaXZlciBsaWtlIGBSVFc4OV84ODUyQVVgIG9yIGEgUENJZSBkcml2ZXIsIGxpa2UgYFJUVzg5X1BDSWAsIGRlcGVuZGluZyBvbiB0aGUgdGFyZ2V0IGhhcmR3YXJlLiBUaGUgYFBNYCBjb25maWd1cmF0aW9uIGlzIGFsc28gZXNzZW50aWFsIGZvciBidWlsZGluZyBgd293LmNgIHdoaWNoIGluY2x1ZGVzIGBydHc4OV9jb3JlLSQoQ09ORklHX1BNKSArPSB3b3cub2AuIExvb2tpbmcgYXQgYFJUVzg5Xzg4NTJBVWAsIGl0IGRlcGVuZHMgb24gYFVTQmAgYW5kIHNlbGVjdHMgYFJUVzg5X0NPUkVgIGFuZCBgUlRXODlfVVNCYC5cblxuU28sIHRoZSAqRW5hYmxlQ29uZmlncyogc2hvdWxkIGJlOiBgTUFDODAyMTFgLCBgQ0ZHODAyMTFgLCBgUlRXODlgLCBgUlRXODlfQ09SRWAsIGBSVFc4OV9VU0JgLCBgUlRXODlfODg1MkFVYCAob3Igb25lIG9mIHRoZSBvdGhlcnMpLCBgUlRXODlfUENJYCAob3IgYW5vdGhlciBQQ0llIGNvbmZpZyksIGFuZCBgUE1gLlxuXG5Ob3csIGZvciAqRm9jdXNTeW1ib2xzKiwgSSdsbCBpbmNsdWRlIHRoZSBpZGVudGlmaWVkIHZ1bG5lcmFibGUgZnVuY3Rpb25zOiBgX19ydHc4OV93b3dfcGFyc2VfYWttYCwgYHJ0dzg5X2NvcmVfcnhgLCBhbmQgYHJ0dzg5X2NvcmVfdHhfd3JpdGVgIChvciBzaW1pbGFyKS5cblxuTGV0J3MgZG8gYSBmaW5hbCB2ZXJpZmljYXRpb24gdmlhIHBhdGNoIGRpZmYgcmV2aWV3LiBJbiBgY29yZS5jYCBmb3IgYHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHhgLCB0aGUgcGF0Y2ggYWRkcyBgaWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIGhkcl9sZW4pIHJldHVybjtgIGFuZCBjb3JyZWN0cyB0aGUgbGVuZ3RoIHBhc3NlZCB0byBgY2ZnODAyMTFfZmluZF9pZWAuIEluIGB3b3cuY2AsIGBfX3J0dzg5X3dvd19wYXJzZV9ha21gIHJlY2VpdmVzIHRoZSBzYW1lIGZpeC4gQm90aCBwYXRjaGVzIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMuXG5cbkFscmlnaHQsIEknbSBjb25maWRlbnQgaW4gdGhlIGFuYWx5c2lzLiBUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoZXNlIGZpbmRpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTg0NSwiT3V0cHV0VG9rZW5zIjoyNzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjQzOjI0LjI5MDE5NDE2MVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3MjIzNDM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIlJUVzg5XCIsXG4gICAgXCJSVFc4OV9DT1JFXCIsXG4gICAgXCJSVFc4OV9VU0JcIixcbiAgICBcIlJUVzg5Xzg4NTJBVVwiLFxuICAgIFwiUlRXODlfUENJXCIsXG4gICAgXCJSVFc4OV84ODUyQUVcIixcbiAgICBcIlBNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19ydHc4OV93b3dfcGFyc2VfYWttXCIsXG4gICAgXCJydHc4OV9jb3JlX3J4XCIsXG4gICAgXCJydHc4OV9jb3JlX3R4X3dyaXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdGllcyBpbiBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KCkgYW5kIF9fcnR3ODlfd293X3BhcnNlX2FrbSgpIGJ5IHZhbGlkYXRpbmcgdGhhdCBza2ItXFx1MDAzZWxlbiBpcyBhdCBsZWFzdCB0aGUgaGVhZGVyIGxlbmd0aCBhbmQgcGFzc2luZyB0aGUgYWRqdXN0ZWQgaW5mb3JtYXRpb24gZWxlbWVudCBsZW5ndGggKHNrYi1cXHUwMDNlbGVuIC0gaGRyX2xlbikgdG8gY2ZnODAyMTFfZmluZF9pZSgpIGluc3RlYWQgb2YgdGhlIHVuYWRqdXN0ZWQgc2tiLVxcdTAwM2VsZW4uIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIFJYIGFuZCBUWCBwYWNrZXQgcHJvY2Vzc2luZyBvbiBydHc4OSBkZXZpY2VzICh3aGljaCBpbmNsdWRlIFVTQi1zdXBwb3J0ZWQgZGV2aWNlcyB0ZXN0YWJsZSB2aWEgVVNCIGVtdWxhdGlvbiBpbiB2aXJ0dWFsIGVudmlyb25tZW50cykuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJSVFc4OVwiLFxuICAgIFwiUlRXODlfQ09SRVwiLFxuICAgIFwiUlRXODlfVVNCXCIsXG4gICAgXCJSVFc4OV84ODUyQVVcIixcbiAgICBcIlJUVzg5X1BDSVwiLFxuICAgIFwiUlRXODlfODg1MkFFXCIsXG4gICAgXCJQTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fcnR3ODlfd293X3BhcnNlX2FrbVwiLFxuICAgIFwicnR3ODlfY29yZV9yeFwiLFxuICAgIFwicnR3ODlfY29yZV90eF93cml0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG91dC1vZi1ib3VuZHMgcmVhZCB2dWxuZXJhYmlsaXRpZXMgaW4gcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eCgpIGFuZCBfX3J0dzg5X3dvd19wYXJzZV9ha20oKSBieSB2YWxpZGF0aW5nIHRoYXQgc2tiLVxcdTAwM2VsZW4gaXMgYXQgbGVhc3QgdGhlIGhlYWRlciBsZW5ndGggYW5kIHBhc3NpbmcgdGhlIGFkanVzdGVkIGluZm9ybWF0aW9uIGVsZW1lbnQgbGVuZ3RoIChza2ItXFx1MDAzZWxlbiAtIGhkcl9sZW4pIHRvIGNmZzgwMjExX2ZpbmRfaWUoKSBpbnN0ZWFkIG9mIHRoZSB1bmFkanVzdGVkIHNrYi1cXHUwMDNlbGVuLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBSWCBhbmQgVFggcGFja2V0IHByb2Nlc3Npbmcgb24gcnR3ODkgZGV2aWNlcyAod2hpY2ggaW5jbHVkZSBVU0Itc3VwcG9ydGVkIGRldmljZXMgdGVzdGFibGUgdmlhIFVTQiBlbXVsYXRpb24gaW4gdmlydHVhbCBlbnZpcm9ubWVudHMpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo0MzoyNC4zNzc0MjU4ODdaIiwiU2VxIjozMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NzI5ODEwNjI3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjQzOjI0LjM3Nzg3ODIxN1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjI0NzI5NzY0ODkyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyAoT09CKSByZWFkIHZ1bG5lcmFiaWxpdHkgaW4gdGhlIHJ0dzg5IGRyaXZlciAoYm90aCBpbiBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4IGFuZCBfX3J0dzg5X3dvd19wYXJzZV9ha20pLiBQcmV2aW91c2x5LCB0aGUgZnVsbCBwYWNrZXQgbGVuZ3RoIChza2ItXFx1MDAzZWxlbikgd2FzIHBhc3NlZCB0byBjZmc4MDIxMV9maW5kX2llIGluc3RlYWQgb2YgdGhlIGxlbmd0aCBvZiB0aGUgaW5mb3JtYXRpb24gZWxlbWVudHMgKHNrYi1cXHUwMDNlbGVuIC0gaGRyX2xlbiksIGFuZCB0aGVyZSB3YXMgbm8gY2hlY2sgdmVyaWZ5aW5nIHRoYXQgc2tiLVxcdTAwM2VsZW4gXFx1MDAzZT0gaGRyX2xlbi4gVGhpcyBjb3VsZCBsZWFkIHRvIHJlYWRpbmcgdXAgdG8gaGRyX2xlbiBieXRlcyBwYXN0IHRoZSBlbmQgb2YgdGhlIHNrYiBkYXRhIGJ1ZmZlci5cXG5cXG5PdXQtb2YtYm91bmRzIGJ1ZmZlciByZWFkcyBhcmUgc3RhbmRhcmQgbWVtb3J5IHNhZmV0eSBidWdzIGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIHJlYWQgdW5pbml0aWFsaXplZCBtZW1vcnkgKHN0YWNrLCBoZWFwLCBvciBwYWdlIGFsbG9jYXRpb25zKSBvciBsZWFrIGtlcm5lbCBtZW1vcnkgdG8gdXNlcnNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzlhYmQ4NDQwOWFiMmQyNDI5OThlYTljNDRhZDA5NDU5ZTllZGQ1ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDMwIDE1OjA1OjMzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuY1xuaW5kZXggNjhkYWQ2MDkwZjg3ZS4uN2I0NjcxNWVhMTJkYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuY1xuQEAgLTI1MzIsOSArMjUzMiwxMSBAQCBzdGF0aWMgdm9pZCBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKHNrYik7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2tiLVx1MDAzZWRhdGE7XG4rXHRzaXplX3QgaGRyX2xlbiA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5iZWFjb24udmFyaWFibGUpO1xuIFx0c3RydWN0IGxpc3RfaGVhZCAqcGt0X2xpc3QgPSBydHdkZXYtXHUwMDNlc2Nhbl9pbmZvLnBrdF9saXN0O1xuIFx0c3RydWN0IHJ0dzg5X3BrdG9mbGRfaW5mbyAqaW5mbztcbiBcdGNvbnN0IHU4ICppZXMgPSBtZ210LVx1MDAzZXUuYmVhY29uLnZhcmlhYmxlLCAqc3NpZF9pZTtcbitcdHNpemVfdCBpZV9sZW47XG4gXHRib29sIHF1ZXVlX3dvcmsgPSBmYWxzZTtcbiBcbiBcdGlmIChyeF9zdGF0dXMtXHUwMDNlYmFuZCAhPSBOTDgwMjExX0JBTkRfNkdIWilcbkBAIC0yNTQ1LDcgKzI1NDcsMTIgQEAgc3RhdGljIHZvaWQgcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbi1cdHNzaWRfaWUgPSBjZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX1NTSUQsIGllcywgc2tiLVx1MDAzZWxlbik7XG4rXHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgaGRyX2xlbilcbitcdFx0cmV0dXJuO1xuK1xuK1x0aWVfbGVuID0gc2tiLVx1MDAzZWxlbiAtIGhkcl9sZW47XG4rXG4rXHRzc2lkX2llID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9TU0lELCBpZXMsIGllX2xlbik7XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGluZm8sIFx1MDAyNnBrdF9saXN0W05MODAyMTFfQkFORF82R0haXSwgbGlzdCkge1xuIFx0XHRpZiAoZXRoZXJfYWRkcl9lcXVhbChpbmZvLVx1MDAzZWJzc2lkLCBtZ210LVx1MDAzZWJzc2lkKSkge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jXG5pbmRleCA4ZGFkZDhkZjRmYzY1Li44MmI3NGRlZDY4NjMxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xuQEAgLTE2LDEwICsxNiwxNiBAQCB2b2lkIF9fcnR3ODlfd293X3BhcnNlX2FrbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNrYi1cdTAwM2VkYXRhO1xuIFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG4rXHRzaXplX3QgaGRyX2xlbiA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5hc3NvY19yZXEudmFyaWFibGUpO1xuIFx0Y29uc3QgdTggKnJzbiwgKmllcyA9IG1nbXQtXHUwMDNldS5hc3NvY19yZXEudmFyaWFibGU7XG4gXHRzdHJ1Y3QgcnR3ODlfcnNuX2llICpyc25faWU7XG4gXG4tXHRyc24gPSBjZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX1JTTiwgaWVzLCBza2ItXHUwMDNlbGVuKTtcbitcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBoZHJfbGVuKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRyc24gPSBjZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX1JTTiwgaWVzLFxuK1x0XHRcdCAgICAgICBza2ItXHUwMDNlbGVuIC0gaGRyX2xlbik7XG4rXG4gXHRpZiAoIXJzbilcbiBcdFx0cmV0dXJuO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6NDM6MjQuMzc3ODc5MTE3WiIsIlNlcSI6MzUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgzNTY1NzUzOTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaCBmb3IgUG90ZW50aWFsIE1lbW9yeSBTYWZldHkgSXNzdWVzKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIGZpZ3VyZSBvdXQgaXRzIHBvdGVudGlhbCBmb3IgaW50cm9kdWNpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIFNpbmNlIHdlJ3JlIGxvb2tpbmcgYXQgdGhpcyBmb3IgS01TQU4sIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQncyBhY3R1YWxseSB0b3VjaGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSAoTmVlZHNLTVNBTj10cnVlKSBvciBpZiBpdCdzIGp1c3QgZGVhbGluZyB3aXRoIG91dC1vZi1ib3VuZHMgYWNjZXNzIG9yIGJvdW5kcyBjaGVja2luZywgdGhpbmdzIGxpa2UgdGhhdCAoTmVlZHNLTVNBTj1mYWxzZSkuIExldCdzIHNlZS4uLlxuXG5BbHJpZ2h0LCB0aGUgcGF0Y2ggaXRzZWxmIG1vZGlmaWVzIHR3byBmdW5jdGlvbnMgd2l0aGluIHRoZSBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlcnM6IGBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4YCBpbiBgY29yZS5jYCBhbmQgYF9fcnR3ODlfd293X3BhcnNlX2FrbWAgaW4gYHdvdy5jYC4gRnJvbSB0aGUgZGlmZiwgaXQgbG9va3MgbGlrZSB0aGV5J3JlIGJvdGggZ2V0dGluZyBhIHNpbWlsYXIgZml4LiBCZWZvcmUsIHRoZXkgd2VyZSBzZWFyY2hpbmcgZm9yIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIHVzaW5nIGBjZmc4MDIxMV9maW5kX2llYCB3aXRoIGBza2ItXHUwMDNlbGVuYCBhcyB0aGUgYm91bmRhcnkuIFRoZSB1cGRhdGVkIGNvZGUgbm93IGluY2x1ZGVzIGEgY2hlY2sgdG8gZW5zdXJlIGBza2ItXHUwMDNlbGVuYCBpcyBub3Qgc21hbGxlciB0aGFuIGBoZHJfbGVuYCwgYW5kIGlmIHNvLCBpdCBleGl0cy4gT3RoZXJ3aXNlLCBpdCBjYWxjdWxhdGVzIGBpZV9sZW5gIChlc3NlbnRpYWxseSB0aGUgdmFsaWQgcGF5bG9hZCBsZW5ndGgpIGFuZCBwYXNzZXMgdGhhdCB0byBgY2ZnODAyMTFfZmluZF9pZWAuIFNvIGl0IGxvb2tzIGxpa2UgaXQncyBhZGRpbmcgYSBsZW5ndGggY2hlY2sgYmVmb3JlIHNlYXJjaGluZyBmb3IgdGhlIElFcy5cblxuSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgaGRyX2xlbmAgaXMgdXNlZCBmb3IgaW4gdGhlIGNvbnRleHQgb2YgdGhlc2UgZnVuY3Rpb25zIGFuZCB3aGF0IGBpZXNgIHBvaW50cyB0by4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gb2YgYHNrYmAuIElzIGBza2JgIGFsbG9jYXRlZCBieSB0aGUga2VybmVsIGFuZCwgaWYgc28sIGlzIGl0IGluaXRpYWxpemVkIGFwcHJvcHJpYXRlbHk/IEdpdmVuIHRoYXQgdGhlIGNvZGUncyBjaGFuZ2luZyBmcm9tIHBvdGVudGlhbGx5IHVzaW5nIHRoZSBmdWxsIGBza2ItXHUwMDNlbGVuYCB0byBjYWxjdWxhdGluZyBhIG5ldyBsZW5ndGgsIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2sgaWYgYGhkcl9sZW5gIGlzIG5vdCBwcm9wZXJseSBhY2NvdW50ZWQgZm9yLiBJJ20gZ29pbmcgdG8gbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgc3Vycm91bmRpbmcgY29udGV4dCBhbmQgZW5zdXJlIHdlJ3JlIG5vdCByZWFkaW5nIHBhc3QgdGhlIGludGVuZGVkIGJvdW5kYXJpZXMuIFRpbWUgdG8gdXNlIHJlYWQtZmlsZSBvciBncmVwcGVyIHRvIGdldCBhIGJldHRlciBwaWN0dXJlIG9mIHRoZSB3aG9sZSBzaXR1YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NzgsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo0NDo0Ny45NDM2MzY3NjlaIiwiU2VxIjozNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTM3MDUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTI1MDU9c3RhdGljIHZvaWQgcnR3ODlfY2FuY2VsXzZnaHpfcHJvYmVfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTI1MjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MjUzMDpzdGF0aWMgdm9pZCBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0yNTMxLVxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9MzAzOD1zdGF0aWMgdm9pZCBydHc4OV92aWZfcnhfc3RhdHNfaXRlcih2b2lkICpkYXRhLCB1OCAqbWFjLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMzA1OS1cXHQgICAgIGllZWU4MDIxMV9pc19wcm9iZV9yZXNwKGhkci1cXHUwMDNlZnJhbWVfY29udHJvbCkpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjMwNjA6XFx0XFx0cnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eChydHdkZXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMzA2MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6NDQ6NDguNDAzMDEyMjk5WiIsIlNlcSI6MzcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg1NjE0MTQzNTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqRGl2aW5nIGludG8gdGhlIFJlYWx0ZWsgV2lyZWxlc3MgRHJpdmVyKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgYHJ0dzg5YCBzZXJpZXMuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jYCwgYXJvdW5kIGxpbmUgMjUzMC4gSSdtIGd1ZXNzaW5nIHRoZXJlJ3Mgc29tZSBjb3JlIGZ1bmN0aW9uYWxpdHkgb3IgaW5pdGlhbGl6YXRpb24gaGFwcGVuaW5nIHRoZXJlIHRoYXQncyByZWxldmFudCB0byB0aGUgaXNzdWUgSSdtIGNoYXNpbmcuIFNpbXVsdGFuZW91c2x5LCBJIHNob3VsZCBwcm9iYWJseSBnbGFuY2UgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmNgIGFyb3VuZCBsaW5lIDE2LiBUaGUgXCJ3b3dcIiBkaXJlY3RvcnkgbGlrZWx5IGhhbmRsZXMgV2FrZS1vbi1XaXJlbGVzcywgd2hpY2ggaXMgb2Z0ZW4gYSBwb2ludCBvZiBjb250ZW50aW9uIGFuZCBjYW4gYmUgaW50ZXJ0d2luZWQgd2l0aCBjb3JlIHBvd2VyIG1hbmFnZW1lbnQgYW5kIGV2ZW50IGhhbmRsaW5nLiBJJ2xsIG5lZWQgdG8gY29ycmVsYXRlIHRoZSB0d28sIHNlZSBob3cgdGhleSBmaXQgdG9nZXRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwOTcsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo0NjoxNC4wMTcxNTg1NDJaIiwiU2VxIjozOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk1MzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI1MjUsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI1MjU6XFx0XFx0XFx0ICogc2luY2UgaWYgZHVyaW5nIHNjYW5uaW5nLCBwa3RfbGlzdCBpcyBhY2Nlc3NlZCBpbiBib3R0b20gaGFsZi5cXG4yNTI2OlxcdFxcdFxcdCAqL1xcbjI1Mjc6XFx0XFx0fVxcbjI1Mjg6XFx0fVxcbjI1Mjk6XFx0XFxuMjUzMDpcXHRzdGF0aWMgdm9pZCBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4yNTMxOlxcdFxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbjI1MzI6XFx0e1xcbjI1MzM6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2IpO1xcbjI1MzQ6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNrYi1cXHUwMDNlZGF0YTtcXG4yNTM1OlxcdFxcdHNpemVfdCBoZHJfbGVuID0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LCB1LmJlYWNvbi52YXJpYWJsZSk7XFxuMjUzNjpcXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkICpwa3RfbGlzdCA9IHJ0d2Rldi1cXHUwMDNlc2Nhbl9pbmZvLnBrdF9saXN0O1xcbjI1Mzc6XFx0XFx0c3RydWN0IHJ0dzg5X3BrdG9mbGRfaW5mbyAqaW5mbztcXG4yNTM4OlxcdFxcdGNvbnN0IHU4ICppZXMgPSBtZ210LVxcdTAwM2V1LmJlYWNvbi52YXJpYWJsZSwgKnNzaWRfaWU7XFxuMjUzOTpcXHRcXHRzaXplX3QgaWVfbGVuO1xcbjI1NDA6XFx0XFx0Ym9vbCBxdWV1ZV93b3JrID0gZmFsc2U7XFxuMjU0MTpcXHRcXG4yNTQyOlxcdFxcdGlmIChyeF9zdGF0dXMtXFx1MDAzZWJhbmQgIT0gTkw4MDIxMV9CQU5EXzZHSFopXFxuMjU0MzpcXHRcXHRcXHRyZXR1cm47XFxuMjU0NDpcXHRcXG4yNTQ1OlxcdFxcdGlmICh1bmxpa2VseSghKHJ0d2Rldi1cXHUwMDNlY2hpcC1cXHUwMDNlc3VwcG9ydF9iYW5kcyBcXHUwMDI2IEJJVChOTDgwMjExX0JBTkRfNkdIWikpKSkge1xcbjI1NDY6XFx0XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfVU5FWFAsIFxcXCJpbnZhbGlkIHJ4IG9uIHVuc3VwcG9ydGVkIDYgR0h6XFxcXG5cXFwiKTtcXG4yNTQ3OlxcdFxcdFxcdHJldHVybjtcXG4yNTQ4OlxcdFxcdH1cXG4yNTQ5OlxcdFxcbjI1NTA6XFx0XFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2MgaGRyX2xlbilcXG4yNTUxOlxcdFxcdFxcdHJldHVybjtcXG4yNTUyOlxcdFxcbjI1NTM6XFx0XFx0aWVfbGVuID0gc2tiLVxcdTAwM2VsZW4gLSBoZHJfbGVuO1xcbjI1NTQ6XFx0XFxuMjU1NTpcXHRcXHRzc2lkX2llID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9TU0lELCBpZXMsIGllX2xlbik7XFxuMjU1NjpcXHRcXG4yNTU3OlxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoaW5mbywgXFx1MDAyNnBrdF9saXN0W05MODAyMTFfQkFORF82R0haXSwgbGlzdCkge1xcbjI1NTg6XFx0XFx0XFx0aWYgKGV0aGVyX2FkZHJfZXF1YWwoaW5mby1cXHUwMDNlYnNzaWQsIG1nbXQtXFx1MDAzZWJzc2lkKSkge1xcbjI1NTk6XFx0XFx0XFx0XFx0aW5mby1cXHUwMDNlY2FuY2VsID0gdHJ1ZTtcXG4yNTYwOlxcdFxcdFxcdFxcdHF1ZXVlX3dvcmsgPSB0cnVlO1xcbjI1NjE6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMjU2MjpcXHRcXHRcXHR9XFxuMjU2MzpcXHRcXG4yNTY0OlxcdFxcdFxcdGlmICghc3NpZF9pZSB8fCBzc2lkX2llWzFdICE9IGluZm8tXFx1MDAzZXNzaWRfbGVuIHx8IGluZm8tXFx1MDAzZXNzaWRfbGVuID09IDApXFxuMjU2NTpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4yNTY2OlxcdFxcbjI1Njc6XFx0XFx0XFx0aWYgKG1lbWNtcChcXHUwMDI2c3NpZF9pZVsyXSwgaW5mby1cXHUwMDNlc3NpZCwgaW5mby1cXHUwMDNlc3NpZF9sZW4pID09IDApIHtcXG4yNTY4OlxcdFxcdFxcdFxcdGluZm8tXFx1MDAzZWNhbmNlbCA9IHRydWU7XFxuMjU2OTpcXHRcXHRcXHRcXHRxdWV1ZV93b3JrID0gdHJ1ZTtcXG4yNTcwOlxcdFxcdFxcdH1cXG4yNTcxOlxcdFxcdH1cXG4yNTcyOlxcdFxcbjI1NzM6XFx0XFx0aWYgKHF1ZXVlX3dvcmspXFxuMjU3NDpcXHRcXHRcXHR3aXBoeV93b3JrX3F1ZXVlKHJ0d2Rldi1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LCBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VjYW5jZWxfNmdoel9wcm9iZV93b3JrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6NDY6MTQuMDE3NTU2MzQyWiIsIlNlcSI6MzksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4NTk2Njg1MDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgUmVhbHRlayBXYWtlLW9uLVdMQU4gQ29kZSoqXG5cbkFscmlnaHQsIGxldCdzIHB1bGwgdXAgdGhlIHNvdXJjZSBjb2RlIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgUmVhbHRlayA4MDIuMTEgY2hpcHNldCBoYW5kbGVzIFdha2Utb24tV0xBTiBmdW5jdGlvbmFsaXR5LiBTcGVjaWZpY2FsbHksIEknbSBpbnRlcmVzdGVkIGluIGhvdyB0aGV5J3ZlIGltcGxlbWVudGVkIHRoZSBkcml2ZXIgaG9va3MsIHRoZSBmaWx0ZXJpbmcgbWVjaGFuaXNtcyBmb3Igc3BlY2lmaWMgZnJhbWUgdHlwZXMgKG1hZ2ljIHBhY2tldHMsIG11bHRpY2FzdCwgZXRjLiksIGFuZCB0aGUgcG93ZXIgbWFuYWdlbWVudCBzZXF1ZW5jZXMgaW52b2x2ZWQgdG8gdHJhbnNpdGlvbiB0aGUgTklDIGZyb20gYSBsb3ctcG93ZXIgc3RhdGUgYmFjayB0byBhY3RpdmUuIEkgd2FudCB0byBzZWUgaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggdGhlIGZpcm13YXJlLCBhbmQgaWYgdGhleSdyZSByZWx5aW5nIGhlYXZpbHkgb24gaGFyZHdhcmUgb2ZmbG9hZCBvciBpZiB0aGVyZSdzIGEgc2lnbmlmaWNhbnQgYW1vdW50IG9mIHNvZnR3YXJlIGludGVydmVudGlvbiBpbiBoYW5kbGluZyB0aGUgd2FrZS11cCB0cmlnZ2Vycy4gSSBhbHNvIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhpcyBpbXBsZW1lbnRhdGlvbiBhbGlnbnMgd2l0aCB0aGUgQUNQSSBzcGVjaWZpY2F0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGRvZXNuJ3QgaW50cm9kdWNlIHBvd2VyIGxlYWtzIHdoZW4gdGhlIGRldmljZSBpcyBzdXBwb3NlZCB0byBiZSBzbGVlcGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgYXMgdGhpcyBhcmVhIG9mdGVuIGhhcyBzdWJ0bGUgYnVncyBhbmQgcXVpcmtzLiBMZXTigJlzIGRpdmUgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyOTUsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjQ2OjMyLjYxNDI0NDczNVoiLCJTZXEiOjQwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTYxODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxcbiAgIDI6XFx0LyogQ29weXJpZ2h0KGMpIDIwMTktMjAyMiAgUmVhbHRlayBDb3Jwb3JhdGlvblxcbiAgIDM6XFx0ICovXFxuICAgNDpcXHQjaW5jbHVkZSBcXFwiY2FtLmhcXFwiXFxuICAgNTpcXHQjaW5jbHVkZSBcXFwiY29yZS5oXFxcIlxcbiAgIDY6XFx0I2luY2x1ZGUgXFxcImRlYnVnLmhcXFwiXFxuICAgNzpcXHQjaW5jbHVkZSBcXFwiZncuaFxcXCJcXG4gICA4OlxcdCNpbmNsdWRlIFxcXCJtYWMuaFxcXCJcXG4gICA5OlxcdCNpbmNsdWRlIFxcXCJwaHkuaFxcXCJcXG4gIDEwOlxcdCNpbmNsdWRlIFxcXCJwcy5oXFxcIlxcbiAgMTE6XFx0I2luY2x1ZGUgXFxcInJlZy5oXFxcIlxcbiAgMTI6XFx0I2luY2x1ZGUgXFxcInV0aWwuaFxcXCJcXG4gIDEzOlxcdCNpbmNsdWRlIFxcXCJ3b3cuaFxcXCJcXG4gIDE0OlxcdFxcbiAgMTU6XFx0dm9pZCBfX3J0dzg5X3dvd19wYXJzZV9ha20oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiAgMTY6XFx0e1xcbiAgMTc6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNrYi1cXHUwMDNlZGF0YTtcXG4gIDE4OlxcdFxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuICAxOTpcXHRcXHRzaXplX3QgaGRyX2xlbiA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5hc3NvY19yZXEudmFyaWFibGUpO1xcbiAgMjA6XFx0XFx0Y29uc3QgdTggKnJzbiwgKmllcyA9IG1nbXQtXFx1MDAzZXUuYXNzb2NfcmVxLnZhcmlhYmxlO1xcbiAgMjE6XFx0XFx0c3RydWN0IHJ0dzg5X3Jzbl9pZSAqcnNuX2llO1xcbiAgMjI6XFx0XFxuICAyMzpcXHRcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyBoZHJfbGVuKVxcbiAgMjQ6XFx0XFx0XFx0cmV0dXJuO1xcbiAgMjU6XFx0XFxuICAyNjpcXHRcXHRyc24gPSBjZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX1JTTiwgaWVzLFxcbiAgMjc6XFx0XFx0XFx0XFx0ICAgICAgIHNrYi1cXHUwMDNlbGVuIC0gaGRyX2xlbik7XFxuICAyODpcXHRcXG4gIDI5OlxcdFxcdGlmICghcnNuKVxcbiAgMzA6XFx0XFx0XFx0cmV0dXJuO1xcbiAgMzE6XFx0XFxuICAzMjpcXHRcXHRyc25faWUgPSAoc3RydWN0IHJ0dzg5X3Jzbl9pZSAqKXJzbjtcXG4gIDMzOlxcdFxcdHJ0d193b3ctXFx1MDAzZWFrbSA9IHJzbl9pZS1cXHUwMDNlYWttX2NpcGhlcl9zdWl0ZS50eXBlO1xcbiAgMzQ6XFx0fVxcbiAgMzU6XFx0XFxuICAzNjpcXHQjZGVmaW5lIFJUVzg5X0NJUEhFUl9JTkZPX0RFRihjaXBoZXIpIFxcXFxcXG4gIDM3OlxcdFxcdHtXTEFOX0NJUEhFUl9TVUlURV8gIyMgY2lwaGVyLCAuZndfYWxnID0gUlRXODlfV09XX0ZXX0FMR18gIyMgY2lwaGVyLCBcXFxcXFxuICAzODpcXHRcXHQgLmxlbiA9IFdMQU5fS0VZX0xFTl8gIyMgY2lwaGVyfVxcbiAgMzk6XFx0XFxuICA0MDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2NpcGhlcl9pbmZvIHJ0dzg5X2NpcGhlcl9pbmZvX2RlZnNbXSA9IHtcXG4gIDQxOlxcdFxcdFJUVzg5X0NJUEhFUl9JTkZPX0RFRihXRVA0MCksXFxuICA0MjpcXHRcXHRSVFc4OV9DSVBIRVJfSU5GT19ERUYoV0VQMTA0KSxcXG4gIDQzOlxcdFxcdFJUVzg5X0NJUEhFUl9JTkZPX0RFRihUS0lQKSxcXG4gIDQ0OlxcdFxcdFJUVzg5X0NJUEhFUl9JTkZPX0RFRihDQ01QKSxcXG4gIDQ1OlxcdFxcdFJUVzg5X0NJUEhFUl9JTkZPX0RFRihHQ01QKSxcXG4gIDQ2OlxcdFxcdFJUVzg5X0NJUEhFUl9JTkZPX0RFRihDQ01QXzI1NiksXFxuICA0NzpcXHRcXHRSVFc4OV9DSVBIRVJfSU5GT19ERUYoR0NNUF8yNTYpLFxcbiAgNDg6XFx0XFx0UlRXODlfQ0lQSEVSX0lORk9fREVGKEFFU19DTUFDKSxcXG4gIDQ5OlxcdH07XFxuICA1MDpcXHRcXG4gIDUxOlxcdCN1bmRlZiBSVFc4OV9DSVBIRVJfSU5GT19ERUZcXG4gIDUyOlxcdFxcbiAgNTM6XFx0c3RhdGljIGNvbnN0XFxuICA1NDpcXHRzdHJ1Y3QgcnR3ODlfY2lwaGVyX2luZm8gKnJ0dzg5X2NpcGhlcl9hbGdfcmVjb2duaXplKHUzMiBjaXBoZXIpXFxuICA1NTpcXHR7XFxuICA1NjpcXHRcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2lwaGVyX2luZm8gKmNpcGhlcl9pbmZvX2RlZnM7XFxuICA1NzpcXHRcXHRpbnQgaTtcXG4gIDU4OlxcdFxcbiAgNTk6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUocnR3ODlfY2lwaGVyX2luZm9fZGVmcyk7IGkrKykge1xcbiAgNjA6XFx0XFx0XFx0Y2lwaGVyX2luZm9fZGVmcyA9IFxcdTAwMjZydHc4OV9jaXBoZXJfaW5mb19kZWZzW2ldO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo0NjozMi42MTQzNjI2MjZaIiwiU2VxIjo0MSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTkwNjExNDExMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQnVnIEFuYWx5c2lzIGFuZCBLTVNBTiBFdmFsdWF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgdGhlIHJvb3QgY2F1c2Ugb2YgdGhpcyBidWcuIEl0IGFwcGVhcnMgd2UgaGFkIGEgY2xhc3NpYyBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eS4gVGhlIHByZXZpb3VzIGNvZGUsIHNwZWNpZmljYWxseSB0aGlzIGxpbmU6IGBzc2lkX2llID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9TU0lELCBpZXMsIHNrYi1cdTAwM2VsZW4pO2AsIHdhcyB0aGUgY3VscHJpdC4gSXQgc2VlbXMgdGhlIGBpZXNgIHBvaW50ZXIgd2FzIHJlZmVyZW5jaW5nIGBtZ210LVx1MDAzZXUuYmVhY29uLnZhcmlhYmxlYCwgYW4gb2Zmc2V0IGZyb20gYHNrYi1cdTAwM2VkYXRhYCwgYW5kIHRoZSBsZW5ndGggcGFzc2VkIHRvIHRoZSBmdW5jdGlvbiwgYHNrYi1cdTAwM2VsZW5gLCBhbGxvd2VkIGBjZmc4MDIxMV9maW5kX2llYCB0byBwb3RlbnRpYWxseSByZWFkIHBhc3QgdGhlIGFjdHVhbCBidWZmZXIgYm91bmRhcmllcyBvZiBgc2tiLVx1MDAzZWRhdGFgLCBieSBhbiBhbW91bnQgZXF1YWwgdG8gYGhkcl9sZW5gLiBUaGF0J3MgYSBkaXJlY3QgYnVmZmVyIG92ZXItcmVhZCBzaXR1YXRpb24hIFRoZSBhZGRlZCBjaGVjayBmb3IgYHNrYi1cdTAwM2VsZW4gXHUwMDNjIGhkcl9sZW5gIGlzIGtleSwgYXMgaXMgdGhlIHBhdGNoIHRvIHJlZHVjZSB0aGUgcmVhZCBsZW5ndGggYnkgdGhhdCB2YWx1ZS4gS0FTQU4gd291bGQgZGVmaW5pdGVseSBjYXRjaCBzb21ldGhpbmcgbGlrZSB0aGlzLlxuXG5OZXh0LCBJIG5lZWQgdG8gZXZhbHVhdGUgdGhlIEtNU0FOIGltcGxpY2F0aW9ucy4gVGhlIGZ1bmN0aW9ucyBpbnZvbHZlIHBhcnNpbmcgODAyLjExIElFcyBmcm9tIHBhY2tldCBkYXRhIHdpdGhpbiBhbiBgc2tiYC4gU28gdGhlIGltcG9ydGFudCBwYXJ0IGlzIG1ha2luZyBzdXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGdldHMgYWxsb2NhdGVkIG9yIGxlYWtlZCB0byB1c2VyIHNwYWNlLCByaWdodD9cblxuVGhlIGZpeCBhZGp1c3RzIHRoZSBsZW5ndGggdG8gYmUgcGFzc2VkIHRvIGBjZmc4MDIxMV9maW5kX2llYCB0byBgc2tiLVx1MDAzZWxlbiAtIGhkcl9sZW5gIGJ1dCBvbmx5IGlmIGBza2ItXHUwMDNlbGVuIFx1MDAzZT0gaGRyX2xlbmAuIFRoaXMgcHJldmVudHMgdGhvc2UgT09CIHJlYWRzIHBhc3QgdGhlIGVuZCBvZiB0aGUgYHNrYmAgYnVmZmVyLiBTaW5jZSB3ZSdyZSBqdXN0IHByZXZlbnRpbmcgYWNjZXNzIGFuZCBub3QgaW50cm9kdWNpbmcgYW55dGhpbmcgbmV3LCB0aGVyZSBhcmVuJ3QgYW55IHBvdGVudGlhbCBsZWFrcy5cblxuTm93LCBjaGVja2luZyB0aGUgS01TQU4gcnVsZXM6IERvZXMgdGhlIGZpeCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSB3aGVyZSBmaWVsZHMvcGFkZGluZyBtaWdodCBiZSB1bmluaXRpYWxpemVkPyBOby4gRG9lcyBpdCBpbnRyb2R1Y2UgY29uZGl0aW9uYWwgbG9naWMgZGVwZW5kaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzPyBOb3BlLiBEb2VzIGl0IGFsbG9jYXRlL2luaXRpYWxpemUgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcz8gTmVnYXRpdmUuIERvZXMgaXQgaW50cm9kdWNlIGJvdW5kcyBjaGVja3MvbGVuZ3RocyBhbGxvd2luZyBhY2Nlc3MgdG8gdW5pbml0aWFsaXplZCBieXRlcz8gTm8sIGlmIGFueXRoaW5nLCBpdCBwcmV2ZW50cyB0aGF0LiBUaHVzLCBubyBLTVNBTiBjb25jZXJucyBoZXJlLlxuXG5UaGVyZWZvcmUsIGBOZWVkc0tNU0FOYCBpcyBkZWZpbml0ZWx5IGBmYWxzZWAuIEknbGwgY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggdGhhdCBmbGFnIGFuZCBjbGVhciB0aGUgYEtNU0FOUmVhc29uaW5nYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY1MiwiT3V0cHV0VG9rZW5zIjoyMjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo0NzozMS42NzU1MDU5MjRaIiwiU2VxIjo0MiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODY0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgKE9PQikgcmVhZCB2dWxuZXJhYmlsaXR5IGluIHRoZSBydHc4OSBkcml2ZXIgKGJvdGggaW4gcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eCBhbmQgX19ydHc4OV93b3dfcGFyc2VfYWttKS4gUHJldmlvdXNseSwgdGhlIGZ1bGwgcGFja2V0IGxlbmd0aCAoc2tiLVxcdTAwM2VsZW4pIHdhcyBwYXNzZWQgdG8gY2ZnODAyMTFfZmluZF9pZSBpbnN0ZWFkIG9mIHRoZSBsZW5ndGggb2YgdGhlIGluZm9ybWF0aW9uIGVsZW1lbnRzIChza2ItXFx1MDAzZWxlbiAtIGhkcl9sZW4pLCBhbmQgdGhlcmUgd2FzIG5vIGNoZWNrIHZlcmlmeWluZyB0aGF0IHNrYi1cXHUwMDNlbGVuIFxcdTAwM2U9IGhkcl9sZW4uIFRoaXMgY291bGQgbGVhZCB0byByZWFkaW5nIHVwIHRvIGhkcl9sZW4gYnl0ZXMgcGFzdCB0aGUgZW5kIG9mIHRoZSBza2IgZGF0YSBidWZmZXIuXFxuXFxuT3V0LW9mLWJvdW5kcyBidWZmZXIgcmVhZHMgYXJlIHN0YW5kYXJkIG1lbW9yeSBzYWZldHkgYnVncyBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciByZWFkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IChzdGFjaywgaGVhcCwgb3IgcGFnZSBhbGxvY2F0aW9ucykgb3IgbGVhayBrZXJuZWwgbWVtb3J5IHRvIHVzZXJzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgKE9PQikgcmVhZCB2dWxuZXJhYmlsaXR5IGluIHRoZSBydHc4OSBkcml2ZXIgKGJvdGggaW4gcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eCBhbmQgX19ydHc4OV93b3dfcGFyc2VfYWttKS4gUHJldmlvdXNseSwgdGhlIGZ1bGwgcGFja2V0IGxlbmd0aCAoc2tiLVxcdTAwM2VsZW4pIHdhcyBwYXNzZWQgdG8gY2ZnODAyMTFfZmluZF9pZSBpbnN0ZWFkIG9mIHRoZSBsZW5ndGggb2YgdGhlIGluZm9ybWF0aW9uIGVsZW1lbnRzIChza2ItXFx1MDAzZWxlbiAtIGhkcl9sZW4pLCBhbmQgdGhlcmUgd2FzIG5vIGNoZWNrIHZlcmlmeWluZyB0aGF0IHNrYi1cXHUwMDNlbGVuIFxcdTAwM2U9IGhkcl9sZW4uIFRoaXMgY291bGQgbGVhZCB0byByZWFkaW5nIHVwIHRvIGhkcl9sZW4gYnl0ZXMgcGFzdCB0aGUgZW5kIG9mIHRoZSBza2IgZGF0YSBidWZmZXIuXFxuXFxuT3V0LW9mLWJvdW5kcyBidWZmZXIgcmVhZHMgYXJlIHN0YW5kYXJkIG1lbW9yeSBzYWZldHkgYnVncyBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciByZWFkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IChzdGFjaywgaGVhcCwgb3IgcGFnZSBhbGxvY2F0aW9ucykgb3IgbGVhayBrZXJuZWwgbWVtb3J5IHRvIHVzZXJzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwq7g7[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-30 14:47:48 +0000 UTC FinishedAt: 2026-08-30 15:47:32 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "76671054f9a1ff6abb976583cd8da37650acdc97", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "CFG80211", "RTW89", "RTW89_CORE", "RTW89_USB", "RTW89_8852AU", "RTW89_PCI", "RTW89_8852AE", "PM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "76671054f9a1ff6abb976583cd8da37650acdc97", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "CFG80211", "RTW89", "RTW89_CORE", "RTW89_USB", "RTW89_8852AU", "RTW89_PCI", "RTW89_8852AE", "PM" ], "series_id": "fcbd670d-9a29-4628-ad61-6903e6c1cac9" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__rtw89_wow_parse_akm", "rtw89_core_rx", "rtw89_core_tx_write" ], "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+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NDFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtSVFc4OSYjMzQ7LAogICAgJiMzNDtSVFc4OV9DT1JFJiMzNDssCiAgICAmIzM0O1JUVzg5X1VTQiYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQVUmIzM0OywKICAgICYjMzQ7UlRXODlfUENJJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJBRSYjMzQ7LAogICAgJiMzNDtQTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fcnR3ODlfd293X3BhcnNlX2FrbSYjMzQ7LAogICAgJiMzNDtydHc4OV9jb3JlX3J4JiMzNDssCiAgICAmIzM0O3J0dzg5X2NvcmVfdHhfd3JpdGUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIChPT0IpIHJlYWQgdnVsbmVyYWJpbGl0eSBpbiB0aGUgcnR3ODkgZHJpdmVyIChib3RoIGluIHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHggYW5kIF9fcnR3ODlfd293X3BhcnNlX2FrbSkuIFByZXZpb3VzbHksIHRoZSBmdWxsIHBhY2tldCBsZW5ndGggKHNrYi1cdTAwM2VsZW4pIHdhcyBwYXNzZWQgdG8gY2ZnODAyMTFfZmluZF9pZSBpbnN0ZWFkIG9mIHRoZSBsZW5ndGggb2YgdGhlIGluZm9ybWF0aW9uIGVsZW1lbnRzIChza2ItXHUwMDNlbGVuIC0gaGRyX2xlbiksIGFuZCB0aGVyZSB3YXMgbm8gY2hlY2sgdmVyaWZ5aW5nIHRoYXQgc2tiLVx1MDAzZWxlbiBcdTAwM2U9IGhkcl9sZW4uIFRoaXMgY291bGQgbGVhZCB0byByZWFkaW5nIHVwIHRvIGhkcl9sZW4gYnl0ZXMgcGFzdCB0aGUgZW5kIG9mIHRoZSBza2IgZGF0YSBidWZmZXIuXG5cbk91dC1vZi1ib3VuZHMgYnVmZmVyIHJlYWRzIGFyZSBzdGFuZGFyZCBtZW1vcnkgc2FmZXR5IGJ1Z3MgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgcmVhZCB1bmluaXRpYWxpemVkIG1lbW9yeSAoc3RhY2ssIGhlYXAsIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIG9yIGxlYWsga2VybmVsIG1lbW9yeSB0byB1c2Vyc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdGllcyBpbiBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KCkgYW5kIF9fcnR3ODlfd293X3BhcnNlX2FrbSgpIGJ5IHZhbGlkYXRpbmcgdGhhdCBza2ItXHUwMDNlbGVuIGlzIGF0IGxlYXN0IHRoZSBoZWFkZXIgbGVuZ3RoIGFuZCBwYXNzaW5nIHRoZSBhZGp1c3RlZCBpbmZvcm1hdGlvbiBlbGVtZW50IGxlbmd0aCAoc2tiLVx1MDAzZWxlbiAtIGhkcl9sZW4pIHRvIGNmZzgwMjExX2ZpbmRfaWUoKSBpbnN0ZWFkIG9mIHRoZSB1bmFkanVzdGVkIHNrYi1cdTAwM2VsZW4uIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIFJYIGFuZCBUWCBwYWNrZXQgcHJvY2Vzc2luZyBvbiBydHc4OSBkZXZpY2VzICh3aGljaCBpbmNsdWRlIFVTQi1zdXBwb3J0ZWQgZGV2aWNlcyB0ZXN0YWJsZSB2aWEgVVNCIGVtdWxhdGlvbiBpbiB2aXJ0dWFsIGVudmlyb25tZW50cykuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6MDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjOWFiZDg0NDA5YWIyZDI0Mjk5OGVhOWM0NGFkMDk0NTllOWVkZDVmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMzAgMTU6MDU6MzMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuY1xuaW5kZXggNjhkYWQ2MDkwZjg3ZS4uN2I0NjcxNWVhMTJkYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuY1xuQEAgLTI1MzIsOSAmIzQzOzI1MzIsMTEgQEAgc3RhdGljIHZvaWQgcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2IpO1xuIFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNrYi1cdTAwM2VkYXRhO1xuJiM0MztcdHNpemVfdCBoZHJfbGVuID0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LCB1LmJlYWNvbi52YXJpYWJsZSk7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkICpwa3RfbGlzdCA9IHJ0d2Rldi1cdTAwM2VzY2FuX2luZm8ucGt0X2xpc3Q7XG4gXHRzdHJ1Y3QgcnR3ODlfcGt0b2ZsZF9pbmZvICppbmZvO1xuIFx0Y29uc3QgdTggKmllcyA9IG1nbXQtXHUwMDNldS5iZWFjb24udmFyaWFibGUsICpzc2lkX2llO1xuJiM0MztcdHNpemVfdCBpZV9sZW47XG4gXHRib29sIHF1ZXVlX3dvcmsgPSBmYWxzZTtcbiBcbiBcdGlmIChyeF9zdGF0dXMtXHUwMDNlYmFuZCAhPSBOTDgwMjExX0JBTkRfNkdIWilcbkBAIC0yNTQ1LDcgJiM0MzsyNTQ3LDEyIEBAIHN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4tXHRzc2lkX2llID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9TU0lELCBpZXMsIHNrYi1cdTAwM2VsZW4pO1xuJiM0MztcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBoZHJfbGVuKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRpZV9sZW4gPSBza2ItXHUwMDNlbGVuIC0gaGRyX2xlbjtcbiYjNDM7XG4mIzQzO1x0c3NpZF9pZSA9IGNmZzgwMjExX2ZpbmRfaWUoV0xBTl9FSURfU1NJRCwgaWVzLCBpZV9sZW4pO1xuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpbmZvLCBcdTAwMjZwa3RfbGlzdFtOTDgwMjExX0JBTkRfNkdIWl0sIGxpc3QpIHtcbiBcdFx0aWYgKGV0aGVyX2FkZHJfZXF1YWwoaW5mby1cdTAwM2Vic3NpZCwgbWdtdC1cdTAwM2Vic3NpZCkpIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xuaW5kZXggOGRhZGQ4ZGY0ZmM2NS4uODJiNzRkZWQ2ODYzMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmNcbkBAIC0xNiwxMCAmIzQzOzE2LDE2IEBAIHZvaWQgX19ydHc4OV93b3dfcGFyc2VfYWttKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2tiLVx1MDAzZWRhdGE7XG4gXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbiYjNDM7XHRzaXplX3QgaGRyX2xlbiA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5hc3NvY19yZXEudmFyaWFibGUpO1xuIFx0Y29uc3QgdTggKnJzbiwgKmllcyA9IG1nbXQtXHUwMDNldS5hc3NvY19yZXEudmFyaWFibGU7XG4gXHRzdHJ1Y3QgcnR3ODlfcnNuX2llICpyc25faWU7XG4gXG4tXHRyc24gPSBjZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX1JTTiwgaWVzLCBza2ItXHUwMDNlbGVuKTtcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgaGRyX2xlbilcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0cnNuID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9SU04sIGllcyxcbiYjNDM7XHRcdFx0ICAgICAgIHNrYi1cdTAwM2VsZW4gLSBoZHJfbGVuKTtcbiYjNDM7XG4gXHRpZiAoIXJzbilcbiBcdFx0cmV0dXJuO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjA1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjM3bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtSVFc4OSYjMzQ7LAogICAgJiMzNDtSVFc4OV9DT1JFJiMzNDssCiAgICAmIzM0O1JUVzg5X1VTQiYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQVUmIzM0OywKICAgICYjMzQ7UlRXODlfUENJJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJBRSYjMzQ7LAogICAgJiMzNDtQTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fcnR3ODlfd293X3BhcnNlX2FrbSYjMzQ7LAogICAgJiMzNDtydHc4OV9jb3JlX3J4JiMzNDssCiAgICAmIzM0O3J0dzg5X2NvcmVfdHhfd3JpdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdGllcyBpbiBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KCkgYW5kIF9fcnR3ODlfd293X3BhcnNlX2FrbSgpIGJ5IHZhbGlkYXRpbmcgdGhhdCBza2ItXHUwMDNlbGVuIGlzIGF0IGxlYXN0IHRoZSBoZWFkZXIgbGVuZ3RoIGFuZCBwYXNzaW5nIHRoZSBhZGp1c3RlZCBpbmZvcm1hdGlvbiBlbGVtZW50IGxlbmd0aCAoc2tiLVx1MDAzZWxlbiAtIGhkcl9sZW4pIHRvIGNmZzgwMjExX2ZpbmRfaWUoKSBpbnN0ZWFkIG9mIHRoZSB1bmFkanVzdGVkIHNrYi1cdTAwM2VsZW4uIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIFJYIGFuZCBUWCBwYWNrZXQgcHJvY2Vzc2luZyBvbiBydHc4OSBkZXZpY2VzICh3aGljaCBpbmNsdWRlIFVTQi1zdXBwb3J0ZWQgZGV2aWNlcyB0ZXN0YWJsZSB2aWEgVVNCIGVtdWxhdGlvbiBpbiB2aXJ0dWFsIGVudmlyb25tZW50cykuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjOWFiZDg0NDA5YWIyZDI0Mjk5OGVhOWM0NGFkMDk0NTllOWVkZDVmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMzAgMTU6MDU6MzMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jCmluZGV4IDY4ZGFkNjA5MGY4N2UuLjdiNDY3MTVlYTEyZGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jCkBAIC0yNTMyLDkgJiM0MzsyNTMyLDExIEBAIHN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogewogCXN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMgPSBJRUVFODAyMTFfU0tCX1JYQ0Ioc2tiKTsKIAlzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2tiLSZndDtkYXRhOwomIzQzOwlzaXplX3QgaGRyX2xlbiA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5iZWFjb24udmFyaWFibGUpOwogCXN0cnVjdCBsaXN0X2hlYWQgKnBrdF9saXN0ID0gcnR3ZGV2LSZndDtzY2FuX2luZm8ucGt0X2xpc3Q7CiAJc3RydWN0IHJ0dzg5X3BrdG9mbGRfaW5mbyAqaW5mbzsKIAljb25zdCB1OCAqaWVzID0gbWdtdC0mZ3Q7dS5iZWFjb24udmFyaWFibGUsICpzc2lkX2llOwomIzQzOwlzaXplX3QgaWVfbGVuOwogCWJvb2wgcXVldWVfd29yayA9IGZhbHNlOwogCiAJaWYgKHJ4X3N0YXR1cy0mZ3Q7YmFuZCAhPSBOTDgwMjExX0JBTkRfNkdIWikKQEAgLTI1NDUsNyAmIzQzOzI1NDcsMTIgQEAgc3RhdGljIHZvaWQgcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsCiAJCXJldHVybjsKIAl9CiAKLQlzc2lkX2llID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9TU0lELCBpZXMsIHNrYi0mZ3Q7bGVuKTsKJiM0MzsJaWYgKHNrYi0mZ3Q7bGVuICZsdDsgaGRyX2xlbikKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJaWVfbGVuID0gc2tiLSZndDtsZW4gLSBoZHJfbGVuOwomIzQzOwomIzQzOwlzc2lkX2llID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9TU0lELCBpZXMsIGllX2xlbik7CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGluZm8sICZhbXA7cGt0X2xpc3RbTkw4MDIxMV9CQU5EXzZHSFpdLCBsaXN0KSB7CiAJCWlmIChldGhlcl9hZGRyX2VxdWFsKGluZm8tJmd0O2Jzc2lkLCBtZ210LSZndDtic3NpZCkpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jCmluZGV4IDhkYWRkOGRmNGZjNjUuLjgyYjc0ZGVkNjg2MzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYwpAQCAtMTYsMTAgJiM0MzsxNiwxNiBAQCB2b2lkIF9fcnR3ODlfd293X3BhcnNlX2FrbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNrYi0mZ3Q7ZGF0YTsKIAlzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gJmFtcDtydHdkZXYtJmd0O3dvdzsKJiM0MzsJc2l6ZV90IGhkcl9sZW4gPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUuYXNzb2NfcmVxLnZhcmlhYmxlKTsKIAljb25zdCB1OCAqcnNuLCAqaWVzID0gbWdtdC0mZ3Q7dS5hc3NvY19yZXEudmFyaWFibGU7CiAJc3RydWN0IHJ0dzg5X3Jzbl9pZSAqcnNuX2llOwogCi0JcnNuID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9SU04sIGllcywgc2tiLSZndDtsZW4pOwomIzQzOwlpZiAoc2tiLSZndDtsZW4gJmx0OyBoZHJfbGVuKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlyc24gPSBjZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX1JTTiwgaWVzLAomIzQzOwkJCSAgICAgICBza2ItJmd0O2xlbiAtIGhkcl9sZW4pOwomIzQzOwogCWlmICghcnNuKQogCQlyZXR1cm47CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg4MQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWx0ZWsgUlRXODkgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgYW5kIGltcGFjdC4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIG1vZGlmaWNhdGlvbnMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9gIGRpcmVjdG9yeSwgc3BlY2lmaWNhbGx5IGBjb3JlLmNgIGFuZCBgd293LmNgLiBSaWdodCBhd2F5LCBJJiMzOTttIHRoaW5raW5nLCAmIzM0O0lzIHRoaXMgZHJpdmVyIGZvciB0aGUgUmVhbHRlayA4MDIuMTFheCBkZXZpY2VzPyYjMzQ7IFRoYXQmIzM5O3MgdGhlIGZpcnN0IHF1ZXN0aW9uLiBJIG5lZWQgdG8gY29uZmlybSB0aGUgdGFyZ2V0ZWQgaGFyZHdhcmUuCgpOZXh0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJhbCBpbXBsaWNhdGlvbnMuIFdoYXQgaW50ZXJmYWNlcyBkb2VzIHRoaXMgZHJpdmVyIHN1cHBvcnQ/IFBDSWU/IFVTQj8gU0RJTz8gVGhpcyB3aWxsIGdyZWF0bHkgYWZmZWN0IGhvdyB3ZSB0ZXN0IGl0LiBDYW4gSSB0ZXN0IHRoaXMgdmlydHVhbGx5LCBtYXliZSB3aXRoIFFFTVUgb3Igc3l6a2FsbGVyPyBPciBkbyBJIG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUgdG8gZ2V0IGEgbWVhbmluZ2Z1bCB0ZXN0PwoKSG9sZCBvbiwgYmVmb3JlIEkgZ2V0IHRvbyBmYXIsIGxldCBtZSBjaGVjayB0aGUgYEtjb25maWdgIGZvciBSVFc4OS4gVGhhdCBzaG91bGQgcXVpY2tseSB0ZWxsIG1lIHdoYXQgYnVzIHR5cGVzIGFyZSBzdXBwb3J0ZWQgYW5kIGhvdyB0aGUgZHJpdmVyIGlzIGNvbmZpZ3VyZWQuIFRoYXQmIzM5O2xsIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbnN0cmFpbnRzIG9mIHRoZSBjaGFuZ2VzLiBUaW1lIHRvIGZpcmUgdXAgZ3JlcHBlciBvciBqdXN0IHJlYWQgdGhvc2UgZmlsZXMgZGlyZWN0bHkuIEdvdHRhIGdldCB0aGUgYmlnIHBpY3R1cmUgZmlyc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJUVzg5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjI6bWVudWNvbmZpZyBSVFc4OVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDgwMi4xMWF4IHdpcmVsZXNzIGNoaXBzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc9MTE9aWYgUlRXODlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMzpjb25maWcgUlRXODlfQ09SRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTc6Y29uZmlnIFJUVzg5X1BDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE4LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMDpjb25maWcgUlRXODlfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjEtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIzOmNvbmZpZyBSVFc4OV84ODUxQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI0LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyNjpjb25maWcgUlRXODlfODg1MkFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNy1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6Mjk6Y29uZmlnIFJUVzg5Xzg4NTJCX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMwLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzozMjpjb25maWcgUlRXODlfODg1MkJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zMy1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MzU6Y29uZmlnIFJUVzg5Xzg4NTJCVFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTM2LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzozODpjb25maWcgUlRXODlfODg1MkNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zOS1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NDE6Y29uZmlnIFJUVzg5Xzg5MjJBXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDItXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjQ0OmNvbmZpZyBSVFc4OV84ODUxQkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00NS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MUJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjU1OmNvbmZpZyBSVFc4OV84ODUxQlVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy01Ni1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MUJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjY2OmNvbmZpZyBSVFc4OV84ODUyQUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy02Ny1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkFFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjc3OmNvbmZpZyBSVFc4OV84ODUyQVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy03OC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjg4OmNvbmZpZyBSVFc4OV84ODUyQkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04OS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEwMDpjb25maWcgUlRXODlfODg1MkJVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTAxLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjExMjpjb25maWcgUlRXODlfODg1MkJURVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTExMy1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkJFLVZUIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMjQ6Y29uZmlnIFJUVzg5Xzg4NTJDRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyNS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkNFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2RSkgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTM1OmNvbmZpZyBSVFc4OV84ODUyQ1VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMzYtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJDVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNkUpIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE0Njpjb25maWcgUlRXODlfODkyMkFFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTQ3LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4OTIyQUUvODkyMkFFLVZTIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA3KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNjA6Y29uZmlnIFJUVzg5Xzg5MjJBVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2MS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODkyMkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA3KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNzI6Y29uZmlnIFJUVzg5X0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTczLVx0Ym9vbFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNzU6Y29uZmlnIFJUVzg5X0RFQlVHTVNHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTc2LVx0Ym9vbCBcJiMzNDtSZWFsdGVrIHJ0dzg5IGRlYnVnIG1lc3NhZ2Ugc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTg0OmNvbmZpZyBSVFc4OV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTg1LVx0Ym9vbCBcJiMzNDtSZWFsdGVrIHJ0dzg5IGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2NjcKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAyMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUlRXODkgVVNCIEFkYXB0ZXIgSW52ZXN0aWdhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHJlbWluZCBteXNlbGYgb2YgdGhlIFJUVzg5IFVTQiBhZGFwdGVyIHZhcmlhbnRzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGg6IGBSVFc4OV84ODUxQlVgLCBgUlRXODlfODg1MkFVYCwgYFJUVzg5Xzg4NTJCVWAsIGBSVFc4OV84ODUyQ1VgLCBhbmQgYFJUVzg5Xzg5MjJBVWAuIE5vdywgdGhlIGludGVyZXN0aW5nIHBhcnQ6IGNhbiB3ZSBlZmZlY3RpdmVseSBwcm9iZSBhbmQgZnV6eiB0aGVzZSBVU0ItY29ubmVjdGVkIGFkYXB0ZXJzIHZpYSBVU0IgZW11bGF0aW9uIHRlY2huaXF1ZXM/IEkmIzM5O20gdGhpbmtpbmcgb2YgVVNCIFJhdywgVVNCIGdhZGdldCwgYW5kIHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMg4oCTIHNwZWNpZmljYWxseSwgdGhlIGBzeXpfdXNiX2Nvbm5lY3RgIGNhbGwgY29tZXMgdG8gbWluZC4gCgpUaGUgY29yZSBxdWVzdGlvbiBoZXJlIGlzIHdoZXRoZXIgd2UgY2FuIGxldmVyYWdlIHRoZXNlIGVtdWxhdGlvbiBtZXRob2RzIChzeXprYWxsZXImIzM5O3MgcmF3IFVTQiBkcml2ZXIsIHZ1c2IsIGR1bW15X2hjZCkgdG8gaW50ZXJhY3Qgd2l0aCBhbmQgcG90ZW50aWFsbHkgZXhwbG9pdCB2dWxuZXJhYmlsaXRpZXMgaW4gdGhlc2Ugd2lyZWxlc3MgYWRhcHRlcnMuCgpCdXQgYmVmb3JlIGRpdmluZyB0b28gZGVlcCBpbnRvIHRoYXQsIGxldCYjMzk7cyBwaXZvdCBzbGlnaHRseS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBmdW5jdGlvbnMgYHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHhgIGFuZCBgX19ydHc4OV93b3dfcGFyc2VfYWttYCBhcmUgYmVpbmcgKnVzZWQqLiBTbywgSSBuZWVkIHRvIGZpbmQgdGhlIGNhbGwgc2l0ZXMgZm9yIHRob3NlLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHNlYXJjaCBmb3Igd2hlcmUgdGhvc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQuIFRoaXMgaW5mb3JtYXRpb24gc2hvdWxkIHByb3ZpZGUgY29udGV4dCBmb3Igb3VyIGVtdWxhdGlvbiBlZmZvcnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTI1MDU9c3RhdGljIHZvaWQgcnR3ODlfY2FuY2VsXzZnaHpfcHJvYmVfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0yNTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MjUzMDpzdGF0aWMgdm9pZCBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTI1MzEtXHRcdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTMwMzg9c3RhdGljIHZvaWQgcnR3ODlfdmlmX3J4X3N0YXRzX2l0ZXIodm9pZCAqZGF0YSwgdTggKm1hYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zMDU5LVx0ICAgICBpZWVlODAyMTFfaXNfcHJvYmVfcmVzcChoZHItXHUwMDNlZnJhbWVfY29udHJvbCkpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MzA2MDpcdFx0cnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eChydHdkZXYsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zMDYxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MDEKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgZmFtaWxpYXIgd2l0aCB0aGlzIHRlY2huaWNhbCBjb250ZXh0OgoKKipJbnZlc3RpZ2F0aW5nIFdha2Utb24tV2lyZWxlc3MgRnVuY3Rpb25hbGl0eSoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzICYjMzQ7d2FrZS1vbi13aXJlbGVzcyYjMzQ7IHRoaW5nLCBhbmQgSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhlIHJlbGV2YW50IGRyaXZlcnMgYW5kIGZ1bmN0aW9uYWxpdHksIGFuZCBJIHRoaW5rIGl0JiMzOTtzIHRpbWUgdG8gcmVmaW5lIG15IHNlYXJjaC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBsb29raW5nIGZvciBjb2RlIHRoYXQgaW52b2x2ZXMgdGhpcyBgX19ydHc4OV93b3dfcGFyc2VfYWttYCBvciBgcnR3ODlfd293X3BhcnNlX2FrbWAgbmFtaW5nIGNvbnZlbnRpb24uIFRoaXMgc2VlbXMgdG8gYmUgYSB2ZXJ5IHNwZWNpZmljIGZ1bmN0aW9uIG9yIG1vZHVsZSBuYW1lIHJlbGF0ZWQgdG8gdGhlIEFLTSAoQXV0aGVudGljYXRlZCBLZXkgTWFuYWdlbWVudCkgcGFyc2luZyB3aXRoaW4gdGhlIFJUVzg5IHdpcmVsZXNzIGRyaXZlciBhbmQgd2FrZS1vbi13aXJlbGVzcyBmZWF0dXJlLiBJIHN1c3BlY3QgSSBtaWdodCBmaW5kIHNvbWUgaW1wb3J0YW50IGRldGFpbHMgYWJvdXQgaXRzIHdvcmtpbmdzIGhlcmUsIGhvdyBpdCBoYW5kbGVzIHNlY3VyaXR5LCBhbmQgaG93IHRoZSB3YWtlLW9uLXdpcmVsZXNzIHRyaWdnZXJzIGFyZSBtYW5hZ2VkLiBUaGlzIGNvdWxkIGJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgaXNzdWUgYXQgaGFuZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV93b3dfcGFyc2VfYWttJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0xMzc3PXN0YXRpYyBpbnQgcnR3ODlfY29yZV90eF93cml0ZV9saW5rKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0xMzk3LVx0cnR3ODlfdHJhZmZpY19zdGF0c19hY2N1KHJ0d2RldiwgcnR3dmlmLCBza2IsIHRydWUsIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MTM5ODpcdHJ0dzg5X3dvd19wYXJzZV9ha20ocnR3ZGV2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMTM5OS1cdHJ0dzg5X2NvcmVfdHhfdXBkYXRlX2Rlc2NfaW5mbyhydHdkZXYsIFx1MDAyNnR4X3JlcSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmM6MTU6dm9pZCBfX3J0dzg5X3dvd19wYXJzZV9ha20oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xNi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuaD0xMTI9c3RhdGljIGlubGluZSBib29sIHJ0d193b3dfaGFzX21nZF9mZWF0dXJlcyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuaC0xMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5oOjExOTp2b2lkIF9fcnR3ODlfd293X3BhcnNlX2FrbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuaC0xMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5oPTEyMT1zdGF0aWMgaW5saW5lXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5oOjEyMjp2b2lkIHJ0dzg5X3dvd19wYXJzZV9ha20oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuaC0xMjMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmgtMTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuaDoxMjk6XHRfX3J0dzg5X3dvd19wYXJzZV9ha20ocnR3ZGV2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuaC0xMzAtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293Lmg9MTM1PXN0YXRpYyBpbmxpbmVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293Lmg6MTM2OnZvaWQgcnR3ODlfd293X3BhcnNlX2FrbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5oLTEzNy17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjRtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzY2MAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDcyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJUVzg5IFdpcmVsZXNzIERyaXZlciBWdWxuZXJhYmlsaXR5IGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIE15IGluaXRpYWwgZm9jdXMgaXMgdG8gdW5kZXJzdGFuZCB0aGUgbmF0dXJlIG9mIHRoaXMgYnVnLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGNvbnRleHQgb2YgYF9fcnR3ODlfd293X3BhcnNlX2FrbWAgYW5kIGBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4YC4gVGhlIHRleHQgcG9pbnRzIG91dCBhIGNydWNpYWwgZGV0YWlsIGFib3V0IGhvdyB0aGUgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgYXJlIGhhbmRsZWQuIEluIHRoZSBgcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eGAgZnVuY3Rpb24sIHRoZSBgaWVzYCBwb2ludGVyIGlzIGRlcml2ZWQgZnJvbSBgbWdtdC0mZ3Q7dS5iZWFjb24udmFyaWFibGVgLCBhbmQgdGhlIGxlbmd0aCBwYXNzZWQgdG8gYGNmZzgwMjExX2ZpbmRfaWVgIHVzZWQgdG8gYmUgdGhlIHRvdGFsIGBza2ItJmd0O2xlbmAuIFRoZSBsZW5ndGggb2YgdGhlIGRhdGEgYmVpbmcgc2VhcmNoZWQgaXMgdGhlIGZ1bGwgU0tCIGJ1ZmZlci4gSG93ZXZlciwgYGllc2AgcG9pbnRzIHRvIGEgbG9jYXRpb24gKmFmdGVyKiB0aGUgbWFuYWdlbWVudCBoZWFkZXIsIGVmZmVjdGl2ZWx5IG1ha2luZyB0aGUgZGF0YSBzdGFydCBhdCBgb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LCB1LmJlYWNvbi52YXJpYWJsZSlgLiBUaGlzIG1lYW5zIHRoYXQgYGNmZzgwMjExX2ZpbmRfaWVgIHdhcyBwb3RlbnRpYWxseSByZWFkaW5nIHBhc3QgdGhlIGVuZCBvZiB0aGUgYHNrYi0mZ3Q7ZGF0YWAgYnkgYGhkcl9sZW5gIGJ5dGVzLiBUaGUgYnVnIGNvdWxkIHJlc3VsdCBpbiBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaWYgYHNrYi0mZ3Q7bGVuYCB3YXMgc21hbGxlciB0aGFuIGBoZHJfbGVuYC4gVGhlIGZpeCwgYXMgZGVzY3JpYmVkLCBpbnZvbHZlcyBjaGVja2luZyBgc2tiLSZndDtsZW4gJmx0OyBoZHJfbGVuYCBhbmQgcmV0dXJuaW5nIGlmIHRydWUsIGFzIHdlbGwgYXMgc3VidHJhY3RpbmcgdGhlIGhlYWRlciBsZW5ndGggZnJvbSB0aGUgZGF0YSBsZW5ndGggc2VudCB0byBgY2ZnODAyMTFfZmluZF9pZWAuCgpUaGUgc2FtZSBpc3N1ZSBzZWVtcyB0byBiZSBwcmVzZW50IGluIGBfX3J0dzg5X3dvd19wYXJzZV9ha21gLCB1c2luZyB0aGUgc2FtZSBmaXggc3RyYXRlZ3kuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IGlzIHRoaXMgZHJpdmVyIGZ1enphYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VPyBMZXQmIzM5O3MgY2FyZWZ1bGx5IGNvbnNpZGVyIHRoZSBjcml0ZXJpYSBmb3IgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0Oy4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGUgY2hhbmdlcyBvbmx5IGludm9sdmUgZG9jdW1lbnRhdGlvbiwgY29zbWV0aWMgY2hhbmdlcywgdW5yZWFjaGFibGUgY29kZSBwYXRocywgb3IgY29kZSB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlLgoKVGhlIGNydWNpYWwgcG9pbnQgaGVyZSBpcyB3aGV0aGVyIHRoZSBSVFc4OSBkcml2ZXIgaXMgcmVhY2hhYmxlIHRocm91Z2ggVVNCIGVtdWxhdGlvbiwgcGFydGljdWxhcmx5IHVzaW5nIGB1c2IgZ2FkZ2V0YCBvciBgdnVzYmAuIEkmIzM5O2xsIG5lZWQgdG8gcmVzZWFyY2ggaG93IFVTQiBwcm9iaW5nIGlzIGhhbmRsZWQgaW4gdGhlIFJUVzg5IGRyaXZlciB0byBhbnN3ZXIgdGhpcy4gSSB3aWxsIGxvb2sgZm9yIGNhbGxzIHRvIGB1c2IgcHJvYmVgIGluIHRoZSBydHc4OSBkcml2ZXIgdG8gZ2V0IGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VzYl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM9NTk9TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHJ0d184ODUxYnVfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYy02MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM6NjE6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUxYnVfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYy02Mi1cdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYy02Ni19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYzo2Nzptb2R1bGVfdXNiX2RyaXZlcihydHdfODg1MWJ1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTY4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM9NzM9TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHJ0d184ODUyYXVfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy03NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM6NzU6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyYXVfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy03Ni1cdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy04MC19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYzo4MTptb2R1bGVfdXNiX2RyaXZlcihydHdfODg1MmF1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTgyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM9NzM9TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHJ0d184ODUyYnVfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYy03NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM6NzU6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyYnVfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYy03Ni1cdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYy04MC19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYzo4MTptb2R1bGVfdXNiX2RyaXZlcihydHdfODg1MmJ1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTgyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmM9Nzk9TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHJ0d184ODUyY3VfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYy04MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmM6ODE6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyY3VfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYy04Mi1cdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYy04Ni19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYzo4Nzptb2R1bGVfdXNiX2RyaXZlcihydHdfODg1MmN1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTg4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM9NzQ9TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHJ0d184OTIyYXVfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy03NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM6NzY6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184OTIyYXVfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy03Ny1cdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy04MS19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYzo4Mjptb2R1bGVfdXNiX2RyaXZlcihydHdfODkyMmF1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jLTgzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDI3NwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIFdpcmVsZXNzIERyaXZlciBWdWxuZXJhYmlsaXRpZXMqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIFVTQiB3aXJlbGVzcyBkcml2ZXIgc2l0dWF0aW9uLiBJdCBzZWVtcyBsaWtlIHVzaW5nIFVTQiBlbXVsYXRpb24gd2l0aCB0b29scyBsaWtlIHN5emthbGxlciwgc3BlY2lmaWNhbGx5IGl0cyBkdW1teV9oY2QvcmF3LWdhZGdldC91c2JfZnV6emVyIGNhcGFiaWxpdGllcywgaXMgYSB2aWFibGUgYXBwcm9hY2ggdG8gZW11bGF0ZSBhbmQgZnV6eiB0aGVzZSBkcml2ZXJzLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2UuCgpGaXJzdCwgSSB3YW50IHRvIHRyYWNlIGhvdyB3ZSByZWFjaCBgX19ydHc4OV93b3dfcGFyc2VfYWttYCBhbmQgYHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHhgLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eGAuIExvb2tzIGxpa2UgaXQmIzM5O3MgY2FsbGVkIGZyb20gYHJ0dzg5X3ZpZl9yeF9zdGF0c19pdGVyYCwgc28gdGhhdCYjMzk7cyB0aGUgbmV4dCBmdW5jdGlvbiB0byBpbnNwZWN0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBydHc4OV92aWZfcnhfc3RhdHNfaXRlcmAgZG9lcyBhbmQgd2hhdCBjYWxscyAqaXQqLiBUaGlzIHdpbGwgYWxsb3cgbWUgdG8gYXNzZXNzIHRoZSBpbnB1dHMgYW5kIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIEl0JiMzOTtzIGFsbCBhYm91dCBmaW5kaW5nIHRoZSBhY2Nlc3MgcG9pbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV92aWZfcnhfc3RhdHNfaXRlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9MjQwMD1zdGF0aWMgYm9vbCBydHc4OV9jb3JlX3J4X3BwZHVfbWF0Y2goc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTI0MzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzoyNDM2OnN0cnVjdCBydHc4OV92aWZfcnhfc3RhdHNfaXRlcl9kYXRhIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTI0MzctXHRzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9Mjk5Nj1zdGF0aWMgdm9pZCBydHc4OV92aWZfcnhfYmNuX3N0YXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTMwMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzozMDM4OnN0YXRpYyB2b2lkIHJ0dzg5X3ZpZl9yeF9zdGF0c19pdGVyKHZvaWQgKmRhdGEsIHU4ICptYWMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zMDM5LVx0XHRcdFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zMDQwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjMwNDE6XHRzdHJ1Y3QgcnR3ODlfdmlmX3J4X3N0YXRzX2l0ZXJfZGF0YSAqaXRlcl9kYXRhID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTMwNDItXHRzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYgPSBpdGVyX2RhdGEtXHUwMDNlcnR3ZGV2O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTMxNDA9c3RhdGljIHZvaWQgcnR3ODlfY29yZV9yeF9zdGF0cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMzE0NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzozMTQ1Olx0c3RydWN0IHJ0dzg5X3ZpZl9yeF9zdGF0c19pdGVyX2RhdGEgaXRlcl9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMzE0Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zMTUzLVx0aXRlcl9kYXRhLmJzc2lkID0gZ2V0X2hkcl9ic3NpZCgoc3RydWN0IGllZWU4MDIxMV9oZHIgKilza2ItXHUwMDNlZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzozMTU0Olx0cnR3ODlfaXRlcmF0ZV92aWZzX2JoKHJ0d2RldiwgcnR3ODlfdmlmX3J4X3N0YXRzX2l0ZXIsIFx1MDAyNml0ZXJfZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zMTU1LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0NDgKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKlRyYWNpbmcgdGhlIENhbGxzIHRvIGBydHc4OV9jb3JlX3J4X3N0YXRzYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBgcnR3ODlfY29yZV9yeF9zdGF0c2AgaXMgYmVpbmcgdXNlZC4gTXkgZmlyc3Qgc3RlcCwgbmF0dXJhbGx5LCBpcyB0byB0cmFjZSB0aG9zZSBjYWxscy4gSSB3YW50IHRvIHNlZSB3aGljaCBvdGhlciBmdW5jdGlvbnMgb3IgbW9kdWxlcyBkZXBlbmQgb24gdGhpcyBvbmUuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgZ3JhcGggd2lsbCBnaXZlIG1lIGEgZ29vZCBzZW5zZSBvZiB0aGUgY29udGV4dCBhbmQgcHVycG9zZSBvZiB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24uIEZyb20gdGhlcmUsIEkgY2FuIGJlZ2luIHRvIHVucmF2ZWwgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9jb3JlX3J4X3N0YXRzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0zMDM4PXN0YXRpYyB2b2lkIHJ0dzg5X3ZpZl9yeF9zdGF0c19pdGVyKHZvaWQgKmRhdGEsIHU4ICptYWMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMzEzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjMxNDA6c3RhdGljIHZvaWQgcnR3ODlfY29yZV9yeF9zdGF0cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zMTQxLVx0XHRcdFx0c3RydWN0IHJ0dzg5X3J4X3BoeV9wcGR1ICpwaHlfcHBkdSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0zOTc5PXN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcnhfdG9fbWFjODAyMTEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTM5OTEtXHRydHc4OV9jb3JlX2h3X3RvX3NiYW5kX3JhdGUocnhfc3RhdHVzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjM5OTI6XHRydHc4OV9jb3JlX3J4X3N0YXRzKHJ0d2RldiwgcGh5X3BwZHUsIGRlc2NfaW5mbywgc2tiX3BwZHUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMzk5My1cdHJ0dzg5X2NvcmVfdXBkYXRlX3J4X3N0YXR1c19ieV9wcGR1KHJ0d2Rldiwgcnhfc3RhdHVzLCBwaHlfcHBkdSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMDI1CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gUlgvVFggUGFja2V0IEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgcnR3ODlgIGRyaXZlciBjb2RlLiBGaXJzdCwgaXQgbG9va3MgbGlrZSBgcnR3ODlfY29yZV9yeF90b19tYWM4MDIxMWAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQmIzM5O3MgcmVzcG9uc2libGUgZm9yIHByb2Nlc3NpbmcgdGhvc2UgaW5jb21pbmcgUlggcGFja2V0cyBjb21pbmcgaW4gZnJvbSB0aGUgaGFyZHdhcmUgb3IgdGhlIFVTQiBpbnRlcmZhY2Ug4oCTIG1ha2VzIHNlbnNlLiBOb3csIGxldCYjMzk7cyBzZWUsIEkgYWxzbyBzZWUgdGhhdCBgX19ydHc4OV93b3dfcGFyc2VfYWttYCBnZXRzIGNhbGxlZCB3aGVuIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBUWCBvcGVyYXRpb24gdGhyb3VnaCBgcnR3ODlfY29yZV90eF93cml0ZV9saW5rYC4gSG1tLCB0aGF0IHNvdW5kcyBsaWtlIGl0IG1pZ2h0IHJlbGF0ZSB0byBXYWtlLW9uLVdMQU4gZnVuY3Rpb25hbGl0eS4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byBgX19ydHc4OV93b3dfcGFyc2VfYWttYCBhIGxpdHRsZSBmdXJ0aGVyLCBhbmQgSSBzaG91bGQgc3RhcnQgd2l0aCBgd293LmNgLiBMZXQmIzM5O3MgZ2V0IHRoYXQgZmlsZSBvcGVuIGFuZCByZWFkIHRocm91Z2ggaXQgY2FyZWZ1bGx5OyBpdCYjMzk7cyB0aGUgb2J2aW91cyBuZXh0IHN0ZXAgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhpcyB3aG9sZSB0aGluZyBmaXRzIHRvZ2V0aGVyIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcbiAgIDI6XHQvKiBDb3B5cmlnaHQoYykgMjAxOS0yMDIyICBSZWFsdGVrIENvcnBvcmF0aW9uXG4gICAzOlx0ICovXG4gICA0Olx0I2luY2x1ZGUgXCYjMzQ7Y2FtLmhcJiMzNDtcbiAgIDU6XHQjaW5jbHVkZSBcJiMzNDtjb3JlLmhcJiMzNDtcbiAgIDY6XHQjaW5jbHVkZSBcJiMzNDtkZWJ1Zy5oXCYjMzQ7XG4gICA3Olx0I2luY2x1ZGUgXCYjMzQ7ZncuaFwmIzM0O1xuICAgODpcdCNpbmNsdWRlIFwmIzM0O21hYy5oXCYjMzQ7XG4gICA5Olx0I2luY2x1ZGUgXCYjMzQ7cGh5LmhcJiMzNDtcbiAgMTA6XHQjaW5jbHVkZSBcJiMzNDtwcy5oXCYjMzQ7XG4gIDExOlx0I2luY2x1ZGUgXCYjMzQ7cmVnLmhcJiMzNDtcbiAgMTI6XHQjaW5jbHVkZSBcJiMzNDt1dGlsLmhcJiMzNDtcbiAgMTM6XHQjaW5jbHVkZSBcJiMzNDt3b3cuaFwmIzM0O1xuICAxNDpcdFxuICAxNTpcdHZvaWQgX19ydHc4OV93b3dfcGFyc2VfYWttKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiAgMTY6XHR7XG4gIDE3Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2tiLVx1MDAzZWRhdGE7XG4gIDE4Olx0XHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZXdvdztcbiAgMTk6XHRcdHNpemVfdCBoZHJfbGVuID0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LCB1LmFzc29jX3JlcS52YXJpYWJsZSk7XG4gIDIwOlx0XHRjb25zdCB1OCAqcnNuLCAqaWVzID0gbWdtdC1cdTAwM2V1LmFzc29jX3JlcS52YXJpYWJsZTtcbiAgMjE6XHRcdHN0cnVjdCBydHc4OV9yc25faWUgKnJzbl9pZTtcbiAgMjI6XHRcbiAgMjM6XHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBoZHJfbGVuKVxuICAyNDpcdFx0XHRyZXR1cm47XG4gIDI1Olx0XG4gIDI2Olx0XHRyc24gPSBjZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX1JTTiwgaWVzLFxuICAyNzpcdFx0XHRcdCAgICAgICBza2ItXHUwMDNlbGVuIC0gaGRyX2xlbik7XG4gIDI4Olx0XG4gIDI5Olx0XHRpZiAoIXJzbilcbiAgMzA6XHRcdFx0cmV0dXJuO1xuICAzMTpcdFxuICAzMjpcdFx0cnNuX2llID0gKHN0cnVjdCBydHc4OV9yc25faWUgKilyc247XG4gIDMzOlx0XHRydHdfd293LVx1MDAzZWFrbSA9IHJzbl9pZS1cdTAwM2Vha21fY2lwaGVyX3N1aXRlLnR5cGU7XG4gIDM0Olx0fVxuICAzNTpcdFxuICAzNjpcdCNkZWZpbmUgUlRXODlfQ0lQSEVSX0lORk9fREVGKGNpcGhlcikgXFxcbiAgMzc6XHRcdHtXTEFOX0NJUEhFUl9TVUlURV8gIyMgY2lwaGVyLCAuZndfYWxnID0gUlRXODlfV09XX0ZXX0FMR18gIyMgY2lwaGVyLCBcXFxuICAzODpcdFx0IC5sZW4gPSBXTEFOX0tFWV9MRU5fICMjIGNpcGhlcn1cbiAgMzk6XHRcbiAgNDA6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2NpcGhlcl9pbmZvIHJ0dzg5X2NpcGhlcl9pbmZvX2RlZnNbXSA9IHtcbiAgNDE6XHRcdFJUVzg5X0NJUEhFUl9JTkZPX0RFRihXRVA0MCksXG4gIDQyOlx0XHRSVFc4OV9DSVBIRVJfSU5GT19ERUYoV0VQMTA0KSxcbiAgNDM6XHRcdFJUVzg5X0NJUEhFUl9JTkZPX0RFRihUS0lQKSxcbiAgNDQ6XHRcdFJUVzg5X0NJUEhFUl9JTkZPX0RFRihDQ01QKSxcbiAgNDU6XHRcdFJUVzg5X0NJUEhFUl9JTkZPX0RFRihHQ01QKSxcbiAgNDY6XHRcdFJUVzg5X0NJUEhFUl9JTkZPX0RFRihDQ01QXzI1NiksXG4gIDQ3Olx0XHRSVFc4OV9DSVBIRVJfSU5GT19ERUYoR0NNUF8yNTYpLFxuICA0ODpcdFx0UlRXODlfQ0lQSEVSX0lORk9fREVGKEFFU19DTUFDKSxcbiAgNDk6XHR9O1xuICA1MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzI2NgoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYGNvcmUuY2AgLSBMaW5lIDI1MzAqKgoKQWxyaWdodCwgdGltZSB0byB0cm91Ymxlc2hvb3QuIEJhc2VkIG9uIHRoZSBzeW1wdG9tcywgSSYjMzk7bSBnZXR0aW5nIGEgaHVuY2ggaXQmIzM5O3Mgc29tZXdoZXJlIGRlZXAgd2l0aGluIHRoZSBjb3JlLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgY29yZS5jYC4gTXkgZ3V0IHNheXMgdGhhdCBsaW5lIDI1MzAgbWlnaHQgYmUgd2hlcmUgdGhpbmdzIGFyZSBnZXR0aW5nIGhhaXJ5LiBJdCYjMzk7cyBhIGJyb2FkIHN0YXJ0aW5nIHBvaW50LCBJIGtub3csIGJ1dCBvZnRlbiB0aGUgZGVlcGVzdCBpc3N1ZXMgaGlkZSBpbiB0aGUgY29yZSBsaWJyYXJpZXMuIEkmIzM5O2xsIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCBmdW5jdGlvbiBvciBibG9jayBpcyBsb2NhdGVkIHRoZXJlLCBzbyBJIGFtIGdvaW5nIHRvIGhhdmUgYSBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIEhvcGVmdWxseSB0aGUgaXNzdWUgaXMgb2J2aW91cyBxdWlja2x5LiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCBzZWN0aW9uIGlzIGhhbmRsaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjUyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyNTI1Olx0XHRcdCAqIHNpbmNlIGlmIGR1cmluZyBzY2FubmluZywgcGt0X2xpc3QgaXMgYWNjZXNzZWQgaW4gYm90dG9tIGhhbGYuXG4yNTI2Olx0XHRcdCAqL1xuMjUyNzpcdFx0fVxuMjUyODpcdH1cbjI1Mjk6XHRcbjI1MzA6XHRzdGF0aWMgdm9pZCBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbjI1MzE6XHRcdFx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpXG4yNTMyOlx0e1xuMjUzMzpcdFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2IpO1xuMjUzNDpcdFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNrYi1cdTAwM2VkYXRhO1xuMjUzNTpcdFx0c2l6ZV90IGhkcl9sZW4gPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUuYmVhY29uLnZhcmlhYmxlKTtcbjI1MzY6XHRcdHN0cnVjdCBsaXN0X2hlYWQgKnBrdF9saXN0ID0gcnR3ZGV2LVx1MDAzZXNjYW5faW5mby5wa3RfbGlzdDtcbjI1Mzc6XHRcdHN0cnVjdCBydHc4OV9wa3RvZmxkX2luZm8gKmluZm87XG4yNTM4Olx0XHRjb25zdCB1OCAqaWVzID0gbWdtdC1cdTAwM2V1LmJlYWNvbi52YXJpYWJsZSwgKnNzaWRfaWU7XG4yNTM5Olx0XHRzaXplX3QgaWVfbGVuO1xuMjU0MDpcdFx0Ym9vbCBxdWV1ZV93b3JrID0gZmFsc2U7XG4yNTQxOlx0XG4yNTQyOlx0XHRpZiAocnhfc3RhdHVzLVx1MDAzZWJhbmQgIT0gTkw4MDIxMV9CQU5EXzZHSFopXG4yNTQzOlx0XHRcdHJldHVybjtcbjI1NDQ6XHRcbjI1NDU6XHRcdGlmICh1bmxpa2VseSghKHJ0d2Rldi1cdTAwM2VjaGlwLVx1MDAzZXN1cHBvcnRfYmFuZHMgXHUwMDI2IEJJVChOTDgwMjExX0JBTkRfNkdIWikpKSkge1xuMjU0NjpcdFx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19VTkVYUCwgXCYjMzQ7aW52YWxpZCByeCBvbiB1bnN1cHBvcnRlZCA2IEdIelxcblwmIzM0Oyk7XG4yNTQ3Olx0XHRcdHJldHVybjtcbjI1NDg6XHRcdH1cbjI1NDk6XHRcbjI1NTA6XHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBoZHJfbGVuKVxuMjU1MTpcdFx0XHRyZXR1cm47XG4yNTUyOlx0XG4yNTUzOlx0XHRpZV9sZW4gPSBza2ItXHUwMDNlbGVuIC0gaGRyX2xlbjtcbjI1NTQ6XHRcbjI1NTU6XHRcdHNzaWRfaWUgPSBjZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX1NTSUQsIGllcywgaWVfbGVuKTtcbjI1NTY6XHRcbjI1NTc6XHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoaW5mbywgXHUwMDI2cGt0X2xpc3RbTkw4MDIxMV9CQU5EXzZHSFpdLCBsaXN0KSB7XG4yNTU4Olx0XHRcdGlmIChldGhlcl9hZGRyX2VxdWFsKGluZm8tXHUwMDNlYnNzaWQsIG1nbXQtXHUwMDNlYnNzaWQpKSB7XG4yNTU5Olx0XHRcdFx0aW5mby1cdTAwM2VjYW5jZWwgPSB0cnVlO1xuMjU2MDpcdFx0XHRcdHF1ZXVlX3dvcmsgPSB0cnVlO1xuMjU2MTpcdFx0XHRcdGNvbnRpbnVlO1xuMjU2MjpcdFx0XHR9XG4yNTYzOlx0XG4yNTY0Olx0XHRcdGlmICghc3NpZF9pZSB8fCBzc2lkX2llWzFdICE9IGluZm8tXHUwMDNlc3NpZF9sZW4gfHwgaW5mby1cdTAwM2Vzc2lkX2xlbiA9PSAwKVxuMjU2NTpcdFx0XHRcdGNvbnRpbnVlO1xuMjU2NjpcdFxuMjU2NzpcdFx0XHRpZiAobWVtY21wKFx1MDAyNnNzaWRfaWVbMl0sIGluZm8tXHUwMDNlc3NpZCwgaW5mby1cdTAwM2Vzc2lkX2xlbikgPT0gMCkge1xuMjU2ODpcdFx0XHRcdGluZm8tXHUwMDNlY2FuY2VsID0gdHJ1ZTtcbjI1Njk6XHRcdFx0XHRxdWV1ZV93b3JrID0gdHJ1ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQzMTgKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBEaXZlIGZvciBSVFc4OSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0aGlzIHNvcnRlZC4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgS2NvbmZpZyByZXF1aXJlbWVudHMgZm9yIFJUVzg5LiBUaGF0IG1lYW5zIEkgbmVlZCB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIHNvdXJjZS4gTGV0JiMzOTtzIHN0YXJ0IGJ5IG5hdmlnYXRpbmcgdG8gdGhlIHJlbGV2YW50IGZpbGU6IGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCB3aGVyZSBJIGNhbiBzZWUgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGFsbCB0aGUgY3J1Y2lhbCBjb25maWd1cmF0aW9ucyB0aGF0IGdvdmVybiBob3cgdGhpcyBkcml2ZXIgYmVoYXZlcyB3aXRoaW4gdGhlIGtlcm5lbC4gSXTigJlzIHRoZSByb2FkbWFwLCB0aGUgYmx1ZXByaW50LiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3ZlIGdvdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDkwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxuICAgMjpcdG1lbnVjb25maWcgUlRXODlcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODAyLjExYXggd2lyZWxlc3MgY2hpcHMgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIG1hYzgwMjExLWJhc2VkIHdpcmVsZXNzIGRyaXZlcnMgdGhhdFxuICAgNzpcdFx0ICBlbmFibGVzIFJlYWx0ZWsgSUVFRSA4MDIuMTFheCB3aXJlbGVzcyBjaGlwc2V0cy5cbiAgIDg6XHRcbiAgIDk6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBydHc4OS5cbiAgMTA6XHRcbiAgMTE6XHRpZiBSVFc4OVxuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBSVFc4OV9DT1JFXG4gIDE0Olx0XHR0cmlzdGF0ZVxuICAxNTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIFJUVzg5X1BDSVxuICAxODpcdFx0dHJpc3RhdGVcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgUlRXODlfVVNCXG4gIDIxOlx0XHR0cmlzdGF0ZVxuICAyMjpcdFxuICAyMzpcdGNvbmZpZyBSVFc4OV84ODUxQlxuICAyNDpcdFx0dHJpc3RhdGVcbiAgMjU6XHRcbiAgMjY6XHRjb25maWcgUlRXODlfODg1MkFcbiAgMjc6XHRcdHRyaXN0YXRlXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIFJUVzg5Xzg4NTJCX0NPTU1PTlxuICAzMDpcdFx0dHJpc3RhdGVcbiAgMzE6XHRcbiAgMzI6XHRjb25maWcgUlRXODlfODg1MkJcbiAgMzM6XHRcdHRyaXN0YXRlXG4gIDM0Olx0XG4gIDM1Olx0Y29uZmlnIFJUVzg5Xzg4NTJCVFxuICAzNjpcdFx0dHJpc3RhdGVcbiAgMzc6XHRcbiAgMzg6XHRjb25maWcgUlRXODlfODg1MkNcbiAgMzk6XHRcdHRyaXN0YXRlXG4gIDQwOlx0XG4gIDQxOlx0Y29uZmlnIFJUVzg5Xzg5MjJBXG4gIDQyOlx0XHR0cmlzdGF0ZVxuICA0MzpcdFxuICA0NDpcdGNvbmZpZyBSVFc4OV84ODUxQkVcbiAgNDU6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MUJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4gIDQ2Olx0XHRkZXBlbmRzIG9uIFBDSVxuICA0NzpcdFx0c2VsZWN0IFJUVzg5X0NPUkVcbiAgNDg6XHRcdHNlbGVjdCBSVFc4OV9QQ0lcbiAgNDk6XHRcdHNlbGVjdCBSVFc4OV84ODUxQlxuICA1MDpcdFx0aGVscFxuICA1MTpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MUJFIGNoaXBzZXRcbiAgNTI6XHRcbiAgNTM6XHRcdCAgODAyLjExYXggUENJZSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXG4gIDU0Olx0XG4gIDU1Olx0Y29uZmlnIFJUVzg5Xzg4NTFCVVxuICA1NjpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUxQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcJiMzNDtcbiAgNTc6XHRcdGRlcGVuZHMgb24gVVNCXG4gIDU4Olx0XHRzZWxlY3QgUlRXODlfQ09SRVxuICA1OTpcdFx0c2VsZWN0IFJUVzg5X1VTQlxuICA2MDpcdFx0c2VsZWN0IFJUVzg5Xzg4NTFCXG4gIDYxOlx0XHRoZWxwXG4gIDYyOlx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODUxQlUgY2hpcHNldFxuICA2MzpcdFxuICA2NDpcdFx0ICA4MDIuMTFheCBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxuICA2NTpcdFxuICA2NjpcdGNvbmZpZyBSVFc4OV84ODUyQUVcbiAgNjc6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkFFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4gIDY4Olx0XHRkZXBlbmRzIG9uIFBDSVxuICA2OTpcdFx0c2VsZWN0IFJUVzg5X0NPUkVcbiAgNzA6XHRcdHNlbGVjdCBSVFc4OV9QQ0lcbiAgNzE6XHRcdHNlbGVjdCBSVFc4OV84ODUyQVxuICA3MjpcdFx0aGVscFxuICA3MzpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkFFIGNoaXBzZXRcbiAgNzQ6XHRcbiAgNzU6XHRcdCAgODAyLjExYXggUENJZSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXG4gIDc2Olx0XG4gIDc3Olx0Y29uZmlnIFJUVzg5Xzg4NTJBVVxuICA3ODpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcJiMzNDtcbiAgNzk6XHRcdGRlcGVuZHMgb24gVVNCXG4gIDgwOlx0XHRzZWxlY3QgUlRXODlfQ09SRVxuICA4MTpcdFx0c2VsZWN0IFJUVzg5X1VTQlxuICA4MjpcdFx0c2VsZWN0IFJUVzg5Xzg4NTJBXG4gIDgzOlx0XHRoZWxwXG4gIDg0Olx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODUyQVUgY2hpcHNldFxuICA4NTpcdFxuICA4NjpcdFx0ICA4MDIuMTFheCBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxuICA4NzpcdFxuICA4ODpcdGNvbmZpZyBSVFc4OV84ODUyQkVcbiAgODk6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4gIDkwOlx0XHRkZXBlbmRzIG9uIFBDSVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTc2MQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaXZpbmcgaW50byB0aGUgcnR3ODkgS2NvbmZpZyoqCgpBbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGlzIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGFzc3VtaW5nIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlciwgYW5kIHRoZSBLY29uZmlnIGlzIHdoZXJlIGFsbCB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoaXMgbW9kdWxlIGFyZSBkZWZpbmVkLiBLbm93aW5nIHRoaXMsIG15IG1pbmQgaW1tZWRpYXRlbHkgc3RhcnRzIHBhcnNpbmcgdGhlIGltcGxpY2F0aW9ucy4gSeKAmW0gdGhpbmtpbmcgd2UmIzM5O2xsIGZpbmQgdGhpbmdzIGxpa2U6CgoqICAgKipDaGlwc2V0IFNlbGVjdGlvbjoqKiBUaGVyZSB3aWxsIGxpa2VseSBiZSBvcHRpb25zIGZvciBkaWZmZXJlbnQgUmVhbHRlayA4MDIuMTFheCBjaGlwc2V0cyB0aGF0IHRoaXMgZHJpdmVyIHN1cHBvcnRzIChlLmcuLCBzcGVjaWZpYyBSVEw4ODUyQUUgdmFyaWFudHMpLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBgc2VsZWN0YCBzdGF0ZW1lbnRzIGFuZCBkZXBlbmRlbmNpZXMgb24gZGV2aWNlIElEcyBvciBvdGhlciBoYXJkd2FyZSBmZWF0dXJlcy4KKiAgICoqRmVhdHVyZSBGbGFnczoqKiBXZSBzaG91bGQgc2VlIG9wdGlvbnMgdG8gZW5hYmxlIG9yIGRpc2FibGUgc3BlY2lmaWMgZnVuY3Rpb25hbGl0aWVz4oCUdGhpbmdzIGxpa2UgTVUtTUlNTyBzdXBwb3J0LCBiZWFtZm9ybWluZywgZGlmZmVyZW50IHBvd2VyLXNhdmluZyBtb2RlcywgODAyLjExdyBzZWN1cml0eS4gVGhlIGNvbmZpZ3VyYXRpb24gd2lsbCBkaXJlY3RseSBhZmZlY3QgdGhlIGRyaXZlciYjMzk7cyBmb290cHJpbnQgYW5kIGZlYXR1cmUgc2V0LgoqICAgKipEZWJ1Z2dpbmcgYW5kIExvZ2dpbmc6KiogVGhlcmUgd2lsbCBiZSBvcHRpb25zIHRvIGVuYWJsZSB2YXJpb3VzIGRlYnVnZ2luZyBsZXZlbHMgb3IgbG9nZ2luZywgdmVyeSB1c2VmdWwgZm9yIGFueW9uZSB3b3JraW5nIHRvIGFuYWx5emUgdGhlIGRyaXZlci4gSeKAmWxsIGxvb2sgZm9yIGBib29sYCwgYHRyaXN0YXRlYCwgb3IgYHN0cmluZ2Agb3B0aW9ucyB3aXRoIGRlc2NyaXB0aW9ucyBvZiB0aGUgbG9nZ2luZyBsZXZlbHMgYW5kIGhvdyB0byBjb250cm9sIHRoZW0uCiogICAqKkZpcm13YXJlIExvYWRpbmc6KiogVGhpcyBpcyBjcml0aWNhbC4gVGhlIEtjb25maWcgcHJvYmFibHkgZGVmaW5lcyB0aGUgbG9jYXRpb25zIChlLmcuLCBpbiB0aGUgZmlybXdhcmUgZGlyZWN0b3J5KSBvciBldmVuIHRoZSBmaXJtd2FyZSBmaWxlcyB0aGVtc2VsdmVzLiBUaGVzZSB3aWxsIGJlIG5lY2Vzc2FyeSBmb3IgYSBmdWxsIHJldmlldy4KKiAgICoqRGVwZW5kZW5jaWVzOioqIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGZlYXR1cmVzIG9yIGRyaXZlcnMuIFRoaXMgd2lsbCBoZWxwIHVuZGVyc3RhbmQgaG93IHRoZSBydHc4OSBkcml2ZXIgaW50ZWdyYXRlcyBpbnRvIHRoZSBicm9hZGVyIGtlcm5lbCBlbnZpcm9ubWVudC4gVGhpbmdzIGxpa2UgY3J5cHRvZ3JhcGhpYyBtb2R1bGVzIChlLmcuLCBgQ09ORklHX0NSWVBUT2ApIG9yIG5ldHdvcmtpbmcgaW5mcmFzdHJ1Y3R1cmUgKGUuZy4sIGBDT05GSUdfTkVUYCkgYXJlIHBvc3NpYmlsaXRpZXMuCiogICAqKkRlZmF1bHQgVmFsdWVzOioqIEkmIzM5O2xsIGJlIG5vdGluZyBkZWZhdWx0IHZhbHVlcyBmb3IgdGhlIGNvbmZpZ3VyYXRpb25zLiBUaGF0IHByb3ZpZGVzIGEgc2Vuc2Ugb2YgdGhlIGludGVuZGVkICYjMzQ7b3V0LW9mLXRoZS1ib3gmIzM0OyBleHBlcmllbmNlIGFuZCBjYW4gZ3VpZGUgdGhlIGRpcmVjdGlvbiBvZiB0d2Vha2luZyBhbmQgY3VzdG9taXphdGlvbi4KClNvLCBJJiMzOTttIGFscmVhZHkgbWVudGFsbHkgcHJlcGFyaW5nIHRvIHNlZSB0aGUgc3RydWN0dXJlIG9mIHRoZSBjb25maWcgZmlsZSBhbmQgdG8gY29ubmVjdCB0aGUgcGllY2VzIG9mIGluZm9ybWF0aW9uIHdpdGggd2hhdCBJIGtub3cgYWJvdXQgd2lyZWxlc3MgZHJpdmVyIGFyY2hpdGVjdHVyZXMgYW5kIHRoZSBjb21tb24gS2NvbmZpZyBpZGlvbXMuIFRoaXMgaXNu4oCZdCBqdXN0IGFib3V0IGxvb2tpbmcgYXQgaW5kaXZpZHVhbCBvcHRpb25zOyBpdCYjMzk7cyBhYm91dCBzZWVpbmcgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB0aGUgZHJpdmVy4oCZcyBmdW5jdGlvbmFsaXR5IGFuZCBpbnRlZ3JhdGlvbiB3aXRoaW4gdGhlIGtlcm5lbC4gVGltZSB0byBkaWcgaW4hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgOTE6XHRcdHNlbGVjdCBSVFc4OV9DT1JFXG4gIDkyOlx0XHRzZWxlY3QgUlRXODlfUENJXG4gIDkzOlx0XHRzZWxlY3QgUlRXODlfODg1MkJcbiAgOTQ6XHRcdHNlbGVjdCBSVFc4OV84ODUyQl9DT01NT05cbiAgOTU6XHRcdGhlbHBcbiAgOTY6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4NTJCRSBjaGlwc2V0XG4gIDk3Olx0XG4gIDk4Olx0XHQgIDgwMi4xMWF4IFBDSWUgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxuICA5OTpcdFxuIDEwMDpcdGNvbmZpZyBSVFc4OV84ODUyQlVcbiAxMDE6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4gMTAyOlx0XHRkZXBlbmRzIG9uIFVTQlxuIDEwMzpcdFx0c2VsZWN0IFJUVzg5X0NPUkVcbiAxMDQ6XHRcdHNlbGVjdCBSVFc4OV9VU0JcbiAxMDU6XHRcdHNlbGVjdCBSVFc4OV84ODUyQlxuIDEwNjpcdFx0c2VsZWN0IFJUVzg5Xzg4NTJCX0NPTU1PTlxuIDEwNzpcdFx0aGVscFxuIDEwODpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkJVIGNoaXBzZXRcbiAxMDk6XHRcbiAxMTA6XHRcdCAgODAyLjExYXggVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcbiAxMTE6XHRcbiAxMTI6XHRjb25maWcgUlRXODlfODg1MkJURVxuIDExMzpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQkUtVlQgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcJiMzNDtcbiAxMTQ6XHRcdGRlcGVuZHMgb24gUENJXG4gMTE1Olx0XHRzZWxlY3QgUlRXODlfQ09SRVxuIDExNjpcdFx0c2VsZWN0IFJUVzg5X1BDSVxuIDExNzpcdFx0c2VsZWN0IFJUVzg5Xzg4NTJCVFxuIDExODpcdFx0c2VsZWN0IFJUVzg5Xzg4NTJCX0NPTU1PTlxuIDExOTpcdFx0aGVscFxuIDEyMDpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkJFLVZUIGNoaXBzZXRcbiAxMjE6XHRcbiAxMjI6XHRcdCAgODAyLjExYXggUENJZSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXG4gMTIzOlx0XG4gMTI0Olx0Y29uZmlnIFJUVzg5Xzg4NTJDRVxuIDEyNTpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQ0UgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDZFKSBhZGFwdGVyXCYjMzQ7XG4gMTI2Olx0XHRkZXBlbmRzIG9uIFBDSVxuIDEyNzpcdFx0c2VsZWN0IFJUVzg5X0NPUkVcbiAxMjg6XHRcdHNlbGVjdCBSVFc4OV9QQ0lcbiAxMjk6XHRcdHNlbGVjdCBSVFc4OV84ODUyQ1xuIDEzMDpcdFx0aGVscFxuIDEzMTpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkNFIGNoaXBzZXRcbiAxMzI6XHRcbiAxMzM6XHRcdCAgODAyLjExYXggUENJZSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2RSkgYWRhcHRlclxuIDEzNDpcdFxuIDEzNTpcdGNvbmZpZyBSVFc4OV84ODUyQ1VcbiAxMzY6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkNVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2RSkgYWRhcHRlclwmIzM0O1xuIDEzNzpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAxMzg6XHRcdHNlbGVjdCBSVFc4OV9DT1JFXG4gMTM5Olx0XHRzZWxlY3QgUlRXODlfVVNCXG4gMTQwOlx0XHRzZWxlY3QgUlRXODlfODg1MkNcbiAxNDE6XHRcdGhlbHBcbiAxNDI6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4NTJDVSBjaGlwc2V0XG4gMTQzOlx0XG4gMTQ0Olx0XHQgIDgwMi4xMWF4IFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2RSkgYWRhcHRlclxuIDE0NTpcdFxuIDE0NjpcdGNvbmZpZyBSVFc4OV84OTIyQUVcbiAxNDc6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODkyMkFFLzg5MjJBRS1WUyBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclwmIzM0O1xuIDE0ODpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAxNDk6XHRcdHNlbGVjdCBSVFc4OV9DT1JFXG4gMTUwOlx0XHRzZWxlY3QgUlRXODlfUENJXG4gMTUxOlx0XHRzZWxlY3QgUlRXODlfODkyMkFcbiAxNTI6XHRcdGhlbHBcbiAxNTM6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg5MjJBRS84OTIyQUUtVlMgY2hpcHNldFxuIDE1NDpcdFxuIDE1NTpcdFx0ICA4MDIuMTFiZSBQQ0llIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDcpIGFkYXB0ZXJcbiAxNTY6XHRcdCAgc3VwcG9ydGluZyAyeDIgMkdIei81R0h6LzZHSHogNDA5Ni1RQU0gMTYwTUh6IGNoYW5uZWxzLlxuIDE1NzpcdFxuIDE1ODpcdFx0ICBUaGUgdmFyaWFudCA4OTIyQUUtVlMgaGFzIHRoZSBzYW1lIGZlYXR1cmVzIGV4Y2VwdCAxMDI0LVFBTS5cbiAxNTk6XHRcbiAxNjA6XHRjb25maWcgUlRXODlfODkyMkFVXG4gMTYxOlx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg5MjJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclwmIzM0O1xuIDE2MjpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAxNjM6XHRcdHNlbGVjdCBSVFc4OV9DT1JFXG4gMTY0Olx0XHRzZWxlY3QgUlRXODlfVVNCXG4gMTY1Olx0XHRzZWxlY3QgUlRXODlfODkyMkFcbiAxNjY6XHRcdGhlbHBcbiAxNjc6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg5MjJBVSBjaGlwc2V0XG4gMTY4Olx0XG4gMTY5Olx0XHQgIDgwMi4xMWJlIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA3KSBhZGFwdGVyXG4gMTcwOlx0XHQgIHN1cHBvcnRpbmcgMngyIDJHSHovNUdIei82R0h6IDQwOTYtUUFNIDE2ME1IeiBjaGFubmVscy5cbiAxNzE6XHRcbiAxNzI6XHRjb25maWcgUlRXODlfREVCVUdcbiAxNzM6XHRcdGJvb2xcbiAxNzQ6XHRcbiAxNzU6XHRjb25maWcgUlRXODlfREVCVUdNU0dcbiAxNzY6XHRcdGJvb2wgXCYjMzQ7UmVhbHRlayBydHc4OSBkZWJ1ZyBtZXNzYWdlIHN1cHBvcnRcJiMzNDtcbiAxNzc6XHRcdGRlcGVuZHMgb24gUlRXODlfQ09SRVxuIDE3ODpcdFx0c2VsZWN0IFJUVzg5X0RFQlVHXG4gMTc5Olx0XHRoZWxwXG4gMTgwOlx0XHQgIEVuYWJsZSBkZWJ1ZyBtZXNzYWdlIHN1cHBvcnRcbiAxODE6XHRcbiAxODI6XHRcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBzaW1wbGlmeSBkZWJ1ZyBwcm9ibGVtc1xuIDE4MzpcdFxuIDE4NDpcdGNvbmZpZyBSVFc4OV9ERUJVR0ZTXG4gMTg1Olx0XHRib29sIFwmIzM0O1JlYWx0ZWsgcnR3ODkgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4gMTg2Olx0XHRkZXBlbmRzIG9uIFJUVzg5X0NPUkUgXHUwMDI2XHUwMDI2IENGRzgwMjExX0RFQlVHRlNcbiAxODc6XHRcdHNlbGVjdCBSVFc4OV9ERUJVR1xuIDE4ODpcdFx0aGVscFxuIDE4OTpcdFx0ICBFbmFibGUgZGVidWdmcyBzdXBwb3J0XG4gMTkwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3OTkxCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBCdWlsZCBQcm9jZXNzKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgY29yZS5vYCBhbmQgYHdvdy5vYCBhcmUgZ2V0dGluZyBidWlsdC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBgTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHNlZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb21waWxhdGlvbiBzdGVwcyBpbnZvbHZlZC4gSXQmIzM5O2xsIGdpdmUgbWUgdGhlIGNsZWFyZXN0IHBpY3R1cmUgb2YgaG93IHRoZXNlIG9iamVjdCBmaWxlcyBhcmUgZ2VuZXJhdGVkLCB3aGljaCBpcyBjcnVjaWFsIGZvciBbKippbnNlcnQgeW91ciByZWxldmFudCBmaWVsZCwgZS5nLiwgZGVidWdnaW5nIGEgYnVpbGQgaXNzdWUsIG9wdGltaXppbmcgY29tcGlsYXRpb24sIHVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIHBpcGVsaW5lLCBtb2RpZnlpbmcgdGhlIGJ1aWxkKipdLiBMb29raW5nIGF0IHRoZSBgTWFrZWZpbGVgIHdpbGwgcXVpY2tseSB0ZWxsIG1lIHRoZSBjb21waWxlciBmbGFncywgaW5jbHVkZSBwYXRocywgc291cmNlIGZpbGVzLCBhbmQgYW55IGxpbmtpbmcgc3RlcHMuIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgZXhhY3QgcnVsZXMgcmVzcG9uc2libGUgZm9yIGNvbXBpbGluZyB0aG9zZSBzcGVjaWZpYyBvYmplY3QgZmlsZXMuIFRoYXQmIzM5O3MgbXkgc3RhcnRpbmcgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3dvd1xcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU9ND1ydHc4OV9jb3JlLXkgJiM0Mzs9IGNvcmUubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjIzOnJ0dzg5X2NvcmUtJChDT05GSUdfUE0pICYjNDM7PSB3b3cub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0yNC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjRtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgzNDEKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA0NjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFsdGVrIHJ0dzg5IFdpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uIGFuZCBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIEkgc2VlIGBydHc4OV9jb3JlLXkgJiM0Mzs9IGNvcmUub2AgYW5kIGFsc28gYHJ0dzg5X2NvcmUtJChDT05GSUdfUE0pICYjNDM7PSB3b3cub2AuICBUaGF0IG1lYW5zIHRoZSBjb3JlIG1vZHVsZSBpcyBhbHdheXMgaW5jbHVkZWQsIGFuZCBgd293Lm9gIChXYWtlLW9uLVdMQU4/KSBpcyBvbmx5IGluY2x1ZGVkIGlmIHBvd2VyIG1hbmFnZW1lbnQgaXMgZW5hYmxlZC4gYFJUVzg5X0NPUkVgIGlzIHRoZSBjb3JlLCBhbmQgaXQmIzM5O3MgYmVpbmcgc2VsZWN0ZWQgYnkgYSBidW5jaCBvZiBkcml2ZXJzIC0gYDg4NTJBVWAsIGA4ODUyQ1VgLCB0aGUgdXN1YWwgc3VzcGVjdHMuCgpJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyB3aG9sZSB0aGluZyBpcyBjb25maWd1cmVkLiBUbyBzdGF0aWNhbGx5IGJ1aWxkIHRoaXMgZHJpdmVyLCBJIG5lZWQgYSBmZXcgdGhpbmdzOiBgTUFDODAyMTFgLCBvYnZpb3VzbHksIGBSVFc4OWAsIGBSVFc4OV9DT1JFYCAtIHRoYXQmIzM5O3MgdGhlIGJhc2UuIFRoZW4gZWl0aGVyIGBSVFc4OV9QQ0lgICpvciogYFJUVzg5X1VTQmAsIGRlcGVuZGluZyBvbiB0aGUgaGFyZHdhcmUsIGFuZCBvbmUgb2YgdGhvc2Ugc3BlY2lmaWMgZGV2aWNlIGRyaXZlcnMgbGlrZSBgUlRXODlfODg1MkFVYC4gQW5kLCBvZiBjb3Vyc2UsIGBQTWAgaWYgSSB3YW50IHRoYXQgYHdvdy5vYCBtb2R1bGUuICBHb3QgaXQuCgpOb3csIGxldCYjMzk7cyBzd2l0Y2ggZ2VhcnMgYW5kIGZvY3VzIG9uIHRoZSBjb2RlIGNoYW5nZXMgaW4gdGhpcyBwYXRjaC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGltcGFjdCBvZiB0aGlzIGBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4YCBmdW5jdGlvbi4gTGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIGF0IHRoZSBwYXRjaCwgaXQmIzM5O3MgZGVmaW5lZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmNgLiBBaCwgaXQmIzM5O3MgYSBgc3RhdGljYCBoZWxwZXIgZnVuY3Rpb24uIFNvLCBpdCYjMzk7cyBub3QgZGlyZWN0bHkgZXhwb3NlZCBhcyBhbiBlbnRyeSBwb2ludC4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3csIGJ1dCBJIHN0aWxsIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZS4KCkxldCBtZSB0cmFjZSB0aGUgY2FsbHMuIEl0JiMzOTtzIGNhbGxlZCBieSBgcnR3ODlfdmlmX3J4X3N0YXRzX2l0ZXJgLCB3aGljaCBpcyBjYWxsZWQgYnkgYHJ0dzg5X2NvcmVfcnhfc3RhdHNgLCB3aGljaCwgaW4gdHVybiwgaXMgY2FsbGVkIGJ5IGBydHc4OV9jb3JlX3J4X3RvX21hYzgwMjExYCwgYW5kIHVsdGltYXRlbHksIGBydHc4OV9jb3JlX3J4YC4gVGhhdCYjMzk7cyB0aGUgY3JpdGljYWwgUlggcGF0aC4KCk9rYXksIGxldCBtZSBxdWlja2x5IGdsYW5jZSBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmhgIGFuZCBgY29yZS5jYCBmb3IgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gcmVjZWl2ZSwgb3IgYW55IGNoYW5nZXMgdGhhdCBjb3VsZCBiZSByZWxldmFudCB0byBob3cgdGhpcyBtb2R1bGUgaW50ZXJhY3RzIHdpdGggdGhlIGNvcmUgd2lyZWxlc3MgZnVuY3Rpb25hbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODlfY29yZV9yeCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9MTkwMD1FWFBPUlRfU1lNQk9MKHJ0dzg5X2NvcmVfZmlsbF90eGRlc2NfZndjbWRfdjIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMTkwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjE5MDI6c3RhdGljIGludCBydHc4OV9jb3JlX3J4X3Byb2Nlc3NfbWFjX3BwZHUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMTkwMy1cdFx0XHRcdFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTE5Nzk9c3RhdGljIHU4IHJ0dzg5X2dldF9kYXRhX3JhdGVfbnNzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTE2IGRhdGFfcmF0ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0xOTk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MTk5OTpzdGF0aWMgdm9pZCBydHc4OV9jb3JlX3J4X3Byb2Nlc3NfcGh5X3BwZHVfaXRlcih2b2lkICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMjAwMC1cdFx0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTIyMzE9c3RhdGljIHZvaWQgcnR3ODlfY29yZV91cGRhdGVfcGh5X3BwZHUoc3RydWN0IHJ0dzg5X3J4X3BoeV9wcGR1ICpwaHlfcHBkdSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0yMjQ3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MjI0ODpzdGF0aWMgaW50IHJ0dzg5X2NvcmVfcnhfcHJvY2Vzc19waHlfcHBkdShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0yMjQ5LVx0XHRcdFx0XHQgIHN0cnVjdCBydHc4OV9yeF9waHlfcHBkdSAqcGh5X3BwZHUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMjI3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjIyNzM6c3RhdGljIGludCBydHc4OV9jb3JlX3J4X3BhcnNlX3BoeV9zdHMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMjI3NC1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcnR3ODlfcnhfcGh5X3BwZHUgKnBoeV9wcGR1KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTIzMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzoyMzIyOnN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcnhfcHJvY2Vzc19waHlfc3RzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTIzMjMtXHRcdFx0XHRcdCAgc3RydWN0IHJ0dzg5X3J4X3BoeV9wcGR1ICpwaHlfcHBkdSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0yMzI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MjMyNzpcdHJldCA9IHJ0dzg5X2NvcmVfcnhfcGFyc2VfcGh5X3N0cyhydHdkZXYsIHBoeV9wcGR1KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTIzMjgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTIzMzMtXHRpZWVlODAyMTFfaXRlcmF0ZV9zdGF0aW9uc19hdG9taWMocnR3ZGV2LVx1MDAzZWh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MjMzNDpcdFx0XHRcdFx0ICBydHc4OV9jb3JlX3J4X3Byb2Nlc3NfcGh5X3BwZHVfaXRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTIzMzUtXHRcdFx0XHRcdCAgcGh5X3BwZHUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTIzOTE9Ym9vbCBydHc4OV9jaGVja19yeF9zdGF0dV9naV9tYXRjaChzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqc3RhdHVzLCB1OCBnaV9sdGYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMjM5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjI0MDA6c3RhdGljIGJvb2wgcnR3ODlfY29yZV9yeF9wcGR1X21hdGNoKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTI0MDEtXHRcdFx0XHQgICAgIHN0cnVjdCBydHc4OV9yeF9kZXNjX2luZm8gKmRlc2NfaW5mbyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0zMDM4PXN0YXRpYyB2b2lkIHJ0dzg5X3ZpZl9yeF9zdGF0c19pdGVyKHZvaWQgKmRhdGEsIHU4ICptYWMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMzEzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjMxNDA6c3RhdGljIHZvaWQgcnR3ODlfY29yZV9yeF9zdGF0cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zMTQxLVx0XHRcdFx0c3RydWN0IHJ0dzg5X3J4X3BoeV9wcGR1ICpwaHlfcHBkdSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0zOTEzPXN0YXRpYyBib29sIHJ0dzg5X2NvcmVfc2tiX3BuX3ZhbGlkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zOTc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6Mzk3OTpzdGF0aWMgdm9pZCBydHc4OV9jb3JlX3J4X3RvX21hYzgwMjExKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTM5ODAtXHRcdFx0XHQgICAgICBzdHJ1Y3QgcnR3ODlfcnhfcGh5X3BwZHUgKnBoeV9wcGR1LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTM5OTEtXHRydHc4OV9jb3JlX2h3X3RvX3NiYW5kX3JhdGUocnhfc3RhdHVzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjM5OTI6XHRydHc4OV9jb3JlX3J4X3N0YXRzKHJ0d2RldiwgcGh5X3BwZHUsIGRlc2NfaW5mbywgc2tiX3BwZHUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMzk5My1cdHJ0dzg5X2NvcmVfdXBkYXRlX3J4X3N0YXR1c19ieV9wcGR1KHJ0d2Rldiwgcnhfc3RhdHVzLCBwaHlfcHBkdSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDAwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQwMDY6c3RhdGljIHZvaWQgcnR3ODlfY29yZV9yeF9wZW5kaW5nX3NrYihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDA3LVx0XHRcdFx0ICAgICAgc3RydWN0IHJ0dzg5X3J4X3BoeV9wcGR1ICpwaHlfcHBkdSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDIxLVx0XHRyeF9zdGF0dXMgPSBJRUVFODAyMTFfU0tCX1JYQ0Ioc2tiX3BwZHUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDAyMjpcdFx0aWYgKHJ0dzg5X2NvcmVfcnhfcHBkdV9tYXRjaChydHdkZXYsIGRlc2NfaW5mbywgcnhfc3RhdHVzKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQwMjMtXHRcdFx0cnR3ODlfY2hpcF9xdWVyeV9wcGR1KHJ0d2RldiwgcGh5X3BwZHUsIHJ4X3N0YXR1cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDI0LVx0XHRydHc4OV9jb3JyZWN0X2Nja19jaGFuKHJ0d2Rldiwgcnhfc3RhdHVzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQwMjU6XHRcdHJ0dzg5X2NvcmVfcnhfdG9fbWFjODAyMTEocnR3ZGV2LCBwaHlfcHBkdSwgZGVzY19pbmZvLCBza2JfcHBkdSwgcnhfc3RhdHVzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQwMjYtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDAyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQwMjk6c3RhdGljIHZvaWQgcnR3ODlfY29yZV9yeF9wcm9jZXNzX3BwZHVfc3RzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQwMzAtXHRcdFx0XHRcdCAgIHN0cnVjdCBydHc4OV9yeF9kZXNjX2luZm8gKmRlc2NfaW5mbyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDQxLVx0aWYgKGRlc2NfaW5mby1cdTAwM2VtYWNfaW5mb192YWxpZCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDA0MjpcdFx0cmV0ID0gcnR3ODlfY29yZV9yeF9wcm9jZXNzX21hY19wcGR1KHJ0d2Rldiwgc2tiLCBcdTAwMjZwaHlfcHBkdSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDQzLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQwNDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo0MDQ3Olx0cmV0ID0gcnR3ODlfY29yZV9yeF9wcm9jZXNzX3BoeV9wcGR1KHJ0d2RldiwgXHUwMDI2cGh5X3BwZHUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDA0OC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDA1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQwNTE6XHRydHc4OV9jb3JlX3J4X3Byb2Nlc3NfcGh5X3N0cyhydHdkZXYsIFx1MDAyNnBoeV9wcGR1KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQwNTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDUzLW91dDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQwNTQ6XHRydHc4OV9jb3JlX3J4X3BlbmRpbmdfc2tiKHJ0d2RldiwgXHUwMDI2cGh5X3BwZHUsIGRlc2NfaW5mbywgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQwNTUtXHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQwNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo0MDU4OnN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcnhfcHJvY2Vzc19yZXBvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDA1OS1cdFx0XHRcdFx0IHN0cnVjdCBydHc4OV9yeF9kZXNjX2luZm8gKmRlc2NfaW5mbyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDY2LVx0Y2FzZSBSVFc4OV9DT1JFX1JYX1RZUEVfUFBEVV9TVEFUOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDA2NzpcdFx0cnR3ODlfY29yZV9yeF9wcm9jZXNzX3BwZHVfc3RzKHJ0d2RldiwgZGVzY19pbmZvLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDA2OC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9NDQ0Nz1zdGF0aWMgdm9pZCBydHc4OV9jb3JlX2ZsdXNoX3BwZHVfcnhfcXVldWUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQ0NTctXHRcdHJ4X3N0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2JfcHBkdSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo0NDU4Olx0XHRydHc4OV9jb3JlX3J4X3RvX21hYzgwMjExKHJ0d2RldiwgTlVMTCwgZGVzY19pbmZvLCBza2JfcHBkdSwgcnhfc3RhdHVzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQ0NTktXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9NDQ2Mj1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQ0NjM6dm9pZCBydHc4OV9jb3JlX3J4X3BrdF9oZGwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDQ2NC1cdFx0XHQgICBjb25zdCBzdHJ1Y3QgcnR3ODlfcnhfZGVzY19pbmZvICpkZXNjKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQ0OTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo0NDk3OnZvaWQgcnR3ODlfY29yZV9yeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00NDk4LVx0XHQgICBzdHJ1Y3QgcnR3ODlfcnhfZGVzY19pbmZvICpkZXNjX2luZm8sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDUwNi1cdGlmIChkZXNjX2luZm8tXHUwMDNlcGt0X3R5cGUgIT0gUlRXODlfQ09SRV9SWF9UWVBFX1dJRkkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQ1MDc6XHRcdHJ0dzg5X2NvcmVfcnhfcHJvY2Vzc19yZXBvcnQocnR3ZGV2LCBkZXNjX2luZm8sIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00NTA4LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDUxOC1cdHJ0dzg5X2NvcmVfdXBkYXRlX3J4X3N0YXR1cyhydHdkZXYsIHNrYiwgZGVzY19pbmZvLCByeF9zdGF0dXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDUxOTpcdHJ0dzg5X2NvcmVfcnhfcGt0X2hkbChydHdkZXYsIHNrYiwgZGVzY19pbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQ1MjAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDUyNy1cdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQ1Mjg6XHRcdHJ0dzg5X2NvcmVfcnhfdG9fbWFjODAyMTEocnR3ZGV2LCBOVUxMLCBkZXNjX2luZm8sIHNrYiwgcnhfc3RhdHVzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQ1MjktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDUzMDpFWFBPUlRfU1lNQk9MKHJ0dzg5X2NvcmVfcngpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDUzMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD0yMTY9ZW51bSBydHc4OV9jb3JlX3R4X3R5cGUge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTIyMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjIyMjplbnVtIHJ0dzg5X2NvcmVfcnhfdHlwZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0yMjMtXHRSVFc4OV9DT1JFX1JYX1RZUEVfV0lGSVx0XHQ9IDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9ODA5Mz11OCBydHc4OV9jb3JlX2dldF9jaF9kbWFfdjIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBxc2VsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjgwOTQ6dm9pZCBydHc4OV9jb3JlX3J4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTgwOTUtXHRcdCAgIHN0cnVjdCBydHc4OV9yeF9kZXNjX2luZm8gKmRlc2NfaW5mbyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BjaS5jPTMyMT1zdGF0aWMgdTMyIHJ0dzg5X3BjaV9yeGJkX2RlbGl2ZXJfc2ticyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9wY2kuYy0zOTMtXHRpZiAobHMpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGNpLmM6Mzk0Olx0XHRydHc4OV9jb3JlX3J4KHJ0d2RldiwgZGVzY19pbmZvLCBuZXcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9wY2kuYy0zOTUtXHRcdHJ4X3JpbmctXHUwMDNlZGlsaXZlcl9za2IgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM9NDM2PXN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yeF9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTQ4Mi1cdFx0XHRza2JfcHV0X2RhdGEoc2tiLCBwa3RfcHRyICYjNDM7IHBrdF9vZmZzZXQsIGRlc2NfaW5mby5wa3Rfc2l6ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjQ4MzpcdFx0XHRydHc4OV9jb3JlX3J4KHJ0d2RldiwgXHUwMDI2ZGVzY19pbmZvLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy00ODQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNzk3CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIFVTQiBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBSZWFsdGVrIFVTQiBkcml2ZXIg4oCTIHNwZWNpZmljYWxseSwgYHJ0dzg5X3VzYi5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7QWhhISBgcnR3ODlfdXNiX3J4X2hhbmRsZXJgIGlzIGNhbGxpbmcgYHJ0dzg5X2NvcmVfcnhgIHdoZW4gaXQgZ2V0cyBwYWNrZXRzIHZpYSBVU0IuIFRoYXQmIzM5O3MgdGhlIGV4cGVjdGVkIHBhdGggZm9yIFJYLiYjMzQ7CgpCdXQgdGhlIHJlYWwgcXVlc3Rpb24gSSB3YW50IHRvIGFuc3dlciBpcyB3aG8mIzM5O3MgdXNpbmcgYF9fcnR3ODlfd293X3BhcnNlX2FrbWA/IElzIGl0IHJlbGF0ZWQgdG8gdGhlIGlzc3VlIEkgYW0gZGVidWdnaW5nLCBhbmQgaWYgc28gd2hlcmUgZG8gSSBmaW5kIHRoZSBzb3VyY2U/CgpMZXQmIzM5O3Mgc2Vl4oCmIEkgc2hvdWxkIGNoZWNrIGlmIGBydHc4OV9jb3JlX3R4X3dyaXRlX2xpbmtgIGlzIGEgY2FsbGVyLiBPciBvdGhlciBjYWxsZXJzIHBlcmhhcHMuIE5vdywgbGV0JiMzOTtzIHNlZSwgYHJ0dzg5X3dvd19wYXJzZV9ha21gIGlzIGNhbGxpbmcgYF9fcnR3ODlfd293X3BhcnNlX2FrbWAuIE9rYXksIHRoYXQmIzM5O3MgZmluZS4KClJpZ2h0LCBiYWNrIHRvIHRoZSBtYWluIHF1ZXN0aW9uLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIGBydHc4OV9jb3JlX3R4X3dyaXRlX2xpbmtgIHRvIHNlZSB3aGVyZSAqaXQqIGdldHMgY2FsbGVkLiBUaGF0IHdpbGwgdGVsbCBtZSB3aGljaCBwYXJ0IG9mIHRoZSBkcml2ZXIgaXMgdHJpZ2dlcmluZyB0aGlzIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9jb3JlX3R4X3dyaXRlX2xpbmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTEzMzY9aW50IHJ0dzg5X2gyY190eChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMTM3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjEzNzc6c3RhdGljIGludCBydHc4OV9jb3JlX3R4X3dyaXRlX2xpbmsoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMTM3OC1cdFx0XHRcdCAgICBzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTE0MTY9aW50IHJ0dzg5X2NvcmVfdHhfd3JpdGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTE0MzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzoxNDQwOlx0cmV0dXJuIHJ0dzg5X2NvcmVfdHhfd3JpdGVfbGluayhydHdkZXYsIHJ0d3ZpZl9saW5rLCBydHdzdGFfbGluaywgc2tiLCBxc2VsLCBOVUxMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTE0NDEtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTQ5MjY9aW50IHJ0dzg5X2NvcmVfc2VuZF9udWxsZnVuYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbmssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDk3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQ5NzU6XHRyZXQgPSBydHc4OV9jb3JlX3R4X3dyaXRlX2xpbmsocnR3ZGV2LCBydHd2aWZfbGluaywgcnR3c3RhX2xpbmssIHNrYiwgXHUwMDI2cXNlbCwgd2FpdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00OTc2LVx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDc5MAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIHRoZSBydHc4OSBXaXJlbGVzcyBEcml2ZXIqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkYXRhIGZsb3csIGVzcGVjaWFsbHkgYXJvdW5kIHRyYW5zbWl0IG9wZXJhdGlvbnMgd2l0aGluIHRoZSBgcnR3ODlgIGRyaXZlciwgc28gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBleGFtaW5pbmcgdHdvIGtleSBhcmVhcy4gRmlyc3QsIEkmIzM5O2xsIGJlIGRpZ2dpbmcgaW50byBgcnR3ODlfY29yZV90eF93cml0ZWAsIGJlY2F1c2UgdGhhdCBsaWtlbHkgaGFuZGxlcyB0aGUgY29yZSB3cml0aW5nIG9mIHRyYW5zbWl0IGRhdGEgd2l0aGluIHRoZSBkcml2ZXIuIFNlY29uZCwgSSYjMzk7bGwgbW92ZSBvbiB0byBgcnR3ODlfb3BzYCB0byBzZWUgd2hpY2ggbWFjODAyMTEgb3BlcmF0aW9ucyB0aGlzIGRyaXZlciBhY3R1YWxseSBleHBvcnRzLiBVbmRlcnN0YW5kaW5nIHRoZSBvcGVyYXRpb25zIGl0IHByb3ZpZGVzIHdpbGwgaGVscCBtZSBidWlsZCB1cCBhIG1vcmUgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUuIEkgZXhwZWN0IEkmIzM5O2xsIGZpbmQgYSBjbGVhciBtYXBwaW5nIG9mIHRoZSBkcml2ZXImIzM5O3MgdHJhbnNtaXQgY2FwYWJpbGl0aWVzIHRvIHRoZSBtYWM4MDIxMSBpbnRlcmZhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg5X29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9NzU0MD1zdHJ1Y3QgcnR3ODlfZGV2ICpydHc4OV9hbGxvY19pZWVlODAyMTFfaHcoc3RydWN0IGRldmljZSAqZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTc1NTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo3NTYwOlx0b3BzID0ga21lbWR1cChcdTAwMjZydHc4OV9vcHMsIHNpemVvZihydHc4OV9vcHMpLCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTc1NjEtXHRpZiAoIW9wcylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD0zMz1zdHJ1Y3QgcnR3ODlfZndfY21kX29mbGRfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzU6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIHJ0dzg5X29wcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTM2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxOTpzdGF0aWMgdm9pZCBydHc4OV9vcHNfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMjAtXHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCAqY29udHJvbCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6NDg6c3RhdGljIHZvaWQgcnR3ODlfb3BzX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNDktXHRcdFx0XHQgICAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6NTc6c3RhdGljIGludCBydHc4OV9vcHNfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNTgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy02NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo2NjpzdGF0aWMgdm9pZCBydHc4OV9vcHNfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTY3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6NzU6c3RhdGljIGludCBydHc4OV9vcHNfY29uZmlnKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBpbnQgcmFkaW9faWR4LCB1MzIgY2hhbmdlZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy03Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxMDc6c3RhdGljIGludCBfX3J0dzg5X29wc19hZGRfaWZhY2VfbGluayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTA4LVx0XHRcdFx0ICAgICAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE1MDpzdGF0aWMgdm9pZCBfX3J0dzg5X29wc19yZW1vdmVfaWZhY2VfbGluayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTUxLVx0XHRcdFx0XHQgIHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNjk6c3RhdGljIGludCBydHc4OV9vcHNfYWRkX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNzAtXHRcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0yMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjIzOlx0cmV0ID0gX19ydHc4OV9vcHNfYWRkX2lmYWNlX2xpbmsocnR3ZGV2LCBydHd2aWZfbGluayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMjI0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMjQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjI0MzpzdGF0aWMgdm9pZCBydHc4OV9vcHNfcmVtb3ZlX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0yNDQtXHRcdFx0XHQgICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMjY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjI2NzpcdF9fcnR3ODlfb3BzX3JlbW92ZV9pZmFjZV9saW5rKHJ0d2RldiwgcnR3dmlmX2xpbmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTI2OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMjgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjI4MjpzdGF0aWMgaW50IHJ0dzg5X29wc19jaGFuZ2VfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTI4My1cdFx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTI5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyOTQ6XHRydHc4OV9vcHNfcmVtb3ZlX2ludGVyZmFjZShodywgdmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0yOTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTI5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyOTk6XHRyZXQgPSBydHc4OV9vcHNfYWRkX2ludGVyZmFjZShodywgdmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0zMDAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0zMDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MzA4OnN0YXRpYyB2b2lkIHJ0dzg5X29wc19jb25maWd1cmVfZmlsdGVyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTMwOS1cdFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgY2hhbmdlZF9mbGFncyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM9NDc5PXN0YXRpYyB2b2lkIHJ0dzg5X2NvbmZfdHgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy00ODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6NDg4OnN0YXRpYyBpbnQgX19ydHc4OV9vcHNfc3RhX2FkZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNDg5LVx0XHRcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy01NTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6NTUyOnN0YXRpYyBpbnQgX19ydHc4OV9vcHNfc3RhX2Fzc29jKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy01NTMtXHRcdFx0XHQgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNTgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjU4MjpzdGF0aWMgaW50IF9fcnR3ODlfb3BzX3N0YV9kaXNhc3NvYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNTgzLVx0XHRcdFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTYwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo2MDk6c3RhdGljIGludCBfX3J0dzg5X29wc19zdGFfZGlzY29ubmVjdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNjEwLVx0XHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNjMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjYzMzpzdGF0aWMgaW50IF9fcnR3ODlfb3BzX3N0YV9yZW1vdmUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTYzNC1cdFx0XHRcdCAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM9NjYxPXN0YXRpYyB2b2lkIHJ0dzg5X3N0YXRpb25fbW9kZV9zdGFfYXNzb2Moc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy02NzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6Njc1Olx0X19ydHc4OV9vcHNfc3RhX2Fzc29jKHJ0d2RldiwgdmlmLCBzdGEsIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTY3Ni19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNjc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjY3ODpzdGF0aWMgdm9pZCBfX3J0dzg5X29wc19ic3NfbGlua19hc3NvYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNjc5LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTY4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo2ODg6c3RhdGljIHZvaWQgX19ydHc4OV9vcHNfYnNzX2Fzc29jKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy02ODktXHRcdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTY5NS1cdHJ0dzg5X3ZpZl9mb3JfZWFjaF9saW5rKHJ0d3ZpZiwgcnR3dmlmX2xpbmssIGxpbmtfaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6Njk2Olx0XHRfX3J0dzg5X29wc19ic3NfbGlua19hc3NvYyhydHdkZXYsIHJ0d3ZpZl9saW5rKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy02OTctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTY5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo2OTk6c3RhdGljIHZvaWQgcnR3ODlfb3BzX3ZpZl9jZmdfY2hhbmdlZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy03MDAtXHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLCB1NjQgY2hhbmdlZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNzExLVx0XHRcdHJ0dzg5X3N0YXRpb25fbW9kZV9zdGFfYXNzb2MocnR3ZGV2LCB2aWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjcxMjpcdFx0XHRfX3J0dzg5X29wc19ic3NfYXNzb2MocnR3ZGV2LCB2aWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTcxMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNzQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjc1MDpzdGF0aWMgdm9pZCBydHc4OV9vcHNfbGlua19pbmZvX2NoYW5nZWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNzUxLVx0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy03OTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6ODAwOnN0YXRpYyBpbnQgcnR3ODlfb3BzX3N0YXJ0X2FwKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTgwMS1cdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz04NDc9c3RhdGljXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6ODQ4OnZvaWQgcnR3ODlfb3BzX3N0b3BfYXAoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtODQ5LVx0XHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqbGlua19jb25mKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy04NzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6ODczOnN0YXRpYyBpbnQgcnR3ODlfb3BzX3NldF90aW0oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtODc0LVx0XHRcdCAgICAgYm9vbCBzZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTg4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo4ODc6c3RhdGljIGludCBydHc4OV9vcHNfY29uZl90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy04ODgtXHRcdFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy05MTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6OTE0OnN0YXRpYyBpbnQgX19ydHc4OV9vcHNfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTkxNS1cdFx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy05MjMtXHQgICAgbmV3X3N0YXRlID09IElFRUU4MDIxMV9TVEFfTk9ORSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo5MjQ6XHRcdHJldHVybiBfX3J0dzg5X29wc19zdGFfYWRkKHJ0d2RldiwgdmlmLCBzdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTkyNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtOTI5LVx0XHRcdHJldHVybiAwOyAvKiBkZWZlciB0byBic3NfaW5mb19jaGFuZ2VkIHRvIGhhdmUgdmlmIGluZm8gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo5MzA6XHRcdHJldHVybiBfX3J0dzg5X29wc19zdGFfYXNzb2MocnR3ZGV2LCB2aWYsIHN0YSwgZmFsc2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTkzMS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtOTM0LVx0ICAgIG5ld19zdGF0ZSA9PSBJRUVFODAyMTFfU1RBX0FVVEgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6OTM1Olx0XHRyZXR1cm4gX19ydHc4OV9vcHNfc3RhX2Rpc2Fzc29jKHJ0d2RldiwgdmlmLCBzdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTkzNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtOTM4LVx0ICAgIG5ld19zdGF0ZSA9PSBJRUVFODAyMTFfU1RBX05PTkUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6OTM5Olx0XHRyZXR1cm4gX19ydHc4OV9vcHNfc3RhX2Rpc2Nvbm5lY3QocnR3ZGV2LCB2aWYsIHN0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtOTQwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy05NDItXHQgICAgbmV3X3N0YXRlID09IElFRUU4MDIxMV9TVEFfTk9URVhJU1QpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6OTQzOlx0XHRyZXR1cm4gX19ydHc4OV9vcHNfc3RhX3JlbW92ZShydHdkZXYsIHZpZiwgc3RhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy05NDQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTk0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo5NDg6c3RhdGljIGludCBydHc4OV9vcHNfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTk0OS1cdFx0XHQgICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtOTU4LVx0cnR3ODlfbGVhdmVfcHNfbW9kZShydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjk1OTpcdHJldHVybiBfX3J0dzg5X29wc19zdGFfc3RhdGUoaHcsIHZpZiwgc3RhLCBvbGRfc3RhdGUsIG5ld19zdGF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtOTYwLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy05NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6OTYyOnN0YXRpYyBpbnQgcnR3ODlfb3BzX3NldF9rZXkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGVudW0gc2V0X2tleV9jbWQgY21kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTk2My1cdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEwMDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTAwMTpzdGF0aWMgaW50IHJ0dzg5X29wc19hbXBkdV9hY3Rpb24oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTAwMi1cdFx0XHRcdCAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTA1Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxMDUzOnN0YXRpYyBpbnQgcnR3ODlfb3BzX3NldF9ydHNfdGhyZXNob2xkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBpbnQgcmFkaW9faWR4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEwNTQtXHRcdFx0XHQgICAgICAgdTMyIHZhbHVlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMDY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjEwNjc6c3RhdGljIHZvaWQgcnR3ODlfb3BzX3N0YV9zdGF0aXN0aWNzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEwNjgtXHRcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jPTEwODQ9dm9pZCBfX3J0dzg5X2Ryb3BfcGFja2V0cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEwOTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTA5NzpzdGF0aWMgdm9pZCBydHc4OV9vcHNfZmx1c2goc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTA5OC1cdFx0XHQgICAgdTMyIHF1ZXVlcywgYm9vbCBkcm9wKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz0xMTM5PXN0YXRpYyB2b2lkIHJ0dzg5X3JhX21hc2tfaW5mb191cGRhdGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMTUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjExNTE6c3RhdGljIGludCBydHc4OV9vcHNfc2V0X2JpdHJhdGVfbWFzayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMTUyLVx0XHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM9MTE2NT1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxMTY2OmludCBydHc4OV9vcHNfc2V0X2FudGVubmEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGludCByYWRpb19pZHgsIHUzMiB0eF9hbnQsIHUzMiByeF9hbnQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTE2Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jPTExOTM9c3RhdGljXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTE5NDppbnQgcnR3ODlfb3BzX2dldF9hbnRlbm5hKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBpbnQgcmFkaW9faWR4LCB1MzIgKnR4X2FudCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMTk1LVx0XHRcdCAgdTMyICpyeF9hbnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEyMDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTIwNjpzdGF0aWMgdm9pZCBydHc4OV9vcHNfc3dfc2Nhbl9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMjA3LVx0XHRcdFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEyMjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTIyNzpzdGF0aWMgdm9pZCBydHc4OV9vcHNfc3dfc2Nhbl9jb21wbGV0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMjI4LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEyNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTI0NTpzdGF0aWMgdm9pZCBydHc4OV9vcHNfcmVjb25maWdfY29tcGxldGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTI0Ni1cdFx0XHRcdFx0ZW51bSBpZWVlODAyMTFfcmVjb25maWdfdHlwZSByZWNvbmZpZ190eXBlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMjUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjEyNTQ6c3RhdGljIGludCBydHc4OV9vcHNfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMjU1LVx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV9zY2FuX3JlcXVlc3QgKnJlcSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTI5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxMjk5OnN0YXRpYyB2b2lkIHJ0dzg5X29wc19jYW5jZWxfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMzAwLVx0XHRcdFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMzIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjEzMjM6c3RhdGljIHZvaWQgcnR3ODlfb3BzX3N0YV9yY191cGRhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTMyNC1cdFx0XHRcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMzM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjEzMzk6c3RhdGljIGludCBydHc4OV9vcHNfYWRkX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTM0MC1cdFx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHhfY29uZiAqY3R4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMzQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjEzNDk6c3RhdGljIHZvaWQgcnR3ODlfb3BzX3JlbW92ZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEzNTAtXHRcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eF9jb25mICpjdHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEzNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTM1OTpzdGF0aWMgdm9pZCBydHc4OV9vcHNfY2hhbmdlX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTM2MC1cdFx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFuY3R4X2NvbmYgKmN0eCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTM2OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxMzcwOnN0YXRpYyBpbnQgcnR3ODlfb3BzX2Fzc2lnbl92aWZfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMzcxLVx0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMzkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjEzOTI6c3RhdGljIHZvaWQgcnR3ODlfb3BzX3VuYXNzaWduX3ZpZl9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEzOTMtXHRcdFx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jPTE0MTQ9c3RhdGljXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTQxNTppbnQgcnR3ODlfb3BzX3N3aXRjaF92aWZfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNDE2LVx0XHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfdmlmX2NoYW5jdHhfc3dpdGNoICp2aWZzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNDYxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE0NjI6c3RhdGljIHZvaWQgcnR3ODlfb3BzX2NoYW5uZWxfc3dpdGNoX2JlYWNvbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNDYzLVx0XHRcdFx0XHQgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTQ4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNDgxOnN0YXRpYyBpbnQgcnR3ODlfb3BzX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE0ODItXHRcdFx0XHQgICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTUxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNTE3OnN0YXRpYyBpbnQgcnR3ODlfb3BzX2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNTE4LVx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz0xNTM1PXN0YXRpYyB2b2lkIHJ0dzg5X3NldF90aWRfY29uZmlnX2l0ZXIodm9pZCAqZGF0YSwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTU0My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNTQ0OnN0YXRpYyBpbnQgcnR3ODlfb3BzX3NldF90aWRfY29uZmlnKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE1NDUtXHRcdFx0XHQgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM9MTU2Mz1zdGF0aWMgYm9vbCBydHc4OV9jYW5fd29ya19vbl9saW5rcyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE1NzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTU3NjpzdGF0aWMgYm9vbCBydHc4OV9vcHNfY2FuX2FjdGl2YXRlX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE1NzctXHRcdFx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNjA1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE2MDY6c3RhdGljIHZvaWQgX19ydHc4OV9vcHNfY2xyX3ZpZl9saW5rcyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTYwNy1cdFx0XHRcdCAgICAgIHN0cnVjdCBydHc4OV92aWYgKnJ0d3ZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTYxOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNjIwOlx0XHRfX3J0dzg5X29wc19yZW1vdmVfaWZhY2VfbGluayhydHdkZXYsIHJ0d3ZpZl9saW5rKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNjIxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNjI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE2MjY6c3RhdGljIGludCBfX3J0dzg5X29wc19zZXRfdmlmX2xpbmtzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNjI3LVx0XHRcdFx0ICAgICBzdHJ1Y3QgcnR3ODlfdmlmICpydHd2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE2MzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTYzOTpcdFx0cmV0ID0gX19ydHc4OV9vcHNfYWRkX2lmYWNlX2xpbmsocnR3ZGV2LCBydHd2aWZfbGluayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTY0MC1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz0xNjc4PXN0YXRpY1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE2Nzk6aW50IHJ0dzg5X29wc19jaGFuZ2VfdmlmX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE2ODAtXHRcdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE3MjEtXHRpZiAoIW9sZF9saW5rcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNzIyOlx0XHRfX3J0dzg5X29wc19jbHJfdmlmX2xpbmtzKHJ0d2RldiwgcnR3dmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE3MjMtXHRcdFx0XHRcdCAgQklUKFJUVzg5X1ZJRl9JRExFX0xJTktfSUQpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNzI0LVx0ZWxzZSBpZiAoY2xyX2xpbmtzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE3MjU6XHRcdF9fcnR3ODlfb3BzX2Nscl92aWZfbGlua3MocnR3ZGV2LCBydHd2aWYsIGNscl9saW5rcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTcyNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTc0MC1cdGlmIChzZXRfbGlua3MpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNzQxOlx0XHRyZXQgPSBfX3J0dzg5X29wc19zZXRfdmlmX2xpbmtzKHJ0d2RldiwgcnR3dmlmLCBzZXRfbGlua3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE3NDItXHRcdGlmIChyZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTc0MzpcdFx0XHRfX3J0dzg5X29wc19jbHJfdmlmX2xpbmtzKHJ0d2RldiwgcnR3dmlmLCBzZXRfbGlua3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE3NDQtXHR9IGVsc2UgaWYgKCFuZXdfbGlua3MpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNzQ1Olx0XHRyZXQgPSBfX3J0dzg5X29wc19zZXRfdmlmX2xpbmtzKHJ0d2RldiwgcnR3dmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE3NDYtXHRcdFx0XHRcdFx0QklUKFJUVzg5X1ZJRl9JRExFX0xJTktfSUQpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNzQ3LVx0XHRpZiAocmV0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE3NDg6XHRcdFx0X19ydHc4OV9vcHNfY2xyX3ZpZl9saW5rcyhydHdkZXYsIHJ0d3ZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNzQ5LVx0XHRcdFx0XHRcdCAgQklUKFJUVzg5X1ZJRl9JRExFX0xJTktfSUQpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTc1OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNzU5OnN0YXRpYyB2b2lkIF9fcnR3ODlfb3BzX2Nscl9zdGFfbGlua3Moc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE3NjAtXHRcdFx0XHQgICAgICBzdHJ1Y3QgcnR3ODlfc3RhICpydHdzdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE3ODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTc4MjpzdGF0aWMgaW50IF9fcnR3ODlfb3BzX3NldF9zdGFfbGlua3Moc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE3ODMtXHRcdFx0XHQgICAgIHN0cnVjdCBydHc4OV9zdGEgKnJ0d3N0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTgxNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxODE1Olx0XHRfX3J0dzg5X29wc19ic3NfbGlua19hc3NvYyhydHdkZXYsIHJ0d3ZpZl9saW5rKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xODE2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz0xODM1PXN0YXRpY1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE4MzY6aW50IHJ0dzg5X29wc19jaGFuZ2Vfc3RhX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE4MzctXHRcdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE4NTgtXHRpZiAoY2xyX2xpbmtzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE4NTk6XHRcdF9fcnR3ODlfb3BzX2Nscl9zdGFfbGlua3MocnR3ZGV2LCBydHdzdGEsIGNscl9saW5rcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTg2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xODYxLVx0aWYgKHNldF9saW5rcykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE4NjI6XHRcdHJldCA9IF9fcnR3ODlfb3BzX3NldF9zdGFfbGlua3MocnR3ZGV2LCBydHdzdGEsIHNldF9saW5rcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTg2My1cdFx0aWYgKHJldClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxODY0Olx0XHRcdF9fcnR3ODlfb3BzX2Nscl9zdGFfbGlua3MocnR3ZGV2LCBydHdzdGEsIHNldF9saW5rcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTg2NS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTg3MC0jaWZkZWYgQ09ORklHX1BNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTg3MTpzdGF0aWMgaW50IHJ0dzg5X29wc19zdXNwZW5kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE4NzItXHRcdFx0ICAgICBzdHJ1Y3QgY2ZnODAyMTFfd293bGFuICp3b3dsYW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE4OTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTg5MzpzdGF0aWMgaW50IHJ0dzg5X29wc19yZXN1bWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTg5NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE5MTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTkxMzpzdGF0aWMgdm9pZCBydHc4OV9vcHNfc2V0X3dha2V1cChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBlbmFibGVkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE5MTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz0xOTIwPXN0YXRpYyB2b2lkIHJ0dzg5X3NldF9yZWtleV9kYXRhKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xOTQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5NDE6c3RhdGljIGludCBydHc4OV9vcHNfZ2V0X3N1cnZleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IGlkeCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xOTQyLVx0XHRcdFx0c3RydWN0IHN1cnZleV9pbmZvICpzdXJ2ZXkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE5NzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTk3NTpzdGF0aWMgdm9pZCBydHc4OV9vcHNfcmZraWxsX3BvbGwoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTk3Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE5ODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTk4ODpjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBydHc4OV9vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTk4OTpcdC50eFx0XHRcdD0gcnR3ODlfb3BzX3R4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5OTA6XHQud2FrZV90eF9xdWV1ZVx0XHQ9IHJ0dzg5X29wc193YWtlX3R4X3F1ZXVlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5OTE6XHQuc3RhcnRcdFx0XHQ9IHJ0dzg5X29wc19zdGFydCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxOTkyOlx0LnN0b3BcdFx0XHQ9IHJ0dzg5X29wc19zdG9wLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5OTM6XHQuY29uZmlnXHRcdFx0PSBydHc4OV9vcHNfY29uZmlnLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5OTQ6XHQuYWRkX2ludGVyZmFjZVx0XHQ9IHJ0dzg5X29wc19hZGRfaW50ZXJmYWNlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5OTU6XHQuY2hhbmdlX2ludGVyZmFjZSAgICAgICA9IHJ0dzg5X29wc19jaGFuZ2VfaW50ZXJmYWNlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5OTY6XHQucmVtb3ZlX2ludGVyZmFjZVx0PSBydHc4OV9vcHNfcmVtb3ZlX2ludGVyZmFjZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxOTk3Olx0LmNvbmZpZ3VyZV9maWx0ZXJcdD0gcnR3ODlfb3BzX2NvbmZpZ3VyZV9maWx0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTk5ODpcdC52aWZfY2ZnX2NoYW5nZWRcdD0gcnR3ODlfb3BzX3ZpZl9jZmdfY2hhbmdlZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxOTk5Olx0LmxpbmtfaW5mb19jaGFuZ2VkXHQ9IHJ0dzg5X29wc19saW5rX2luZm9fY2hhbmdlZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDAwOlx0LnN0YXJ0X2FwXHRcdD0gcnR3ODlfb3BzX3N0YXJ0X2FwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMDE6XHQuc3RvcF9hcFx0XHQ9IHJ0dzg5X29wc19zdG9wX2FwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMDI6XHQuc2V0X3RpbVx0XHQ9IHJ0dzg5X29wc19zZXRfdGltLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMDM6XHQuY29uZl90eFx0XHQ9IHJ0dzg5X29wc19jb25mX3R4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMDQ6XHQuc3RhX3N0YXRlXHRcdD0gcnR3ODlfb3BzX3N0YV9zdGF0ZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDA1Olx0LnNldF9rZXlcdFx0PSBydHc4OV9vcHNfc2V0X2tleSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDA2Olx0LmFtcGR1X2FjdGlvblx0XHQ9IHJ0dzg5X29wc19hbXBkdV9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAwNzpcdC5nZXRfc3VydmV5XHRcdD0gcnR3ODlfb3BzX2dldF9zdXJ2ZXksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAwODpcdC5zZXRfcnRzX3RocmVzaG9sZFx0PSBydHc4OV9vcHNfc2V0X3J0c190aHJlc2hvbGQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAwOTpcdC5zdGFfc3RhdGlzdGljc1x0XHQ9IHJ0dzg5X29wc19zdGFfc3RhdGlzdGljcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDEwOlx0LmZsdXNoXHRcdFx0PSBydHc4OV9vcHNfZmx1c2gsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAxMTpcdC5zZXRfYml0cmF0ZV9tYXNrXHQ9IHJ0dzg5X29wc19zZXRfYml0cmF0ZV9tYXNrLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMTI6XHQuc2V0X2FudGVubmFcdFx0PSBydHc4OV9vcHNfc2V0X2FudGVubmEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAxMzpcdC5nZXRfYW50ZW5uYVx0XHQ9IHJ0dzg5X29wc19nZXRfYW50ZW5uYSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDE0Olx0LnN3X3NjYW5fc3RhcnRcdFx0PSBydHc4OV9vcHNfc3dfc2Nhbl9zdGFydCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDE1Olx0LnN3X3NjYW5fY29tcGxldGVcdD0gcnR3ODlfb3BzX3N3X3NjYW5fY29tcGxldGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAxNjpcdC5yZWNvbmZpZ19jb21wbGV0ZVx0PSBydHc4OV9vcHNfcmVjb25maWdfY29tcGxldGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAxNzpcdC5od19zY2FuXHRcdD0gcnR3ODlfb3BzX2h3X3NjYW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAxODpcdC5jYW5jZWxfaHdfc2Nhblx0XHQ9IHJ0dzg5X29wc19jYW5jZWxfaHdfc2NhbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDE5Olx0LmFkZF9jaGFuY3R4XHRcdD0gcnR3ODlfb3BzX2FkZF9jaGFuY3R4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMjA6XHQucmVtb3ZlX2NoYW5jdHhcdFx0PSBydHc4OV9vcHNfcmVtb3ZlX2NoYW5jdHgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAyMTpcdC5jaGFuZ2VfY2hhbmN0eFx0XHQ9IHJ0dzg5X29wc19jaGFuZ2VfY2hhbmN0eCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDIyOlx0LmFzc2lnbl92aWZfY2hhbmN0eFx0PSBydHc4OV9vcHNfYXNzaWduX3ZpZl9jaGFuY3R4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMjM6XHQudW5hc3NpZ25fdmlmX2NoYW5jdHhcdD0gcnR3ODlfb3BzX3VuYXNzaWduX3ZpZl9jaGFuY3R4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMjQ6XHQuc3dpdGNoX3ZpZl9jaGFuY3R4XHQ9IHJ0dzg5X29wc19zd2l0Y2hfdmlmX2NoYW5jdHgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAyNTpcdC5jaGFubmVsX3N3aXRjaF9iZWFjb25cdD0gcnR3ODlfb3BzX2NoYW5uZWxfc3dpdGNoX2JlYWNvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDI2Olx0LnJlbWFpbl9vbl9jaGFubmVsXHRcdD0gcnR3ODlfb3BzX3JlbWFpbl9vbl9jaGFubmVsLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMjc6XHQuY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsXHQ9IHJ0dzg5X29wc19jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAyODpcdC5zZXRfc2FyX3NwZWNzXHRcdD0gcnR3ODlfb3BzX3NldF9zYXJfc3BlY3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAyOTpcdC5saW5rX3N0YV9yY191cGRhdGVcdD0gcnR3ODlfb3BzX3N0YV9yY191cGRhdGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAzMDpcdC5zZXRfdGlkX2NvbmZpZ1x0XHQ9IHJ0dzg5X29wc19zZXRfdGlkX2NvbmZpZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDMxOlx0LmNhbl9hY3RpdmF0ZV9saW5rc1x0PSBydHc4OV9vcHNfY2FuX2FjdGl2YXRlX2xpbmtzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMzI6XHQuY2hhbmdlX3ZpZl9saW5rc1x0PSBydHc4OV9vcHNfY2hhbmdlX3ZpZl9saW5rcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDMzOlx0LmNoYW5nZV9zdGFfbGlua3NcdD0gcnR3ODlfb3BzX2NoYW5nZV9zdGFfbGlua3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMjAzNC0jaWZkZWYgQ09ORklHX1BNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAzNTpcdC5zdXNwZW5kXHRcdD0gcnR3ODlfb3BzX3N1c3BlbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAzNjpcdC5yZXN1bWVcdFx0XHQ9IHJ0dzg5X29wc19yZXN1bWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAzNzpcdC5zZXRfd2FrZXVwXHRcdD0gcnR3ODlfb3BzX3NldF93YWtldXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMjAzOC1cdC5zZXRfcmVrZXlfZGF0YVx0XHQ9IHJ0dzg5X3NldF9yZWtleV9kYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTIwMzktI2VuZGlmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjA0MDpcdC5yZmtpbGxfcG9sbFx0XHQ9IHJ0dzg5X29wc19yZmtpbGxfcG9sbCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0yMDQxLX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjA0MjpFWFBPUlRfU1lNQk9MKHJ0dzg5X29wcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zYXIuYz00MTI9Y29uc3Qgc3RydWN0IGNmZzgwMjExX3Nhcl9jYXBhIHJ0dzg5X3Nhcl9jYXBhID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2FyLmMtNDE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zYXIuYzo0MTg6aW50IHJ0dzg5X29wc19zZXRfc2FyX3NwZWNzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zYXIuYy00MTktXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9zYXJfc3BlY3MgKnNhcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nhci5oPTMzPWludCBydHc4OV9wcmludF90YXMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nhci5oOjM0OmludCBydHc4OV9vcHNfc2V0X3Nhcl9zcGVjcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2FyLmgtMzUtXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9zYXJfc3BlY3MgKnNhcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5ODQ1CgkJCQkJCQlvdXRwdXQ6IDI3NwoJCQkJCQkJdGhvdWdodHM6IDEyNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgUmVhbHRlayBydHc4OSBXaXJlbGVzcyBEcml2ZXIgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBGaXJzdCwgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkLiBMb29rcyBsaWtlIGBfX3J0dzg5X3dvd19wYXJzZV9ha21gIGlzIGEgbm9uLXN0YXRpYywgZXhwb3J0ZWQgZnVuY3Rpb24sIHdoaWNoIGlzIHByb21pc2luZyBmb3IgcG90ZW50aWFsIGZ1enppbmcsIGFsb25nc2lkZSB0aGUgUlggZW50cnlwb2ludCBgcnR3ODlfY29yZV9yeGAgYW5kIGBydHc4OV9jb3JlX3R4X3dyaXRlYCAob3IgYHJ0dzg5X2NvcmVfdHhfd3JpdGVfbGlua2ApIGZvciBUWCBmcmFtZXMuIFRoZXJlJiMzOTtzIGFsc28gYHJ0dzg5X29wc190eGAgaW4gYG1hYzgwMjExLmNgLCBhbmQgd2hpbGUgYHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHhgIGlzIHN0YXRpYywgaXQmIzM5O3Mgc3RpbGwgcmVsZXZhbnQgZHVlIHRvIGl0cyBpbnZvbHZlbWVudCBpbiB0aGUgdnVsbmVyYWJpbGl0eS4gRG91YmxlIGNoZWNraW5nOiBgX19ydHc4OV93b3dfcGFyc2VfYWttYCBpcyBkZWZpbmVkIGFzIGV4cGVjdGVkLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uOiBpcyB0aGlzIGZ1enphYmxlPyBUaGUgcGF0Y2ggZm9jdXNlcyBvbiBsZW5ndGggYm91bmQgY2hlY2tzIHdpdGhpbiBgcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eGAgYW5kIGBfX3J0dzg5X3dvd19wYXJzZV9ha21gIHdoZW4gY2FsbGluZyBgY2ZnODAyMTFfZmluZF9pZWAuIFdpdGhvdXQgdGhlIGZpeCwgdGhlIGBjZmc4MDIxMV9maW5kX2llYCBmdW5jdGlvbiByZWNlaXZlcyBhbiBpbmNvcnJlY3QgbGVuZ3RoIGZvciB0aGUgSUUgYnVmZmVyLCBzdGFydGluZyBhdCBvZmZzZXQgYGhkcl9sZW5gLCBsZWFkaW5nIHRvIG91dC1vZi1ib3VuZHMgcmVhZHMgb3IgZXZlbiB1bmRlcmZsb3dzLiBUaGlzIHZ1bG5lcmFiaWxpdHkgaXMgcmVhY2hhYmxlIHZpYSBSWCAoYHJ0dzg5X2NvcmVfcnhgIGNoYWluKSBhbmQgVFggKGBydHc4OV9jb3JlX3R4X3dyaXRlX2xpbmtgIGNoYWluKSBwYXRocywgd2hpY2gsIGluIHRoZSBydHc4OSBkcml2ZXIsIGNhbiBiZSBlbXVsYXRlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGVyZWZvcmUsICpXb3J0aEZ1enppbmcqIG11c3QgYmUgc2V0IHRvIGB0cnVlYC4KCk5leHQsIEkgbmVlZCB0byBlbnN1cmUgdGhlIHByb3BlciBjb25maWd1cmF0aW9ucy4gYFJUVzg5YCBpcyBhIHRyaXN0YXRlLCBkZXBlbmRpbmcgb24gYE1BQzgwMjExYCwgd2hpY2ggaXRzZWxmIGRlcGVuZHMgb24gYE5FVGAsIGBXSVJFTEVTU2AsIGFuZCBgQ0ZHODAyMTFgLiBJIGFsc28gbmVlZCBgUlRXODlfQ09SRWAsIGFuZCBlaXRoZXIgYSBVU0IgZHJpdmVyIGxpa2UgYFJUVzg5Xzg4NTJBVWAgb3IgYSBQQ0llIGRyaXZlciwgbGlrZSBgUlRXODlfUENJYCwgZGVwZW5kaW5nIG9uIHRoZSB0YXJnZXQgaGFyZHdhcmUuIFRoZSBgUE1gIGNvbmZpZ3VyYXRpb24gaXMgYWxzbyBlc3NlbnRpYWwgZm9yIGJ1aWxkaW5nIGB3b3cuY2Agd2hpY2ggaW5jbHVkZXMgYHJ0dzg5X2NvcmUtJChDT05GSUdfUE0pICYjNDM7PSB3b3cub2AuIExvb2tpbmcgYXQgYFJUVzg5Xzg4NTJBVWAsIGl0IGRlcGVuZHMgb24gYFVTQmAgYW5kIHNlbGVjdHMgYFJUVzg5X0NPUkVgIGFuZCBgUlRXODlfVVNCYC4KClNvLCB0aGUgKkVuYWJsZUNvbmZpZ3MqIHNob3VsZCBiZTogYE1BQzgwMjExYCwgYENGRzgwMjExYCwgYFJUVzg5YCwgYFJUVzg5X0NPUkVgLCBgUlRXODlfVVNCYCwgYFJUVzg5Xzg4NTJBVWAgKG9yIG9uZSBvZiB0aGUgb3RoZXJzKSwgYFJUVzg5X1BDSWAgKG9yIGFub3RoZXIgUENJZSBjb25maWcpLCBhbmQgYFBNYC4KCk5vdywgZm9yICpGb2N1c1N5bWJvbHMqLCBJJiMzOTtsbCBpbmNsdWRlIHRoZSBpZGVudGlmaWVkIHZ1bG5lcmFibGUgZnVuY3Rpb25zOiBgX19ydHc4OV93b3dfcGFyc2VfYWttYCwgYHJ0dzg5X2NvcmVfcnhgLCBhbmQgYHJ0dzg5X2NvcmVfdHhfd3JpdGVgIChvciBzaW1pbGFyKS4KCkxldCYjMzk7cyBkbyBhIGZpbmFsIHZlcmlmaWNhdGlvbiB2aWEgcGF0Y2ggZGlmZiByZXZpZXcuIEluIGBjb3JlLmNgIGZvciBgcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eGAsIHRoZSBwYXRjaCBhZGRzIGBpZiAoc2tiLSZndDtsZW4gJmx0OyBoZHJfbGVuKSByZXR1cm47YCBhbmQgY29ycmVjdHMgdGhlIGxlbmd0aCBwYXNzZWQgdG8gYGNmZzgwMjExX2ZpbmRfaWVgLiBJbiBgd293LmNgLCBgX19ydHc4OV93b3dfcGFyc2VfYWttYCByZWNlaXZlcyB0aGUgc2FtZSBmaXguIEJvdGggcGF0Y2hlcyBwcmV2ZW50IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzLgoKQWxyaWdodCwgSSYjMzk7bSBjb25maWRlbnQgaW4gdGhlIGFuYWx5c2lzLiBUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoZXNlIGZpbmRpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7UlRXODkmIzM0OywKICAgICYjMzQ7UlRXODlfQ09SRSYjMzQ7LAogICAgJiMzNDtSVFc4OV9VU0ImIzM0OywKICAgICYjMzQ7UlRXODlfODg1MkFVJiMzNDssCiAgICAmIzM0O1JUVzg5X1BDSSYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQUUmIzM0OywKICAgICYjMzQ7UE0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX3J0dzg5X3dvd19wYXJzZV9ha20mIzM0OywKICAgICYjMzQ7cnR3ODlfY29yZV9yeCYjMzQ7LAogICAgJiMzNDtydHc4OV9jb3JlX3R4X3dyaXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIG91dC1vZi1ib3VuZHMgcmVhZCB2dWxuZXJhYmlsaXRpZXMgaW4gcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eCgpIGFuZCBfX3J0dzg5X3dvd19wYXJzZV9ha20oKSBieSB2YWxpZGF0aW5nIHRoYXQgc2tiLVx1MDAzZWxlbiBpcyBhdCBsZWFzdCB0aGUgaGVhZGVyIGxlbmd0aCBhbmQgcGFzc2luZyB0aGUgYWRqdXN0ZWQgaW5mb3JtYXRpb24gZWxlbWVudCBsZW5ndGggKHNrYi1cdTAwM2VsZW4gLSBoZHJfbGVuKSB0byBjZmc4MDIxMV9maW5kX2llKCkgaW5zdGVhZCBvZiB0aGUgdW5hZGp1c3RlZCBza2ItXHUwMDNlbGVuLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBSWCBhbmQgVFggcGFja2V0IHByb2Nlc3Npbmcgb24gcnR3ODkgZGV2aWNlcyAod2hpY2ggaW5jbHVkZSBVU0Itc3VwcG9ydGVkIGRldmljZXMgdGVzdGFibGUgdmlhIFVTQiBlbXVsYXRpb24gaW4gdmlydHVhbCBlbnZpcm9ubWVudHMpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtSVFc4OSYjMzQ7LAogICAgJiMzNDtSVFc4OV9DT1JFJiMzNDssCiAgICAmIzM0O1JUVzg5X1VTQiYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQVUmIzM0OywKICAgICYjMzQ7UlRXODlfUENJJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJBRSYjMzQ7LAogICAgJiMzNDtQTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fcnR3ODlfd293X3BhcnNlX2FrbSYjMzQ7LAogICAgJiMzNDtydHc4OV9jb3JlX3J4JiMzNDssCiAgICAmIzM0O3J0dzg5X2NvcmVfdHhfd3JpdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdGllcyBpbiBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KCkgYW5kIF9fcnR3ODlfd293X3BhcnNlX2FrbSgpIGJ5IHZhbGlkYXRpbmcgdGhhdCBza2ItXHUwMDNlbGVuIGlzIGF0IGxlYXN0IHRoZSBoZWFkZXIgbGVuZ3RoIGFuZCBwYXNzaW5nIHRoZSBhZGp1c3RlZCBpbmZvcm1hdGlvbiBlbGVtZW50IGxlbmd0aCAoc2tiLVx1MDAzZWxlbiAtIGhkcl9sZW4pIHRvIGNmZzgwMjExX2ZpbmRfaWUoKSBpbnN0ZWFkIG9mIHRoZSB1bmFkanVzdGVkIHNrYi1cdTAwM2VsZW4uIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIFJYIGFuZCBUWCBwYWNrZXQgcHJvY2Vzc2luZyBvbiBydHc4OSBkZXZpY2VzICh3aGljaCBpbmNsdWRlIFVTQi1zdXBwb3J0ZWQgZGV2aWNlcyB0ZXN0YWJsZSB2aWEgVVNCIGVtdWxhdGlvbiBpbiB2aXJ0dWFsIGVudmlyb25tZW50cykuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjQzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjRtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6NDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIChPT0IpIHJlYWQgdnVsbmVyYWJpbGl0eSBpbiB0aGUgcnR3ODkgZHJpdmVyIChib3RoIGluIHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHggYW5kIF9fcnR3ODlfd293X3BhcnNlX2FrbSkuIFByZXZpb3VzbHksIHRoZSBmdWxsIHBhY2tldCBsZW5ndGggKHNrYi1cdTAwM2VsZW4pIHdhcyBwYXNzZWQgdG8gY2ZnODAyMTFfZmluZF9pZSBpbnN0ZWFkIG9mIHRoZSBsZW5ndGggb2YgdGhlIGluZm9ybWF0aW9uIGVsZW1lbnRzIChza2ItXHUwMDNlbGVuIC0gaGRyX2xlbiksIGFuZCB0aGVyZSB3YXMgbm8gY2hlY2sgdmVyaWZ5aW5nIHRoYXQgc2tiLVx1MDAzZWxlbiBcdTAwM2U9IGhkcl9sZW4uIFRoaXMgY291bGQgbGVhZCB0byByZWFkaW5nIHVwIHRvIGhkcl9sZW4gYnl0ZXMgcGFzdCB0aGUgZW5kIG9mIHRoZSBza2IgZGF0YSBidWZmZXIuXG5cbk91dC1vZi1ib3VuZHMgYnVmZmVyIHJlYWRzIGFyZSBzdGFuZGFyZCBtZW1vcnkgc2FmZXR5IGJ1Z3MgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgcmVhZCB1bmluaXRpYWxpemVkIG1lbW9yeSAoc3RhY2ssIGhlYXAsIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIG9yIGxlYWsga2VybmVsIG1lbW9yeSB0byB1c2Vyc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYzlhYmQ4NDQwOWFiMmQyNDI5OThlYTljNDRhZDA5NDU5ZTllZGQ1ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDMwIDE1OjA1OjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYwppbmRleCA2OGRhZDYwOTBmODdlLi43YjQ2NzE1ZWExMmRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYwpAQCAtMjUzMiw5ICYjNDM7MjUzMiwxMSBAQCBzdGF0aWMgdm9pZCBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKHNrYik7CiAJc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNrYi0mZ3Q7ZGF0YTsKJiM0MzsJc2l6ZV90IGhkcl9sZW4gPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUuYmVhY29uLnZhcmlhYmxlKTsKIAlzdHJ1Y3QgbGlzdF9oZWFkICpwa3RfbGlzdCA9IHJ0d2Rldi0mZ3Q7c2Nhbl9pbmZvLnBrdF9saXN0OwogCXN0cnVjdCBydHc4OV9wa3RvZmxkX2luZm8gKmluZm87CiAJY29uc3QgdTggKmllcyA9IG1nbXQtJmd0O3UuYmVhY29uLnZhcmlhYmxlLCAqc3NpZF9pZTsKJiM0MzsJc2l6ZV90IGllX2xlbjsKIAlib29sIHF1ZXVlX3dvcmsgPSBmYWxzZTsKIAogCWlmIChyeF9zdGF0dXMtJmd0O2JhbmQgIT0gTkw4MDIxMV9CQU5EXzZHSFopCkBAIC0yNTQ1LDcgJiM0MzsyNTQ3LDEyIEBAIHN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogCQlyZXR1cm47CiAJfQogCi0Jc3NpZF9pZSA9IGNmZzgwMjExX2ZpbmRfaWUoV0xBTl9FSURfU1NJRCwgaWVzLCBza2ItJmd0O2xlbik7CiYjNDM7CWlmIChza2ItJmd0O2xlbiAmbHQ7IGhkcl9sZW4pCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWllX2xlbiA9IHNrYi0mZ3Q7bGVuIC0gaGRyX2xlbjsKJiM0MzsKJiM0MzsJc3NpZF9pZSA9IGNmZzgwMjExX2ZpbmRfaWUoV0xBTl9FSURfU1NJRCwgaWVzLCBpZV9sZW4pOwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShpbmZvLCAmYW1wO3BrdF9saXN0W05MODAyMTFfQkFORF82R0haXSwgbGlzdCkgewogCQlpZiAoZXRoZXJfYWRkcl9lcXVhbChpbmZvLSZndDtic3NpZCwgbWdtdC0mZ3Q7YnNzaWQpKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYwppbmRleCA4ZGFkZDhkZjRmYzY1Li44MmI3NGRlZDY4NjMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMKQEAgLTE2LDEwICYjNDM7MTYsMTYgQEAgdm9pZCBfX3J0dzg5X3dvd19wYXJzZV9ha20oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewogCXN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilza2ItJmd0O2RhdGE7CiAJc3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9ICZhbXA7cnR3ZGV2LSZndDt3b3c7CiYjNDM7CXNpemVfdCBoZHJfbGVuID0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LCB1LmFzc29jX3JlcS52YXJpYWJsZSk7CiAJY29uc3QgdTggKnJzbiwgKmllcyA9IG1nbXQtJmd0O3UuYXNzb2NfcmVxLnZhcmlhYmxlOwogCXN0cnVjdCBydHc4OV9yc25faWUgKnJzbl9pZTsKIAotCXJzbiA9IGNmZzgwMjExX2ZpbmRfaWUoV0xBTl9FSURfUlNOLCBpZXMsIHNrYi0mZ3Q7bGVuKTsKJiM0MzsJaWYgKHNrYi0mZ3Q7bGVuICZsdDsgaGRyX2xlbikKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJcnNuID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9SU04sIGllcywKJiM0MzsJCQkgICAgICAgc2tiLSZndDtsZW4gLSBoZHJfbGVuKTsKJiM0MzsKIAlpZiAoIXJzbikKIAkJcmV0dXJuOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODc4CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMzY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaCBmb3IgUG90ZW50aWFsIE1lbW9yeSBTYWZldHkgSXNzdWVzKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaCBhbmQgZmlndXJlIG91dCBpdHMgcG90ZW50aWFsIGZvciBpbnRyb2R1Y2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gU2luY2Ugd2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhpcyBmb3IgS01TQU4sIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgYWN0dWFsbHkgdG91Y2hpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgKE5lZWRzS01TQU49dHJ1ZSkgb3IgaWYgaXQmIzM5O3MganVzdCBkZWFsaW5nIHdpdGggb3V0LW9mLWJvdW5kcyBhY2Nlc3Mgb3IgYm91bmRzIGNoZWNraW5nLCB0aGluZ3MgbGlrZSB0aGF0IChOZWVkc0tNU0FOPWZhbHNlKS4gTGV0JiMzOTtzIHNlZS4uLgoKQWxyaWdodCwgdGhlIHBhdGNoIGl0c2VsZiBtb2RpZmllcyB0d28gZnVuY3Rpb25zIHdpdGhpbiB0aGUgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXJzOiBgcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eGAgaW4gYGNvcmUuY2AgYW5kIGBfX3J0dzg5X3dvd19wYXJzZV9ha21gIGluIGB3b3cuY2AuIEZyb20gdGhlIGRpZmYsIGl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgYm90aCBnZXR0aW5nIGEgc2ltaWxhciBmaXguIEJlZm9yZSwgdGhleSB3ZXJlIHNlYXJjaGluZyBmb3IgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgdXNpbmcgYGNmZzgwMjExX2ZpbmRfaWVgIHdpdGggYHNrYi0mZ3Q7bGVuYCBhcyB0aGUgYm91bmRhcnkuIFRoZSB1cGRhdGVkIGNvZGUgbm93IGluY2x1ZGVzIGEgY2hlY2sgdG8gZW5zdXJlIGBza2ItJmd0O2xlbmAgaXMgbm90IHNtYWxsZXIgdGhhbiBgaGRyX2xlbmAsIGFuZCBpZiBzbywgaXQgZXhpdHMuIE90aGVyd2lzZSwgaXQgY2FsY3VsYXRlcyBgaWVfbGVuYCAoZXNzZW50aWFsbHkgdGhlIHZhbGlkIHBheWxvYWQgbGVuZ3RoKSBhbmQgcGFzc2VzIHRoYXQgdG8gYGNmZzgwMjExX2ZpbmRfaWVgLiBTbyBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZGluZyBhIGxlbmd0aCBjaGVjayBiZWZvcmUgc2VhcmNoaW5nIGZvciB0aGUgSUVzLgoKSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgaGRyX2xlbmAgaXMgdXNlZCBmb3IgaW4gdGhlIGNvbnRleHQgb2YgdGhlc2UgZnVuY3Rpb25zIGFuZCB3aGF0IGBpZXNgIHBvaW50cyB0by4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gb2YgYHNrYmAuIElzIGBza2JgIGFsbG9jYXRlZCBieSB0aGUga2VybmVsIGFuZCwgaWYgc28sIGlzIGl0IGluaXRpYWxpemVkIGFwcHJvcHJpYXRlbHk/IEdpdmVuIHRoYXQgdGhlIGNvZGUmIzM5O3MgY2hhbmdpbmcgZnJvbSBwb3RlbnRpYWxseSB1c2luZyB0aGUgZnVsbCBgc2tiLSZndDtsZW5gIHRvIGNhbGN1bGF0aW5nIGEgbmV3IGxlbmd0aCwgdGhpcyBpcyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlzayBpZiBgaGRyX2xlbmAgaXMgbm90IHByb3Blcmx5IGFjY291bnRlZCBmb3IuIEkmIzM5O20gZ29pbmcgdG8gbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgc3Vycm91bmRpbmcgY29udGV4dCBhbmQgZW5zdXJlIHdlJiMzOTtyZSBub3QgcmVhZGluZyBwYXN0IHRoZSBpbnRlbmRlZCBib3VuZGFyaWVzLiBUaW1lIHRvIHVzZSByZWFkLWZpbGUgb3IgZ3JlcHBlciB0byBnZXQgYSBiZXR0ZXIgcGljdHVyZSBvZiB0aGUgd2hvbGUgc2l0dWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9MjUwNT1zdGF0aWMgdm9pZCBydHc4OV9jYW5jZWxfNmdoel9wcm9iZV93b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTI1MjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzoyNTMwOnN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMjUzMS1cdFx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9MzAzOD1zdGF0aWMgdm9pZCBydHc4OV92aWZfcnhfc3RhdHNfaXRlcih2b2lkICpkYXRhLCB1OCAqbWFjLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTMwNTktXHQgICAgIGllZWU4MDIxMV9pc19wcm9iZV9yZXNwKGhkci1cdTAwM2VmcmFtZV9jb250cm9sKSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzozMDYwOlx0XHRydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KHJ0d2Rldiwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTMwNjEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwOTcKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDoKCioqRGl2aW5nIGludG8gdGhlIFJlYWx0ZWsgV2lyZWxlc3MgRHJpdmVyKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBydHc4OWAgc2VyaWVzLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuY2AsIGFyb3VuZCBsaW5lIDI1MzAuIEkmIzM5O20gZ3Vlc3NpbmcgdGhlcmUmIzM5O3Mgc29tZSBjb3JlIGZ1bmN0aW9uYWxpdHkgb3IgaW5pdGlhbGl6YXRpb24gaGFwcGVuaW5nIHRoZXJlIHRoYXQmIzM5O3MgcmVsZXZhbnQgdG8gdGhlIGlzc3VlIEkmIzM5O20gY2hhc2luZy4gU2ltdWx0YW5lb3VzbHksIEkgc2hvdWxkIHByb2JhYmx5IGdsYW5jZSBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY2AgYXJvdW5kIGxpbmUgMTYuIFRoZSAmIzM0O3dvdyYjMzQ7IGRpcmVjdG9yeSBsaWtlbHkgaGFuZGxlcyBXYWtlLW9uLVdpcmVsZXNzLCB3aGljaCBpcyBvZnRlbiBhIHBvaW50IG9mIGNvbnRlbnRpb24gYW5kIGNhbiBiZSBpbnRlcnR3aW5lZCB3aXRoIGNvcmUgcG93ZXIgbWFuYWdlbWVudCBhbmQgZXZlbnQgaGFuZGxpbmcuIEkmIzM5O2xsIG5lZWQgdG8gY29ycmVsYXRlIHRoZSB0d28sIHNlZSBob3cgdGhleSBmaXQgdG9nZXRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNTI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI1MjU6XHRcdFx0ICogc2luY2UgaWYgZHVyaW5nIHNjYW5uaW5nLCBwa3RfbGlzdCBpcyBhY2Nlc3NlZCBpbiBib3R0b20gaGFsZi5cbjI1MjY6XHRcdFx0ICovXG4yNTI3Olx0XHR9XG4yNTI4Olx0fVxuMjUyOTpcdFxuMjUzMDpcdHN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuMjUzMTpcdFx0XHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbjI1MzI6XHR7XG4yNTMzOlx0XHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKHNrYik7XG4yNTM0Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2tiLVx1MDAzZWRhdGE7XG4yNTM1Olx0XHRzaXplX3QgaGRyX2xlbiA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5iZWFjb24udmFyaWFibGUpO1xuMjUzNjpcdFx0c3RydWN0IGxpc3RfaGVhZCAqcGt0X2xpc3QgPSBydHdkZXYtXHUwMDNlc2Nhbl9pbmZvLnBrdF9saXN0O1xuMjUzNzpcdFx0c3RydWN0IHJ0dzg5X3BrdG9mbGRfaW5mbyAqaW5mbztcbjI1Mzg6XHRcdGNvbnN0IHU4ICppZXMgPSBtZ210LVx1MDAzZXUuYmVhY29uLnZhcmlhYmxlLCAqc3NpZF9pZTtcbjI1Mzk6XHRcdHNpemVfdCBpZV9sZW47XG4yNTQwOlx0XHRib29sIHF1ZXVlX3dvcmsgPSBmYWxzZTtcbjI1NDE6XHRcbjI1NDI6XHRcdGlmIChyeF9zdGF0dXMtXHUwMDNlYmFuZCAhPSBOTDgwMjExX0JBTkRfNkdIWilcbjI1NDM6XHRcdFx0cmV0dXJuO1xuMjU0NDpcdFxuMjU0NTpcdFx0aWYgKHVubGlrZWx5KCEocnR3ZGV2LVx1MDAzZWNoaXAtXHUwMDNlc3VwcG9ydF9iYW5kcyBcdTAwMjYgQklUKE5MODAyMTFfQkFORF82R0haKSkpKSB7XG4yNTQ2Olx0XHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX1VORVhQLCBcJiMzNDtpbnZhbGlkIHJ4IG9uIHVuc3VwcG9ydGVkIDYgR0h6XFxuXCYjMzQ7KTtcbjI1NDc6XHRcdFx0cmV0dXJuO1xuMjU0ODpcdFx0fVxuMjU0OTpcdFxuMjU1MDpcdFx0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIGhkcl9sZW4pXG4yNTUxOlx0XHRcdHJldHVybjtcbjI1NTI6XHRcbjI1NTM6XHRcdGllX2xlbiA9IHNrYi1cdTAwM2VsZW4gLSBoZHJfbGVuO1xuMjU1NDpcdFxuMjU1NTpcdFx0c3NpZF9pZSA9IGNmZzgwMjExX2ZpbmRfaWUoV0xBTl9FSURfU1NJRCwgaWVzLCBpZV9sZW4pO1xuMjU1NjpcdFxuMjU1NzpcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShpbmZvLCBcdTAwMjZwa3RfbGlzdFtOTDgwMjExX0JBTkRfNkdIWl0sIGxpc3QpIHtcbjI1NTg6XHRcdFx0aWYgKGV0aGVyX2FkZHJfZXF1YWwoaW5mby1cdTAwM2Vic3NpZCwgbWdtdC1cdTAwM2Vic3NpZCkpIHtcbjI1NTk6XHRcdFx0XHRpbmZvLVx1MDAzZWNhbmNlbCA9IHRydWU7XG4yNTYwOlx0XHRcdFx0cXVldWVfd29yayA9IHRydWU7XG4yNTYxOlx0XHRcdFx0Y29udGludWU7XG4yNTYyOlx0XHRcdH1cbjI1NjM6XHRcbjI1NjQ6XHRcdFx0aWYgKCFzc2lkX2llIHx8IHNzaWRfaWVbMV0gIT0gaW5mby1cdTAwM2Vzc2lkX2xlbiB8fCBpbmZvLVx1MDAzZXNzaWRfbGVuID09IDApXG4yNTY1Olx0XHRcdFx0Y29udGludWU7XG4yNTY2Olx0XG4yNTY3Olx0XHRcdGlmIChtZW1jbXAoXHUwMDI2c3NpZF9pZVsyXSwgaW5mby1cdTAwM2Vzc2lkLCBpbmZvLVx1MDAzZXNzaWRfbGVuKSA9PSAwKSB7XG4yNTY4Olx0XHRcdFx0aW5mby1cdTAwM2VjYW5jZWwgPSB0cnVlO1xuMjU2OTpcdFx0XHRcdHF1ZXVlX3dvcmsgPSB0cnVlO1xuMjU3MDpcdFx0XHR9XG4yNTcxOlx0XHR9XG4yNTcyOlx0XG4yNTczOlx0XHRpZiAocXVldWVfd29yaylcbjI1NzQ6XHRcdFx0d2lwaHlfd29ya19xdWV1ZShydHdkZXYtXHUwMDNlaHctXHUwMDNld2lwaHksIFx1MDAyNnJ0d2Rldi1cdTAwM2VjYW5jZWxfNmdoel9wcm9iZV93b3JrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI5NQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIFdha2Utb24tV0xBTiBDb2RlKioKCkFscmlnaHQsIGxldCYjMzk7cyBwdWxsIHVwIHRoZSBzb3VyY2UgY29kZSBmb3IgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFJlYWx0ZWsgODAyLjExIGNoaXBzZXQgaGFuZGxlcyBXYWtlLW9uLVdMQU4gZnVuY3Rpb25hbGl0eS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGludGVyZXN0ZWQgaW4gaG93IHRoZXkmIzM5O3ZlIGltcGxlbWVudGVkIHRoZSBkcml2ZXIgaG9va3MsIHRoZSBmaWx0ZXJpbmcgbWVjaGFuaXNtcyBmb3Igc3BlY2lmaWMgZnJhbWUgdHlwZXMgKG1hZ2ljIHBhY2tldHMsIG11bHRpY2FzdCwgZXRjLiksIGFuZCB0aGUgcG93ZXIgbWFuYWdlbWVudCBzZXF1ZW5jZXMgaW52b2x2ZWQgdG8gdHJhbnNpdGlvbiB0aGUgTklDIGZyb20gYSBsb3ctcG93ZXIgc3RhdGUgYmFjayB0byBhY3RpdmUuIEkgd2FudCB0byBzZWUgaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggdGhlIGZpcm13YXJlLCBhbmQgaWYgdGhleSYjMzk7cmUgcmVseWluZyBoZWF2aWx5IG9uIGhhcmR3YXJlIG9mZmxvYWQgb3IgaWYgdGhlcmUmIzM5O3MgYSBzaWduaWZpY2FudCBhbW91bnQgb2Ygc29mdHdhcmUgaW50ZXJ2ZW50aW9uIGluIGhhbmRsaW5nIHRoZSB3YWtlLXVwIHRyaWdnZXJzLiBJIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGlzIGltcGxlbWVudGF0aW9uIGFsaWducyB3aXRoIHRoZSBBQ1BJIHNwZWNpZmljYXRpb25zLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24mIzM5O3QgaW50cm9kdWNlIHBvd2VyIGxlYWtzIHdoZW4gdGhlIGRldmljZSBpcyBzdXBwb3NlZCB0byBiZSBzbGVlcGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgYXMgdGhpcyBhcmVhIG9mdGVuIGhhcyBzdWJ0bGUgYnVncyBhbmQgcXVpcmtzLiBMZXTigJlzIGRpdmUgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxuICAgMjpcdC8qIENvcHlyaWdodChjKSAyMDE5LTIwMjIgIFJlYWx0ZWsgQ29ycG9yYXRpb25cbiAgIDM6XHQgKi9cbiAgIDQ6XHQjaW5jbHVkZSBcJiMzNDtjYW0uaFwmIzM0O1xuICAgNTpcdCNpbmNsdWRlIFwmIzM0O2NvcmUuaFwmIzM0O1xuICAgNjpcdCNpbmNsdWRlIFwmIzM0O2RlYnVnLmhcJiMzNDtcbiAgIDc6XHQjaW5jbHVkZSBcJiMzNDtmdy5oXCYjMzQ7XG4gICA4Olx0I2luY2x1ZGUgXCYjMzQ7bWFjLmhcJiMzNDtcbiAgIDk6XHQjaW5jbHVkZSBcJiMzNDtwaHkuaFwmIzM0O1xuICAxMDpcdCNpbmNsdWRlIFwmIzM0O3BzLmhcJiMzNDtcbiAgMTE6XHQjaW5jbHVkZSBcJiMzNDtyZWcuaFwmIzM0O1xuICAxMjpcdCNpbmNsdWRlIFwmIzM0O3V0aWwuaFwmIzM0O1xuICAxMzpcdCNpbmNsdWRlIFwmIzM0O3dvdy5oXCYjMzQ7XG4gIDE0Olx0XG4gIDE1Olx0dm9pZCBfX3J0dzg5X3dvd19wYXJzZV9ha20oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuICAxNjpcdHtcbiAgMTc6XHRcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilza2ItXHUwMDNlZGF0YTtcbiAgMTg6XHRcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcdTAwMjZydHdkZXYtXHUwMDNld293O1xuICAxOTpcdFx0c2l6ZV90IGhkcl9sZW4gPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUuYXNzb2NfcmVxLnZhcmlhYmxlKTtcbiAgMjA6XHRcdGNvbnN0IHU4ICpyc24sICppZXMgPSBtZ210LVx1MDAzZXUuYXNzb2NfcmVxLnZhcmlhYmxlO1xuICAyMTpcdFx0c3RydWN0IHJ0dzg5X3Jzbl9pZSAqcnNuX2llO1xuICAyMjpcdFxuICAyMzpcdFx0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIGhkcl9sZW4pXG4gIDI0Olx0XHRcdHJldHVybjtcbiAgMjU6XHRcbiAgMjY6XHRcdHJzbiA9IGNmZzgwMjExX2ZpbmRfaWUoV0xBTl9FSURfUlNOLCBpZXMsXG4gIDI3Olx0XHRcdFx0ICAgICAgIHNrYi1cdTAwM2VsZW4gLSBoZHJfbGVuKTtcbiAgMjg6XHRcbiAgMjk6XHRcdGlmICghcnNuKVxuICAzMDpcdFx0XHRyZXR1cm47XG4gIDMxOlx0XG4gIDMyOlx0XHRyc25faWUgPSAoc3RydWN0IHJ0dzg5X3Jzbl9pZSAqKXJzbjtcbiAgMzM6XHRcdHJ0d193b3ctXHUwMDNlYWttID0gcnNuX2llLVx1MDAzZWFrbV9jaXBoZXJfc3VpdGUudHlwZTtcbiAgMzQ6XHR9XG4gIDM1Olx0XG4gIDM2Olx0I2RlZmluZSBSVFc4OV9DSVBIRVJfSU5GT19ERUYoY2lwaGVyKSBcXFxuICAzNzpcdFx0e1dMQU5fQ0lQSEVSX1NVSVRFXyAjIyBjaXBoZXIsIC5md19hbGcgPSBSVFc4OV9XT1dfRldfQUxHXyAjIyBjaXBoZXIsIFxcXG4gIDM4Olx0XHQgLmxlbiA9IFdMQU5fS0VZX0xFTl8gIyMgY2lwaGVyfVxuICAzOTpcdFxuICA0MDpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfY2lwaGVyX2luZm8gcnR3ODlfY2lwaGVyX2luZm9fZGVmc1tdID0ge1xuICA0MTpcdFx0UlRXODlfQ0lQSEVSX0lORk9fREVGKFdFUDQwKSxcbiAgNDI6XHRcdFJUVzg5X0NJUEhFUl9JTkZPX0RFRihXRVAxMDQpLFxuICA0MzpcdFx0UlRXODlfQ0lQSEVSX0lORk9fREVGKFRLSVApLFxuICA0NDpcdFx0UlRXODlfQ0lQSEVSX0lORk9fREVGKENDTVApLFxuICA0NTpcdFx0UlRXODlfQ0lQSEVSX0lORk9fREVGKEdDTVApLFxuICA0NjpcdFx0UlRXODlfQ0lQSEVSX0lORk9fREVGKENDTVBfMjU2KSxcbiAgNDc6XHRcdFJUVzg5X0NJUEhFUl9JTkZPX0RFRihHQ01QXzI1NiksXG4gIDQ4Olx0XHRSVFc4OV9DSVBIRVJfSU5GT19ERUYoQUVTX0NNQUMpLFxuICA0OTpcdH07XG4gIDUwOlx0XG4gIDUxOlx0I3VuZGVmIFJUVzg5X0NJUEhFUl9JTkZPX0RFRlxuICA1MjpcdFxuICA1MzpcdHN0YXRpYyBjb25zdFxuICA1NDpcdHN0cnVjdCBydHc4OV9jaXBoZXJfaW5mbyAqcnR3ODlfY2lwaGVyX2FsZ19yZWNvZ25pemUodTMyIGNpcGhlcilcbiAgNTU6XHR7XG4gIDU2Olx0XHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2lwaGVyX2luZm8gKmNpcGhlcl9pbmZvX2RlZnM7XG4gIDU3Olx0XHRpbnQgaTtcbiAgNTg6XHRcbiAgNTk6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUocnR3ODlfY2lwaGVyX2luZm9fZGVmcyk7IGkmIzQzOyYjNDM7KSB7XG4gIDYwOlx0XHRcdGNpcGhlcl9pbmZvX2RlZnMgPSBcdTAwMjZydHc4OV9jaXBoZXJfaW5mb19kZWZzW2ldO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NjUyCgkJCQkJCQlvdXRwdXQ6IDIyMAoJCQkJCQkJdGhvdWdodHM6IDQ5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipCdWcgQW5hbHlzaXMgYW5kIEtNU0FOIEV2YWx1YXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGlkZW50aWZ5IHRoZSByb290IGNhdXNlIG9mIHRoaXMgYnVnLiBJdCBhcHBlYXJzIHdlIGhhZCBhIGNsYXNzaWMgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkuIFRoZSBwcmV2aW91cyBjb2RlLCBzcGVjaWZpY2FsbHkgdGhpcyBsaW5lOiBgc3NpZF9pZSA9IGNmZzgwMjExX2ZpbmRfaWUoV0xBTl9FSURfU1NJRCwgaWVzLCBza2ItJmd0O2xlbik7YCwgd2FzIHRoZSBjdWxwcml0LiBJdCBzZWVtcyB0aGUgYGllc2AgcG9pbnRlciB3YXMgcmVmZXJlbmNpbmcgYG1nbXQtJmd0O3UuYmVhY29uLnZhcmlhYmxlYCwgYW4gb2Zmc2V0IGZyb20gYHNrYi0mZ3Q7ZGF0YWAsIGFuZCB0aGUgbGVuZ3RoIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24sIGBza2ItJmd0O2xlbmAsIGFsbG93ZWQgYGNmZzgwMjExX2ZpbmRfaWVgIHRvIHBvdGVudGlhbGx5IHJlYWQgcGFzdCB0aGUgYWN0dWFsIGJ1ZmZlciBib3VuZGFyaWVzIG9mIGBza2ItJmd0O2RhdGFgLCBieSBhbiBhbW91bnQgZXF1YWwgdG8gYGhkcl9sZW5gLiBUaGF0JiMzOTtzIGEgZGlyZWN0IGJ1ZmZlciBvdmVyLXJlYWQgc2l0dWF0aW9uISBUaGUgYWRkZWQgY2hlY2sgZm9yIGBza2ItJmd0O2xlbiAmbHQ7IGhkcl9sZW5gIGlzIGtleSwgYXMgaXMgdGhlIHBhdGNoIHRvIHJlZHVjZSB0aGUgcmVhZCBsZW5ndGggYnkgdGhhdCB2YWx1ZS4gS0FTQU4gd291bGQgZGVmaW5pdGVseSBjYXRjaCBzb21ldGhpbmcgbGlrZSB0aGlzLgoKTmV4dCwgSSBuZWVkIHRvIGV2YWx1YXRlIHRoZSBLTVNBTiBpbXBsaWNhdGlvbnMuIFRoZSBmdW5jdGlvbnMgaW52b2x2ZSBwYXJzaW5nIDgwMi4xMSBJRXMgZnJvbSBwYWNrZXQgZGF0YSB3aXRoaW4gYW4gYHNrYmAuIFNvIHRoZSBpbXBvcnRhbnQgcGFydCBpcyBtYWtpbmcgc3VyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBnZXRzIGFsbG9jYXRlZCBvciBsZWFrZWQgdG8gdXNlciBzcGFjZSwgcmlnaHQ/CgpUaGUgZml4IGFkanVzdHMgdGhlIGxlbmd0aCB0byBiZSBwYXNzZWQgdG8gYGNmZzgwMjExX2ZpbmRfaWVgIHRvIGBza2ItJmd0O2xlbiAtIGhkcl9sZW5gIGJ1dCBvbmx5IGlmIGBza2ItJmd0O2xlbiAmZ3Q7PSBoZHJfbGVuYC4gVGhpcyBwcmV2ZW50cyB0aG9zZSBPT0IgcmVhZHMgcGFzdCB0aGUgZW5kIG9mIHRoZSBgc2tiYCBidWZmZXIuIFNpbmNlIHdlJiMzOTtyZSBqdXN0IHByZXZlbnRpbmcgYWNjZXNzIGFuZCBub3QgaW50cm9kdWNpbmcgYW55dGhpbmcgbmV3LCB0aGVyZSBhcmVuJiMzOTt0IGFueSBwb3RlbnRpYWwgbGVha3MuCgpOb3csIGNoZWNraW5nIHRoZSBLTVNBTiBydWxlczogRG9lcyB0aGUgZml4IGludHJvZHVjZSBvciBtb2RpZnkga2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlIHdoZXJlIGZpZWxkcy9wYWRkaW5nIG1pZ2h0IGJlIHVuaW5pdGlhbGl6ZWQ/IE5vLiBEb2VzIGl0IGludHJvZHVjZSBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/IE5vcGUuIERvZXMgaXQgYWxsb2NhdGUvaW5pdGlhbGl6ZSBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzPyBOZWdhdGl2ZS4gRG9lcyBpdCBpbnRyb2R1Y2UgYm91bmRzIGNoZWNrcy9sZW5ndGhzIGFsbG93aW5nIGFjY2VzcyB0byB1bmluaXRpYWxpemVkIGJ5dGVzPyBObywgaWYgYW55dGhpbmcsIGl0IHByZXZlbnRzIHRoYXQuIFRodXMsIG5vIEtNU0FOIGNvbmNlcm5zIGhlcmUuCgpUaGVyZWZvcmUsIGBOZWVkc0tNU0FOYCBpcyBkZWZpbml0ZWx5IGBmYWxzZWAuIEkmIzM5O2xsIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoYXQgZmxhZyBhbmQgY2xlYXIgdGhlIGBLTVNBTlJlYXNvbmluZ2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgKE9PQikgcmVhZCB2dWxuZXJhYmlsaXR5IGluIHRoZSBydHc4OSBkcml2ZXIgKGJvdGggaW4gcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eCBhbmQgX19ydHc4OV93b3dfcGFyc2VfYWttKS4gUHJldmlvdXNseSwgdGhlIGZ1bGwgcGFja2V0IGxlbmd0aCAoc2tiLVx1MDAzZWxlbikgd2FzIHBhc3NlZCB0byBjZmc4MDIxMV9maW5kX2llIGluc3RlYWQgb2YgdGhlIGxlbmd0aCBvZiB0aGUgaW5mb3JtYXRpb24gZWxlbWVudHMgKHNrYi1cdTAwM2VsZW4gLSBoZHJfbGVuKSwgYW5kIHRoZXJlIHdhcyBubyBjaGVjayB2ZXJpZnlpbmcgdGhhdCBza2ItXHUwMDNlbGVuIFx1MDAzZT0gaGRyX2xlbi4gVGhpcyBjb3VsZCBsZWFkIHRvIHJlYWRpbmcgdXAgdG8gaGRyX2xlbiBieXRlcyBwYXN0IHRoZSBlbmQgb2YgdGhlIHNrYiBkYXRhIGJ1ZmZlci5cblxuT3V0LW9mLWJvdW5kcyBidWZmZXIgcmVhZHMgYXJlIHN0YW5kYXJkIG1lbW9yeSBzYWZldHkgYnVncyBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciByZWFkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IChzdGFjaywgaGVhcCwgb3IgcGFnZSBhbGxvY2F0aW9ucykgb3IgbGVhayBrZXJuZWwgbWVtb3J5IHRvIHVzZXJzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyAoT09CKSByZWFkIHZ1bG5lcmFiaWxpdHkgaW4gdGhlIHJ0dzg5IGRyaXZlciAoYm90aCBpbiBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4IGFuZCBfX3J0dzg5X3dvd19wYXJzZV9ha20pLiBQcmV2aW91c2x5LCB0aGUgZnVsbCBwYWNrZXQgbGVuZ3RoIChza2ItXHUwMDNlbGVuKSB3YXMgcGFzc2VkIHRvIGNmZzgwMjExX2ZpbmRfaWUgaW5zdGVhZCBvZiB0aGUgbGVuZ3RoIG9mIHRoZSBpbmZvcm1hdGlvbiBlbGVtZW50cyAoc2tiLVx1MDAzZWxlbiAtIGhkcl9sZW4pLCBhbmQgdGhlcmUgd2FzIG5vIGNoZWNrIHZlcmlmeWluZyB0aGF0IHNrYi1cdTAwM2VsZW4gXHUwMDNlPSBoZHJfbGVuLiBUaGlzIGNvdWxkIGxlYWQgdG8gcmVhZGluZyB1cCB0byBoZHJfbGVuIGJ5dGVzIHBhc3QgdGhlIGVuZCBvZiB0aGUgc2tiIGRhdGEgYnVmZmVyLlxuXG5PdXQtb2YtYm91bmRzIGJ1ZmZlciByZWFkcyBhcmUgc3RhbmRhcmQgbWVtb3J5IHNhZmV0eSBidWdzIGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIHJlYWQgdW5pbml0aWFsaXplZCBtZW1vcnkgKHN0YWNrLCBoZWFwLCBvciBwYWdlIGFsbG9jYXRpb25zKSBvciBsZWFrIGtlcm5lbCBtZW1vcnkgdG8gdXNlcnNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjA1OjMzLjczMTY5MTEyNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MTc5NDM4NTEwNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJSVFc4OVwiLFxuICAgIFwiUlRXODlfQ09SRVwiLFxuICAgIFwiUlRXODlfVVNCXCIsXG4gICAgXCJSVFc4OV84ODUyQVVcIixcbiAgICBcIlJUVzg5X1BDSVwiLFxuICAgIFwiUlRXODlfODg1MkFFXCIsXG4gICAgXCJQTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fcnR3ODlfd293X3BhcnNlX2FrbVwiLFxuICAgIFwicnR3ODlfY29yZV9yeFwiLFxuICAgIFwicnR3ODlfY29yZV90eF93cml0ZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyAoT09CKSByZWFkIHZ1bG5lcmFiaWxpdHkgaW4gdGhlIHJ0dzg5IGRyaXZlciAoYm90aCBpbiBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4IGFuZCBfX3J0dzg5X3dvd19wYXJzZV9ha20pLiBQcmV2aW91c2x5LCB0aGUgZnVsbCBwYWNrZXQgbGVuZ3RoIChza2ItXFx1MDAzZWxlbikgd2FzIHBhc3NlZCB0byBjZmc4MDIxMV9maW5kX2llIGluc3RlYWQgb2YgdGhlIGxlbmd0aCBvZiB0aGUgaW5mb3JtYXRpb24gZWxlbWVudHMgKHNrYi1cXHUwMDNlbGVuIC0gaGRyX2xlbiksIGFuZCB0aGVyZSB3YXMgbm8gY2hlY2sgdmVyaWZ5aW5nIHRoYXQgc2tiLVxcdTAwM2VsZW4gXFx1MDAzZT0gaGRyX2xlbi4gVGhpcyBjb3VsZCBsZWFkIHRvIHJlYWRpbmcgdXAgdG8gaGRyX2xlbiBieXRlcyBwYXN0IHRoZSBlbmQgb2YgdGhlIHNrYiBkYXRhIGJ1ZmZlci5cXG5cXG5PdXQtb2YtYm91bmRzIGJ1ZmZlciByZWFkcyBhcmUgc3RhbmRhcmQgbWVtb3J5IHNhZmV0eSBidWdzIGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIHJlYWQgdW5pbml0aWFsaXplZCBtZW1vcnkgKHN0YWNrLCBoZWFwLCBvciBwYWdlIGFsbG9jYXRpb25zKSBvciBsZWFrIGtlcm5lbCBtZW1vcnkgdG8gdXNlcnNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdGllcyBpbiBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KCkgYW5kIF9fcnR3ODlfd293X3BhcnNlX2FrbSgpIGJ5IHZhbGlkYXRpbmcgdGhhdCBza2ItXFx1MDAzZWxlbiBpcyBhdCBsZWFzdCB0aGUgaGVhZGVyIGxlbmd0aCBhbmQgcGFzc2luZyB0aGUgYWRqdXN0ZWQgaW5mb3JtYXRpb24gZWxlbWVudCBsZW5ndGggKHNrYi1cXHUwMDNlbGVuIC0gaGRyX2xlbikgdG8gY2ZnODAyMTFfZmluZF9pZSgpIGluc3RlYWQgb2YgdGhlIHVuYWRqdXN0ZWQgc2tiLVxcdTAwM2VsZW4uIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIFJYIGFuZCBUWCBwYWNrZXQgcHJvY2Vzc2luZyBvbiBydHc4OSBkZXZpY2VzICh3aGljaCBpbmNsdWRlIFVTQi1zdXBwb3J0ZWQgZGV2aWNlcyB0ZXN0YWJsZSB2aWEgVVNCIGVtdWxhdGlvbiBpbiB2aXJ0dWFsIGVudmlyb25tZW50cykuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjA1OjMzLjczMTY5NTMzNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk5NjQ4NDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzlhYmQ4NDQwOWFiMmQyNDI5OThlYTljNDRhZDA5NDU5ZTllZGQ1ZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAzMCAxNTowNTozMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jXFxuaW5kZXggNjhkYWQ2MDkwZjg3ZS4uN2I0NjcxNWVhMTJkYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jXFxuQEAgLTI1MzIsOSArMjUzMiwxMSBAQCBzdGF0aWMgdm9pZCBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4ge1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKHNrYik7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilza2ItXFx1MDAzZWRhdGE7XFxuK1xcdHNpemVfdCBoZHJfbGVuID0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LCB1LmJlYWNvbi52YXJpYWJsZSk7XFxuIFxcdHN0cnVjdCBsaXN0X2hlYWQgKnBrdF9saXN0ID0gcnR3ZGV2LVxcdTAwM2VzY2FuX2luZm8ucGt0X2xpc3Q7XFxuIFxcdHN0cnVjdCBydHc4OV9wa3RvZmxkX2luZm8gKmluZm87XFxuIFxcdGNvbnN0IHU4ICppZXMgPSBtZ210LVxcdTAwM2V1LmJlYWNvbi52YXJpYWJsZSwgKnNzaWRfaWU7XFxuK1xcdHNpemVfdCBpZV9sZW47XFxuIFxcdGJvb2wgcXVldWVfd29yayA9IGZhbHNlO1xcbiBcXG4gXFx0aWYgKHJ4X3N0YXR1cy1cXHUwMDNlYmFuZCAhPSBOTDgwMjExX0JBTkRfNkdIWilcXG5AQCAtMjU0NSw3ICsyNTQ3LDEyIEBAIHN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4gXFxuLVxcdHNzaWRfaWUgPSBjZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX1NTSUQsIGllcywgc2tiLVxcdTAwM2VsZW4pO1xcbitcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyBoZHJfbGVuKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRpZV9sZW4gPSBza2ItXFx1MDAzZWxlbiAtIGhkcl9sZW47XFxuK1xcbitcXHRzc2lkX2llID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9TU0lELCBpZXMsIGllX2xlbik7XFxuIFxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGluZm8sIFxcdTAwMjZwa3RfbGlzdFtOTDgwMjExX0JBTkRfNkdIWl0sIGxpc3QpIHtcXG4gXFx0XFx0aWYgKGV0aGVyX2FkZHJfZXF1YWwoaW5mby1cXHUwMDNlYnNzaWQsIG1nbXQtXFx1MDAzZWJzc2lkKSkge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xcbmluZGV4IDhkYWRkOGRmNGZjNjUuLjgyYjc0ZGVkNjg2MzEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmNcXG5AQCAtMTYsMTAgKzE2LDE2IEBAIHZvaWQgX19ydHc4OV93b3dfcGFyc2VfYWttKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4ge1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2tiLVxcdTAwM2VkYXRhO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbitcXHRzaXplX3QgaGRyX2xlbiA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5hc3NvY19yZXEudmFyaWFibGUpO1xcbiBcXHRjb25zdCB1OCAqcnNuLCAqaWVzID0gbWdtdC1cXHUwMDNldS5hc3NvY19yZXEudmFyaWFibGU7XFxuIFxcdHN0cnVjdCBydHc4OV9yc25faWUgKnJzbl9pZTtcXG4gXFxuLVxcdHJzbiA9IGNmZzgwMjExX2ZpbmRfaWUoV0xBTl9FSURfUlNOLCBpZXMsIHNrYi1cXHUwMDNlbGVuKTtcXG4rXFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2MgaGRyX2xlbilcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0cnNuID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9SU04sIGllcyxcXG4rXFx0XFx0XFx0ICAgICAgIHNrYi1cXHUwMDNlbGVuIC0gaGRyX2xlbik7XFxuK1xcbiBcXHRpZiAoIXJzbilcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6MDU6MzQuMTMyMDI5MDk5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyMjcwMjQ1MzkyMTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiUlRXODlcIixcbiAgICBcIlJUVzg5X0NPUkVcIixcbiAgICBcIlJUVzg5X1VTQlwiLFxuICAgIFwiUlRXODlfODg1MkFVXCIsXG4gICAgXCJSVFc4OV9QQ0lcIixcbiAgICBcIlJUVzg5Xzg4NTJBRVwiLFxuICAgIFwiUE1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX3J0dzg5X3dvd19wYXJzZV9ha21cIixcbiAgICBcInJ0dzg5X2NvcmVfcnhcIixcbiAgICBcInJ0dzg5X2NvcmVfdHhfd3JpdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0aWVzIGluIHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHgoKSBhbmQgX19ydHc4OV93b3dfcGFyc2VfYWttKCkgYnkgdmFsaWRhdGluZyB0aGF0IHNrYi1cXHUwMDNlbGVuIGlzIGF0IGxlYXN0IHRoZSBoZWFkZXIgbGVuZ3RoIGFuZCBwYXNzaW5nIHRoZSBhZGp1c3RlZCBpbmZvcm1hdGlvbiBlbGVtZW50IGxlbmd0aCAoc2tiLVxcdTAwM2VsZW4gLSBoZHJfbGVuKSB0byBjZmc4MDIxMV9maW5kX2llKCkgaW5zdGVhZCBvZiB0aGUgdW5hZGp1c3RlZCBza2ItXFx1MDAzZWxlbi4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgUlggYW5kIFRYIHBhY2tldCBwcm9jZXNzaW5nIG9uIHJ0dzg5IGRldmljZXMgKHdoaWNoIGluY2x1ZGUgVVNCLXN1cHBvcnRlZCBkZXZpY2VzIHRlc3RhYmxlIHZpYSBVU0IgZW11bGF0aW9uIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzlhYmQ4NDQwOWFiMmQyNDI5OThlYTljNDRhZDA5NDU5ZTllZGQ1ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDMwIDE1OjA1OjMzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuY1xuaW5kZXggNjhkYWQ2MDkwZjg3ZS4uN2I0NjcxNWVhMTJkYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuY1xuQEAgLTI1MzIsOSArMjUzMiwxMSBAQCBzdGF0aWMgdm9pZCBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKHNrYik7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2tiLVx1MDAzZWRhdGE7XG4rXHRzaXplX3QgaGRyX2xlbiA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5iZWFjb24udmFyaWFibGUpO1xuIFx0c3RydWN0IGxpc3RfaGVhZCAqcGt0X2xpc3QgPSBydHdkZXYtXHUwMDNlc2Nhbl9pbmZvLnBrdF9saXN0O1xuIFx0c3RydWN0IHJ0dzg5X3BrdG9mbGRfaW5mbyAqaW5mbztcbiBcdGNvbnN0IHU4ICppZXMgPSBtZ210LVx1MDAzZXUuYmVhY29uLnZhcmlhYmxlLCAqc3NpZF9pZTtcbitcdHNpemVfdCBpZV9sZW47XG4gXHRib29sIHF1ZXVlX3dvcmsgPSBmYWxzZTtcbiBcbiBcdGlmIChyeF9zdGF0dXMtXHUwMDNlYmFuZCAhPSBOTDgwMjExX0JBTkRfNkdIWilcbkBAIC0yNTQ1LDcgKzI1NDcsMTIgQEAgc3RhdGljIHZvaWQgcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbi1cdHNzaWRfaWUgPSBjZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX1NTSUQsIGllcywgc2tiLVx1MDAzZWxlbik7XG4rXHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgaGRyX2xlbilcbitcdFx0cmV0dXJuO1xuK1xuK1x0aWVfbGVuID0gc2tiLVx1MDAzZWxlbiAtIGhkcl9sZW47XG4rXG4rXHRzc2lkX2llID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9TU0lELCBpZXMsIGllX2xlbik7XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGluZm8sIFx1MDAyNnBrdF9saXN0W05MODAyMTFfQkFORF82R0haXSwgbGlzdCkge1xuIFx0XHRpZiAoZXRoZXJfYWRkcl9lcXVhbChpbmZvLVx1MDAzZWJzc2lkLCBtZ210LVx1MDAzZWJzc2lkKSkge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jXG5pbmRleCA4ZGFkZDhkZjRmYzY1Li44MmI3NGRlZDY4NjMxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xuQEAgLTE2LDEwICsxNiwxNiBAQCB2b2lkIF9fcnR3ODlfd293X3BhcnNlX2FrbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNrYi1cdTAwM2VkYXRhO1xuIFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG4rXHRzaXplX3QgaGRyX2xlbiA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5hc3NvY19yZXEudmFyaWFibGUpO1xuIFx0Y29uc3QgdTggKnJzbiwgKmllcyA9IG1nbXQtXHUwMDNldS5hc3NvY19yZXEudmFyaWFibGU7XG4gXHRzdHJ1Y3QgcnR3ODlfcnNuX2llICpyc25faWU7XG4gXG4tXHRyc24gPSBjZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX1JTTiwgaWVzLCBza2ItXHUwMDNlbGVuKTtcbitcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBoZHJfbGVuKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRyc24gPSBjZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX1JTTiwgaWVzLFxuK1x0XHRcdCAgICAgICBza2ItXHUwMDNlbGVuIC0gaGRyX2xlbik7XG4rXG4gXHRpZiAoIXJzbilcbiBcdFx0cmV0dXJuO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6MDU6MzQuMTMyMDMwMzU5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjA3MzkzMzExMjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhbHRlayBSVFc4OSBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgYW5kIGltcGFjdC4gSXQgbG9va3MgbGlrZSB3ZSdyZSBkZWFsaW5nIHdpdGggbW9kaWZpY2F0aW9ucyB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2AgZGlyZWN0b3J5LCBzcGVjaWZpY2FsbHkgYGNvcmUuY2AgYW5kIGB3b3cuY2AuIFJpZ2h0IGF3YXksIEknbSB0aGlua2luZywgXCJJcyB0aGlzIGRyaXZlciBmb3IgdGhlIFJlYWx0ZWsgODAyLjExYXggZGV2aWNlcz9cIiBUaGF0J3MgdGhlIGZpcnN0IHF1ZXN0aW9uLiBJIG5lZWQgdG8gY29uZmlybSB0aGUgdGFyZ2V0ZWQgaGFyZHdhcmUuXG5cbk5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmFsIGltcGxpY2F0aW9ucy4gV2hhdCBpbnRlcmZhY2VzIGRvZXMgdGhpcyBkcml2ZXIgc3VwcG9ydD8gUENJZT8gVVNCPyBTRElPPyBUaGlzIHdpbGwgZ3JlYXRseSBhZmZlY3QgaG93IHdlIHRlc3QgaXQuIENhbiBJIHRlc3QgdGhpcyB2aXJ0dWFsbHksIG1heWJlIHdpdGggUUVNVSBvciBzeXprYWxsZXI/IE9yIGRvIEkgbmVlZCBwaHlzaWNhbCBoYXJkd2FyZSB0byBnZXQgYSBtZWFuaW5nZnVsIHRlc3Q/XG5cbkhvbGQgb24sIGJlZm9yZSBJIGdldCB0b28gZmFyLCBsZXQgbWUgY2hlY2sgdGhlIGBLY29uZmlnYCBmb3IgUlRXODkuIFRoYXQgc2hvdWxkIHF1aWNrbHkgdGVsbCBtZSB3aGF0IGJ1cyB0eXBlcyBhcmUgc3VwcG9ydGVkIGFuZCBob3cgdGhlIGRyaXZlciBpcyBjb25maWd1cmVkLiBUaGF0J2xsIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbnN0cmFpbnRzIG9mIHRoZSBjaGFuZ2VzLiBUaW1lIHRvIGZpcmUgdXAgZ3JlcHBlciBvciBqdXN0IHJlYWQgdGhvc2UgZmlsZXMgZGlyZWN0bHkuIEdvdHRhIGdldCB0aGUgYmlnIHBpY3R1cmUgZmlyc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4ODEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTowOTowMS41MjUzNDU0NTNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA5NTMzODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSVFc4OVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjI6bWVudWNvbmZpZyBSVFc4OVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDgwMi4xMWF4IHdpcmVsZXNzIGNoaXBzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc9MTE9aWYgUlRXODlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzOmNvbmZpZyBSVFc4OV9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE3OmNvbmZpZyBSVFc4OV9QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIwOmNvbmZpZyBSVFc4OV9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjEtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIzOmNvbmZpZyBSVFc4OV84ODUxQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjY6Y29uZmlnIFJUVzg5Xzg4NTJBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI3LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyOTpjb25maWcgUlRXODlfODg1MkJfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMwLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzozMjpjb25maWcgUlRXODlfODg1MkJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzMtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM1OmNvbmZpZyBSVFc4OV84ODUyQlRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzYtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM4OmNvbmZpZyBSVFc4OV84ODUyQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zOS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NDE6Y29uZmlnIFJUVzg5Xzg5MjJBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQyLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo0NDpjb25maWcgUlRXODlfODg1MUJFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQ1LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTFCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy01NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NTU6Y29uZmlnIFJUVzg5Xzg4NTFCVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy01Ni1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUxQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjY2OmNvbmZpZyBSVFc4OV84ODUyQUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNjctXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkFFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo3Nzpjb25maWcgUlRXODlfODg1MkFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTc4LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6ODg6Y29uZmlnIFJUVzg5Xzg4NTJCRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04OS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQkUgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctOTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEwMDpjb25maWcgUlRXODlfODg1MkJVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwMS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMTI6Y29uZmlnIFJUVzg5Xzg4NTJCVEVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJCRS1WVCBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEyNDpjb25maWcgUlRXODlfODg1MkNFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyNS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQ0UgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDZFKSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEzNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTM1OmNvbmZpZyBSVFc4OV84ODUyQ1VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM2LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJDVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNkUpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNDY6Y29uZmlnIFJUVzg5Xzg5MjJBRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNDctXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODkyMkFFLzg5MjJBRS1WUyBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE2MDpjb25maWcgUlRXODlfODkyMkFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2MS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4OTIyQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDcpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNzI6Y29uZmlnIFJUVzg5X0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3My1cXHRib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTc1OmNvbmZpZyBSVFc4OV9ERUJVR01TR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzYtXFx0Ym9vbCBcXFwiUmVhbHRlayBydHc4OSBkZWJ1ZyBtZXNzYWdlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxODQ6Y29uZmlnIFJUVzg5X0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTg1LVxcdGJvb2wgXFxcIlJlYWx0ZWsgcnR3ODkgZGVidWdmcyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTowOTowMi4yMzQ4ODYyODNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2ODEyNzk4NzIyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSVFc4OSBVU0IgQWRhcHRlciBJbnZlc3RpZ2F0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHJlbWluZCBteXNlbGYgb2YgdGhlIFJUVzg5IFVTQiBhZGFwdGVyIHZhcmlhbnRzIHdlJ3JlIGRlYWxpbmcgd2l0aDogYFJUVzg5Xzg4NTFCVWAsIGBSVFc4OV84ODUyQVVgLCBgUlRXODlfODg1MkJVYCwgYFJUVzg5Xzg4NTJDVWAsIGFuZCBgUlRXODlfODkyMkFVYC4gTm93LCB0aGUgaW50ZXJlc3RpbmcgcGFydDogY2FuIHdlIGVmZmVjdGl2ZWx5IHByb2JlIGFuZCBmdXp6IHRoZXNlIFVTQi1jb25uZWN0ZWQgYWRhcHRlcnMgdmlhIFVTQiBlbXVsYXRpb24gdGVjaG5pcXVlcz8gSSdtIHRoaW5raW5nIG9mIFVTQiBSYXcsIFVTQiBnYWRnZXQsIGFuZCBzeXprYWxsZXIncyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMg4oCTIHNwZWNpZmljYWxseSwgdGhlIGBzeXpfdXNiX2Nvbm5lY3RgIGNhbGwgY29tZXMgdG8gbWluZC4gXG5cblRoZSBjb3JlIHF1ZXN0aW9uIGhlcmUgaXMgd2hldGhlciB3ZSBjYW4gbGV2ZXJhZ2UgdGhlc2UgZW11bGF0aW9uIG1ldGhvZHMgKHN5emthbGxlcidzIHJhdyBVU0IgZHJpdmVyLCB2dXNiLCBkdW1teV9oY2QpIHRvIGludGVyYWN0IHdpdGggYW5kIHBvdGVudGlhbGx5IGV4cGxvaXQgdnVsbmVyYWJpbGl0aWVzIGluIHRoZXNlIHdpcmVsZXNzIGFkYXB0ZXJzLlxuXG5CdXQgYmVmb3JlIGRpdmluZyB0b28gZGVlcCBpbnRvIHRoYXQsIGxldCdzIHBpdm90IHNsaWdodGx5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGZ1bmN0aW9ucyBgcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eGAgYW5kIGBfX3J0dzg5X3dvd19wYXJzZV9ha21gIGFyZSBiZWluZyAqdXNlZCouIFNvLCBJIG5lZWQgdG8gZmluZCB0aGUgY2FsbCBzaXRlcyBmb3IgdGhvc2UuIExldCdzIHN0YXJ0IHdpdGggYSBzZWFyY2ggZm9yIHdoZXJlIHRob3NlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkLiBUaGlzIGluZm9ybWF0aW9uIHNob3VsZCBwcm92aWRlIGNvbnRleHQgZm9yIG91ciBlbXVsYXRpb24gZWZmb3J0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY2NywiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNToxMDoxMC4zNjI4Nzc3MDlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA3NzE1NjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0yNTA1PXN0YXRpYyB2b2lkIHJ0dzg5X2NhbmNlbF82Z2h6X3Byb2JlX3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0yNTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjI1MzA6c3RhdGljIHZvaWQgcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMjUzMS1cXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTMwMzg9c3RhdGljIHZvaWQgcnR3ODlfdmlmX3J4X3N0YXRzX2l0ZXIodm9pZCAqZGF0YSwgdTggKm1hYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTMwNTktXFx0ICAgICBpZWVlODAyMTFfaXNfcHJvYmVfcmVzcChoZHItXFx1MDAzZWZyYW1lX2NvbnRyb2wpKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzozMDYwOlxcdFxcdHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHgocnR3ZGV2LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTMwNjEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjEwOjEwLjk3MDYwMDExNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg5MDkwODMwNTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIGZhbWlsaWFyIHdpdGggdGhpcyB0ZWNobmljYWwgY29udGV4dDpcblxuKipJbnZlc3RpZ2F0aW5nIFdha2Utb24tV2lyZWxlc3MgRnVuY3Rpb25hbGl0eSoqXG5cbkFscmlnaHQsIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBcIndha2Utb24td2lyZWxlc3NcIiB0aGluZywgYW5kIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhlIHJlbGV2YW50IGRyaXZlcnMgYW5kIGZ1bmN0aW9uYWxpdHksIGFuZCBJIHRoaW5rIGl0J3MgdGltZSB0byByZWZpbmUgbXkgc2VhcmNoLiBJJ20gZ29pbmcgdG8gc3RhcnQgbG9va2luZyBmb3IgY29kZSB0aGF0IGludm9sdmVzIHRoaXMgYF9fcnR3ODlfd293X3BhcnNlX2FrbWAgb3IgYHJ0dzg5X3dvd19wYXJzZV9ha21gIG5hbWluZyBjb252ZW50aW9uLiBUaGlzIHNlZW1zIHRvIGJlIGEgdmVyeSBzcGVjaWZpYyBmdW5jdGlvbiBvciBtb2R1bGUgbmFtZSByZWxhdGVkIHRvIHRoZSBBS00gKEF1dGhlbnRpY2F0ZWQgS2V5IE1hbmFnZW1lbnQpIHBhcnNpbmcgd2l0aGluIHRoZSBSVFc4OSB3aXJlbGVzcyBkcml2ZXIgYW5kIHdha2Utb24td2lyZWxlc3MgZmVhdHVyZS4gSSBzdXNwZWN0IEkgbWlnaHQgZmluZCBzb21lIGltcG9ydGFudCBkZXRhaWxzIGFib3V0IGl0cyB3b3JraW5ncyBoZXJlLCBob3cgaXQgaGFuZGxlcyBzZWN1cml0eSwgYW5kIGhvdyB0aGUgd2FrZS1vbi13aXJlbGVzcyB0cmlnZ2VycyBhcmUgbWFuYWdlZC4gVGhpcyBjb3VsZCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGlzc3VlIGF0IGhhbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MDEsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNToxMTo0MC4wNjE0MzUyNTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg1MzYwNzExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X3dvd19wYXJzZV9ha21cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0xMzc3PXN0YXRpYyBpbnQgcnR3ODlfY29yZV90eF93cml0ZV9saW5rKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTEzOTctXFx0cnR3ODlfdHJhZmZpY19zdGF0c19hY2N1KHJ0d2RldiwgcnR3dmlmLCBza2IsIHRydWUsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjEzOTg6XFx0cnR3ODlfd293X3BhcnNlX2FrbShydHdkZXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMTM5OS1cXHRydHc4OV9jb3JlX3R4X3VwZGF0ZV9kZXNjX2luZm8ocnR3ZGV2LCBcXHUwMDI2dHhfcmVxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMtMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYzoxNTp2b2lkIF9fcnR3ODlfd293X3BhcnNlX2FrbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuYy0xNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5oPTExMj1zdGF0aWMgaW5saW5lIGJvb2wgcnR3X3dvd19oYXNfbWdkX2ZlYXR1cmVzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmgtMTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293Lmg6MTE5OnZvaWQgX19ydHc4OV93b3dfcGFyc2VfYWttKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuaC0xMjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuaD0xMjE9c3RhdGljIGlubGluZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293Lmg6MTIyOnZvaWQgcnR3ODlfd293X3BhcnNlX2FrbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuaC0xMjMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuaC0xMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuaDoxMjk6XFx0X19ydHc4OV93b3dfcGFyc2VfYWttKHJ0d2Rldiwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5oLTEzMC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5oPTEzNT1zdGF0aWMgaW5saW5lXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuaDoxMzY6dm9pZCBydHc4OV93b3dfcGFyc2VfYWttKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5oLTEzNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjExOjQwLjc0NjgxMDk4NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1NTU4NTM0ODc4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJUVzg5IFdpcmVsZXNzIERyaXZlciBWdWxuZXJhYmlsaXR5IGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBNeSBpbml0aWFsIGZvY3VzIGlzIHRvIHVuZGVyc3RhbmQgdGhlIG5hdHVyZSBvZiB0aGlzIGJ1Zywgc3BlY2lmaWNhbGx5IGluIHRoZSBjb250ZXh0IG9mIGBfX3J0dzg5X3dvd19wYXJzZV9ha21gIGFuZCBgcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eGAuIFRoZSB0ZXh0IHBvaW50cyBvdXQgYSBjcnVjaWFsIGRldGFpbCBhYm91dCBob3cgdGhlIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIGFyZSBoYW5kbGVkLiBJbiB0aGUgYHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHhgIGZ1bmN0aW9uLCB0aGUgYGllc2AgcG9pbnRlciBpcyBkZXJpdmVkIGZyb20gYG1nbXQtXHUwMDNldS5iZWFjb24udmFyaWFibGVgLCBhbmQgdGhlIGxlbmd0aCBwYXNzZWQgdG8gYGNmZzgwMjExX2ZpbmRfaWVgIHVzZWQgdG8gYmUgdGhlIHRvdGFsIGBza2ItXHUwMDNlbGVuYC4gVGhlIGxlbmd0aCBvZiB0aGUgZGF0YSBiZWluZyBzZWFyY2hlZCBpcyB0aGUgZnVsbCBTS0IgYnVmZmVyLiBIb3dldmVyLCBgaWVzYCBwb2ludHMgdG8gYSBsb2NhdGlvbiAqYWZ0ZXIqIHRoZSBtYW5hZ2VtZW50IGhlYWRlciwgZWZmZWN0aXZlbHkgbWFraW5nIHRoZSBkYXRhIHN0YXJ0IGF0IGBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUuYmVhY29uLnZhcmlhYmxlKWAuIFRoaXMgbWVhbnMgdGhhdCBgY2ZnODAyMTFfZmluZF9pZWAgd2FzIHBvdGVudGlhbGx5IHJlYWRpbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSBgc2tiLVx1MDAzZWRhdGFgIGJ5IGBoZHJfbGVuYCBieXRlcy4gVGhlIGJ1ZyBjb3VsZCByZXN1bHQgaW4gYW4gb3V0LW9mLWJvdW5kcyByZWFkIGlmIGBza2ItXHUwMDNlbGVuYCB3YXMgc21hbGxlciB0aGFuIGBoZHJfbGVuYC4gVGhlIGZpeCwgYXMgZGVzY3JpYmVkLCBpbnZvbHZlcyBjaGVja2luZyBgc2tiLVx1MDAzZWxlbiBcdTAwM2MgaGRyX2xlbmAgYW5kIHJldHVybmluZyBpZiB0cnVlLCBhcyB3ZWxsIGFzIHN1YnRyYWN0aW5nIHRoZSBoZWFkZXIgbGVuZ3RoIGZyb20gdGhlIGRhdGEgbGVuZ3RoIHNlbnQgdG8gYGNmZzgwMjExX2ZpbmRfaWVgLlxuXG5UaGUgc2FtZSBpc3N1ZSBzZWVtcyB0byBiZSBwcmVzZW50IGluIGBfX3J0dzg5X3dvd19wYXJzZV9ha21gLCB1c2luZyB0aGUgc2FtZSBmaXggc3RyYXRlZ3kuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogaXMgdGhpcyBkcml2ZXIgZnV6emFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVU/IExldCdzIGNhcmVmdWxseSBjb25zaWRlciB0aGUgY3JpdGVyaWEgZm9yIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlIGNoYW5nZXMgb25seSBpbnZvbHZlIGRvY3VtZW50YXRpb24sIGNvc21ldGljIGNoYW5nZXMsIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMsIG9yIGNvZGUgdGhhdCByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IFFFTVUgZG9lc24ndCBlbXVsYXRlLlxuXG5UaGUgY3J1Y2lhbCBwb2ludCBoZXJlIGlzIHdoZXRoZXIgdGhlIFJUVzg5IGRyaXZlciBpcyByZWFjaGFibGUgdGhyb3VnaCBVU0IgZW11bGF0aW9uLCBwYXJ0aWN1bGFybHkgdXNpbmcgYHVzYiBnYWRnZXRgIG9yIGB2dXNiYC4gSSdsbCBuZWVkIHRvIHJlc2VhcmNoIGhvdyBVU0IgcHJvYmluZyBpcyBoYW5kbGVkIGluIHRoZSBSVFc4OSBkcml2ZXIgdG8gYW5zd2VyIHRoaXMuIEkgd2lsbCBsb29rIGZvciBjYWxscyB0byBgdXNiIHByb2JlYCBpbiB0aGUgcnR3ODkgZHJpdmVyIHRvIGdldCBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjYwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjE1OjU2LjMzMjE2MzQ4NloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg2MjMwMTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVzYl9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jPTU5PU1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBydHdfODg1MWJ1X2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM6NjE6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUxYnVfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmMtNjItXFx0Lm5hbWUgPSBLQlVJTERfTU9ETkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmMtNjYtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jOjY3Om1vZHVsZV91c2JfZHJpdmVyKHJ0d184ODUxYnVfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTY4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYz03Mz1NT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgcnR3Xzg4NTJhdV9pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy03NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jOjc1OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MmF1X2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTc2LVxcdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTgwLX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYzo4MTptb2R1bGVfdXNiX2RyaXZlcihydHdfODg1MmF1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy04Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM9NzM9TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHJ0d184ODUyYnVfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmMtNzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYzo3NTpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4NTJidV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYy03Ni1cXHQubmFtZSA9IEtCVUlMRF9NT0ROQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYy04MC19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM6ODE6bW9kdWxlX3VzYl9kcml2ZXIocnR3Xzg4NTJidV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmMtODItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jPTc5PU1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBydHdfODg1MmN1X2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmM6ODE6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyY3VfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmMtODItXFx0Lm5hbWUgPSBLQlVJTERfTU9ETkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmMtODYtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jOjg3Om1vZHVsZV91c2JfZHJpdmVyKHJ0d184ODUyY3VfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTg4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYz03ND1NT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgcnR3Xzg5MjJhdV9pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy03NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jOjc2OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODkyMmF1X2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jLTc3LVxcdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jLTgxLX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYzo4Mjptb2R1bGVfdXNiX2RyaXZlcihydHdfODkyMmF1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy04My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6MTU6NTYuOTE4NDAxMjExWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0MTAzMjE1NTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgV2lyZWxlc3MgRHJpdmVyIFZ1bG5lcmFiaWxpdGllcyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIFVTQiB3aXJlbGVzcyBkcml2ZXIgc2l0dWF0aW9uLiBJdCBzZWVtcyBsaWtlIHVzaW5nIFVTQiBlbXVsYXRpb24gd2l0aCB0b29scyBsaWtlIHN5emthbGxlciwgc3BlY2lmaWNhbGx5IGl0cyBkdW1teV9oY2QvcmF3LWdhZGdldC91c2JfZnV6emVyIGNhcGFiaWxpdGllcywgaXMgYSB2aWFibGUgYXBwcm9hY2ggdG8gZW11bGF0ZSBhbmQgZnV6eiB0aGVzZSBkcml2ZXJzLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2UuXG5cbkZpcnN0LCBJIHdhbnQgdG8gdHJhY2UgaG93IHdlIHJlYWNoIGBfX3J0dzg5X3dvd19wYXJzZV9ha21gIGFuZCBgcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eGAuIExldCdzIHN0YXJ0IHdpdGggYHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHhgLiBMb29rcyBsaWtlIGl0J3MgY2FsbGVkIGZyb20gYHJ0dzg5X3ZpZl9yeF9zdGF0c19pdGVyYCwgc28gdGhhdCdzIHRoZSBuZXh0IGZ1bmN0aW9uIHRvIGluc3BlY3QuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYHJ0dzg5X3ZpZl9yeF9zdGF0c19pdGVyYCBkb2VzIGFuZCB3aGF0IGNhbGxzICppdCouIFRoaXMgd2lsbCBhbGxvdyBtZSB0byBhc3Nlc3MgdGhlIGlucHV0cyBhbmQgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gSXQncyBhbGwgYWJvdXQgZmluZGluZyB0aGUgYWNjZXNzIHBvaW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyNzcsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6MTY6MjEuMDIxNjIwMTE1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzcxODgyOTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODlfdmlmX3J4X3N0YXRzX2l0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0yNDAwPXN0YXRpYyBib29sIHJ0dzg5X2NvcmVfcnhfcHBkdV9tYXRjaChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0yNDM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjI0MzY6c3RydWN0IHJ0dzg5X3ZpZl9yeF9zdGF0c19pdGVyX2RhdGEge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTI0MzctXFx0c3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9Mjk5Nj1zdGF0aWMgdm9pZCBydHc4OV92aWZfcnhfYmNuX3N0YXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMzAzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzozMDM4OnN0YXRpYyB2b2lkIHJ0dzg5X3ZpZl9yeF9zdGF0c19pdGVyKHZvaWQgKmRhdGEsIHU4ICptYWMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMzAzOS1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zMDQwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzozMDQxOlxcdHN0cnVjdCBydHc4OV92aWZfcnhfc3RhdHNfaXRlcl9kYXRhICppdGVyX2RhdGEgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTMwNDItXFx0c3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2ID0gaXRlcl9kYXRhLVxcdTAwM2VydHdkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0zMTQwPXN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcnhfc3RhdHMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMzE0NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MzE0NTpcXHRzdHJ1Y3QgcnR3ODlfdmlmX3J4X3N0YXRzX2l0ZXJfZGF0YSBpdGVyX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMzE0Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTMxNTMtXFx0aXRlcl9kYXRhLmJzc2lkID0gZ2V0X2hkcl9ic3NpZCgoc3RydWN0IGllZWU4MDIxMV9oZHIgKilza2ItXFx1MDAzZWRhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjMxNTQ6XFx0cnR3ODlfaXRlcmF0ZV92aWZzX2JoKHJ0d2RldiwgcnR3ODlfdmlmX3J4X3N0YXRzX2l0ZXIsIFxcdTAwMjZpdGVyX2RhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTMxNTUtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNToxNjoyMS4xNTg4MTQzOTlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjkyNTIwMTAyMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqVHJhY2luZyB0aGUgQ2FsbHMgdG8gYHJ0dzg5X2NvcmVfcnhfc3RhdHNgKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgYHJ0dzg5X2NvcmVfcnhfc3RhdHNgIGlzIGJlaW5nIHVzZWQuIE15IGZpcnN0IHN0ZXAsIG5hdHVyYWxseSwgaXMgdG8gdHJhY2UgdGhvc2UgY2FsbHMuIEkgd2FudCB0byBzZWUgd2hpY2ggb3RoZXIgZnVuY3Rpb25zIG9yIG1vZHVsZXMgZGVwZW5kIG9uIHRoaXMgb25lLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIGdyYXBoIHdpbGwgZ2l2ZSBtZSBhIGdvb2Qgc2Vuc2Ugb2YgdGhlIGNvbnRleHQgYW5kIHB1cnBvc2Ugb2YgdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uLiBGcm9tIHRoZXJlLCBJIGNhbiBiZWdpbiB0byB1bnJhdmVsIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0NDgsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNToxNjo1MC40MTA4MjY5MzNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNjI2OTE2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4OV9jb3JlX3J4X3N0YXRzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9MzAzOD1zdGF0aWMgdm9pZCBydHc4OV92aWZfcnhfc3RhdHNfaXRlcih2b2lkICpkYXRhLCB1OCAqbWFjLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMzEzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzozMTQwOnN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcnhfc3RhdHMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTMxNDEtXFx0XFx0XFx0XFx0c3RydWN0IHJ0dzg5X3J4X3BoeV9wcGR1ICpwaHlfcHBkdSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTM5Nzk9c3RhdGljIHZvaWQgcnR3ODlfY29yZV9yeF90b19tYWM4MDIxMShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zOTkxLVxcdHJ0dzg5X2NvcmVfaHdfdG9fc2JhbmRfcmF0ZShyeF9zdGF0dXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjM5OTI6XFx0cnR3ODlfY29yZV9yeF9zdGF0cyhydHdkZXYsIHBoeV9wcGR1LCBkZXNjX2luZm8sIHNrYl9wcGR1KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zOTkzLVxcdHJ0dzg5X2NvcmVfdXBkYXRlX3J4X3N0YXR1c19ieV9wcGR1KHJ0d2Rldiwgcnhfc3RhdHVzLCBwaHlfcHBkdSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjE2OjUwLjUzNzEwNDQ1OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNjI4MDM0MTgzNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBSWC9UWCBQYWNrZXQgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgcnR3ODlgIGRyaXZlciBjb2RlLiBGaXJzdCwgaXQgbG9va3MgbGlrZSBgcnR3ODlfY29yZV9yeF90b19tYWM4MDIxMWAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQncyByZXNwb25zaWJsZSBmb3IgcHJvY2Vzc2luZyB0aG9zZSBpbmNvbWluZyBSWCBwYWNrZXRzIGNvbWluZyBpbiBmcm9tIHRoZSBoYXJkd2FyZSBvciB0aGUgVVNCIGludGVyZmFjZSDigJMgbWFrZXMgc2Vuc2UuIE5vdywgbGV0J3Mgc2VlLCBJIGFsc28gc2VlIHRoYXQgYF9fcnR3ODlfd293X3BhcnNlX2FrbWAgZ2V0cyBjYWxsZWQgd2hlbiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBUWCBvcGVyYXRpb24gdGhyb3VnaCBgcnR3ODlfY29yZV90eF93cml0ZV9saW5rYC4gSG1tLCB0aGF0IHNvdW5kcyBsaWtlIGl0IG1pZ2h0IHJlbGF0ZSB0byBXYWtlLW9uLVdMQU4gZnVuY3Rpb25hbGl0eS4gSXQncyB0aW1lIHRvIGRpZyBpbnRvIGBfX3J0dzg5X3dvd19wYXJzZV9ha21gIGEgbGl0dGxlIGZ1cnRoZXIsIGFuZCBJIHNob3VsZCBzdGFydCB3aXRoIGB3b3cuY2AuIExldCdzIGdldCB0aGF0IGZpbGUgb3BlbiBhbmQgcmVhZCB0aHJvdWdoIGl0IGNhcmVmdWxseTsgaXQncyB0aGUgb2J2aW91cyBuZXh0IHN0ZXAgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhpcyB3aG9sZSB0aGluZyBmaXRzIHRvZ2V0aGVyIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjAyNSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNToxOTozMy4zNDA1MjY4NTVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgyNjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcXG4gICAyOlxcdC8qIENvcHlyaWdodChjKSAyMDE5LTIwMjIgIFJlYWx0ZWsgQ29ycG9yYXRpb25cXG4gICAzOlxcdCAqL1xcbiAgIDQ6XFx0I2luY2x1ZGUgXFxcImNhbS5oXFxcIlxcbiAgIDU6XFx0I2luY2x1ZGUgXFxcImNvcmUuaFxcXCJcXG4gICA2OlxcdCNpbmNsdWRlIFxcXCJkZWJ1Zy5oXFxcIlxcbiAgIDc6XFx0I2luY2x1ZGUgXFxcImZ3LmhcXFwiXFxuICAgODpcXHQjaW5jbHVkZSBcXFwibWFjLmhcXFwiXFxuICAgOTpcXHQjaW5jbHVkZSBcXFwicGh5LmhcXFwiXFxuICAxMDpcXHQjaW5jbHVkZSBcXFwicHMuaFxcXCJcXG4gIDExOlxcdCNpbmNsdWRlIFxcXCJyZWcuaFxcXCJcXG4gIDEyOlxcdCNpbmNsdWRlIFxcXCJ1dGlsLmhcXFwiXFxuICAxMzpcXHQjaW5jbHVkZSBcXFwid293LmhcXFwiXFxuICAxNDpcXHRcXG4gIDE1OlxcdHZvaWQgX19ydHc4OV93b3dfcGFyc2VfYWttKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gIDE2OlxcdHtcXG4gIDE3OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilza2ItXFx1MDAzZWRhdGE7XFxuICAxODpcXHRcXHRzdHJ1Y3QgcnR3ODlfd293X3BhcmFtICpydHdfd293ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNld293O1xcbiAgMTk6XFx0XFx0c2l6ZV90IGhkcl9sZW4gPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUuYXNzb2NfcmVxLnZhcmlhYmxlKTtcXG4gIDIwOlxcdFxcdGNvbnN0IHU4ICpyc24sICppZXMgPSBtZ210LVxcdTAwM2V1LmFzc29jX3JlcS52YXJpYWJsZTtcXG4gIDIxOlxcdFxcdHN0cnVjdCBydHc4OV9yc25faWUgKnJzbl9pZTtcXG4gIDIyOlxcdFxcbiAgMjM6XFx0XFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2MgaGRyX2xlbilcXG4gIDI0OlxcdFxcdFxcdHJldHVybjtcXG4gIDI1OlxcdFxcbiAgMjY6XFx0XFx0cnNuID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9SU04sIGllcyxcXG4gIDI3OlxcdFxcdFxcdFxcdCAgICAgICBza2ItXFx1MDAzZWxlbiAtIGhkcl9sZW4pO1xcbiAgMjg6XFx0XFxuICAyOTpcXHRcXHRpZiAoIXJzbilcXG4gIDMwOlxcdFxcdFxcdHJldHVybjtcXG4gIDMxOlxcdFxcbiAgMzI6XFx0XFx0cnNuX2llID0gKHN0cnVjdCBydHc4OV9yc25faWUgKilyc247XFxuICAzMzpcXHRcXHRydHdfd293LVxcdTAwM2Vha20gPSByc25faWUtXFx1MDAzZWFrbV9jaXBoZXJfc3VpdGUudHlwZTtcXG4gIDM0OlxcdH1cXG4gIDM1OlxcdFxcbiAgMzY6XFx0I2RlZmluZSBSVFc4OV9DSVBIRVJfSU5GT19ERUYoY2lwaGVyKSBcXFxcXFxuICAzNzpcXHRcXHR7V0xBTl9DSVBIRVJfU1VJVEVfICMjIGNpcGhlciwgLmZ3X2FsZyA9IFJUVzg5X1dPV19GV19BTEdfICMjIGNpcGhlciwgXFxcXFxcbiAgMzg6XFx0XFx0IC5sZW4gPSBXTEFOX0tFWV9MRU5fICMjIGNpcGhlcn1cXG4gIDM5OlxcdFxcbiAgNDA6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9jaXBoZXJfaW5mbyBydHc4OV9jaXBoZXJfaW5mb19kZWZzW10gPSB7XFxuICA0MTpcXHRcXHRSVFc4OV9DSVBIRVJfSU5GT19ERUYoV0VQNDApLFxcbiAgNDI6XFx0XFx0UlRXODlfQ0lQSEVSX0lORk9fREVGKFdFUDEwNCksXFxuICA0MzpcXHRcXHRSVFc4OV9DSVBIRVJfSU5GT19ERUYoVEtJUCksXFxuICA0NDpcXHRcXHRSVFc4OV9DSVBIRVJfSU5GT19ERUYoQ0NNUCksXFxuICA0NTpcXHRcXHRSVFc4OV9DSVBIRVJfSU5GT19ERUYoR0NNUCksXFxuICA0NjpcXHRcXHRSVFc4OV9DSVBIRVJfSU5GT19ERUYoQ0NNUF8yNTYpLFxcbiAgNDc6XFx0XFx0UlRXODlfQ0lQSEVSX0lORk9fREVGKEdDTVBfMjU2KSxcXG4gIDQ4OlxcdFxcdFJUVzg5X0NJUEhFUl9JTkZPX0RFRihBRVNfQ01BQyksXFxuICA0OTpcXHR9O1xcbiAgNTA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjE5OjMzLjM0MDcxMjAzNVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MzIzNzQ4NzAwNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYGNvcmUuY2AgLSBMaW5lIDI1MzAqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIHRyb3VibGVzaG9vdC4gQmFzZWQgb24gdGhlIHN5bXB0b21zLCBJJ20gZ2V0dGluZyBhIGh1bmNoIGl0J3Mgc29tZXdoZXJlIGRlZXAgd2l0aGluIHRoZSBjb3JlLiBMZXQncyBzdGFydCB3aXRoIGBjb3JlLmNgLiBNeSBndXQgc2F5cyB0aGF0IGxpbmUgMjUzMCBtaWdodCBiZSB3aGVyZSB0aGluZ3MgYXJlIGdldHRpbmcgaGFpcnkuIEl0J3MgYSBicm9hZCBzdGFydGluZyBwb2ludCwgSSBrbm93LCBidXQgb2Z0ZW4gdGhlIGRlZXBlc3QgaXNzdWVzIGhpZGUgaW4gdGhlIGNvcmUgbGlicmFyaWVzLiBJJ2xsIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCBmdW5jdGlvbiBvciBibG9jayBpcyBsb2NhdGVkIHRoZXJlLCBzbyBJIGFtIGdvaW5nIHRvIGhhdmUgYSBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIEhvcGVmdWxseSB0aGUgaXNzdWUgaXMgb2J2aW91cyBxdWlja2x5LiBMZXQncyBzZWUgd2hhdCB0aGF0IHNlY3Rpb24gaXMgaGFuZGxpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMjY2LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNToyNjo0NS43MTU1ODQ4NzJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDczNjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI1MjUsXG4gIFwiTGluZUNvdW50XCI6IDQ1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI1MjU6XFx0XFx0XFx0ICogc2luY2UgaWYgZHVyaW5nIHNjYW5uaW5nLCBwa3RfbGlzdCBpcyBhY2Nlc3NlZCBpbiBib3R0b20gaGFsZi5cXG4yNTI2OlxcdFxcdFxcdCAqL1xcbjI1Mjc6XFx0XFx0fVxcbjI1Mjg6XFx0fVxcbjI1Mjk6XFx0XFxuMjUzMDpcXHRzdGF0aWMgdm9pZCBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4yNTMxOlxcdFxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbjI1MzI6XFx0e1xcbjI1MzM6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2IpO1xcbjI1MzQ6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNrYi1cXHUwMDNlZGF0YTtcXG4yNTM1OlxcdFxcdHNpemVfdCBoZHJfbGVuID0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LCB1LmJlYWNvbi52YXJpYWJsZSk7XFxuMjUzNjpcXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkICpwa3RfbGlzdCA9IHJ0d2Rldi1cXHUwMDNlc2Nhbl9pbmZvLnBrdF9saXN0O1xcbjI1Mzc6XFx0XFx0c3RydWN0IHJ0dzg5X3BrdG9mbGRfaW5mbyAqaW5mbztcXG4yNTM4OlxcdFxcdGNvbnN0IHU4ICppZXMgPSBtZ210LVxcdTAwM2V1LmJlYWNvbi52YXJpYWJsZSwgKnNzaWRfaWU7XFxuMjUzOTpcXHRcXHRzaXplX3QgaWVfbGVuO1xcbjI1NDA6XFx0XFx0Ym9vbCBxdWV1ZV93b3JrID0gZmFsc2U7XFxuMjU0MTpcXHRcXG4yNTQyOlxcdFxcdGlmIChyeF9zdGF0dXMtXFx1MDAzZWJhbmQgIT0gTkw4MDIxMV9CQU5EXzZHSFopXFxuMjU0MzpcXHRcXHRcXHRyZXR1cm47XFxuMjU0NDpcXHRcXG4yNTQ1OlxcdFxcdGlmICh1bmxpa2VseSghKHJ0d2Rldi1cXHUwMDNlY2hpcC1cXHUwMDNlc3VwcG9ydF9iYW5kcyBcXHUwMDI2IEJJVChOTDgwMjExX0JBTkRfNkdIWikpKSkge1xcbjI1NDY6XFx0XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfVU5FWFAsIFxcXCJpbnZhbGlkIHJ4IG9uIHVuc3VwcG9ydGVkIDYgR0h6XFxcXG5cXFwiKTtcXG4yNTQ3OlxcdFxcdFxcdHJldHVybjtcXG4yNTQ4OlxcdFxcdH1cXG4yNTQ5OlxcdFxcbjI1NTA6XFx0XFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2MgaGRyX2xlbilcXG4yNTUxOlxcdFxcdFxcdHJldHVybjtcXG4yNTUyOlxcdFxcbjI1NTM6XFx0XFx0aWVfbGVuID0gc2tiLVxcdTAwM2VsZW4gLSBoZHJfbGVuO1xcbjI1NTQ6XFx0XFxuMjU1NTpcXHRcXHRzc2lkX2llID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9TU0lELCBpZXMsIGllX2xlbik7XFxuMjU1NjpcXHRcXG4yNTU3OlxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoaW5mbywgXFx1MDAyNnBrdF9saXN0W05MODAyMTFfQkFORF82R0haXSwgbGlzdCkge1xcbjI1NTg6XFx0XFx0XFx0aWYgKGV0aGVyX2FkZHJfZXF1YWwoaW5mby1cXHUwMDNlYnNzaWQsIG1nbXQtXFx1MDAzZWJzc2lkKSkge1xcbjI1NTk6XFx0XFx0XFx0XFx0aW5mby1cXHUwMDNlY2FuY2VsID0gdHJ1ZTtcXG4yNTYwOlxcdFxcdFxcdFxcdHF1ZXVlX3dvcmsgPSB0cnVlO1xcbjI1NjE6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMjU2MjpcXHRcXHRcXHR9XFxuMjU2MzpcXHRcXG4yNTY0OlxcdFxcdFxcdGlmICghc3NpZF9pZSB8fCBzc2lkX2llWzFdICE9IGluZm8tXFx1MDAzZXNzaWRfbGVuIHx8IGluZm8tXFx1MDAzZXNzaWRfbGVuID09IDApXFxuMjU2NTpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4yNTY2OlxcdFxcbjI1Njc6XFx0XFx0XFx0aWYgKG1lbWNtcChcXHUwMDI2c3NpZF9pZVsyXSwgaW5mby1cXHUwMDNlc3NpZCwgaW5mby1cXHUwMDNlc3NpZF9sZW4pID09IDApIHtcXG4yNTY4OlxcdFxcdFxcdFxcdGluZm8tXFx1MDAzZWNhbmNlbCA9IHRydWU7XFxuMjU2OTpcXHRcXHRcXHRcXHRxdWV1ZV93b3JrID0gdHJ1ZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6MjY6NDUuNzE2MDYxNDYyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE0NjcxODI1MjM4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgRGl2ZSBmb3IgUlRXODkqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0aGlzIHNvcnRlZC4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgS2NvbmZpZyByZXF1aXJlbWVudHMgZm9yIFJUVzg5LiBUaGF0IG1lYW5zIEkgbmVlZCB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIHNvdXJjZS4gTGV0J3Mgc3RhcnQgYnkgbmF2aWdhdGluZyB0byB0aGUgcmVsZXZhbnQgZmlsZTogYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIHdoZXJlIEkgY2FuIHNlZSB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgYWxsIHRoZSBjcnVjaWFsIGNvbmZpZ3VyYXRpb25zIHRoYXQgZ292ZXJuIGhvdyB0aGlzIGRyaXZlciBiZWhhdmVzIHdpdGhpbiB0aGUga2VybmVsLiBJdOKAmXMgdGhlIHJvYWRtYXAsIHRoZSBibHVlcHJpbnQuIExldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQzMTgsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjI5OjEyLjQzNDMxNzQwNFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjgyMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDkwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcXG4gICAyOlxcdG1lbnVjb25maWcgUlRXODlcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDgwMi4xMWF4IHdpcmVsZXNzIGNoaXBzIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgbWFjODAyMTEtYmFzZWQgd2lyZWxlc3MgZHJpdmVycyB0aGF0XFxuICAgNzpcXHRcXHQgIGVuYWJsZXMgUmVhbHRlayBJRUVFIDgwMi4xMWF4IHdpcmVsZXNzIGNoaXBzZXRzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCBydHc4OS5cXG4gIDEwOlxcdFxcbiAgMTE6XFx0aWYgUlRXODlcXG4gIDEyOlxcdFxcbiAgMTM6XFx0Y29uZmlnIFJUVzg5X0NPUkVcXG4gIDE0OlxcdFxcdHRyaXN0YXRlXFxuICAxNTpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIFJUVzg5X1BDSVxcbiAgMTg6XFx0XFx0dHJpc3RhdGVcXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIFJUVzg5X1VTQlxcbiAgMjE6XFx0XFx0dHJpc3RhdGVcXG4gIDIyOlxcdFxcbiAgMjM6XFx0Y29uZmlnIFJUVzg5Xzg4NTFCXFxuICAyNDpcXHRcXHR0cmlzdGF0ZVxcbiAgMjU6XFx0XFxuICAyNjpcXHRjb25maWcgUlRXODlfODg1MkFcXG4gIDI3OlxcdFxcdHRyaXN0YXRlXFxuICAyODpcXHRcXG4gIDI5OlxcdGNvbmZpZyBSVFc4OV84ODUyQl9DT01NT05cXG4gIDMwOlxcdFxcdHRyaXN0YXRlXFxuICAzMTpcXHRcXG4gIDMyOlxcdGNvbmZpZyBSVFc4OV84ODUyQlxcbiAgMzM6XFx0XFx0dHJpc3RhdGVcXG4gIDM0OlxcdFxcbiAgMzU6XFx0Y29uZmlnIFJUVzg5Xzg4NTJCVFxcbiAgMzY6XFx0XFx0dHJpc3RhdGVcXG4gIDM3OlxcdFxcbiAgMzg6XFx0Y29uZmlnIFJUVzg5Xzg4NTJDXFxuICAzOTpcXHRcXHR0cmlzdGF0ZVxcbiAgNDA6XFx0XFxuICA0MTpcXHRjb25maWcgUlRXODlfODkyMkFcXG4gIDQyOlxcdFxcdHRyaXN0YXRlXFxuICA0MzpcXHRcXG4gIDQ0OlxcdGNvbmZpZyBSVFc4OV84ODUxQkVcXG4gIDQ1OlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTFCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4gIDQ2OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA0NzpcXHRcXHRzZWxlY3QgUlRXODlfQ09SRVxcbiAgNDg6XFx0XFx0c2VsZWN0IFJUVzg5X1BDSVxcbiAgNDk6XFx0XFx0c2VsZWN0IFJUVzg5Xzg4NTFCXFxuICA1MDpcXHRcXHRoZWxwXFxuICA1MTpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODUxQkUgY2hpcHNldFxcbiAgNTI6XFx0XFxuICA1MzpcXHRcXHQgIDgwMi4xMWF4IFBDSWUgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcbiAgNTQ6XFx0XFxuICA1NTpcXHRjb25maWcgUlRXODlfODg1MUJVXFxuICA1NjpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUxQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuICA1NzpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgNTg6XFx0XFx0c2VsZWN0IFJUVzg5X0NPUkVcXG4gIDU5OlxcdFxcdHNlbGVjdCBSVFc4OV9VU0JcXG4gIDYwOlxcdFxcdHNlbGVjdCBSVFc4OV84ODUxQlxcbiAgNjE6XFx0XFx0aGVscFxcbiAgNjI6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MUJVIGNoaXBzZXRcXG4gIDYzOlxcdFxcbiAgNjQ6XFx0XFx0ICA4MDIuMTFheCBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcbiAgNjU6XFx0XFxuICA2NjpcXHRjb25maWcgUlRXODlfODg1MkFFXFxuICA2NzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQUUgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuICA2ODpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgNjk6XFx0XFx0c2VsZWN0IFJUVzg5X0NPUkVcXG4gIDcwOlxcdFxcdHNlbGVjdCBSVFc4OV9QQ0lcXG4gIDcxOlxcdFxcdHNlbGVjdCBSVFc4OV84ODUyQVxcbiAgNzI6XFx0XFx0aGVscFxcbiAgNzM6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkFFIGNoaXBzZXRcXG4gIDc0OlxcdFxcbiAgNzU6XFx0XFx0ICA4MDIuMTFheCBQQ0llIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXG4gIDc2OlxcdFxcbiAgNzc6XFx0Y29uZmlnIFJUVzg5Xzg4NTJBVVxcbiAgNzg6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbiAgNzk6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gIDgwOlxcdFxcdHNlbGVjdCBSVFc4OV9DT1JFXFxuICA4MTpcXHRcXHRzZWxlY3QgUlRXODlfVVNCXFxuICA4MjpcXHRcXHRzZWxlY3QgUlRXODlfODg1MkFcXG4gIDgzOlxcdFxcdGhlbHBcXG4gIDg0OlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4NTJBVSBjaGlwc2V0XFxuICA4NTpcXHRcXG4gIDg2OlxcdFxcdCAgODAyLjExYXggVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXG4gIDg3OlxcdFxcbiAgODg6XFx0Y29uZmlnIFJUVzg5Xzg4NTJCRVxcbiAgODk6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbiAgOTA6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6Mjk6MTIuNDM0NDQ4NTk0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwMzgxNzYyMTg1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBydHc4OSBLY29uZmlnKipcblxuQWxyaWdodCwgc28gdGhlIHRhc2sgYXQgaGFuZCBpcyB0byBkaWcgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ2AgZmlsZS4gSSdtIGFzc3VtaW5nIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVyLCBhbmQgdGhlIEtjb25maWcgaXMgd2hlcmUgYWxsIHRoZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcyBtb2R1bGUgYXJlIGRlZmluZWQuIEtub3dpbmcgdGhpcywgbXkgbWluZCBpbW1lZGlhdGVseSBzdGFydHMgcGFyc2luZyB0aGUgaW1wbGljYXRpb25zLiBJ4oCZbSB0aGlua2luZyB3ZSdsbCBmaW5kIHRoaW5ncyBsaWtlOlxuXG4qICAgKipDaGlwc2V0IFNlbGVjdGlvbjoqKiBUaGVyZSB3aWxsIGxpa2VseSBiZSBvcHRpb25zIGZvciBkaWZmZXJlbnQgUmVhbHRlayA4MDIuMTFheCBjaGlwc2V0cyB0aGF0IHRoaXMgZHJpdmVyIHN1cHBvcnRzIChlLmcuLCBzcGVjaWZpYyBSVEw4ODUyQUUgdmFyaWFudHMpLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGBzZWxlY3RgIHN0YXRlbWVudHMgYW5kIGRlcGVuZGVuY2llcyBvbiBkZXZpY2UgSURzIG9yIG90aGVyIGhhcmR3YXJlIGZlYXR1cmVzLlxuKiAgICoqRmVhdHVyZSBGbGFnczoqKiBXZSBzaG91bGQgc2VlIG9wdGlvbnMgdG8gZW5hYmxlIG9yIGRpc2FibGUgc3BlY2lmaWMgZnVuY3Rpb25hbGl0aWVz4oCUdGhpbmdzIGxpa2UgTVUtTUlNTyBzdXBwb3J0LCBiZWFtZm9ybWluZywgZGlmZmVyZW50IHBvd2VyLXNhdmluZyBtb2RlcywgODAyLjExdyBzZWN1cml0eS4gVGhlIGNvbmZpZ3VyYXRpb24gd2lsbCBkaXJlY3RseSBhZmZlY3QgdGhlIGRyaXZlcidzIGZvb3RwcmludCBhbmQgZmVhdHVyZSBzZXQuXG4qICAgKipEZWJ1Z2dpbmcgYW5kIExvZ2dpbmc6KiogVGhlcmUgd2lsbCBiZSBvcHRpb25zIHRvIGVuYWJsZSB2YXJpb3VzIGRlYnVnZ2luZyBsZXZlbHMgb3IgbG9nZ2luZywgdmVyeSB1c2VmdWwgZm9yIGFueW9uZSB3b3JraW5nIHRvIGFuYWx5emUgdGhlIGRyaXZlci4gSeKAmWxsIGxvb2sgZm9yIGBib29sYCwgYHRyaXN0YXRlYCwgb3IgYHN0cmluZ2Agb3B0aW9ucyB3aXRoIGRlc2NyaXB0aW9ucyBvZiB0aGUgbG9nZ2luZyBsZXZlbHMgYW5kIGhvdyB0byBjb250cm9sIHRoZW0uXG4qICAgKipGaXJtd2FyZSBMb2FkaW5nOioqIFRoaXMgaXMgY3JpdGljYWwuIFRoZSBLY29uZmlnIHByb2JhYmx5IGRlZmluZXMgdGhlIGxvY2F0aW9ucyAoZS5nLiwgaW4gdGhlIGZpcm13YXJlIGRpcmVjdG9yeSkgb3IgZXZlbiB0aGUgZmlybXdhcmUgZmlsZXMgdGhlbXNlbHZlcy4gVGhlc2Ugd2lsbCBiZSBuZWNlc3NhcnkgZm9yIGEgZnVsbCByZXZpZXcuXG4qICAgKipEZXBlbmRlbmNpZXM6KiogSSdtIGV4cGVjdGluZyB0byBzZWUgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBmZWF0dXJlcyBvciBkcml2ZXJzLiBUaGlzIHdpbGwgaGVscCB1bmRlcnN0YW5kIGhvdyB0aGUgcnR3ODkgZHJpdmVyIGludGVncmF0ZXMgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgZW52aXJvbm1lbnQuIFRoaW5ncyBsaWtlIGNyeXB0b2dyYXBoaWMgbW9kdWxlcyAoZS5nLiwgYENPTkZJR19DUllQVE9gKSBvciBuZXR3b3JraW5nIGluZnJhc3RydWN0dXJlIChlLmcuLCBgQ09ORklHX05FVGApIGFyZSBwb3NzaWJpbGl0aWVzLlxuKiAgICoqRGVmYXVsdCBWYWx1ZXM6KiogSSdsbCBiZSBub3RpbmcgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBjb25maWd1cmF0aW9ucy4gVGhhdCBwcm92aWRlcyBhIHNlbnNlIG9mIHRoZSBpbnRlbmRlZCBcIm91dC1vZi10aGUtYm94XCIgZXhwZXJpZW5jZSBhbmQgY2FuIGd1aWRlIHRoZSBkaXJlY3Rpb24gb2YgdHdlYWtpbmcgYW5kIGN1c3RvbWl6YXRpb24uXG5cblNvLCBJJ20gYWxyZWFkeSBtZW50YWxseSBwcmVwYXJpbmcgdG8gc2VlIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGNvbmZpZyBmaWxlIGFuZCB0byBjb25uZWN0IHRoZSBwaWVjZXMgb2YgaW5mb3JtYXRpb24gd2l0aCB3aGF0IEkga25vdyBhYm91dCB3aXJlbGVzcyBkcml2ZXIgYXJjaGl0ZWN0dXJlcyBhbmQgdGhlIGNvbW1vbiBLY29uZmlnIGlkaW9tcy4gVGhpcyBpc27igJl0IGp1c3QgYWJvdXQgbG9va2luZyBhdCBpbmRpdmlkdWFsIG9wdGlvbnM7IGl0J3MgYWJvdXQgc2VlaW5nIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgdGhlIGRyaXZlcuKAmXMgZnVuY3Rpb25hbGl0eSBhbmQgaW50ZWdyYXRpb24gd2l0aGluIHRoZSBrZXJuZWwuIFRpbWUgdG8gZGlnIGluIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTc2MSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6MzA6NTYuMjUyMDcyOTY5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0NDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA5MSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgOTE6XFx0XFx0c2VsZWN0IFJUVzg5X0NPUkVcXG4gIDkyOlxcdFxcdHNlbGVjdCBSVFc4OV9QQ0lcXG4gIDkzOlxcdFxcdHNlbGVjdCBSVFc4OV84ODUyQlxcbiAgOTQ6XFx0XFx0c2VsZWN0IFJUVzg5Xzg4NTJCX0NPTU1PTlxcbiAgOTU6XFx0XFx0aGVscFxcbiAgOTY6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkJFIGNoaXBzZXRcXG4gIDk3OlxcdFxcbiAgOTg6XFx0XFx0ICA4MDIuMTFheCBQQ0llIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXG4gIDk5OlxcdFxcbiAxMDA6XFx0Y29uZmlnIFJUVzg5Xzg4NTJCVVxcbiAxMDE6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbiAxMDI6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gMTAzOlxcdFxcdHNlbGVjdCBSVFc4OV9DT1JFXFxuIDEwNDpcXHRcXHRzZWxlY3QgUlRXODlfVVNCXFxuIDEwNTpcXHRcXHRzZWxlY3QgUlRXODlfODg1MkJcXG4gMTA2OlxcdFxcdHNlbGVjdCBSVFc4OV84ODUyQl9DT01NT05cXG4gMTA3OlxcdFxcdGhlbHBcXG4gMTA4OlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4NTJCVSBjaGlwc2V0XFxuIDEwOTpcXHRcXG4gMTEwOlxcdFxcdCAgODAyLjExYXggVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXG4gMTExOlxcdFxcbiAxMTI6XFx0Y29uZmlnIFJUVzg5Xzg4NTJCVEVcXG4gMTEzOlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJCRS1WVCBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4gMTE0OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDExNTpcXHRcXHRzZWxlY3QgUlRXODlfQ09SRVxcbiAxMTY6XFx0XFx0c2VsZWN0IFJUVzg5X1BDSVxcbiAxMTc6XFx0XFx0c2VsZWN0IFJUVzg5Xzg4NTJCVFxcbiAxMTg6XFx0XFx0c2VsZWN0IFJUVzg5Xzg4NTJCX0NPTU1PTlxcbiAxMTk6XFx0XFx0aGVscFxcbiAxMjA6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkJFLVZUIGNoaXBzZXRcXG4gMTIxOlxcdFxcbiAxMjI6XFx0XFx0ICA4MDIuMTFheCBQQ0llIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXG4gMTIzOlxcdFxcbiAxMjQ6XFx0Y29uZmlnIFJUVzg5Xzg4NTJDRVxcbiAxMjU6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkNFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2RSkgYWRhcHRlclxcXCJcXG4gMTI2OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDEyNzpcXHRcXHRzZWxlY3QgUlRXODlfQ09SRVxcbiAxMjg6XFx0XFx0c2VsZWN0IFJUVzg5X1BDSVxcbiAxMjk6XFx0XFx0c2VsZWN0IFJUVzg5Xzg4NTJDXFxuIDEzMDpcXHRcXHRoZWxwXFxuIDEzMTpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODUyQ0UgY2hpcHNldFxcbiAxMzI6XFx0XFxuIDEzMzpcXHRcXHQgIDgwMi4xMWF4IFBDSWUgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNkUpIGFkYXB0ZXJcXG4gMTM0OlxcdFxcbiAxMzU6XFx0Y29uZmlnIFJUVzg5Xzg4NTJDVVxcbiAxMzY6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkNVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2RSkgYWRhcHRlclxcXCJcXG4gMTM3OlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuIDEzODpcXHRcXHRzZWxlY3QgUlRXODlfQ09SRVxcbiAxMzk6XFx0XFx0c2VsZWN0IFJUVzg5X1VTQlxcbiAxNDA6XFx0XFx0c2VsZWN0IFJUVzg5Xzg4NTJDXFxuIDE0MTpcXHRcXHRoZWxwXFxuIDE0MjpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODUyQ1UgY2hpcHNldFxcbiAxNDM6XFx0XFxuIDE0NDpcXHRcXHQgIDgwMi4xMWF4IFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2RSkgYWRhcHRlclxcbiAxNDU6XFx0XFxuIDE0NjpcXHRjb25maWcgUlRXODlfODkyMkFFXFxuIDE0NzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4OTIyQUUvODkyMkFFLVZTIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA3KSBhZGFwdGVyXFxcIlxcbiAxNDg6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gMTQ5OlxcdFxcdHNlbGVjdCBSVFc4OV9DT1JFXFxuIDE1MDpcXHRcXHRzZWxlY3QgUlRXODlfUENJXFxuIDE1MTpcXHRcXHRzZWxlY3QgUlRXODlfODkyMkFcXG4gMTUyOlxcdFxcdGhlbHBcXG4gMTUzOlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg5MjJBRS84OTIyQUUtVlMgY2hpcHNldFxcbiAxNTQ6XFx0XFxuIDE1NTpcXHRcXHQgIDgwMi4xMWJlIFBDSWUgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclxcbiAxNTY6XFx0XFx0ICBzdXBwb3J0aW5nIDJ4MiAyR0h6LzVHSHovNkdIeiA0MDk2LVFBTSAxNjBNSHogY2hhbm5lbHMuXFxuIDE1NzpcXHRcXG4gMTU4OlxcdFxcdCAgVGhlIHZhcmlhbnQgODkyMkFFLVZTIGhhcyB0aGUgc2FtZSBmZWF0dXJlcyBleGNlcHQgMTAyNC1RQU0uXFxuIDE1OTpcXHRcXG4gMTYwOlxcdGNvbmZpZyBSVFc4OV84OTIyQVVcXG4gMTYxOlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg5MjJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclxcXCJcXG4gMTYyOlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuIDE2MzpcXHRcXHRzZWxlY3QgUlRXODlfQ09SRVxcbiAxNjQ6XFx0XFx0c2VsZWN0IFJUVzg5X1VTQlxcbiAxNjU6XFx0XFx0c2VsZWN0IFJUVzg5Xzg5MjJBXFxuIDE2NjpcXHRcXHRoZWxwXFxuIDE2NzpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4OTIyQVUgY2hpcHNldFxcbiAxNjg6XFx0XFxuIDE2OTpcXHRcXHQgIDgwMi4xMWJlIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA3KSBhZGFwdGVyXFxuIDE3MDpcXHRcXHQgIHN1cHBvcnRpbmcgMngyIDJHSHovNUdIei82R0h6IDQwOTYtUUFNIDE2ME1IeiBjaGFubmVscy5cXG4gMTcxOlxcdFxcbiAxNzI6XFx0Y29uZmlnIFJUVzg5X0RFQlVHXFxuIDE3MzpcXHRcXHRib29sXFxuIDE3NDpcXHRcXG4gMTc1OlxcdGNvbmZpZyBSVFc4OV9ERUJVR01TR1xcbiAxNzY6XFx0XFx0Ym9vbCBcXFwiUmVhbHRlayBydHc4OSBkZWJ1ZyBtZXNzYWdlIHN1cHBvcnRcXFwiXFxuIDE3NzpcXHRcXHRkZXBlbmRzIG9uIFJUVzg5X0NPUkVcXG4gMTc4OlxcdFxcdHNlbGVjdCBSVFc4OV9ERUJVR1xcbiAxNzk6XFx0XFx0aGVscFxcbiAxODA6XFx0XFx0ICBFbmFibGUgZGVidWcgbWVzc2FnZSBzdXBwb3J0XFxuIDE4MTpcXHRcXG4gMTgyOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBzaW1wbGlmeSBkZWJ1ZyBwcm9ibGVtc1xcbiAxODM6XFx0XFxuIDE4NDpcXHRjb25maWcgUlRXODlfREVCVUdGU1xcbiAxODU6XFx0XFx0Ym9vbCBcXFwiUmVhbHRlayBydHc4OSBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuIDE4NjpcXHRcXHRkZXBlbmRzIG9uIFJUVzg5X0NPUkUgXFx1MDAyNlxcdTAwMjYgQ0ZHODAyMTFfREVCVUdGU1xcbiAxODc6XFx0XFx0c2VsZWN0IFJUVzg5X0RFQlVHXFxuIDE4ODpcXHRcXHRoZWxwXFxuIDE4OTpcXHRcXHQgIEVuYWJsZSBkZWJ1Z2ZzIHN1cHBvcnRcXG4gMTkwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTozMDo1Ni4yNTIxNDg4NDlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTAwMTg3MzcwNjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIEJ1aWxkIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYGNvcmUub2AgYW5kIGB3b3cub2AgYXJlIGdldHRpbmcgYnVpbHQuIEknbSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBgTWFrZWZpbGVgLiBUaGF0J3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc2VlIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbXBpbGF0aW9uIHN0ZXBzIGludm9sdmVkLiBJdCdsbCBnaXZlIG1lIHRoZSBjbGVhcmVzdCBwaWN0dXJlIG9mIGhvdyB0aGVzZSBvYmplY3QgZmlsZXMgYXJlIGdlbmVyYXRlZCwgd2hpY2ggaXMgY3J1Y2lhbCBmb3IgWyoqaW5zZXJ0IHlvdXIgcmVsZXZhbnQgZmllbGQsIGUuZy4sIGRlYnVnZ2luZyBhIGJ1aWxkIGlzc3VlLCBvcHRpbWl6aW5nIGNvbXBpbGF0aW9uLCB1bmRlcnN0YW5kaW5nIHRoZSBidWlsZCBwaXBlbGluZSwgbW9kaWZ5aW5nIHRoZSBidWlsZCoqXS4gTG9va2luZyBhdCB0aGUgYE1ha2VmaWxlYCB3aWxsIHF1aWNrbHkgdGVsbCBtZSB0aGUgY29tcGlsZXIgZmxhZ3MsIGluY2x1ZGUgcGF0aHMsIHNvdXJjZSBmaWxlcywgYW5kIGFueSBsaW5raW5nIHN0ZXBzLiBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGV4YWN0IHJ1bGVzIHJlc3BvbnNpYmxlIGZvciBjb21waWxpbmcgdGhvc2Ugc3BlY2lmaWMgb2JqZWN0IGZpbGVzLiBUaGF0J3MgbXkgc3RhcnRpbmcgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3OTkxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTozMjozNi40Mzk1MjI5ODRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwODk0ODgzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3b3dcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlPTQ9cnR3ODlfY29yZS15ICs9IGNvcmUubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MjM6cnR3ODlfY29yZS0kKENPTkZJR19QTSkgKz0gd293Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTI0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTozMjozNy4yNDg0NzkwM1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyOTA1NjQ2MDk1MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFsdGVrIHJ0dzg5IFdpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uIGFuZCBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBidWlsZCBjb25maWd1cmF0aW9uLiBJIHNlZSBgcnR3ODlfY29yZS15ICs9IGNvcmUub2AgYW5kIGFsc28gYHJ0dzg5X2NvcmUtJChDT05GSUdfUE0pICs9IHdvdy5vYC4gIFRoYXQgbWVhbnMgdGhlIGNvcmUgbW9kdWxlIGlzIGFsd2F5cyBpbmNsdWRlZCwgYW5kIGB3b3cub2AgKFdha2Utb24tV0xBTj8pIGlzIG9ubHkgaW5jbHVkZWQgaWYgcG93ZXIgbWFuYWdlbWVudCBpcyBlbmFibGVkLiBgUlRXODlfQ09SRWAgaXMgdGhlIGNvcmUsIGFuZCBpdCdzIGJlaW5nIHNlbGVjdGVkIGJ5IGEgYnVuY2ggb2YgZHJpdmVycyAtIGA4ODUyQVVgLCBgODg1MkNVYCwgdGhlIHVzdWFsIHN1c3BlY3RzLlxuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyB3aG9sZSB0aGluZyBpcyBjb25maWd1cmVkLiBUbyBzdGF0aWNhbGx5IGJ1aWxkIHRoaXMgZHJpdmVyLCBJIG5lZWQgYSBmZXcgdGhpbmdzOiBgTUFDODAyMTFgLCBvYnZpb3VzbHksIGBSVFc4OWAsIGBSVFc4OV9DT1JFYCAtIHRoYXQncyB0aGUgYmFzZS4gVGhlbiBlaXRoZXIgYFJUVzg5X1BDSWAgKm9yKiBgUlRXODlfVVNCYCwgZGVwZW5kaW5nIG9uIHRoZSBoYXJkd2FyZSwgYW5kIG9uZSBvZiB0aG9zZSBzcGVjaWZpYyBkZXZpY2UgZHJpdmVycyBsaWtlIGBSVFc4OV84ODUyQVVgLiBBbmQsIG9mIGNvdXJzZSwgYFBNYCBpZiBJIHdhbnQgdGhhdCBgd293Lm9gIG1vZHVsZS4gIEdvdCBpdC5cblxuTm93LCBsZXQncyBzd2l0Y2ggZ2VhcnMgYW5kIGZvY3VzIG9uIHRoZSBjb2RlIGNoYW5nZXMgaW4gdGhpcyBwYXRjaC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGltcGFjdCBvZiB0aGlzIGBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4YCBmdW5jdGlvbi4gTGV0J3Mgc2VlLi4uIGxvb2tpbmcgYXQgdGhlIHBhdGNoLCBpdCdzIGRlZmluZWQgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jYC4gQWgsIGl0J3MgYSBgc3RhdGljYCBoZWxwZXIgZnVuY3Rpb24uIFNvLCBpdCdzIG5vdCBkaXJlY3RseSBleHBvc2VkIGFzIGFuIGVudHJ5IHBvaW50LiBUaGF0J3MgZ29vZCB0byBrbm93LCBidXQgSSBzdGlsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuXG5cbkxldCBtZSB0cmFjZSB0aGUgY2FsbHMuIEl0J3MgY2FsbGVkIGJ5IGBydHc4OV92aWZfcnhfc3RhdHNfaXRlcmAsIHdoaWNoIGlzIGNhbGxlZCBieSBgcnR3ODlfY29yZV9yeF9zdGF0c2AsIHdoaWNoLCBpbiB0dXJuLCBpcyBjYWxsZWQgYnkgYHJ0dzg5X2NvcmVfcnhfdG9fbWFjODAyMTFgLCBhbmQgdWx0aW1hdGVseSwgYHJ0dzg5X2NvcmVfcnhgLiBUaGF0J3MgdGhlIGNyaXRpY2FsIFJYIHBhdGguXG5cbk9rYXksIGxldCBtZSBxdWlja2x5IGdsYW5jZSBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmhgIGFuZCBgY29yZS5jYCBmb3IgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gcmVjZWl2ZSwgb3IgYW55IGNoYW5nZXMgdGhhdCBjb3VsZCBiZSByZWxldmFudCB0byBob3cgdGhpcyBtb2R1bGUgaW50ZXJhY3RzIHdpdGggdGhlIGNvcmUgd2lyZWxlc3MgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgzNDEsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6Mzc6MjcuODEzMDkyODMzWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDQ5ODgzNTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODlfY29yZV9yeFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTE5MDA9RVhQT1JUX1NZTUJPTChydHc4OV9jb3JlX2ZpbGxfdHhkZXNjX2Z3Y21kX3YyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0xOTAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjE5MDI6c3RhdGljIGludCBydHc4OV9jb3JlX3J4X3Byb2Nlc3NfbWFjX3BwZHUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTE5MDMtXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9MTk3OT1zdGF0aWMgdTggcnR3ODlfZ2V0X2RhdGFfcmF0ZV9uc3Moc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MTYgZGF0YV9yYXRlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMTk5OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzoxOTk5OnN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcnhfcHJvY2Vzc19waHlfcHBkdV9pdGVyKHZvaWQgKmRhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMjAwMC1cXHRcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9MjIzMT1zdGF0aWMgdm9pZCBydHc4OV9jb3JlX3VwZGF0ZV9waHlfcHBkdShzdHJ1Y3QgcnR3ODlfcnhfcGh5X3BwZHUgKnBoeV9wcGR1KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMjI0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzoyMjQ4OnN0YXRpYyBpbnQgcnR3ODlfY29yZV9yeF9wcm9jZXNzX3BoeV9wcGR1KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0yMjQ5LVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHJ0dzg5X3J4X3BoeV9wcGR1ICpwaHlfcHBkdSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTIyNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MjI3MzpzdGF0aWMgaW50IHJ0dzg5X2NvcmVfcnhfcGFyc2VfcGh5X3N0cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMjI3NC1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHJ0dzg5X3J4X3BoeV9wcGR1ICpwaHlfcHBkdSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTIzMjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MjMyMjpzdGF0aWMgdm9pZCBydHc4OV9jb3JlX3J4X3Byb2Nlc3NfcGh5X3N0cyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMjMyMy1cXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBydHc4OV9yeF9waHlfcHBkdSAqcGh5X3BwZHUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0yMzI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjIzMjc6XFx0cmV0ID0gcnR3ODlfY29yZV9yeF9wYXJzZV9waHlfc3RzKHJ0d2RldiwgcGh5X3BwZHUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTIzMjgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTIzMzMtXFx0aWVlZTgwMjExX2l0ZXJhdGVfc3RhdGlvbnNfYXRvbWljKHJ0d2Rldi1cXHUwMDNlaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MjMzNDpcXHRcXHRcXHRcXHRcXHQgIHJ0dzg5X2NvcmVfcnhfcHJvY2Vzc19waHlfcHBkdV9pdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTIzMzUtXFx0XFx0XFx0XFx0XFx0ICBwaHlfcHBkdSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0yMzkxPWJvb2wgcnR3ODlfY2hlY2tfcnhfc3RhdHVfZ2lfbWF0Y2goc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnN0YXR1cywgdTggZ2lfbHRmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMjM5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzoyNDAwOnN0YXRpYyBib29sIHJ0dzg5X2NvcmVfcnhfcHBkdV9tYXRjaChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMjQwMS1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBydHc4OV9yeF9kZXNjX2luZm8gKmRlc2NfaW5mbyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTMwMzg9c3RhdGljIHZvaWQgcnR3ODlfdmlmX3J4X3N0YXRzX2l0ZXIodm9pZCAqZGF0YSwgdTggKm1hYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTMxMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MzE0MDpzdGF0aWMgdm9pZCBydHc4OV9jb3JlX3J4X3N0YXRzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zMTQxLVxcdFxcdFxcdFxcdHN0cnVjdCBydHc4OV9yeF9waHlfcHBkdSAqcGh5X3BwZHUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0zOTEzPXN0YXRpYyBib29sIHJ0dzg5X2NvcmVfc2tiX3BuX3ZhbGlkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTM5NzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6Mzk3OTpzdGF0aWMgdm9pZCBydHc4OV9jb3JlX3J4X3RvX21hYzgwMjExKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zOTgwLVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBydHc4OV9yeF9waHlfcHBkdSAqcGh5X3BwZHUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zOTkxLVxcdHJ0dzg5X2NvcmVfaHdfdG9fc2JhbmRfcmF0ZShyeF9zdGF0dXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjM5OTI6XFx0cnR3ODlfY29yZV9yeF9zdGF0cyhydHdkZXYsIHBoeV9wcGR1LCBkZXNjX2luZm8sIHNrYl9wcGR1KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0zOTkzLVxcdHJ0dzg5X2NvcmVfdXBkYXRlX3J4X3N0YXR1c19ieV9wcGR1KHJ0d2Rldiwgcnhfc3RhdHVzLCBwaHlfcHBkdSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQwMDY6c3RhdGljIHZvaWQgcnR3ODlfY29yZV9yeF9wZW5kaW5nX3NrYihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDAwNy1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgcnR3ODlfcnhfcGh5X3BwZHUgKnBoeV9wcGR1LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDAyMS1cXHRcXHRyeF9zdGF0dXMgPSBJRUVFODAyMTFfU0tCX1JYQ0Ioc2tiX3BwZHUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQwMjI6XFx0XFx0aWYgKHJ0dzg5X2NvcmVfcnhfcHBkdV9tYXRjaChydHdkZXYsIGRlc2NfaW5mbywgcnhfc3RhdHVzKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDIzLVxcdFxcdFxcdHJ0dzg5X2NoaXBfcXVlcnlfcHBkdShydHdkZXYsIHBoeV9wcGR1LCByeF9zdGF0dXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQwMjQtXFx0XFx0cnR3ODlfY29ycmVjdF9jY2tfY2hhbihydHdkZXYsIHJ4X3N0YXR1cyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDAyNTpcXHRcXHRydHc4OV9jb3JlX3J4X3RvX21hYzgwMjExKHJ0d2RldiwgcGh5X3BwZHUsIGRlc2NfaW5mbywgc2tiX3BwZHUsIHJ4X3N0YXR1cyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDAyNi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQwMjk6c3RhdGljIHZvaWQgcnR3ODlfY29yZV9yeF9wcm9jZXNzX3BwZHVfc3RzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDMwLVxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBydHc4OV9yeF9kZXNjX2luZm8gKmRlc2NfaW5mbyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQwNDEtXFx0aWYgKGRlc2NfaW5mby1cXHUwMDNlbWFjX2luZm9fdmFsaWQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo0MDQyOlxcdFxcdHJldCA9IHJ0dzg5X2NvcmVfcnhfcHJvY2Vzc19tYWNfcHBkdShydHdkZXYsIHNrYiwgXFx1MDAyNnBoeV9wcGR1KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDQzLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDQ2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQwNDc6XFx0cmV0ID0gcnR3ODlfY29yZV9yeF9wcm9jZXNzX3BoeV9wcGR1KHJ0d2RldiwgXFx1MDAyNnBoeV9wcGR1KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDQ4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00MDUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQwNTE6XFx0cnR3ODlfY29yZV9yeF9wcm9jZXNzX3BoeV9zdHMocnR3ZGV2LCBcXHUwMDI2cGh5X3BwZHUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQwNTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDA1My1vdXQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDA1NDpcXHRydHc4OV9jb3JlX3J4X3BlbmRpbmdfc2tiKHJ0d2RldiwgXFx1MDAyNnBoeV9wcGR1LCBkZXNjX2luZm8sIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDA1NS1cXHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDA1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo0MDU4OnN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfcnhfcHJvY2Vzc19yZXBvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQwNTktXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBydHc4OV9yeF9kZXNjX2luZm8gKmRlc2NfaW5mbyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQwNjYtXFx0Y2FzZSBSVFc4OV9DT1JFX1JYX1RZUEVfUFBEVV9TVEFUOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjQwNjc6XFx0XFx0cnR3ODlfY29yZV9yeF9wcm9jZXNzX3BwZHVfc3RzKHJ0d2RldiwgZGVzY19pbmZvLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQwNjgtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz00NDQ3PXN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfZmx1c2hfcHBkdV9yeF9xdWV1ZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00NDU3LVxcdFxcdHJ4X3N0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2JfcHBkdSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDQ1ODpcXHRcXHRydHc4OV9jb3JlX3J4X3RvX21hYzgwMjExKHJ0d2RldiwgTlVMTCwgZGVzY19pbmZvLCBza2JfcHBkdSwgcnhfc3RhdHVzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00NDU5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTQ0NjI9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDQ2Mzp2b2lkIHJ0dzg5X2NvcmVfcnhfcGt0X2hkbChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDQ2NC1cXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgcnR3ODlfcnhfZGVzY19pbmZvICpkZXNjKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDQ5Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo0NDk3OnZvaWQgcnR3ODlfY29yZV9yeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDQ5OC1cXHRcXHQgICBzdHJ1Y3QgcnR3ODlfcnhfZGVzY19pbmZvICpkZXNjX2luZm8sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00NTA2LVxcdGlmIChkZXNjX2luZm8tXFx1MDAzZXBrdF90eXBlICE9IFJUVzg5X0NPUkVfUlhfVFlQRV9XSUZJKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDUwNzpcXHRcXHRydHc4OV9jb3JlX3J4X3Byb2Nlc3NfcmVwb3J0KHJ0d2RldiwgZGVzY19pbmZvLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQ1MDgtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDUxOC1cXHRydHc4OV9jb3JlX3VwZGF0ZV9yeF9zdGF0dXMocnR3ZGV2LCBza2IsIGRlc2NfaW5mbywgcnhfc3RhdHVzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo0NTE5OlxcdHJ0dzg5X2NvcmVfcnhfcGt0X2hkbChydHdkZXYsIHNrYiwgZGVzY19pbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00NTIwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDUyNy1cXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDUyODpcXHRcXHRydHc4OV9jb3JlX3J4X3RvX21hYzgwMjExKHJ0d2RldiwgTlVMTCwgZGVzY19pbmZvLCBza2IsIHJ4X3N0YXR1cyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDUyOS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDUzMDpFWFBPUlRfU1lNQk9MKHJ0dzg5X2NvcmVfcngpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQ1MzEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD0yMTY9ZW51bSBydHc4OV9jb3JlX3R4X3R5cGUge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMjIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjIyMjplbnVtIHJ0dzg5X2NvcmVfcnhfdHlwZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMjIzLVxcdFJUVzg5X0NPUkVfUlhfVFlQRV9XSUZJXFx0XFx0PSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9ODA5Mz11OCBydHc4OV9jb3JlX2dldF9jaF9kbWFfdjIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBxc2VsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo4MDk0OnZvaWQgcnR3ODlfY29yZV9yeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtODA5NS1cXHRcXHQgICBzdHJ1Y3QgcnR3ODlfcnhfZGVzY19pbmZvICpkZXNjX2luZm8sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BjaS5jPTMyMT1zdGF0aWMgdTMyIHJ0dzg5X3BjaV9yeGJkX2RlbGl2ZXJfc2ticyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BjaS5jLTM5My1cXHRpZiAobHMpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BjaS5jOjM5NDpcXHRcXHRydHc4OV9jb3JlX3J4KHJ0d2RldiwgZGVzY19pbmZvLCBuZXcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGNpLmMtMzk1LVxcdFxcdHJ4X3JpbmctXFx1MDAzZWRpbGl2ZXJfc2tiID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM9NDM2PXN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yeF9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNDgyLVxcdFxcdFxcdHNrYl9wdXRfZGF0YShza2IsIHBrdF9wdHIgKyBwa3Rfb2Zmc2V0LCBkZXNjX2luZm8ucGt0X3NpemUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NDgzOlxcdFxcdFxcdHJ0dzg5X2NvcmVfcngocnR3ZGV2LCBcXHUwMDI2ZGVzY19pbmZvLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNDg0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTozNzoyOC41NTgwODU5ODJaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjM3MjQ1MTI3MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIFVTQiBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgUmVhbHRlayBVU0IgZHJpdmVyIOKAkyBzcGVjaWZpY2FsbHksIGBydHc4OV91c2IuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkFoYSEgYHJ0dzg5X3VzYl9yeF9oYW5kbGVyYCBpcyBjYWxsaW5nIGBydHc4OV9jb3JlX3J4YCB3aGVuIGl0IGdldHMgcGFja2V0cyB2aWEgVVNCLiBUaGF0J3MgdGhlIGV4cGVjdGVkIHBhdGggZm9yIFJYLlwiXG5cbkJ1dCB0aGUgcmVhbCBxdWVzdGlvbiBJIHdhbnQgdG8gYW5zd2VyIGlzIHdobydzIHVzaW5nIGBfX3J0dzg5X3dvd19wYXJzZV9ha21gPyBJcyBpdCByZWxhdGVkIHRvIHRoZSBpc3N1ZSBJIGFtIGRlYnVnZ2luZywgYW5kIGlmIHNvIHdoZXJlIGRvIEkgZmluZCB0aGUgc291cmNlP1xuXG5MZXQncyBzZWXigKYgSSBzaG91bGQgY2hlY2sgaWYgYHJ0dzg5X2NvcmVfdHhfd3JpdGVfbGlua2AgaXMgYSBjYWxsZXIuIE9yIG90aGVyIGNhbGxlcnMgcGVyaGFwcy4gTm93LCBsZXQncyBzZWUsIGBydHc4OV93b3dfcGFyc2VfYWttYCBpcyBjYWxsaW5nIGBfX3J0dzg5X3dvd19wYXJzZV9ha21gLiBPa2F5LCB0aGF0J3MgZmluZS5cblxuUmlnaHQsIGJhY2sgdG8gdGhlIG1haW4gcXVlc3Rpb24uIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gYHJ0dzg5X2NvcmVfdHhfd3JpdGVfbGlua2AgdG8gc2VlIHdoZXJlICppdCogZ2V0cyBjYWxsZWQuIFRoYXQgd2lsbCB0ZWxsIG1lIHdoaWNoIHBhcnQgb2YgdGhlIGRyaXZlciBpcyB0cmlnZ2VyaW5nIHRoaXMgYmVoYXZpb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNzk3LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjQxOjI1LjgwMzIxNzAwMloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA4MzQzODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X2NvcmVfdHhfd3JpdGVfbGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTEzMzY9aW50IHJ0dzg5X2gyY190eChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0xMzc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjEzNzc6c3RhdGljIGludCBydHc4OV9jb3JlX3R4X3dyaXRlX2xpbmsoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTEzNzgtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbmssXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz0xNDE2PWludCBydHc4OV9jb3JlX3R4X3dyaXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTE0MzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MTQ0MDpcXHRyZXR1cm4gcnR3ODlfY29yZV90eF93cml0ZV9saW5rKHJ0d2RldiwgcnR3dmlmX2xpbmssIHJ0d3N0YV9saW5rLCBza2IsIHFzZWwsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTE0NDEtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9NDkyNj1pbnQgcnR3ODlfY29yZV9zZW5kX251bGxmdW5jKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluayxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQ5NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDk3NTpcXHRyZXQgPSBydHc4OV9jb3JlX3R4X3dyaXRlX2xpbmsocnR3ZGV2LCBydHd2aWZfbGluaywgcnR3c3RhX2xpbmssIHNrYiwgXFx1MDAyNnFzZWwsIHdhaXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQ5NzYtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo0MToyNi4zMTE1Njc3OTFaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDY3NzIzNzE4ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGl2aW5nIGludG8gdGhlIHJ0dzg5IFdpcmVsZXNzIERyaXZlcioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBmbG93LCBlc3BlY2lhbGx5IGFyb3VuZCB0cmFuc21pdCBvcGVyYXRpb25zIHdpdGhpbiB0aGUgYHJ0dzg5YCBkcml2ZXIsIHNvIEknbSBnb2luZyB0byBzdGFydCBieSBleGFtaW5pbmcgdHdvIGtleSBhcmVhcy4gRmlyc3QsIEknbGwgYmUgZGlnZ2luZyBpbnRvIGBydHc4OV9jb3JlX3R4X3dyaXRlYCwgYmVjYXVzZSB0aGF0IGxpa2VseSBoYW5kbGVzIHRoZSBjb3JlIHdyaXRpbmcgb2YgdHJhbnNtaXQgZGF0YSB3aXRoaW4gdGhlIGRyaXZlci4gU2Vjb25kLCBJJ2xsIG1vdmUgb24gdG8gYHJ0dzg5X29wc2AgdG8gc2VlIHdoaWNoIG1hYzgwMjExIG9wZXJhdGlvbnMgdGhpcyBkcml2ZXIgYWN0dWFsbHkgZXhwb3J0cy4gVW5kZXJzdGFuZGluZyB0aGUgb3BlcmF0aW9ucyBpdCBwcm92aWRlcyB3aWxsIGhlbHAgbWUgYnVpbGQgdXAgYSBtb3JlIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLiBJIGV4cGVjdCBJJ2xsIGZpbmQgYSBjbGVhciBtYXBwaW5nIG9mIHRoZSBkcml2ZXIncyB0cmFuc21pdCBjYXBhYmlsaXRpZXMgdG8gdGhlIG1hYzgwMjExIGludGVyZmFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ3OTAsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo0MjoxMy4wODM5NDMxMDhaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NTM5ODk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTc1NDA9c3RydWN0IHJ0dzg5X2RldiAqcnR3ODlfYWxsb2NfaWVlZTgwMjExX2h3KHN0cnVjdCBkZXZpY2UgKmRldmljZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTc1NTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NzU2MDpcXHRvcHMgPSBrbWVtZHVwKFxcdTAwMjZydHc4OV9vcHMsIHNpemVvZihydHc4OV9vcHMpLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy03NTYxLVxcdGlmICghb3BzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9MzM9c3RydWN0IHJ0dzg5X2Z3X2NtZF9vZmxkX2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzU6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIHJ0dzg5X29wcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTk6c3RhdGljIHZvaWQgcnR3ODlfb3BzX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0yMC1cXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV90eF9jb250cm9sICpjb250cm9sLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo0ODpzdGF0aWMgdm9pZCBydHc4OV9vcHNfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNDktXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjU3OnN0YXRpYyBpbnQgcnR3ODlfb3BzX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy01OC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjY2OnN0YXRpYyB2b2lkIHJ0dzg5X29wc19zdG9wKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBib29sIHN1c3BlbmQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy03NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6NzU6c3RhdGljIGludCBydHc4OV9vcHNfY29uZmlnKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBpbnQgcmFkaW9faWR4LCB1MzIgY2hhbmdlZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNzYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTA3OnN0YXRpYyBpbnQgX19ydHc4OV9vcHNfYWRkX2lmYWNlX2xpbmsoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMDgtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHJ0dzg5X3ZpZl9saW5rICpydHd2aWZfbGluaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE1MDpzdGF0aWMgdm9pZCBfX3J0dzg5X29wc19yZW1vdmVfaWZhY2VfbGluayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE1MS1cXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBydHc4OV92aWZfbGluayAqcnR3dmlmX2xpbmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNjk6c3RhdGljIGludCBydHc4OV9vcHNfYWRkX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTcwLVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMjIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMjM6XFx0cmV0ID0gX19ydHc4OV9vcHNfYWRkX2lmYWNlX2xpbmsocnR3ZGV2LCBydHd2aWZfbGluayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTIyNC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTI0Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjQzOnN0YXRpYyB2b2lkIHJ0dzg5X29wc19yZW1vdmVfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0yNDQtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMjY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyNjc6XFx0X19ydHc4OV9vcHNfcmVtb3ZlX2lmYWNlX2xpbmsocnR3ZGV2LCBydHd2aWZfbGluayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTI2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0yODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjI4MjpzdGF0aWMgaW50IHJ0dzg5X29wc19jaGFuZ2VfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0yODMtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0yOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjI5NDpcXHRydHc4OV9vcHNfcmVtb3ZlX2ludGVyZmFjZShodywgdmlmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMjk1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTI5OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6Mjk5OlxcdHJldCA9IHJ0dzg5X29wc19hZGRfaW50ZXJmYWNlKGh3LCB2aWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0zMDAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0zMDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjMwODpzdGF0aWMgdm9pZCBydHc4OV9vcHNfY29uZmlndXJlX2ZpbHRlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMzA5LVxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgY2hhbmdlZF9mbGFncyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz00Nzk9c3RhdGljIHZvaWQgcnR3ODlfY29uZl90eChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNDg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo0ODg6c3RhdGljIGludCBfX3J0dzg5X29wc19zdGFfYWRkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNDg5LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTU1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6NTUyOnN0YXRpYyBpbnQgX19ydHc4OV9vcHNfc3RhX2Fzc29jKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNTUzLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTU4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6NTgyOnN0YXRpYyBpbnQgX19ydHc4OV9vcHNfc3RhX2Rpc2Fzc29jKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNTgzLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTYwOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6NjA5OnN0YXRpYyBpbnQgX19ydHc4OV9vcHNfc3RhX2Rpc2Nvbm5lY3Qoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy02MTAtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy02MzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjYzMzpzdGF0aWMgaW50IF9fcnR3ODlfb3BzX3N0YV9yZW1vdmUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy02MzQtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jPTY2MT1zdGF0aWMgdm9pZCBydHc4OV9zdGF0aW9uX21vZGVfc3RhX2Fzc29jKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy02NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjY3NTpcXHRfX3J0dzg5X29wc19zdGFfYXNzb2MocnR3ZGV2LCB2aWYsIHN0YSwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTY3Ni19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTY3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6Njc4OnN0YXRpYyB2b2lkIF9fcnR3ODlfb3BzX2Jzc19saW5rX2Fzc29jKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNjc5LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcnR3ODlfdmlmX2xpbmsgKnJ0d3ZpZl9saW5rKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTY4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6Njg4OnN0YXRpYyB2b2lkIF9fcnR3ODlfb3BzX2Jzc19hc3NvYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTY4OS1cXHRcXHRcXHRcXHQgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNjk1LVxcdHJ0dzg5X3ZpZl9mb3JfZWFjaF9saW5rKHJ0d3ZpZiwgcnR3dmlmX2xpbmssIGxpbmtfaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjY5NjpcXHRcXHRfX3J0dzg5X29wc19ic3NfbGlua19hc3NvYyhydHdkZXYsIHJ0d3ZpZl9saW5rKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNjk3LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNjk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo2OTk6c3RhdGljIHZvaWQgcnR3ODlfb3BzX3ZpZl9jZmdfY2hhbmdlZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNzAwLVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsIHU2NCBjaGFuZ2VkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTcxMS1cXHRcXHRcXHRydHc4OV9zdGF0aW9uX21vZGVfc3RhX2Fzc29jKHJ0d2RldiwgdmlmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6NzEyOlxcdFxcdFxcdF9fcnR3ODlfb3BzX2Jzc19hc3NvYyhydHdkZXYsIHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTcxMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy03NDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjc1MDpzdGF0aWMgdm9pZCBydHc4OV9vcHNfbGlua19pbmZvX2NoYW5nZWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTc1MS1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTc5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6ODAwOnN0YXRpYyBpbnQgcnR3ODlfb3BzX3N0YXJ0X2FwKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy04MDEtXFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz04NDc9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjg0ODp2b2lkIHJ0dzg5X29wc19zdG9wX2FwKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy04NDktXFx0XFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmxpbmtfY29uZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy04NzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjg3MzpzdGF0aWMgaW50IHJ0dzg5X29wc19zZXRfdGltKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy04NzQtXFx0XFx0XFx0ICAgICBib29sIHNldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy04ODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjg4NzpzdGF0aWMgaW50IHJ0dzg5X29wc19jb25mX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy04ODgtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTkxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6OTE0OnN0YXRpYyBpbnQgX19ydHc4OV9vcHNfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy05MTUtXFx0XFx0XFx0XFx0IHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtOTIzLVxcdCAgICBuZXdfc3RhdGUgPT0gSUVFRTgwMjExX1NUQV9OT05FKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo5MjQ6XFx0XFx0cmV0dXJuIF9fcnR3ODlfb3BzX3N0YV9hZGQocnR3ZGV2LCB2aWYsIHN0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTkyNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy05MjktXFx0XFx0XFx0cmV0dXJuIDA7IC8qIGRlZmVyIHRvIGJzc19pbmZvX2NoYW5nZWQgdG8gaGF2ZSB2aWYgaW5mbyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo5MzA6XFx0XFx0cmV0dXJuIF9fcnR3ODlfb3BzX3N0YV9hc3NvYyhydHdkZXYsIHZpZiwgc3RhLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTkzMS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtOTM0LVxcdCAgICBuZXdfc3RhdGUgPT0gSUVFRTgwMjExX1NUQV9BVVRIKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo5MzU6XFx0XFx0cmV0dXJuIF9fcnR3ODlfb3BzX3N0YV9kaXNhc3NvYyhydHdkZXYsIHZpZiwgc3RhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtOTM2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTkzOC1cXHQgICAgbmV3X3N0YXRlID09IElFRUU4MDIxMV9TVEFfTk9ORSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6OTM5OlxcdFxcdHJldHVybiBfX3J0dzg5X29wc19zdGFfZGlzY29ubmVjdChydHdkZXYsIHZpZiwgc3RhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtOTQwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTk0Mi1cXHQgICAgbmV3X3N0YXRlID09IElFRUU4MDIxMV9TVEFfTk9URVhJU1QpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjk0MzpcXHRcXHRyZXR1cm4gX19ydHc4OV9vcHNfc3RhX3JlbW92ZShydHdkZXYsIHZpZiwgc3RhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtOTQ0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTk0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6OTQ4OnN0YXRpYyBpbnQgcnR3ODlfb3BzX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtOTQ5LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTk1OC1cXHRydHc4OV9sZWF2ZV9wc19tb2RlKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjk1OTpcXHRyZXR1cm4gX19ydHc4OV9vcHNfc3RhX3N0YXRlKGh3LCB2aWYsIHN0YSwgb2xkX3N0YXRlLCBuZXdfc3RhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy05NjAtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy05NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjk2MjpzdGF0aWMgaW50IHJ0dzg5X29wc19zZXRfa2V5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBlbnVtIHNldF9rZXlfY21kIGNtZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtOTYzLVxcdFxcdFxcdCAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMDAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxMDAxOnN0YXRpYyBpbnQgcnR3ODlfb3BzX2FtcGR1X2FjdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTAwMi1cXHRcXHRcXHRcXHQgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTA1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTA1MzpzdGF0aWMgaW50IHJ0dzg5X29wc19zZXRfcnRzX3RocmVzaG9sZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IHJhZGlvX2lkeCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTA1NC1cXHRcXHRcXHRcXHQgICAgICAgdTMyIHZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEwNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjEwNjc6c3RhdGljIHZvaWQgcnR3ODlfb3BzX3N0YV9zdGF0aXN0aWNzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMDY4LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz0xMDg0PXZvaWQgX19ydHc4OV9kcm9wX3BhY2tldHMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEwOTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjEwOTc6c3RhdGljIHZvaWQgcnR3ODlfb3BzX2ZsdXNoKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMDk4LVxcdFxcdFxcdCAgICB1MzIgcXVldWVzLCBib29sIGRyb3ApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM9MTEzOT1zdGF0aWMgdm9pZCBydHc4OV9yYV9tYXNrX2luZm9fdXBkYXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMTUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxMTUxOnN0YXRpYyBpbnQgcnR3ODlfb3BzX3NldF9iaXRyYXRlX21hc2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTExNTItXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz0xMTY1PXN0YXRpY1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxMTY2OmludCBydHc4OV9vcHNfc2V0X2FudGVubmEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGludCByYWRpb19pZHgsIHUzMiB0eF9hbnQsIHUzMiByeF9hbnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTExNjcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jPTExOTM9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjExOTQ6aW50IHJ0dzg5X29wc19nZXRfYW50ZW5uYShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IHJhZGlvX2lkeCwgdTMyICp0eF9hbnQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTExOTUtXFx0XFx0XFx0ICB1MzIgKnJ4X2FudClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMjA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxMjA2OnN0YXRpYyB2b2lkIHJ0dzg5X29wc19zd19zY2FuX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMjA3LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEyMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjEyMjc6c3RhdGljIHZvaWQgcnR3ODlfb3BzX3N3X3NjYW5fY29tcGxldGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEyMjgtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTI0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTI0NTpzdGF0aWMgdm9pZCBydHc4OV9vcHNfcmVjb25maWdfY29tcGxldGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEyNDYtXFx0XFx0XFx0XFx0XFx0ZW51bSBpZWVlODAyMTFfcmVjb25maWdfdHlwZSByZWNvbmZpZ190eXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEyNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjEyNTQ6c3RhdGljIGludCBydHc4OV9vcHNfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTI1NS1cXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfc2Nhbl9yZXF1ZXN0ICpyZXEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTI5OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTI5OTpzdGF0aWMgdm9pZCBydHc4OV9vcHNfY2FuY2VsX2h3X3NjYW4oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEzMDAtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEzMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjEzMjM6c3RhdGljIHZvaWQgcnR3ODlfb3BzX3N0YV9yY191cGRhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEzMjQtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTMzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTMzOTpzdGF0aWMgaW50IHJ0dzg5X29wc19hZGRfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTM0MC1cXHRcXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV9jaGFuY3R4X2NvbmYgKmN0eClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMzQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxMzQ5OnN0YXRpYyB2b2lkIHJ0dzg5X29wc19yZW1vdmVfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTM1MC1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eF9jb25mICpjdHgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTM1OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTM1OTpzdGF0aWMgdm9pZCBydHc4OV9vcHNfY2hhbmdlX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEzNjAtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHhfY29uZiAqY3R4LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEzNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjEzNzA6c3RhdGljIGludCBydHc4OV9vcHNfYXNzaWduX3ZpZl9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xMzcxLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTM5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTM5MjpzdGF0aWMgdm9pZCBydHc4OV9vcHNfdW5hc3NpZ25fdmlmX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTEzOTMtXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz0xNDE0PXN0YXRpY1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNDE1OmludCBydHc4OV9vcHNfc3dpdGNoX3ZpZl9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNDE2LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZl9jaGFuY3R4X3N3aXRjaCAqdmlmcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNDYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNDYyOnN0YXRpYyB2b2lkIHJ0dzg5X29wc19jaGFubmVsX3N3aXRjaF9iZWFjb24oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE0NjMtXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTQ4MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTQ4MTpzdGF0aWMgaW50IHJ0dzg5X29wc19yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTQ4Mi1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNTE3OnN0YXRpYyBpbnQgcnR3ODlfb3BzX2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTUxOC1cXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jPTE1MzU9c3RhdGljIHZvaWQgcnR3ODlfc2V0X3RpZF9jb25maWdfaXRlcih2b2lkICpkYXRhLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE1NDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE1NDQ6c3RhdGljIGludCBydHc4OV9vcHNfc2V0X3RpZF9jb25maWcoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE1NDUtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM9MTU2Mz1zdGF0aWMgYm9vbCBydHc4OV9jYW5fd29ya19vbl9saW5rcyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTU3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTU3NjpzdGF0aWMgYm9vbCBydHc4OV9vcHNfY2FuX2FjdGl2YXRlX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNTc3LVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE2MDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE2MDY6c3RhdGljIHZvaWQgX19ydHc4OV9vcHNfY2xyX3ZpZl9saW5rcyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE2MDctXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHJ0dzg5X3ZpZiAqcnR3dmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE2MTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE2MjA6XFx0XFx0X19ydHc4OV9vcHNfcmVtb3ZlX2lmYWNlX2xpbmsocnR3ZGV2LCBydHd2aWZfbGluayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE2MjEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTYyNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTYyNjpzdGF0aWMgaW50IF9fcnR3ODlfb3BzX3NldF92aWZfbGlua3Moc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNjI3LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHJ0dzg5X3ZpZiAqcnR3dmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE2MzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE2Mzk6XFx0XFx0cmV0ID0gX19ydHc4OV9vcHNfYWRkX2lmYWNlX2xpbmsocnR3ZGV2LCBydHd2aWZfbGluayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE2NDAtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jPTE2Nzg9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE2Nzk6aW50IHJ0dzg5X29wc19jaGFuZ2VfdmlmX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNjgwLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE3MjEtXFx0aWYgKCFvbGRfbGlua3MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE3MjI6XFx0XFx0X19ydHc4OV9vcHNfY2xyX3ZpZl9saW5rcyhydHdkZXYsIHJ0d3ZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTcyMy1cXHRcXHRcXHRcXHRcXHQgIEJJVChSVFc4OV9WSUZfSURMRV9MSU5LX0lEKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE3MjQtXFx0ZWxzZSBpZiAoY2xyX2xpbmtzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNzI1OlxcdFxcdF9fcnR3ODlfb3BzX2Nscl92aWZfbGlua3MocnR3ZGV2LCBydHd2aWYsIGNscl9saW5rcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE3MjYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTc0MC1cXHRpZiAoc2V0X2xpbmtzKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE3NDE6XFx0XFx0cmV0ID0gX19ydHc4OV9vcHNfc2V0X3ZpZl9saW5rcyhydHdkZXYsIHJ0d3ZpZiwgc2V0X2xpbmtzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTc0Mi1cXHRcXHRpZiAocmV0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxNzQzOlxcdFxcdFxcdF9fcnR3ODlfb3BzX2Nscl92aWZfbGlua3MocnR3ZGV2LCBydHd2aWYsIHNldF9saW5rcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE3NDQtXFx0fSBlbHNlIGlmICghbmV3X2xpbmtzKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE3NDU6XFx0XFx0cmV0ID0gX19ydHc4OV9vcHNfc2V0X3ZpZl9saW5rcyhydHdkZXYsIHJ0d3ZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTc0Ni1cXHRcXHRcXHRcXHRcXHRcXHRCSVQoUlRXODlfVklGX0lETEVfTElOS19JRCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNzQ3LVxcdFxcdGlmIChyZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE3NDg6XFx0XFx0XFx0X19ydHc4OV9vcHNfY2xyX3ZpZl9saW5rcyhydHdkZXYsIHJ0d3ZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTc0OS1cXHRcXHRcXHRcXHRcXHRcXHQgIEJJVChSVFc4OV9WSUZfSURMRV9MSU5LX0lEKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTc1OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTc1OTpzdGF0aWMgdm9pZCBfX3J0dzg5X29wc19jbHJfc3RhX2xpbmtzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTc2MC1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgcnR3ODlfc3RhICpydHdzdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTc4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTc4MjpzdGF0aWMgaW50IF9fcnR3ODlfb3BzX3NldF9zdGFfbGlua3Moc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xNzgzLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHJ0dzg5X3N0YSAqcnR3c3RhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE4MTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE4MTU6XFx0XFx0X19ydHc4OV9vcHNfYnNzX2xpbmtfYXNzb2MocnR3ZGV2LCBydHd2aWZfbGluayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE4MTYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM9MTgzNT1zdGF0aWNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTgzNjppbnQgcnR3ODlfb3BzX2NoYW5nZV9zdGFfbGlua3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE4MzctXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTg1OC1cXHRpZiAoY2xyX2xpbmtzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxODU5OlxcdFxcdF9fcnR3ODlfb3BzX2Nscl9zdGFfbGlua3MocnR3ZGV2LCBydHdzdGEsIGNscl9saW5rcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE4NjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE4NjEtXFx0aWYgKHNldF9saW5rcykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxODYyOlxcdFxcdHJldCA9IF9fcnR3ODlfb3BzX3NldF9zdGFfbGlua3MocnR3ZGV2LCBydHdzdGEsIHNldF9saW5rcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE4NjMtXFx0XFx0aWYgKHJldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTg2NDpcXHRcXHRcXHRfX3J0dzg5X29wc19jbHJfc3RhX2xpbmtzKHJ0d2RldiwgcnR3c3RhLCBzZXRfbGlua3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xODY1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xODcwLSNpZmRlZiBDT05GSUdfUE1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTg3MTpzdGF0aWMgaW50IHJ0dzg5X29wc19zdXNwZW5kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xODcyLVxcdFxcdFxcdCAgICAgc3RydWN0IGNmZzgwMjExX3dvd2xhbiAqd293bGFuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE4OTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE4OTM6c3RhdGljIGludCBydHc4OV9vcHNfcmVzdW1lKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xODk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xOTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxOTEzOnN0YXRpYyB2b2lkIHJ0dzg5X29wc19zZXRfd2FrZXVwKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBib29sIGVuYWJsZWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE5MTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jPTE5MjA9c3RhdGljIHZvaWQgcnR3ODlfc2V0X3Jla2V5X2RhdGEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMTk0MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTk0MTpzdGF0aWMgaW50IHJ0dzg5X29wc19nZXRfc3VydmV5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBpbnQgaWR4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xOTQyLVxcdFxcdFxcdFxcdHN0cnVjdCBzdXJ2ZXlfaW5mbyAqc3VydmV5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTE5NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5NzU6c3RhdGljIHZvaWQgcnR3ODlfb3BzX3Jma2lsbF9wb2xsKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xOTc2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0xOTg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxOTg4OmNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIHJ0dzg5X29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTk4OTpcXHQudHhcXHRcXHRcXHQ9IHJ0dzg5X29wc190eCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTk5MDpcXHQud2FrZV90eF9xdWV1ZVxcdFxcdD0gcnR3ODlfb3BzX3dha2VfdHhfcXVldWUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5OTE6XFx0LnN0YXJ0XFx0XFx0XFx0PSBydHc4OV9vcHNfc3RhcnQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5OTI6XFx0LnN0b3BcXHRcXHRcXHQ9IHJ0dzg5X29wc19zdG9wLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxOTkzOlxcdC5jb25maWdcXHRcXHRcXHQ9IHJ0dzg5X29wc19jb25maWcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5OTQ6XFx0LmFkZF9pbnRlcmZhY2VcXHRcXHQ9IHJ0dzg5X29wc19hZGRfaW50ZXJmYWNlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxOTk1OlxcdC5jaGFuZ2VfaW50ZXJmYWNlICAgICAgID0gcnR3ODlfb3BzX2NoYW5nZV9pbnRlcmZhY2UsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjE5OTY6XFx0LnJlbW92ZV9pbnRlcmZhY2VcXHQ9IHJ0dzg5X29wc19yZW1vdmVfaW50ZXJmYWNlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxOTk3OlxcdC5jb25maWd1cmVfZmlsdGVyXFx0PSBydHc4OV9vcHNfY29uZmlndXJlX2ZpbHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MTk5ODpcXHQudmlmX2NmZ19jaGFuZ2VkXFx0PSBydHc4OV9vcHNfdmlmX2NmZ19jaGFuZ2VkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoxOTk5OlxcdC5saW5rX2luZm9fY2hhbmdlZFxcdD0gcnR3ODlfb3BzX2xpbmtfaW5mb19jaGFuZ2VkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDAwOlxcdC5zdGFydF9hcFxcdFxcdD0gcnR3ODlfb3BzX3N0YXJ0X2FwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDAxOlxcdC5zdG9wX2FwXFx0XFx0PSBydHc4OV9vcHNfc3RvcF9hcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAwMjpcXHQuc2V0X3RpbVxcdFxcdD0gcnR3ODlfb3BzX3NldF90aW0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMDM6XFx0LmNvbmZfdHhcXHRcXHQ9IHJ0dzg5X29wc19jb25mX3R4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDA0OlxcdC5zdGFfc3RhdGVcXHRcXHQ9IHJ0dzg5X29wc19zdGFfc3RhdGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMDU6XFx0LnNldF9rZXlcXHRcXHQ9IHJ0dzg5X29wc19zZXRfa2V5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDA2OlxcdC5hbXBkdV9hY3Rpb25cXHRcXHQ9IHJ0dzg5X29wc19hbXBkdV9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMDc6XFx0LmdldF9zdXJ2ZXlcXHRcXHQ9IHJ0dzg5X29wc19nZXRfc3VydmV5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDA4OlxcdC5zZXRfcnRzX3RocmVzaG9sZFxcdD0gcnR3ODlfb3BzX3NldF9ydHNfdGhyZXNob2xkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDA5OlxcdC5zdGFfc3RhdGlzdGljc1xcdFxcdD0gcnR3ODlfb3BzX3N0YV9zdGF0aXN0aWNzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDEwOlxcdC5mbHVzaFxcdFxcdFxcdD0gcnR3ODlfb3BzX2ZsdXNoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDExOlxcdC5zZXRfYml0cmF0ZV9tYXNrXFx0PSBydHc4OV9vcHNfc2V0X2JpdHJhdGVfbWFzayxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAxMjpcXHQuc2V0X2FudGVubmFcXHRcXHQ9IHJ0dzg5X29wc19zZXRfYW50ZW5uYSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAxMzpcXHQuZ2V0X2FudGVubmFcXHRcXHQ9IHJ0dzg5X29wc19nZXRfYW50ZW5uYSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAxNDpcXHQuc3dfc2Nhbl9zdGFydFxcdFxcdD0gcnR3ODlfb3BzX3N3X3NjYW5fc3RhcnQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMTU6XFx0LnN3X3NjYW5fY29tcGxldGVcXHQ9IHJ0dzg5X29wc19zd19zY2FuX2NvbXBsZXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDE2OlxcdC5yZWNvbmZpZ19jb21wbGV0ZVxcdD0gcnR3ODlfb3BzX3JlY29uZmlnX2NvbXBsZXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDE3OlxcdC5od19zY2FuXFx0XFx0PSBydHc4OV9vcHNfaHdfc2NhbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAxODpcXHQuY2FuY2VsX2h3X3NjYW5cXHRcXHQ9IHJ0dzg5X29wc19jYW5jZWxfaHdfc2NhbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAxOTpcXHQuYWRkX2NoYW5jdHhcXHRcXHQ9IHJ0dzg5X29wc19hZGRfY2hhbmN0eCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAyMDpcXHQucmVtb3ZlX2NoYW5jdHhcXHRcXHQ9IHJ0dzg5X29wc19yZW1vdmVfY2hhbmN0eCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAyMTpcXHQuY2hhbmdlX2NoYW5jdHhcXHRcXHQ9IHJ0dzg5X29wc19jaGFuZ2VfY2hhbmN0eCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAyMjpcXHQuYXNzaWduX3ZpZl9jaGFuY3R4XFx0PSBydHc4OV9vcHNfYXNzaWduX3ZpZl9jaGFuY3R4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDIzOlxcdC51bmFzc2lnbl92aWZfY2hhbmN0eFxcdD0gcnR3ODlfb3BzX3VuYXNzaWduX3ZpZl9jaGFuY3R4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDI0OlxcdC5zd2l0Y2hfdmlmX2NoYW5jdHhcXHQ9IHJ0dzg5X29wc19zd2l0Y2hfdmlmX2NoYW5jdHgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwMjU6XFx0LmNoYW5uZWxfc3dpdGNoX2JlYWNvblxcdD0gcnR3ODlfb3BzX2NoYW5uZWxfc3dpdGNoX2JlYWNvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAyNjpcXHQucmVtYWluX29uX2NoYW5uZWxcXHRcXHQ9IHJ0dzg5X29wc19yZW1haW5fb25fY2hhbm5lbCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAyNzpcXHQuY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsXFx0PSBydHc4OV9vcHNfY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDI4OlxcdC5zZXRfc2FyX3NwZWNzXFx0XFx0PSBydHc4OV9vcHNfc2V0X3Nhcl9zcGVjcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAyOTpcXHQubGlua19zdGFfcmNfdXBkYXRlXFx0PSBydHc4OV9vcHNfc3RhX3JjX3VwZGF0ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAzMDpcXHQuc2V0X3RpZF9jb25maWdcXHRcXHQ9IHJ0dzg5X29wc19zZXRfdGlkX2NvbmZpZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAzMTpcXHQuY2FuX2FjdGl2YXRlX2xpbmtzXFx0PSBydHc4OV9vcHNfY2FuX2FjdGl2YXRlX2xpbmtzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDMyOlxcdC5jaGFuZ2VfdmlmX2xpbmtzXFx0PSBydHc4OV9vcHNfY2hhbmdlX3ZpZl9saW5rcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAzMzpcXHQuY2hhbmdlX3N0YV9saW5rc1xcdD0gcnR3ODlfb3BzX2NoYW5nZV9zdGFfbGlua3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTIwMzQtI2lmZGVmIENPTkZJR19QTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDM1OlxcdC5zdXNwZW5kXFx0XFx0PSBydHc4OV9vcHNfc3VzcGVuZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6MjAzNjpcXHQucmVzdW1lXFx0XFx0XFx0PSBydHc4OV9vcHNfcmVzdW1lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDM3OlxcdC5zZXRfd2FrZXVwXFx0XFx0PSBydHc4OV9vcHNfc2V0X3dha2V1cCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtMjAzOC1cXHQuc2V0X3Jla2V5X2RhdGFcXHRcXHQ9IHJ0dzg5X3NldF9yZWtleV9kYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0yMDM5LSNlbmRpZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzoyMDQwOlxcdC5yZmtpbGxfcG9sbFxcdFxcdD0gcnR3ODlfb3BzX3Jma2lsbF9wb2xsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy0yMDQxLX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jOjIwNDI6RVhQT1JUX1NZTUJPTChydHc4OV9vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zYXIuYz00MTI9Y29uc3Qgc3RydWN0IGNmZzgwMjExX3Nhcl9jYXBhIHJ0dzg5X3Nhcl9jYXBhID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zYXIuYy00MTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zYXIuYzo0MTg6aW50IHJ0dzg5X29wc19zZXRfc2FyX3NwZWNzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvc2FyLmMtNDE5LVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgY2ZnODAyMTFfc2FyX3NwZWNzICpzYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3Nhci5oPTMzPWludCBydHc4OV9wcmludF90YXMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zYXIuaDozNDppbnQgcnR3ODlfb3BzX3NldF9zYXJfc3BlY3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9zYXIuaC0zNS1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGNmZzgwMjExX3Nhcl9zcGVjcyAqc2FyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6NDI6MTMuMTMzNDg3NDA2WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjcxMTU2NzA0MDU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIFJlYWx0ZWsgcnR3ODkgV2lyZWxlc3MgRHJpdmVyIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEZpcnN0LCBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQuIExvb2tzIGxpa2UgYF9fcnR3ODlfd293X3BhcnNlX2FrbWAgaXMgYSBub24tc3RhdGljLCBleHBvcnRlZCBmdW5jdGlvbiwgd2hpY2ggaXMgcHJvbWlzaW5nIGZvciBwb3RlbnRpYWwgZnV6emluZywgYWxvbmdzaWRlIHRoZSBSWCBlbnRyeXBvaW50IGBydHc4OV9jb3JlX3J4YCBhbmQgYHJ0dzg5X2NvcmVfdHhfd3JpdGVgIChvciBgcnR3ODlfY29yZV90eF93cml0ZV9saW5rYCkgZm9yIFRYIGZyYW1lcy4gVGhlcmUncyBhbHNvIGBydHc4OV9vcHNfdHhgIGluIGBtYWM4MDIxMS5jYCwgYW5kIHdoaWxlIGBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4YCBpcyBzdGF0aWMsIGl0J3Mgc3RpbGwgcmVsZXZhbnQgZHVlIHRvIGl0cyBpbnZvbHZlbWVudCBpbiB0aGUgdnVsbmVyYWJpbGl0eS4gRG91YmxlIGNoZWNraW5nOiBgX19ydHc4OV93b3dfcGFyc2VfYWttYCBpcyBkZWZpbmVkIGFzIGV4cGVjdGVkLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IGlzIHRoaXMgZnV6emFibGU/IFRoZSBwYXRjaCBmb2N1c2VzIG9uIGxlbmd0aCBib3VuZCBjaGVja3Mgd2l0aGluIGBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4YCBhbmQgYF9fcnR3ODlfd293X3BhcnNlX2FrbWAgd2hlbiBjYWxsaW5nIGBjZmc4MDIxMV9maW5kX2llYC4gV2l0aG91dCB0aGUgZml4LCB0aGUgYGNmZzgwMjExX2ZpbmRfaWVgIGZ1bmN0aW9uIHJlY2VpdmVzIGFuIGluY29ycmVjdCBsZW5ndGggZm9yIHRoZSBJRSBidWZmZXIsIHN0YXJ0aW5nIGF0IG9mZnNldCBgaGRyX2xlbmAsIGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBvciBldmVuIHVuZGVyZmxvd3MuIFRoaXMgdnVsbmVyYWJpbGl0eSBpcyByZWFjaGFibGUgdmlhIFJYIChgcnR3ODlfY29yZV9yeGAgY2hhaW4pIGFuZCBUWCAoYHJ0dzg5X2NvcmVfdHhfd3JpdGVfbGlua2AgY2hhaW4pIHBhdGhzLCB3aGljaCwgaW4gdGhlIHJ0dzg5IGRyaXZlciwgY2FuIGJlIGVtdWxhdGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoZXJlZm9yZSwgKldvcnRoRnV6emluZyogbXVzdCBiZSBzZXQgdG8gYHRydWVgLlxuXG5OZXh0LCBJIG5lZWQgdG8gZW5zdXJlIHRoZSBwcm9wZXIgY29uZmlndXJhdGlvbnMuIGBSVFc4OWAgaXMgYSB0cmlzdGF0ZSwgZGVwZW5kaW5nIG9uIGBNQUM4MDIxMWAsIHdoaWNoIGl0c2VsZiBkZXBlbmRzIG9uIGBORVRgLCBgV0lSRUxFU1NgLCBhbmQgYENGRzgwMjExYC4gSSBhbHNvIG5lZWQgYFJUVzg5X0NPUkVgLCBhbmQgZWl0aGVyIGEgVVNCIGRyaXZlciBsaWtlIGBSVFc4OV84ODUyQVVgIG9yIGEgUENJZSBkcml2ZXIsIGxpa2UgYFJUVzg5X1BDSWAsIGRlcGVuZGluZyBvbiB0aGUgdGFyZ2V0IGhhcmR3YXJlLiBUaGUgYFBNYCBjb25maWd1cmF0aW9uIGlzIGFsc28gZXNzZW50aWFsIGZvciBidWlsZGluZyBgd293LmNgIHdoaWNoIGluY2x1ZGVzIGBydHc4OV9jb3JlLSQoQ09ORklHX1BNKSArPSB3b3cub2AuIExvb2tpbmcgYXQgYFJUVzg5Xzg4NTJBVWAsIGl0IGRlcGVuZHMgb24gYFVTQmAgYW5kIHNlbGVjdHMgYFJUVzg5X0NPUkVgIGFuZCBgUlRXODlfVVNCYC5cblxuU28sIHRoZSAqRW5hYmxlQ29uZmlncyogc2hvdWxkIGJlOiBgTUFDODAyMTFgLCBgQ0ZHODAyMTFgLCBgUlRXODlgLCBgUlRXODlfQ09SRWAsIGBSVFc4OV9VU0JgLCBgUlRXODlfODg1MkFVYCAob3Igb25lIG9mIHRoZSBvdGhlcnMpLCBgUlRXODlfUENJYCAob3IgYW5vdGhlciBQQ0llIGNvbmZpZyksIGFuZCBgUE1gLlxuXG5Ob3csIGZvciAqRm9jdXNTeW1ib2xzKiwgSSdsbCBpbmNsdWRlIHRoZSBpZGVudGlmaWVkIHZ1bG5lcmFibGUgZnVuY3Rpb25zOiBgX19ydHc4OV93b3dfcGFyc2VfYWttYCwgYHJ0dzg5X2NvcmVfcnhgLCBhbmQgYHJ0dzg5X2NvcmVfdHhfd3JpdGVgIChvciBzaW1pbGFyKS5cblxuTGV0J3MgZG8gYSBmaW5hbCB2ZXJpZmljYXRpb24gdmlhIHBhdGNoIGRpZmYgcmV2aWV3LiBJbiBgY29yZS5jYCBmb3IgYHJ0dzg5X2NvcmVfY2FuY2VsXzZnaHpfcHJvYmVfdHhgLCB0aGUgcGF0Y2ggYWRkcyBgaWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIGhkcl9sZW4pIHJldHVybjtgIGFuZCBjb3JyZWN0cyB0aGUgbGVuZ3RoIHBhc3NlZCB0byBgY2ZnODAyMTFfZmluZF9pZWAuIEluIGB3b3cuY2AsIGBfX3J0dzg5X3dvd19wYXJzZV9ha21gIHJlY2VpdmVzIHRoZSBzYW1lIGZpeC4gQm90aCBwYXRjaGVzIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMuXG5cbkFscmlnaHQsIEknbSBjb25maWRlbnQgaW4gdGhlIGFuYWx5c2lzLiBUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoZXNlIGZpbmRpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTg0NSwiT3V0cHV0VG9rZW5zIjoyNzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjQzOjI0LjI5MDE5NDE2MVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3MjIzNDM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIlJUVzg5XCIsXG4gICAgXCJSVFc4OV9DT1JFXCIsXG4gICAgXCJSVFc4OV9VU0JcIixcbiAgICBcIlJUVzg5Xzg4NTJBVVwiLFxuICAgIFwiUlRXODlfUENJXCIsXG4gICAgXCJSVFc4OV84ODUyQUVcIixcbiAgICBcIlBNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19ydHc4OV93b3dfcGFyc2VfYWttXCIsXG4gICAgXCJydHc4OV9jb3JlX3J4XCIsXG4gICAgXCJydHc4OV9jb3JlX3R4X3dyaXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdGllcyBpbiBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KCkgYW5kIF9fcnR3ODlfd293X3BhcnNlX2FrbSgpIGJ5IHZhbGlkYXRpbmcgdGhhdCBza2ItXFx1MDAzZWxlbiBpcyBhdCBsZWFzdCB0aGUgaGVhZGVyIGxlbmd0aCBhbmQgcGFzc2luZyB0aGUgYWRqdXN0ZWQgaW5mb3JtYXRpb24gZWxlbWVudCBsZW5ndGggKHNrYi1cXHUwMDNlbGVuIC0gaGRyX2xlbikgdG8gY2ZnODAyMTFfZmluZF9pZSgpIGluc3RlYWQgb2YgdGhlIHVuYWRqdXN0ZWQgc2tiLVxcdTAwM2VsZW4uIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIFJYIGFuZCBUWCBwYWNrZXQgcHJvY2Vzc2luZyBvbiBydHc4OSBkZXZpY2VzICh3aGljaCBpbmNsdWRlIFVTQi1zdXBwb3J0ZWQgZGV2aWNlcyB0ZXN0YWJsZSB2aWEgVVNCIGVtdWxhdGlvbiBpbiB2aXJ0dWFsIGVudmlyb25tZW50cykuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJSVFc4OVwiLFxuICAgIFwiUlRXODlfQ09SRVwiLFxuICAgIFwiUlRXODlfVVNCXCIsXG4gICAgXCJSVFc4OV84ODUyQVVcIixcbiAgICBcIlJUVzg5X1BDSVwiLFxuICAgIFwiUlRXODlfODg1MkFFXCIsXG4gICAgXCJQTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fcnR3ODlfd293X3BhcnNlX2FrbVwiLFxuICAgIFwicnR3ODlfY29yZV9yeFwiLFxuICAgIFwicnR3ODlfY29yZV90eF93cml0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG91dC1vZi1ib3VuZHMgcmVhZCB2dWxuZXJhYmlsaXRpZXMgaW4gcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eCgpIGFuZCBfX3J0dzg5X3dvd19wYXJzZV9ha20oKSBieSB2YWxpZGF0aW5nIHRoYXQgc2tiLVxcdTAwM2VsZW4gaXMgYXQgbGVhc3QgdGhlIGhlYWRlciBsZW5ndGggYW5kIHBhc3NpbmcgdGhlIGFkanVzdGVkIGluZm9ybWF0aW9uIGVsZW1lbnQgbGVuZ3RoIChza2ItXFx1MDAzZWxlbiAtIGhkcl9sZW4pIHRvIGNmZzgwMjExX2ZpbmRfaWUoKSBpbnN0ZWFkIG9mIHRoZSB1bmFkanVzdGVkIHNrYi1cXHUwMDNlbGVuLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBSWCBhbmQgVFggcGFja2V0IHByb2Nlc3Npbmcgb24gcnR3ODkgZGV2aWNlcyAod2hpY2ggaW5jbHVkZSBVU0Itc3VwcG9ydGVkIGRldmljZXMgdGVzdGFibGUgdmlhIFVTQiBlbXVsYXRpb24gaW4gdmlydHVhbCBlbnZpcm9ubWVudHMpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo0MzoyNC4zNzc0MjU4ODdaIiwiU2VxIjozMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NzI5ODEwNjI3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjQzOjI0LjM3Nzg3ODIxN1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjI0NzI5NzY0ODkyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyAoT09CKSByZWFkIHZ1bG5lcmFiaWxpdHkgaW4gdGhlIHJ0dzg5IGRyaXZlciAoYm90aCBpbiBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4IGFuZCBfX3J0dzg5X3dvd19wYXJzZV9ha20pLiBQcmV2aW91c2x5LCB0aGUgZnVsbCBwYWNrZXQgbGVuZ3RoIChza2ItXFx1MDAzZWxlbikgd2FzIHBhc3NlZCB0byBjZmc4MDIxMV9maW5kX2llIGluc3RlYWQgb2YgdGhlIGxlbmd0aCBvZiB0aGUgaW5mb3JtYXRpb24gZWxlbWVudHMgKHNrYi1cXHUwMDNlbGVuIC0gaGRyX2xlbiksIGFuZCB0aGVyZSB3YXMgbm8gY2hlY2sgdmVyaWZ5aW5nIHRoYXQgc2tiLVxcdTAwM2VsZW4gXFx1MDAzZT0gaGRyX2xlbi4gVGhpcyBjb3VsZCBsZWFkIHRvIHJlYWRpbmcgdXAgdG8gaGRyX2xlbiBieXRlcyBwYXN0IHRoZSBlbmQgb2YgdGhlIHNrYiBkYXRhIGJ1ZmZlci5cXG5cXG5PdXQtb2YtYm91bmRzIGJ1ZmZlciByZWFkcyBhcmUgc3RhbmRhcmQgbWVtb3J5IHNhZmV0eSBidWdzIGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIHJlYWQgdW5pbml0aWFsaXplZCBtZW1vcnkgKHN0YWNrLCBoZWFwLCBvciBwYWdlIGFsbG9jYXRpb25zKSBvciBsZWFrIGtlcm5lbCBtZW1vcnkgdG8gdXNlcnNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzlhYmQ4NDQwOWFiMmQyNDI5OThlYTljNDRhZDA5NDU5ZTllZGQ1ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDMwIDE1OjA1OjMzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuY1xuaW5kZXggNjhkYWQ2MDkwZjg3ZS4uN2I0NjcxNWVhMTJkYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuY1xuQEAgLTI1MzIsOSArMjUzMiwxMSBAQCBzdGF0aWMgdm9pZCBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKHNrYik7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2tiLVx1MDAzZWRhdGE7XG4rXHRzaXplX3QgaGRyX2xlbiA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5iZWFjb24udmFyaWFibGUpO1xuIFx0c3RydWN0IGxpc3RfaGVhZCAqcGt0X2xpc3QgPSBydHdkZXYtXHUwMDNlc2Nhbl9pbmZvLnBrdF9saXN0O1xuIFx0c3RydWN0IHJ0dzg5X3BrdG9mbGRfaW5mbyAqaW5mbztcbiBcdGNvbnN0IHU4ICppZXMgPSBtZ210LVx1MDAzZXUuYmVhY29uLnZhcmlhYmxlLCAqc3NpZF9pZTtcbitcdHNpemVfdCBpZV9sZW47XG4gXHRib29sIHF1ZXVlX3dvcmsgPSBmYWxzZTtcbiBcbiBcdGlmIChyeF9zdGF0dXMtXHUwMDNlYmFuZCAhPSBOTDgwMjExX0JBTkRfNkdIWilcbkBAIC0yNTQ1LDcgKzI1NDcsMTIgQEAgc3RhdGljIHZvaWQgcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbi1cdHNzaWRfaWUgPSBjZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX1NTSUQsIGllcywgc2tiLVx1MDAzZWxlbik7XG4rXHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgaGRyX2xlbilcbitcdFx0cmV0dXJuO1xuK1xuK1x0aWVfbGVuID0gc2tiLVx1MDAzZWxlbiAtIGhkcl9sZW47XG4rXG4rXHRzc2lkX2llID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9TU0lELCBpZXMsIGllX2xlbik7XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGluZm8sIFx1MDAyNnBrdF9saXN0W05MODAyMTFfQkFORF82R0haXSwgbGlzdCkge1xuIFx0XHRpZiAoZXRoZXJfYWRkcl9lcXVhbChpbmZvLVx1MDAzZWJzc2lkLCBtZ210LVx1MDAzZWJzc2lkKSkge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3dvdy5jXG5pbmRleCA4ZGFkZDhkZjRmYzY1Li44MmI3NGRlZDY4NjMxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1xuQEAgLTE2LDEwICsxNiwxNiBAQCB2b2lkIF9fcnR3ODlfd293X3BhcnNlX2FrbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNrYi1cdTAwM2VkYXRhO1xuIFx0c3RydWN0IHJ0dzg5X3dvd19wYXJhbSAqcnR3X3dvdyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2V3b3c7XG4rXHRzaXplX3QgaGRyX2xlbiA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5hc3NvY19yZXEudmFyaWFibGUpO1xuIFx0Y29uc3QgdTggKnJzbiwgKmllcyA9IG1nbXQtXHUwMDNldS5hc3NvY19yZXEudmFyaWFibGU7XG4gXHRzdHJ1Y3QgcnR3ODlfcnNuX2llICpyc25faWU7XG4gXG4tXHRyc24gPSBjZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX1JTTiwgaWVzLCBza2ItXHUwMDNlbGVuKTtcbitcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBoZHJfbGVuKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRyc24gPSBjZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX1JTTiwgaWVzLFxuK1x0XHRcdCAgICAgICBza2ItXHUwMDNlbGVuIC0gaGRyX2xlbik7XG4rXG4gXHRpZiAoIXJzbilcbiBcdFx0cmV0dXJuO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6NDM6MjQuMzc3ODc5MTE3WiIsIlNlcSI6MzUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgzNTY1NzUzOTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaCBmb3IgUG90ZW50aWFsIE1lbW9yeSBTYWZldHkgSXNzdWVzKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIGZpZ3VyZSBvdXQgaXRzIHBvdGVudGlhbCBmb3IgaW50cm9kdWNpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIFNpbmNlIHdlJ3JlIGxvb2tpbmcgYXQgdGhpcyBmb3IgS01TQU4sIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQncyBhY3R1YWxseSB0b3VjaGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSAoTmVlZHNLTVNBTj10cnVlKSBvciBpZiBpdCdzIGp1c3QgZGVhbGluZyB3aXRoIG91dC1vZi1ib3VuZHMgYWNjZXNzIG9yIGJvdW5kcyBjaGVja2luZywgdGhpbmdzIGxpa2UgdGhhdCAoTmVlZHNLTVNBTj1mYWxzZSkuIExldCdzIHNlZS4uLlxuXG5BbHJpZ2h0LCB0aGUgcGF0Y2ggaXRzZWxmIG1vZGlmaWVzIHR3byBmdW5jdGlvbnMgd2l0aGluIHRoZSBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlcnM6IGBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4YCBpbiBgY29yZS5jYCBhbmQgYF9fcnR3ODlfd293X3BhcnNlX2FrbWAgaW4gYHdvdy5jYC4gRnJvbSB0aGUgZGlmZiwgaXQgbG9va3MgbGlrZSB0aGV5J3JlIGJvdGggZ2V0dGluZyBhIHNpbWlsYXIgZml4LiBCZWZvcmUsIHRoZXkgd2VyZSBzZWFyY2hpbmcgZm9yIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIHVzaW5nIGBjZmc4MDIxMV9maW5kX2llYCB3aXRoIGBza2ItXHUwMDNlbGVuYCBhcyB0aGUgYm91bmRhcnkuIFRoZSB1cGRhdGVkIGNvZGUgbm93IGluY2x1ZGVzIGEgY2hlY2sgdG8gZW5zdXJlIGBza2ItXHUwMDNlbGVuYCBpcyBub3Qgc21hbGxlciB0aGFuIGBoZHJfbGVuYCwgYW5kIGlmIHNvLCBpdCBleGl0cy4gT3RoZXJ3aXNlLCBpdCBjYWxjdWxhdGVzIGBpZV9sZW5gIChlc3NlbnRpYWxseSB0aGUgdmFsaWQgcGF5bG9hZCBsZW5ndGgpIGFuZCBwYXNzZXMgdGhhdCB0byBgY2ZnODAyMTFfZmluZF9pZWAuIFNvIGl0IGxvb2tzIGxpa2UgaXQncyBhZGRpbmcgYSBsZW5ndGggY2hlY2sgYmVmb3JlIHNlYXJjaGluZyBmb3IgdGhlIElFcy5cblxuSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgaGRyX2xlbmAgaXMgdXNlZCBmb3IgaW4gdGhlIGNvbnRleHQgb2YgdGhlc2UgZnVuY3Rpb25zIGFuZCB3aGF0IGBpZXNgIHBvaW50cyB0by4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gb2YgYHNrYmAuIElzIGBza2JgIGFsbG9jYXRlZCBieSB0aGUga2VybmVsIGFuZCwgaWYgc28sIGlzIGl0IGluaXRpYWxpemVkIGFwcHJvcHJpYXRlbHk/IEdpdmVuIHRoYXQgdGhlIGNvZGUncyBjaGFuZ2luZyBmcm9tIHBvdGVudGlhbGx5IHVzaW5nIHRoZSBmdWxsIGBza2ItXHUwMDNlbGVuYCB0byBjYWxjdWxhdGluZyBhIG5ldyBsZW5ndGgsIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2sgaWYgYGhkcl9sZW5gIGlzIG5vdCBwcm9wZXJseSBhY2NvdW50ZWQgZm9yLiBJJ20gZ29pbmcgdG8gbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgc3Vycm91bmRpbmcgY29udGV4dCBhbmQgZW5zdXJlIHdlJ3JlIG5vdCByZWFkaW5nIHBhc3QgdGhlIGludGVuZGVkIGJvdW5kYXJpZXMuIFRpbWUgdG8gdXNlIHJlYWQtZmlsZSBvciBncmVwcGVyIHRvIGdldCBhIGJldHRlciBwaWN0dXJlIG9mIHRoZSB3aG9sZSBzaXR1YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NzgsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo0NDo0Ny45NDM2MzY3NjlaIiwiU2VxIjozNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTM3MDUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTI1MDU9c3RhdGljIHZvaWQgcnR3ODlfY2FuY2VsXzZnaHpfcHJvYmVfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTI1MjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6MjUzMDpzdGF0aWMgdm9pZCBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy0yNTMxLVxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9MzAzOD1zdGF0aWMgdm9pZCBydHc4OV92aWZfcnhfc3RhdHNfaXRlcih2b2lkICpkYXRhLCB1OCAqbWFjLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMzA1OS1cXHQgICAgIGllZWU4MDIxMV9pc19wcm9iZV9yZXNwKGhkci1cXHUwMDNlZnJhbWVfY29udHJvbCkpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjMwNjA6XFx0XFx0cnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eChydHdkZXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtMzA2MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6NDQ6NDguNDAzMDEyMjk5WiIsIlNlcSI6MzcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg1NjE0MTQzNTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqRGl2aW5nIGludG8gdGhlIFJlYWx0ZWsgV2lyZWxlc3MgRHJpdmVyKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgYHJ0dzg5YCBzZXJpZXMuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jYCwgYXJvdW5kIGxpbmUgMjUzMC4gSSdtIGd1ZXNzaW5nIHRoZXJlJ3Mgc29tZSBjb3JlIGZ1bmN0aW9uYWxpdHkgb3IgaW5pdGlhbGl6YXRpb24gaGFwcGVuaW5nIHRoZXJlIHRoYXQncyByZWxldmFudCB0byB0aGUgaXNzdWUgSSdtIGNoYXNpbmcuIFNpbXVsdGFuZW91c2x5LCBJIHNob3VsZCBwcm9iYWJseSBnbGFuY2UgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvd293LmNgIGFyb3VuZCBsaW5lIDE2LiBUaGUgXCJ3b3dcIiBkaXJlY3RvcnkgbGlrZWx5IGhhbmRsZXMgV2FrZS1vbi1XaXJlbGVzcywgd2hpY2ggaXMgb2Z0ZW4gYSBwb2ludCBvZiBjb250ZW50aW9uIGFuZCBjYW4gYmUgaW50ZXJ0d2luZWQgd2l0aCBjb3JlIHBvd2VyIG1hbmFnZW1lbnQgYW5kIGV2ZW50IGhhbmRsaW5nLiBJJ2xsIG5lZWQgdG8gY29ycmVsYXRlIHRoZSB0d28sIHNlZSBob3cgdGhleSBmaXQgdG9nZXRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwOTcsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo0NjoxNC4wMTcxNTg1NDJaIiwiU2VxIjozOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk1MzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI1MjUsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI1MjU6XFx0XFx0XFx0ICogc2luY2UgaWYgZHVyaW5nIHNjYW5uaW5nLCBwa3RfbGlzdCBpcyBhY2Nlc3NlZCBpbiBib3R0b20gaGFsZi5cXG4yNTI2OlxcdFxcdFxcdCAqL1xcbjI1Mjc6XFx0XFx0fVxcbjI1Mjg6XFx0fVxcbjI1Mjk6XFx0XFxuMjUzMDpcXHRzdGF0aWMgdm9pZCBydHc4OV9jb3JlX2NhbmNlbF82Z2h6X3Byb2JlX3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4yNTMxOlxcdFxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbjI1MzI6XFx0e1xcbjI1MzM6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2IpO1xcbjI1MzQ6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNrYi1cXHUwMDNlZGF0YTtcXG4yNTM1OlxcdFxcdHNpemVfdCBoZHJfbGVuID0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LCB1LmJlYWNvbi52YXJpYWJsZSk7XFxuMjUzNjpcXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkICpwa3RfbGlzdCA9IHJ0d2Rldi1cXHUwMDNlc2Nhbl9pbmZvLnBrdF9saXN0O1xcbjI1Mzc6XFx0XFx0c3RydWN0IHJ0dzg5X3BrdG9mbGRfaW5mbyAqaW5mbztcXG4yNTM4OlxcdFxcdGNvbnN0IHU4ICppZXMgPSBtZ210LVxcdTAwM2V1LmJlYWNvbi52YXJpYWJsZSwgKnNzaWRfaWU7XFxuMjUzOTpcXHRcXHRzaXplX3QgaWVfbGVuO1xcbjI1NDA6XFx0XFx0Ym9vbCBxdWV1ZV93b3JrID0gZmFsc2U7XFxuMjU0MTpcXHRcXG4yNTQyOlxcdFxcdGlmIChyeF9zdGF0dXMtXFx1MDAzZWJhbmQgIT0gTkw4MDIxMV9CQU5EXzZHSFopXFxuMjU0MzpcXHRcXHRcXHRyZXR1cm47XFxuMjU0NDpcXHRcXG4yNTQ1OlxcdFxcdGlmICh1bmxpa2VseSghKHJ0d2Rldi1cXHUwMDNlY2hpcC1cXHUwMDNlc3VwcG9ydF9iYW5kcyBcXHUwMDI2IEJJVChOTDgwMjExX0JBTkRfNkdIWikpKSkge1xcbjI1NDY6XFx0XFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfVU5FWFAsIFxcXCJpbnZhbGlkIHJ4IG9uIHVuc3VwcG9ydGVkIDYgR0h6XFxcXG5cXFwiKTtcXG4yNTQ3OlxcdFxcdFxcdHJldHVybjtcXG4yNTQ4OlxcdFxcdH1cXG4yNTQ5OlxcdFxcbjI1NTA6XFx0XFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2MgaGRyX2xlbilcXG4yNTUxOlxcdFxcdFxcdHJldHVybjtcXG4yNTUyOlxcdFxcbjI1NTM6XFx0XFx0aWVfbGVuID0gc2tiLVxcdTAwM2VsZW4gLSBoZHJfbGVuO1xcbjI1NTQ6XFx0XFxuMjU1NTpcXHRcXHRzc2lkX2llID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9TU0lELCBpZXMsIGllX2xlbik7XFxuMjU1NjpcXHRcXG4yNTU3OlxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoaW5mbywgXFx1MDAyNnBrdF9saXN0W05MODAyMTFfQkFORF82R0haXSwgbGlzdCkge1xcbjI1NTg6XFx0XFx0XFx0aWYgKGV0aGVyX2FkZHJfZXF1YWwoaW5mby1cXHUwMDNlYnNzaWQsIG1nbXQtXFx1MDAzZWJzc2lkKSkge1xcbjI1NTk6XFx0XFx0XFx0XFx0aW5mby1cXHUwMDNlY2FuY2VsID0gdHJ1ZTtcXG4yNTYwOlxcdFxcdFxcdFxcdHF1ZXVlX3dvcmsgPSB0cnVlO1xcbjI1NjE6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMjU2MjpcXHRcXHRcXHR9XFxuMjU2MzpcXHRcXG4yNTY0OlxcdFxcdFxcdGlmICghc3NpZF9pZSB8fCBzc2lkX2llWzFdICE9IGluZm8tXFx1MDAzZXNzaWRfbGVuIHx8IGluZm8tXFx1MDAzZXNzaWRfbGVuID09IDApXFxuMjU2NTpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4yNTY2OlxcdFxcbjI1Njc6XFx0XFx0XFx0aWYgKG1lbWNtcChcXHUwMDI2c3NpZF9pZVsyXSwgaW5mby1cXHUwMDNlc3NpZCwgaW5mby1cXHUwMDNlc3NpZF9sZW4pID09IDApIHtcXG4yNTY4OlxcdFxcdFxcdFxcdGluZm8tXFx1MDAzZWNhbmNlbCA9IHRydWU7XFxuMjU2OTpcXHRcXHRcXHRcXHRxdWV1ZV93b3JrID0gdHJ1ZTtcXG4yNTcwOlxcdFxcdFxcdH1cXG4yNTcxOlxcdFxcdH1cXG4yNTcyOlxcdFxcbjI1NzM6XFx0XFx0aWYgKHF1ZXVlX3dvcmspXFxuMjU3NDpcXHRcXHRcXHR3aXBoeV93b3JrX3F1ZXVlKHJ0d2Rldi1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LCBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VjYW5jZWxfNmdoel9wcm9iZV93b3JrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6NDY6MTQuMDE3NTU2MzQyWiIsIlNlcSI6MzksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4NTk2Njg1MDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgUmVhbHRlayBXYWtlLW9uLVdMQU4gQ29kZSoqXG5cbkFscmlnaHQsIGxldCdzIHB1bGwgdXAgdGhlIHNvdXJjZSBjb2RlIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgUmVhbHRlayA4MDIuMTEgY2hpcHNldCBoYW5kbGVzIFdha2Utb24tV0xBTiBmdW5jdGlvbmFsaXR5LiBTcGVjaWZpY2FsbHksIEknbSBpbnRlcmVzdGVkIGluIGhvdyB0aGV5J3ZlIGltcGxlbWVudGVkIHRoZSBkcml2ZXIgaG9va3MsIHRoZSBmaWx0ZXJpbmcgbWVjaGFuaXNtcyBmb3Igc3BlY2lmaWMgZnJhbWUgdHlwZXMgKG1hZ2ljIHBhY2tldHMsIG11bHRpY2FzdCwgZXRjLiksIGFuZCB0aGUgcG93ZXIgbWFuYWdlbWVudCBzZXF1ZW5jZXMgaW52b2x2ZWQgdG8gdHJhbnNpdGlvbiB0aGUgTklDIGZyb20gYSBsb3ctcG93ZXIgc3RhdGUgYmFjayB0byBhY3RpdmUuIEkgd2FudCB0byBzZWUgaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggdGhlIGZpcm13YXJlLCBhbmQgaWYgdGhleSdyZSByZWx5aW5nIGhlYXZpbHkgb24gaGFyZHdhcmUgb2ZmbG9hZCBvciBpZiB0aGVyZSdzIGEgc2lnbmlmaWNhbnQgYW1vdW50IG9mIHNvZnR3YXJlIGludGVydmVudGlvbiBpbiBoYW5kbGluZyB0aGUgd2FrZS11cCB0cmlnZ2Vycy4gSSBhbHNvIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhpcyBpbXBsZW1lbnRhdGlvbiBhbGlnbnMgd2l0aCB0aGUgQUNQSSBzcGVjaWZpY2F0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGRvZXNuJ3QgaW50cm9kdWNlIHBvd2VyIGxlYWtzIHdoZW4gdGhlIGRldmljZSBpcyBzdXBwb3NlZCB0byBiZSBzbGVlcGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgYXMgdGhpcyBhcmVhIG9mdGVuIGhhcyBzdWJ0bGUgYnVncyBhbmQgcXVpcmtzLiBMZXTigJlzIGRpdmUgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyOTUsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjQ2OjMyLjYxNDI0NDczNVoiLCJTZXEiOjQwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTYxODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS93b3cuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxcbiAgIDI6XFx0LyogQ29weXJpZ2h0KGMpIDIwMTktMjAyMiAgUmVhbHRlayBDb3Jwb3JhdGlvblxcbiAgIDM6XFx0ICovXFxuICAgNDpcXHQjaW5jbHVkZSBcXFwiY2FtLmhcXFwiXFxuICAgNTpcXHQjaW5jbHVkZSBcXFwiY29yZS5oXFxcIlxcbiAgIDY6XFx0I2luY2x1ZGUgXFxcImRlYnVnLmhcXFwiXFxuICAgNzpcXHQjaW5jbHVkZSBcXFwiZncuaFxcXCJcXG4gICA4OlxcdCNpbmNsdWRlIFxcXCJtYWMuaFxcXCJcXG4gICA5OlxcdCNpbmNsdWRlIFxcXCJwaHkuaFxcXCJcXG4gIDEwOlxcdCNpbmNsdWRlIFxcXCJwcy5oXFxcIlxcbiAgMTE6XFx0I2luY2x1ZGUgXFxcInJlZy5oXFxcIlxcbiAgMTI6XFx0I2luY2x1ZGUgXFxcInV0aWwuaFxcXCJcXG4gIDEzOlxcdCNpbmNsdWRlIFxcXCJ3b3cuaFxcXCJcXG4gIDE0OlxcdFxcbiAgMTU6XFx0dm9pZCBfX3J0dzg5X3dvd19wYXJzZV9ha20oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiAgMTY6XFx0e1xcbiAgMTc6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNrYi1cXHUwMDNlZGF0YTtcXG4gIDE4OlxcdFxcdHN0cnVjdCBydHc4OV93b3dfcGFyYW0gKnJ0d193b3cgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2V3b3c7XFxuICAxOTpcXHRcXHRzaXplX3QgaGRyX2xlbiA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5hc3NvY19yZXEudmFyaWFibGUpO1xcbiAgMjA6XFx0XFx0Y29uc3QgdTggKnJzbiwgKmllcyA9IG1nbXQtXFx1MDAzZXUuYXNzb2NfcmVxLnZhcmlhYmxlO1xcbiAgMjE6XFx0XFx0c3RydWN0IHJ0dzg5X3Jzbl9pZSAqcnNuX2llO1xcbiAgMjI6XFx0XFxuICAyMzpcXHRcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyBoZHJfbGVuKVxcbiAgMjQ6XFx0XFx0XFx0cmV0dXJuO1xcbiAgMjU6XFx0XFxuICAyNjpcXHRcXHRyc24gPSBjZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX1JTTiwgaWVzLFxcbiAgMjc6XFx0XFx0XFx0XFx0ICAgICAgIHNrYi1cXHUwMDNlbGVuIC0gaGRyX2xlbik7XFxuICAyODpcXHRcXG4gIDI5OlxcdFxcdGlmICghcnNuKVxcbiAgMzA6XFx0XFx0XFx0cmV0dXJuO1xcbiAgMzE6XFx0XFxuICAzMjpcXHRcXHRyc25faWUgPSAoc3RydWN0IHJ0dzg5X3Jzbl9pZSAqKXJzbjtcXG4gIDMzOlxcdFxcdHJ0d193b3ctXFx1MDAzZWFrbSA9IHJzbl9pZS1cXHUwMDNlYWttX2NpcGhlcl9zdWl0ZS50eXBlO1xcbiAgMzQ6XFx0fVxcbiAgMzU6XFx0XFxuICAzNjpcXHQjZGVmaW5lIFJUVzg5X0NJUEhFUl9JTkZPX0RFRihjaXBoZXIpIFxcXFxcXG4gIDM3OlxcdFxcdHtXTEFOX0NJUEhFUl9TVUlURV8gIyMgY2lwaGVyLCAuZndfYWxnID0gUlRXODlfV09XX0ZXX0FMR18gIyMgY2lwaGVyLCBcXFxcXFxuICAzODpcXHRcXHQgLmxlbiA9IFdMQU5fS0VZX0xFTl8gIyMgY2lwaGVyfVxcbiAgMzk6XFx0XFxuICA0MDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2NpcGhlcl9pbmZvIHJ0dzg5X2NpcGhlcl9pbmZvX2RlZnNbXSA9IHtcXG4gIDQxOlxcdFxcdFJUVzg5X0NJUEhFUl9JTkZPX0RFRihXRVA0MCksXFxuICA0MjpcXHRcXHRSVFc4OV9DSVBIRVJfSU5GT19ERUYoV0VQMTA0KSxcXG4gIDQzOlxcdFxcdFJUVzg5X0NJUEhFUl9JTkZPX0RFRihUS0lQKSxcXG4gIDQ0OlxcdFxcdFJUVzg5X0NJUEhFUl9JTkZPX0RFRihDQ01QKSxcXG4gIDQ1OlxcdFxcdFJUVzg5X0NJUEhFUl9JTkZPX0RFRihHQ01QKSxcXG4gIDQ2OlxcdFxcdFJUVzg5X0NJUEhFUl9JTkZPX0RFRihDQ01QXzI1NiksXFxuICA0NzpcXHRcXHRSVFc4OV9DSVBIRVJfSU5GT19ERUYoR0NNUF8yNTYpLFxcbiAgNDg6XFx0XFx0UlRXODlfQ0lQSEVSX0lORk9fREVGKEFFU19DTUFDKSxcXG4gIDQ5OlxcdH07XFxuICA1MDpcXHRcXG4gIDUxOlxcdCN1bmRlZiBSVFc4OV9DSVBIRVJfSU5GT19ERUZcXG4gIDUyOlxcdFxcbiAgNTM6XFx0c3RhdGljIGNvbnN0XFxuICA1NDpcXHRzdHJ1Y3QgcnR3ODlfY2lwaGVyX2luZm8gKnJ0dzg5X2NpcGhlcl9hbGdfcmVjb2duaXplKHUzMiBjaXBoZXIpXFxuICA1NTpcXHR7XFxuICA1NjpcXHRcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2lwaGVyX2luZm8gKmNpcGhlcl9pbmZvX2RlZnM7XFxuICA1NzpcXHRcXHRpbnQgaTtcXG4gIDU4OlxcdFxcbiAgNTk6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUocnR3ODlfY2lwaGVyX2luZm9fZGVmcyk7IGkrKykge1xcbiAgNjA6XFx0XFx0XFx0Y2lwaGVyX2luZm9fZGVmcyA9IFxcdTAwMjZydHc4OV9jaXBoZXJfaW5mb19kZWZzW2ldO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo0NjozMi42MTQzNjI2MjZaIiwiU2VxIjo0MSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTkwNjExNDExMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQnVnIEFuYWx5c2lzIGFuZCBLTVNBTiBFdmFsdWF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgdGhlIHJvb3QgY2F1c2Ugb2YgdGhpcyBidWcuIEl0IGFwcGVhcnMgd2UgaGFkIGEgY2xhc3NpYyBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eS4gVGhlIHByZXZpb3VzIGNvZGUsIHNwZWNpZmljYWxseSB0aGlzIGxpbmU6IGBzc2lkX2llID0gY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9TU0lELCBpZXMsIHNrYi1cdTAwM2VsZW4pO2AsIHdhcyB0aGUgY3VscHJpdC4gSXQgc2VlbXMgdGhlIGBpZXNgIHBvaW50ZXIgd2FzIHJlZmVyZW5jaW5nIGBtZ210LVx1MDAzZXUuYmVhY29uLnZhcmlhYmxlYCwgYW4gb2Zmc2V0IGZyb20gYHNrYi1cdTAwM2VkYXRhYCwgYW5kIHRoZSBsZW5ndGggcGFzc2VkIHRvIHRoZSBmdW5jdGlvbiwgYHNrYi1cdTAwM2VsZW5gLCBhbGxvd2VkIGBjZmc4MDIxMV9maW5kX2llYCB0byBwb3RlbnRpYWxseSByZWFkIHBhc3QgdGhlIGFjdHVhbCBidWZmZXIgYm91bmRhcmllcyBvZiBgc2tiLVx1MDAzZWRhdGFgLCBieSBhbiBhbW91bnQgZXF1YWwgdG8gYGhkcl9sZW5gLiBUaGF0J3MgYSBkaXJlY3QgYnVmZmVyIG92ZXItcmVhZCBzaXR1YXRpb24hIFRoZSBhZGRlZCBjaGVjayBmb3IgYHNrYi1cdTAwM2VsZW4gXHUwMDNjIGhkcl9sZW5gIGlzIGtleSwgYXMgaXMgdGhlIHBhdGNoIHRvIHJlZHVjZSB0aGUgcmVhZCBsZW5ndGggYnkgdGhhdCB2YWx1ZS4gS0FTQU4gd291bGQgZGVmaW5pdGVseSBjYXRjaCBzb21ldGhpbmcgbGlrZSB0aGlzLlxuXG5OZXh0LCBJIG5lZWQgdG8gZXZhbHVhdGUgdGhlIEtNU0FOIGltcGxpY2F0aW9ucy4gVGhlIGZ1bmN0aW9ucyBpbnZvbHZlIHBhcnNpbmcgODAyLjExIElFcyBmcm9tIHBhY2tldCBkYXRhIHdpdGhpbiBhbiBgc2tiYC4gU28gdGhlIGltcG9ydGFudCBwYXJ0IGlzIG1ha2luZyBzdXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGdldHMgYWxsb2NhdGVkIG9yIGxlYWtlZCB0byB1c2VyIHNwYWNlLCByaWdodD9cblxuVGhlIGZpeCBhZGp1c3RzIHRoZSBsZW5ndGggdG8gYmUgcGFzc2VkIHRvIGBjZmc4MDIxMV9maW5kX2llYCB0byBgc2tiLVx1MDAzZWxlbiAtIGhkcl9sZW5gIGJ1dCBvbmx5IGlmIGBza2ItXHUwMDNlbGVuIFx1MDAzZT0gaGRyX2xlbmAuIFRoaXMgcHJldmVudHMgdGhvc2UgT09CIHJlYWRzIHBhc3QgdGhlIGVuZCBvZiB0aGUgYHNrYmAgYnVmZmVyLiBTaW5jZSB3ZSdyZSBqdXN0IHByZXZlbnRpbmcgYWNjZXNzIGFuZCBub3QgaW50cm9kdWNpbmcgYW55dGhpbmcgbmV3LCB0aGVyZSBhcmVuJ3QgYW55IHBvdGVudGlhbCBsZWFrcy5cblxuTm93LCBjaGVja2luZyB0aGUgS01TQU4gcnVsZXM6IERvZXMgdGhlIGZpeCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSB3aGVyZSBmaWVsZHMvcGFkZGluZyBtaWdodCBiZSB1bmluaXRpYWxpemVkPyBOby4gRG9lcyBpdCBpbnRyb2R1Y2UgY29uZGl0aW9uYWwgbG9naWMgZGVwZW5kaW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzPyBOb3BlLiBEb2VzIGl0IGFsbG9jYXRlL2luaXRpYWxpemUgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcz8gTmVnYXRpdmUuIERvZXMgaXQgaW50cm9kdWNlIGJvdW5kcyBjaGVja3MvbGVuZ3RocyBhbGxvd2luZyBhY2Nlc3MgdG8gdW5pbml0aWFsaXplZCBieXRlcz8gTm8sIGlmIGFueXRoaW5nLCBpdCBwcmV2ZW50cyB0aGF0LiBUaHVzLCBubyBLTVNBTiBjb25jZXJucyBoZXJlLlxuXG5UaGVyZWZvcmUsIGBOZWVkc0tNU0FOYCBpcyBkZWZpbml0ZWx5IGBmYWxzZWAuIEknbGwgY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggdGhhdCBmbGFnIGFuZCBjbGVhciB0aGUgYEtNU0FOUmVhc29uaW5nYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY1MiwiT3V0cHV0VG9rZW5zIjoyMjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo0NzozMS42NzU1MDU5MjRaIiwiU2VxIjo0MiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODY0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgKE9PQikgcmVhZCB2dWxuZXJhYmlsaXR5IGluIHRoZSBydHc4OSBkcml2ZXIgKGJvdGggaW4gcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eCBhbmQgX19ydHc4OV93b3dfcGFyc2VfYWttKS4gUHJldmlvdXNseSwgdGhlIGZ1bGwgcGFja2V0IGxlbmd0aCAoc2tiLVxcdTAwM2VsZW4pIHdhcyBwYXNzZWQgdG8gY2ZnODAyMTFfZmluZF9pZSBpbnN0ZWFkIG9mIHRoZSBsZW5ndGggb2YgdGhlIGluZm9ybWF0aW9uIGVsZW1lbnRzIChza2ItXFx1MDAzZWxlbiAtIGhkcl9sZW4pLCBhbmQgdGhlcmUgd2FzIG5vIGNoZWNrIHZlcmlmeWluZyB0aGF0IHNrYi1cXHUwMDNlbGVuIFxcdTAwM2U9IGhkcl9sZW4uIFRoaXMgY291bGQgbGVhZCB0byByZWFkaW5nIHVwIHRvIGhkcl9sZW4gYnl0ZXMgcGFzdCB0aGUgZW5kIG9mIHRoZSBza2IgZGF0YSBidWZmZXIuXFxuXFxuT3V0LW9mLWJvdW5kcyBidWZmZXIgcmVhZHMgYXJlIHN0YW5kYXJkIG1lbW9yeSBzYWZldHkgYnVncyBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciByZWFkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IChzdGFjaywgaGVhcCwgb3IgcGFnZSBhbGxvY2F0aW9ucykgb3IgbGVhayBrZXJuZWwgbWVtb3J5IHRvIHVzZXJzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgKE9PQikgcmVhZCB2dWxuZXJhYmlsaXR5IGluIHRoZSBydHc4OSBkcml2ZXIgKGJvdGggaW4gcnR3ODlfY29yZV9jYW5jZWxfNmdoel9wcm9iZV90eCBhbmQgX19ydHc4OV93b3dfcGFyc2VfYWttKS4gUHJldmlvdXNseSwgdGhlIGZ1bGwgcGFja2V0IGxlbmd0aCAoc2tiLVxcdTAwM2VsZW4pIHdhcyBwYXNzZWQgdG8gY2ZnODAyMTFfZmluZF9pZSBpbnN0ZWFkIG9mIHRoZSBsZW5ndGggb2YgdGhlIGluZm9ybWF0aW9uIGVsZW1lbnRzIChza2ItXFx1MDAzZWxlbiAtIGhkcl9sZW4pLCBhbmQgdGhlcmUgd2FzIG5vIGNoZWNrIHZlcmlmeWluZyB0aGF0IHNrYi1cXHUwMDNlbGVuIFxcdTAwM2U9IGhkcl9sZW4uIFRoaXMgY291bGQgbGVhZCB0byByZWFkaW5nIHVwIHRvIGhkcl9sZW4gYnl0ZXMgcGFzdCB0aGUgZW5kIG9mIHRoZSBza2IgZGF0YSBidWZmZXIuXFxuXFxuT3V0LW9mLWJvdW5kcyBidWZmZXIgcmVhZHMgYXJlIHN0YW5kYXJkIG1lbW9yeSBzYWZldHkgYnVncyBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciByZWFkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IChzdGFjaywgaGVhcCwgb3IgcGFnZSBhbGxvY2F0aW9ucykgb3IgbGVhayBrZXJuZWwgbWVtb3J5IHRvIHVzZXJzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwq7g7[1] Phase: Succeeded StartedAt: 2026-08-30 15:47:42 +0000 UTC FinishedAt: 2026-08-30 15:47:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwq7g7[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-30 15:47:42 +0000 UTC FinishedAt: 2026-08-30 15:47:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwq7g7[2] Phase: Succeeded StartedAt: 2026-08-30 15:47:42 +0000 UTC FinishedAt: 2026-08-30 16:27:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-30 15:47:42 +0000 UTC FinishedAt: 2026-08-30 16:27:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-30 15:47:42 +0000 UTC FinishedAt: 2026-08-30 15:47:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-30 15:47:42 +0000 UTC FinishedAt: 2026-08-30 15:47:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowwq7g7/series-workflowwq7g7-convert-artifact-3283501936/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-30 15:47:53 +0000 UTC FinishedAt: 2026-08-30 16:04:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-30 15:47:53 +0000 UTC FinishedAt: 2026-08-30 16:04:05 +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:*da5d4bef-c133-4881-a107-593886daef6b,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-workflowwq7g7/series-workflowwq7g7-convert-artifact-3283501936/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": "bab92485-7a3a-445e-acdf-efc3208cbca9", "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-workflowwq7g7/series-workflowwq7g7-build-action-1582255734/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-30 15:47:53 +0000 UTC FinishedAt: 2026-08-30 16:03:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*da5d4bef-c133-4881-a107-593886daef6b,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-workflowwq7g7/series-workflowwq7g7-convert-artifact-3283501936/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": "bab92485-7a3a-445e-acdf-efc3208cbca9", "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-workflowwq7g7/series-workflowwq7g7-build-action-1582255734/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-30 16:04:05 +0000 UTC FinishedAt: 2026-08-30 16:04:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-30 16:04:05 +0000 UTC FinishedAt: 2026-08-30 16:04:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-30 16:04:05 +0000 UTC FinishedAt: 2026-08-30 16:04:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-30 16:04:05 +0000 UTC FinishedAt: 2026-08-30 16:04:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowwq7g7/series-workflowwq7g7-convert-artifact-2442540119/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-30 16:04:15 +0000 UTC FinishedAt: 2026-08-30 16:06:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-30 16:04:15 +0000 UTC FinishedAt: 2026-08-30 16:06:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*bab92485-7a3a-445e-acdf-efc3208cbca9,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-workflowwq7g7/series-workflowwq7g7-build-action-1582255734/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-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-30 16:06:18 +0000 UTC FinishedAt: 2026-08-30 16:06:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-30 16:06:18 +0000 UTC FinishedAt: 2026-08-30 16:06:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-30 16:06:18 +0000 UTC FinishedAt: 2026-08-30 16:22:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-30 16:06:18 +0000 UTC FinishedAt: 2026-08-30 16:22:05 +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:*da5d4bef-c133-4881-a107-593886daef6b,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-workflowwq7g7/series-workflowwq7g7-convert-artifact-2442540119/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": "cbb2eeab-0940-4f73-837d-56c0b390a9d0", "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-workflowwq7g7/series-workflowwq7g7-build-action-1383639963/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-30 16:06:18 +0000 UTC FinishedAt: 2026-08-30 16:21:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*da5d4bef-c133-4881-a107-593886daef6b,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-workflowwq7g7/series-workflowwq7g7-convert-artifact-2442540119/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": "cbb2eeab-0940-4f73-837d-56c0b390a9d0", "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-workflowwq7g7/series-workflowwq7g7-build-action-1383639963/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-30 16:22:05 +0000 UTC FinishedAt: 2026-08-30 16:22:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-30 16:22:05 +0000 UTC FinishedAt: 2026-08-30 16:22:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-30 16:22:05 +0000 UTC FinishedAt: 2026-08-30 16:24:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-30 16:22:05 +0000 UTC FinishedAt: 2026-08-30 16:23:59 +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:*cbb2eeab-0940-4f73-837d-56c0b390a9d0,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-workflowwq7g7/series-workflowwq7g7-build-action-1383639963/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-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-30 16:24:09 +0000 UTC FinishedAt: 2026-08-30 16:27:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-30 16:24:09 +0000 UTC FinishedAt: 2026-08-30 16:27:22 +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":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"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:*bab92485-7a3a-445e-acdf-efc3208cbca9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*cbb2eeab-0940-4f73-837d-56c0b390a9d0,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-workflowwq7g7/series-workflowwq7g7-build-action-1582255734/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-workflowwq7g7/series-workflowwq7g7-build-action-1383639963/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-30 16:24:09 +0000 UTC FinishedAt: 2026-08-30 16:24:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-30 16:24:09 +0000 UTC FinishedAt: 2026-08-30 16:24:13 +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":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"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-workflowwq7g7/series-workflowwq7g7-convert-artifact-20124944/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-30 16:24:09 +0000 UTC FinishedAt: 2026-08-30 16:24:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-30 16:24:09 +0000 UTC FinishedAt: 2026-08-30 16:24:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-30 16:24:09 +0000 UTC FinishedAt: 2026-08-30 16:24:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-30 16:24:19 +0000 UTC FinishedAt: 2026-08-30 16:27:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwq7g7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__rtw89_wow_parse_akm","rtw89_core_rx","rtw89_core_tx_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211","RTW89","RTW89_CORE","RTW89_USB","RTW89_8852AU","RTW89_PCI","RTW89_8852AE","PM"],"series_id":"fcbd670d-9a29-4628-ad61-6903e6c1cac9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-30 16:24:19 +0000 UTC FinishedAt: 2026-08-30 16:27:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*bab92485-7a3a-445e-acdf-efc3208cbca9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*cbb2eeab-0940-4f73-837d-56c0b390a9d0,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-workflowwq7g7/series-workflowwq7g7-build-action-1582255734/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-workflowwq7g7/series-workflowwq7g7-build-action-1383639963/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-workflowwq7g7/series-workflowwq7g7-convert-artifact-20124944/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,}