Name: series-workflow49mds Phase: Succeeded StartedAt: 2026-09-11 02:59:26 +0000 UTC FinishedAt: 2026-09-11 05:06:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49mds[0] Phase: Succeeded StartedAt: 2026-09-11 02:59:26 +0000 UTC FinishedAt: 2026-09-11 03:21:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49mds[0].run-triage Phase: Succeeded StartedAt: 2026-09-11 02:59:26 +0000 UTC FinishedAt: 2026-09-11 03:21:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "13e51269b6656768dc595ed6025e4974f2026543", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U", "MT7925_COMMON", "MAC80211", "USB", "WLAN_VENDOR_MEDIATEK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "13e51269b6656768dc595ed6025e4974f2026543", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U", "MT7925_COMMON", "MAC80211", "USB", "WLAN_VENDOR_MEDIATEK" ], "series_id": "8fa9df09-90db-4e2a-ab91-53a40aeeae25" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7925_mac_write_txwi", "mt7925_usb_sdio_tx_prepare_skb" ], "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+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7TVQ3OTI1X0NPTU1PTiYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUVESUFURUsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjVfbWFjX3dyaXRlX3R4d2kmIzM0OywKICAgICYjMzQ7bXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNhbGN1bGF0aW9uIG9mIGhhcmR3YXJlIFRYIGRlc2NyaXB0b3IgYml0cyBpbiBgbXQ3OTI1X21hY193cml0ZV90eHdpKClgIGJ5IGF2b2lkaW5nIHRoZSB1c2Ugb2YgYEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeClgIHdoZW4gYGJhbmRfaWR4ID09IDB4ZmZgIChCQU5EX0FVVE8pLlxuXG5BbGwgbG9jYWwgdmFyaWFibGVzLCBpbmNsdWRpbmcgYGJhbmRfaWR4YCwgYXJlIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQsIGFuZCB0aGUgZnVuY3Rpb24gd3JpdGVzIGRlc2NyaXB0b3IgZmllbGRzIHRvIGEgcHJlLWFsbG9jYXRlZC9tYW5hZ2VkIGJ1ZmZlciBmb3IgaGFyZHdhcmUgdHJhbnNtaXNzaW9uLiBObyBtZW1vcnkgY29weWluZyB0byB1c2VyIHNwYWNlLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHVzYWdlLCBvciB1bmluaXRpYWxpemVkIHBhZGRpbmcvYnVmZmVyIGhhbmRsaW5nIGlzIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuIFRoZXJlZm9yZSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYmFuZF9pZHggaGFuZGxpbmcgaW4gbXQ3OTI1X21hY193cml0ZV90eHdpKCkgd2hlbiB3cml0aW5nIFRYIHdpcmVsZXNzIGluZm9ybWF0aW9uIGRlc2NyaXB0b3JzLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIChNVDc5MjVVKSB3aGljaCBhcmUgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgVVNCIGRldmljZSBlbXVsYXRpb24gKFVTQiBSYXcgR2FkZ2V0IC8gdnVzYikuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDM6MTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkYTViYjZiMDY5YWRlY2QyYTY5MzUxODJiNmE2NzJjZTU3NDJiYTBmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgMTEgMDM6MTg6MzAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuY1xuaW5kZXggMTAxZjU3MWIwMjdmMS4uM2I4MmM5ZGUyNmM1YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuY1xuQEAgLTc5OCw3ICYjNDM7Nzk4LDggQEAgbXQ3OTI1X21hY193cml0ZV90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXG4gXHR2YWwgPSBGSUVMRF9QUkVQKE1UX1RYRDFfV0xBTl9JRFgsIHdjaWQtXHUwMDNlaWR4KSB8XG4gXHQgICAgICBGSUVMRF9QUkVQKE1UX1RYRDFfT1dOX01BQywgb21hY19pZHgpO1xuIFxuLVx0aWYgKGJhbmRfaWR4KVxuJiM0MztcdC8qIDB4ZmYgbWVhbnMgQkFORF9BVVRPIHRvIHRoZSBmaXJtd2FyZSwgYW5kIFRHSUQgY2Fubm90IGVuY29kZSBpdCAqL1xuJiM0MztcdGlmIChiYW5kX2lkeCBcdTAwMjZcdTAwMjYgYmFuZF9pZHggIT0gMHhmZilcbiBcdFx0dmFsIHw9IEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeCk7XG4gXG4gXHR0eHdpWzFdID0gY3B1X3RvX2xlMzIodmFsKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoxODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5MjVVJiMzNDssCiAgICAmIzM0O01UNzkyNV9DT01NT04mIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX01FRElBVEVLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTI1X21hY193cml0ZV90eHdpJiMzNDssCiAgICAmIzM0O210NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBiYW5kX2lkeCBoYW5kbGluZyBpbiBtdDc5MjVfbWFjX3dyaXRlX3R4d2koKSB3aGVuIHdyaXRpbmcgVFggd2lyZWxlc3MgaW5mb3JtYXRpb24gZGVzY3JpcHRvcnMuIFRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGRldmljZXMgKE1UNzkyNVUpIHdoaWNoIGFyZSByZWFjaGFibGUgYW5kIGZ1enphYmxlIHZpYSBVU0IgZGV2aWNlIGVtdWxhdGlvbiAoVVNCIFJhdyBHYWRnZXQgLyB2dXNiKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGRhNWJiNmIwNjlhZGVjZDJhNjkzNTE4MmI2YTY3MmNlNTc0MmJhMGYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIFNlcCAxMSAwMzoxODozMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMKaW5kZXggMTAxZjU3MWIwMjdmMS4uM2I4MmM5ZGUyNmM1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMKQEAgLTc5OCw3ICYjNDM7Nzk4LDggQEAgbXQ3OTI1X21hY193cml0ZV90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksCiAJdmFsID0gRklFTERfUFJFUChNVF9UWEQxX1dMQU5fSURYLCB3Y2lkLSZndDtpZHgpIHwKIAkgICAgICBGSUVMRF9QUkVQKE1UX1RYRDFfT1dOX01BQywgb21hY19pZHgpOwogCi0JaWYgKGJhbmRfaWR4KQomIzQzOwkvKiAweGZmIG1lYW5zIEJBTkRfQVVUTyB0byB0aGUgZmlybXdhcmUsIGFuZCBUR0lEIGNhbm5vdCBlbmNvZGUgaXQgKi8KJiM0MzsJaWYgKGJhbmRfaWR4ICZhbXA7JmFtcDsgYmFuZF9pZHggIT0gMHhmZikKIAkJdmFsIHw9IEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeCk7CiAKIAl0eHdpWzFdID0gY3B1X3RvX2xlMzIodmFsKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDM6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk4OAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGFzc2VzcyB0aGlzIHBhdGNoJiMzOTtzIGZ1enppbmcgcG90ZW50aWFsLCBhbmQgd2hlcmUgdG8gZm9jdXMgb3VyIGVmZm9ydHMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZS4gSXQgbG9va3MgbGlrZSB3ZSBhcmUgZGVhbGluZyB3aXRoIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuY2AsIHNwZWNpZmljYWxseSB0aGUgYG10NzkyNV9tYWNfd3JpdGVfdHh3aWAgZnVuY3Rpb24uIFRoYXQmIzM5O3Mgb3VyIGZvY2FsIHBvaW50LgoKQmVmb3JlIEkganVtcCBpbnRvIGRpc3NlY3RpbmcgdGhlIGZ1bmN0aW9uIGl0c2VsZiwgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgdGhlICpjb250ZXh0KiBvZiBgbXQ3OTI1YC4gSXMgdGhpcyBhIFVTQiwgUENJLCBvciBTRElPIGRldmljZT8gQ2FuIHdlIGVhc2lseSBlbXVsYXRlIGl0LCBvciBpcyBpdCBtb3JlIG9mIGEgaGFyZHdhcmUtZGVwZW5kZW50IFBDSWUvVVNCIHNjZW5hcmlvPyBVbmRlcnN0YW5kaW5nIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGFuZCB0aGUgcG90ZW50aWFsIGZvciBlbXVsYXRpb24gaXMgY3JpdGljYWwuIENhbiB3ZSB1c2UgVVNCIGdhZGdldHMgdG8gc2ltdWxhdGUgYW4gYG10NzkyNWA/IEtub3dpbmcgdGhlIGNvbm5lY3Rpb24gdHlwZSAoVVNCLCBQQ0ksIFNESU8pIGRpY3RhdGVzIHNvIG1hbnkgdGhpbmdzIGFib3V0IGhvdyB3ZSYjMzk7ZCBhcHByb2FjaCBmdXp6aW5nLiBJdCBpbmZvcm1zIHRoZSBzZXR1cCBhbmQgbWFrZXMgdGhlIGZ1enppbmcgYXBwcm9hY2ggdmVyeSBkaWZmZXJlbnQuIFRoaXMgaXMgdGhlIGZpcnN0IHF1ZXN0aW9uIEkgbmVlZCBhbnN3ZXJlZCBiZWZvcmUgSSBwcm9jZWVkIHdpdGggYW55IGRlZXBlciBhbmFseXNpcyBvZiB0aGUgY29kZS4gTGV0JiMzOTtzIHJlc2VhcmNoIHdoYXQgYG10NzkyNWAgaXMgaW4gcmVhbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA0MDkzIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9NTA9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzo1MTpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU9NTE9b2JqLSQoQ09ORklHX01UNzk5NkUpICYjNDM7PSBtdDc5OTYvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjUyOm9iai0kKENPTkZJR19NVDc5MjVfQ09NTU9OKSAmIzQzOz0gbXQ3OTI1L1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0xODA9c3RhdGljIGlubGluZSBib29sIGlzX2Nvbm5hYzMoc3RydWN0IG10NzZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTE4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoxODU6c3RhdGljIGlubGluZSBib29sIGlzX210NzkyNShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0xODYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM9NTQ9aW50IG10NzZfY29ubmFjX21jdV9pbml0X2Rvd25sb2FkKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgYWRkciwgdTMyIGxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jLTY5LVx0ICAgIChpc19jb25uYWMyKGRldikgXHUwMDI2XHUwMDI2IGFkZHIgPT0gMHg5MDAwMDApIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jOjcwOlx0ICAgICgoaXNfbXQ3OTI1KGRldikgfHwgaXNfbXQ3OTI3KGRldikpIFx1MDAyNlx1MDAyNiAoYWRkciA9PSAweDkwMDAwMCB8fCBhZGRyID09IDB4ZTAwMDI4MDApKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYy03MS1cdCAgICAoaXNfbXQ3OTI4KGRldikgXHUwMDI2XHUwMDI2IChhZGRyID09IDB4OTAwMDAwIHx8IGFkZHIgPT0gMHhlMDAwMjAwMCkpIHx8XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGUtMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX01UNzkyNV9DT01NT04pICYjNDM7PSBtdDc5MjUtY29tbW9uLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX01UNzkyNUUpICYjNDM7PSBtdDc5MjVlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX01UNzkyNVUpICYjNDM7PSBtdDc5MjV1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo3Om10NzkyNS1jb21tb24teSA6PSBtYWMubyBtY3UubyByZWdkLm8gbWFpbi5vIGluaXQubyBkZWJ1Z2ZzLm8gbmFuLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjg6bXQ3OTI1LWNvbW1vbi0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6OTptdDc5MjVlLXkgOj0gcGNpLm8gcGNpX21hYy5vIHBjaV9tY3Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6MTA6bXQ3OTI1dS15IDo9IHVzYi5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NDojaW5jbHVkZSBcJiMzNDttdDc5MjUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTUtI2luY2x1ZGUgXCYjMzQ7bWN1LmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9Nz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6ODptdDc5MjVfcmVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMy1cdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTQ6XHRtdDc5MjVfbWN1X3JlZ3ZhbChkZXYsIGRldi1cdTAwM2VtdDc2LmRlYnVnZnNfcmVnLCBcdTAwMjZyZWd2YWwsIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1LVx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjA9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjIxOm10NzkyNV9yZWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjctXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4Olx0cmV0ID0gbXQ3OTI1X21jdV9yZWd2YWwoZGV2LCBkZXYtXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXHUwMDI2cmVndmFsLCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjktXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozNjpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZWd2YWwsIG10NzkyNV9yZWdfZ2V0LCBtdDc5MjVfcmVnX3NldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNy1cdFx0XHQgXCYjMzQ7MHglMDhsbHhcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTM4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozOTptdDc5MjVfZndfZGVidWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00NS1cdGRldi1cdTAwM2Vmd19kZWJ1ZyA9ICh1OCl2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NDY6XHRtdDc5MjVfbWN1X2Z3X2xvZ18yX2hvc3QoZGV2LCBkZXYtXHUwMDNlZndfZGVidWcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQ3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz01Mz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NTQ6bXQ3OTI1X2Z3X2RlYnVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy01NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjYzOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnLCBtdDc5MjVfZndfZGVidWdfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjY0Olx0XHRcdCBtdDc5MjVfZndfZGVidWdfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy02NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9Njg9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo2OTptdDc5MjVfc2VxX3B1dHNfYXJyYXkoc3RydWN0IHNlcV9maWxlICpmaWxlLCBjb25zdCBjaGFyICpzdHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNzAtXHRcdCAgICAgIHM4IHZhbFtdWzJdLCBpbnQgbGVuLCB1OCBiYW5kX2lkeClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6ODM6I2RlZmluZSBtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkocHJlZml4LCByYXRlLCBpZHgpXHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTg0LSh7XHRcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjg1Olx0bXQ3OTI1X3NlcV9wdXRzX2FycmF5KHMsICNwcmVmaXggXCYjMzQ7ICh0bWFjKVwmIzM0OyxcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtODYtXHRcdFx0ICAgICAgdHhwd3ItXHUwMDNlcmF0ZSxcdFx0XFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9OTE9c3RhdGljIGlubGluZSB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6OTI6bXQ3OTI1X2VodF90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBtdDc5MjVfdHhwd3IgKnR4cHdyLCB1OCBiYW5kX2lkeClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy05My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTk3LVx0XHQgICBcJiMzNDttY3MxMlwmIzM0OywgXCYjMzQ7bWNzMTNcJiMzNDssIFwmIzM0O21jczE0XCYjMzQ7LCBcJiMzNDttY3MxNVwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6OTg6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjYsIGVodDI2LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6OTk6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUNTIsIGVodDUyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTAwOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDEwNiwgZWh0MTA2LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTAxOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI0MiwgZWh0MjQyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTAyOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDQ4NCwgZWh0NDg0LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTYsIGVodDk5NiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZ4MiwgZWh0OTk2eDIsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDY6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDQsIGVodDk5Nng0LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTA3Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2XzUyLCBlaHQyNl81MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwODpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQyNl8xMDYsIGVodDI2XzEwNiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwOTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ0ODRfMjQyLCBlaHQ0ODRfMjQyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTEwOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nl80ODQsIGVodDk5Nl80ODQsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTE6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2XzQ4NF8yNDIsIGVodDk5Nl80ODRfMjQyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTEyOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngyXzQ4NCwgZWh0OTk2eDJfNDg0LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTEzOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngzLCBlaHQ5OTZ4MywgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExNDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZ4M180ODQsIGVodDk5NngzXzQ4NCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTExNS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTExNz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTE4Om10NzkyNV90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTE5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMjAtXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKHMtXHUwMDNlcHJpdmF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTIxOlx0c3RydWN0IG10NzkyNV90eHB3ciAqdHhwd3IgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEyMi1cdHU4IGJhbmRfaWR4ID0gZGV2LVx1MDAzZW1waHkuYmFuZF9pZHg7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEzMC1cdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTMxOlx0cmV0ID0gbXQ3OTI1X2dldF90eHB3cl9pbmZvKGRldiwgYmFuZF9pZHgsIHR4cHdyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMzItXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMzgtXHRcdCAgIFwmIzM0OyBcJiMzNDssIFwmIzM0OzFtXCYjMzQ7LCBcJiMzNDsybVwmIzM0OywgXCYjMzQ7NW1cJiMzNDssIFwmIzM0OzExbVwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTM5Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KENDSywgY2NrLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNDMtXHRcdCAgIFwmIzM0OzQ4bVwmIzM0OywgXCYjMzQ7NTRtXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNDQ6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoT0ZETSwgb2ZkbSwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE0NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQ4LVx0XHQgICBcJiMzNDttY3M2XCYjMzQ7LCBcJiMzNDttY3M3XCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNDk6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSFQyMCwgaHQyMCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTUzLVx0XHQgICBcJiMzNDttY3M2XCYjMzQ7LCBcJiMzNDttY3M3XCYjMzQ7LCBcJiMzNDttY3MzMlwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTU0Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhUNDAsIGh0NDAsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1OC1cdFx0ICAgXCYjMzQ7bWNzNlwmIzM0OywgXCYjMzQ7bWNzN1wmIzM0OywgXCYjMzQ7bWNzOFwmIzM0OywgXCYjMzQ7bWNzOVwmIzM0OywgXCYjMzQ7bWNzMTBcJiMzNDssIFwmIzM0O21jczExXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNTk6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUMjAsIHZodDIwLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTYwOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDQwLCB2aHQ0MCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjI6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUODAsIHZodDgwLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTYzOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDE2MCwgdmh0MTYwLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2NTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTI2LCBoZTI2LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTY2Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFNTIsIGhlNTIsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjc6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUxMDYsIGhlMTA2LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTY4Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMjQyLCBoZTI0MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2OTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTQ4NCwgaGU0ODQsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTcxOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFOTk2LCBoZTk5NiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE3MjpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTk5NngyLCBoZTk5NngyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE3NDpcdG10NzkyNV9laHRfdHhwd3IocywgdHhwd3IsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNzUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTE4MT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTgyOm10NzkyNV9wbV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xODMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMDUtXHRwbS1cdTAwM2VlbmFibGVfdXNlciA9IHZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMDY6XHRtdDc5MjVfc2V0X3J1bnRpbWVfcG0oZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMDctXHRtdDc2X2Nvbm5hY19wb3dlcl9zYXZlX3NjaGVkKFx1MDAyNmRldi1cdTAwM2VtcGh5LCBwbSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTIxND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjE1Om10NzkyNV9wbV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjE2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjIyNDpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbSwgbXQ3OTI1X3BtX2dldCwgbXQ3OTI1X3BtX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTIyNj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjI3Om10NzkyNV9kZWVwX3NsZWVwX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyOC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI0Mi1cdHBtLVx1MDAzZWRzX2VuYWJsZSA9IGVuYWJsZSBcdTAwMjZcdTAwMjYgIW1vbml0b3I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjQzOlx0bXQ3OTI1X21jdV9zZXRfZGVlcF9zbGVlcChkZXYsIHBtLVx1MDAzZWRzX2VuYWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjQ0LW91dDpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjUwPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNTE6bXQ3OTI1X2RlZXBfc2xlZXBfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI1Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNjA6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZHMsIG10NzkyNV9kZWVwX3NsZWVwX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNjE6XHRcdFx0IG10NzkyNV9kZWVwX3NsZWVwX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTI2Mz1ERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbV9pZGxlX3RpbWVvdXQsIG10NzkyeF9wbV9pZGxlX3RpbWVvdXRfZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjY2OnN0YXRpYyBpbnQgbXQ3OTI1X2NoaXBfcmVzZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNjcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNzgtXHRcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjc5Olx0XHRyZXQgPSBtdDc5MjVfbWN1X2NoaXBfY29uZmlnKGRldiwgXCYjMzQ7YXNzZXJ0XCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yODAtXHRcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVzZXQsIE5VTEwsIG10NzkyNV9jaGlwX3Jlc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjg5OmludCBtdDc5MjVfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjkwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzA0LVx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7dHhwb3dlcl9za3VcJiMzNDssIGRpcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozMDU6XHRcdFx0XHQgICAgbXQ3OTI1X3R4cHdyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zMDYtXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3R4X3N0YXRzXCYjMzQ7LCAwNDAwLCBkaXIsIGRldiwgXHUwMDI2bXQ3OTJ4X3R4X3N0YXRzX2ZvcHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy04LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2Zpcm13YXJlLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo5OiNpbmNsdWRlIFwmIzM0O210NzkyNS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTAtI2luY2x1ZGUgXCYjMzQ7cmVnZC5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE0OnN0YXRpYyBzc2l6ZV90IG10NzkyNV90aGVybWFsX3RlbXBfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTUtXHRcdFx0XHRcdHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNC1cdFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUobWRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjU6XHRcdHRlbXBlcmF0dXJlID0gbXQ3OTI1X21jdV9nZXRfdGVtcGVyYXR1cmUocGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNi1cdFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UobWRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTM2LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzozNzpzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSX1JPKHRlbXAxX2lucHV0LCBtdDc5MjVfdGhlcm1hbF90ZW1wLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0zOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzozOTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqbXQ3OTI1X2h3bW9uX2F0dHJzW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDAtXHRcdTAwMjZzZW5zb3JfZGV2X2F0dHJfdGVtcDFfaW5wdXQuZGV2X2F0dHIuYXR0cixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDItfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo0MzpBVFRSSUJVVEVfR1JPVVBTKG10NzkyNV9od21vbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NDU6c3RhdGljIGludCBtdDc5MjVfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy01My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo1NDpcdG5hbWUgPSBkZXZtX2thc3ByaW50ZihcdTAwMjZ3aXBoeS1cdTAwM2VkZXYsIEdGUF9LRVJORUwsIFwmIzM0O210NzkyNV8lc1wmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy01NS1cdFx0XHQgICAgICB3aXBoeV9uYW1lKHdpcGh5KSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTU5LVx0aHdtb24gPSBkZXZtX2h3bW9uX2RldmljZV9yZWdpc3Rlcl93aXRoX2dyb3VwcyhcdTAwMjZ3aXBoeS1cdTAwM2VkZXYsIG5hbWUsIHBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo2MDpcdFx0XHRcdFx0XHQgICAgICAgbXQ3OTI1X2h3bW9uX2dyb3Vwcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNjEtXHRyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGh3bW9uKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NjQ6c3RhdGljIHZvaWQgbXQ3OTI1X21hY19pbml0X2Jhc2ljX3JhdGVzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNjUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy03My1cdFx0ICAgICAgIEZJRUxEX1BSRVAoTVRfVFhfUkFURV9JRFgsIHJhdGUgXHUwMDI2IEdFTk1BU0soNywgMCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjc0Olx0XHRtdDc5MjVfbWFjX3NldF9maXhlZF9yYXRlX3RhYmxlKGRldiwgaWR4LCByYXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy03NS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6Nzg6aW50IG10NzkyNV9tYWNfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTc5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtODYtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNVDc5MnhfV1RCTF9TSVpFOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo4NzpcdFx0bXQ3OTI1X21hY193dGJsX3VwZGF0ZShkZXYsIGksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtODgtXHRcdFx0XHQgICAgICAgTVRfV1RCTF9VUERBVEVfQURNX0NPVU5UX0NMRUFSKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6OTI6XHRtdDc5MjVfbWFjX2luaXRfYmFzaWNfcmF0ZXMoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy05My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjk4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tYWNfaW5pdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTAwOnN0YXRpYyBpbnQgX19tdDc5MjVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEwMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTExMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMTI6XHRyZXQgPSBtdDc5MjVfbWN1X3NldF9lZXByb20oZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMTMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTE2Olx0cmV0ID0gbXQ3OTI1X21hY19pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTE3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTIwLVx0aWYgKGlzX210NzkyNyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMjE6XHRcdHJldCA9IG10NzkyNV9tY3Vfc2V0X2RiZGMoXHUwMDI2ZGV2LVx1MDAzZW1waHksIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEyMi1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTMzOnN0YXRpYyBpbnQgbXQ3OTI1X2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTQ1Olx0XHRyZXQgPSBfX210NzkyNV9pbml0X2hhcmR3YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTQ2LVx0XHRpZiAoIXJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE2MzpzdGF0aWMgaW50IG10NzkyNV9pbml0X25hbl9jYXAoc3RydWN0IG10NzZfZGV2ICptZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE2NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE4OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxOTA6c3RhdGljIHZvaWQgbXQ3OTI1X2luaXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTkxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE5NjpcdHJldCA9IG10NzkyNV9pbml0X2hhcmR3YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTk3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjAwLVx0bXQ3Nl9zZXRfc3RyZWFtX2NhcHMoXHUwMDI2ZGV2LVx1MDAzZW1waHksIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIwMTpcdG10NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzKFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwMi1cdG10NzkyeF9jb25maWdfbWFjX2FkZHJfbGlzdChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMDQ6XHRyZXQgPSBtdDc5MjVfaW5pdF9tbG9fY2FwcyhcdTAwMjZkZXYtXHUwMDNlcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMDUtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMTA6XHRkZXYtXHUwMDNlbXQ3Ni5pbml0X3dpcGh5ID0gbXQ3OTI1X2luaXRfbmFuX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIxOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMTk6XHRyZXQgPSBtdDc5MjVfaW5pdF9kZWJ1Z2ZzKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjIwLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjI1Olx0cmV0ID0gbXQ3OTI1X3RoZXJtYWxfaW5pdChcdTAwMjZkZXYtXHUwMDNlcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMjYtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMzE6XHRyZXQgPSBtdDc5MjVfbWN1X3NldF90aGVybWFsX3Byb3RlY3QoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMzItXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNDA6XHRtdDc5MjVfbWN1X3NldF9kZWVwX3NsZWVwKGRldiwgZGV2LVx1MDAzZXBtLmRzX2VuYWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjQxLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjQzOmludCBtdDc5MjVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjQ0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjUzLVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBtLnBzX3dvcmssIG10NzkyeF9wbV9wb3dlcl9zYXZlX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI1NDpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2VtbG9fcG1fd29yaywgbXQ3OTI1X21sb19wbV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNTUtXHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBtLndha2Vfd29yaywgbXQ3OTJ4X3BtX3dha2Vfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI2MS1cdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2VtcGh5Lm1hY193b3JrLCBtdDc5MnhfbWFjX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI2MjpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2VwaHkuc2Nhbl93b3JrLCBtdDc5MjVfc2Nhbl93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNjM6XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZkZXYtXHUwMDNlY29yZWR1bXAud29yaywgbXQ3OTI1X2NvcmVkdW1wX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI2NC0jaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNjU6XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZWlwdjZfbnNfd29yaywgbXQ3OTI1X3NldF9pcHY2X25zX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI2Ni1cdHNrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2ZGV2LVx1MDAzZWlwdjZfbnNfbGlzdCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNzE6XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXJlc2V0X3dvcmssIG10NzkyNV9tYWNfcmVzZXRfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjcyOlx0SU5JVF9XT1JLKFx1MDAyNmRldi1cdTAwM2Vpbml0X3dvcmssIG10NzkyNV9pbml0X3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNzQ6XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBoeS5yb2Nfd29yaywgbXQ3OTI1X3JvY193b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNzUtXHR0aW1lcl9zZXR1cChcdTAwMjZkZXYtXHUwMDNlcGh5LnJvY190aW1lciwgbXQ3OTJ4X3JvY190aW1lciwgMCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTMwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzozMDI6XHRody1cdTAwM2V3aXBoeS1cdTAwM2VyZWdfbm90aWZpZXIgPSBtdDc5MjVfcmVnZF9ub3RpZmllcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0zMDMtXHRkZXYtXHUwMDNlbXBoeS5zYmFuZF8yZy5zYmFuZC5odF9jYXAuY2FwIHw9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTMyOS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MzMwOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9yZWdpc3Rlcl9kZXZpY2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTYtI2luY2x1ZGUgXHUwMDNjbGludXgvdGltZWtlZXBpbmcuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NzojaW5jbHVkZSBcJiMzNDttdDc5MjUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtOC0jaW5jbHVkZSBcJiMzNDsuLi9kbWEuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTM6Ym9vbCBtdDc5MjVfbWFjX3d0YmxfdXBkYXRlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGludCBpZHgsIHUzMiBtYXNrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6Mjk6c3RhdGljIHZvaWQgbXQ3OTI1X21hY19zdGFfcG9sbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMzAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTY1LVx0XHRpZHggPSBtbGluay1cdTAwM2V3Y2lkLmlkeDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjY2Olx0XHRhZGRyID0gbXQ3OTI1X21hY193dGJsX2xtYWNfYWRkcihkZXYsIGlkeCwgTVRfV1RCTF9BQzBfQ1RUX09GRlNFVCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy02Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04NC1cdFx0aWYgKGNsZWFyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4NTpcdFx0XHRtdDc5MjVfbWFjX3d0YmxfdXBkYXRlKGRldiwgaWR4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODYtXHRcdFx0XHRcdCAgICAgICBNVF9XVEJMX1VQREFURV9BRE1fQ09VTlRfQ0xFQVIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEzMDpcdFx0YWRkciA9IG10NzkyNV9tYWNfd3RibF9sbWFjX2FkZHIoZGV2LCBpZHgsIDYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTMxLVx0XHR2YWwgPSBtdDc2X3JyKGRldiwgYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzItXHRcdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBSQVRFX0lORk9fRkxBR1NfRUhUX01DUykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTMzOlx0XHRcdGFkZHIgPSBtdDc5MjVfbWFjX3d0YmxfbG1hY19hZGRyKGRldiwgaWR4LCA1KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEzNC1cdFx0XHR2YWwgPSBtdDc2X3JyKGRldiwgYWRkcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ4LVx0XHQvKiBnZXQgc2lnbmFsIHN0cmVuZ3RoIG9mIHJlc3AgZnJhbWVzIChDVFMvQkEvQUNLKSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ5Olx0XHRhZGRyID0gbXQ3OTI1X21hY193dGJsX2xtYWNfYWRkcihkZXYsIGlkeCwgMzQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTUwLVx0XHR2YWwgPSBtdDc2X3JyKGRldiwgYWRkcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTY0OnZvaWQgbXQ3OTI1X21hY19zZXRfZml4ZWRfcmF0ZV90YWJsZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTY1LVx0XHRcdFx0ICAgICB1OCB0YmxfaWR4LCB1MTYgcmF0ZV9pZHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTgyLS8qIFRoZSBIVyBkb2VzIG5vdCB0cmFuc2xhdGUgdGhlIG1hYyBoZWFkZXIgdG8gODAyLjMgZm9yIG1lc2ggcG9pbnQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE4MzpzdGF0aWMgaW50IG10NzkyNV9yZXZlcnNlX2ZyYWcwX2hkcl90cmFucyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgaGRyX2dhcClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE4NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MjYyPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjI2MzptdDc5MjVfbWFjX2ZpbGxfcnhfcmF0ZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMjY0LVx0XHRcdHN0cnVjdCBtdDc2X3J4X3N0YXR1cyAqc3RhdHVzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTM3Mj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzozNzM6bXQ3OTI1X21hY19maWxsX3J4KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0zNzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTU1Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjU1MzpcdFx0cmV0ID0gbXQ3OTI1X21hY19maWxsX3J4X3JhdGUoZGV2LCBzdGF0dXMsIHNiYW5kLCByeHYsIFx1MDAyNm1vZGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNTU0LVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTU2Ni1cdGlmIChoZHJfdHJhbnMgXHUwMDI2XHUwMDI2IGllZWU4MDIxMV9oYXNfbW9yZWZyYWdzKGZjKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NTY3Olx0XHRpZiAobXQ3OTI1X3JldmVyc2VfZnJhZzBfaGRyX3RyYW5zKHNrYiwgaGRyX2dhcCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy01NjgtXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9NjQwPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo2NDE6bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjMoX19sZTMyICp0eHdpLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNjQyLVx0XHRcdCAgIHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9Njc1PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo2NzY6bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjExKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy02NzctXHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9NzQ2PXZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjc0NzptdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTc0OC1cdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04NDAtXHRpZiAoaXNfODAyMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg0MTpcdFx0bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjModHh3aSwgc2tiLCB3Y2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg0Mi1cdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg0MzpcdFx0bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjExKGRldiwgdHh3aSwgc2tiLCBrZXkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODQ0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg2Ny19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4Njg6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21hY193cml0ZV90eHdpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg2OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg3MDpzdGF0aWMgdm9pZCBtdDc5MjVfdHhfY2hlY2tfYWdncihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODcxLVx0XHRcdFx0IHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9OTI0PXN0YXRpYyBib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo5MjU6bXQ3OTI1X21hY19hZGRfdHhzX3NrYihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtOTI2LVx0XHQgICAgICAgaW50IHBpZCwgX19sZTMyICp0eHNfZGF0YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xMTkzPXZvaWQgbXQ3OTI4X21hY19hZGRfdHhzX21zZyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMjMwOnZvaWQgbXQ3OTI1X21hY19hZGRfdHhzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjMxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTI2NDpcdG10NzkyNV9tYWNfYWRkX3R4c19za2IoZGV2LCB3Y2lkLCBwaWQsIHR4c19kYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyNjUtXHRpZiAoIXdjaWQtXHUwMDNlc3RhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMjc0OnZvaWQgbXQ3OTI1X3R4d2lfZnJlZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl90eHdpX2NhY2hlICp0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTI3NS1cdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjg4LVx0XHRpZiAobGlrZWx5KHQtXHUwMDNlc2tiLVx1MDAzZXByb3RvY29sICE9IGNwdV90b19iZTE2KEVUSF9QX1BBRSkpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTI4OTpcdFx0XHRtdDc5MjVfdHhfY2hlY2tfYWdncihzdGEsIHQtXHUwMDNlc2tiLCB3Y2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyOTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTMwMC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMzAxOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV90eHdpX2ZyZWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTMwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTEzMDM9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEzMDQ6bXQ3OTI1X21hY190eF9mcmVlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEsIGludCBsZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzA1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTM3MTpcdFx0XHRtdDc5MjVfdHh3aV9mcmVlKGRldiwgdHh3aSwgc3RhLCB3Y2lkLCBcdTAwMjZmcmVlX2xpc3QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTM3Mi1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEzNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMzc1Olx0bXQ3OTI1X21hY19zdGFfcG9sbChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTM3Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTM4ODpib29sIG10NzkyNV9yeF9jaGVjayhzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKmRhdGEsIGludCBsZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzg5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDA3LVx0XHRcdHJldHVybiBmYWxzZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0MDg6XHRcdG10NzkyNV9tYWNfdHhfZnJlZShkZXYsIGRhdGEsIGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDA5LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQxMS1cdFx0Zm9yIChyeGQgJiM0Mzs9IDQ7IHJ4ZCAmIzQzOyAxMiBcdTAwM2M9IGVuZDsgcnhkICYjNDM7PSAxMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0MTI6XHRcdFx0bXQ3OTI1X21hY19hZGRfdHhzKGRldiwgcnhkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MTMtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDE3LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0MTg6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3J4X2NoZWNrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDIwOnZvaWQgbXQ3OTI1X3F1ZXVlX3J4X3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MjEtXHRcdFx0IHN0cnVjdCBza19idWZmICpza2IsIHUzMiAqaW5mbylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDQ3LVx0XHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDQ4Olx0XHRtdDc5MjVfbWFjX3R4X2ZyZWUoZGV2LCBza2ItXHUwMDNlZGF0YSwgc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDQ5LVx0XHRuYXBpX2NvbnN1bWVfc2tiKHNrYiwgMSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ1MS1cdGNhc2UgUEtUX1RZUEVfUlhfRVZFTlQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDUyOlx0XHRtdDc5MjVfbWN1X3J4X2V2ZW50KGRldiwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NTMtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NTUtXHRcdGZvciAocnhkICYjNDM7PSAyOyByeGQgJiM0MzsgOCBcdTAwM2M9IGVuZDsgcnhkICYjNDM7PSA4KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ1NjpcdFx0XHRtdDc5MjVfbWFjX2FkZF90eHMoZGV2LCByeGQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ1Ny1cdFx0ZGV2X2tmcmVlX3NrYihza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NjAtXHRjYXNlIFBLVF9UWVBFX05PUk1BTDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0NjE6XHRcdGlmICghbXQ3OTI1X21hY19maWxsX3J4KGRldiwgc2tiKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ2Mi1cdFx0XHRtdDc2X3J4KFx1MDAyNmRldi1cdTAwM2VtdDc2LCBxLCBza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NzAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ3MTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfcXVldWVfcnhfc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNDczPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDc0Om10NzkyNV92aWZfY29ubmVjdF9pdGVyKHZvaWQgKnByaXYsIHU4ICptYWMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDc1LVx0XHRcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDM2MQoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNvbnNpZGVyaW5nIFVTQiBGdXp6aW5nIGZvciB0aGUgTVQ3OTI1KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGBtdDc5MjVgIGRyaXZlciBhbmQgaXRzIFVTQiBzdXBwb3J0IOKAkyBzcGVjaWZpY2FsbHksIHRoYXQgYENPTkZJR19NVDc5MjVVYCBvcHRpb24uIFRoZSBxdWVzdGlvbiB0aGF0IHBvcHMgdXAsIG9mIGNvdXJzZSwgaXMgd2hldGhlciB3ZSBjYW4gbGV2ZXJhZ2UgdGhhdCBVU0IgZnVuY3Rpb25hbGl0eSBmb3IgZnV6emluZy4gQ2FuIHdlIGdldCBhdCBgbXQ3OTI1dWAgdXNpbmcgVVNCIGVtdWxhdGlvbiwgc29tZXRoaW5nIGxpa2Ugc3l6a2FsbGVyJiMzOTtzIFVTQiByYXcgZ2FkZ2V0IGZ1bmN0aW9uYWxpdHkgb3IgYSBicm9hZGVyIFVTQiBlbXVsYXRpb24gc2V0dXA/IFRoZSBrZXkgaGVyZSBpcyB0byBkZXRlcm1pbmUgaG93IHRoZSBgbXQ3OTI1dWAgbW9kdWxlIGlzIHByb2JlZCBhbmQgcmVnaXN0ZXJlZC4gVW5kZXJzdGFuZGluZyB0aGF0IHByb2Nlc3MgaXMgZ29pbmcgdG8gYmUgY3JpdGljYWwgZm9yIGNyYWZ0aW5nIGVmZmVjdGl2ZSBmdXp6aW5nIHN0cmF0ZWdpZXMuIFdlIG5lZWQgdG8ga25vdyBob3cgaXQgaW5pdGlhbGl6ZXMsIHdoYXQgZW50cnkgcG9pbnRzIGl0IHVzZXMsIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIFVTQiBzdWJzeXN0ZW0gdG8gZWZmZWN0aXZlbHkgY3JhZnQgYW5kIGluamVjdCBvdXIgZnV6emluZyBwYXlsb2Fkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHQvKiBDb3B5cmlnaHQgKEMpIDIwMjMgTWVkaWFUZWsgSW5jLiAqL1xuICAgMzpcdFxuICAgNDpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gICA1Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgIDY6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC91c2IuaFx1MDAzZVxuICAgNzpcdFxuICAgODpcdCNpbmNsdWRlIFwmIzM0O210NzkyNS5oXCYjMzQ7XG4gICA5Olx0I2luY2x1ZGUgXCYjMzQ7bWN1LmhcJiMzNDtcbiAgMTA6XHQjaW5jbHVkZSBcJiMzNDttYWMuaFwmIzM0O1xuICAxMTpcdFxuICAxMjpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBtdDc5MjV1X2RldmljZV90YWJsZVtdID0ge1xuICAxMzpcdFx0eyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDBlOGQsIDB4NjYzOSwgMHhmZiwgMHhmZiwgMHhmZiksXG4gIDE0Olx0XHRcdC5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdClNVDc5MjVfRklSTVdBUkVfV00gfSxcbiAgMTU6XHRcdHsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oMHgwZThkLCAweDc5MjUsIDB4ZmYsIDB4ZmYsIDB4ZmYpLFxuICAxNjpcdFx0XHQuZHJpdmVyX2luZm8gPSAoa2VybmVsX3Vsb25nX3QpTVQ3OTI1X0ZJUk1XQVJFX1dNIH0sXG4gIDE3Olx0XHQvKiBOZXRnZWFyLCBJbmMuIEE4NTAwICovXG4gIDE4Olx0XHR7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MDg0NiwgMHg5MDUwLCAweGZmLCAweGZmLCAweGZmKSxcbiAgMTk6XHRcdFx0LmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KU1UNzkyNV9GSVJNV0FSRV9XTSB9LFxuICAyMDpcdFx0LyogTmV0Z2VhciwgSW5jLiBBOTAwMCAqL1xuICAyMTpcdFx0eyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDA4NDYsIDB4OTA3MiwgMHhmZiwgMHhmZiwgMHhmZiksXG4gIDIyOlx0XHRcdC5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdClNVDc5MjVfRklSTVdBUkVfV00gfSxcbiAgMjM6XHRcdHsgfSxcbiAgMjQ6XHR9O1xuICAyNTpcdFxuICAyNjpcdHN0YXRpYyBpbnRcbiAgMjc6XHRtdDc5MjV1X21jdV9zZW5kX21lc3NhZ2Uoc3RydWN0IG10NzZfZGV2ICptZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuICAyODpcdFx0XHRcdCBpbnQgY21kLCBpbnQgKnNlcSlcbiAgMjk6XHR7XG4gIDMwOlx0XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MnhfZGV2LCBtdDc2KTtcbiAgMzE6XHRcdHUzMiBwYWQsIGVwO1xuICAzMjpcdFx0aW50IHJldDtcbiAgMzM6XHRcbiAgMzQ6XHRcdHJldCA9IG10NzkyNV9tY3VfZmlsbF9tZXNzYWdlKG1kZXYsIHNrYiwgY21kLCBzZXEpO1xuICAzNTpcdFx0aWYgKHJldClcbiAgMzY6XHRcdFx0cmV0dXJuIHJldDtcbiAgMzc6XHRcbiAgMzg6XHRcdG1kZXYtXHUwMDNlbWN1LnRpbWVvdXQgPSAzICogSFo7XG4gIDM5Olx0XG4gIDQwOlx0XHRpZiAoY21kICE9IE1DVV9DTUQoRldfU0NBVFRFUikpXG4gIDQxOlx0XHRcdGVwID0gTVRfRVBfT1VUX0lOQkFORF9DTUQ7XG4gIDQyOlx0XHRlbHNlXG4gIDQzOlx0XHRcdGVwID0gTVRfRVBfT1VUX0FDX0JFO1xuICA0NDpcdFxuICA0NTpcdFx0bXQ3OTJ4X3NrYl9hZGRfdXNiX3NkaW9faGRyKGRldiwgc2tiLCAwKTtcbiAgNDY6XHRcdHBhZCA9IHJvdW5kX3VwKHNrYi1cdTAwM2VsZW4sIDQpICYjNDM7IDQgLSBza2ItXHUwMDNlbGVuO1xuICA0NzpcdFx0X19za2JfcHV0X3plcm8oc2tiLCBwYWQpO1xuICA0ODpcdFxuICA0OTpcdFx0cmV0ID0gbXQ3NnVfYnVsa19tc2coXHUwMDI2ZGV2LVx1MDAzZW10NzYsIHNrYi1cdTAwM2VkYXRhLCBza2ItXHUwMDNlbGVuLCBOVUxMLFxuICA1MDpcdFx0XHRcdCAgICAgMTAwMCwgZXApO1xuICA1MTpcdFx0ZGV2X2tmcmVlX3NrYihza2IpO1xuICA1MjpcdFxuICA1MzpcdFx0cmV0dXJuIHJldDtcbiAgNTQ6XHR9XG4gIDU1Olx0XG4gIDU2Olx0c3RhdGljIGludCBtdDc5MjV1X21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gIDU3Olx0e1xuICA1ODpcdFx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc2X21jdV9vcHMgbWN1X29wcyA9IHtcbiAgNTk6XHRcdFx0LmhlYWRyb29tID0gTVRfU0RJT19IRFJfU0laRSAmIzQzO1xuICA2MDpcdFx0XHRcdCAgICBzaXplb2Yoc3RydWN0IG10NzZfY29ubmFjMl9tY3VfdHhkKSxcbiAgNjE6XHRcdFx0LnRhaWxyb29tID0gTVRfVVNCX1RBSUxfU0laRSxcbiAgNjI6XHRcdFx0Lm1jdV9za2Jfc2VuZF9tc2cgPSBtdDc5MjV1X21jdV9zZW5kX21lc3NhZ2UsXG4gIDYzOlx0XHRcdC5tY3VfcGFyc2VfcmVzcG9uc2UgPSBtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlLFxuICA2NDpcdFx0fTtcbiAgNjU6XHRcdGludCByZXQ7XG4gIDY2Olx0XG4gIDY3Olx0XHRkZXYtXHUwMDNlbXQ3Ni5tY3Vfb3BzID0gXHUwMDI2bWN1X29wcztcbiAgNjg6XHRcbiAgNjk6XHRcdG10NzZfc2V0KGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XG4gIDcwOlx0XHRyZXQgPSBtdDc5MjVfcnVuX2Zpcm13YXJlKGRldik7XG4gIDcxOlx0XHRpZiAocmV0KVxuICA3MjpcdFx0XHRyZXR1cm4gcmV0O1xuICA3MzpcdFxuICA3NDpcdFx0c2V0X2JpdChNVDc2X1NUQVRFX01DVV9SVU5OSU5HLCBcdTAwMjZkZXYtXHUwMDNlbXBoeS5zdGF0ZSk7XG4gIDc1Olx0XHRtdDc2X2NsZWFyKGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XG4gIDc2Olx0XG4gIDc3Olx0XHRyZXR1cm4gMDtcbiAgNzg6XHR9XG4gIDc5Olx0XG4gIDgwOlx0c3RhdGljIGludCBtdDc5MjV1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuICA4MTpcdHtcbiAgODI6XHRcdGludCBlcnI7XG4gIDgzOlx0XG4gIDg0Olx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGV2LVx1MDAzZW10NzYuYnVzX2h1bmcpKVxuICA4NTpcdFx0XHRyZXR1cm4gMDtcbiAgODY6XHRcbiAgODc6XHRcdG10NzkyeHVfcmVzZXRfb25fYnVzX2Vycm9yKGRldik7XG4gIDg4Olx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGV2LVx1MDAzZW10NzYuYnVzX2h1bmcpKVxuICA4OTpcdFx0XHRyZXR1cm4gMDtcbiAgOTA6XHRcbiAgOTE6XHRcdG10NzZfdHhxX3NjaGVkdWxlX2FsbChcdTAwMjZkZXYtXHUwMDNlbXBoeSk7XG4gIDkyOlx0XHRtdDc2X3dvcmtlcl9kaXNhYmxlKFx1MDAyNmRldi1cdTAwM2VtdDc2LnR4X3dvcmtlcik7XG4gIDkzOlx0XG4gIDk0Olx0XHRzZXRfYml0KE1UNzZfUkVTRVQsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbiAgOTU6XHRcdHNldF9iaXQoTVQ3Nl9NQ1VfUkVTRVQsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbiAgOTY6XHRcbiAgOTc6XHRcdHdha2VfdXAoXHUwMDI2ZGV2LVx1MDAzZW10NzYubWN1LndhaXQpO1xuICA5ODpcdFx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1jdS5yZXNfcSk7XG4gIDk5Olx0XG4gMTAwOlx0XHRtdDc2dV9zdG9wX3J4KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjM5MwoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIHRoZSBDb2RlOiBMb2NhdGluZyB0aGUgQ2hhbmdlKioKCk9rYXksIHNvIHdlIG5lZWQgdG8gcGlucG9pbnQgZXhhY3RseSB3aGVyZSB0aGlzIGJlaGF2aW9yIG1hbmlmZXN0ZWQsIHNvIGxldCYjMzk7cyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGBtYWMuY2AuIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIHJlbGV2YW50IGNoYW5nZXMgZGlyZWN0bHkgaW4gdGhlIGZpbGUsIHByb2JhYmx5IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuY2AuICBJIG5lZWQgdG8gZXhhbWluZSB0aGUgcGF0Y2ggY29udGV4dCB0aGVyZTsgdGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY3J1Y2lhbCBkZXRhaWxzIGFib3V0IHRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhpcyBiZWhhdmlvci4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBsaW5lcyBvZiBjb2RlIGFuZCB0aGUgc3Vycm91bmRpbmcgY2hhbmdlcyB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA3ODA6XHRcdH0gZWxzZSBpZiAocWlkIFx1MDAzZT0gTVRfVFhRX1BTRCkge1xuIDc4MTpcdFx0XHRwX2ZtdCA9IG10NzZfaXNfbW1pbyhkZXYpID8gTVRfVFhfVFlQRV9DVCA6IE1UX1RYX1RZUEVfU0Y7XG4gNzgyOlx0XHRcdHFfaWR4ID0gTVRfTE1BQ19BTFRYMDtcbiA3ODM6XHRcdH0gZWxzZSB7XG4gNzg0Olx0XHRcdHBfZm10ID0gbXQ3Nl9pc19tbWlvKGRldikgPyBNVF9UWF9UWVBFX0NUIDogTVRfVFhfVFlQRV9TRjtcbiA3ODU6XHRcdFx0cV9pZHggPSB3bW1faWR4ICogTVQ3Nl9DT05OQUNfTUFYX1dNTV9TRVRTICYjNDM7XG4gNzg2Olx0XHRcdFx0bXQ3Nl9jb25uYWNfbG1hY19tYXBwaW5nKHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpKTtcbiA3ODc6XHRcbiA3ODg6XHRcdFx0LyogY291bnRpbmcgbm9uLW9mZmxvYWRpbmcgc2ticyAqL1xuIDc4OTpcdFx0XHR3Y2lkLVx1MDAzZXN0YXRzLnR4X2J5dGVzICYjNDM7PSBza2ItXHUwMDNlbGVuO1xuIDc5MDpcdFx0XHR3Y2lkLVx1MDAzZXN0YXRzLnR4X3BhY2tldHMmIzQzOyYjNDM7O1xuIDc5MTpcdFx0fVxuIDc5MjpcdFxuIDc5MzpcdFx0dmFsID0gRklFTERfUFJFUChNVF9UWEQwX1RYX0JZVEVTLCBza2ItXHUwMDNlbGVuICYjNDM7IHN6X3R4ZCkgfFxuIDc5NDpcdFx0ICAgICAgRklFTERfUFJFUChNVF9UWEQwX1BLVF9GTVQsIHBfZm10KSB8XG4gNzk1Olx0XHQgICAgICBGSUVMRF9QUkVQKE1UX1RYRDBfUV9JRFgsIHFfaWR4KTtcbiA3OTY6XHRcdHR4d2lbMF0gPSBjcHVfdG9fbGUzMih2YWwpO1xuIDc5NzpcdFxuIDc5ODpcdFx0dmFsID0gRklFTERfUFJFUChNVF9UWEQxX1dMQU5fSURYLCB3Y2lkLVx1MDAzZWlkeCkgfFxuIDc5OTpcdFx0ICAgICAgRklFTERfUFJFUChNVF9UWEQxX09XTl9NQUMsIG9tYWNfaWR4KTtcbiA4MDA6XHRcbiA4MDE6XHRcdC8qIDB4ZmYgbWVhbnMgQkFORF9BVVRPIHRvIHRoZSBmaXJtd2FyZSwgYW5kIFRHSUQgY2Fubm90IGVuY29kZSBpdCAqL1xuIDgwMjpcdFx0aWYgKGJhbmRfaWR4IFx1MDAyNlx1MDAyNiBiYW5kX2lkeCAhPSAweGZmKVxuIDgwMzpcdFx0XHR2YWwgfD0gRklFTERfUFJFUChNVF9UWEQxX1RHSUQsIGJhbmRfaWR4KTtcbiA4MDQ6XHRcbiA4MDU6XHRcdHR4d2lbMV0gPSBjcHVfdG9fbGUzMih2YWwpO1xuIDgwNjpcdFx0dHh3aVsyXSA9IDA7XG4gODA3Olx0XG4gODA4Olx0XHR2YWwgPSBGSUVMRF9QUkVQKE1UX1RYRDNfUkVNX1RYX0NPVU5ULCAxNSk7XG4gODA5Olx0XG4gODEwOlx0XHRpZiAoa2V5KVxuIDgxMTpcdFx0XHR2YWwgfD0gTVRfVFhEM19QUk9URUNUX0ZSQU1FO1xuIDgxMjpcdFx0aWYgKGluZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9DVExfTk9fQUNLKVxuIDgxMzpcdFx0XHR2YWwgfD0gTVRfVFhEM19OT19BQ0s7XG4gODE0Olx0XHRpZiAod2NpZC1cdTAwM2VhbXNkdSlcbiA4MTU6XHRcdFx0dmFsIHw9IE1UX1RYRDNfSFdfQU1TRFU7XG4gODE2Olx0XG4gODE3Olx0XHR0eHdpWzNdID0gY3B1X3RvX2xlMzIodmFsKTtcbiA4MTg6XHRcdHR4d2lbNF0gPSAwO1xuIDgxOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNDE5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkludmVzdGlnYXRpbmcgdGhlIGBtdDc5MjVfbWFjX3dyaXRlX3R4d2lgIEZ1bmN0aW9uKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGlzIGBtdDc5MjVfbWFjX3dyaXRlX3R4d2lgIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZC4gVGhhdCBmdW5jdGlvbiBuYW1lIHNvdW5kcyBzcGVjaWZpYyB0byB0aGUgTVQ3OTI1IHdpcmVsZXNzIGNoaXBzZXQsIGxpa2VseSByZWxhdGVkIHRvIHdyaXRpbmcgdGhlIFRyYW5zbWl0IFdpcmVsZXNzIEluZm9ybWF0aW9uIChUWFdJKSB3aGljaCBpcyBjcnVjaWFsIGZvciBjb25maWd1cmluZyBob3cgYSBwYWNrZXQgaXMgdHJhbnNtaXR0ZWQgb3ZlciB0aGUgYWlyLiBBIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGFzIGFsd2F5cywgaXMgdG8gZmluZCB0aGUgY2FsbCBzaXRlcy4gVGltZSB0byBncmVwLiBJJiMzOTtsbCBmaXJlIHVwIHRoZSBjb21tYW5kLWxpbmUgYW5kIGRvIGEgcXVpY2sgc2VhcmNoIGZvciB0aGF0IGZ1bmN0aW9uIG5hbWUgYWNyb3NzIHRoZSByZWxldmFudCBjb2RlYmFzZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGxpc3Qgb2YgYWxsIHRoZSBwbGFjZXMgd2l0aGluIHRoZSBkcml2ZXIgd2hlcmUgdGhpcyBjcml0aWNhbCBUWFdJIGZ1bmN0aW9uIGlzIHVzZWQuIEZyb20gdGhlcmUsIEkgY2FuIHN0YXJ0IHRvIGJ1aWxkIGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZSBUWCBwYXRoIGFuZCBob3cgdGhlIHdpcmVsZXNzIE1BQyBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUgdG8gZ2V0IHBhY2tldHMgc2VudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDM6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1X21hY193cml0ZV90eHdpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz02NDA9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjY0MTptdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMyhfX2xlMzIgKnR4d2ksIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy02NDItXHRcdFx0ICAgc3RydWN0IG10NzZfd2NpZCAqd2NpZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz02NzU9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjY3NjptdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMTEoc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTY3Ny1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz03NDY9dm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NzQ3Om10NzkyNV9tYWNfd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNzQ4LVx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg0MC1cdGlmIChpc184MDIzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODQxOlx0XHRtdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMyh0eHdpLCBza2IsIHdjaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODQyLVx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODQzOlx0XHRtdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMTEoZGV2LCB0eHdpLCBza2IsIGtleSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04NDQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODY3LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg2ODpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWFjX3dyaXRlX3R4d2kpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODY5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTE2MjI9bXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2koc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjI5LVx0bWVtc2V0KHR4d2ksIDAsIE1UX1NESU9fVFhEX1NJWkUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTYzMDpcdG10NzkyNV9tYWNfd3JpdGVfdHh3aShcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgdHh3aSwgc2tiLCB3Y2lkLCBrZXksIHBpZCwgcWlkLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2MzEtXHRza2JfcHVzaChza2IsIE1UX1NESU9fVFhEX1NJWkUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTM0Mj12b2lkIG10NzkyNV9tYWNfc2V0X2ZpeGVkX3JhdGVfdGFibGUoc3RydWN0IG10NzkyeF9kZXYgKmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM0My1cdFx0XHRcdCAgICAgdTggdGJsX2lkeCwgdTE2IHJhdGVfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjM0NDp2b2lkIG10NzkyNV9tYWNfd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzQ1LVx0XHRcdCAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jPTk9aW50IG10NzkyNWVfdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmMtNDQtXHRwaWQgPSBtdDc2X3R4X3N0YXR1c19za2JfYWRkKG1kZXYsIHdjaWQsIHR4X2luZm8tXHUwMDNlc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYzo0NTpcdG10NzkyNV9tYWNfd3JpdGVfdHh3aShtZGV2LCB0eHdpX3B0ciwgdHhfaW5mby1cdTAwM2Vza2IsIHdjaWQsIGtleSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYy00Ni1cdFx0XHQgICAgICBwaWQsIHFpZCwgMCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MTIyCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgSSB1bmRlcnN0YW5kIHRoZSBzaXR1YXRpb246CgoqKlRyYWNpbmcgdGhlIFR4V0kgQ29uZmlndXJhdGlvbiBQYXRoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYG10NzkyNV9tYWNfd3JpdGVfdHh3aWAgZnVuY3Rpb24uIEl0IHNlZW1zIHRvIGJlIHRoZSBjb3JlIGZ1bmN0aW9uIGZvciB3cml0aW5nIHRoZSB0cmFuc21pdCBXaS1GaSBpbmZvcm1hdGlvbiAoVHhXSSksIGFuZCBpdCYjMzk7cyBjYWxsZWQgYnkgdHdvIG90aGVyIGZ1bmN0aW9uczogYG10NzkyNV91c2Jfc2Rpb193cml0ZV90eHdpYCBhbmQgYG10NzkyNWVfdHhfcHJlcGFyZV9za2JgLiBNeSBwcmltYXJ5IGludGVyZXN0IHJpZ2h0IG5vdyBpcyBmaWd1cmluZyBvdXQgdGhlIGNvbXBsZXRlIHBhdGggdGhhdCBsZWFkcyB0byBgbXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2lgIGJlaW5nIGNhbGxlZC4gS25vd2luZyB0aGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgVVNCIGFuZCBTRElPIGludGVyZmFjZXMgYXJlIGJlaW5nIGhhbmRsZWQgaW4gdGhlIE1lZGlhVGVrIHN5c3RlbS4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGZ1bmN0aW9ucyBjYWxsIGBtdDc5MjVfdXNiX3NkaW9fd3JpdGVfdHh3aWAgc3BlY2lmaWNhbGx5LiBUaGlzIHdpbGwgaGVscCBtZSB0cmFjZSB0aGUgZGF0YSBmbG93IGludm9sdmVkIGluIHRyYW5zbWl0dGluZyBwYWNrZXRzIHZpYSB0aG9zZSBpbnRlcmZhY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjVfdXNiX3NkaW9fd3JpdGVfdHh3aSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MTYyMT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTYyMjptdDc5MjVfdXNiX3NkaW9fd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYyMy1cdFx0XHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNjM0PWludCBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjY0LVx0cGt0aWQgPSBtdDc2X3R4X3N0YXR1c19za2JfYWRkKFx1MDAyNmRldi1cdTAwM2VtdDc2LCB3Y2lkLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTY2NTpcdG10NzkyNV91c2Jfc2Rpb193cml0ZV90eHdpKGRldiwgd2NpZCwgcWlkLCBzdGEsIGtleSwgcGt0aWQsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjY2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTg0MwoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2U6CgoqKkludmVzdGlnYXRpbmcgdGhlIG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAuIEJhc2VkIG9uIHRoZSBuYW1lLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhpcyBmdW5jdGlvbiBwbGF5cyBhIGNydWNpYWwgcm9sZSBpbiBwcmVwYXJpbmcgU0tCcyAoU29ja2V0IEJ1ZmZlcnMpIGZvciB0cmFuc21pc3Npb24sIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBVU0Igb3IgU0RJTyBpbnRlcmZhY2Ugd2l0aCB0aGUgbXQ3OTI1IGNoaXBzZXQuIEdpdmVuIHRoYXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBNeSBpbml0aWFsIGh1bmNoLCBhbmQgaXQmIzM5O3MgcHJhY3RpY2FsbHkgYSBjZXJ0YWludHksIGlzIHRoYXQgaXQmIzM5O3MgcGFydCBvZiB0aGUgYG10NzkyNXVgIG9yLCBwb3RlbnRpYWxseSwgdGhlIFVTQiBkcml2ZXIgaXRzZWxmLiBOb3cgSSBuZWVkIHRvIHNlZSBob3cgYW5kIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLiBXaGVyZSBhcmUgdGhlIHJlZmVyZW5jZXM/IFRoZSBnb2FsIGlzIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgaW50ZWdyYXRpb24gYW5kIHB1cnBvc2Ugd2l0aGluIHRoZSBkcml2ZXImIzM5O3MgdHJhbnNtaXQgcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDM6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNjIyPW10NzkyNV91c2Jfc2Rpb193cml0ZV90eHdpKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYzMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE2MzQ6aW50IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYzNS1cdFx0XHRcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2NzgtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTY3OTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTY4MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zNjk9aW50IG10NzkyNV9tY3VfZ2V0X3RlbXBlcmF0dXJlKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzcxOmludCBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM3Mi1cdFx0XHRcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTE1MD1zdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1OS1cdFx0XHRcdFNVUlZFWV9JTkZPX1RJTUVfQlNTX1JYLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTYwOlx0XHQudHhfcHJlcGFyZV9za2IgPSBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNjEtXHRcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc5MjVfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjkwOQoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRGl2aW5nIGludG8gdGhlIE1UNzkyNVUgVVNCIFByb2JlIEZ1bmN0aW9uKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IHdpdGggdGhpcyBNVDc5MjVVIGRyaXZlci4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgVVNCIGludGVyZmFjZSBpcyBpbml0aWFsaXplZCB3b3VsZCBiZSB0aGUgcHJvYmUgZnVuY3Rpb24uIFNvLCBJIG5lZWQgdG8gY2hlY2sgb3V0IGBtdDc5MjV1X3Byb2JlYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmNgLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIGluaXRpYWwgZGV2aWNlIHNldHVwLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQgYW55IHByZWxpbWluYXJ5IGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byB0aGUgVVNCIGNvbm5lY3Rpb24uIExldCYjMzk7cyBob3BlIGl0JiMzOTtzIHdlbGwtY29tbWVudGVkOyB0aGlzIGlzIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBiaXRzIHVzdWFsbHkgc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE0NTpcdFx0bXQ3Nl93b3JrZXJfZW5hYmxlKFx1MDAyNmRldi1cdTAwM2VtdDc2LnR4X3dvcmtlcik7XG4gMTQ2Olx0XG4gMTQ3Olx0XHRyZXR1cm4gZXJyO1xuIDE0ODpcdH1cbiAxNDk6XHRcbiAxNTA6XHRzdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuIDE1MTpcdFx0XHRcdCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4gMTUyOlx0e1xuIDE1MzpcdFx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc2X2RyaXZlcl9vcHMgZHJ2X29wcyA9IHtcbiAxNTQ6XHRcdFx0LnR4d2lfc2l6ZSA9IE1UX1NESU9fVFhEX1NJWkUsXG4gMTU1Olx0XHRcdC5kcnZfZmxhZ3MgPSBNVF9EUlZfUlhfRE1BX0hEUiB8IE1UX0RSVl9IV19NR01UX1RYUSB8XG4gMTU2Olx0XHRcdFx0ICAgICBNVF9EUlZfQU1TRFVfT0ZGTE9BRCxcbiAxNTc6XHRcdFx0LnN1cnZleV9mbGFncyA9IFNVUlZFWV9JTkZPX1RJTUVfVFggfFxuIDE1ODpcdFx0XHRcdFx0U1VSVkVZX0lORk9fVElNRV9SWCB8XG4gMTU5Olx0XHRcdFx0XHRTVVJWRVlfSU5GT19USU1FX0JTU19SWCxcbiAxNjA6XHRcdFx0LnR4X3ByZXBhcmVfc2tiID0gbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiLFxuIDE2MTpcdFx0XHQudHhfY29tcGxldGVfc2tiID0gbXQ3OTI1X3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcbiAxNjI6XHRcdFx0LnR4X3N0YXR1c19kYXRhID0gbXQ3OTI1X3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhLFxuIDE2MzpcdFx0XHQucnhfc2tiID0gbXQ3OTI1X3F1ZXVlX3J4X3NrYixcbiAxNjQ6XHRcdFx0LnJ4X2NoZWNrID0gbXQ3OTI1X3J4X2NoZWNrLFxuIDE2NTpcdFx0XHQuc3RhX2FkZCA9IG10NzkyNV9tYWNfc3RhX2FkZCxcbiAxNjY6XHRcdFx0LnN0YV9ldmVudCA9IG10NzkyNV9tYWNfc3RhX2V2ZW50LFxuIDE2NzpcdFx0XHQuc3RhX3JlbW92ZSA9IG10NzkyNV9tYWNfc3RhX3JlbW92ZSxcbiAxNjg6XHRcdFx0LnVwZGF0ZV9zdXJ2ZXkgPSBtdDc5MnhfdXBkYXRlX2NoYW5uZWwsXG4gMTY5Olx0XHR9O1xuIDE3MDpcdFx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc5MnhfaGlmX29wcyBoaWZfb3BzID0ge1xuIDE3MTpcdFx0XHQubWN1X2luaXQgPSBtdDc5MjV1X21jdV9pbml0LFxuIDE3MjpcdFx0XHQuaW5pdF9yZXNldCA9IG10NzkyeHVfaW5pdF9yZXNldCxcbiAxNzM6XHRcdFx0LnJlc2V0ID0gbXQ3OTI1dV9tYWNfcmVzZXQsXG4gMTc0Olx0XHR9O1xuIDE3NTpcdFx0c3RhdGljIHN0cnVjdCBtdDc2X2J1c19vcHMgYnVzX29wcyA9IHtcbiAxNzY6XHRcdFx0LnJyID0gbXQ3OTJ4dV9ycixcbiAxNzc6XHRcdFx0LndyID0gbXQ3OTJ4dV93cixcbiAxNzg6XHRcdFx0LnJtdyA9IG10NzkyeHVfcm13LFxuIDE3OTpcdFx0XHQucmVhZF9jb3B5ID0gbXQ3NnVfcmVhZF9jb3B5LFxuIDE4MDpcdFx0XHQud3JpdGVfY29weSA9IG10NzkyeHVfY29weSxcbiAxODE6XHRcdFx0LnR5cGUgPSBNVDc2X0JVU19VU0IsXG4gMTgyOlx0XHR9O1xuIDE4MzpcdFx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KHVzYl9pbnRmKTtcbiAxODQ6XHRcdHN0cnVjdCBpZWVlODAyMTFfb3BzICpvcHM7XG4gMTg1Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodztcbiAxODY6XHRcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXY7XG4gMTg3Olx0XHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXY7XG4gMTg4Olx0XHR1OCBmZWF0dXJlcztcbiAxODk6XHRcdGludCByZXQ7XG4gMTkwOlx0XG4gMTkxOlx0XHRvcHMgPSBtdDc5MnhfZ2V0X21hYzgwMjExX29wcyhcdTAwMjZ1c2JfaW50Zi1cdTAwM2VkZXYsIFx1MDAyNm10NzkyNV9vcHMsXG4gMTkyOlx0XHRcdFx0XHQgICAgICAodm9pZCAqKWlkLVx1MDAzZWRyaXZlcl9pbmZvLCBcdTAwMjZmZWF0dXJlcyk7XG4gMTkzOlx0XHRpZiAoIW9wcylcbiAxOTQ6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMTk1Olx0XG4gMTk2Olx0XHRvcHMtXHUwMDNlc3RvcCA9IG10NzkyeHVfc3RvcDtcbiAxOTc6XHRcbiAxOTg6XHRcdG1kZXYgPSBtdDc2X2FsbG9jX2RldmljZShcdTAwMjZ1c2JfaW50Zi1cdTAwM2VkZXYsIHNpemVvZigqZGV2KSwgb3BzLCBcdTAwMjZkcnZfb3BzKTtcbiAxOTk6XHRcdGlmICghbWRldilcbiAyMDA6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMjAxOlx0XG4gMjAyOlx0XHRkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzkyeF9kZXYsIG10NzYpO1xuIDIwMzpcdFx0ZGV2LVx1MDAzZWZ3X2ZlYXR1cmVzID0gZmVhdHVyZXM7XG4gMjA0Olx0XHRkZXYtXHUwMDNlaGlmX29wcyA9IFx1MDAyNmhpZl9vcHM7XG4gMjA1Olx0XHRtdDc5Mnh1X3Jlc2V0X3dvcmtfaW5pdChkZXYpO1xuIDIwNjpcdFxuIDIwNzpcdFx0dXNiX3Jlc2V0X2RldmljZSh1ZGV2KTtcbiAyMDg6XHRcbiAyMDk6XHRcdHVzYl9zZXRfaW50ZmRhdGEodXNiX2ludGYsIGRldik7XG4gMjEwOlx0XG4gMjExOlx0XHRyZXQgPSBfX210NzZ1X2luaXQobWRldiwgdXNiX2ludGYsIFx1MDAyNmJ1c19vcHMpO1xuIDIxMjpcdFx0aWYgKHJldCBcdTAwM2MgMClcbiAyMTM6XHRcdFx0Z290byBlcnJvcjtcbiAyMTQ6XHRcbiAyMTU6XHRcdG1kZXYtXHUwMDNlcmV2ID0gKG10NzZfcnIoZGV2LCBNVF9IV19DSElQSUQpIFx1MDAzY1x1MDAzYyAxNikgfFxuIDIxNjpcdFx0XHQgICAgKG10NzZfcnIoZGV2LCBNVF9IV19SRVYpIFx1MDAyNiAweGZmKTtcbiAyMTc6XHRcdGRldl9kYmcobWRldi1cdTAwM2VkZXYsIFwmIzM0O0FTSUMgcmV2aXNpb246ICUwNHhcXG5cJiMzNDssIG1kZXYtXHUwMDNlcmV2KTtcbiAyMTg6XHRcbiAyMTk6XHRcdGlmIChtdDc2X2NoaXAobWRldikgPT0gMHg2NjM5KSB7XG4gMjIwOlx0XHRcdGRldl9kYmcobWRldi1cdTAwM2VkZXYsXG4gMjIxOlx0XHRcdFx0XCYjMzQ7TVQ3OTI3IHJhdyBDSElQSUQ9MHglMDR4LCBmb3JjaW5nIGNoaXA9MHg3OTI3XFxuXCYjMzQ7LFxuIDIyMjpcdFx0XHRcdG10NzZfY2hpcChtZGV2KSk7XG4gMjIzOlx0XHRcdG1kZXYtXHUwMDNlcmV2ID0gKDB4NzkyNyBcdTAwM2NcdTAwM2MgMTYpIHwgKG1kZXYtXHUwMDNlcmV2IFx1MDAyNiAweGZmKTtcbiAyMjQ6XHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDM6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg2OTgKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTVQ3OTI1VSBEcml2ZXIgd2l0aCBTeXprYWxsZXI6IEluaXRpYWwgQXNzZXNzbWVudCBhbmQgS2NvbmZpZyBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTttIHRoaW5raW5nLi4uIGZpcnN0LCBgbXQ3OTI1dWAsIHRoYXQmIzM5O3MgdGhlIFVTQiB3aXJlbGVzcyBkcml2ZXIsIHJpZ2h0PyBDYW4gd2UgZXZlbiBhcHByb2FjaCB0aGlzIHdpdGggU3l6a2FsbGVyJiMzOTtzIFVTQiBlbXVsYXRpb24/IE15IGluaXRpYWwgaW5zdGluY3QgaXMgeWVzLCBzaW5jZSBTeXprYWxsZXIgaGFzIHRoZSByYXcgZ2FkZ2V0L3Z1c2Igc3VwcG9ydC4gQnV0LCBhIHF1aWNrIGRvdWJsZS1jaGVjazogRG9lcyBTeXprYWxsZXIgKmFjdHVhbGx5KiB0YXJnZXQgVVNCIHdpZmkgZHJpdmVycz8gR29vZCBuZXdzLCBpdCBkb2VzLiBNeSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBVU0IgZnV6emluZyBzdXBwb3J0IGluIFN5emthbGxlciwgd2hpY2ggdXRpbGl6ZXMgcmF3IGdhZGdldCBhbmQgYHN5el91c2JfY29ubmVjdGAsIGlzIHRoYXQgaXQgc2hvdWxkIGJlIGFibGUgdG8gcmVhY2ggbWFjODAyMTEtYmFzZWQgYW5kIHdpcmVsZXNzIFVTQiBkcml2ZXJzLCBpbmNsdWRpbmcgdGhlIE1lZGlhVGVrIGZhbWlseTogYG10NzZgLCBgbXQ3OTIxdWAsIGBtdDc5MjV1YCwgZXRjLgoKTm93LCBhIGNyaXRpY2FsIHN0ZXA6IEkgbmVlZCB0byB2ZXJpZnkgd2hpY2ggS2NvbmZpZyBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgYG10NzkyNWAgZnVuY3Rpb25hbGl0eS4gTGV0JiMzOTtzIGRlbHZlIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnYCBmaWxlIGFuZCBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoaXMgaXMgYSBjcnVjaWFsIHN0ZXAgdG8gZW5zdXJpbmcgdGhlIGRyaXZlciBpcyBwcm9wZXJseSBidWlsdCBhbmQgZXhwb3NlZCBmb3IgdGVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDM6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzkyNV9DT01NT05cbiAgIDM6XHRcdHRyaXN0YXRlXG4gICA0Olx0XHRzZWxlY3QgTVQ3OTJ4X0xJQlxuICAgNTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gICA2Olx0XG4gICA3Olx0Y29uZmlnIE1UNzkyNUVcbiAgIDg6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbiAgIDk6XHRcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXG4gIDEwOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDExOlx0XHRkZXBlbmRzIG9uIFBDSVxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFBDSWUgZGV2aWNlcyxcbiAgMTQ6XHRcdCAgd2hpY2ggc3VwcG9ydCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeiwgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlXG4gIDE1Olx0XHQgIDJ4MjoyU1MgNDA5Ni1RQU0sIDE2ME1IeiBjaGFubmVscy5cbiAgMTY6XHRcbiAgMTc6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgTVQ3OTI1VVxuICAyMDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4gIDIxOlx0XHRzZWxlY3QgTVQ3OTJ4X1VTQlxuICAyMjpcdFx0c2VsZWN0IE1UNzkyNV9DT01NT05cbiAgMjM6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMjQ6XHRcdGRlcGVuZHMgb24gVVNCXG4gIDI1Olx0XHRoZWxwXG4gIDI2Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgVVNCIGRldmljZXMsXG4gIDI3Olx0XHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxuICAyODpcdFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXG4gIDI5Olx0XG4gIDMwOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NjY0CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZToKCioqSW52ZXN0aWdhdGluZyB0aGUgS2NvbmZpZyBGaWxlIGZvciBNVDc2IFdpcmVsZXNzIERyaXZlcnMqKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgc29tZSB3aXJlbGVzcyBkcml2ZXIgY29uZmlndXJhdGlvbnMsIGFuZCBteSBndXQgZmVlbGluZyBpcyB0aGF0IHdlJiMzOTtyZSBtaXNzaW5nIHNvbWV0aGluZyBjcnVjaWFsLiBJJiMzOTt2ZSBiZWVuIGRvd24gdGhpcyByb2FkIGJlZm9yZS4gVG8gbWFrZSBzdXJlIHdlJiMzOTt2ZSBnb3QgdGhlIHdob2xlIHBpY3R1cmUsIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ2AgZmlsZS4gSXQmIzM5O3Mgb2Z0ZW4gdGhlIGNlbnRyYWwgc291cmNlIG9mIHRydXRoIGZvciB0aGVzZSB0eXBlcyBvZiBjb25maWd1cmF0aW9ucy4gSSBrbm93IHRoZSBNZWRpYXRlayBNVDc2IGRyaXZlcnMgcHJldHR5IHdlbGwsIGFuZCBiYXNlZCBvbiBwYXN0IGV4cGVyaWVuY2UsIEtjb25maWcgZmlsZXMgYXJlIHRoZSBiZXN0IHN0YXJ0aW5nIHBvaW50IHdoZW4gSSBlbmNvdW50ZXIgYSBzeXN0ZW0gdGhhdCBpcyBub3QgYmVoYXZpbmcgYXMgZXhwZWN0ZWQuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBiZWluZyBlbmFibGVkIG9yIGRpc2FibGVkIHRoZXJlIGFuZCB3aGV0aGVyIHRoZXJlJiMzOTtzIGEgc2V0dGluZyB0aGF0JiMzOTtzIGNhdXNpbmcgdGhpcyBpc3N1ZS4gVGltZSB0byBkaWcgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzZfQ09SRVxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgTVQ3Nl9MRURTXG4gICA3Olx0XHRib29sXG4gICA4Olx0XHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxuICAgOTpcdFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTVQ3Nl9DT1JFPUxFRFNfQ0xBU1NcbiAgMTA6XHRcdGRlZmF1bHQgeVxuICAxMTpcdFxuICAxMjpcdGNvbmZpZyBNVDc2X1VTQlxuICAxMzpcdFx0dHJpc3RhdGVcbiAgMTQ6XHRcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG4gIDE1Olx0XG4gIDE2Olx0Y29uZmlnIE1UNzZfU0RJT1xuICAxNzpcdFx0dHJpc3RhdGVcbiAgMTg6XHRcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIE1UNzZ4MDJfTElCXG4gIDIxOlx0XHR0cmlzdGF0ZVxuICAyMjpcdFx0c2VsZWN0IE1UNzZfQ09SRVxuICAyMzpcdFxuICAyNDpcdGNvbmZpZyBNVDc2eDAyX1VTQlxuICAyNTpcdFx0dHJpc3RhdGVcbiAgMjY6XHRcdHNlbGVjdCBNVDc2X1VTQlxuICAyNzpcdFxuICAyODpcdGNvbmZpZyBNVDc2X0NPTk5BQ19MSUJcbiAgMjk6XHRcdHRyaXN0YXRlXG4gIDMwOlx0XHRzZWxlY3QgTVQ3Nl9DT1JFXG4gIDMxOlx0XG4gIDMyOlx0Y29uZmlnIE1UNzkyeF9MSUJcbiAgMzM6XHRcdHRyaXN0YXRlXG4gIDM0Olx0XHRzZWxlY3QgTVQ3Nl9DT05OQUNfTElCXG4gIDM1Olx0XG4gIDM2Olx0Y29uZmlnIE1UNzkyeF9VU0JcbiAgMzc6XHRcdHRyaXN0YXRlXG4gIDM4Olx0XHRzZWxlY3QgTVQ3Nl9VU0JcbiAgMzk6XHRcbiAgNDA6XHRjb25maWcgTVQ3Nl9OUFVcbiAgNDE6XHRcdHRyaXN0YXRlXG4gIDQyOlx0XHRkZXBlbmRzIG9uIE5FVF9BSVJPSEFfTlBVPXkgfHwgTVQ3Nl9DT1JFPU5FVF9BSVJPSEFfTlBVXG4gIDQzOlx0XG4gIDQ0Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWdcJiMzNDtcbiAgNDU6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZ1wmIzM0O1xuICA0NjpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnXCYjMzQ7XG4gIDQ3Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWdcJiMzNDtcbiAgNDg6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZ1wmIzM0O1xuICA0OTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnXCYjMzQ7XG4gIDUwOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWdcJiMzNDtcbiAgNTE6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDYzNgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipLY29uZmlnIEluc3BlY3Rpb246IE1lZGlhdGVrIFdpcmVsZXNzIERyaXZlcioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoaXMuIFRoZSB0YXNrIHJlcXVpcmVzIGxvb2tpbmcgYXQgdGhlIHBhcmVudCBLY29uZmlnIGZpbGUuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgd2l0aCB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdgIGRpcmVjdG9yeS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGZvciB0aGlzIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlciBhbmQgd2hlcmUgaXRzIGRlcGVuZGVuY2llcyBsaWUuIEhvcGVmdWxseSwgdGhpcyBLY29uZmlnIHdpbGwgZ2l2ZSBtZSBhIGNsZWFyIG92ZXJ2aWV3IG9mIHRoZSByZWxldmFudCBidWlsZCBwYXJhbWV0ZXJzIGFuZCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBmbGFncy4gVGhhdCBzaG91bGQgYmUgdGhlIGp1bXBpbmcgb2ZmIHBvaW50IGZvciByZXNvbHZpbmcgd2hhdGV2ZXIgaXNzdWUgYnJvdWdodCBtZSB0byB0aGlzIHBvaW50LiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGlzIGNvbnRyb2xsZWQgYW5kIGludGVncmF0ZWQgd2l0aGluIHRoZSBicm9hZGVyIGtlcm5lbCBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgV0xBTl9WRU5ET1JfTUVESUFURUtcbiAgIDM6XHRcdGJvb2wgXCYjMzQ7TWVkaWFUZWsgZGV2aWNlc1wmIzM0O1xuICAgNDpcdFx0ZGVmYXVsdCB5XG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIElmIHlvdSBoYXZlIGEgd2lyZWxlc3MgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXG4gICA3Olx0XG4gICA4Olx0XHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxuICAgOTpcdFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsIHRoZVxuICAxMDpcdFx0ICBxdWVzdGlvbnMgYWJvdXQgdGhlc2UgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXG4gIDExOlx0XHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cbiAgMTI6XHRcbiAgMTM6XHRpZiBXTEFOX1ZFTkRPUl9NRURJQVRFS1xuICAxNDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2MDF1L0tjb25maWdcJiMzNDtcbiAgMTU6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnXCYjMzQ7XG4gIDE2Olx0ZW5kaWYgIyBXTEFOX1ZFTkRPUl9NRURJQVRFS1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTEwMAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQ3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1UNzkyNSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSBhIHF1aWNrIGRlcGVuZGVuY3kgY2hlY2ssIGl0IGxvb2tzIGxpa2UgYE1UNzkyNVVgIGxldmVyYWdlcyBgTUFDODAyMTFgIGFuZCBgVVNCYCwgd2hpbGUgYE1UNzkyNUVgIHVzZXMgYE1BQzgwMjExYCBhbmQgYFBDSWAuIEJvdGggc2hhcmUgYE1UNzkyNV9DT01NT05gLCBzbyB0aGUgcGF0Y2ggKnNob3VsZCogYWZmZWN0IGJvdGgsIGJ1dCBsZXQmIzM5O3MgYmUgc3VyZS4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgYSBjaGFuZ2Ugd2l0aGluIHRoZSBgV0xBTl9WRU5ET1JfTUVESUFURUtgIHNlY3Rpb24uCgpOb3csIGZvY3VzaW5nIG9uIHRoZSBwYXRjaCBpdHNlbGYuIEl0IHNlZW1zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIGBtdDc5MjVfbWFjX3dyaXRlX3R4d2lgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIHRoZSBgTVRfVFhEMV9UR0lEYCBmaWVsZCB3aXRoaW4gdGhlIGB0eHdpYCBzdHJ1Y3R1cmUuIFByZXZpb3VzbHksIHRoZSBjb2RlIGNvbmRpdGlvbmFsbHkgYXNzaWduZWQgdGhlIGBiYW5kX2lkeGAgdmFsdWUgdG8gYE1UX1RYRDFfVEdJRGAgYmFzZWQgb24gYSBzaW1wbGUgYGlmIChiYW5kX2lkeClgIGNoZWNrLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHNwZWNpZmljIGNvbmRpdGlvbjogbm93IHRoZSBjb2RlIGNoZWNrcyBgYmFuZF9pZHhgIGFuZCBhbHNvIGVuc3VyZXMgYGJhbmRfaWR4YCBpcyBub3QgYDB4ZmZgLiBUaGUgY29tbWVudCBtZW50aW9ucyB0aGF0IGAweGZmYCByZXByZXNlbnRzIGBCQU5EX0FVVE9gIGZvciB0aGUgZmlybXdhcmUsIGFuZCBpdCBjYW5ub3QgYmUgZW5jb2RlZCB3aXRoaW4gYFRHSURgLiBTbywgdGhpcyBzZWVtcyBsaWtlIGEgZml4IHRvIHByZXZlbnQgYW4gaW5jb3JyZWN0IHZhbHVlIGJlaW5nIHBhc3NlZCB0byB0aGUgZmlybXdhcmUsIHdoaWNoIHNob3VsZCBwcmV2ZW50IGEgY3Jhc2gvZXJyb3IuCgpUbyBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYE1UX1RYRDFfVEdJRGAuIEkmIzM5O2xsIGxvb2sgZWl0aGVyIGluIGBtYWMuaGAgb3Igd2l0aGluIHRoaXMgYG1hYy5jYCBmaWxlIHRvIGVuc3VyZSB0aGUgYml0ZmllbGQgZGVmaW5pdGlvbiBtYXRjaGVzIHdoYXQgSSBzdXNwZWN0LiBUaGlzIHdpbGwgY2xhcmlmeSB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIGFuZCBob3cgaXQgbWlnaHQgaW1wYWN0IHRyYWZmaWMgbWFuYWdlbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDM6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TVRfVFhEMV9UR0lEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjMl9tYWMuaD0zNT1lbnVtIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjMl9tYWMuaC01NS0jZGVmaW5lIE1UX1RYRDFfTE9OR19GT1JNQVRcdFx0QklUKDMxKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYzJfbWFjLmg6NTY6I2RlZmluZSBNVF9UWEQxX1RHSURcdFx0XHRCSVQoMzApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjMl9tYWMuaC01Ny0jZGVmaW5lIE1UX1RYRDFfT1dOX01BQ1x0XHRcdEdFTk1BU0soMjksIDI0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMzX21hYy5oPTIwNT1lbnVtIHR4X2ZyYWdfaWR4IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMuaC0yMzItI2RlZmluZSBNVF9UWEQxX0hEUl9GT1JNQVRcdFx0R0VOTUFTSygxNSwgMTQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMuaDoyMzM6I2RlZmluZSBNVF9UWEQxX1RHSURcdFx0XHRHRU5NQVNLKDEzLCAxMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMzX21hYy5oLTIzNC0jZGVmaW5lIE1UX1RYRDFfV0xBTl9JRFhcdFx0R0VOTUFTSygxMSwgMClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jPTUwND12b2lkIG10NzZfY29ubmFjMl9tYWNfd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNTYyLVx0aWYgKHBoeV9pZHggfHwgYmFuZF9pZHgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jOjU2MzpcdFx0dmFsIHw9IE1UX1RYRDFfVEdJRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNTY0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTc0Nz1tdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04MDItXHRpZiAoYmFuZF9pZHggXHUwMDI2XHUwMDI2IGJhbmRfaWR4ICE9IDB4ZmYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4MDM6XHRcdHZhbCB8PSBGSUVMRF9QUkVQKE1UX1RYRDFfVEdJRCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODA0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTg5ND12b2lkIG10Nzk5Nl9tYWNfd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtOTUyLVx0aWYgKGJhbmRfaWR4KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6OTUzOlx0XHR2YWwgfD0gRklFTERfUFJFUChNVF9UWEQxX1RHSUQsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTk1NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDM6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI5MjUKCQkJCQkJCW91dHB1dDogMTY3CgkJCQkJCQl0aG91Z2h0czogNzk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIE1UNzkyNSBEcml2ZXIgVnVsbmVyYWJpbGl0eSBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYE1UX1RYRDFfVEdJRGAgZmllbGQgYW5kIGhvdyBpdCYjMzk7cyBoYW5kbGVkLiBJdCYjMzk7cyBhIDItYml0IGZpZWxkLCBtZWFuaW5nIGl0IGNhbiBvbmx5IGhvbGQgdmFsdWVzIGZyb20gMCB0byAzLiBUaGUgY29kZSB1c2VzIGBGSUVMRF9QUkVQYCwgYW5kIEkgc2VlIGEgcG90ZW50aWFsIGlzc3VlIGlmIGBiYW5kX2lkeGAgYmVjb21lcyAweGZmLCBiZWNhdXNlIGRpcmVjdGx5IHNldHRpbmcgdGhhdCB3aXRoIGBGSUVMRF9QUkVQYCBjb3VsZCBjYXVzZSBhIHdhcm5pbmcgb3Igb3ZlcmZsb3cgb3IgaW52YWxpZCBiaXQgY29uZmlndXJhdGlvbiwgZXNwZWNpYWxseSB3aXRoIGEgY29uc3RhbnQ7IGhvd2V2ZXIsIHNpbmNlIGl0JiMzOTtzIGEgdmFyaWFibGUsIHRoZSBjb2RlIG1hc2tzIGFuZCBzaGlmdHMsIHJlc3VsdGluZyBpbiBhIFRHSUQgdmFsdWUgb2YgMy4KCk15IHByaW1hcnkgY29uY2VybiBpcyB3aGV0aGVyIHRoaXMgaXMgYSBjb2RlIHBhdGggSSBjYW4gYWN0dWFsbHkgcmVhY2ggaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gQ2FuIEkgdHJpZ2dlciB0aGlzIGNvbmRpdGlvbiB0aHJvdWdoIGEgVVNCIGdhZGdldCBzZXR1cCBpbiBzb21ldGhpbmcgbGlrZSBzeXprYWxsZXIgb3Igc3RhbmRhcmQgUUVNVT8gTGV0JiMzOTtzIHNlZS4uLiBTZWN0aW9uIDIgcG9pbnRzIG91dCB0aGF0IHNvbWUgaGFyZHdhcmUsIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMgYW5kIHN1Y2gsIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gQnV0IFNlY3Rpb24gMyBoaWdobGlnaHRzIHJlYWNoYWJsZSBkcml2ZXJzOiB0aGluZ3MgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyBzdWNoIGFzIHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIGV0Yy4KClNpbmNlIE1UNzkyNSBoYXMgVVNCIHN1cHBvcnQgKE1UNzkyNVUpLCBhbmQgaXQgY2FuIGJpbmQgdG8gVVNCIGRldmljZSBJRHMgdG8gdHJhbnNtaXQgcGFja2V0cywgaXQmIzM5O3MgYSBzdHJvbmcgaW5kaWNhdG9yIHRoYXQgVVNCIGVtdWxhdGlvbiBzaG91bGQgYmUgYSB2aWFibGUgYWNjZXNzIHBhdGguIENhbiBJIHJlYWNoIHRoZSBgbXQ3OTI1X21hY193cml0ZV90eHdpYCBmdW5jdGlvbiB0aHJvdWdoIGBtdDc5MjV1YD8gWWVzISBUaGUgVFggcGF0aCBpbnZvbHZlcyBgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCAtJmd0OyBgbXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2lgIC0mZ3Q7IGBtdDc5MjVfbWFjX3dyaXRlX3R4d2lgLiBFeGNlbGxlbnQsIHRoYXTigJlzIHByb21pc2luZy4KCkkgbmVlZCB0byBuYWlsIGRvd24gbXkgdGFyZ2V0cyBmb3IgZnV6emluZy4gTGV0IG1lIGNoZWNrIHRoZSBjYWxsZXJzIGFuZCBzeW1ib2xzLiBJJiMzOTtsbCBmb2N1cyBvbiBgbXQ3OTI1X21hY193cml0ZV90eHdpYCwgYG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAsIGFuZCBgbXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2lgICh0aGUgbGF0dGVyIGlzIHN0YXRpYywgYnV0IHJlbGV2YW50KS4KCk5vdywgaXMgYG10NzkyNV9tYWNfd3JpdGVfdHh3aWAgc3RhdGljIG9yIGV4cG9ydGVkPyBMZXQgbWUgY2hlY2suLi4gQWgsIGxpbmUgODY4OiBgRVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21hY193cml0ZV90eHdpKTtgIFNvIGl0IGlzIGFuIGV4cG9ydGVkLCBub24tc3RhdGljIHN5bWJvbC4gQW5kIGBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgIGlzIGFsc28gZXhwb3J0ZWQuIFdlIGFsc28gaGF2ZSBgbXQ3OTI1ZV90eF9wcmVwYXJlX3NrYmAgZm9yIFBDSS4KCk5leHQsIEkgbmVlZCB0byB2ZXJpZnkgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gTGV0JiMzOTtzIGxvb2sgYXQgdGhlIGBFbmFibGVDb25maWdzYC4gSSBuZWVkIGBNVDc5MjVVYCwgYE1UNzkyNV9DT01NT05gLCBgTUFDODAyMTFgLCBgVVNCYCwgYW5kIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AuCgpPa2F5LCB0aW1lIHRvIGRvdWJsZS1jaGVjayBldmVyeXRoaW5nOgoKMS4gIElzIHRoaXMgZXZlbiB3b3J0aCBmdXp6aW5nPyBZZXMuCjIuICBNeSBmb2N1cyBzeW1ib2xzIGFyZSBzZXQ6IGBtdDc5MjVfbWFjX3dyaXRlX3R4d2lgLCBgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYC4KMy4gIE15IGVuYWJsZSBjb25maWdzIGFyZSBjb3JyZWN0Lgo0LiAgUmVhc29uaW5nIGlzIHNvdW5kIGFuZCBkb2N1bWVudGVkLgoKQWxyaWdodCwgSSYjMzk7bSByZWFkeSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5MjVVJiMzNDssCiAgICAmIzM0O01UNzkyNV9DT01NT04mIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX01FRElBVEVLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTI1X21hY193cml0ZV90eHdpJiMzNDssCiAgICAmIzM0O210NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBiYW5kX2lkeCBoYW5kbGluZyBpbiBtdDc5MjVfbWFjX3dyaXRlX3R4d2koKSB3aGVuIHdyaXRpbmcgVFggd2lyZWxlc3MgaW5mb3JtYXRpb24gZGVzY3JpcHRvcnMuIFRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGRldmljZXMgKE1UNzkyNVUpIHdoaWNoIGFyZSByZWFjaGFibGUgYW5kIGZ1enphYmxlIHZpYSBVU0IgZGV2aWNlIGVtdWxhdGlvbiAoVVNCIFJhdyBHYWRnZXQgLyB2dXNiKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7LAogICAgJiMzNDtNVDc5MjVfQ09NTU9OJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9NRURJQVRFSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNV9tYWNfd3JpdGVfdHh3aSYjMzQ7LAogICAgJiMzNDttdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2ImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYmFuZF9pZHggaGFuZGxpbmcgaW4gbXQ3OTI1X21hY193cml0ZV90eHdpKCkgd2hlbiB3cml0aW5nIFRYIHdpcmVsZXNzIGluZm9ybWF0aW9uIGRlc2NyaXB0b3JzLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIChNVDc5MjVVKSB3aGljaCBhcmUgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgVVNCIGRldmljZSBlbXVsYXRpb24gKFVTQiBSYXcgR2FkZ2V0IC8gdnVzYikuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjIwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDM6MjA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2FsY3VsYXRpb24gb2YgaGFyZHdhcmUgVFggZGVzY3JpcHRvciBiaXRzIGluIGBtdDc5MjVfbWFjX3dyaXRlX3R4d2koKWAgYnkgYXZvaWRpbmcgdGhlIHVzZSBvZiBgRklFTERfUFJFUChNVF9UWEQxX1RHSUQsIGJhbmRfaWR4KWAgd2hlbiBgYmFuZF9pZHggPT0gMHhmZmAgKEJBTkRfQVVUTykuXG5cbkFsbCBsb2NhbCB2YXJpYWJsZXMsIGluY2x1ZGluZyBgYmFuZF9pZHhgLCBhcmUgZXhwbGljaXRseSBpbml0aWFsaXplZCwgYW5kIHRoZSBmdW5jdGlvbiB3cml0ZXMgZGVzY3JpcHRvciBmaWVsZHMgdG8gYSBwcmUtYWxsb2NhdGVkL21hbmFnZWQgYnVmZmVyIGZvciBoYXJkd2FyZSB0cmFuc21pc3Npb24uIE5vIG1lbW9yeSBjb3B5aW5nIHRvIHVzZXIgc3BhY2UsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgdXNhZ2UsIG9yIHVuaW5pdGlhbGl6ZWQgcGFkZGluZy9idWZmZXIgaGFuZGxpbmcgaXMgaW50cm9kdWNlZCBvciBtb2RpZmllZC4gVGhlcmVmb3JlLCB0aGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZGE1YmI2YjA2OWFkZWNkMmE2OTM1MTgyYjZhNjcyY2U1NzQyYmEwZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDExIDAzOjE4OjMwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYwppbmRleCAxMDFmNTcxYjAyN2YxLi4zYjgyYzlkZTI2YzViIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYwpAQCAtNzk4LDcgJiM0Mzs3OTgsOCBAQCBtdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSwKIAl2YWwgPSBGSUVMRF9QUkVQKE1UX1RYRDFfV0xBTl9JRFgsIHdjaWQtJmd0O2lkeCkgfAogCSAgICAgIEZJRUxEX1BSRVAoTVRfVFhEMV9PV05fTUFDLCBvbWFjX2lkeCk7CiAKLQlpZiAoYmFuZF9pZHgpCiYjNDM7CS8qIDB4ZmYgbWVhbnMgQkFORF9BVVRPIHRvIHRoZSBmaXJtd2FyZSwgYW5kIFRHSUQgY2Fubm90IGVuY29kZSBpdCAqLwomIzQzOwlpZiAoYmFuZF9pZHggJmFtcDsmYW1wOyBiYW5kX2lkeCAhPSAweGZmKQogCQl2YWwgfD0gRklFTERfUFJFUChNVF9UWEQxX1RHSUQsIGJhbmRfaWR4KTsKIAogCXR4d2lbMV0gPSBjcHVfdG9fbGUzMih2YWwpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDM6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIwMAoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDM2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZXZpZXdpbmcgdGhlIE1UNzkyNSBNQUMgV3JpdGUgVFhXSSBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIG10NzkyNSBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgYG10NzkyNV9tYWNfd3JpdGVfdHh3aWAgZnVuY3Rpb24uIFRoZSBjb2RlJiMzOTtzIHB1cnBvc2UgaXMgdG8gY29uc3RydWN0IHRoZSB0cmFuc21pdCBkZXNjcmlwdG9yIChUWFdJKSBmb3IgdGhlIGhhcmR3YXJlLiBJIGNhbiBpbW1lZGlhdGVseSBzZWUgdGhlIGNoYW5nZSBmb2N1c2VzIG9uIGhvdyB0aGUgYGJhbmRfaWR4YCBpcyBoYW5kbGVkIHdpdGhpbiB0aGUgYE1UX1RYRDFfVEdJRGAgZmllbGQuCgpQcmV2aW91c2x5LCBpdCBzZWVtcyB0aGUgY29kZSB1bmNvbmRpdGlvbmFsbHkgY2hlY2tlZCBgYmFuZF9pZHhgJiMzOTtzIHRydXRoaW5lc3MuIE5vdywgd2UmIzM5O3JlIGV4cGxpY2l0bHkgY2hlY2tpbmcgaWYgYGJhbmRfaWR4YCBpc24mIzM5O3QgYDB4ZmZgLiBUaGUgY29tbWVudCBjbGFyaWZpZXMgdGhhdCBhIHZhbHVlIG9mIGAweGZmYCBpbXBsaWVzIGBCQU5EX0FVVE9gIGZvciB0aGUgZmlybXdhcmUuIEl0IGFwcGVhcnMgdGhhdCB0aGUgaGFyZHdhcmUmIzM5O3MgYFRHSURgIGZpZWxkIGNhbiYjMzk7dCBkaXJlY3RseSByZXByZXNlbnQgYEJBTkRfQVVUT2AuIFRoaXMgbWFrZXMgc2Vuc2UsIGFzIGEgZGlyZWN0IG1hcHBpbmcgd291bGQgaW50cm9kdWNlIGFtYmlndWl0eS4KClNvLCB0aGUgbG9naWMgbm93IGNvcnJlY3RseSBza2lwcyBzZXR0aW5nIHRoZSBgTVRfVFhEMV9UR0lEYCB3aGVuIGBiYW5kX2lkeGAgaXMgYDB4ZmZgIHdoaWNoIHdpbGwgc2VuZCB0aGUgc2lnbmFsIHRvIHRoZSBoYXJkd2FyZSB0aGF0IGl0IGNhbiBjaG9vc2UgYmFzZWQgb24gdGhlIGxvZ2ljIG9mIHRoZSBgQkFORF9BVVRPYCBzZXR0aW5nLiBUaGF0JiMzOTtzIGEgZ29vZCBmaXgsIGl0IGNsZWFucyB1cCBhIHBvdGVudGlhbCBjb3JuZXIgY2FzZSBhbmQgcHJvYmFibHkgbWFrZXMgdGhlIGZpcm13YXJlJiMzOTtzIGhhbmRsaW5nIG9mIGBCQU5EX0FVVE9gIG1vcmUgcm9idXN0LiBUaGlzIGlzIGEgc3VidGxlIGJ1dCBpbXBvcnRhbnQgY29ycmVjdGlvbiB0byBlbnN1cmUgdGhlIHJpZ2h0IGJhbmQgc2VsZWN0aW9uIGhhcHBlbnMgZm9yIHRoZSB3aXJlbGVzcyB0cmFuc21pc3Npb24uIEl0JiMzOTtzIGEgc29saWQsIHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2UuIEkmIzM5O20gc2F0aXNmaWVkIHdpdGggdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDM6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1X21hY193cml0ZV90eHdpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9NjQwPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo2NDE6bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjMoX19sZTMyICp0eHdpLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNjQyLVx0XHRcdCAgIHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9Njc1PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo2NzY6bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjExKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy02NzctXHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9NzQ2PXZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjc0NzptdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTc0OC1cdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04NDAtXHRpZiAoaXNfODAyMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg0MTpcdFx0bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjModHh3aSwgc2tiLCB3Y2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg0Mi1cdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg0MzpcdFx0bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjExKGRldiwgdHh3aSwgc2tiLCBrZXkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODQ0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg2Ny19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4Njg6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21hY193cml0ZV90eHdpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg2OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNjIyPW10NzkyNV91c2Jfc2Rpb193cml0ZV90eHdpKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYyOS1cdG1lbXNldCh0eHdpLCAwLCBNVF9TRElPX1RYRF9TSVpFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE2MzA6XHRtdDc5MjVfbWFjX3dyaXRlX3R4d2koXHUwMDI2ZGV2LVx1MDAzZW10NzYsIHR4d2ksIHNrYiwgd2NpZCwga2V5LCBwaWQsIHFpZCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjMxLVx0c2tiX3B1c2goc2tiLCBNVF9TRElPX1RYRF9TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zNDI9dm9pZCBtdDc5MjVfbWFjX3NldF9maXhlZF9yYXRlX3RhYmxlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNDMtXHRcdFx0XHQgICAgIHU4IHRibF9pZHgsIHUxNiByYXRlX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNDQ6dm9pZCBtdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM0NS1cdFx0XHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYz05PWludCBtdDc5MjVlX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jLTQ0LVx0cGlkID0gbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChtZGV2LCB3Y2lkLCB0eF9pbmZvLVx1MDAzZXNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmM6NDU6XHRtdDc5MjVfbWFjX3dyaXRlX3R4d2kobWRldiwgdHh3aV9wdHIsIHR4X2luZm8tXHUwMDNlc2tiLCB3Y2lkLCBrZXksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmMtNDYtXHRcdFx0ICAgICAgcGlkLCBxaWQsIDApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzU3CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHNuaXBwZXQsIGZyYW1lZCBhcyBteSBvd24gdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgTVQ3OTI1IE1BQyBMYXllcioqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmNgIGZpbGUuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGZvY3VzIG9uIGxpbmVzIDc0NiB0aHJvdWdoIDgxMC4gTXkgZ3V0IGZlZWxpbmcgaXMgdGVsbGluZyBtZSBzb21ldGhpbmcgaXMgYW1pc3MgaW4gdGhpcyBhcmVhLiBQcm9iYWJseSByZWxhdGVkIHRvIHRoZSBNQUMgbGF5ZXIgcHJvY2Vzc2luZyBvbiB0aGUgbXQ3OTI1LiBJJiMzOTtsbCBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IGFuZCB1bmRlcnN0YW5kIHdoYXQgb3BlcmF0aW9ucyBhcmUgdHlwaWNhbGx5IHBlcmZvcm1lZCBpbiB0aGlzIHNlY3Rpb24gb2YgdGhlIGNvZGViYXNlIGFuZCB3aGVyZSB0aGlzIGJsb2NrIGZpdHMgaW50byB0aGUgd2hvbGUgcGljdHVyZS4gTGV0JiMzOTtzIHNlZSBpZiB0aGlzIHNlY3Rpb24gcmVsYXRlcyB0byB0cmFmZmljIHNjaGVkdWxpbmcsIGZyYW1lIHRyYW5zbWlzc2lvbiwgb3IgcGVyaGFwcyBldmVuIHBvd2VyIG1hbmFnZW1lbnQuIEkmIzM5O20gaG9waW5nIEkgY2FuIGlkZW50aWZ5IHRoZSBzb3VyY2Ugb2YgdGhlIGlzc3VlIHF1aWNrbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDc4MDpcdFx0fSBlbHNlIGlmIChxaWQgXHUwMDNlPSBNVF9UWFFfUFNEKSB7XG4gNzgxOlx0XHRcdHBfZm10ID0gbXQ3Nl9pc19tbWlvKGRldikgPyBNVF9UWF9UWVBFX0NUIDogTVRfVFhfVFlQRV9TRjtcbiA3ODI6XHRcdFx0cV9pZHggPSBNVF9MTUFDX0FMVFgwO1xuIDc4MzpcdFx0fSBlbHNlIHtcbiA3ODQ6XHRcdFx0cF9mbXQgPSBtdDc2X2lzX21taW8oZGV2KSA/IE1UX1RYX1RZUEVfQ1QgOiBNVF9UWF9UWVBFX1NGO1xuIDc4NTpcdFx0XHRxX2lkeCA9IHdtbV9pZHggKiBNVDc2X0NPTk5BQ19NQVhfV01NX1NFVFMgJiM0MztcbiA3ODY6XHRcdFx0XHRtdDc2X2Nvbm5hY19sbWFjX21hcHBpbmcoc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYikpO1xuIDc4NzpcdFxuIDc4ODpcdFx0XHQvKiBjb3VudGluZyBub24tb2ZmbG9hZGluZyBza2JzICovXG4gNzg5Olx0XHRcdHdjaWQtXHUwMDNlc3RhdHMudHhfYnl0ZXMgJiM0Mzs9IHNrYi1cdTAwM2VsZW47XG4gNzkwOlx0XHRcdHdjaWQtXHUwMDNlc3RhdHMudHhfcGFja2V0cyYjNDM7JiM0Mzs7XG4gNzkxOlx0XHR9XG4gNzkyOlx0XG4gNzkzOlx0XHR2YWwgPSBGSUVMRF9QUkVQKE1UX1RYRDBfVFhfQllURVMsIHNrYi1cdTAwM2VsZW4gJiM0Mzsgc3pfdHhkKSB8XG4gNzk0Olx0XHQgICAgICBGSUVMRF9QUkVQKE1UX1RYRDBfUEtUX0ZNVCwgcF9mbXQpIHxcbiA3OTU6XHRcdCAgICAgIEZJRUxEX1BSRVAoTVRfVFhEMF9RX0lEWCwgcV9pZHgpO1xuIDc5NjpcdFx0dHh3aVswXSA9IGNwdV90b19sZTMyKHZhbCk7XG4gNzk3Olx0XG4gNzk4Olx0XHR2YWwgPSBGSUVMRF9QUkVQKE1UX1RYRDFfV0xBTl9JRFgsIHdjaWQtXHUwMDNlaWR4KSB8XG4gNzk5Olx0XHQgICAgICBGSUVMRF9QUkVQKE1UX1RYRDFfT1dOX01BQywgb21hY19pZHgpO1xuIDgwMDpcdFxuIDgwMTpcdFx0LyogMHhmZiBtZWFucyBCQU5EX0FVVE8gdG8gdGhlIGZpcm13YXJlLCBhbmQgVEdJRCBjYW5ub3QgZW5jb2RlIGl0ICovXG4gODAyOlx0XHRpZiAoYmFuZF9pZHggXHUwMDI2XHUwMDI2IGJhbmRfaWR4ICE9IDB4ZmYpXG4gODAzOlx0XHRcdHZhbCB8PSBGSUVMRF9QUkVQKE1UX1RYRDFfVEdJRCwgYmFuZF9pZHgpO1xuIDgwNDpcdFxuIDgwNTpcdFx0dHh3aVsxXSA9IGNwdV90b19sZTMyKHZhbCk7XG4gODA2Olx0XHR0eHdpWzJdID0gMDtcbiA4MDc6XHRcbiA4MDg6XHRcdHZhbCA9IEZJRUxEX1BSRVAoTVRfVFhEM19SRU1fVFhfQ09VTlQsIDE1KTtcbiA4MDk6XHRcbiA4MTA6XHRcdGlmIChrZXkpXG4gODExOlx0XHRcdHZhbCB8PSBNVF9UWEQzX1BST1RFQ1RfRlJBTUU7XG4gODEyOlx0XHRpZiAoaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX0NUTF9OT19BQ0spXG4gODEzOlx0XHRcdHZhbCB8PSBNVF9UWEQzX05PX0FDSztcbiA4MTQ6XHRcdGlmICh3Y2lkLVx1MDAzZWFtc2R1KVxuIDgxNTpcdFx0XHR2YWwgfD0gTVRfVFhEM19IV19BTVNEVTtcbiA4MTY6XHRcbiA4MTc6XHRcdHR4d2lbM10gPSBjcHVfdG9fbGUzMih2YWwpO1xuIDgxODpcdFx0dHh3aVs0XSA9IDA7XG4gODE5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0MjEKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIGJyZWFrZG93biBvZiBteSB0aG91Z2h0IHByb2Nlc3MgYXMgSSBkZWx2ZSBpbnRvIHRoZSBgbXQ3OTI1X21hY193cml0ZV90eHdpYCBmdW5jdGlvbiwgZm9jdXNpbmcgb24gdGhlIG9yaWdpbiBvZiBgYmFuZF9pZHhgOgoKKipEZWNvbnN0cnVjdGluZyBgbXQ3OTI1X21hY193cml0ZV90eHdpYCBhbmQgdGhlIEVsdXNpdmUgYGJhbmRfaWR4YCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdHJhY2UgdGhpcyBgYmFuZF9pZHhgIHZhcmlhYmxlIHdpdGhpbiBgbXQ3OTI1X21hY193cml0ZV90eHdpYC4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBwcmVjaXNlbHkgKndoZXJlKiB0aGlzIGluZGV4IGlzIGJlaW5nIGRlcml2ZWQuIEl0JiMzOTtzIGNydWNpYWwgYmVjYXVzZSBpdCYjMzk7cyBjbGVhcmx5IHJlbGF0ZWQgdG8gYmFuZCBzZWxlY3Rpb24gaW4gdGhlIHJhZGlvIGhhcmR3YXJlLCBhbmQgdGhhdCYjMzk7cyBmdW5kYW1lbnRhbCBmb3IgY29ycmVjdCBwYWNrZXQgdHJhbnNtaXNzaW9uLiBTbywgSSBuZWVkIHRvIGtub3cgaWYgaXQmIzM5O3MgZGVyaXZlZCBmcm9tIHRoZSBkcml2ZXImIzM5O3MgY29uZmlndXJhdGlvbiwgdGhlIGluY29taW5nIHBhY2tldCwgb3IgbWF5YmUgc29tZXRoaW5nIGVsc2UgZW50aXJlbHkuCgpJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyB0aGUgZnVuY3Rpb24mIzM5O3Mgc2lnbmF0dXJlLiBJcyBgYmFuZF9pZHhgIHBhc3NlZCBpbiBkaXJlY3RseSBhcyBhbiBhcmd1bWVudD8gSWYgc28sIHRoYXQgZ2l2ZXMgbWUgYSBuYXJyb3dlciBzY29wZSB0byBodW50IGRvd24gaXRzIHVwc3RyZWFtIG9yaWdpbi4gSWYgaXQmIzM5O3MgYSBsb2NhbCB2YXJpYWJsZSwgSSYjMzk7bGwgbmVlZCB0byB3b3JrIGZyb20gdGhlcmUuIEFyZSB0aGVyZSBhbnkgb3RoZXIgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgaGF2ZSBpbmZvcm1hdGlvbiB0aGF0IGxvb2tzIHJlbGF0ZWQgdG8gdGhpcz8gVGhpbmdzIGxpa2UgdGhlIHJlZ3VsYXRvcnkgZG9tYWluIG9yIGNvbmZpZ3VyZWQgb3BlcmF0aW5nIGJhbmQgc3ByaW5nIHRvIG1pbmQgYXMgdGhpbmdzIEkgY2FuIGNyb3NzLXJlZmVyZW5jZSwgaWYgbmVlZCBiZS4KClRoZW4sIEkmIzM5O2xsIHNjcnV0aW5pemUgdGhlIGZ1bmN0aW9uJiMzOTtzIGJvZHkuIEkmIzM5O2xsIG1ldGljdWxvdXNseSBzY2FuIHRoZSBjb2RlLCBsb29raW5nIGZvciBhbnkgYXNzaWdubWVudHMgb3IgY2FsY3VsYXRpb25zIGludm9sdmluZyBgYmFuZF9pZHhgLiBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFscyB0aGF0IG1pZ2h0IHNldCBgYmFuZF9pZHhgIGJhc2VkIG9uLCBzYXksIHRoZSB0eXBlIG9mIGZyYW1lIGJlaW5nIHRyYW5zbWl0dGVkIChlLmcuLCBjb250cm9sIGZyYW1lcywgZGF0YSBmcmFtZXMsIG1hbmFnZW1lbnQgZnJhbWVzKT8gT3IsIGNvdWxkIGl0IGJlIGRlcml2ZWQgZnJvbSBhIGxvb2t1cCB0YWJsZT8gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGlzIGRyaXZlciwgaXQgd291bGQgbm90IGJlIGEgc3VycHJpc2UgdG8gc2VlIGEgbG90IG9mIGJpdC10d2lkZGxpbmcgYW5kIGhhcmR3YXJlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLgoKTXkgcHJpbWFyeSBnb2FsIGhlcmUgaXMgdG8gZXN0YWJsaXNoIGEgY29tcGxldGUgZGF0YSBmbG93IHBpY3R1cmUgb2YgdGhlIGBiYW5kX2lkeGAgdmFyaWFibGUuIFVsdGltYXRlbHksIHRoZSBxdWVzdGlvbiBpcywgKmhvdyogZG9lcyB0aGUgZHJpdmVyIGRldGVybWluZSB0aGUgYXBwcm9wcmlhdGUgcmFkaW8gYmFuZCBmb3IgYSBnaXZlbiB0cmFuc21pc3Npb24/IEFuZCwgZG9lcyB0aGlzIGFwcHJvYWNoIG1ha2Ugc2Vuc2Ugd2l0aCB0aGUgY2hpcHNldCBkb2N1bWVudGF0aW9uIGFuZCBhbnkgcHJldmlvdXMgZXhwZXJpZW5jZSBJJiMzOTt2ZSBoYWQgd29ya2luZyB3aXRoIHNpbWlsYXIgaGFyZHdhcmU/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3NDUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDc0NTpcdFxuIDc0NjpcdHZvaWRcbiA3NDc6XHRtdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbiA3NDg6XHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbiA3NDk6XHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5LCBpbnQgcGlkLFxuIDc1MDpcdFx0XHQgICAgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgdTMyIGNoYW5nZWQpXG4gNzUxOlx0e1xuIDc1MjpcdFx0c3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvID0gSUVFRTgwMjExX1NLQl9DQihza2IpO1xuIDc1MzpcdFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiA9IGluZm8tXHUwMDNlY29udHJvbC52aWY7XG4gNzU0Olx0XHR1OCBwX2ZtdCwgcV9pZHgsIG9tYWNfaWR4ID0gMCwgd21tX2lkeCA9IDAsIGJhbmRfaWR4ID0gMDtcbiA3NTU6XHRcdHUzMiB2YWwsIHN6X3R4ZCA9IG10NzZfaXNfbW1pbyhkZXYpID8gTVRfVFhEX1NJWkUgOiBNVF9TRElPX1RYRF9TSVpFO1xuIDc1NjpcdFx0Ym9vbCBpc184MDIzID0gaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX0NUTF9IV184MDIxMV9FTkNBUDtcbiA3NTc6XHRcdHN0cnVjdCBtdDc2X3ZpZl9saW5rICptdmlmO1xuIDc1ODpcdFx0Ym9vbCBiZWFjb24gPSAhIShjaGFuZ2VkIFx1MDAyNiAoQlNTX0NIQU5HRURfQkVBQ09OIHxcbiA3NTk6XHRcdFx0XHRcdCAgICBCU1NfQ0hBTkdFRF9CRUFDT05fRU5BQkxFRCkpO1xuIDc2MDpcdFx0Ym9vbCBpbmJhbmRfZGlzYyA9ICEhKGNoYW5nZWQgXHUwMDI2IChCU1NfQ0hBTkdFRF9VTlNPTF9CQ0FTVF9QUk9CRV9SRVNQIHxcbiA3NjE6XHRcdFx0XHRcdFx0IEJTU19DSEFOR0VEX0ZJTFNfRElTQ09WRVJZKSk7XG4gNzYyOlx0XHRzdHJ1Y3QgbXQ3OTJ4X2Jzc19jb25mICptY29uZjtcbiA3NjM6XHRcbiA3NjQ6XHRcdG1jb25mID0gdmlmID8gbXQ3OTJ4X3ZpZl90b19saW5rKChzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqKXZpZi1cdTAwM2VkcnZfcHJpdixcbiA3NjU6XHRcdFx0XHRcdFx0IHdjaWQtXHUwMDNlbGlua19pZCkgOiBOVUxMO1xuIDc2NjpcdFx0bXZpZiA9IG1jb25mID8gKHN0cnVjdCBtdDc2X3ZpZl9saW5rICopXHUwMDI2bWNvbmYtXHUwMDNlbXQ3NiA6IE5VTEw7XG4gNzY3Olx0XG4gNzY4Olx0XHRpZiAobXZpZikge1xuIDc2OTpcdFx0XHRvbWFjX2lkeCA9IG12aWYtXHUwMDNlb21hY19pZHg7XG4gNzcwOlx0XHRcdHdtbV9pZHggPSBtdmlmLVx1MDAzZXdtbV9pZHg7XG4gNzcxOlx0XHRcdGJhbmRfaWR4ID0gbXZpZi1cdTAwM2ViYW5kX2lkeDtcbiA3NzI6XHRcdH1cbiA3NzM6XHRcbiA3NzQ6XHRcdGlmIChpbmJhbmRfZGlzYykge1xuIDc3NTpcdFx0XHRwX2ZtdCA9IE1UX1RYX1RZUEVfRlc7XG4gNzc2Olx0XHRcdHFfaWR4ID0gTVRfTE1BQ19BTFRYMDtcbiA3Nzc6XHRcdH0gZWxzZSBpZiAoYmVhY29uKSB7XG4gNzc4Olx0XHRcdHBfZm10ID0gTVRfVFhfVFlQRV9GVztcbiA3Nzk6XHRcdFx0cV9pZHggPSBNVF9MTUFDX0JDTjA7XG4gNzgwOlx0XHR9IGVsc2UgaWYgKHFpZCBcdTAwM2U9IE1UX1RYUV9QU0QpIHtcbiA3ODE6XHRcdFx0cF9mbXQgPSBtdDc2X2lzX21taW8oZGV2KSA/IE1UX1RYX1RZUEVfQ1QgOiBNVF9UWF9UWVBFX1NGO1xuIDc4MjpcdFx0XHRxX2lkeCA9IE1UX0xNQUNfQUxUWDA7XG4gNzgzOlx0XHR9IGVsc2Uge1xuIDc4NDpcdFx0XHRwX2ZtdCA9IG10NzZfaXNfbW1pbyhkZXYpID8gTVRfVFhfVFlQRV9DVCA6IE1UX1RYX1RZUEVfU0Y7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4NDkKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCYW5kIEluZGV4IEFzc2lnbm1lbnQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBiYW5kX2lkeGAgaXMgc3RhcnRpbmcgYXQgMCwgd2hpY2ggbWFrZXMgc2Vuc2UgYXMgYSBkZWZhdWx0LiBOb3csIGlmIGBtdmlmYCBleGlzdHMsIGl0JiMzOTtzIGJlaW5nIHBvdGVudGlhbGx5IG92ZXJ3cml0dGVuIGJ5IGBtdmlmLSZndDtiYW5kX2lkeGAuIEkgbmVlZCB0byByZW1lbWJlciB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggdGhlIGBNVF9UWEQxX1RHSURgIGZpZWxkLi4uYWggeWVzLCBpdCYjMzk7cyBiZWluZyBwcmVwcGVkIHdpdGggYEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeClgLgoKTm93IEkgc2VlIGl0LiBCZWZvcmUsIGlmIGBiYW5kX2lkeGAgd2FzIHNldCB0byBgMHhmZmAg4oCTIHRoYXQgYEJBTkRfQVVUT2Agb3IgYE1UX0JBTkRfQVVUT2AgY29uc3RhbnQg4oCTIGBGSUVMRF9QUkVQYCB3b3VsZCBsaWtlbHkgY2F1c2UgYSBwcm9ibGVtIHdpdGggYE1UX1RYRDFfVEdJRGAuIFRoZSBwcmVwIGxpa2VseSB3b3VsZCBvdmVyZmxvdyB0aGUgYml0ZmllbGQsIG9yIHBvdGVudGlhbGx5IHNldCB0aGUgVEdJRCB0byBgMHhmZmAgaWYgdGhlIGJpdHMgYWxsb3dlZCB0aGF0IHZhbHVlLiBJdCBjb3VsZCBldmVuIHRyaWdnZXIgYSBjb21waWxlciB3YXJuaW5nIG9yIGJ1ZyBpZiB0aGUgYEZJRUxEX1BSRVBgIG1hY3JvIGluY2x1ZGVzIGFueSBtYXNrIGNoZWNrcy4gQXQgcnVudGltZSwgdGhlIHJlc3VsdCB3b3VsZCBiZSBpbnZhbGlkIGJpdHMgYmVpbmcgc2V0LCBvciBwb3RlbnRpYWxseSBtYXNrZWQuCgpMZXQgbWUganVzdCBxdWlja2x5IHZlcmlmeSB0aGUgYE1UX1RYRDFfVEdJRGAgZGVmaW5pdGlvbiB0byBlbnN1cmUgSSYjMzk7bSByZW1lbWJlcmluZyB0aGlzIGNvcnJlY3RseS4gSXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoZSBmaWVsZCB3aWR0aCBhbmQgaG93IGAweGZmYCBpbXBhY3RzIGl0cyBlbmNvZGluZy4gV2UgbmVlZCB0byBiZSBzdXJlIHRoYXQgdGhlIHByZXBwZWQgdmFsdWUgaXMgYWx3YXlzIHdpdGhpbiB0aGUgYm91bmRzIG9mIHRoaXMgYml0ZmllbGQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01UX1RYRDFfVEdJRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTc0Nz1tdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04MDItXHRpZiAoYmFuZF9pZHggXHUwMDI2XHUwMDI2IGJhbmRfaWR4ICE9IDB4ZmYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4MDM6XHRcdHZhbCB8PSBGSUVMRF9QUkVQKE1UX1RYRDFfVEdJRCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODA0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTgxCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgYE1UX1RYRDFfVEdJRGAqKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBNVF9UWEQxX1RHSURgIGFjdHVhbGx5ICppcyouIElzIGl0IGEgbWFjcm8/IEEgdmFyaWFibGU/IExldCYjMzk7cyBhc3N1bWUgaXQmIzM5O3MgYSBtYWNybywgZm9yIG5vdy4gSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoZSBlbnRpcmUgcHJvamVjdCB0cmVlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgbXQ3NmAgaGVhZGVycyBhbmQgdGhlIHJlc3Qgb2YgdGhlIHJlbGV2YW50IHNvdXJjZSBjb2RlLCB0byBwaW4gZG93biBpdHMgZGVmaW5pdGlvbi4gS25vd2luZyB0aGUgcHJlY2lzZSBkZWZpbml0aW9uIGlzIGFic29sdXRlbHkgY3JpdGljYWwuIFRoaXMgd2lsbCByZXZlYWwgaXRzIGRhdGEgdHlwZSwgcHVycG9zZSBhbmQgaXRzIHJlbGF0aW9uc2hpcCB3aXRoIG90aGVyIHZhcmlhYmxlcyBvciBtb2R1bGVzLiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB3ZSBnZXQgdGhpcyByaWdodC4gV2UgY2FuJiMzOTt0IHByb2NlZWQgdW50aWwgd2UgaGF2ZSBhIHNvbGlkIGhhbmRsZSBvbiBpdHMgc2NvcGUgYW5kIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01UX1RYRDFfVEdJRCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjMl9tYWMuaD0zNT1lbnVtIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjMl9tYWMuaC01NS0jZGVmaW5lIE1UX1RYRDFfTE9OR19GT1JNQVRcdFx0QklUKDMxKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYzJfbWFjLmg6NTY6I2RlZmluZSBNVF9UWEQxX1RHSURcdFx0XHRCSVQoMzApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjMl9tYWMuaC01Ny0jZGVmaW5lIE1UX1RYRDFfT1dOX01BQ1x0XHRcdEdFTk1BU0soMjksIDI0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMzX21hYy5oPTIwNT1lbnVtIHR4X2ZyYWdfaWR4IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMuaC0yMzItI2RlZmluZSBNVF9UWEQxX0hEUl9GT1JNQVRcdFx0R0VOTUFTSygxNSwgMTQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMuaDoyMzM6I2RlZmluZSBNVF9UWEQxX1RHSURcdFx0XHRHRU5NQVNLKDEzLCAxMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMzX21hYy5oLTIzNC0jZGVmaW5lIE1UX1RYRDFfV0xBTl9JRFhcdFx0R0VOTUFTSygxMSwgMClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jPTUwND12b2lkIG10NzZfY29ubmFjMl9tYWNfd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNTYyLVx0aWYgKHBoeV9pZHggfHwgYmFuZF9pZHgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jOjU2MzpcdFx0dmFsIHw9IE1UX1RYRDFfVEdJRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNTY0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTc0Nz1tdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04MDItXHRpZiAoYmFuZF9pZHggXHUwMDI2XHUwMDI2IGJhbmRfaWR4ICE9IDB4ZmYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4MDM6XHRcdHZhbCB8PSBGSUVMRF9QUkVQKE1UX1RYRDFfVEdJRCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODA0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTg5ND12b2lkIG10Nzk5Nl9tYWNfd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtOTUyLVx0aWYgKGJhbmRfaWR4KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6OTUzOlx0XHR2YWwgfD0gRklFTERfUFJFUChNVF9UWEQxX1RHSUQsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTk1NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDM6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODcwOQoJCQkJCQkJb3V0cHV0OiAxNzQKCQkJCQkJCXRob3VnaHRzOiAyMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRHJpdmVyIEJ1ZyBGaXgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZml4IGluIGBtdDc2X2Nvbm5hYzNfbWFjLmhgLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCB0aGUgYE1UX1RYRDFfVEdJRGAgZmllbGQsIHdoaWNoIGlzIGRlZmluZWQgYXMgYEdFTk1BU0soMTMsIDEyKWAg4oCTIHRoYXQmIzM5O3MgMiBiaXRzLCBlZmZlY3RpdmVseSAwIHRvIDMuIFRoZSBjcnV4IG9mIHRoZSBpc3N1ZSBpcyBhcm91bmQgdGhlIGBiYW5kX2lkeGAgdmFyaWFibGUuIElmIGBiYW5kX2lkeGAgc29tZWhvdyBlbmRzIHVwIGJlaW5nIGAweGZmYCwgdGhlIGBGSUVMRF9QUkVQYCBtYWNybyB3b3VsZCBtaXNiZWhhdmU7IHBvdGVudGlhbGx5IGNhdXNpbmcgdHJ1bmNhdGlvbiBvciBvdGhlciBmYWlsdXJlcy4gSXQmIzM5O3MgYSBsb2dpYyBidWcgaW4gaG93IHRoZSBwYWNrZXQgdHJhbnNtaXNzaW9uIGRlc2NyaXB0b3IgaXMgYmVpbmcgZ2VuZXJhdGVkLCBwYXJ0aWN1bGFybHkgb24gdGhlIE1UNzkyNSBoYXJkd2FyZS4KCk15IHByaW1hcnkgY29uY2VybiBpcyBhbHdheXM6IGRvZXMgdGhpcyBmaXggaW50cm9kdWNlIGFueSBuZXcgdnVsbmVyYWJpbGl0aWVzPyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBwb3RlbnRpYWwgbGVha3Mgb2YgdW5pbml0aWFsaXplZCBkYXRhIHRvIHVzZXJzcGFjZSwgb3IgZGVwZW5kZW5jaWVzIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLgoKTGV0JiMzOTtzIGJyZWFrIGl0IGRvd246IEZpcnN0LCBhbGwgdGhlIHZhcmlhYmxlcyBpbnZvbHZlZCB3aXRoaW4gYG10NzkyNV9tYWNfd3JpdGVfdHh3aWAgdGhhdCBhcmUgaW52b2x2ZWQgaW4gdGhpcyBmaXggYXJlIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgKGluIHRoaXMgY2FzZSwgYGJhbmRfaWR4YCBnZXRzIGEgdmFsdWUgb2YgYDBgKS4gU2Vjb25kLCB0aGVyZSYjMzk7cyBubyBkaXJlY3QgY29weSB0byB1c2Vyc3BhY2UgaGVyZTogbm8gYGNvcHlfdG9fdXNlcmAsIG5vIGBwdXRfdXNlcmAsIG5vIG5ldGxpbmsgbWVzc2FnZXMsIGFuZCBubyBpb2N0bCBjYWxscyBpbnZvbHZlZC4gVGhpcyBlZmZlY3RpdmVseSBlbGltaW5hdGVzIHRoZSByaXNrIG9mIGxlYWtpbmcgcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBkYXRhLiBGaW5hbGx5LCB0aGlzIGNoYW5nZSBpc24mIzM5O3QgdG91Y2hpbmcgbWVtb3J5IGluaXRpYWxpemF0aW9uIHJvdXRpbmVzIG9yIGJ1ZmZlciBib3VuZGFyaWVzLCBzbyB0aGVyZSYjMzk7cyBubyBpbmNyZWFzZWQgcmlzayB0aGVyZS4KCkdpdmVuIHRoaXMgYW5hbHlzaXMsIEkmIzM5O20gY29uZmlkZW50IHRoYXQgdGhlIGFuc3dlciB0byBOZWVkc0tNU0FOIGlzICYjMzQ7ZmFsc2UmIzM0Oy4gVGhpcyBhcHBlYXJzIHRvIGJlIGEgY2xlYW4sIHNhZmUgZml4LiBUaW1lIHRvIGNhbGwgaXQgaW4gd2l0aCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2FsY3VsYXRpb24gb2YgaGFyZHdhcmUgVFggZGVzY3JpcHRvciBiaXRzIGluIGBtdDc5MjVfbWFjX3dyaXRlX3R4d2koKWAgYnkgYXZvaWRpbmcgdGhlIHVzZSBvZiBgRklFTERfUFJFUChNVF9UWEQxX1RHSUQsIGJhbmRfaWR4KWAgd2hlbiBgYmFuZF9pZHggPT0gMHhmZmAgKEJBTkRfQVVUTykuXG5cbkFsbCBsb2NhbCB2YXJpYWJsZXMsIGluY2x1ZGluZyBgYmFuZF9pZHhgLCBhcmUgZXhwbGljaXRseSBpbml0aWFsaXplZCwgYW5kIHRoZSBmdW5jdGlvbiB3cml0ZXMgZGVzY3JpcHRvciBmaWVsZHMgdG8gYSBwcmUtYWxsb2NhdGVkL21hbmFnZWQgYnVmZmVyIGZvciBoYXJkd2FyZSB0cmFuc21pc3Npb24uIE5vIG1lbW9yeSBjb3B5aW5nIHRvIHVzZXIgc3BhY2UsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgdXNhZ2UsIG9yIHVuaW5pdGlhbGl6ZWQgcGFkZGluZy9idWZmZXIgaGFuZGxpbmcgaXMgaW50cm9kdWNlZCBvciBtb2RpZmllZC4gVGhlcmVmb3JlLCB0aGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNhbGN1bGF0aW9uIG9mIGhhcmR3YXJlIFRYIGRlc2NyaXB0b3IgYml0cyBpbiBgbXQ3OTI1X21hY193cml0ZV90eHdpKClgIGJ5IGF2b2lkaW5nIHRoZSB1c2Ugb2YgYEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeClgIHdoZW4gYGJhbmRfaWR4ID09IDB4ZmZgIChCQU5EX0FVVE8pLlxuXG5BbGwgbG9jYWwgdmFyaWFibGVzLCBpbmNsdWRpbmcgYGJhbmRfaWR4YCwgYXJlIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQsIGFuZCB0aGUgZnVuY3Rpb24gd3JpdGVzIGRlc2NyaXB0b3IgZmllbGRzIHRvIGEgcHJlLWFsbG9jYXRlZC9tYW5hZ2VkIGJ1ZmZlciBmb3IgaGFyZHdhcmUgdHJhbnNtaXNzaW9uLiBObyBtZW1vcnkgY29weWluZyB0byB1c2VyIHNwYWNlLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHVzYWdlLCBvciB1bmluaXRpYWxpemVkIHBhZGRpbmcvYnVmZmVyIGhhbmRsaW5nIGlzIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuIFRoZXJlZm9yZSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTFUMDM6MTg6MzAuNzgwNDYyMDFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzE0MDk4NjI2MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTI1VVwiLFxuICAgIFwiTVQ3OTI1X0NPTU1PTlwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTUVESUFURUtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfbWFjX3dyaXRlX3R4d2lcIixcbiAgICBcIm10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYlwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNhbGN1bGF0aW9uIG9mIGhhcmR3YXJlIFRYIGRlc2NyaXB0b3IgYml0cyBpbiBgbXQ3OTI1X21hY193cml0ZV90eHdpKClgIGJ5IGF2b2lkaW5nIHRoZSB1c2Ugb2YgYEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeClgIHdoZW4gYGJhbmRfaWR4ID09IDB4ZmZgIChCQU5EX0FVVE8pLlxcblxcbkFsbCBsb2NhbCB2YXJpYWJsZXMsIGluY2x1ZGluZyBgYmFuZF9pZHhgLCBhcmUgZXhwbGljaXRseSBpbml0aWFsaXplZCwgYW5kIHRoZSBmdW5jdGlvbiB3cml0ZXMgZGVzY3JpcHRvciBmaWVsZHMgdG8gYSBwcmUtYWxsb2NhdGVkL21hbmFnZWQgYnVmZmVyIGZvciBoYXJkd2FyZSB0cmFuc21pc3Npb24uIE5vIG1lbW9yeSBjb3B5aW5nIHRvIHVzZXIgc3BhY2UsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgdXNhZ2UsIG9yIHVuaW5pdGlhbGl6ZWQgcGFkZGluZy9idWZmZXIgaGFuZGxpbmcgaXMgaW50cm9kdWNlZCBvciBtb2RpZmllZC4gVGhlcmVmb3JlLCB0aGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGJhbmRfaWR4IGhhbmRsaW5nIGluIG10NzkyNV9tYWNfd3JpdGVfdHh3aSgpIHdoZW4gd3JpdGluZyBUWCB3aXJlbGVzcyBpbmZvcm1hdGlvbiBkZXNjcmlwdG9ycy4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgZGV2aWNlcyAoTVQ3OTI1VSkgd2hpY2ggYXJlIHJlYWNoYWJsZSBhbmQgZnV6emFibGUgdmlhIFVTQiBkZXZpY2UgZW11bGF0aW9uIChVU0IgUmF3IEdhZGdldCAvIHZ1c2IpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoxODozMC43ODA0NjU4MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQyOTQwNzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZGE1YmI2YjA2OWFkZWNkMmE2OTM1MTgyYjZhNjcyY2U1NzQyYmEwZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIFNlcCAxMSAwMzoxODozMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jXFxuaW5kZXggMTAxZjU3MWIwMjdmMS4uM2I4MmM5ZGUyNmM1YiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jXFxuQEAgLTc5OCw3ICs3OTgsOCBAQCBtdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcXG4gXFx0dmFsID0gRklFTERfUFJFUChNVF9UWEQxX1dMQU5fSURYLCB3Y2lkLVxcdTAwM2VpZHgpIHxcXG4gXFx0ICAgICAgRklFTERfUFJFUChNVF9UWEQxX09XTl9NQUMsIG9tYWNfaWR4KTtcXG4gXFxuLVxcdGlmIChiYW5kX2lkeClcXG4rXFx0LyogMHhmZiBtZWFucyBCQU5EX0FVVE8gdG8gdGhlIGZpcm13YXJlLCBhbmQgVEdJRCBjYW5ub3QgZW5jb2RlIGl0ICovXFxuK1xcdGlmIChiYW5kX2lkeCBcXHUwMDI2XFx1MDAyNiBiYW5kX2lkeCAhPSAweGZmKVxcbiBcXHRcXHR2YWwgfD0gRklFTERfUFJFUChNVF9UWEQxX1RHSUQsIGJhbmRfaWR4KTtcXG4gXFxuIFxcdHR4d2lbMV0gPSBjcHVfdG9fbGUzMih2YWwpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoxODozMS4yMjQwNjMyOTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjExMjA3OTA0MjI2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MjVVXCIsXG4gICAgXCJNVDc5MjVfQ09NTU9OXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9NRURJQVRFS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzkyNV9tYWNfd3JpdGVfdHh3aVwiLFxuICAgIFwibXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYmFuZF9pZHggaGFuZGxpbmcgaW4gbXQ3OTI1X21hY193cml0ZV90eHdpKCkgd2hlbiB3cml0aW5nIFRYIHdpcmVsZXNzIGluZm9ybWF0aW9uIGRlc2NyaXB0b3JzLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIChNVDc5MjVVKSB3aGljaCBhcmUgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgVVNCIGRldmljZSBlbXVsYXRpb24gKFVTQiBSYXcgR2FkZ2V0IC8gdnVzYikuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZGE1YmI2YjA2OWFkZWNkMmE2OTM1MTgyYjZhNjcyY2U1NzQyYmEwZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDExIDAzOjE4OjMwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuY1xuaW5kZXggMTAxZjU3MWIwMjdmMS4uM2I4MmM5ZGUyNmM1YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuY1xuQEAgLTc5OCw3ICs3OTgsOCBAQCBtdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbiBcdHZhbCA9IEZJRUxEX1BSRVAoTVRfVFhEMV9XTEFOX0lEWCwgd2NpZC1cdTAwM2VpZHgpIHxcbiBcdCAgICAgIEZJRUxEX1BSRVAoTVRfVFhEMV9PV05fTUFDLCBvbWFjX2lkeCk7XG4gXG4tXHRpZiAoYmFuZF9pZHgpXG4rXHQvKiAweGZmIG1lYW5zIEJBTkRfQVVUTyB0byB0aGUgZmlybXdhcmUsIGFuZCBUR0lEIGNhbm5vdCBlbmNvZGUgaXQgKi9cbitcdGlmIChiYW5kX2lkeCBcdTAwMjZcdTAwMjYgYmFuZF9pZHggIT0gMHhmZilcbiBcdFx0dmFsIHw9IEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeCk7XG4gXG4gXHR0eHdpWzFdID0gY3B1X3RvX2xlMzIodmFsKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAzOjE4OjMxLjIyNDA2NDUwM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ3NDkwMDA3OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXNzZXNzIHRoaXMgcGF0Y2gncyBmdXp6aW5nIHBvdGVudGlhbCwgYW5kIHdoZXJlIHRvIGZvY3VzIG91ciBlZmZvcnRzLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2UuIEl0IGxvb2tzIGxpa2Ugd2UgYXJlIGRlYWxpbmcgd2l0aCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBtdDc5MjVfbWFjX3dyaXRlX3R4d2lgIGZ1bmN0aW9uLiBUaGF0J3Mgb3VyIGZvY2FsIHBvaW50LlxuXG5CZWZvcmUgSSBqdW1wIGludG8gZGlzc2VjdGluZyB0aGUgZnVuY3Rpb24gaXRzZWxmLCBsZXQncyBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyIHRoZSAqY29udGV4dCogb2YgYG10NzkyNWAuIElzIHRoaXMgYSBVU0IsIFBDSSwgb3IgU0RJTyBkZXZpY2U/IENhbiB3ZSBlYXNpbHkgZW11bGF0ZSBpdCwgb3IgaXMgaXQgbW9yZSBvZiBhIGhhcmR3YXJlLWRlcGVuZGVudCBQQ0llL1VTQiBzY2VuYXJpbz8gVW5kZXJzdGFuZGluZyB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBhbmQgdGhlIHBvdGVudGlhbCBmb3IgZW11bGF0aW9uIGlzIGNyaXRpY2FsLiBDYW4gd2UgdXNlIFVTQiBnYWRnZXRzIHRvIHNpbXVsYXRlIGFuIGBtdDc5MjVgPyBLbm93aW5nIHRoZSBjb25uZWN0aW9uIHR5cGUgKFVTQiwgUENJLCBTRElPKSBkaWN0YXRlcyBzbyBtYW55IHRoaW5ncyBhYm91dCBob3cgd2UnZCBhcHByb2FjaCBmdXp6aW5nLiBJdCBpbmZvcm1zIHRoZSBzZXR1cCBhbmQgbWFrZXMgdGhlIGZ1enppbmcgYXBwcm9hY2ggdmVyeSBkaWZmZXJlbnQuIFRoaXMgaXMgdGhlIGZpcnN0IHF1ZXN0aW9uIEkgbmVlZCBhbnN3ZXJlZCBiZWZvcmUgSSBwcm9jZWVkIHdpdGggYW55IGRlZXBlciBhbmFseXNpcyBvZiB0aGUgY29kZS4gTGV0J3MgcmVzZWFyY2ggd2hhdCBgbXQ3OTI1YCBpcyBpbiByZWFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTg4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDM6MTg6MzUuOTczMDY3NDQ4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NDcxNzQwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MjVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDQwOTMgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZz01MD1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjUxOnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU9NTE9b2JqLSQoQ09ORklHX01UNzk5NkUpICs9IG10Nzk5Ni9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjUyOm9iai0kKENPTkZJR19NVDc5MjVfQ09NTU9OKSArPSBtdDc5MjUvXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MTgwPXN0YXRpYyBpbmxpbmUgYm9vbCBpc19jb25uYWMzKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTE4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MTg1OnN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc5MjUoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTE4Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jPTU0PWludCBtdDc2X2Nvbm5hY19tY3VfaW5pdF9kb3dubG9hZChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTMyIGFkZHIsIHUzMiBsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jLTY5LVxcdCAgICAoaXNfY29ubmFjMihkZXYpIFxcdTAwMjZcXHUwMDI2IGFkZHIgPT0gMHg5MDAwMDApIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYzo3MDpcXHQgICAgKChpc19tdDc5MjUoZGV2KSB8fCBpc19tdDc5MjcoZGV2KSkgXFx1MDAyNlxcdTAwMjYgKGFkZHIgPT0gMHg5MDAwMDAgfHwgYWRkciA9PSAweGUwMDAyODAwKSkgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jLTcxLVxcdCAgICAoaXNfbXQ3OTI4KGRldikgXFx1MDAyNlxcdTAwMjYgKGFkZHIgPT0gMHg5MDAwMDAgfHwgYWRkciA9PSAweGUwMDAyMDAwKSkgfHxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlLTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTVQ3OTI1X0NPTU1PTikgKz0gbXQ3OTI1LWNvbW1vbi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfTVQ3OTI1RSkgKz0gbXQ3OTI1ZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfTVQ3OTI1VSkgKz0gbXQ3OTI1dS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGUtNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo3Om10NzkyNS1jb21tb24teSA6PSBtYWMubyBtY3UubyByZWdkLm8gbWFpbi5vIGluaXQubyBkZWJ1Z2ZzLm8gbmFuLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo4Om10NzkyNS1jb21tb24tJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjk6bXQ3OTI1ZS15IDo9IHBjaS5vIHBjaV9tYWMubyBwY2lfbWN1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZToxMDptdDc5MjV1LXkgOj0gdXNiLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo0OiNpbmNsdWRlIFxcXCJtdDc5MjUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNS0jaW5jbHVkZSBcXFwibWN1LmhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9Nz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjg6bXQ3OTI1X3JlZ19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTMtXFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTQ6XFx0bXQ3OTI1X21jdV9yZWd2YWwoZGV2LCBkZXYtXFx1MDAzZW10NzYuZGVidWdmc19yZWcsIFxcdTAwMjZyZWd2YWwsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNS1cXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTIwPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjE6bXQ3OTI1X3JlZ19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNy1cXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODpcXHRyZXQgPSBtdDc5MjVfbWN1X3JlZ3ZhbChkZXYsIGRldi1cXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXFx1MDAyNnJlZ3ZhbCwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yOS1cXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozNjpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZWd2YWwsIG10NzkyNV9yZWdfZ2V0LCBtdDc5MjVfcmVnX3NldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzctXFx0XFx0XFx0IFxcXCIweCUwOGxseFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTM4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mzk6bXQ3OTI1X2Z3X2RlYnVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDUtXFx0ZGV2LVxcdTAwM2Vmd19kZWJ1ZyA9ICh1OCl2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjQ2OlxcdG10NzkyNV9tY3VfZndfbG9nXzJfaG9zdChkZXYsIGRldi1cXHUwMDNlZndfZGVidWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz01Mz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjU0Om10NzkyNV9md19kZWJ1Z19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy02Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NjM6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWcsIG10NzkyNV9md19kZWJ1Z19nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjY0OlxcdFxcdFxcdCBtdDc5MjVfZndfZGVidWdfc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTY1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTY4PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjY5Om10NzkyNV9zZXFfcHV0c19hcnJheShzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKnN0cixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNzAtXFx0XFx0ICAgICAgczggdmFsW11bMl0sIGludCBsZW4sIHU4IGJhbmRfaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo4MzojZGVmaW5lIG10NzkyNV9wcmludF90eHB3cl9lbnRyeShwcmVmaXgsIHJhdGUsIGlkeClcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTg0LSh7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo4NTpcXHRtdDc5MjVfc2VxX3B1dHNfYXJyYXkocywgI3ByZWZpeCBcXFwiICh0bWFjKVxcXCIsXFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy04Ni1cXHRcXHRcXHQgICAgICB0eHB3ci1cXHUwMDNlcmF0ZSxcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9OTE9c3RhdGljIGlubGluZSB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjkyOm10NzkyNV9laHRfdHhwd3Ioc3RydWN0IHNlcV9maWxlICpzLCBzdHJ1Y3QgbXQ3OTI1X3R4cHdyICp0eHB3ciwgdTggYmFuZF9pZHgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTkzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy05Ny1cXHRcXHQgICBcXFwibWNzMTJcXFwiLCBcXFwibWNzMTNcXFwiLCBcXFwibWNzMTRcXFwiLCBcXFwibWNzMTVcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6OTg6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2LCBlaHQyNiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo5OTpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUNTIsIGVodDUyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwMDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMTA2LCBlaHQxMDYsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTAxOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQyNDIsIGVodDI0MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDI6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDQ4NCwgZWh0NDg0LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTA0OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTYsIGVodDk5NiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDU6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngyLCBlaHQ5OTZ4MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDY6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nng0LCBlaHQ5OTZ4NCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDc6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2XzUyLCBlaHQyNl81MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDg6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2XzEwNiwgZWh0MjZfMTA2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwOTpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUNDg0XzI0MiwgZWh0NDg0XzI0MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTA6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nl80ODQsIGVodDk5Nl80ODQsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTExOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZfNDg0XzI0MiwgZWh0OTk2XzQ4NF8yNDIsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTEyOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZ4Ml80ODQsIGVodDk5NngyXzQ4NCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTM6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngzLCBlaHQ5OTZ4MywgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTQ6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngzXzQ4NCwgZWh0OTk2eDNfNDg0LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTExNS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MTE3PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTE4Om10NzkyNV90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTExOS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEyMC1cXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKHMtXFx1MDAzZXByaXZhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMjE6XFx0c3RydWN0IG10NzkyNV90eHB3ciAqdHhwd3IgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMjItXFx0dTggYmFuZF9pZHggPSBkZXYtXFx1MDAzZW1waHkuYmFuZF9pZHg7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTMwLVxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEzMTpcXHRyZXQgPSBtdDc5MjVfZ2V0X3R4cHdyX2luZm8oZGV2LCBiYW5kX2lkeCwgdHhwd3IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMzItXFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMzgtXFx0XFx0ICAgXFxcIiBcXFwiLCBcXFwiMW1cXFwiLCBcXFwiMm1cXFwiLCBcXFwiNW1cXFwiLCBcXFwiMTFtXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEzOTpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoQ0NLLCBjY2ssIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE0My1cXHRcXHQgICBcXFwiNDhtXFxcIiwgXFxcIjU0bVxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNDQ6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KE9GRE0sIG9mZG0sIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE0OC1cXHRcXHQgICBcXFwibWNzNlxcXCIsIFxcXCJtY3M3XFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE0OTpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSFQyMCwgaHQyMCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTUzLVxcdFxcdCAgIFxcXCJtY3M2XFxcIiwgXFxcIm1jczdcXFwiLCBcXFwibWNzMzJcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTU0OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIVDQwLCBodDQwLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNTgtXFx0XFx0ICAgXFxcIm1jczZcXFwiLCBcXFwibWNzN1xcXCIsIFxcXCJtY3M4XFxcIiwgXFxcIm1jczlcXFwiLCBcXFwibWNzMTBcXFwiLCBcXFwibWNzMTFcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTU5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQyMCwgdmh0MjAsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTYwOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQ0MCwgdmh0NDAsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjI6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDgwLCB2aHQ4MCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjM6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDE2MCwgdmh0MTYwLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE2NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTY1OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTI2LCBoZTI2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2NjpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU1MiwgaGU1MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjc6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMTA2LCBoZTEwNiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjg6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMjQyLCBoZTI0MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjk6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFNDg0LCBoZTQ4NCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE3MTpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU5OTYsIGhlOTk2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE3MjpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU5OTZ4MiwgaGU5OTZ4MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE3NDpcXHRtdDc5MjVfZWh0X3R4cHdyKHMsIHR4cHdyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE3NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0xODE9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxODI6bXQ3OTI1X3BtX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xODMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIwNS1cXHRwbS1cXHUwMDNlZW5hYmxlX3VzZXIgPSB2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjIwNjpcXHRtdDc5MjVfc2V0X3J1bnRpbWVfcG0oZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjA3LVxcdG10NzZfY29ubmFjX3Bvd2VyX3NhdmVfc2NoZWQoXFx1MDAyNmRldi1cXHUwMDNlbXBoeSwgcG0pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTIxND1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjIxNTptdDc5MjVfcG1fZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMTYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjI0OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3BtLCBtdDc5MjVfcG1fZ2V0LCBtdDc5MjVfcG1fc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjI2PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjI3Om10NzkyNV9kZWVwX3NsZWVwX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMjgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI0Mi1cXHRwbS1cXHUwMDNlZHNfZW5hYmxlID0gZW5hYmxlIFxcdTAwMjZcXHUwMDI2ICFtb25pdG9yO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNDM6XFx0bXQ3OTI1X21jdV9zZXRfZGVlcF9zbGVlcChkZXYsIHBtLVxcdTAwM2Vkc19lbmFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNDQtb3V0Olxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTI1MD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI1MTptdDc5MjVfZGVlcF9zbGVlcF9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI1Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNjA6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZHMsIG10NzkyNV9kZWVwX3NsZWVwX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjYxOlxcdFxcdFxcdCBtdDc5MjVfZGVlcF9zbGVlcF9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yNjM9REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcG1faWRsZV90aW1lb3V0LCBtdDc5MnhfcG1faWRsZV90aW1lb3V0X2dldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI2NjpzdGF0aWMgaW50IG10NzkyNV9jaGlwX3Jlc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI2Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjc4LVxcdFxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI3OTpcXHRcXHRyZXQgPSBtdDc5MjVfbWN1X2NoaXBfY29uZmlnKGRldiwgXFxcImFzc2VydFxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yODAtXFx0XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4NzpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZXNldCwgTlVMTCwgbXQ3OTI1X2NoaXBfcmVzZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODk6aW50IG10NzkyNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zMDQtXFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cXHUwMDNlbXQ3Ni5kZXYsIFxcXCJ0eHBvd2VyX3NrdVxcXCIsIGRpcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MzA1OlxcdFxcdFxcdFxcdCAgICBtdDc5MjVfdHhwd3IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zMDYtXFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwidHhfc3RhdHNcXFwiLCAwNDAwLCBkaXIsIGRldiwgXFx1MDAyNm10NzkyeF90eF9zdGF0c19mb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy04LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9maXJtd2FyZS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo5OiNpbmNsdWRlIFxcXCJtdDc5MjUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTAtI2luY2x1ZGUgXFxcInJlZ2QuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTQ6c3RhdGljIHNzaXplX3QgbXQ3OTI1X3RoZXJtYWxfdGVtcF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTUtXFx0XFx0XFx0XFx0XFx0c3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjQtXFx0XFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUobWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI1OlxcdFxcdHRlbXBlcmF0dXJlID0gbXQ3OTI1X21jdV9nZXRfdGVtcGVyYXR1cmUocGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjYtXFx0XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UobWRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMzYtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzozNzpzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSX1JPKHRlbXAxX2lucHV0LCBtdDc5MjVfdGhlcm1hbF90ZW1wLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjM5OnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICptdDc5MjVfaHdtb25fYXR0cnNbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDAtXFx0XFx1MDAyNnNlbnNvcl9kZXZfYXR0cl90ZW1wMV9pbnB1dC5kZXZfYXR0ci5hdHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTQyLX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjQzOkFUVFJJQlVURV9HUk9VUFMobXQ3OTI1X2h3bW9uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjQ1OnN0YXRpYyBpbnQgbXQ3OTI1X3RoZXJtYWxfaW5pdChzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy00Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjU0OlxcdG5hbWUgPSBkZXZtX2thc3ByaW50ZihcXHUwMDI2d2lwaHktXFx1MDAzZWRldiwgR0ZQX0tFUk5FTCwgXFxcIm10NzkyNV8lc1xcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTU1LVxcdFxcdFxcdCAgICAgIHdpcGh5X25hbWUod2lwaHkpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy01OS1cXHRod21vbiA9IGRldm1faHdtb25fZGV2aWNlX3JlZ2lzdGVyX3dpdGhfZ3JvdXBzKFxcdTAwMjZ3aXBoeS1cXHUwMDNlZGV2LCBuYW1lLCBwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjYwOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBtdDc5MjVfaHdtb25fZ3JvdXBzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNjEtXFx0cmV0dXJuIFBUUl9FUlJfT1JfWkVSTyhod21vbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjY0OnN0YXRpYyB2b2lkIG10NzkyNV9tYWNfaW5pdF9iYXNpY19yYXRlcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy02NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNzMtXFx0XFx0ICAgICAgIEZJRUxEX1BSRVAoTVRfVFhfUkFURV9JRFgsIHJhdGUgXFx1MDAyNiBHRU5NQVNLKDcsIDApKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NzQ6XFx0XFx0bXQ3OTI1X21hY19zZXRfZml4ZWRfcmF0ZV90YWJsZShkZXYsIGlkeCwgcmF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTc1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy03Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6Nzg6aW50IG10NzkyNV9tYWNfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy03OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtODYtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE1UNzkyeF9XVEJMX1NJWkU7IGkrKylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6ODc6XFx0XFx0bXQ3OTI1X21hY193dGJsX3VwZGF0ZShkZXYsIGksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTg4LVxcdFxcdFxcdFxcdCAgICAgICBNVF9XVEJMX1VQREFURV9BRE1fQ09VTlRfQ0xFQVIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo5MjpcXHRtdDc5MjVfbWFjX2luaXRfYmFzaWNfcmF0ZXMoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo5ODpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWFjX2luaXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy05OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTAwOnN0YXRpYyBpbnQgX19tdDc5MjVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMDEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTExMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTEyOlxcdHJldCA9IG10NzkyNV9tY3Vfc2V0X2VlcHJvbShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMTMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjExNjpcXHRyZXQgPSBtdDc5MjVfbWFjX2luaXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTE3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTIwLVxcdGlmIChpc19tdDc5MjcoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTIxOlxcdFxcdHJldCA9IG10NzkyNV9tY3Vfc2V0X2RiZGMoXFx1MDAyNmRldi1cXHUwMDNlbXBoeSwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEyMi1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMzM6c3RhdGljIGludCBtdDc5MjVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTQ1OlxcdFxcdHJldCA9IF9fbXQ3OTI1X2luaXRfaGFyZHdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTQ2LVxcdFxcdGlmICghcmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTYzOnN0YXRpYyBpbnQgbXQ3OTI1X2luaXRfbmFuX2NhcChzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE2NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTg5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxOTA6c3RhdGljIHZvaWQgbXQ3OTI1X2luaXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE5MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxOTY6XFx0cmV0ID0gbXQ3OTI1X2luaXRfaGFyZHdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTk3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjAwLVxcdG10NzZfc2V0X3N0cmVhbV9jYXBzKFxcdTAwMjZkZXYtXFx1MDAzZW1waHksIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMDE6XFx0bXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHMoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjAyLVxcdG10NzkyeF9jb25maWdfbWFjX2FkZHJfbGlzdChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIwNDpcXHRyZXQgPSBtdDc5MjVfaW5pdF9tbG9fY2FwcyhcXHUwMDI2ZGV2LVxcdTAwM2VwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMDUtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjEwOlxcdGRldi1cXHUwMDNlbXQ3Ni5pbml0X3dpcGh5ID0gbXQ3OTI1X2luaXRfbmFuX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjExLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjE5OlxcdHJldCA9IG10NzkyNV9pbml0X2RlYnVnZnMoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjIwLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIyNTpcXHRyZXQgPSBtdDc5MjVfdGhlcm1hbF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIyNi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMzE6XFx0cmV0ID0gbXQ3OTI1X21jdV9zZXRfdGhlcm1hbF9wcm90ZWN0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIzMi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNDA6XFx0bXQ3OTI1X21jdV9zZXRfZGVlcF9zbGVlcChkZXYsIGRldi1cXHUwMDNlcG0uZHNfZW5hYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjQxLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNDM6aW50IG10NzkyNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNTMtXFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlcG0ucHNfd29yaywgbXQ3OTJ4X3BtX3Bvd2VyX3NhdmVfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI1NDpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VtbG9fcG1fd29yaywgbXQ3OTI1X21sb19wbV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjU1LVxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VwbS53YWtlX3dvcmssIG10NzkyeF9wbV93YWtlX3dvcmspO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI2MS1cXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5Lm1hY193b3JrLCBtdDc5MnhfbWFjX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNjI6XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlcGh5LnNjYW5fd29yaywgbXQ3OTI1X3NjYW5fd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI2MzpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2Vjb3JlZHVtcC53b3JrLCBtdDc5MjVfY29yZWR1bXBfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI2NC0jaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjY1OlxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VpcHY2X25zX3dvcmssIG10NzkyNV9zZXRfaXB2Nl9uc193b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjY2LVxcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXFx1MDAyNmRldi1cXHUwMDNlaXB2Nl9uc19saXN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI3MTpcXHRJTklUX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlcmVzZXRfd29yaywgbXQ3OTI1X21hY19yZXNldF93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjcyOlxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2Vpbml0X3dvcmssIG10NzkyNV9pbml0X3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI3NDpcXHRJTklUX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlcGh5LnJvY193b3JrLCBtdDc5MjVfcm9jX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNzUtXFx0dGltZXJfc2V0dXAoXFx1MDAyNmRldi1cXHUwMDNlcGh5LnJvY190aW1lciwgbXQ3OTJ4X3JvY190aW1lciwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMzAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzozMDI6XFx0aHctXFx1MDAzZXdpcGh5LVxcdTAwM2VyZWdfbm90aWZpZXIgPSBtdDc5MjVfcmVnZF9ub3RpZmllcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMzAzLVxcdGRldi1cXHUwMDNlbXBoeS5zYmFuZF8yZy5zYmFuZC5odF9jYXAuY2FwIHw9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMzI5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MzMwOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9yZWdpc3Rlcl9kZXZpY2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNi0jaW5jbHVkZSBcXHUwMDNjbGludXgvdGltZWtlZXBpbmcuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo3OiNpbmNsdWRlIFxcXCJtdDc5MjUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04LSNpbmNsdWRlIFxcXCIuLi9kbWEuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEzOmJvb2wgbXQ3OTI1X21hY193dGJsX3VwZGF0ZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBpbnQgaWR4LCB1MzIgbWFzaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoyOTpzdGF0aWMgdm9pZCBtdDc5MjVfbWFjX3N0YV9wb2xsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNjUtXFx0XFx0aWR4ID0gbWxpbmstXFx1MDAzZXdjaWQuaWR4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjY2OlxcdFxcdGFkZHIgPSBtdDc5MjVfbWFjX3d0YmxfbG1hY19hZGRyKGRldiwgaWR4LCBNVF9XVEJMX0FDMF9DVFRfT0ZGU0VUKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy02Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg0LVxcdFxcdGlmIChjbGVhcikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg1OlxcdFxcdFxcdG10NzkyNV9tYWNfd3RibF91cGRhdGUoZGV2LCBpZHgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODYtXFx0XFx0XFx0XFx0XFx0ICAgICAgIE1UX1dUQkxfVVBEQVRFX0FETV9DT1VOVF9DTEVBUik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTMwOlxcdFxcdGFkZHIgPSBtdDc5MjVfbWFjX3d0YmxfbG1hY19hZGRyKGRldiwgaWR4LCA2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzEtXFx0XFx0dmFsID0gbXQ3Nl9ycihkZXYsIGFkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEzMi1cXHRcXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBSQVRFX0lORk9fRkxBR1NfRUhUX01DUykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEzMzpcXHRcXHRcXHRhZGRyID0gbXQ3OTI1X21hY193dGJsX2xtYWNfYWRkcihkZXYsIGlkeCwgNSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTM0LVxcdFxcdFxcdHZhbCA9IG10NzZfcnIoZGV2LCBhZGRyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0OC1cXHRcXHQvKiBnZXQgc2lnbmFsIHN0cmVuZ3RoIG9mIHJlc3AgZnJhbWVzIChDVFMvQkEvQUNLKSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0OTpcXHRcXHRhZGRyID0gbXQ3OTI1X21hY193dGJsX2xtYWNfYWRkcihkZXYsIGlkeCwgMzQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE1MC1cXHRcXHR2YWwgPSBtdDc2X3JyKGRldiwgYWRkcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTY0OnZvaWQgbXQ3OTI1X21hY19zZXRfZml4ZWRfcmF0ZV90YWJsZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2NS1cXHRcXHRcXHRcXHQgICAgIHU4IHRibF9pZHgsIHUxNiByYXRlX2lkeClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE4Mi0vKiBUaGUgSFcgZG9lcyBub3QgdHJhbnNsYXRlIHRoZSBtYWMgaGVhZGVyIHRvIDgwMi4zIGZvciBtZXNoIHBvaW50ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTgzOnN0YXRpYyBpbnQgbXQ3OTI1X3JldmVyc2VfZnJhZzBfaGRyX3RyYW5zKHN0cnVjdCBza19idWZmICpza2IsIHUxNiBoZHJfZ2FwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE4NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0yNjI9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjI2MzptdDc5MjVfbWFjX2ZpbGxfcnhfcmF0ZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTI2NC1cXHRcXHRcXHRzdHJ1Y3QgbXQ3Nl9yeF9zdGF0dXMgKnN0YXR1cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTM3Mj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MzczOm10NzkyNV9tYWNfZmlsbF9yeChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTM3NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy01NTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NTUzOlxcdFxcdHJldCA9IG10NzkyNV9tYWNfZmlsbF9yeF9yYXRlKGRldiwgc3RhdHVzLCBzYmFuZCwgcnh2LCBcXHUwMDI2bW9kZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNTU0LVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNTY2LVxcdGlmIChoZHJfdHJhbnMgXFx1MDAyNlxcdTAwMjYgaWVlZTgwMjExX2hhc19tb3JlZnJhZ3MoZmMpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NTY3OlxcdFxcdGlmIChtdDc5MjVfcmV2ZXJzZV9mcmFnMF9oZHJfdHJhbnMoc2tiLCBoZHJfZ2FwKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy01NjgtXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz02NDA9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo2NDE6bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjMoX19sZTMyICp0eHdpLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTY0Mi1cXHRcXHRcXHQgICBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9Njc1PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6Njc2Om10NzkyNV9tYWNfd3JpdGVfdHh3aV84MDIxMShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTY3Ny1cXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTc0Nj12b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NzQ3Om10NzkyNV9tYWNfd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTc0OC1cXHRcXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODQwLVxcdGlmIChpc184MDIzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg0MTpcXHRcXHRtdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMyh0eHdpLCBza2IsIHdjaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg0Mi1cXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODQzOlxcdFxcdG10NzkyNV9tYWNfd3JpdGVfdHh3aV84MDIxMShkZXYsIHR4d2ksIHNrYiwga2V5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04NDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04NjctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg2ODpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWFjX3dyaXRlX3R4d2kpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4NzA6c3RhdGljIHZvaWQgbXQ3OTI1X3R4X2NoZWNrX2FnZ3Ioc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04NzEtXFx0XFx0XFx0XFx0IHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz05MjQ9c3RhdGljIGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo5MjU6bXQ3OTI1X21hY19hZGRfdHhzX3NrYihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTkyNi1cXHRcXHQgICAgICAgaW50IHBpZCwgX19sZTMyICp0eHNfZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTExOTM9dm9pZCBtdDc5MjhfbWFjX2FkZF90eHNfbXNnKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEyMzA6dm9pZCBtdDc5MjVfbWFjX2FkZF90eHMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTI2NDpcXHRtdDc5MjVfbWFjX2FkZF90eHNfc2tiKGRldiwgd2NpZCwgcGlkLCB0eHNfZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTI2NS1cXHRpZiAoIXdjaWQtXFx1MDAzZXN0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTI3NDp2b2lkIG10NzkyNV90eHdpX2ZyZWUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfdHh3aV9jYWNoZSAqdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjc1LVxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjg4LVxcdFxcdGlmIChsaWtlbHkodC1cXHUwMDNlc2tiLVxcdTAwM2Vwcm90b2NvbCAhPSBjcHVfdG9fYmUxNihFVEhfUF9QQUUpKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMjg5OlxcdFxcdFxcdG10NzkyNV90eF9jaGVja19hZ2dyKHN0YSwgdC1cXHUwMDNlc2tiLCB3Y2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjkwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTMwMC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTMwMTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfdHh3aV9mcmVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTEzMDM9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMzA0Om10NzkyNV9tYWNfdHhfZnJlZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB2b2lkICpkYXRhLCBpbnQgbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEzMDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTM3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMzcxOlxcdFxcdFxcdG10NzkyNV90eHdpX2ZyZWUoZGV2LCB0eHdpLCBzdGEsIHdjaWQsIFxcdTAwMjZmcmVlX2xpc3QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEzNzItXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTM3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMzc1OlxcdG10NzkyNV9tYWNfc3RhX3BvbGwoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzc2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTM4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMzg4OmJvb2wgbXQ3OTI1X3J4X2NoZWNrKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqZGF0YSwgaW50IGxlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzg5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MDctXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0MDg6XFx0XFx0bXQ3OTI1X21hY190eF9mcmVlKGRldiwgZGF0YSwgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDA5LVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MTEtXFx0XFx0Zm9yIChyeGQgKz0gNDsgcnhkICsgMTIgXFx1MDAzYz0gZW5kOyByeGQgKz0gMTIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQxMjpcXHRcXHRcXHRtdDc5MjVfbWFjX2FkZF90eHMoZGV2LCByeGQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MTMtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQxNy19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQxODpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfcnhfY2hlY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQyMDp2b2lkIG10NzkyNV9xdWV1ZV9yeF9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCBlbnVtIG10NzZfcnhxX2lkIHEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQyMS1cXHRcXHRcXHQgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyICppbmZvKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ0Ny1cXHRcXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ0ODpcXHRcXHRtdDc5MjVfbWFjX3R4X2ZyZWUoZGV2LCBza2ItXFx1MDAzZWRhdGEsIHNrYi1cXHUwMDNlbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDQ5LVxcdFxcdG5hcGlfY29uc3VtZV9za2Ioc2tiLCAxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NTEtXFx0Y2FzZSBQS1RfVFlQRV9SWF9FVkVOVDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDUyOlxcdFxcdG10NzkyNV9tY3VfcnhfZXZlbnQoZGV2LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NTMtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDU1LVxcdFxcdGZvciAocnhkICs9IDI7IHJ4ZCArIDggXFx1MDAzYz0gZW5kOyByeGQgKz0gOClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDU2OlxcdFxcdFxcdG10NzkyNV9tYWNfYWRkX3R4cyhkZXYsIHJ4ZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ1Ny1cXHRcXHRkZXZfa2ZyZWVfc2tiKHNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDYwLVxcdGNhc2UgUEtUX1RZUEVfTk9STUFMOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0NjE6XFx0XFx0aWYgKCFtdDc5MjVfbWFjX2ZpbGxfcngoZGV2LCBza2IpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ2Mi1cXHRcXHRcXHRtdDc2X3J4KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIHEsIHNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDcwLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDcxOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9xdWV1ZV9yeF9za2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MTQ3Mz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0NzQ6bXQ3OTI1X3ZpZl9jb25uZWN0X2l0ZXIodm9pZCAqcHJpdiwgdTggKm1hYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDc1LVxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAzOjE4OjM2LjIxNzc4OTU5NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk5OTI4ODA1MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ29uc2lkZXJpbmcgVVNCIEZ1enppbmcgZm9yIHRoZSBNVDc5MjUqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEknbSB0aGlua2luZyBhYm91dCB0aGUgYG10NzkyNWAgZHJpdmVyIGFuZCBpdHMgVVNCIHN1cHBvcnQg4oCTIHNwZWNpZmljYWxseSwgdGhhdCBgQ09ORklHX01UNzkyNVVgIG9wdGlvbi4gVGhlIHF1ZXN0aW9uIHRoYXQgcG9wcyB1cCwgb2YgY291cnNlLCBpcyB3aGV0aGVyIHdlIGNhbiBsZXZlcmFnZSB0aGF0IFVTQiBmdW5jdGlvbmFsaXR5IGZvciBmdXp6aW5nLiBDYW4gd2UgZ2V0IGF0IGBtdDc5MjV1YCB1c2luZyBVU0IgZW11bGF0aW9uLCBzb21ldGhpbmcgbGlrZSBzeXprYWxsZXIncyBVU0IgcmF3IGdhZGdldCBmdW5jdGlvbmFsaXR5IG9yIGEgYnJvYWRlciBVU0IgZW11bGF0aW9uIHNldHVwPyBUaGUga2V5IGhlcmUgaXMgdG8gZGV0ZXJtaW5lIGhvdyB0aGUgYG10NzkyNXVgIG1vZHVsZSBpcyBwcm9iZWQgYW5kIHJlZ2lzdGVyZWQuIFVuZGVyc3RhbmRpbmcgdGhhdCBwcm9jZXNzIGlzIGdvaW5nIHRvIGJlIGNyaXRpY2FsIGZvciBjcmFmdGluZyBlZmZlY3RpdmUgZnV6emluZyBzdHJhdGVnaWVzLiBXZSBuZWVkIHRvIGtub3cgaG93IGl0IGluaXRpYWxpemVzLCB3aGF0IGVudHJ5IHBvaW50cyBpdCB1c2VzLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBVU0Igc3Vic3lzdGVtIHRvIGVmZmVjdGl2ZWx5IGNyYWZ0IGFuZCBpbmplY3Qgb3VyIGZ1enppbmcgcGF5bG9hZHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMzYxLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDM6MTg6NDYuMjEwNjcyOTQ3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0LyogQ29weXJpZ2h0IChDKSAyMDIzIE1lZGlhVGVrIEluYy4gKi9cXG4gICAzOlxcdFxcbiAgIDQ6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tlcm5lbC5oXFx1MDAzZVxcbiAgIDU6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbiAgIDY6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VzYi5oXFx1MDAzZVxcbiAgIDc6XFx0XFxuICAgODpcXHQjaW5jbHVkZSBcXFwibXQ3OTI1LmhcXFwiXFxuICAgOTpcXHQjaW5jbHVkZSBcXFwibWN1LmhcXFwiXFxuICAxMDpcXHQjaW5jbHVkZSBcXFwibWFjLmhcXFwiXFxuICAxMTpcXHRcXG4gIDEyOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBtdDc5MjV1X2RldmljZV90YWJsZVtdID0ge1xcbiAgMTM6XFx0XFx0eyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDBlOGQsIDB4NjYzOSwgMHhmZiwgMHhmZiwgMHhmZiksXFxuICAxNDpcXHRcXHRcXHQuZHJpdmVyX2luZm8gPSAoa2VybmVsX3Vsb25nX3QpTVQ3OTI1X0ZJUk1XQVJFX1dNIH0sXFxuICAxNTpcXHRcXHR7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MGU4ZCwgMHg3OTI1LCAweGZmLCAweGZmLCAweGZmKSxcXG4gIDE2OlxcdFxcdFxcdC5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdClNVDc5MjVfRklSTVdBUkVfV00gfSxcXG4gIDE3OlxcdFxcdC8qIE5ldGdlYXIsIEluYy4gQTg1MDAgKi9cXG4gIDE4OlxcdFxcdHsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oMHgwODQ2LCAweDkwNTAsIDB4ZmYsIDB4ZmYsIDB4ZmYpLFxcbiAgMTk6XFx0XFx0XFx0LmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KU1UNzkyNV9GSVJNV0FSRV9XTSB9LFxcbiAgMjA6XFx0XFx0LyogTmV0Z2VhciwgSW5jLiBBOTAwMCAqL1xcbiAgMjE6XFx0XFx0eyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDA4NDYsIDB4OTA3MiwgMHhmZiwgMHhmZiwgMHhmZiksXFxuICAyMjpcXHRcXHRcXHQuZHJpdmVyX2luZm8gPSAoa2VybmVsX3Vsb25nX3QpTVQ3OTI1X0ZJUk1XQVJFX1dNIH0sXFxuICAyMzpcXHRcXHR7IH0sXFxuICAyNDpcXHR9O1xcbiAgMjU6XFx0XFxuICAyNjpcXHRzdGF0aWMgaW50XFxuICAyNzpcXHRtdDc5MjV1X21jdV9zZW5kX21lc3NhZ2Uoc3RydWN0IG10NzZfZGV2ICptZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiAgMjg6XFx0XFx0XFx0XFx0IGludCBjbWQsIGludCAqc2VxKVxcbiAgMjk6XFx0e1xcbiAgMzA6XFx0XFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihtZGV2LCBzdHJ1Y3QgbXQ3OTJ4X2RldiwgbXQ3Nik7XFxuICAzMTpcXHRcXHR1MzIgcGFkLCBlcDtcXG4gIDMyOlxcdFxcdGludCByZXQ7XFxuICAzMzpcXHRcXG4gIDM0OlxcdFxcdHJldCA9IG10NzkyNV9tY3VfZmlsbF9tZXNzYWdlKG1kZXYsIHNrYiwgY21kLCBzZXEpO1xcbiAgMzU6XFx0XFx0aWYgKHJldClcXG4gIDM2OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuICAzNzpcXHRcXG4gIDM4OlxcdFxcdG1kZXYtXFx1MDAzZW1jdS50aW1lb3V0ID0gMyAqIEhaO1xcbiAgMzk6XFx0XFxuICA0MDpcXHRcXHRpZiAoY21kICE9IE1DVV9DTUQoRldfU0NBVFRFUikpXFxuICA0MTpcXHRcXHRcXHRlcCA9IE1UX0VQX09VVF9JTkJBTkRfQ01EO1xcbiAgNDI6XFx0XFx0ZWxzZVxcbiAgNDM6XFx0XFx0XFx0ZXAgPSBNVF9FUF9PVVRfQUNfQkU7XFxuICA0NDpcXHRcXG4gIDQ1OlxcdFxcdG10NzkyeF9za2JfYWRkX3VzYl9zZGlvX2hkcihkZXYsIHNrYiwgMCk7XFxuICA0NjpcXHRcXHRwYWQgPSByb3VuZF91cChza2ItXFx1MDAzZWxlbiwgNCkgKyA0IC0gc2tiLVxcdTAwM2VsZW47XFxuICA0NzpcXHRcXHRfX3NrYl9wdXRfemVybyhza2IsIHBhZCk7XFxuICA0ODpcXHRcXG4gIDQ5OlxcdFxcdHJldCA9IG10NzZ1X2J1bGtfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIHNrYi1cXHUwMDNlZGF0YSwgc2tiLVxcdTAwM2VsZW4sIE5VTEwsXFxuICA1MDpcXHRcXHRcXHRcXHQgICAgIDEwMDAsIGVwKTtcXG4gIDUxOlxcdFxcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG4gIDUyOlxcdFxcbiAgNTM6XFx0XFx0cmV0dXJuIHJldDtcXG4gIDU0OlxcdH1cXG4gIDU1OlxcdFxcbiAgNTY6XFx0c3RhdGljIGludCBtdDc5MjV1X21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuICA1NzpcXHR7XFxuICA1ODpcXHRcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG10NzZfbWN1X29wcyBtY3Vfb3BzID0ge1xcbiAgNTk6XFx0XFx0XFx0LmhlYWRyb29tID0gTVRfU0RJT19IRFJfU0laRSArXFxuICA2MDpcXHRcXHRcXHRcXHQgICAgc2l6ZW9mKHN0cnVjdCBtdDc2X2Nvbm5hYzJfbWN1X3R4ZCksXFxuICA2MTpcXHRcXHRcXHQudGFpbHJvb20gPSBNVF9VU0JfVEFJTF9TSVpFLFxcbiAgNjI6XFx0XFx0XFx0Lm1jdV9za2Jfc2VuZF9tc2cgPSBtdDc5MjV1X21jdV9zZW5kX21lc3NhZ2UsXFxuICA2MzpcXHRcXHRcXHQubWN1X3BhcnNlX3Jlc3BvbnNlID0gbXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZSxcXG4gIDY0OlxcdFxcdH07XFxuICA2NTpcXHRcXHRpbnQgcmV0O1xcbiAgNjY6XFx0XFxuICA2NzpcXHRcXHRkZXYtXFx1MDAzZW10NzYubWN1X29wcyA9IFxcdTAwMjZtY3Vfb3BzO1xcbiAgNjg6XFx0XFxuICA2OTpcXHRcXHRtdDc2X3NldChkZXYsIE1UX1VETUFfVFhfUVNFTCwgTVRfRldfRExfRU4pO1xcbiAgNzA6XFx0XFx0cmV0ID0gbXQ3OTI1X3J1bl9maXJtd2FyZShkZXYpO1xcbiAgNzE6XFx0XFx0aWYgKHJldClcXG4gIDcyOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuICA3MzpcXHRcXG4gIDc0OlxcdFxcdHNldF9iaXQoTVQ3Nl9TVEFURV9NQ1VfUlVOTklORywgXFx1MDAyNmRldi1cXHUwMDNlbXBoeS5zdGF0ZSk7XFxuICA3NTpcXHRcXHRtdDc2X2NsZWFyKGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XFxuICA3NjpcXHRcXG4gIDc3OlxcdFxcdHJldHVybiAwO1xcbiAgNzg6XFx0fVxcbiAgNzk6XFx0XFxuICA4MDpcXHRzdGF0aWMgaW50IG10NzkyNXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuICA4MTpcXHR7XFxuICA4MjpcXHRcXHRpbnQgZXJyO1xcbiAgODM6XFx0XFxuICA4NDpcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5idXNfaHVuZykpXFxuICA4NTpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gIDg2OlxcdFxcbiAgODc6XFx0XFx0bXQ3OTJ4dV9yZXNldF9vbl9idXNfZXJyb3IoZGV2KTtcXG4gIDg4OlxcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LmJ1c19odW5nKSlcXG4gIDg5OlxcdFxcdFxcdHJldHVybiAwO1xcbiAgOTA6XFx0XFxuICA5MTpcXHRcXHRtdDc2X3R4cV9zY2hlZHVsZV9hbGwoXFx1MDAyNmRldi1cXHUwMDNlbXBoeSk7XFxuICA5MjpcXHRcXHRtdDc2X3dvcmtlcl9kaXNhYmxlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYudHhfd29ya2VyKTtcXG4gIDkzOlxcdFxcbiAgOTQ6XFx0XFx0c2V0X2JpdChNVDc2X1JFU0VULCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKTtcXG4gIDk1OlxcdFxcdHNldF9iaXQoTVQ3Nl9NQ1VfUkVTRVQsIFxcdTAwMjZkZXYtXFx1MDAzZW1waHkuc3RhdGUpO1xcbiAgOTY6XFx0XFxuICA5NzpcXHRcXHR3YWtlX3VwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubWN1LndhaXQpO1xcbiAgOTg6XFx0XFx0c2tiX3F1ZXVlX3B1cmdlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubWN1LnJlc19xKTtcXG4gIDk5OlxcdFxcbiAxMDA6XFx0XFx0bXQ3NnVfc3RvcF9yeChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDM6MTg6NDYuMjEwNzU0Njc4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzAxMDAzNjQ2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byB0aGUgQ29kZTogTG9jYXRpbmcgdGhlIENoYW5nZSoqXG5cbk9rYXksIHNvIHdlIG5lZWQgdG8gcGlucG9pbnQgZXhhY3RseSB3aGVyZSB0aGlzIGJlaGF2aW9yIG1hbmlmZXN0ZWQsIHNvIGxldCdzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gYG1hYy5jYC4gSSdtIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IHRoZSByZWxldmFudCBjaGFuZ2VzIGRpcmVjdGx5IGluIHRoZSBmaWxlLCBwcm9iYWJseSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmNgLiAgSSBuZWVkIHRvIGV4YW1pbmUgdGhlIHBhdGNoIGNvbnRleHQgdGhlcmU7IHRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNydWNpYWwgZGV0YWlscyBhYm91dCB0aGUgaW50cm9kdWN0aW9uIG9mIHRoaXMgYmVoYXZpb3IuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBsaW5lcyBvZiBjb2RlIGFuZCB0aGUgc3Vycm91bmRpbmcgY2hhbmdlcyB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIzOTMsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAzOjE4OjQ5LjIyMDc5NzA0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA0MjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc4MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDc4MDpcXHRcXHR9IGVsc2UgaWYgKHFpZCBcXHUwMDNlPSBNVF9UWFFfUFNEKSB7XFxuIDc4MTpcXHRcXHRcXHRwX2ZtdCA9IG10NzZfaXNfbW1pbyhkZXYpID8gTVRfVFhfVFlQRV9DVCA6IE1UX1RYX1RZUEVfU0Y7XFxuIDc4MjpcXHRcXHRcXHRxX2lkeCA9IE1UX0xNQUNfQUxUWDA7XFxuIDc4MzpcXHRcXHR9IGVsc2Uge1xcbiA3ODQ6XFx0XFx0XFx0cF9mbXQgPSBtdDc2X2lzX21taW8oZGV2KSA/IE1UX1RYX1RZUEVfQ1QgOiBNVF9UWF9UWVBFX1NGO1xcbiA3ODU6XFx0XFx0XFx0cV9pZHggPSB3bW1faWR4ICogTVQ3Nl9DT05OQUNfTUFYX1dNTV9TRVRTICtcXG4gNzg2OlxcdFxcdFxcdFxcdG10NzZfY29ubmFjX2xtYWNfbWFwcGluZyhza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKSk7XFxuIDc4NzpcXHRcXG4gNzg4OlxcdFxcdFxcdC8qIGNvdW50aW5nIG5vbi1vZmZsb2FkaW5nIHNrYnMgKi9cXG4gNzg5OlxcdFxcdFxcdHdjaWQtXFx1MDAzZXN0YXRzLnR4X2J5dGVzICs9IHNrYi1cXHUwMDNlbGVuO1xcbiA3OTA6XFx0XFx0XFx0d2NpZC1cXHUwMDNlc3RhdHMudHhfcGFja2V0cysrO1xcbiA3OTE6XFx0XFx0fVxcbiA3OTI6XFx0XFxuIDc5MzpcXHRcXHR2YWwgPSBGSUVMRF9QUkVQKE1UX1RYRDBfVFhfQllURVMsIHNrYi1cXHUwMDNlbGVuICsgc3pfdHhkKSB8XFxuIDc5NDpcXHRcXHQgICAgICBGSUVMRF9QUkVQKE1UX1RYRDBfUEtUX0ZNVCwgcF9mbXQpIHxcXG4gNzk1OlxcdFxcdCAgICAgIEZJRUxEX1BSRVAoTVRfVFhEMF9RX0lEWCwgcV9pZHgpO1xcbiA3OTY6XFx0XFx0dHh3aVswXSA9IGNwdV90b19sZTMyKHZhbCk7XFxuIDc5NzpcXHRcXG4gNzk4OlxcdFxcdHZhbCA9IEZJRUxEX1BSRVAoTVRfVFhEMV9XTEFOX0lEWCwgd2NpZC1cXHUwMDNlaWR4KSB8XFxuIDc5OTpcXHRcXHQgICAgICBGSUVMRF9QUkVQKE1UX1RYRDFfT1dOX01BQywgb21hY19pZHgpO1xcbiA4MDA6XFx0XFxuIDgwMTpcXHRcXHQvKiAweGZmIG1lYW5zIEJBTkRfQVVUTyB0byB0aGUgZmlybXdhcmUsIGFuZCBUR0lEIGNhbm5vdCBlbmNvZGUgaXQgKi9cXG4gODAyOlxcdFxcdGlmIChiYW5kX2lkeCBcXHUwMDI2XFx1MDAyNiBiYW5kX2lkeCAhPSAweGZmKVxcbiA4MDM6XFx0XFx0XFx0dmFsIHw9IEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeCk7XFxuIDgwNDpcXHRcXG4gODA1OlxcdFxcdHR4d2lbMV0gPSBjcHVfdG9fbGUzMih2YWwpO1xcbiA4MDY6XFx0XFx0dHh3aVsyXSA9IDA7XFxuIDgwNzpcXHRcXG4gODA4OlxcdFxcdHZhbCA9IEZJRUxEX1BSRVAoTVRfVFhEM19SRU1fVFhfQ09VTlQsIDE1KTtcXG4gODA5OlxcdFxcbiA4MTA6XFx0XFx0aWYgKGtleSlcXG4gODExOlxcdFxcdFxcdHZhbCB8PSBNVF9UWEQzX1BST1RFQ1RfRlJBTUU7XFxuIDgxMjpcXHRcXHRpZiAoaW5mby1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfQ1RMX05PX0FDSylcXG4gODEzOlxcdFxcdFxcdHZhbCB8PSBNVF9UWEQzX05PX0FDSztcXG4gODE0OlxcdFxcdGlmICh3Y2lkLVxcdTAwM2VhbXNkdSlcXG4gODE1OlxcdFxcdFxcdHZhbCB8PSBNVF9UWEQzX0hXX0FNU0RVO1xcbiA4MTY6XFx0XFxuIDgxNzpcXHRcXHR0eHdpWzNdID0gY3B1X3RvX2xlMzIodmFsKTtcXG4gODE4OlxcdFxcdHR4d2lbNF0gPSAwO1xcbiA4MTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAzOjE4OjQ5LjIyMTAwMzM1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzMxNTA2MzY1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBtdDc5MjVfbWFjX3dyaXRlX3R4d2lgIEZ1bmN0aW9uKipcblxuUmlnaHQsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgYG10NzkyNV9tYWNfd3JpdGVfdHh3aWAgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkLiBUaGF0IGZ1bmN0aW9uIG5hbWUgc291bmRzIHNwZWNpZmljIHRvIHRoZSBNVDc5MjUgd2lyZWxlc3MgY2hpcHNldCwgbGlrZWx5IHJlbGF0ZWQgdG8gd3JpdGluZyB0aGUgVHJhbnNtaXQgV2lyZWxlc3MgSW5mb3JtYXRpb24gKFRYV0kpIHdoaWNoIGlzIGNydWNpYWwgZm9yIGNvbmZpZ3VyaW5nIGhvdyBhIHBhY2tldCBpcyB0cmFuc21pdHRlZCBvdmVyIHRoZSBhaXIuIEEgZ29vZCBzdGFydGluZyBwb2ludCwgYXMgYWx3YXlzLCBpcyB0byBmaW5kIHRoZSBjYWxsIHNpdGVzLiBUaW1lIHRvIGdyZXAuIEknbGwgZmlyZSB1cCB0aGUgY29tbWFuZC1saW5lIGFuZCBkbyBhIHF1aWNrIHNlYXJjaCBmb3IgdGhhdCBmdW5jdGlvbiBuYW1lIGFjcm9zcyB0aGUgcmVsZXZhbnQgY29kZWJhc2UuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBsaXN0IG9mIGFsbCB0aGUgcGxhY2VzIHdpdGhpbiB0aGUgZHJpdmVyIHdoZXJlIHRoaXMgY3JpdGljYWwgVFhXSSBmdW5jdGlvbiBpcyB1c2VkLiBGcm9tIHRoZXJlLCBJIGNhbiBzdGFydCB0byBidWlsZCBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgVFggcGF0aCBhbmQgaG93IHRoZSB3aXJlbGVzcyBNQUMgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlIHRvIGdldCBwYWNrZXRzIHNlbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNDE5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoxODo1Mi41MzYwNjk4OThaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNjA3Njg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyNV9tYWNfd3JpdGVfdHh3aVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTY0MD1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjY0MTptdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMyhfX2xlMzIgKnR4d2ksIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNjQyLVxcdFxcdFxcdCAgIHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz02NzU9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo2NzY6bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjExKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNjc3LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9NzQ2PXZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo3NDc6bXQ3OTI1X21hY193cml0ZV90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNzQ4LVxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04NDAtXFx0aWYgKGlzXzgwMjMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODQxOlxcdFxcdG10NzkyNV9tYWNfd3JpdGVfdHh3aV84MDIzKHR4d2ksIHNrYiwgd2NpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODQyLVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4NDM6XFx0XFx0bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjExKGRldiwgdHh3aSwgc2tiLCBrZXkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg0NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg2Ny19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODY4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tYWNfd3JpdGVfdHh3aSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODY5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MTYyMj1tdDc5MjVfdXNiX3NkaW9fd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYyOS1cXHRtZW1zZXQodHh3aSwgMCwgTVRfU0RJT19UWERfU0laRSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTYzMDpcXHRtdDc5MjVfbWFjX3dyaXRlX3R4d2koXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgdHh3aSwgc2tiLCB3Y2lkLCBrZXksIHBpZCwgcWlkLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjMxLVxcdHNrYl9wdXNoKHNrYiwgTVRfU0RJT19UWERfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zNDI9dm9pZCBtdDc5MjVfbWFjX3NldF9maXhlZF9yYXRlX3RhYmxlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzQzLVxcdFxcdFxcdFxcdCAgICAgdTggdGJsX2lkeCwgdTE2IHJhdGVfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNDQ6dm9pZCBtdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNDUtXFx0XFx0XFx0ICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYz05PWludCBtdDc5MjVlX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmMtNDQtXFx0cGlkID0gbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChtZGV2LCB3Y2lkLCB0eF9pbmZvLVxcdTAwM2Vza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYzo0NTpcXHRtdDc5MjVfbWFjX3dyaXRlX3R4d2kobWRldiwgdHh3aV9wdHIsIHR4X2luZm8tXFx1MDAzZXNrYiwgd2NpZCwga2V5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYy00Ni1cXHRcXHRcXHQgICAgICBwaWQsIHFpZCwgMCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAzOjE4OjUyLjYwNjY4MzQ3N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODE4MDA3NDMyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIEkgdW5kZXJzdGFuZCB0aGUgc2l0dWF0aW9uOlxuXG4qKlRyYWNpbmcgdGhlIFR4V0kgQ29uZmlndXJhdGlvbiBQYXRoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGBtdDc5MjVfbWFjX3dyaXRlX3R4d2lgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0byBiZSB0aGUgY29yZSBmdW5jdGlvbiBmb3Igd3JpdGluZyB0aGUgdHJhbnNtaXQgV2ktRmkgaW5mb3JtYXRpb24gKFR4V0kpLCBhbmQgaXQncyBjYWxsZWQgYnkgdHdvIG90aGVyIGZ1bmN0aW9uczogYG10NzkyNV91c2Jfc2Rpb193cml0ZV90eHdpYCBhbmQgYG10NzkyNWVfdHhfcHJlcGFyZV9za2JgLiBNeSBwcmltYXJ5IGludGVyZXN0IHJpZ2h0IG5vdyBpcyBmaWd1cmluZyBvdXQgdGhlIGNvbXBsZXRlIHBhdGggdGhhdCBsZWFkcyB0byBgbXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2lgIGJlaW5nIGNhbGxlZC4gS25vd2luZyB0aGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgVVNCIGFuZCBTRElPIGludGVyZmFjZXMgYXJlIGJlaW5nIGhhbmRsZWQgaW4gdGhlIE1lZGlhVGVrIHN5c3RlbS4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGZ1bmN0aW9ucyBjYWxsIGBtdDc5MjVfdXNiX3NkaW9fd3JpdGVfdHh3aWAgc3BlY2lmaWNhbGx5LiBUaGlzIHdpbGwgaGVscCBtZSB0cmFjZSB0aGUgZGF0YSBmbG93IGludm9sdmVkIGluIHRyYW5zbWl0dGluZyBwYWNrZXRzIHZpYSB0aG9zZSBpbnRlcmZhY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTEyMiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAzOjE5OjEwLjc4Njc2MDE2MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODk2ODIxNjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNjIxPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTYyMjptdDc5MjVfdXNiX3NkaW9fd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2MjMtXFx0XFx0XFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNjM0PWludCBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2NjQtXFx0cGt0aWQgPSBtdDc2X3R4X3N0YXR1c19za2JfYWRkKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIHdjaWQsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTY2NTpcXHRtdDc5MjVfdXNiX3NkaW9fd3JpdGVfdHh3aShkZXYsIHdjaWQsIHFpZCwgc3RhLCBrZXksIHBrdGlkLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2NjYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAzOjE5OjEwLjg3NjQ0NzQzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjkwMDU3MTgwNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLiBCYXNlZCBvbiB0aGUgbmFtZSwgaXQncyBwcmV0dHkgY2xlYXIgdGhpcyBmdW5jdGlvbiBwbGF5cyBhIGNydWNpYWwgcm9sZSBpbiBwcmVwYXJpbmcgU0tCcyAoU29ja2V0IEJ1ZmZlcnMpIGZvciB0cmFuc21pc3Npb24sIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBVU0Igb3IgU0RJTyBpbnRlcmZhY2Ugd2l0aCB0aGUgbXQ3OTI1IGNoaXBzZXQuIEdpdmVuIHRoYXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBNeSBpbml0aWFsIGh1bmNoLCBhbmQgaXQncyBwcmFjdGljYWxseSBhIGNlcnRhaW50eSwgaXMgdGhhdCBpdCdzIHBhcnQgb2YgdGhlIGBtdDc5MjV1YCBvciwgcG90ZW50aWFsbHksIHRoZSBVU0IgZHJpdmVyIGl0c2VsZi4gTm93IEkgbmVlZCB0byBzZWUgaG93IGFuZCB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4gV2hlcmUgYXJlIHRoZSByZWZlcmVuY2VzPyBUaGUgZ29hbCBpcyBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIGludGVncmF0aW9uIGFuZCBwdXJwb3NlIHdpdGhpbiB0aGUgZHJpdmVyJ3MgdHJhbnNtaXQgcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4NDMsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoxOToxOS44ODIxNjgyNDhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MjMxNzU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTE2MjI9bXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2koc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2MzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTYzNDppbnQgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYzNS1cXHRcXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2NzgtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE2Nzk6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjgwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzY5PWludCBtdDc5MjVfbWN1X2dldF90ZW1wZXJhdHVyZShzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzcxOmludCBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNzItXFx0XFx0XFx0XFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0xNTA9c3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1OS1cXHRcXHRcXHRcXHRTVVJWRVlfSU5GT19USU1FX0JTU19SWCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNjA6XFx0XFx0LnR4X3ByZXBhcmVfc2tiID0gbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE2MS1cXHRcXHQudHhfY29tcGxldGVfc2tiID0gbXQ3OTI1X3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDM6MTk6MTkuOTM5NDAzNDQ3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY5NTI5NDUxNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRGl2aW5nIGludG8gdGhlIE1UNzkyNVUgVVNCIFByb2JlIEZ1bmN0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgd2l0aCB0aGlzIE1UNzkyNVUgZHJpdmVyLiBMZXQncyBzZWUuLi4gdGhlIG1vc3QgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIFVTQiBpbnRlcmZhY2UgaXMgaW5pdGlhbGl6ZWQgd291bGQgYmUgdGhlIHByb2JlIGZ1bmN0aW9uLiBTbywgSSBuZWVkIHRvIGNoZWNrIG91dCBgbXQ3OTI1dV9wcm9iZWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jYC4gVGhhdCdzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgaW5pdGlhbCBkZXZpY2Ugc2V0dXAsIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBhbnkgcHJlbGltaW5hcnkgaGFyZHdhcmUgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIHRoZSBVU0IgY29ubmVjdGlvbi4gTGV0J3MgaG9wZSBpdCdzIHdlbGwtY29tbWVudGVkOyB0aGlzIGlzIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBiaXRzIHVzdWFsbHkgc3RhcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2OTA5LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDM6MTk6MjYuODkyMzUxMjI3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzOTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE0NSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE0NTpcXHRcXHRtdDc2X3dvcmtlcl9lbmFibGUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni50eF93b3JrZXIpO1xcbiAxNDY6XFx0XFxuIDE0NzpcXHRcXHRyZXR1cm4gZXJyO1xcbiAxNDg6XFx0fVxcbiAxNDk6XFx0XFxuIDE1MDpcXHRzdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbiAxNTE6XFx0XFx0XFx0XFx0IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4gMTUyOlxcdHtcXG4gMTUzOlxcdFxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3Nl9kcml2ZXJfb3BzIGRydl9vcHMgPSB7XFxuIDE1NDpcXHRcXHRcXHQudHh3aV9zaXplID0gTVRfU0RJT19UWERfU0laRSxcXG4gMTU1OlxcdFxcdFxcdC5kcnZfZmxhZ3MgPSBNVF9EUlZfUlhfRE1BX0hEUiB8IE1UX0RSVl9IV19NR01UX1RYUSB8XFxuIDE1NjpcXHRcXHRcXHRcXHQgICAgIE1UX0RSVl9BTVNEVV9PRkZMT0FELFxcbiAxNTc6XFx0XFx0XFx0LnN1cnZleV9mbGFncyA9IFNVUlZFWV9JTkZPX1RJTUVfVFggfFxcbiAxNTg6XFx0XFx0XFx0XFx0XFx0U1VSVkVZX0lORk9fVElNRV9SWCB8XFxuIDE1OTpcXHRcXHRcXHRcXHRcXHRTVVJWRVlfSU5GT19USU1FX0JTU19SWCxcXG4gMTYwOlxcdFxcdFxcdC50eF9wcmVwYXJlX3NrYiA9IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYixcXG4gMTYxOlxcdFxcdFxcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc5MjVfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxcbiAxNjI6XFx0XFx0XFx0LnR4X3N0YXR1c19kYXRhID0gbXQ3OTI1X3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhLFxcbiAxNjM6XFx0XFx0XFx0LnJ4X3NrYiA9IG10NzkyNV9xdWV1ZV9yeF9za2IsXFxuIDE2NDpcXHRcXHRcXHQucnhfY2hlY2sgPSBtdDc5MjVfcnhfY2hlY2ssXFxuIDE2NTpcXHRcXHRcXHQuc3RhX2FkZCA9IG10NzkyNV9tYWNfc3RhX2FkZCxcXG4gMTY2OlxcdFxcdFxcdC5zdGFfZXZlbnQgPSBtdDc5MjVfbWFjX3N0YV9ldmVudCxcXG4gMTY3OlxcdFxcdFxcdC5zdGFfcmVtb3ZlID0gbXQ3OTI1X21hY19zdGFfcmVtb3ZlLFxcbiAxNjg6XFx0XFx0XFx0LnVwZGF0ZV9zdXJ2ZXkgPSBtdDc5MnhfdXBkYXRlX2NoYW5uZWwsXFxuIDE2OTpcXHRcXHR9O1xcbiAxNzA6XFx0XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc5MnhfaGlmX29wcyBoaWZfb3BzID0ge1xcbiAxNzE6XFx0XFx0XFx0Lm1jdV9pbml0ID0gbXQ3OTI1dV9tY3VfaW5pdCxcXG4gMTcyOlxcdFxcdFxcdC5pbml0X3Jlc2V0ID0gbXQ3OTJ4dV9pbml0X3Jlc2V0LFxcbiAxNzM6XFx0XFx0XFx0LnJlc2V0ID0gbXQ3OTI1dV9tYWNfcmVzZXQsXFxuIDE3NDpcXHRcXHR9O1xcbiAxNzU6XFx0XFx0c3RhdGljIHN0cnVjdCBtdDc2X2J1c19vcHMgYnVzX29wcyA9IHtcXG4gMTc2OlxcdFxcdFxcdC5yciA9IG10NzkyeHVfcnIsXFxuIDE3NzpcXHRcXHRcXHQud3IgPSBtdDc5Mnh1X3dyLFxcbiAxNzg6XFx0XFx0XFx0LnJtdyA9IG10NzkyeHVfcm13LFxcbiAxNzk6XFx0XFx0XFx0LnJlYWRfY29weSA9IG10NzZ1X3JlYWRfY29weSxcXG4gMTgwOlxcdFxcdFxcdC53cml0ZV9jb3B5ID0gbXQ3OTJ4dV9jb3B5LFxcbiAxODE6XFx0XFx0XFx0LnR5cGUgPSBNVDc2X0JVU19VU0IsXFxuIDE4MjpcXHRcXHR9O1xcbiAxODM6XFx0XFx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KHVzYl9pbnRmKTtcXG4gMTg0OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfb3BzICpvcHM7XFxuIDE4NTpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodztcXG4gMTg2OlxcdFxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXY7XFxuIDE4NzpcXHRcXHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXY7XFxuIDE4ODpcXHRcXHR1OCBmZWF0dXJlcztcXG4gMTg5OlxcdFxcdGludCByZXQ7XFxuIDE5MDpcXHRcXG4gMTkxOlxcdFxcdG9wcyA9IG10NzkyeF9nZXRfbWFjODAyMTFfb3BzKFxcdTAwMjZ1c2JfaW50Zi1cXHUwMDNlZGV2LCBcXHUwMDI2bXQ3OTI1X29wcyxcXG4gMTkyOlxcdFxcdFxcdFxcdFxcdCAgICAgICh2b2lkICopaWQtXFx1MDAzZWRyaXZlcl9pbmZvLCBcXHUwMDI2ZmVhdHVyZXMpO1xcbiAxOTM6XFx0XFx0aWYgKCFvcHMpXFxuIDE5NDpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMTk1OlxcdFxcbiAxOTY6XFx0XFx0b3BzLVxcdTAwM2VzdG9wID0gbXQ3OTJ4dV9zdG9wO1xcbiAxOTc6XFx0XFxuIDE5ODpcXHRcXHRtZGV2ID0gbXQ3Nl9hbGxvY19kZXZpY2UoXFx1MDAyNnVzYl9pbnRmLVxcdTAwM2VkZXYsIHNpemVvZigqZGV2KSwgb3BzLCBcXHUwMDI2ZHJ2X29wcyk7XFxuIDE5OTpcXHRcXHRpZiAoIW1kZXYpXFxuIDIwMDpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMjAxOlxcdFxcbiAyMDI6XFx0XFx0ZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MnhfZGV2LCBtdDc2KTtcXG4gMjAzOlxcdFxcdGRldi1cXHUwMDNlZndfZmVhdHVyZXMgPSBmZWF0dXJlcztcXG4gMjA0OlxcdFxcdGRldi1cXHUwMDNlaGlmX29wcyA9IFxcdTAwMjZoaWZfb3BzO1xcbiAyMDU6XFx0XFx0bXQ3OTJ4dV9yZXNldF93b3JrX2luaXQoZGV2KTtcXG4gMjA2OlxcdFxcbiAyMDc6XFx0XFx0dXNiX3Jlc2V0X2RldmljZSh1ZGV2KTtcXG4gMjA4OlxcdFxcbiAyMDk6XFx0XFx0dXNiX3NldF9pbnRmZGF0YSh1c2JfaW50ZiwgZGV2KTtcXG4gMjEwOlxcdFxcbiAyMTE6XFx0XFx0cmV0ID0gX19tdDc2dV9pbml0KG1kZXYsIHVzYl9pbnRmLCBcXHUwMDI2YnVzX29wcyk7XFxuIDIxMjpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gMjEzOlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDIxNDpcXHRcXG4gMjE1OlxcdFxcdG1kZXYtXFx1MDAzZXJldiA9IChtdDc2X3JyKGRldiwgTVRfSFdfQ0hJUElEKSBcXHUwMDNjXFx1MDAzYyAxNikgfFxcbiAyMTY6XFx0XFx0XFx0ICAgIChtdDc2X3JyKGRldiwgTVRfSFdfUkVWKSBcXHUwMDI2IDB4ZmYpO1xcbiAyMTc6XFx0XFx0ZGV2X2RiZyhtZGV2LVxcdTAwM2VkZXYsIFxcXCJBU0lDIHJldmlzaW9uOiAlMDR4XFxcXG5cXFwiLCBtZGV2LVxcdTAwM2VyZXYpO1xcbiAyMTg6XFx0XFxuIDIxOTpcXHRcXHRpZiAobXQ3Nl9jaGlwKG1kZXYpID09IDB4NjYzOSkge1xcbiAyMjA6XFx0XFx0XFx0ZGV2X2RiZyhtZGV2LVxcdTAwM2VkZXYsXFxuIDIyMTpcXHRcXHRcXHRcXHRcXFwiTVQ3OTI3IHJhdyBDSElQSUQ9MHglMDR4LCBmb3JjaW5nIGNoaXA9MHg3OTI3XFxcXG5cXFwiLFxcbiAyMjI6XFx0XFx0XFx0XFx0bXQ3Nl9jaGlwKG1kZXYpKTtcXG4gMjIzOlxcdFxcdFxcdG1kZXYtXFx1MDAzZXJldiA9ICgweDc5MjcgXFx1MDAzY1xcdTAwM2MgMTYpIHwgKG1kZXYtXFx1MDAzZXJldiBcXHUwMDI2IDB4ZmYpO1xcbiAyMjQ6XFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoxOToyNi44OTI0MzcwMjdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzA5Mzg3NjI4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBNVDc5MjVVIERyaXZlciB3aXRoIFN5emthbGxlcjogSW5pdGlhbCBBc3Nlc3NtZW50IGFuZCBLY29uZmlnIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCBJJ20gdGhpbmtpbmcuLi4gZmlyc3QsIGBtdDc5MjV1YCwgdGhhdCdzIHRoZSBVU0Igd2lyZWxlc3MgZHJpdmVyLCByaWdodD8gQ2FuIHdlIGV2ZW4gYXBwcm9hY2ggdGhpcyB3aXRoIFN5emthbGxlcidzIFVTQiBlbXVsYXRpb24/IE15IGluaXRpYWwgaW5zdGluY3QgaXMgeWVzLCBzaW5jZSBTeXprYWxsZXIgaGFzIHRoZSByYXcgZ2FkZ2V0L3Z1c2Igc3VwcG9ydC4gQnV0LCBhIHF1aWNrIGRvdWJsZS1jaGVjazogRG9lcyBTeXprYWxsZXIgKmFjdHVhbGx5KiB0YXJnZXQgVVNCIHdpZmkgZHJpdmVycz8gR29vZCBuZXdzLCBpdCBkb2VzLiBNeSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBVU0IgZnV6emluZyBzdXBwb3J0IGluIFN5emthbGxlciwgd2hpY2ggdXRpbGl6ZXMgcmF3IGdhZGdldCBhbmQgYHN5el91c2JfY29ubmVjdGAsIGlzIHRoYXQgaXQgc2hvdWxkIGJlIGFibGUgdG8gcmVhY2ggbWFjODAyMTEtYmFzZWQgYW5kIHdpcmVsZXNzIFVTQiBkcml2ZXJzLCBpbmNsdWRpbmcgdGhlIE1lZGlhVGVrIGZhbWlseTogYG10NzZgLCBgbXQ3OTIxdWAsIGBtdDc5MjV1YCwgZXRjLlxuXG5Ob3csIGEgY3JpdGljYWwgc3RlcDogSSBuZWVkIHRvIHZlcmlmeSB3aGljaCBLY29uZmlnIG9wdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGVuYWJsZSBgbXQ3OTI1YCBmdW5jdGlvbmFsaXR5LiBMZXQncyBkZWx2ZSBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ2AgZmlsZSBhbmQgY29uZmlybSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGlzIGlzIGEgY3J1Y2lhbCBzdGVwIHRvIGVuc3VyaW5nIHRoZSBkcml2ZXIgaXMgcHJvcGVybHkgYnVpbHQgYW5kIGV4cG9zZWQgZm9yIHRlc3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4Njk4LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDM6MTk6MzMuOTg2MzE1OTQ2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdGNvbmZpZyBNVDc5MjVfQ09NTU9OXFxuICAgMzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDQ6XFx0XFx0c2VsZWN0IE1UNzkyeF9MSUJcXG4gICA1OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgIDY6XFx0XFxuICAgNzpcXHRjb25maWcgTVQ3OTI1RVxcbiAgIDg6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuICAgOTpcXHRcXHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxcbiAgMTA6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBQQ0llIGRldmljZXMsXFxuICAxNDpcXHRcXHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxcbiAgMTU6XFx0XFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG4gIDE4OlxcdFxcbiAgMTk6XFx0Y29uZmlnIE1UNzkyNVVcXG4gIDIwOlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcXFwiXFxuICAyMTpcXHRcXHRzZWxlY3QgTVQ3OTJ4X1VTQlxcbiAgMjI6XFx0XFx0c2VsZWN0IE1UNzkyNV9DT01NT05cXG4gIDIzOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDI0OlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuICAyNTpcXHRcXHRoZWxwXFxuICAyNjpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgVVNCIGRldmljZXMsXFxuICAyNzpcXHRcXHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxcbiAgMjg6XFx0XFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXFxuICAyOTpcXHRcXG4gIDMwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDM6MTk6MzMuOTg2Mzg2NTA2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk3NzY5OTM0OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEtjb25maWcgRmlsZSBmb3IgTVQ3NiBXaXJlbGVzcyBEcml2ZXJzKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBzb21lIHdpcmVsZXNzIGRyaXZlciBjb25maWd1cmF0aW9ucywgYW5kIG15IGd1dCBmZWVsaW5nIGlzIHRoYXQgd2UncmUgbWlzc2luZyBzb21ldGhpbmcgY3J1Y2lhbC4gSSd2ZSBiZWVuIGRvd24gdGhpcyByb2FkIGJlZm9yZS4gVG8gbWFrZSBzdXJlIHdlJ3ZlIGdvdCB0aGUgd2hvbGUgcGljdHVyZSwgSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnYCBmaWxlLiBJdCdzIG9mdGVuIHRoZSBjZW50cmFsIHNvdXJjZSBvZiB0cnV0aCBmb3IgdGhlc2UgdHlwZXMgb2YgY29uZmlndXJhdGlvbnMuIEkga25vdyB0aGUgTWVkaWF0ZWsgTVQ3NiBkcml2ZXJzIHByZXR0eSB3ZWxsLCBhbmQgYmFzZWQgb24gcGFzdCBleHBlcmllbmNlLCBLY29uZmlnIGZpbGVzIGFyZSB0aGUgYmVzdCBzdGFydGluZyBwb2ludCB3aGVuIEkgZW5jb3VudGVyIGEgc3lzdGVtIHRoYXQgaXMgbm90IGJlaGF2aW5nIGFzIGV4cGVjdGVkLiBMZXQncyBzZWUgd2hhdCdzIGJlaW5nIGVuYWJsZWQgb3IgZGlzYWJsZWQgdGhlcmUgYW5kIHdoZXRoZXIgdGhlcmUncyBhIHNldHRpbmcgdGhhdCdzIGNhdXNpbmcgdGhpcyBpc3N1ZS4gVGltZSB0byBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NjY0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoxOTo0My43NjMzODI5MTJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc5NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDYwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRjb25maWcgTVQ3Nl9DT1JFXFxuICAgMzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDQ6XFx0XFx0c2VsZWN0IFBBR0VfUE9PTFxcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgTVQ3Nl9MRURTXFxuICAgNzpcXHRcXHRib29sXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxcbiAgIDk6XFx0XFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTVQ3Nl9DT1JFPUxFRFNfQ0xBU1NcXG4gIDEwOlxcdFxcdGRlZmF1bHQgeVxcbiAgMTE6XFx0XFxuICAxMjpcXHRjb25maWcgTVQ3Nl9VU0JcXG4gIDEzOlxcdFxcdHRyaXN0YXRlXFxuICAxNDpcXHRcXHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxcbiAgMTU6XFx0XFxuICAxNjpcXHRjb25maWcgTVQ3Nl9TRElPXFxuICAxNzpcXHRcXHR0cmlzdGF0ZVxcbiAgMTg6XFx0XFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIE1UNzZ4MDJfTElCXFxuICAyMTpcXHRcXHR0cmlzdGF0ZVxcbiAgMjI6XFx0XFx0c2VsZWN0IE1UNzZfQ09SRVxcbiAgMjM6XFx0XFxuICAyNDpcXHRjb25maWcgTVQ3NngwMl9VU0JcXG4gIDI1OlxcdFxcdHRyaXN0YXRlXFxuICAyNjpcXHRcXHRzZWxlY3QgTVQ3Nl9VU0JcXG4gIDI3OlxcdFxcbiAgMjg6XFx0Y29uZmlnIE1UNzZfQ09OTkFDX0xJQlxcbiAgMjk6XFx0XFx0dHJpc3RhdGVcXG4gIDMwOlxcdFxcdHNlbGVjdCBNVDc2X0NPUkVcXG4gIDMxOlxcdFxcbiAgMzI6XFx0Y29uZmlnIE1UNzkyeF9MSUJcXG4gIDMzOlxcdFxcdHRyaXN0YXRlXFxuICAzNDpcXHRcXHRzZWxlY3QgTVQ3Nl9DT05OQUNfTElCXFxuICAzNTpcXHRcXG4gIDM2OlxcdGNvbmZpZyBNVDc5MnhfVVNCXFxuICAzNzpcXHRcXHR0cmlzdGF0ZVxcbiAgMzg6XFx0XFx0c2VsZWN0IE1UNzZfVVNCXFxuICAzOTpcXHRcXG4gIDQwOlxcdGNvbmZpZyBNVDc2X05QVVxcbiAgNDE6XFx0XFx0dHJpc3RhdGVcXG4gIDQyOlxcdFxcdGRlcGVuZHMgb24gTkVUX0FJUk9IQV9OUFU9eSB8fCBNVDc2X0NPUkU9TkVUX0FJUk9IQV9OUFVcXG4gIDQzOlxcdFxcbiAgNDQ6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnXFxcIlxcbiAgNDU6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnXFxcIlxcbiAgNDY6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnXFxcIlxcbiAgNDc6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnXFxcIlxcbiAgNDg6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnXFxcIlxcbiAgNDk6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnXFxcIlxcbiAgNTA6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnXFxcIlxcbiAgNTE6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoxOTo0My43NjM0NjIyMDJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6OTA5MjM2ODczNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgSW5zcGVjdGlvbjogTWVkaWF0ZWsgV2lyZWxlc3MgRHJpdmVyKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGlzLiBUaGUgdGFzayByZXF1aXJlcyBsb29raW5nIGF0IHRoZSBwYXJlbnQgS2NvbmZpZyBmaWxlLiBJJ20gZ29pbmcgdG8gc3RhcnQgd2l0aCB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdgIGRpcmVjdG9yeS4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZm9yIHRoaXMgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVyIGFuZCB3aGVyZSBpdHMgZGVwZW5kZW5jaWVzIGxpZS4gSG9wZWZ1bGx5LCB0aGlzIEtjb25maWcgd2lsbCBnaXZlIG1lIGEgY2xlYXIgb3ZlcnZpZXcgb2YgdGhlIHJlbGV2YW50IGJ1aWxkIHBhcmFtZXRlcnMgYW5kIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZsYWdzLiBUaGF0IHNob3VsZCBiZSB0aGUganVtcGluZyBvZmYgcG9pbnQgZm9yIHJlc29sdmluZyB3aGF0ZXZlciBpc3N1ZSBicm91Z2h0IG1lIHRvIHRoaXMgcG9pbnQuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBpcyBjb250cm9sbGVkIGFuZCBpbnRlZ3JhdGVkIHdpdGhpbiB0aGUgYnJvYWRlciBrZXJuZWwgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA2MzYsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAzOjE5OjUyLjg1NTgzMjk0OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTkzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgV0xBTl9WRU5ET1JfTUVESUFURUtcXG4gICAzOlxcdFxcdGJvb2wgXFxcIk1lZGlhVGVrIGRldmljZXNcXFwiXFxuICAgNDpcXHRcXHRkZWZhdWx0IHlcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgSWYgeW91IGhhdmUgYSB3aXJlbGVzcyBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cXG4gICA3OlxcdFxcbiAgIDg6XFx0XFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJ3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxcbiAgIDk6XFx0XFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsIHRoZVxcbiAgMTA6XFx0XFx0ICBxdWVzdGlvbnMgYWJvdXQgdGhlc2UgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXFxuICAxMTpcXHRcXHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0aWYgV0xBTl9WRU5ET1JfTUVESUFURUtcXG4gIDE0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS9LY29uZmlnXFxcIlxcbiAgMTU6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdcXFwiXFxuICAxNjpcXHRlbmRpZiAjIFdMQU5fVkVORE9SX01FRElBVEVLXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAzOjE5OjUyLjg1NTg5NjI0OVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NDE3MzU2OTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTVQ3OTI1IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSBhIHF1aWNrIGRlcGVuZGVuY3kgY2hlY2ssIGl0IGxvb2tzIGxpa2UgYE1UNzkyNVVgIGxldmVyYWdlcyBgTUFDODAyMTFgIGFuZCBgVVNCYCwgd2hpbGUgYE1UNzkyNUVgIHVzZXMgYE1BQzgwMjExYCBhbmQgYFBDSWAuIEJvdGggc2hhcmUgYE1UNzkyNV9DT01NT05gLCBzbyB0aGUgcGF0Y2ggKnNob3VsZCogYWZmZWN0IGJvdGgsIGJ1dCBsZXQncyBiZSBzdXJlLiBXZSdyZSBsb29raW5nIGF0IGEgY2hhbmdlIHdpdGhpbiB0aGUgYFdMQU5fVkVORE9SX01FRElBVEVLYCBzZWN0aW9uLlxuXG5Ob3csIGZvY3VzaW5nIG9uIHRoZSBwYXRjaCBpdHNlbGYuIEl0IHNlZW1zIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgYG10NzkyNV9tYWNfd3JpdGVfdHh3aWAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgdGhlIGBNVF9UWEQxX1RHSURgIGZpZWxkIHdpdGhpbiB0aGUgYHR4d2lgIHN0cnVjdHVyZS4gUHJldmlvdXNseSwgdGhlIGNvZGUgY29uZGl0aW9uYWxseSBhc3NpZ25lZCB0aGUgYGJhbmRfaWR4YCB2YWx1ZSB0byBgTVRfVFhEMV9UR0lEYCBiYXNlZCBvbiBhIHNpbXBsZSBgaWYgKGJhbmRfaWR4KWAgY2hlY2suIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgc3BlY2lmaWMgY29uZGl0aW9uOiBub3cgdGhlIGNvZGUgY2hlY2tzIGBiYW5kX2lkeGAgYW5kIGFsc28gZW5zdXJlcyBgYmFuZF9pZHhgIGlzIG5vdCBgMHhmZmAuIFRoZSBjb21tZW50IG1lbnRpb25zIHRoYXQgYDB4ZmZgIHJlcHJlc2VudHMgYEJBTkRfQVVUT2AgZm9yIHRoZSBmaXJtd2FyZSwgYW5kIGl0IGNhbm5vdCBiZSBlbmNvZGVkIHdpdGhpbiBgVEdJRGAuIFNvLCB0aGlzIHNlZW1zIGxpa2UgYSBmaXggdG8gcHJldmVudCBhbiBpbmNvcnJlY3QgdmFsdWUgYmVpbmcgcGFzc2VkIHRvIHRoZSBmaXJtd2FyZSwgd2hpY2ggc2hvdWxkIHByZXZlbnQgYSBjcmFzaC9lcnJvci5cblxuVG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGBNVF9UWEQxX1RHSURgLiBJJ2xsIGxvb2sgZWl0aGVyIGluIGBtYWMuaGAgb3Igd2l0aGluIHRoaXMgYG1hYy5jYCBmaWxlIHRvIGVuc3VyZSB0aGUgYml0ZmllbGQgZGVmaW5pdGlvbiBtYXRjaGVzIHdoYXQgSSBzdXNwZWN0LiBUaGlzIHdpbGwgY2xhcmlmeSB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIGFuZCBob3cgaXQgbWlnaHQgaW1wYWN0IHRyYWZmaWMgbWFuYWdlbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzExMDAsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoxOTo1Ny4yNzMyNTU2MloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkwODkxNDIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1UX1RYRDFfVEdJRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMyX21hYy5oPTM1PWVudW0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYzJfbWFjLmgtNTUtI2RlZmluZSBNVF9UWEQxX0xPTkdfRk9STUFUXFx0XFx0QklUKDMxKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMyX21hYy5oOjU2OiNkZWZpbmUgTVRfVFhEMV9UR0lEXFx0XFx0XFx0QklUKDMwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMyX21hYy5oLTU3LSNkZWZpbmUgTVRfVFhEMV9PV05fTUFDXFx0XFx0XFx0R0VOTUFTSygyOSwgMjQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMuaD0yMDU9ZW51bSB0eF9mcmFnX2lkeCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMuaC0yMzItI2RlZmluZSBNVF9UWEQxX0hEUl9GT1JNQVRcXHRcXHRHRU5NQVNLKDE1LCAxNClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMuaDoyMzM6I2RlZmluZSBNVF9UWEQxX1RHSURcXHRcXHRcXHRHRU5NQVNLKDEzLCAxMilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMuaC0yMzQtI2RlZmluZSBNVF9UWEQxX1dMQU5fSURYXFx0XFx0R0VOTUFTSygxMSwgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM9NTA0PXZvaWQgbXQ3Nl9jb25uYWMyX21hY193cml0ZV90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTU2Mi1cXHRpZiAocGh5X2lkeCB8fCBiYW5kX2lkeClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jOjU2MzpcXHRcXHR2YWwgfD0gTVRfVFhEMV9UR0lEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNTY0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9NzQ3PW10NzkyNV9tYWNfd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODAyLVxcdGlmIChiYW5kX2lkeCBcXHUwMDI2XFx1MDAyNiBiYW5kX2lkeCAhPSAweGZmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjgwMzpcXHRcXHR2YWwgfD0gRklFTERfUFJFUChNVF9UWEQxX1RHSUQsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04MDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz04OTQ9dm9pZCBtdDc5OTZfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtOTUyLVxcdGlmIChiYW5kX2lkeClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzo5NTM6XFx0XFx0dmFsIHw9IEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtOTU0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoxOTo1Ny42NjQxNTIyMzNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjU1NjQxMjk2MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgTVQ3OTI1IERyaXZlciBWdWxuZXJhYmlsaXR5IFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYE1UX1RYRDFfVEdJRGAgZmllbGQgYW5kIGhvdyBpdCdzIGhhbmRsZWQuIEl0J3MgYSAyLWJpdCBmaWVsZCwgbWVhbmluZyBpdCBjYW4gb25seSBob2xkIHZhbHVlcyBmcm9tIDAgdG8gMy4gVGhlIGNvZGUgdXNlcyBgRklFTERfUFJFUGAsIGFuZCBJIHNlZSBhIHBvdGVudGlhbCBpc3N1ZSBpZiBgYmFuZF9pZHhgIGJlY29tZXMgMHhmZiwgYmVjYXVzZSBkaXJlY3RseSBzZXR0aW5nIHRoYXQgd2l0aCBgRklFTERfUFJFUGAgY291bGQgY2F1c2UgYSB3YXJuaW5nIG9yIG92ZXJmbG93IG9yIGludmFsaWQgYml0IGNvbmZpZ3VyYXRpb24sIGVzcGVjaWFsbHkgd2l0aCBhIGNvbnN0YW50OyBob3dldmVyLCBzaW5jZSBpdCdzIGEgdmFyaWFibGUsIHRoZSBjb2RlIG1hc2tzIGFuZCBzaGlmdHMsIHJlc3VsdGluZyBpbiBhIFRHSUQgdmFsdWUgb2YgMy5cblxuTXkgcHJpbWFyeSBjb25jZXJuIGlzIHdoZXRoZXIgdGhpcyBpcyBhIGNvZGUgcGF0aCBJIGNhbiBhY3R1YWxseSByZWFjaCBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBDYW4gSSB0cmlnZ2VyIHRoaXMgY29uZGl0aW9uIHRocm91Z2ggYSBVU0IgZ2FkZ2V0IHNldHVwIGluIHNvbWV0aGluZyBsaWtlIHN5emthbGxlciBvciBzdGFuZGFyZCBRRU1VPyBMZXQncyBzZWUuLi4gU2VjdGlvbiAyIHBvaW50cyBvdXQgdGhhdCBzb21lIGhhcmR3YXJlLCBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzIGFuZCBzdWNoLCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuIEJ1dCBTZWN0aW9uIDMgaGlnaGxpZ2h0cyByZWFjaGFibGUgZHJpdmVyczogdGhpbmdzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgc3VjaCBhcyB2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBldGMuXG5cblNpbmNlIE1UNzkyNSBoYXMgVVNCIHN1cHBvcnQgKE1UNzkyNVUpLCBhbmQgaXQgY2FuIGJpbmQgdG8gVVNCIGRldmljZSBJRHMgdG8gdHJhbnNtaXQgcGFja2V0cywgaXQncyBhIHN0cm9uZyBpbmRpY2F0b3IgdGhhdCBVU0IgZW11bGF0aW9uIHNob3VsZCBiZSBhIHZpYWJsZSBhY2Nlc3MgcGF0aC4gQ2FuIEkgcmVhY2ggdGhlIGBtdDc5MjVfbWFjX3dyaXRlX3R4d2lgIGZ1bmN0aW9uIHRocm91Z2ggYG10NzkyNXVgPyBZZXMhIFRoZSBUWCBwYXRoIGludm9sdmVzIGBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgIC1cdTAwM2UgYG10NzkyNV91c2Jfc2Rpb193cml0ZV90eHdpYCAtXHUwMDNlIGBtdDc5MjVfbWFjX3dyaXRlX3R4d2lgLiBFeGNlbGxlbnQsIHRoYXTigJlzIHByb21pc2luZy5cblxuSSBuZWVkIHRvIG5haWwgZG93biBteSB0YXJnZXRzIGZvciBmdXp6aW5nLiBMZXQgbWUgY2hlY2sgdGhlIGNhbGxlcnMgYW5kIHN5bWJvbHMuIEknbGwgZm9jdXMgb24gYG10NzkyNV9tYWNfd3JpdGVfdHh3aWAsIGBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLCBhbmQgYG10NzkyNV91c2Jfc2Rpb193cml0ZV90eHdpYCAodGhlIGxhdHRlciBpcyBzdGF0aWMsIGJ1dCByZWxldmFudCkuXG5cbk5vdywgaXMgYG10NzkyNV9tYWNfd3JpdGVfdHh3aWAgc3RhdGljIG9yIGV4cG9ydGVkPyBMZXQgbWUgY2hlY2suLi4gQWgsIGxpbmUgODY4OiBgRVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21hY193cml0ZV90eHdpKTtgIFNvIGl0IGlzIGFuIGV4cG9ydGVkLCBub24tc3RhdGljIHN5bWJvbC4gQW5kIGBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgIGlzIGFsc28gZXhwb3J0ZWQuIFdlIGFsc28gaGF2ZSBgbXQ3OTI1ZV90eF9wcmVwYXJlX3NrYmAgZm9yIFBDSS5cblxuTmV4dCwgSSBuZWVkIHRvIHZlcmlmeSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBMZXQncyBsb29rIGF0IHRoZSBgRW5hYmxlQ29uZmlnc2AuIEkgbmVlZCBgTVQ3OTI1VWAsIGBNVDc5MjVfQ09NTU9OYCwgYE1BQzgwMjExYCwgYFVTQmAsIGFuZCBgV0xBTl9WRU5ET1JfTUVESUFURUtgLlxuXG5Pa2F5LCB0aW1lIHRvIGRvdWJsZS1jaGVjayBldmVyeXRoaW5nOlxuXG4xLiAgSXMgdGhpcyBldmVuIHdvcnRoIGZ1enppbmc/IFllcy5cbjIuICBNeSBmb2N1cyBzeW1ib2xzIGFyZSBzZXQ6IGBtdDc5MjVfbWFjX3dyaXRlX3R4d2lgLCBgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYC5cbjMuICBNeSBlbmFibGUgY29uZmlncyBhcmUgY29ycmVjdC5cbjQuICBSZWFzb25pbmcgaXMgc291bmQgYW5kIGRvY3VtZW50ZWQuXG5cbkFscmlnaHQsIEknbSByZWFkeSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyOTI1LCJPdXRwdXRUb2tlbnMiOjE2NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoyMDoyMy4yMjgyODQ4MTFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDgxNzQzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTI1VVwiLFxuICAgIFwiTVQ3OTI1X0NPTU1PTlwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTUVESUFURUtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfbWFjX3dyaXRlX3R4d2lcIixcbiAgICBcIm10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGJhbmRfaWR4IGhhbmRsaW5nIGluIG10NzkyNV9tYWNfd3JpdGVfdHh3aSgpIHdoZW4gd3JpdGluZyBUWCB3aXJlbGVzcyBpbmZvcm1hdGlvbiBkZXNjcmlwdG9ycy4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgZGV2aWNlcyAoTVQ3OTI1VSkgd2hpY2ggYXJlIHJlYWNoYWJsZSBhbmQgZnV6emFibGUgdmlhIFVTQiBkZXZpY2UgZW11bGF0aW9uIChVU0IgUmF3IEdhZGdldCAvIHZ1c2IpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1UNzkyNV9DT01NT05cIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIldMQU5fVkVORE9SX01FRElBVEVLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1X21hY193cml0ZV90eHdpXCIsXG4gICAgXCJtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBiYW5kX2lkeCBoYW5kbGluZyBpbiBtdDc5MjVfbWFjX3dyaXRlX3R4d2koKSB3aGVuIHdyaXRpbmcgVFggd2lyZWxlc3MgaW5mb3JtYXRpb24gZGVzY3JpcHRvcnMuIFRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGRldmljZXMgKE1UNzkyNVUpIHdoaWNoIGFyZSByZWFjaGFibGUgYW5kIGZ1enphYmxlIHZpYSBVU0IgZGV2aWNlIGVtdWxhdGlvbiAoVVNCIFJhdyBHYWRnZXQgLyB2dXNiKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDM6MjA6MjMuMzAzMTA5MzVaIiwiU2VxIjoyNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4ODg3MjA1OTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDM6MjA6MjMuMzAzNjI0MzNaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo1ODg4NjY4Njc2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNhbGN1bGF0aW9uIG9mIGhhcmR3YXJlIFRYIGRlc2NyaXB0b3IgYml0cyBpbiBgbXQ3OTI1X21hY193cml0ZV90eHdpKClgIGJ5IGF2b2lkaW5nIHRoZSB1c2Ugb2YgYEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeClgIHdoZW4gYGJhbmRfaWR4ID09IDB4ZmZgIChCQU5EX0FVVE8pLlxcblxcbkFsbCBsb2NhbCB2YXJpYWJsZXMsIGluY2x1ZGluZyBgYmFuZF9pZHhgLCBhcmUgZXhwbGljaXRseSBpbml0aWFsaXplZCwgYW5kIHRoZSBmdW5jdGlvbiB3cml0ZXMgZGVzY3JpcHRvciBmaWVsZHMgdG8gYSBwcmUtYWxsb2NhdGVkL21hbmFnZWQgYnVmZmVyIGZvciBoYXJkd2FyZSB0cmFuc21pc3Npb24uIE5vIG1lbW9yeSBjb3B5aW5nIHRvIHVzZXIgc3BhY2UsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgdXNhZ2UsIG9yIHVuaW5pdGlhbGl6ZWQgcGFkZGluZy9idWZmZXIgaGFuZGxpbmcgaXMgaW50cm9kdWNlZCBvciBtb2RpZmllZC4gVGhlcmVmb3JlLCB0aGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGRhNWJiNmIwNjlhZGVjZDJhNjkzNTE4MmI2YTY3MmNlNTc0MmJhMGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCAxMSAwMzoxODozMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmNcbmluZGV4IDEwMWY1NzFiMDI3ZjEuLjNiODJjOWRlMjZjNWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmNcbkBAIC03OTgsNyArNzk4LDggQEAgbXQ3OTI1X21hY193cml0ZV90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXG4gXHR2YWwgPSBGSUVMRF9QUkVQKE1UX1RYRDFfV0xBTl9JRFgsIHdjaWQtXHUwMDNlaWR4KSB8XG4gXHQgICAgICBGSUVMRF9QUkVQKE1UX1RYRDFfT1dOX01BQywgb21hY19pZHgpO1xuIFxuLVx0aWYgKGJhbmRfaWR4KVxuK1x0LyogMHhmZiBtZWFucyBCQU5EX0FVVE8gdG8gdGhlIGZpcm13YXJlLCBhbmQgVEdJRCBjYW5ub3QgZW5jb2RlIGl0ICovXG4rXHRpZiAoYmFuZF9pZHggXHUwMDI2XHUwMDI2IGJhbmRfaWR4ICE9IDB4ZmYpXG4gXHRcdHZhbCB8PSBGSUVMRF9QUkVQKE1UX1RYRDFfVEdJRCwgYmFuZF9pZHgpO1xuIFxuIFx0dHh3aVsxXSA9IGNwdV90b19sZTMyKHZhbCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoyMDoyMy4zMDM2MjcwNFoiLCJTZXEiOjI5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1OTQ3NTI1NzY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJldmlld2luZyB0aGUgTVQ3OTI1IE1BQyBXcml0ZSBUWFdJIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIG10NzkyNSBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgYG10NzkyNV9tYWNfd3JpdGVfdHh3aWAgZnVuY3Rpb24uIFRoZSBjb2RlJ3MgcHVycG9zZSBpcyB0byBjb25zdHJ1Y3QgdGhlIHRyYW5zbWl0IGRlc2NyaXB0b3IgKFRYV0kpIGZvciB0aGUgaGFyZHdhcmUuIEkgY2FuIGltbWVkaWF0ZWx5IHNlZSB0aGUgY2hhbmdlIGZvY3VzZXMgb24gaG93IHRoZSBgYmFuZF9pZHhgIGlzIGhhbmRsZWQgd2l0aGluIHRoZSBgTVRfVFhEMV9UR0lEYCBmaWVsZC5cblxuUHJldmlvdXNseSwgaXQgc2VlbXMgdGhlIGNvZGUgdW5jb25kaXRpb25hbGx5IGNoZWNrZWQgYGJhbmRfaWR4YCdzIHRydXRoaW5lc3MuIE5vdywgd2UncmUgZXhwbGljaXRseSBjaGVja2luZyBpZiBgYmFuZF9pZHhgIGlzbid0IGAweGZmYC4gVGhlIGNvbW1lbnQgY2xhcmlmaWVzIHRoYXQgYSB2YWx1ZSBvZiBgMHhmZmAgaW1wbGllcyBgQkFORF9BVVRPYCBmb3IgdGhlIGZpcm13YXJlLiBJdCBhcHBlYXJzIHRoYXQgdGhlIGhhcmR3YXJlJ3MgYFRHSURgIGZpZWxkIGNhbid0IGRpcmVjdGx5IHJlcHJlc2VudCBgQkFORF9BVVRPYC4gVGhpcyBtYWtlcyBzZW5zZSwgYXMgYSBkaXJlY3QgbWFwcGluZyB3b3VsZCBpbnRyb2R1Y2UgYW1iaWd1aXR5LlxuXG5TbywgdGhlIGxvZ2ljIG5vdyBjb3JyZWN0bHkgc2tpcHMgc2V0dGluZyB0aGUgYE1UX1RYRDFfVEdJRGAgd2hlbiBgYmFuZF9pZHhgIGlzIGAweGZmYCB3aGljaCB3aWxsIHNlbmQgdGhlIHNpZ25hbCB0byB0aGUgaGFyZHdhcmUgdGhhdCBpdCBjYW4gY2hvb3NlIGJhc2VkIG9uIHRoZSBsb2dpYyBvZiB0aGUgYEJBTkRfQVVUT2Agc2V0dGluZy4gVGhhdCdzIGEgZ29vZCBmaXgsIGl0IGNsZWFucyB1cCBhIHBvdGVudGlhbCBjb3JuZXIgY2FzZSBhbmQgcHJvYmFibHkgbWFrZXMgdGhlIGZpcm13YXJlJ3MgaGFuZGxpbmcgb2YgYEJBTkRfQVVUT2AgbW9yZSByb2J1c3QuIFRoaXMgaXMgYSBzdWJ0bGUgYnV0IGltcG9ydGFudCBjb3JyZWN0aW9uIHRvIGVuc3VyZSB0aGUgcmlnaHQgYmFuZCBzZWxlY3Rpb24gaGFwcGVucyBmb3IgdGhlIHdpcmVsZXNzIHRyYW5zbWlzc2lvbi4gSXQncyBhIHNvbGlkLCBzdHJhaWdodGZvcndhcmQgY2hhbmdlLiBJJ20gc2F0aXNmaWVkIHdpdGggdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIwMCwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAzOjIwOjI5LjI1MTE1NTEyNloiLCJTZXEiOjMwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTU2MzkxMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X21hY193cml0ZV90eHdpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTY0MD1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjY0MTptdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMyhfX2xlMzIgKnR4d2ksIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNjQyLVxcdFxcdFxcdCAgIHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz02NzU9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo2NzY6bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjExKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNjc3LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9NzQ2PXZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo3NDc6bXQ3OTI1X21hY193cml0ZV90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNzQ4LVxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04NDAtXFx0aWYgKGlzXzgwMjMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODQxOlxcdFxcdG10NzkyNV9tYWNfd3JpdGVfdHh3aV84MDIzKHR4d2ksIHNrYiwgd2NpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODQyLVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4NDM6XFx0XFx0bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjExKGRldiwgdHh3aSwgc2tiLCBrZXkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg0NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg2Ny19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODY4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tYWNfd3JpdGVfdHh3aSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODY5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MTYyMj1tdDc5MjVfdXNiX3NkaW9fd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYyOS1cXHRtZW1zZXQodHh3aSwgMCwgTVRfU0RJT19UWERfU0laRSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTYzMDpcXHRtdDc5MjVfbWFjX3dyaXRlX3R4d2koXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgdHh3aSwgc2tiLCB3Y2lkLCBrZXksIHBpZCwgcWlkLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjMxLVxcdHNrYl9wdXNoKHNrYiwgTVRfU0RJT19UWERfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zNDI9dm9pZCBtdDc5MjVfbWFjX3NldF9maXhlZF9yYXRlX3RhYmxlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzQzLVxcdFxcdFxcdFxcdCAgICAgdTggdGJsX2lkeCwgdTE2IHJhdGVfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNDQ6dm9pZCBtdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNDUtXFx0XFx0XFx0ICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYz05PWludCBtdDc5MjVlX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmMtNDQtXFx0cGlkID0gbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChtZGV2LCB3Y2lkLCB0eF9pbmZvLVxcdTAwM2Vza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYzo0NTpcXHRtdDc5MjVfbWFjX3dyaXRlX3R4d2kobWRldiwgdHh3aV9wdHIsIHR4X2luZm8tXFx1MDAzZXNrYiwgd2NpZCwga2V5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYy00Ni1cXHRcXHRcXHQgICAgICBwaWQsIHFpZCwgMCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAzOjIwOjI5LjM0Njc5NzM5NVoiLCJTZXEiOjMxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2OTIxNjE2NjkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHNuaXBwZXQsIGZyYW1lZCBhcyBteSBvd24gdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVDc5MjUgTUFDIExheWVyKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jYCBmaWxlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBmb2N1cyBvbiBsaW5lcyA3NDYgdGhyb3VnaCA4MTAuIE15IGd1dCBmZWVsaW5nIGlzIHRlbGxpbmcgbWUgc29tZXRoaW5nIGlzIGFtaXNzIGluIHRoaXMgYXJlYS4gUHJvYmFibHkgcmVsYXRlZCB0byB0aGUgTUFDIGxheWVyIHByb2Nlc3Npbmcgb24gdGhlIG10NzkyNS4gSSdsbCBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IGFuZCB1bmRlcnN0YW5kIHdoYXQgb3BlcmF0aW9ucyBhcmUgdHlwaWNhbGx5IHBlcmZvcm1lZCBpbiB0aGlzIHNlY3Rpb24gb2YgdGhlIGNvZGViYXNlIGFuZCB3aGVyZSB0aGlzIGJsb2NrIGZpdHMgaW50byB0aGUgd2hvbGUgcGljdHVyZS4gTGV0J3Mgc2VlIGlmIHRoaXMgc2VjdGlvbiByZWxhdGVzIHRvIHRyYWZmaWMgc2NoZWR1bGluZywgZnJhbWUgdHJhbnNtaXNzaW9uLCBvciBwZXJoYXBzIGV2ZW4gcG93ZXIgbWFuYWdlbWVudC4gSSdtIGhvcGluZyBJIGNhbiBpZGVudGlmeSB0aGUgc291cmNlIG9mIHRoZSBpc3N1ZSBxdWlja2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzU3LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDM6MjA6MzYuMjY4NDE2MTU2WiIsIlNlcSI6MzIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMDE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3ODAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3ODA6XFx0XFx0fSBlbHNlIGlmIChxaWQgXFx1MDAzZT0gTVRfVFhRX1BTRCkge1xcbiA3ODE6XFx0XFx0XFx0cF9mbXQgPSBtdDc2X2lzX21taW8oZGV2KSA/IE1UX1RYX1RZUEVfQ1QgOiBNVF9UWF9UWVBFX1NGO1xcbiA3ODI6XFx0XFx0XFx0cV9pZHggPSBNVF9MTUFDX0FMVFgwO1xcbiA3ODM6XFx0XFx0fSBlbHNlIHtcXG4gNzg0OlxcdFxcdFxcdHBfZm10ID0gbXQ3Nl9pc19tbWlvKGRldikgPyBNVF9UWF9UWVBFX0NUIDogTVRfVFhfVFlQRV9TRjtcXG4gNzg1OlxcdFxcdFxcdHFfaWR4ID0gd21tX2lkeCAqIE1UNzZfQ09OTkFDX01BWF9XTU1fU0VUUyArXFxuIDc4NjpcXHRcXHRcXHRcXHRtdDc2X2Nvbm5hY19sbWFjX21hcHBpbmcoc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYikpO1xcbiA3ODc6XFx0XFxuIDc4ODpcXHRcXHRcXHQvKiBjb3VudGluZyBub24tb2ZmbG9hZGluZyBza2JzICovXFxuIDc4OTpcXHRcXHRcXHR3Y2lkLVxcdTAwM2VzdGF0cy50eF9ieXRlcyArPSBza2ItXFx1MDAzZWxlbjtcXG4gNzkwOlxcdFxcdFxcdHdjaWQtXFx1MDAzZXN0YXRzLnR4X3BhY2tldHMrKztcXG4gNzkxOlxcdFxcdH1cXG4gNzkyOlxcdFxcbiA3OTM6XFx0XFx0dmFsID0gRklFTERfUFJFUChNVF9UWEQwX1RYX0JZVEVTLCBza2ItXFx1MDAzZWxlbiArIHN6X3R4ZCkgfFxcbiA3OTQ6XFx0XFx0ICAgICAgRklFTERfUFJFUChNVF9UWEQwX1BLVF9GTVQsIHBfZm10KSB8XFxuIDc5NTpcXHRcXHQgICAgICBGSUVMRF9QUkVQKE1UX1RYRDBfUV9JRFgsIHFfaWR4KTtcXG4gNzk2OlxcdFxcdHR4d2lbMF0gPSBjcHVfdG9fbGUzMih2YWwpO1xcbiA3OTc6XFx0XFxuIDc5ODpcXHRcXHR2YWwgPSBGSUVMRF9QUkVQKE1UX1RYRDFfV0xBTl9JRFgsIHdjaWQtXFx1MDAzZWlkeCkgfFxcbiA3OTk6XFx0XFx0ICAgICAgRklFTERfUFJFUChNVF9UWEQxX09XTl9NQUMsIG9tYWNfaWR4KTtcXG4gODAwOlxcdFxcbiA4MDE6XFx0XFx0LyogMHhmZiBtZWFucyBCQU5EX0FVVE8gdG8gdGhlIGZpcm13YXJlLCBhbmQgVEdJRCBjYW5ub3QgZW5jb2RlIGl0ICovXFxuIDgwMjpcXHRcXHRpZiAoYmFuZF9pZHggXFx1MDAyNlxcdTAwMjYgYmFuZF9pZHggIT0gMHhmZilcXG4gODAzOlxcdFxcdFxcdHZhbCB8PSBGSUVMRF9QUkVQKE1UX1RYRDFfVEdJRCwgYmFuZF9pZHgpO1xcbiA4MDQ6XFx0XFxuIDgwNTpcXHRcXHR0eHdpWzFdID0gY3B1X3RvX2xlMzIodmFsKTtcXG4gODA2OlxcdFxcdHR4d2lbMl0gPSAwO1xcbiA4MDc6XFx0XFxuIDgwODpcXHRcXHR2YWwgPSBGSUVMRF9QUkVQKE1UX1RYRDNfUkVNX1RYX0NPVU5ULCAxNSk7XFxuIDgwOTpcXHRcXG4gODEwOlxcdFxcdGlmIChrZXkpXFxuIDgxMTpcXHRcXHRcXHR2YWwgfD0gTVRfVFhEM19QUk9URUNUX0ZSQU1FO1xcbiA4MTI6XFx0XFx0aWYgKGluZm8tXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX0NUTF9OT19BQ0spXFxuIDgxMzpcXHRcXHRcXHR2YWwgfD0gTVRfVFhEM19OT19BQ0s7XFxuIDgxNDpcXHRcXHRpZiAod2NpZC1cXHUwMDNlYW1zZHUpXFxuIDgxNTpcXHRcXHRcXHR2YWwgfD0gTVRfVFhEM19IV19BTVNEVTtcXG4gODE2OlxcdFxcbiA4MTc6XFx0XFx0dHh3aVszXSA9IGNwdV90b19sZTMyKHZhbCk7XFxuIDgxODpcXHRcXHR0eHdpWzRdID0gMDtcXG4gODE5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoyMDozNi4yNjg1NDgxODZaIiwiU2VxIjozMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6OTM3MDc4NTQyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgYnJlYWtkb3duIG9mIG15IHRob3VnaHQgcHJvY2VzcyBhcyBJIGRlbHZlIGludG8gdGhlIGBtdDc5MjVfbWFjX3dyaXRlX3R4d2lgIGZ1bmN0aW9uLCBmb2N1c2luZyBvbiB0aGUgb3JpZ2luIG9mIGBiYW5kX2lkeGA6XG5cbioqRGVjb25zdHJ1Y3RpbmcgYG10NzkyNV9tYWNfd3JpdGVfdHh3aWAgYW5kIHRoZSBFbHVzaXZlIGBiYW5kX2lkeGAqKlxuXG5BbHJpZ2h0LCBsZXQncyB0cmFjZSB0aGlzIGBiYW5kX2lkeGAgdmFyaWFibGUgd2l0aGluIGBtdDc5MjVfbWFjX3dyaXRlX3R4d2lgLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIHByZWNpc2VseSAqd2hlcmUqIHRoaXMgaW5kZXggaXMgYmVpbmcgZGVyaXZlZC4gSXQncyBjcnVjaWFsIGJlY2F1c2UgaXQncyBjbGVhcmx5IHJlbGF0ZWQgdG8gYmFuZCBzZWxlY3Rpb24gaW4gdGhlIHJhZGlvIGhhcmR3YXJlLCBhbmQgdGhhdCdzIGZ1bmRhbWVudGFsIGZvciBjb3JyZWN0IHBhY2tldCB0cmFuc21pc3Npb24uIFNvLCBJIG5lZWQgdG8ga25vdyBpZiBpdCdzIGRlcml2ZWQgZnJvbSB0aGUgZHJpdmVyJ3MgY29uZmlndXJhdGlvbiwgdGhlIGluY29taW5nIHBhY2tldCwgb3IgbWF5YmUgc29tZXRoaW5nIGVsc2UgZW50aXJlbHkuXG5cbkknbGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlLiBJcyBgYmFuZF9pZHhgIHBhc3NlZCBpbiBkaXJlY3RseSBhcyBhbiBhcmd1bWVudD8gSWYgc28sIHRoYXQgZ2l2ZXMgbWUgYSBuYXJyb3dlciBzY29wZSB0byBodW50IGRvd24gaXRzIHVwc3RyZWFtIG9yaWdpbi4gSWYgaXQncyBhIGxvY2FsIHZhcmlhYmxlLCBJJ2xsIG5lZWQgdG8gd29yayBmcm9tIHRoZXJlLiBBcmUgdGhlcmUgYW55IG90aGVyIGRhdGEgc3RydWN0dXJlcyB0aGF0IGhhdmUgaW5mb3JtYXRpb24gdGhhdCBsb29rcyByZWxhdGVkIHRvIHRoaXM/IFRoaW5ncyBsaWtlIHRoZSByZWd1bGF0b3J5IGRvbWFpbiBvciBjb25maWd1cmVkIG9wZXJhdGluZyBiYW5kIHNwcmluZyB0byBtaW5kIGFzIHRoaW5ncyBJIGNhbiBjcm9zcy1yZWZlcmVuY2UsIGlmIG5lZWQgYmUuXG5cblRoZW4sIEknbGwgc2NydXRpbml6ZSB0aGUgZnVuY3Rpb24ncyBib2R5LiBJJ2xsIG1ldGljdWxvdXNseSBzY2FuIHRoZSBjb2RlLCBsb29raW5nIGZvciBhbnkgYXNzaWdubWVudHMgb3IgY2FsY3VsYXRpb25zIGludm9sdmluZyBgYmFuZF9pZHhgLiBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFscyB0aGF0IG1pZ2h0IHNldCBgYmFuZF9pZHhgIGJhc2VkIG9uLCBzYXksIHRoZSB0eXBlIG9mIGZyYW1lIGJlaW5nIHRyYW5zbWl0dGVkIChlLmcuLCBjb250cm9sIGZyYW1lcywgZGF0YSBmcmFtZXMsIG1hbmFnZW1lbnQgZnJhbWVzKT8gT3IsIGNvdWxkIGl0IGJlIGRlcml2ZWQgZnJvbSBhIGxvb2t1cCB0YWJsZT8gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGlzIGRyaXZlciwgaXQgd291bGQgbm90IGJlIGEgc3VycHJpc2UgdG8gc2VlIGEgbG90IG9mIGJpdC10d2lkZGxpbmcgYW5kIGhhcmR3YXJlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLlxuXG5NeSBwcmltYXJ5IGdvYWwgaGVyZSBpcyB0byBlc3RhYmxpc2ggYSBjb21wbGV0ZSBkYXRhIGZsb3cgcGljdHVyZSBvZiB0aGUgYGJhbmRfaWR4YCB2YXJpYWJsZS4gVWx0aW1hdGVseSwgdGhlIHF1ZXN0aW9uIGlzLCAqaG93KiBkb2VzIHRoZSBkcml2ZXIgZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSByYWRpbyBiYW5kIGZvciBhIGdpdmVuIHRyYW5zbWlzc2lvbj8gQW5kLCBkb2VzIHRoaXMgYXBwcm9hY2ggbWFrZSBzZW5zZSB3aXRoIHRoZSBjaGlwc2V0IGRvY3VtZW50YXRpb24gYW5kIGFueSBwcmV2aW91cyBleHBlcmllbmNlIEkndmUgaGFkIHdvcmtpbmcgd2l0aCBzaW1pbGFyIGhhcmR3YXJlP1xuXG5cbiIsIklucHV0VG9rZW5zIjo1NDIxLCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoyMDo0NS42MzkzMzcwODhaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5NzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc0NSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDc0NTpcXHRcXG4gNzQ2OlxcdHZvaWRcXG4gNzQ3OlxcdG10NzkyNV9tYWNfd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxcbiA3NDg6XFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4gNzQ5OlxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleSwgaW50IHBpZCxcXG4gNzUwOlxcdFxcdFxcdCAgICAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCB1MzIgY2hhbmdlZClcXG4gNzUxOlxcdHtcXG4gNzUyOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbyA9IElFRUU4MDIxMV9TS0JfQ0Ioc2tiKTtcXG4gNzUzOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYgPSBpbmZvLVxcdTAwM2Vjb250cm9sLnZpZjtcXG4gNzU0OlxcdFxcdHU4IHBfZm10LCBxX2lkeCwgb21hY19pZHggPSAwLCB3bW1faWR4ID0gMCwgYmFuZF9pZHggPSAwO1xcbiA3NTU6XFx0XFx0dTMyIHZhbCwgc3pfdHhkID0gbXQ3Nl9pc19tbWlvKGRldikgPyBNVF9UWERfU0laRSA6IE1UX1NESU9fVFhEX1NJWkU7XFxuIDc1NjpcXHRcXHRib29sIGlzXzgwMjMgPSBpbmZvLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9DVExfSFdfODAyMTFfRU5DQVA7XFxuIDc1NzpcXHRcXHRzdHJ1Y3QgbXQ3Nl92aWZfbGluayAqbXZpZjtcXG4gNzU4OlxcdFxcdGJvb2wgYmVhY29uID0gISEoY2hhbmdlZCBcXHUwMDI2IChCU1NfQ0hBTkdFRF9CRUFDT04gfFxcbiA3NTk6XFx0XFx0XFx0XFx0XFx0ICAgIEJTU19DSEFOR0VEX0JFQUNPTl9FTkFCTEVEKSk7XFxuIDc2MDpcXHRcXHRib29sIGluYmFuZF9kaXNjID0gISEoY2hhbmdlZCBcXHUwMDI2IChCU1NfQ0hBTkdFRF9VTlNPTF9CQ0FTVF9QUk9CRV9SRVNQIHxcXG4gNzYxOlxcdFxcdFxcdFxcdFxcdFxcdCBCU1NfQ0hBTkdFRF9GSUxTX0RJU0NPVkVSWSkpO1xcbiA3NjI6XFx0XFx0c3RydWN0IG10NzkyeF9ic3NfY29uZiAqbWNvbmY7XFxuIDc2MzpcXHRcXG4gNzY0OlxcdFxcdG1jb25mID0gdmlmID8gbXQ3OTJ4X3ZpZl90b19saW5rKChzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqKXZpZi1cXHUwMDNlZHJ2X3ByaXYsXFxuIDc2NTpcXHRcXHRcXHRcXHRcXHRcXHQgd2NpZC1cXHUwMDNlbGlua19pZCkgOiBOVUxMO1xcbiA3NjY6XFx0XFx0bXZpZiA9IG1jb25mID8gKHN0cnVjdCBtdDc2X3ZpZl9saW5rICopXFx1MDAyNm1jb25mLVxcdTAwM2VtdDc2IDogTlVMTDtcXG4gNzY3OlxcdFxcbiA3Njg6XFx0XFx0aWYgKG12aWYpIHtcXG4gNzY5OlxcdFxcdFxcdG9tYWNfaWR4ID0gbXZpZi1cXHUwMDNlb21hY19pZHg7XFxuIDc3MDpcXHRcXHRcXHR3bW1faWR4ID0gbXZpZi1cXHUwMDNld21tX2lkeDtcXG4gNzcxOlxcdFxcdFxcdGJhbmRfaWR4ID0gbXZpZi1cXHUwMDNlYmFuZF9pZHg7XFxuIDc3MjpcXHRcXHR9XFxuIDc3MzpcXHRcXG4gNzc0OlxcdFxcdGlmIChpbmJhbmRfZGlzYykge1xcbiA3NzU6XFx0XFx0XFx0cF9mbXQgPSBNVF9UWF9UWVBFX0ZXO1xcbiA3NzY6XFx0XFx0XFx0cV9pZHggPSBNVF9MTUFDX0FMVFgwO1xcbiA3Nzc6XFx0XFx0fSBlbHNlIGlmIChiZWFjb24pIHtcXG4gNzc4OlxcdFxcdFxcdHBfZm10ID0gTVRfVFhfVFlQRV9GVztcXG4gNzc5OlxcdFxcdFxcdHFfaWR4ID0gTVRfTE1BQ19CQ04wO1xcbiA3ODA6XFx0XFx0fSBlbHNlIGlmIChxaWQgXFx1MDAzZT0gTVRfVFhRX1BTRCkge1xcbiA3ODE6XFx0XFx0XFx0cF9mbXQgPSBtdDc2X2lzX21taW8oZGV2KSA/IE1UX1RYX1RZUEVfQ1QgOiBNVF9UWF9UWVBFX1NGO1xcbiA3ODI6XFx0XFx0XFx0cV9pZHggPSBNVF9MTUFDX0FMVFgwO1xcbiA3ODM6XFx0XFx0fSBlbHNlIHtcXG4gNzg0OlxcdFxcdFxcdHBfZm10ID0gbXQ3Nl9pc19tbWlvKGRldikgPyBNVF9UWF9UWVBFX0NUIDogTVRfVFhfVFlQRV9TRjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDM6MjA6NDUuNjM5NDg4NDI4WiIsIlNlcSI6MzUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUzNzQ3MjM4MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCYW5kIEluZGV4IEFzc2lnbm1lbnQqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBgYmFuZF9pZHhgIGlzIHN0YXJ0aW5nIGF0IDAsIHdoaWNoIG1ha2VzIHNlbnNlIGFzIGEgZGVmYXVsdC4gTm93LCBpZiBgbXZpZmAgZXhpc3RzLCBpdCdzIGJlaW5nIHBvdGVudGlhbGx5IG92ZXJ3cml0dGVuIGJ5IGBtdmlmLVx1MDAzZWJhbmRfaWR4YC4gSSBuZWVkIHRvIHJlbWVtYmVyIHdoYXQncyBnb2luZyBvbiB3aXRoIHRoZSBgTVRfVFhEMV9UR0lEYCBmaWVsZC4uLmFoIHllcywgaXQncyBiZWluZyBwcmVwcGVkIHdpdGggYEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeClgLlxuXG5Ob3cgSSBzZWUgaXQuIEJlZm9yZSwgaWYgYGJhbmRfaWR4YCB3YXMgc2V0IHRvIGAweGZmYCDigJMgdGhhdCBgQkFORF9BVVRPYCBvciBgTVRfQkFORF9BVVRPYCBjb25zdGFudCDigJMgYEZJRUxEX1BSRVBgIHdvdWxkIGxpa2VseSBjYXVzZSBhIHByb2JsZW0gd2l0aCBgTVRfVFhEMV9UR0lEYC4gVGhlIHByZXAgbGlrZWx5IHdvdWxkIG92ZXJmbG93IHRoZSBiaXRmaWVsZCwgb3IgcG90ZW50aWFsbHkgc2V0IHRoZSBUR0lEIHRvIGAweGZmYCBpZiB0aGUgYml0cyBhbGxvd2VkIHRoYXQgdmFsdWUuIEl0IGNvdWxkIGV2ZW4gdHJpZ2dlciBhIGNvbXBpbGVyIHdhcm5pbmcgb3IgYnVnIGlmIHRoZSBgRklFTERfUFJFUGAgbWFjcm8gaW5jbHVkZXMgYW55IG1hc2sgY2hlY2tzLiBBdCBydW50aW1lLCB0aGUgcmVzdWx0IHdvdWxkIGJlIGludmFsaWQgYml0cyBiZWluZyBzZXQsIG9yIHBvdGVudGlhbGx5IG1hc2tlZC5cblxuTGV0IG1lIGp1c3QgcXVpY2tseSB2ZXJpZnkgdGhlIGBNVF9UWEQxX1RHSURgIGRlZmluaXRpb24gdG8gZW5zdXJlIEknbSByZW1lbWJlcmluZyB0aGlzIGNvcnJlY3RseS4gSXQncyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgdGhlIGZpZWxkIHdpZHRoIGFuZCBob3cgYDB4ZmZgIGltcGFjdHMgaXRzIGVuY29kaW5nLiBXZSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGUgcHJlcHBlZCB2YWx1ZSBpcyBhbHdheXMgd2l0aGluIHRoZSBib3VuZHMgb2YgdGhpcyBiaXRmaWVsZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Njg0OSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAzOjIwOjUxLjAxNDIxNDQxNFoiLCJTZXEiOjM2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg1NjU1NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTVRfVFhEMV9UR0lEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTc0Nz1tdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTgwMi1cXHRpZiAoYmFuZF9pZHggXFx1MDAyNlxcdTAwMjYgYmFuZF9pZHggIT0gMHhmZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4MDM6XFx0XFx0dmFsIHw9IEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODA0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoyMDo1MS4wNjI3ODMwNDNaIiwiU2VxIjozNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTIyOTQwOTI1MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIGBNVF9UWEQxX1RHSURgKipcblxuT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBNVF9UWEQxX1RHSURgIGFjdHVhbGx5ICppcyouIElzIGl0IGEgbWFjcm8/IEEgdmFyaWFibGU/IExldCdzIGFzc3VtZSBpdCdzIGEgbWFjcm8sIGZvciBub3cuIEknbSBnb2luZyB0byBzY2FuIHRoZSBlbnRpcmUgcHJvamVjdCB0cmVlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgbXQ3NmAgaGVhZGVycyBhbmQgdGhlIHJlc3Qgb2YgdGhlIHJlbGV2YW50IHNvdXJjZSBjb2RlLCB0byBwaW4gZG93biBpdHMgZGVmaW5pdGlvbi4gS25vd2luZyB0aGUgcHJlY2lzZSBkZWZpbml0aW9uIGlzIGFic29sdXRlbHkgY3JpdGljYWwuIFRoaXMgd2lsbCByZXZlYWwgaXRzIGRhdGEgdHlwZSwgcHVycG9zZSBhbmQgaXRzIHJlbGF0aW9uc2hpcCB3aXRoIG90aGVyIHZhcmlhYmxlcyBvciBtb2R1bGVzLiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB3ZSBnZXQgdGhpcyByaWdodC4gV2UgY2FuJ3QgcHJvY2VlZCB1bnRpbCB3ZSBoYXZlIGEgc29saWQgaGFuZGxlIG9uIGl0cyBzY29wZSBhbmQgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU4MSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAzOjIxOjAzLjM1Njg3ODVaIiwiU2VxIjozOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4OTM4NTc5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTVRfVFhEMV9UR0lEXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMyX21hYy5oPTM1PWVudW0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYzJfbWFjLmgtNTUtI2RlZmluZSBNVF9UWEQxX0xPTkdfRk9STUFUXFx0XFx0QklUKDMxKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMyX21hYy5oOjU2OiNkZWZpbmUgTVRfVFhEMV9UR0lEXFx0XFx0XFx0QklUKDMwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMyX21hYy5oLTU3LSNkZWZpbmUgTVRfVFhEMV9PV05fTUFDXFx0XFx0XFx0R0VOTUFTSygyOSwgMjQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMuaD0yMDU9ZW51bSB0eF9mcmFnX2lkeCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMuaC0yMzItI2RlZmluZSBNVF9UWEQxX0hEUl9GT1JNQVRcXHRcXHRHRU5NQVNLKDE1LCAxNClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMuaDoyMzM6I2RlZmluZSBNVF9UWEQxX1RHSURcXHRcXHRcXHRHRU5NQVNLKDEzLCAxMilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMuaC0yMzQtI2RlZmluZSBNVF9UWEQxX1dMQU5fSURYXFx0XFx0R0VOTUFTSygxMSwgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM9NTA0PXZvaWQgbXQ3Nl9jb25uYWMyX21hY193cml0ZV90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTU2Mi1cXHRpZiAocGh5X2lkeCB8fCBiYW5kX2lkeClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jOjU2MzpcXHRcXHR2YWwgfD0gTVRfVFhEMV9UR0lEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNTY0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9NzQ3PW10NzkyNV9tYWNfd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODAyLVxcdGlmIChiYW5kX2lkeCBcXHUwMDI2XFx1MDAyNiBiYW5kX2lkeCAhPSAweGZmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjgwMzpcXHRcXHR2YWwgfD0gRklFTERfUFJFUChNVF9UWEQxX1RHSUQsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04MDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz04OTQ9dm9pZCBtdDc5OTZfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtOTUyLVxcdGlmIChiYW5kX2lkeClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzo5NTM6XFx0XFx0dmFsIHw9IEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtOTU0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoyMTowNS4yNTA3NDEzMVoiLCJTZXEiOjM5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNjkzOTU1MDAyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBEcml2ZXIgQnVnIEZpeCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZml4IGluIGBtdDc2X2Nvbm5hYzNfbWFjLmhgLiBTcGVjaWZpY2FsbHksIGl0J3MgZGVhbGluZyB3aXRoIHRoZSBgTVRfVFhEMV9UR0lEYCBmaWVsZCwgd2hpY2ggaXMgZGVmaW5lZCBhcyBgR0VOTUFTSygxMywgMTIpYCDigJMgdGhhdCdzIDIgYml0cywgZWZmZWN0aXZlbHkgMCB0byAzLiBUaGUgY3J1eCBvZiB0aGUgaXNzdWUgaXMgYXJvdW5kIHRoZSBgYmFuZF9pZHhgIHZhcmlhYmxlLiBJZiBgYmFuZF9pZHhgIHNvbWVob3cgZW5kcyB1cCBiZWluZyBgMHhmZmAsIHRoZSBgRklFTERfUFJFUGAgbWFjcm8gd291bGQgbWlzYmVoYXZlOyBwb3RlbnRpYWxseSBjYXVzaW5nIHRydW5jYXRpb24gb3Igb3RoZXIgZmFpbHVyZXMuIEl0J3MgYSBsb2dpYyBidWcgaW4gaG93IHRoZSBwYWNrZXQgdHJhbnNtaXNzaW9uIGRlc2NyaXB0b3IgaXMgYmVpbmcgZ2VuZXJhdGVkLCBwYXJ0aWN1bGFybHkgb24gdGhlIE1UNzkyNSBoYXJkd2FyZS5cblxuTXkgcHJpbWFyeSBjb25jZXJuIGlzIGFsd2F5czogZG9lcyB0aGlzIGZpeCBpbnRyb2R1Y2UgYW55IG5ldyB2dWxuZXJhYmlsaXRpZXM/IEknbSB0aGlua2luZyBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgcG90ZW50aWFsIGxlYWtzIG9mIHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2Vyc3BhY2UsIG9yIGRlcGVuZGVuY2llcyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy5cblxuTGV0J3MgYnJlYWsgaXQgZG93bjogRmlyc3QsIGFsbCB0aGUgdmFyaWFibGVzIGludm9sdmVkIHdpdGhpbiBgbXQ3OTI1X21hY193cml0ZV90eHdpYCB0aGF0IGFyZSBpbnZvbHZlZCBpbiB0aGlzIGZpeCBhcmUgZXhwbGljaXRseSBpbml0aWFsaXplZCAoaW4gdGhpcyBjYXNlLCBgYmFuZF9pZHhgIGdldHMgYSB2YWx1ZSBvZiBgMGApLiBTZWNvbmQsIHRoZXJlJ3Mgbm8gZGlyZWN0IGNvcHkgdG8gdXNlcnNwYWNlIGhlcmU6IG5vIGBjb3B5X3RvX3VzZXJgLCBubyBgcHV0X3VzZXJgLCBubyBuZXRsaW5rIG1lc3NhZ2VzLCBhbmQgbm8gaW9jdGwgY2FsbHMgaW52b2x2ZWQuIFRoaXMgZWZmZWN0aXZlbHkgZWxpbWluYXRlcyB0aGUgcmlzayBvZiBsZWFraW5nIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgZGF0YS4gRmluYWxseSwgdGhpcyBjaGFuZ2UgaXNuJ3QgdG91Y2hpbmcgbWVtb3J5IGluaXRpYWxpemF0aW9uIHJvdXRpbmVzIG9yIGJ1ZmZlciBib3VuZGFyaWVzLCBzbyB0aGVyZSdzIG5vIGluY3JlYXNlZCByaXNrIHRoZXJlLlxuXG5HaXZlbiB0aGlzIGFuYWx5c2lzLCBJJ20gY29uZmlkZW50IHRoYXQgdGhlIGFuc3dlciB0byBOZWVkc0tNU0FOIGlzIFwiZmFsc2VcIi4gVGhpcyBhcHBlYXJzIHRvIGJlIGEgY2xlYW4sIHNhZmUgZml4LiBUaW1lIHRvIGNhbGwgaXQgaW4gd2l0aCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzA5LCJPdXRwdXRUb2tlbnMiOjE3NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoyMToyMi4xOTAyOTQxODNaIiwiU2VxIjo0MCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjYWxjdWxhdGlvbiBvZiBoYXJkd2FyZSBUWCBkZXNjcmlwdG9yIGJpdHMgaW4gYG10NzkyNV9tYWNfd3JpdGVfdHh3aSgpYCBieSBhdm9pZGluZyB0aGUgdXNlIG9mIGBGSUVMRF9QUkVQKE1UX1RYRDFfVEdJRCwgYmFuZF9pZHgpYCB3aGVuIGBiYW5kX2lkeCA9PSAweGZmYCAoQkFORF9BVVRPKS5cXG5cXG5BbGwgbG9jYWwgdmFyaWFibGVzLCBpbmNsdWRpbmcgYGJhbmRfaWR4YCwgYXJlIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQsIGFuZCB0aGUgZnVuY3Rpb24gd3JpdGVzIGRlc2NyaXB0b3IgZmllbGRzIHRvIGEgcHJlLWFsbG9jYXRlZC9tYW5hZ2VkIGJ1ZmZlciBmb3IgaGFyZHdhcmUgdHJhbnNtaXNzaW9uLiBObyBtZW1vcnkgY29weWluZyB0byB1c2VyIHNwYWNlLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHVzYWdlLCBvciB1bmluaXRpYWxpemVkIHBhZGRpbmcvYnVmZmVyIGhhbmRsaW5nIGlzIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuIFRoZXJlZm9yZSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2FsY3VsYXRpb24gb2YgaGFyZHdhcmUgVFggZGVzY3JpcHRvciBiaXRzIGluIGBtdDc5MjVfbWFjX3dyaXRlX3R4d2koKWAgYnkgYXZvaWRpbmcgdGhlIHVzZSBvZiBgRklFTERfUFJFUChNVF9UWEQxX1RHSUQsIGJhbmRfaWR4KWAgd2hlbiBgYmFuZF9pZHggPT0gMHhmZmAgKEJBTkRfQVVUTykuXFxuXFxuQWxsIGxvY2FsIHZhcmlhYmxlcywgaW5jbHVkaW5nIGBiYW5kX2lkeGAsIGFyZSBleHBsaWNpdGx5IGluaXRpYWxpemVkLCBhbmQgdGhlIGZ1bmN0aW9uIHdyaXRlcyBkZXNjcmlwdG9yIGZpZWxkcyB0byBhIHByZS1hbGxvY2F0ZWQvbWFuYWdlZCBidWZmZXIgZm9yIGhhcmR3YXJlIHRyYW5zbWlzc2lvbi4gTm8gbWVtb3J5IGNvcHlpbmcgdG8gdXNlciBzcGFjZSwgdW5pbml0aWFsaXplZCB2YXJpYWJsZSB1c2FnZSwgb3IgdW5pbml0aWFsaXplZCBwYWRkaW5nL2J1ZmZlciBoYW5kbGluZyBpcyBpbnRyb2R1Y2VkIG9yIG1vZGlmaWVkLiBUaGVyZWZvcmUsIHRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow49mds[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-11 02:59:26 +0000 UTC FinishedAt: 2026-09-11 03:21:23 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "13e51269b6656768dc595ed6025e4974f2026543", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U", "MT7925_COMMON", "MAC80211", "USB", "WLAN_VENDOR_MEDIATEK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "13e51269b6656768dc595ed6025e4974f2026543", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U", "MT7925_COMMON", "MAC80211", "USB", "WLAN_VENDOR_MEDIATEK" ], "series_id": "8fa9df09-90db-4e2a-ab91-53a40aeeae25" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7925_mac_write_txwi", "mt7925_usb_sdio_tx_prepare_skb" ], "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+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7TVQ3OTI1X0NPTU1PTiYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUVESUFURUsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjVfbWFjX3dyaXRlX3R4d2kmIzM0OywKICAgICYjMzQ7bXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNhbGN1bGF0aW9uIG9mIGhhcmR3YXJlIFRYIGRlc2NyaXB0b3IgYml0cyBpbiBgbXQ3OTI1X21hY193cml0ZV90eHdpKClgIGJ5IGF2b2lkaW5nIHRoZSB1c2Ugb2YgYEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeClgIHdoZW4gYGJhbmRfaWR4ID09IDB4ZmZgIChCQU5EX0FVVE8pLlxuXG5BbGwgbG9jYWwgdmFyaWFibGVzLCBpbmNsdWRpbmcgYGJhbmRfaWR4YCwgYXJlIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQsIGFuZCB0aGUgZnVuY3Rpb24gd3JpdGVzIGRlc2NyaXB0b3IgZmllbGRzIHRvIGEgcHJlLWFsbG9jYXRlZC9tYW5hZ2VkIGJ1ZmZlciBmb3IgaGFyZHdhcmUgdHJhbnNtaXNzaW9uLiBObyBtZW1vcnkgY29weWluZyB0byB1c2VyIHNwYWNlLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHVzYWdlLCBvciB1bmluaXRpYWxpemVkIHBhZGRpbmcvYnVmZmVyIGhhbmRsaW5nIGlzIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuIFRoZXJlZm9yZSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYmFuZF9pZHggaGFuZGxpbmcgaW4gbXQ3OTI1X21hY193cml0ZV90eHdpKCkgd2hlbiB3cml0aW5nIFRYIHdpcmVsZXNzIGluZm9ybWF0aW9uIGRlc2NyaXB0b3JzLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIChNVDc5MjVVKSB3aGljaCBhcmUgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgVVNCIGRldmljZSBlbXVsYXRpb24gKFVTQiBSYXcgR2FkZ2V0IC8gdnVzYikuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDM6MTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkYTViYjZiMDY5YWRlY2QyYTY5MzUxODJiNmE2NzJjZTU3NDJiYTBmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgMTEgMDM6MTg6MzAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuY1xuaW5kZXggMTAxZjU3MWIwMjdmMS4uM2I4MmM5ZGUyNmM1YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuY1xuQEAgLTc5OCw3ICYjNDM7Nzk4LDggQEAgbXQ3OTI1X21hY193cml0ZV90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXG4gXHR2YWwgPSBGSUVMRF9QUkVQKE1UX1RYRDFfV0xBTl9JRFgsIHdjaWQtXHUwMDNlaWR4KSB8XG4gXHQgICAgICBGSUVMRF9QUkVQKE1UX1RYRDFfT1dOX01BQywgb21hY19pZHgpO1xuIFxuLVx0aWYgKGJhbmRfaWR4KVxuJiM0MztcdC8qIDB4ZmYgbWVhbnMgQkFORF9BVVRPIHRvIHRoZSBmaXJtd2FyZSwgYW5kIFRHSUQgY2Fubm90IGVuY29kZSBpdCAqL1xuJiM0MztcdGlmIChiYW5kX2lkeCBcdTAwMjZcdTAwMjYgYmFuZF9pZHggIT0gMHhmZilcbiBcdFx0dmFsIHw9IEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeCk7XG4gXG4gXHR0eHdpWzFdID0gY3B1X3RvX2xlMzIodmFsKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoxODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5MjVVJiMzNDssCiAgICAmIzM0O01UNzkyNV9DT01NT04mIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX01FRElBVEVLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTI1X21hY193cml0ZV90eHdpJiMzNDssCiAgICAmIzM0O210NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBiYW5kX2lkeCBoYW5kbGluZyBpbiBtdDc5MjVfbWFjX3dyaXRlX3R4d2koKSB3aGVuIHdyaXRpbmcgVFggd2lyZWxlc3MgaW5mb3JtYXRpb24gZGVzY3JpcHRvcnMuIFRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGRldmljZXMgKE1UNzkyNVUpIHdoaWNoIGFyZSByZWFjaGFibGUgYW5kIGZ1enphYmxlIHZpYSBVU0IgZGV2aWNlIGVtdWxhdGlvbiAoVVNCIFJhdyBHYWRnZXQgLyB2dXNiKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGRhNWJiNmIwNjlhZGVjZDJhNjkzNTE4MmI2YTY3MmNlNTc0MmJhMGYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIFNlcCAxMSAwMzoxODozMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMKaW5kZXggMTAxZjU3MWIwMjdmMS4uM2I4MmM5ZGUyNmM1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMKQEAgLTc5OCw3ICYjNDM7Nzk4LDggQEAgbXQ3OTI1X21hY193cml0ZV90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksCiAJdmFsID0gRklFTERfUFJFUChNVF9UWEQxX1dMQU5fSURYLCB3Y2lkLSZndDtpZHgpIHwKIAkgICAgICBGSUVMRF9QUkVQKE1UX1RYRDFfT1dOX01BQywgb21hY19pZHgpOwogCi0JaWYgKGJhbmRfaWR4KQomIzQzOwkvKiAweGZmIG1lYW5zIEJBTkRfQVVUTyB0byB0aGUgZmlybXdhcmUsIGFuZCBUR0lEIGNhbm5vdCBlbmNvZGUgaXQgKi8KJiM0MzsJaWYgKGJhbmRfaWR4ICZhbXA7JmFtcDsgYmFuZF9pZHggIT0gMHhmZikKIAkJdmFsIHw9IEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeCk7CiAKIAl0eHdpWzFdID0gY3B1X3RvX2xlMzIodmFsKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDM6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk4OAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGFzc2VzcyB0aGlzIHBhdGNoJiMzOTtzIGZ1enppbmcgcG90ZW50aWFsLCBhbmQgd2hlcmUgdG8gZm9jdXMgb3VyIGVmZm9ydHMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZS4gSXQgbG9va3MgbGlrZSB3ZSBhcmUgZGVhbGluZyB3aXRoIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuY2AsIHNwZWNpZmljYWxseSB0aGUgYG10NzkyNV9tYWNfd3JpdGVfdHh3aWAgZnVuY3Rpb24uIFRoYXQmIzM5O3Mgb3VyIGZvY2FsIHBvaW50LgoKQmVmb3JlIEkganVtcCBpbnRvIGRpc3NlY3RpbmcgdGhlIGZ1bmN0aW9uIGl0c2VsZiwgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgdGhlICpjb250ZXh0KiBvZiBgbXQ3OTI1YC4gSXMgdGhpcyBhIFVTQiwgUENJLCBvciBTRElPIGRldmljZT8gQ2FuIHdlIGVhc2lseSBlbXVsYXRlIGl0LCBvciBpcyBpdCBtb3JlIG9mIGEgaGFyZHdhcmUtZGVwZW5kZW50IFBDSWUvVVNCIHNjZW5hcmlvPyBVbmRlcnN0YW5kaW5nIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGFuZCB0aGUgcG90ZW50aWFsIGZvciBlbXVsYXRpb24gaXMgY3JpdGljYWwuIENhbiB3ZSB1c2UgVVNCIGdhZGdldHMgdG8gc2ltdWxhdGUgYW4gYG10NzkyNWA/IEtub3dpbmcgdGhlIGNvbm5lY3Rpb24gdHlwZSAoVVNCLCBQQ0ksIFNESU8pIGRpY3RhdGVzIHNvIG1hbnkgdGhpbmdzIGFib3V0IGhvdyB3ZSYjMzk7ZCBhcHByb2FjaCBmdXp6aW5nLiBJdCBpbmZvcm1zIHRoZSBzZXR1cCBhbmQgbWFrZXMgdGhlIGZ1enppbmcgYXBwcm9hY2ggdmVyeSBkaWZmZXJlbnQuIFRoaXMgaXMgdGhlIGZpcnN0IHF1ZXN0aW9uIEkgbmVlZCBhbnN3ZXJlZCBiZWZvcmUgSSBwcm9jZWVkIHdpdGggYW55IGRlZXBlciBhbmFseXNpcyBvZiB0aGUgY29kZS4gTGV0JiMzOTtzIHJlc2VhcmNoIHdoYXQgYG10NzkyNWAgaXMgaW4gcmVhbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA0MDkzIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9NTA9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzo1MTpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU9NTE9b2JqLSQoQ09ORklHX01UNzk5NkUpICYjNDM7PSBtdDc5OTYvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjUyOm9iai0kKENPTkZJR19NVDc5MjVfQ09NTU9OKSAmIzQzOz0gbXQ3OTI1L1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0xODA9c3RhdGljIGlubGluZSBib29sIGlzX2Nvbm5hYzMoc3RydWN0IG10NzZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTE4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoxODU6c3RhdGljIGlubGluZSBib29sIGlzX210NzkyNShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0xODYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM9NTQ9aW50IG10NzZfY29ubmFjX21jdV9pbml0X2Rvd25sb2FkKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgYWRkciwgdTMyIGxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jLTY5LVx0ICAgIChpc19jb25uYWMyKGRldikgXHUwMDI2XHUwMDI2IGFkZHIgPT0gMHg5MDAwMDApIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jOjcwOlx0ICAgICgoaXNfbXQ3OTI1KGRldikgfHwgaXNfbXQ3OTI3KGRldikpIFx1MDAyNlx1MDAyNiAoYWRkciA9PSAweDkwMDAwMCB8fCBhZGRyID09IDB4ZTAwMDI4MDApKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYy03MS1cdCAgICAoaXNfbXQ3OTI4KGRldikgXHUwMDI2XHUwMDI2IChhZGRyID09IDB4OTAwMDAwIHx8IGFkZHIgPT0gMHhlMDAwMjAwMCkpIHx8XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGUtMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX01UNzkyNV9DT01NT04pICYjNDM7PSBtdDc5MjUtY29tbW9uLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX01UNzkyNUUpICYjNDM7PSBtdDc5MjVlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX01UNzkyNVUpICYjNDM7PSBtdDc5MjV1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo3Om10NzkyNS1jb21tb24teSA6PSBtYWMubyBtY3UubyByZWdkLm8gbWFpbi5vIGluaXQubyBkZWJ1Z2ZzLm8gbmFuLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjg6bXQ3OTI1LWNvbW1vbi0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6OTptdDc5MjVlLXkgOj0gcGNpLm8gcGNpX21hYy5vIHBjaV9tY3Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6MTA6bXQ3OTI1dS15IDo9IHVzYi5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NDojaW5jbHVkZSBcJiMzNDttdDc5MjUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTUtI2luY2x1ZGUgXCYjMzQ7bWN1LmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9Nz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6ODptdDc5MjVfcmVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMy1cdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTQ6XHRtdDc5MjVfbWN1X3JlZ3ZhbChkZXYsIGRldi1cdTAwM2VtdDc2LmRlYnVnZnNfcmVnLCBcdTAwMjZyZWd2YWwsIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1LVx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjA9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjIxOm10NzkyNV9yZWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjctXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4Olx0cmV0ID0gbXQ3OTI1X21jdV9yZWd2YWwoZGV2LCBkZXYtXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXHUwMDI2cmVndmFsLCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjktXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozNjpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZWd2YWwsIG10NzkyNV9yZWdfZ2V0LCBtdDc5MjVfcmVnX3NldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNy1cdFx0XHQgXCYjMzQ7MHglMDhsbHhcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTM4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozOTptdDc5MjVfZndfZGVidWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00NS1cdGRldi1cdTAwM2Vmd19kZWJ1ZyA9ICh1OCl2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NDY6XHRtdDc5MjVfbWN1X2Z3X2xvZ18yX2hvc3QoZGV2LCBkZXYtXHUwMDNlZndfZGVidWcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQ3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz01Mz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NTQ6bXQ3OTI1X2Z3X2RlYnVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy01NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjYzOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnLCBtdDc5MjVfZndfZGVidWdfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjY0Olx0XHRcdCBtdDc5MjVfZndfZGVidWdfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy02NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9Njg9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo2OTptdDc5MjVfc2VxX3B1dHNfYXJyYXkoc3RydWN0IHNlcV9maWxlICpmaWxlLCBjb25zdCBjaGFyICpzdHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNzAtXHRcdCAgICAgIHM4IHZhbFtdWzJdLCBpbnQgbGVuLCB1OCBiYW5kX2lkeClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6ODM6I2RlZmluZSBtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkocHJlZml4LCByYXRlLCBpZHgpXHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTg0LSh7XHRcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjg1Olx0bXQ3OTI1X3NlcV9wdXRzX2FycmF5KHMsICNwcmVmaXggXCYjMzQ7ICh0bWFjKVwmIzM0OyxcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtODYtXHRcdFx0ICAgICAgdHhwd3ItXHUwMDNlcmF0ZSxcdFx0XFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9OTE9c3RhdGljIGlubGluZSB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6OTI6bXQ3OTI1X2VodF90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBtdDc5MjVfdHhwd3IgKnR4cHdyLCB1OCBiYW5kX2lkeClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy05My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTk3LVx0XHQgICBcJiMzNDttY3MxMlwmIzM0OywgXCYjMzQ7bWNzMTNcJiMzNDssIFwmIzM0O21jczE0XCYjMzQ7LCBcJiMzNDttY3MxNVwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6OTg6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjYsIGVodDI2LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6OTk6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUNTIsIGVodDUyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTAwOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDEwNiwgZWh0MTA2LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTAxOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI0MiwgZWh0MjQyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTAyOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDQ4NCwgZWh0NDg0LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTYsIGVodDk5NiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZ4MiwgZWh0OTk2eDIsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDY6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDQsIGVodDk5Nng0LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTA3Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2XzUyLCBlaHQyNl81MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwODpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQyNl8xMDYsIGVodDI2XzEwNiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwOTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ0ODRfMjQyLCBlaHQ0ODRfMjQyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTEwOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nl80ODQsIGVodDk5Nl80ODQsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTE6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2XzQ4NF8yNDIsIGVodDk5Nl80ODRfMjQyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTEyOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngyXzQ4NCwgZWh0OTk2eDJfNDg0LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTEzOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngzLCBlaHQ5OTZ4MywgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExNDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZ4M180ODQsIGVodDk5NngzXzQ4NCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTExNS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTExNz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTE4Om10NzkyNV90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTE5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMjAtXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKHMtXHUwMDNlcHJpdmF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTIxOlx0c3RydWN0IG10NzkyNV90eHB3ciAqdHhwd3IgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEyMi1cdHU4IGJhbmRfaWR4ID0gZGV2LVx1MDAzZW1waHkuYmFuZF9pZHg7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEzMC1cdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTMxOlx0cmV0ID0gbXQ3OTI1X2dldF90eHB3cl9pbmZvKGRldiwgYmFuZF9pZHgsIHR4cHdyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMzItXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMzgtXHRcdCAgIFwmIzM0OyBcJiMzNDssIFwmIzM0OzFtXCYjMzQ7LCBcJiMzNDsybVwmIzM0OywgXCYjMzQ7NW1cJiMzNDssIFwmIzM0OzExbVwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTM5Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KENDSywgY2NrLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNDMtXHRcdCAgIFwmIzM0OzQ4bVwmIzM0OywgXCYjMzQ7NTRtXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNDQ6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoT0ZETSwgb2ZkbSwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE0NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQ4LVx0XHQgICBcJiMzNDttY3M2XCYjMzQ7LCBcJiMzNDttY3M3XCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNDk6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSFQyMCwgaHQyMCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTUzLVx0XHQgICBcJiMzNDttY3M2XCYjMzQ7LCBcJiMzNDttY3M3XCYjMzQ7LCBcJiMzNDttY3MzMlwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTU0Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhUNDAsIGh0NDAsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1OC1cdFx0ICAgXCYjMzQ7bWNzNlwmIzM0OywgXCYjMzQ7bWNzN1wmIzM0OywgXCYjMzQ7bWNzOFwmIzM0OywgXCYjMzQ7bWNzOVwmIzM0OywgXCYjMzQ7bWNzMTBcJiMzNDssIFwmIzM0O21jczExXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNTk6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUMjAsIHZodDIwLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTYwOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDQwLCB2aHQ0MCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjI6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUODAsIHZodDgwLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTYzOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDE2MCwgdmh0MTYwLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2NTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTI2LCBoZTI2LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTY2Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFNTIsIGhlNTIsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjc6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUxMDYsIGhlMTA2LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTY4Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMjQyLCBoZTI0MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2OTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTQ4NCwgaGU0ODQsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTcxOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFOTk2LCBoZTk5NiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE3MjpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTk5NngyLCBoZTk5NngyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE3NDpcdG10NzkyNV9laHRfdHhwd3IocywgdHhwd3IsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNzUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTE4MT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTgyOm10NzkyNV9wbV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xODMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMDUtXHRwbS1cdTAwM2VlbmFibGVfdXNlciA9IHZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMDY6XHRtdDc5MjVfc2V0X3J1bnRpbWVfcG0oZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMDctXHRtdDc2X2Nvbm5hY19wb3dlcl9zYXZlX3NjaGVkKFx1MDAyNmRldi1cdTAwM2VtcGh5LCBwbSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTIxND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjE1Om10NzkyNV9wbV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjE2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjIyNDpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbSwgbXQ3OTI1X3BtX2dldCwgbXQ3OTI1X3BtX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTIyNj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjI3Om10NzkyNV9kZWVwX3NsZWVwX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyOC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI0Mi1cdHBtLVx1MDAzZWRzX2VuYWJsZSA9IGVuYWJsZSBcdTAwMjZcdTAwMjYgIW1vbml0b3I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjQzOlx0bXQ3OTI1X21jdV9zZXRfZGVlcF9zbGVlcChkZXYsIHBtLVx1MDAzZWRzX2VuYWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjQ0LW91dDpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjUwPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNTE6bXQ3OTI1X2RlZXBfc2xlZXBfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI1Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNjA6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZHMsIG10NzkyNV9kZWVwX3NsZWVwX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNjE6XHRcdFx0IG10NzkyNV9kZWVwX3NsZWVwX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTI2Mz1ERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbV9pZGxlX3RpbWVvdXQsIG10NzkyeF9wbV9pZGxlX3RpbWVvdXRfZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjY2OnN0YXRpYyBpbnQgbXQ3OTI1X2NoaXBfcmVzZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNjcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNzgtXHRcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjc5Olx0XHRyZXQgPSBtdDc5MjVfbWN1X2NoaXBfY29uZmlnKGRldiwgXCYjMzQ7YXNzZXJ0XCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yODAtXHRcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVzZXQsIE5VTEwsIG10NzkyNV9jaGlwX3Jlc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjg5OmludCBtdDc5MjVfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjkwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzA0LVx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7dHhwb3dlcl9za3VcJiMzNDssIGRpcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozMDU6XHRcdFx0XHQgICAgbXQ3OTI1X3R4cHdyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zMDYtXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3R4X3N0YXRzXCYjMzQ7LCAwNDAwLCBkaXIsIGRldiwgXHUwMDI2bXQ3OTJ4X3R4X3N0YXRzX2ZvcHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy04LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2Zpcm13YXJlLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo5OiNpbmNsdWRlIFwmIzM0O210NzkyNS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTAtI2luY2x1ZGUgXCYjMzQ7cmVnZC5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE0OnN0YXRpYyBzc2l6ZV90IG10NzkyNV90aGVybWFsX3RlbXBfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTUtXHRcdFx0XHRcdHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNC1cdFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUobWRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjU6XHRcdHRlbXBlcmF0dXJlID0gbXQ3OTI1X21jdV9nZXRfdGVtcGVyYXR1cmUocGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNi1cdFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UobWRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTM2LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzozNzpzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSX1JPKHRlbXAxX2lucHV0LCBtdDc5MjVfdGhlcm1hbF90ZW1wLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0zOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzozOTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqbXQ3OTI1X2h3bW9uX2F0dHJzW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDAtXHRcdTAwMjZzZW5zb3JfZGV2X2F0dHJfdGVtcDFfaW5wdXQuZGV2X2F0dHIuYXR0cixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDItfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo0MzpBVFRSSUJVVEVfR1JPVVBTKG10NzkyNV9od21vbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NDU6c3RhdGljIGludCBtdDc5MjVfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy01My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo1NDpcdG5hbWUgPSBkZXZtX2thc3ByaW50ZihcdTAwMjZ3aXBoeS1cdTAwM2VkZXYsIEdGUF9LRVJORUwsIFwmIzM0O210NzkyNV8lc1wmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy01NS1cdFx0XHQgICAgICB3aXBoeV9uYW1lKHdpcGh5KSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTU5LVx0aHdtb24gPSBkZXZtX2h3bW9uX2RldmljZV9yZWdpc3Rlcl93aXRoX2dyb3VwcyhcdTAwMjZ3aXBoeS1cdTAwM2VkZXYsIG5hbWUsIHBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo2MDpcdFx0XHRcdFx0XHQgICAgICAgbXQ3OTI1X2h3bW9uX2dyb3Vwcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNjEtXHRyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGh3bW9uKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NjQ6c3RhdGljIHZvaWQgbXQ3OTI1X21hY19pbml0X2Jhc2ljX3JhdGVzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNjUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy03My1cdFx0ICAgICAgIEZJRUxEX1BSRVAoTVRfVFhfUkFURV9JRFgsIHJhdGUgXHUwMDI2IEdFTk1BU0soNywgMCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjc0Olx0XHRtdDc5MjVfbWFjX3NldF9maXhlZF9yYXRlX3RhYmxlKGRldiwgaWR4LCByYXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy03NS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6Nzg6aW50IG10NzkyNV9tYWNfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTc5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtODYtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNVDc5MnhfV1RCTF9TSVpFOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo4NzpcdFx0bXQ3OTI1X21hY193dGJsX3VwZGF0ZShkZXYsIGksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtODgtXHRcdFx0XHQgICAgICAgTVRfV1RCTF9VUERBVEVfQURNX0NPVU5UX0NMRUFSKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6OTI6XHRtdDc5MjVfbWFjX2luaXRfYmFzaWNfcmF0ZXMoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy05My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjk4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tYWNfaW5pdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTAwOnN0YXRpYyBpbnQgX19tdDc5MjVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEwMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTExMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMTI6XHRyZXQgPSBtdDc5MjVfbWN1X3NldF9lZXByb20oZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMTMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTE2Olx0cmV0ID0gbXQ3OTI1X21hY19pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTE3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTIwLVx0aWYgKGlzX210NzkyNyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMjE6XHRcdHJldCA9IG10NzkyNV9tY3Vfc2V0X2RiZGMoXHUwMDI2ZGV2LVx1MDAzZW1waHksIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEyMi1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTMzOnN0YXRpYyBpbnQgbXQ3OTI1X2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTQ1Olx0XHRyZXQgPSBfX210NzkyNV9pbml0X2hhcmR3YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTQ2LVx0XHRpZiAoIXJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE2MzpzdGF0aWMgaW50IG10NzkyNV9pbml0X25hbl9jYXAoc3RydWN0IG10NzZfZGV2ICptZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE2NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE4OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxOTA6c3RhdGljIHZvaWQgbXQ3OTI1X2luaXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTkxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE5NjpcdHJldCA9IG10NzkyNV9pbml0X2hhcmR3YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTk3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjAwLVx0bXQ3Nl9zZXRfc3RyZWFtX2NhcHMoXHUwMDI2ZGV2LVx1MDAzZW1waHksIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIwMTpcdG10NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzKFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwMi1cdG10NzkyeF9jb25maWdfbWFjX2FkZHJfbGlzdChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMDQ6XHRyZXQgPSBtdDc5MjVfaW5pdF9tbG9fY2FwcyhcdTAwMjZkZXYtXHUwMDNlcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMDUtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMTA6XHRkZXYtXHUwMDNlbXQ3Ni5pbml0X3dpcGh5ID0gbXQ3OTI1X2luaXRfbmFuX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIxOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMTk6XHRyZXQgPSBtdDc5MjVfaW5pdF9kZWJ1Z2ZzKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjIwLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjI1Olx0cmV0ID0gbXQ3OTI1X3RoZXJtYWxfaW5pdChcdTAwMjZkZXYtXHUwMDNlcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMjYtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMzE6XHRyZXQgPSBtdDc5MjVfbWN1X3NldF90aGVybWFsX3Byb3RlY3QoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMzItXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNDA6XHRtdDc5MjVfbWN1X3NldF9kZWVwX3NsZWVwKGRldiwgZGV2LVx1MDAzZXBtLmRzX2VuYWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjQxLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjQzOmludCBtdDc5MjVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjQ0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjUzLVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBtLnBzX3dvcmssIG10NzkyeF9wbV9wb3dlcl9zYXZlX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI1NDpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2VtbG9fcG1fd29yaywgbXQ3OTI1X21sb19wbV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNTUtXHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBtLndha2Vfd29yaywgbXQ3OTJ4X3BtX3dha2Vfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI2MS1cdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2VtcGh5Lm1hY193b3JrLCBtdDc5MnhfbWFjX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI2MjpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2VwaHkuc2Nhbl93b3JrLCBtdDc5MjVfc2Nhbl93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNjM6XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZkZXYtXHUwMDNlY29yZWR1bXAud29yaywgbXQ3OTI1X2NvcmVkdW1wX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI2NC0jaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNjU6XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZWlwdjZfbnNfd29yaywgbXQ3OTI1X3NldF9pcHY2X25zX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI2Ni1cdHNrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2ZGV2LVx1MDAzZWlwdjZfbnNfbGlzdCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNzE6XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXJlc2V0X3dvcmssIG10NzkyNV9tYWNfcmVzZXRfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjcyOlx0SU5JVF9XT1JLKFx1MDAyNmRldi1cdTAwM2Vpbml0X3dvcmssIG10NzkyNV9pbml0X3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNzQ6XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBoeS5yb2Nfd29yaywgbXQ3OTI1X3JvY193b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNzUtXHR0aW1lcl9zZXR1cChcdTAwMjZkZXYtXHUwMDNlcGh5LnJvY190aW1lciwgbXQ3OTJ4X3JvY190aW1lciwgMCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTMwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzozMDI6XHRody1cdTAwM2V3aXBoeS1cdTAwM2VyZWdfbm90aWZpZXIgPSBtdDc5MjVfcmVnZF9ub3RpZmllcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0zMDMtXHRkZXYtXHUwMDNlbXBoeS5zYmFuZF8yZy5zYmFuZC5odF9jYXAuY2FwIHw9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTMyOS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MzMwOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9yZWdpc3Rlcl9kZXZpY2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTYtI2luY2x1ZGUgXHUwMDNjbGludXgvdGltZWtlZXBpbmcuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NzojaW5jbHVkZSBcJiMzNDttdDc5MjUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtOC0jaW5jbHVkZSBcJiMzNDsuLi9kbWEuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTM6Ym9vbCBtdDc5MjVfbWFjX3d0YmxfdXBkYXRlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGludCBpZHgsIHUzMiBtYXNrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6Mjk6c3RhdGljIHZvaWQgbXQ3OTI1X21hY19zdGFfcG9sbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMzAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTY1LVx0XHRpZHggPSBtbGluay1cdTAwM2V3Y2lkLmlkeDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjY2Olx0XHRhZGRyID0gbXQ3OTI1X21hY193dGJsX2xtYWNfYWRkcihkZXYsIGlkeCwgTVRfV1RCTF9BQzBfQ1RUX09GRlNFVCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy02Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04NC1cdFx0aWYgKGNsZWFyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4NTpcdFx0XHRtdDc5MjVfbWFjX3d0YmxfdXBkYXRlKGRldiwgaWR4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODYtXHRcdFx0XHRcdCAgICAgICBNVF9XVEJMX1VQREFURV9BRE1fQ09VTlRfQ0xFQVIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEzMDpcdFx0YWRkciA9IG10NzkyNV9tYWNfd3RibF9sbWFjX2FkZHIoZGV2LCBpZHgsIDYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTMxLVx0XHR2YWwgPSBtdDc2X3JyKGRldiwgYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzItXHRcdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBSQVRFX0lORk9fRkxBR1NfRUhUX01DUykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTMzOlx0XHRcdGFkZHIgPSBtdDc5MjVfbWFjX3d0YmxfbG1hY19hZGRyKGRldiwgaWR4LCA1KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEzNC1cdFx0XHR2YWwgPSBtdDc2X3JyKGRldiwgYWRkcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ4LVx0XHQvKiBnZXQgc2lnbmFsIHN0cmVuZ3RoIG9mIHJlc3AgZnJhbWVzIChDVFMvQkEvQUNLKSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ5Olx0XHRhZGRyID0gbXQ3OTI1X21hY193dGJsX2xtYWNfYWRkcihkZXYsIGlkeCwgMzQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTUwLVx0XHR2YWwgPSBtdDc2X3JyKGRldiwgYWRkcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTY0OnZvaWQgbXQ3OTI1X21hY19zZXRfZml4ZWRfcmF0ZV90YWJsZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTY1LVx0XHRcdFx0ICAgICB1OCB0YmxfaWR4LCB1MTYgcmF0ZV9pZHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTgyLS8qIFRoZSBIVyBkb2VzIG5vdCB0cmFuc2xhdGUgdGhlIG1hYyBoZWFkZXIgdG8gODAyLjMgZm9yIG1lc2ggcG9pbnQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE4MzpzdGF0aWMgaW50IG10NzkyNV9yZXZlcnNlX2ZyYWcwX2hkcl90cmFucyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgaGRyX2dhcClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE4NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MjYyPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjI2MzptdDc5MjVfbWFjX2ZpbGxfcnhfcmF0ZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMjY0LVx0XHRcdHN0cnVjdCBtdDc2X3J4X3N0YXR1cyAqc3RhdHVzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTM3Mj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzozNzM6bXQ3OTI1X21hY19maWxsX3J4KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0zNzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTU1Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjU1MzpcdFx0cmV0ID0gbXQ3OTI1X21hY19maWxsX3J4X3JhdGUoZGV2LCBzdGF0dXMsIHNiYW5kLCByeHYsIFx1MDAyNm1vZGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNTU0LVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTU2Ni1cdGlmIChoZHJfdHJhbnMgXHUwMDI2XHUwMDI2IGllZWU4MDIxMV9oYXNfbW9yZWZyYWdzKGZjKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NTY3Olx0XHRpZiAobXQ3OTI1X3JldmVyc2VfZnJhZzBfaGRyX3RyYW5zKHNrYiwgaGRyX2dhcCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy01NjgtXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9NjQwPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo2NDE6bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjMoX19sZTMyICp0eHdpLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNjQyLVx0XHRcdCAgIHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9Njc1PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo2NzY6bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjExKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy02NzctXHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9NzQ2PXZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjc0NzptdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTc0OC1cdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04NDAtXHRpZiAoaXNfODAyMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg0MTpcdFx0bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjModHh3aSwgc2tiLCB3Y2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg0Mi1cdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg0MzpcdFx0bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjExKGRldiwgdHh3aSwgc2tiLCBrZXkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODQ0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg2Ny19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4Njg6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21hY193cml0ZV90eHdpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg2OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg3MDpzdGF0aWMgdm9pZCBtdDc5MjVfdHhfY2hlY2tfYWdncihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODcxLVx0XHRcdFx0IHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9OTI0PXN0YXRpYyBib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo5MjU6bXQ3OTI1X21hY19hZGRfdHhzX3NrYihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtOTI2LVx0XHQgICAgICAgaW50IHBpZCwgX19sZTMyICp0eHNfZGF0YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xMTkzPXZvaWQgbXQ3OTI4X21hY19hZGRfdHhzX21zZyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMjMwOnZvaWQgbXQ3OTI1X21hY19hZGRfdHhzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjMxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTI2NDpcdG10NzkyNV9tYWNfYWRkX3R4c19za2IoZGV2LCB3Y2lkLCBwaWQsIHR4c19kYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyNjUtXHRpZiAoIXdjaWQtXHUwMDNlc3RhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMjc0OnZvaWQgbXQ3OTI1X3R4d2lfZnJlZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl90eHdpX2NhY2hlICp0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTI3NS1cdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjg4LVx0XHRpZiAobGlrZWx5KHQtXHUwMDNlc2tiLVx1MDAzZXByb3RvY29sICE9IGNwdV90b19iZTE2KEVUSF9QX1BBRSkpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTI4OTpcdFx0XHRtdDc5MjVfdHhfY2hlY2tfYWdncihzdGEsIHQtXHUwMDNlc2tiLCB3Y2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyOTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTMwMC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMzAxOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV90eHdpX2ZyZWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTMwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTEzMDM9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEzMDQ6bXQ3OTI1X21hY190eF9mcmVlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEsIGludCBsZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzA1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTM3MTpcdFx0XHRtdDc5MjVfdHh3aV9mcmVlKGRldiwgdHh3aSwgc3RhLCB3Y2lkLCBcdTAwMjZmcmVlX2xpc3QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTM3Mi1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEzNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMzc1Olx0bXQ3OTI1X21hY19zdGFfcG9sbChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTM3Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTM4ODpib29sIG10NzkyNV9yeF9jaGVjayhzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKmRhdGEsIGludCBsZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzg5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDA3LVx0XHRcdHJldHVybiBmYWxzZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0MDg6XHRcdG10NzkyNV9tYWNfdHhfZnJlZShkZXYsIGRhdGEsIGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDA5LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQxMS1cdFx0Zm9yIChyeGQgJiM0Mzs9IDQ7IHJ4ZCAmIzQzOyAxMiBcdTAwM2M9IGVuZDsgcnhkICYjNDM7PSAxMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0MTI6XHRcdFx0bXQ3OTI1X21hY19hZGRfdHhzKGRldiwgcnhkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MTMtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDE3LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0MTg6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3J4X2NoZWNrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDIwOnZvaWQgbXQ3OTI1X3F1ZXVlX3J4X3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MjEtXHRcdFx0IHN0cnVjdCBza19idWZmICpza2IsIHUzMiAqaW5mbylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDQ3LVx0XHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDQ4Olx0XHRtdDc5MjVfbWFjX3R4X2ZyZWUoZGV2LCBza2ItXHUwMDNlZGF0YSwgc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDQ5LVx0XHRuYXBpX2NvbnN1bWVfc2tiKHNrYiwgMSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ1MS1cdGNhc2UgUEtUX1RZUEVfUlhfRVZFTlQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDUyOlx0XHRtdDc5MjVfbWN1X3J4X2V2ZW50KGRldiwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NTMtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NTUtXHRcdGZvciAocnhkICYjNDM7PSAyOyByeGQgJiM0MzsgOCBcdTAwM2M9IGVuZDsgcnhkICYjNDM7PSA4KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ1NjpcdFx0XHRtdDc5MjVfbWFjX2FkZF90eHMoZGV2LCByeGQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ1Ny1cdFx0ZGV2X2tmcmVlX3NrYihza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NjAtXHRjYXNlIFBLVF9UWVBFX05PUk1BTDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0NjE6XHRcdGlmICghbXQ3OTI1X21hY19maWxsX3J4KGRldiwgc2tiKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ2Mi1cdFx0XHRtdDc2X3J4KFx1MDAyNmRldi1cdTAwM2VtdDc2LCBxLCBza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NzAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ3MTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfcXVldWVfcnhfc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNDczPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDc0Om10NzkyNV92aWZfY29ubmVjdF9pdGVyKHZvaWQgKnByaXYsIHU4ICptYWMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDc1LVx0XHRcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDM2MQoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNvbnNpZGVyaW5nIFVTQiBGdXp6aW5nIGZvciB0aGUgTVQ3OTI1KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGBtdDc5MjVgIGRyaXZlciBhbmQgaXRzIFVTQiBzdXBwb3J0IOKAkyBzcGVjaWZpY2FsbHksIHRoYXQgYENPTkZJR19NVDc5MjVVYCBvcHRpb24uIFRoZSBxdWVzdGlvbiB0aGF0IHBvcHMgdXAsIG9mIGNvdXJzZSwgaXMgd2hldGhlciB3ZSBjYW4gbGV2ZXJhZ2UgdGhhdCBVU0IgZnVuY3Rpb25hbGl0eSBmb3IgZnV6emluZy4gQ2FuIHdlIGdldCBhdCBgbXQ3OTI1dWAgdXNpbmcgVVNCIGVtdWxhdGlvbiwgc29tZXRoaW5nIGxpa2Ugc3l6a2FsbGVyJiMzOTtzIFVTQiByYXcgZ2FkZ2V0IGZ1bmN0aW9uYWxpdHkgb3IgYSBicm9hZGVyIFVTQiBlbXVsYXRpb24gc2V0dXA/IFRoZSBrZXkgaGVyZSBpcyB0byBkZXRlcm1pbmUgaG93IHRoZSBgbXQ3OTI1dWAgbW9kdWxlIGlzIHByb2JlZCBhbmQgcmVnaXN0ZXJlZC4gVW5kZXJzdGFuZGluZyB0aGF0IHByb2Nlc3MgaXMgZ29pbmcgdG8gYmUgY3JpdGljYWwgZm9yIGNyYWZ0aW5nIGVmZmVjdGl2ZSBmdXp6aW5nIHN0cmF0ZWdpZXMuIFdlIG5lZWQgdG8ga25vdyBob3cgaXQgaW5pdGlhbGl6ZXMsIHdoYXQgZW50cnkgcG9pbnRzIGl0IHVzZXMsIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIFVTQiBzdWJzeXN0ZW0gdG8gZWZmZWN0aXZlbHkgY3JhZnQgYW5kIGluamVjdCBvdXIgZnV6emluZyBwYXlsb2Fkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHQvKiBDb3B5cmlnaHQgKEMpIDIwMjMgTWVkaWFUZWsgSW5jLiAqL1xuICAgMzpcdFxuICAgNDpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gICA1Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgIDY6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC91c2IuaFx1MDAzZVxuICAgNzpcdFxuICAgODpcdCNpbmNsdWRlIFwmIzM0O210NzkyNS5oXCYjMzQ7XG4gICA5Olx0I2luY2x1ZGUgXCYjMzQ7bWN1LmhcJiMzNDtcbiAgMTA6XHQjaW5jbHVkZSBcJiMzNDttYWMuaFwmIzM0O1xuICAxMTpcdFxuICAxMjpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBtdDc5MjV1X2RldmljZV90YWJsZVtdID0ge1xuICAxMzpcdFx0eyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDBlOGQsIDB4NjYzOSwgMHhmZiwgMHhmZiwgMHhmZiksXG4gIDE0Olx0XHRcdC5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdClNVDc5MjVfRklSTVdBUkVfV00gfSxcbiAgMTU6XHRcdHsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oMHgwZThkLCAweDc5MjUsIDB4ZmYsIDB4ZmYsIDB4ZmYpLFxuICAxNjpcdFx0XHQuZHJpdmVyX2luZm8gPSAoa2VybmVsX3Vsb25nX3QpTVQ3OTI1X0ZJUk1XQVJFX1dNIH0sXG4gIDE3Olx0XHQvKiBOZXRnZWFyLCBJbmMuIEE4NTAwICovXG4gIDE4Olx0XHR7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MDg0NiwgMHg5MDUwLCAweGZmLCAweGZmLCAweGZmKSxcbiAgMTk6XHRcdFx0LmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KU1UNzkyNV9GSVJNV0FSRV9XTSB9LFxuICAyMDpcdFx0LyogTmV0Z2VhciwgSW5jLiBBOTAwMCAqL1xuICAyMTpcdFx0eyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDA4NDYsIDB4OTA3MiwgMHhmZiwgMHhmZiwgMHhmZiksXG4gIDIyOlx0XHRcdC5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdClNVDc5MjVfRklSTVdBUkVfV00gfSxcbiAgMjM6XHRcdHsgfSxcbiAgMjQ6XHR9O1xuICAyNTpcdFxuICAyNjpcdHN0YXRpYyBpbnRcbiAgMjc6XHRtdDc5MjV1X21jdV9zZW5kX21lc3NhZ2Uoc3RydWN0IG10NzZfZGV2ICptZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuICAyODpcdFx0XHRcdCBpbnQgY21kLCBpbnQgKnNlcSlcbiAgMjk6XHR7XG4gIDMwOlx0XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MnhfZGV2LCBtdDc2KTtcbiAgMzE6XHRcdHUzMiBwYWQsIGVwO1xuICAzMjpcdFx0aW50IHJldDtcbiAgMzM6XHRcbiAgMzQ6XHRcdHJldCA9IG10NzkyNV9tY3VfZmlsbF9tZXNzYWdlKG1kZXYsIHNrYiwgY21kLCBzZXEpO1xuICAzNTpcdFx0aWYgKHJldClcbiAgMzY6XHRcdFx0cmV0dXJuIHJldDtcbiAgMzc6XHRcbiAgMzg6XHRcdG1kZXYtXHUwMDNlbWN1LnRpbWVvdXQgPSAzICogSFo7XG4gIDM5Olx0XG4gIDQwOlx0XHRpZiAoY21kICE9IE1DVV9DTUQoRldfU0NBVFRFUikpXG4gIDQxOlx0XHRcdGVwID0gTVRfRVBfT1VUX0lOQkFORF9DTUQ7XG4gIDQyOlx0XHRlbHNlXG4gIDQzOlx0XHRcdGVwID0gTVRfRVBfT1VUX0FDX0JFO1xuICA0NDpcdFxuICA0NTpcdFx0bXQ3OTJ4X3NrYl9hZGRfdXNiX3NkaW9faGRyKGRldiwgc2tiLCAwKTtcbiAgNDY6XHRcdHBhZCA9IHJvdW5kX3VwKHNrYi1cdTAwM2VsZW4sIDQpICYjNDM7IDQgLSBza2ItXHUwMDNlbGVuO1xuICA0NzpcdFx0X19za2JfcHV0X3plcm8oc2tiLCBwYWQpO1xuICA0ODpcdFxuICA0OTpcdFx0cmV0ID0gbXQ3NnVfYnVsa19tc2coXHUwMDI2ZGV2LVx1MDAzZW10NzYsIHNrYi1cdTAwM2VkYXRhLCBza2ItXHUwMDNlbGVuLCBOVUxMLFxuICA1MDpcdFx0XHRcdCAgICAgMTAwMCwgZXApO1xuICA1MTpcdFx0ZGV2X2tmcmVlX3NrYihza2IpO1xuICA1MjpcdFxuICA1MzpcdFx0cmV0dXJuIHJldDtcbiAgNTQ6XHR9XG4gIDU1Olx0XG4gIDU2Olx0c3RhdGljIGludCBtdDc5MjV1X21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gIDU3Olx0e1xuICA1ODpcdFx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc2X21jdV9vcHMgbWN1X29wcyA9IHtcbiAgNTk6XHRcdFx0LmhlYWRyb29tID0gTVRfU0RJT19IRFJfU0laRSAmIzQzO1xuICA2MDpcdFx0XHRcdCAgICBzaXplb2Yoc3RydWN0IG10NzZfY29ubmFjMl9tY3VfdHhkKSxcbiAgNjE6XHRcdFx0LnRhaWxyb29tID0gTVRfVVNCX1RBSUxfU0laRSxcbiAgNjI6XHRcdFx0Lm1jdV9za2Jfc2VuZF9tc2cgPSBtdDc5MjV1X21jdV9zZW5kX21lc3NhZ2UsXG4gIDYzOlx0XHRcdC5tY3VfcGFyc2VfcmVzcG9uc2UgPSBtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlLFxuICA2NDpcdFx0fTtcbiAgNjU6XHRcdGludCByZXQ7XG4gIDY2Olx0XG4gIDY3Olx0XHRkZXYtXHUwMDNlbXQ3Ni5tY3Vfb3BzID0gXHUwMDI2bWN1X29wcztcbiAgNjg6XHRcbiAgNjk6XHRcdG10NzZfc2V0KGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XG4gIDcwOlx0XHRyZXQgPSBtdDc5MjVfcnVuX2Zpcm13YXJlKGRldik7XG4gIDcxOlx0XHRpZiAocmV0KVxuICA3MjpcdFx0XHRyZXR1cm4gcmV0O1xuICA3MzpcdFxuICA3NDpcdFx0c2V0X2JpdChNVDc2X1NUQVRFX01DVV9SVU5OSU5HLCBcdTAwMjZkZXYtXHUwMDNlbXBoeS5zdGF0ZSk7XG4gIDc1Olx0XHRtdDc2X2NsZWFyKGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XG4gIDc2Olx0XG4gIDc3Olx0XHRyZXR1cm4gMDtcbiAgNzg6XHR9XG4gIDc5Olx0XG4gIDgwOlx0c3RhdGljIGludCBtdDc5MjV1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuICA4MTpcdHtcbiAgODI6XHRcdGludCBlcnI7XG4gIDgzOlx0XG4gIDg0Olx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGV2LVx1MDAzZW10NzYuYnVzX2h1bmcpKVxuICA4NTpcdFx0XHRyZXR1cm4gMDtcbiAgODY6XHRcbiAgODc6XHRcdG10NzkyeHVfcmVzZXRfb25fYnVzX2Vycm9yKGRldik7XG4gIDg4Olx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGV2LVx1MDAzZW10NzYuYnVzX2h1bmcpKVxuICA4OTpcdFx0XHRyZXR1cm4gMDtcbiAgOTA6XHRcbiAgOTE6XHRcdG10NzZfdHhxX3NjaGVkdWxlX2FsbChcdTAwMjZkZXYtXHUwMDNlbXBoeSk7XG4gIDkyOlx0XHRtdDc2X3dvcmtlcl9kaXNhYmxlKFx1MDAyNmRldi1cdTAwM2VtdDc2LnR4X3dvcmtlcik7XG4gIDkzOlx0XG4gIDk0Olx0XHRzZXRfYml0KE1UNzZfUkVTRVQsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbiAgOTU6XHRcdHNldF9iaXQoTVQ3Nl9NQ1VfUkVTRVQsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbiAgOTY6XHRcbiAgOTc6XHRcdHdha2VfdXAoXHUwMDI2ZGV2LVx1MDAzZW10NzYubWN1LndhaXQpO1xuICA5ODpcdFx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1jdS5yZXNfcSk7XG4gIDk5Olx0XG4gMTAwOlx0XHRtdDc2dV9zdG9wX3J4KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjM5MwoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIHRoZSBDb2RlOiBMb2NhdGluZyB0aGUgQ2hhbmdlKioKCk9rYXksIHNvIHdlIG5lZWQgdG8gcGlucG9pbnQgZXhhY3RseSB3aGVyZSB0aGlzIGJlaGF2aW9yIG1hbmlmZXN0ZWQsIHNvIGxldCYjMzk7cyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGBtYWMuY2AuIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIHJlbGV2YW50IGNoYW5nZXMgZGlyZWN0bHkgaW4gdGhlIGZpbGUsIHByb2JhYmx5IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuY2AuICBJIG5lZWQgdG8gZXhhbWluZSB0aGUgcGF0Y2ggY29udGV4dCB0aGVyZTsgdGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY3J1Y2lhbCBkZXRhaWxzIGFib3V0IHRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhpcyBiZWhhdmlvci4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBsaW5lcyBvZiBjb2RlIGFuZCB0aGUgc3Vycm91bmRpbmcgY2hhbmdlcyB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA3ODA6XHRcdH0gZWxzZSBpZiAocWlkIFx1MDAzZT0gTVRfVFhRX1BTRCkge1xuIDc4MTpcdFx0XHRwX2ZtdCA9IG10NzZfaXNfbW1pbyhkZXYpID8gTVRfVFhfVFlQRV9DVCA6IE1UX1RYX1RZUEVfU0Y7XG4gNzgyOlx0XHRcdHFfaWR4ID0gTVRfTE1BQ19BTFRYMDtcbiA3ODM6XHRcdH0gZWxzZSB7XG4gNzg0Olx0XHRcdHBfZm10ID0gbXQ3Nl9pc19tbWlvKGRldikgPyBNVF9UWF9UWVBFX0NUIDogTVRfVFhfVFlQRV9TRjtcbiA3ODU6XHRcdFx0cV9pZHggPSB3bW1faWR4ICogTVQ3Nl9DT05OQUNfTUFYX1dNTV9TRVRTICYjNDM7XG4gNzg2Olx0XHRcdFx0bXQ3Nl9jb25uYWNfbG1hY19tYXBwaW5nKHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpKTtcbiA3ODc6XHRcbiA3ODg6XHRcdFx0LyogY291bnRpbmcgbm9uLW9mZmxvYWRpbmcgc2ticyAqL1xuIDc4OTpcdFx0XHR3Y2lkLVx1MDAzZXN0YXRzLnR4X2J5dGVzICYjNDM7PSBza2ItXHUwMDNlbGVuO1xuIDc5MDpcdFx0XHR3Y2lkLVx1MDAzZXN0YXRzLnR4X3BhY2tldHMmIzQzOyYjNDM7O1xuIDc5MTpcdFx0fVxuIDc5MjpcdFxuIDc5MzpcdFx0dmFsID0gRklFTERfUFJFUChNVF9UWEQwX1RYX0JZVEVTLCBza2ItXHUwMDNlbGVuICYjNDM7IHN6X3R4ZCkgfFxuIDc5NDpcdFx0ICAgICAgRklFTERfUFJFUChNVF9UWEQwX1BLVF9GTVQsIHBfZm10KSB8XG4gNzk1Olx0XHQgICAgICBGSUVMRF9QUkVQKE1UX1RYRDBfUV9JRFgsIHFfaWR4KTtcbiA3OTY6XHRcdHR4d2lbMF0gPSBjcHVfdG9fbGUzMih2YWwpO1xuIDc5NzpcdFxuIDc5ODpcdFx0dmFsID0gRklFTERfUFJFUChNVF9UWEQxX1dMQU5fSURYLCB3Y2lkLVx1MDAzZWlkeCkgfFxuIDc5OTpcdFx0ICAgICAgRklFTERfUFJFUChNVF9UWEQxX09XTl9NQUMsIG9tYWNfaWR4KTtcbiA4MDA6XHRcbiA4MDE6XHRcdC8qIDB4ZmYgbWVhbnMgQkFORF9BVVRPIHRvIHRoZSBmaXJtd2FyZSwgYW5kIFRHSUQgY2Fubm90IGVuY29kZSBpdCAqL1xuIDgwMjpcdFx0aWYgKGJhbmRfaWR4IFx1MDAyNlx1MDAyNiBiYW5kX2lkeCAhPSAweGZmKVxuIDgwMzpcdFx0XHR2YWwgfD0gRklFTERfUFJFUChNVF9UWEQxX1RHSUQsIGJhbmRfaWR4KTtcbiA4MDQ6XHRcbiA4MDU6XHRcdHR4d2lbMV0gPSBjcHVfdG9fbGUzMih2YWwpO1xuIDgwNjpcdFx0dHh3aVsyXSA9IDA7XG4gODA3Olx0XG4gODA4Olx0XHR2YWwgPSBGSUVMRF9QUkVQKE1UX1RYRDNfUkVNX1RYX0NPVU5ULCAxNSk7XG4gODA5Olx0XG4gODEwOlx0XHRpZiAoa2V5KVxuIDgxMTpcdFx0XHR2YWwgfD0gTVRfVFhEM19QUk9URUNUX0ZSQU1FO1xuIDgxMjpcdFx0aWYgKGluZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9DVExfTk9fQUNLKVxuIDgxMzpcdFx0XHR2YWwgfD0gTVRfVFhEM19OT19BQ0s7XG4gODE0Olx0XHRpZiAod2NpZC1cdTAwM2VhbXNkdSlcbiA4MTU6XHRcdFx0dmFsIHw9IE1UX1RYRDNfSFdfQU1TRFU7XG4gODE2Olx0XG4gODE3Olx0XHR0eHdpWzNdID0gY3B1X3RvX2xlMzIodmFsKTtcbiA4MTg6XHRcdHR4d2lbNF0gPSAwO1xuIDgxOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNDE5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkludmVzdGlnYXRpbmcgdGhlIGBtdDc5MjVfbWFjX3dyaXRlX3R4d2lgIEZ1bmN0aW9uKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGlzIGBtdDc5MjVfbWFjX3dyaXRlX3R4d2lgIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZC4gVGhhdCBmdW5jdGlvbiBuYW1lIHNvdW5kcyBzcGVjaWZpYyB0byB0aGUgTVQ3OTI1IHdpcmVsZXNzIGNoaXBzZXQsIGxpa2VseSByZWxhdGVkIHRvIHdyaXRpbmcgdGhlIFRyYW5zbWl0IFdpcmVsZXNzIEluZm9ybWF0aW9uIChUWFdJKSB3aGljaCBpcyBjcnVjaWFsIGZvciBjb25maWd1cmluZyBob3cgYSBwYWNrZXQgaXMgdHJhbnNtaXR0ZWQgb3ZlciB0aGUgYWlyLiBBIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGFzIGFsd2F5cywgaXMgdG8gZmluZCB0aGUgY2FsbCBzaXRlcy4gVGltZSB0byBncmVwLiBJJiMzOTtsbCBmaXJlIHVwIHRoZSBjb21tYW5kLWxpbmUgYW5kIGRvIGEgcXVpY2sgc2VhcmNoIGZvciB0aGF0IGZ1bmN0aW9uIG5hbWUgYWNyb3NzIHRoZSByZWxldmFudCBjb2RlYmFzZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGxpc3Qgb2YgYWxsIHRoZSBwbGFjZXMgd2l0aGluIHRoZSBkcml2ZXIgd2hlcmUgdGhpcyBjcml0aWNhbCBUWFdJIGZ1bmN0aW9uIGlzIHVzZWQuIEZyb20gdGhlcmUsIEkgY2FuIHN0YXJ0IHRvIGJ1aWxkIGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZSBUWCBwYXRoIGFuZCBob3cgdGhlIHdpcmVsZXNzIE1BQyBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUgdG8gZ2V0IHBhY2tldHMgc2VudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDM6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1X21hY193cml0ZV90eHdpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz02NDA9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjY0MTptdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMyhfX2xlMzIgKnR4d2ksIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy02NDItXHRcdFx0ICAgc3RydWN0IG10NzZfd2NpZCAqd2NpZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz02NzU9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjY3NjptdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMTEoc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTY3Ny1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz03NDY9dm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NzQ3Om10NzkyNV9tYWNfd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNzQ4LVx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg0MC1cdGlmIChpc184MDIzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODQxOlx0XHRtdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMyh0eHdpLCBza2IsIHdjaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODQyLVx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODQzOlx0XHRtdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMTEoZGV2LCB0eHdpLCBza2IsIGtleSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04NDQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODY3LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg2ODpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWFjX3dyaXRlX3R4d2kpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODY5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTE2MjI9bXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2koc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjI5LVx0bWVtc2V0KHR4d2ksIDAsIE1UX1NESU9fVFhEX1NJWkUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTYzMDpcdG10NzkyNV9tYWNfd3JpdGVfdHh3aShcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgdHh3aSwgc2tiLCB3Y2lkLCBrZXksIHBpZCwgcWlkLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2MzEtXHRza2JfcHVzaChza2IsIE1UX1NESU9fVFhEX1NJWkUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTM0Mj12b2lkIG10NzkyNV9tYWNfc2V0X2ZpeGVkX3JhdGVfdGFibGUoc3RydWN0IG10NzkyeF9kZXYgKmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM0My1cdFx0XHRcdCAgICAgdTggdGJsX2lkeCwgdTE2IHJhdGVfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjM0NDp2b2lkIG10NzkyNV9tYWNfd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzQ1LVx0XHRcdCAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jPTk9aW50IG10NzkyNWVfdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmMtNDQtXHRwaWQgPSBtdDc2X3R4X3N0YXR1c19za2JfYWRkKG1kZXYsIHdjaWQsIHR4X2luZm8tXHUwMDNlc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYzo0NTpcdG10NzkyNV9tYWNfd3JpdGVfdHh3aShtZGV2LCB0eHdpX3B0ciwgdHhfaW5mby1cdTAwM2Vza2IsIHdjaWQsIGtleSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYy00Ni1cdFx0XHQgICAgICBwaWQsIHFpZCwgMCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MTIyCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgSSB1bmRlcnN0YW5kIHRoZSBzaXR1YXRpb246CgoqKlRyYWNpbmcgdGhlIFR4V0kgQ29uZmlndXJhdGlvbiBQYXRoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYG10NzkyNV9tYWNfd3JpdGVfdHh3aWAgZnVuY3Rpb24uIEl0IHNlZW1zIHRvIGJlIHRoZSBjb3JlIGZ1bmN0aW9uIGZvciB3cml0aW5nIHRoZSB0cmFuc21pdCBXaS1GaSBpbmZvcm1hdGlvbiAoVHhXSSksIGFuZCBpdCYjMzk7cyBjYWxsZWQgYnkgdHdvIG90aGVyIGZ1bmN0aW9uczogYG10NzkyNV91c2Jfc2Rpb193cml0ZV90eHdpYCBhbmQgYG10NzkyNWVfdHhfcHJlcGFyZV9za2JgLiBNeSBwcmltYXJ5IGludGVyZXN0IHJpZ2h0IG5vdyBpcyBmaWd1cmluZyBvdXQgdGhlIGNvbXBsZXRlIHBhdGggdGhhdCBsZWFkcyB0byBgbXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2lgIGJlaW5nIGNhbGxlZC4gS25vd2luZyB0aGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgVVNCIGFuZCBTRElPIGludGVyZmFjZXMgYXJlIGJlaW5nIGhhbmRsZWQgaW4gdGhlIE1lZGlhVGVrIHN5c3RlbS4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGZ1bmN0aW9ucyBjYWxsIGBtdDc5MjVfdXNiX3NkaW9fd3JpdGVfdHh3aWAgc3BlY2lmaWNhbGx5LiBUaGlzIHdpbGwgaGVscCBtZSB0cmFjZSB0aGUgZGF0YSBmbG93IGludm9sdmVkIGluIHRyYW5zbWl0dGluZyBwYWNrZXRzIHZpYSB0aG9zZSBpbnRlcmZhY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjVfdXNiX3NkaW9fd3JpdGVfdHh3aSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MTYyMT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTYyMjptdDc5MjVfdXNiX3NkaW9fd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYyMy1cdFx0XHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNjM0PWludCBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjY0LVx0cGt0aWQgPSBtdDc2X3R4X3N0YXR1c19za2JfYWRkKFx1MDAyNmRldi1cdTAwM2VtdDc2LCB3Y2lkLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTY2NTpcdG10NzkyNV91c2Jfc2Rpb193cml0ZV90eHdpKGRldiwgd2NpZCwgcWlkLCBzdGEsIGtleSwgcGt0aWQsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjY2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTg0MwoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2U6CgoqKkludmVzdGlnYXRpbmcgdGhlIG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAuIEJhc2VkIG9uIHRoZSBuYW1lLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhpcyBmdW5jdGlvbiBwbGF5cyBhIGNydWNpYWwgcm9sZSBpbiBwcmVwYXJpbmcgU0tCcyAoU29ja2V0IEJ1ZmZlcnMpIGZvciB0cmFuc21pc3Npb24sIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBVU0Igb3IgU0RJTyBpbnRlcmZhY2Ugd2l0aCB0aGUgbXQ3OTI1IGNoaXBzZXQuIEdpdmVuIHRoYXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBNeSBpbml0aWFsIGh1bmNoLCBhbmQgaXQmIzM5O3MgcHJhY3RpY2FsbHkgYSBjZXJ0YWludHksIGlzIHRoYXQgaXQmIzM5O3MgcGFydCBvZiB0aGUgYG10NzkyNXVgIG9yLCBwb3RlbnRpYWxseSwgdGhlIFVTQiBkcml2ZXIgaXRzZWxmLiBOb3cgSSBuZWVkIHRvIHNlZSBob3cgYW5kIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLiBXaGVyZSBhcmUgdGhlIHJlZmVyZW5jZXM/IFRoZSBnb2FsIGlzIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgaW50ZWdyYXRpb24gYW5kIHB1cnBvc2Ugd2l0aGluIHRoZSBkcml2ZXImIzM5O3MgdHJhbnNtaXQgcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDM6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNjIyPW10NzkyNV91c2Jfc2Rpb193cml0ZV90eHdpKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYzMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE2MzQ6aW50IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYzNS1cdFx0XHRcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2NzgtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTY3OTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTY4MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zNjk9aW50IG10NzkyNV9tY3VfZ2V0X3RlbXBlcmF0dXJlKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzcxOmludCBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM3Mi1cdFx0XHRcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTE1MD1zdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1OS1cdFx0XHRcdFNVUlZFWV9JTkZPX1RJTUVfQlNTX1JYLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTYwOlx0XHQudHhfcHJlcGFyZV9za2IgPSBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNjEtXHRcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc5MjVfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjkwOQoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRGl2aW5nIGludG8gdGhlIE1UNzkyNVUgVVNCIFByb2JlIEZ1bmN0aW9uKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IHdpdGggdGhpcyBNVDc5MjVVIGRyaXZlci4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgVVNCIGludGVyZmFjZSBpcyBpbml0aWFsaXplZCB3b3VsZCBiZSB0aGUgcHJvYmUgZnVuY3Rpb24uIFNvLCBJIG5lZWQgdG8gY2hlY2sgb3V0IGBtdDc5MjV1X3Byb2JlYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmNgLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIGluaXRpYWwgZGV2aWNlIHNldHVwLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQgYW55IHByZWxpbWluYXJ5IGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byB0aGUgVVNCIGNvbm5lY3Rpb24uIExldCYjMzk7cyBob3BlIGl0JiMzOTtzIHdlbGwtY29tbWVudGVkOyB0aGlzIGlzIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBiaXRzIHVzdWFsbHkgc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE0NTpcdFx0bXQ3Nl93b3JrZXJfZW5hYmxlKFx1MDAyNmRldi1cdTAwM2VtdDc2LnR4X3dvcmtlcik7XG4gMTQ2Olx0XG4gMTQ3Olx0XHRyZXR1cm4gZXJyO1xuIDE0ODpcdH1cbiAxNDk6XHRcbiAxNTA6XHRzdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuIDE1MTpcdFx0XHRcdCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4gMTUyOlx0e1xuIDE1MzpcdFx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc2X2RyaXZlcl9vcHMgZHJ2X29wcyA9IHtcbiAxNTQ6XHRcdFx0LnR4d2lfc2l6ZSA9IE1UX1NESU9fVFhEX1NJWkUsXG4gMTU1Olx0XHRcdC5kcnZfZmxhZ3MgPSBNVF9EUlZfUlhfRE1BX0hEUiB8IE1UX0RSVl9IV19NR01UX1RYUSB8XG4gMTU2Olx0XHRcdFx0ICAgICBNVF9EUlZfQU1TRFVfT0ZGTE9BRCxcbiAxNTc6XHRcdFx0LnN1cnZleV9mbGFncyA9IFNVUlZFWV9JTkZPX1RJTUVfVFggfFxuIDE1ODpcdFx0XHRcdFx0U1VSVkVZX0lORk9fVElNRV9SWCB8XG4gMTU5Olx0XHRcdFx0XHRTVVJWRVlfSU5GT19USU1FX0JTU19SWCxcbiAxNjA6XHRcdFx0LnR4X3ByZXBhcmVfc2tiID0gbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiLFxuIDE2MTpcdFx0XHQudHhfY29tcGxldGVfc2tiID0gbXQ3OTI1X3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcbiAxNjI6XHRcdFx0LnR4X3N0YXR1c19kYXRhID0gbXQ3OTI1X3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhLFxuIDE2MzpcdFx0XHQucnhfc2tiID0gbXQ3OTI1X3F1ZXVlX3J4X3NrYixcbiAxNjQ6XHRcdFx0LnJ4X2NoZWNrID0gbXQ3OTI1X3J4X2NoZWNrLFxuIDE2NTpcdFx0XHQuc3RhX2FkZCA9IG10NzkyNV9tYWNfc3RhX2FkZCxcbiAxNjY6XHRcdFx0LnN0YV9ldmVudCA9IG10NzkyNV9tYWNfc3RhX2V2ZW50LFxuIDE2NzpcdFx0XHQuc3RhX3JlbW92ZSA9IG10NzkyNV9tYWNfc3RhX3JlbW92ZSxcbiAxNjg6XHRcdFx0LnVwZGF0ZV9zdXJ2ZXkgPSBtdDc5MnhfdXBkYXRlX2NoYW5uZWwsXG4gMTY5Olx0XHR9O1xuIDE3MDpcdFx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc5MnhfaGlmX29wcyBoaWZfb3BzID0ge1xuIDE3MTpcdFx0XHQubWN1X2luaXQgPSBtdDc5MjV1X21jdV9pbml0LFxuIDE3MjpcdFx0XHQuaW5pdF9yZXNldCA9IG10NzkyeHVfaW5pdF9yZXNldCxcbiAxNzM6XHRcdFx0LnJlc2V0ID0gbXQ3OTI1dV9tYWNfcmVzZXQsXG4gMTc0Olx0XHR9O1xuIDE3NTpcdFx0c3RhdGljIHN0cnVjdCBtdDc2X2J1c19vcHMgYnVzX29wcyA9IHtcbiAxNzY6XHRcdFx0LnJyID0gbXQ3OTJ4dV9ycixcbiAxNzc6XHRcdFx0LndyID0gbXQ3OTJ4dV93cixcbiAxNzg6XHRcdFx0LnJtdyA9IG10NzkyeHVfcm13LFxuIDE3OTpcdFx0XHQucmVhZF9jb3B5ID0gbXQ3NnVfcmVhZF9jb3B5LFxuIDE4MDpcdFx0XHQud3JpdGVfY29weSA9IG10NzkyeHVfY29weSxcbiAxODE6XHRcdFx0LnR5cGUgPSBNVDc2X0JVU19VU0IsXG4gMTgyOlx0XHR9O1xuIDE4MzpcdFx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KHVzYl9pbnRmKTtcbiAxODQ6XHRcdHN0cnVjdCBpZWVlODAyMTFfb3BzICpvcHM7XG4gMTg1Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodztcbiAxODY6XHRcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXY7XG4gMTg3Olx0XHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXY7XG4gMTg4Olx0XHR1OCBmZWF0dXJlcztcbiAxODk6XHRcdGludCByZXQ7XG4gMTkwOlx0XG4gMTkxOlx0XHRvcHMgPSBtdDc5MnhfZ2V0X21hYzgwMjExX29wcyhcdTAwMjZ1c2JfaW50Zi1cdTAwM2VkZXYsIFx1MDAyNm10NzkyNV9vcHMsXG4gMTkyOlx0XHRcdFx0XHQgICAgICAodm9pZCAqKWlkLVx1MDAzZWRyaXZlcl9pbmZvLCBcdTAwMjZmZWF0dXJlcyk7XG4gMTkzOlx0XHRpZiAoIW9wcylcbiAxOTQ6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMTk1Olx0XG4gMTk2Olx0XHRvcHMtXHUwMDNlc3RvcCA9IG10NzkyeHVfc3RvcDtcbiAxOTc6XHRcbiAxOTg6XHRcdG1kZXYgPSBtdDc2X2FsbG9jX2RldmljZShcdTAwMjZ1c2JfaW50Zi1cdTAwM2VkZXYsIHNpemVvZigqZGV2KSwgb3BzLCBcdTAwMjZkcnZfb3BzKTtcbiAxOTk6XHRcdGlmICghbWRldilcbiAyMDA6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMjAxOlx0XG4gMjAyOlx0XHRkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzkyeF9kZXYsIG10NzYpO1xuIDIwMzpcdFx0ZGV2LVx1MDAzZWZ3X2ZlYXR1cmVzID0gZmVhdHVyZXM7XG4gMjA0Olx0XHRkZXYtXHUwMDNlaGlmX29wcyA9IFx1MDAyNmhpZl9vcHM7XG4gMjA1Olx0XHRtdDc5Mnh1X3Jlc2V0X3dvcmtfaW5pdChkZXYpO1xuIDIwNjpcdFxuIDIwNzpcdFx0dXNiX3Jlc2V0X2RldmljZSh1ZGV2KTtcbiAyMDg6XHRcbiAyMDk6XHRcdHVzYl9zZXRfaW50ZmRhdGEodXNiX2ludGYsIGRldik7XG4gMjEwOlx0XG4gMjExOlx0XHRyZXQgPSBfX210NzZ1X2luaXQobWRldiwgdXNiX2ludGYsIFx1MDAyNmJ1c19vcHMpO1xuIDIxMjpcdFx0aWYgKHJldCBcdTAwM2MgMClcbiAyMTM6XHRcdFx0Z290byBlcnJvcjtcbiAyMTQ6XHRcbiAyMTU6XHRcdG1kZXYtXHUwMDNlcmV2ID0gKG10NzZfcnIoZGV2LCBNVF9IV19DSElQSUQpIFx1MDAzY1x1MDAzYyAxNikgfFxuIDIxNjpcdFx0XHQgICAgKG10NzZfcnIoZGV2LCBNVF9IV19SRVYpIFx1MDAyNiAweGZmKTtcbiAyMTc6XHRcdGRldl9kYmcobWRldi1cdTAwM2VkZXYsIFwmIzM0O0FTSUMgcmV2aXNpb246ICUwNHhcXG5cJiMzNDssIG1kZXYtXHUwMDNlcmV2KTtcbiAyMTg6XHRcbiAyMTk6XHRcdGlmIChtdDc2X2NoaXAobWRldikgPT0gMHg2NjM5KSB7XG4gMjIwOlx0XHRcdGRldl9kYmcobWRldi1cdTAwM2VkZXYsXG4gMjIxOlx0XHRcdFx0XCYjMzQ7TVQ3OTI3IHJhdyBDSElQSUQ9MHglMDR4LCBmb3JjaW5nIGNoaXA9MHg3OTI3XFxuXCYjMzQ7LFxuIDIyMjpcdFx0XHRcdG10NzZfY2hpcChtZGV2KSk7XG4gMjIzOlx0XHRcdG1kZXYtXHUwMDNlcmV2ID0gKDB4NzkyNyBcdTAwM2NcdTAwM2MgMTYpIHwgKG1kZXYtXHUwMDNlcmV2IFx1MDAyNiAweGZmKTtcbiAyMjQ6XHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDM6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg2OTgKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTVQ3OTI1VSBEcml2ZXIgd2l0aCBTeXprYWxsZXI6IEluaXRpYWwgQXNzZXNzbWVudCBhbmQgS2NvbmZpZyBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTttIHRoaW5raW5nLi4uIGZpcnN0LCBgbXQ3OTI1dWAsIHRoYXQmIzM5O3MgdGhlIFVTQiB3aXJlbGVzcyBkcml2ZXIsIHJpZ2h0PyBDYW4gd2UgZXZlbiBhcHByb2FjaCB0aGlzIHdpdGggU3l6a2FsbGVyJiMzOTtzIFVTQiBlbXVsYXRpb24/IE15IGluaXRpYWwgaW5zdGluY3QgaXMgeWVzLCBzaW5jZSBTeXprYWxsZXIgaGFzIHRoZSByYXcgZ2FkZ2V0L3Z1c2Igc3VwcG9ydC4gQnV0LCBhIHF1aWNrIGRvdWJsZS1jaGVjazogRG9lcyBTeXprYWxsZXIgKmFjdHVhbGx5KiB0YXJnZXQgVVNCIHdpZmkgZHJpdmVycz8gR29vZCBuZXdzLCBpdCBkb2VzLiBNeSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBVU0IgZnV6emluZyBzdXBwb3J0IGluIFN5emthbGxlciwgd2hpY2ggdXRpbGl6ZXMgcmF3IGdhZGdldCBhbmQgYHN5el91c2JfY29ubmVjdGAsIGlzIHRoYXQgaXQgc2hvdWxkIGJlIGFibGUgdG8gcmVhY2ggbWFjODAyMTEtYmFzZWQgYW5kIHdpcmVsZXNzIFVTQiBkcml2ZXJzLCBpbmNsdWRpbmcgdGhlIE1lZGlhVGVrIGZhbWlseTogYG10NzZgLCBgbXQ3OTIxdWAsIGBtdDc5MjV1YCwgZXRjLgoKTm93LCBhIGNyaXRpY2FsIHN0ZXA6IEkgbmVlZCB0byB2ZXJpZnkgd2hpY2ggS2NvbmZpZyBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgYG10NzkyNWAgZnVuY3Rpb25hbGl0eS4gTGV0JiMzOTtzIGRlbHZlIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnYCBmaWxlIGFuZCBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoaXMgaXMgYSBjcnVjaWFsIHN0ZXAgdG8gZW5zdXJpbmcgdGhlIGRyaXZlciBpcyBwcm9wZXJseSBidWlsdCBhbmQgZXhwb3NlZCBmb3IgdGVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDM6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzkyNV9DT01NT05cbiAgIDM6XHRcdHRyaXN0YXRlXG4gICA0Olx0XHRzZWxlY3QgTVQ3OTJ4X0xJQlxuICAgNTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gICA2Olx0XG4gICA3Olx0Y29uZmlnIE1UNzkyNUVcbiAgIDg6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbiAgIDk6XHRcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXG4gIDEwOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDExOlx0XHRkZXBlbmRzIG9uIFBDSVxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFBDSWUgZGV2aWNlcyxcbiAgMTQ6XHRcdCAgd2hpY2ggc3VwcG9ydCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeiwgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlXG4gIDE1Olx0XHQgIDJ4MjoyU1MgNDA5Ni1RQU0sIDE2ME1IeiBjaGFubmVscy5cbiAgMTY6XHRcbiAgMTc6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgTVQ3OTI1VVxuICAyMDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4gIDIxOlx0XHRzZWxlY3QgTVQ3OTJ4X1VTQlxuICAyMjpcdFx0c2VsZWN0IE1UNzkyNV9DT01NT05cbiAgMjM6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMjQ6XHRcdGRlcGVuZHMgb24gVVNCXG4gIDI1Olx0XHRoZWxwXG4gIDI2Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgVVNCIGRldmljZXMsXG4gIDI3Olx0XHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxuICAyODpcdFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXG4gIDI5Olx0XG4gIDMwOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NjY0CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZToKCioqSW52ZXN0aWdhdGluZyB0aGUgS2NvbmZpZyBGaWxlIGZvciBNVDc2IFdpcmVsZXNzIERyaXZlcnMqKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgc29tZSB3aXJlbGVzcyBkcml2ZXIgY29uZmlndXJhdGlvbnMsIGFuZCBteSBndXQgZmVlbGluZyBpcyB0aGF0IHdlJiMzOTtyZSBtaXNzaW5nIHNvbWV0aGluZyBjcnVjaWFsLiBJJiMzOTt2ZSBiZWVuIGRvd24gdGhpcyByb2FkIGJlZm9yZS4gVG8gbWFrZSBzdXJlIHdlJiMzOTt2ZSBnb3QgdGhlIHdob2xlIHBpY3R1cmUsIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ2AgZmlsZS4gSXQmIzM5O3Mgb2Z0ZW4gdGhlIGNlbnRyYWwgc291cmNlIG9mIHRydXRoIGZvciB0aGVzZSB0eXBlcyBvZiBjb25maWd1cmF0aW9ucy4gSSBrbm93IHRoZSBNZWRpYXRlayBNVDc2IGRyaXZlcnMgcHJldHR5IHdlbGwsIGFuZCBiYXNlZCBvbiBwYXN0IGV4cGVyaWVuY2UsIEtjb25maWcgZmlsZXMgYXJlIHRoZSBiZXN0IHN0YXJ0aW5nIHBvaW50IHdoZW4gSSBlbmNvdW50ZXIgYSBzeXN0ZW0gdGhhdCBpcyBub3QgYmVoYXZpbmcgYXMgZXhwZWN0ZWQuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBiZWluZyBlbmFibGVkIG9yIGRpc2FibGVkIHRoZXJlIGFuZCB3aGV0aGVyIHRoZXJlJiMzOTtzIGEgc2V0dGluZyB0aGF0JiMzOTtzIGNhdXNpbmcgdGhpcyBpc3N1ZS4gVGltZSB0byBkaWcgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzZfQ09SRVxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgTVQ3Nl9MRURTXG4gICA3Olx0XHRib29sXG4gICA4Olx0XHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxuICAgOTpcdFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTVQ3Nl9DT1JFPUxFRFNfQ0xBU1NcbiAgMTA6XHRcdGRlZmF1bHQgeVxuICAxMTpcdFxuICAxMjpcdGNvbmZpZyBNVDc2X1VTQlxuICAxMzpcdFx0dHJpc3RhdGVcbiAgMTQ6XHRcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG4gIDE1Olx0XG4gIDE2Olx0Y29uZmlnIE1UNzZfU0RJT1xuICAxNzpcdFx0dHJpc3RhdGVcbiAgMTg6XHRcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIE1UNzZ4MDJfTElCXG4gIDIxOlx0XHR0cmlzdGF0ZVxuICAyMjpcdFx0c2VsZWN0IE1UNzZfQ09SRVxuICAyMzpcdFxuICAyNDpcdGNvbmZpZyBNVDc2eDAyX1VTQlxuICAyNTpcdFx0dHJpc3RhdGVcbiAgMjY6XHRcdHNlbGVjdCBNVDc2X1VTQlxuICAyNzpcdFxuICAyODpcdGNvbmZpZyBNVDc2X0NPTk5BQ19MSUJcbiAgMjk6XHRcdHRyaXN0YXRlXG4gIDMwOlx0XHRzZWxlY3QgTVQ3Nl9DT1JFXG4gIDMxOlx0XG4gIDMyOlx0Y29uZmlnIE1UNzkyeF9MSUJcbiAgMzM6XHRcdHRyaXN0YXRlXG4gIDM0Olx0XHRzZWxlY3QgTVQ3Nl9DT05OQUNfTElCXG4gIDM1Olx0XG4gIDM2Olx0Y29uZmlnIE1UNzkyeF9VU0JcbiAgMzc6XHRcdHRyaXN0YXRlXG4gIDM4Olx0XHRzZWxlY3QgTVQ3Nl9VU0JcbiAgMzk6XHRcbiAgNDA6XHRjb25maWcgTVQ3Nl9OUFVcbiAgNDE6XHRcdHRyaXN0YXRlXG4gIDQyOlx0XHRkZXBlbmRzIG9uIE5FVF9BSVJPSEFfTlBVPXkgfHwgTVQ3Nl9DT1JFPU5FVF9BSVJPSEFfTlBVXG4gIDQzOlx0XG4gIDQ0Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWdcJiMzNDtcbiAgNDU6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZ1wmIzM0O1xuICA0NjpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnXCYjMzQ7XG4gIDQ3Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L0tjb25maWdcJiMzNDtcbiAgNDg6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvS2NvbmZpZ1wmIzM0O1xuICA0OTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnXCYjMzQ7XG4gIDUwOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWdcJiMzNDtcbiAgNTE6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDYzNgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipLY29uZmlnIEluc3BlY3Rpb246IE1lZGlhdGVrIFdpcmVsZXNzIERyaXZlcioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoaXMuIFRoZSB0YXNrIHJlcXVpcmVzIGxvb2tpbmcgYXQgdGhlIHBhcmVudCBLY29uZmlnIGZpbGUuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgd2l0aCB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdgIGRpcmVjdG9yeS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGZvciB0aGlzIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlciBhbmQgd2hlcmUgaXRzIGRlcGVuZGVuY2llcyBsaWUuIEhvcGVmdWxseSwgdGhpcyBLY29uZmlnIHdpbGwgZ2l2ZSBtZSBhIGNsZWFyIG92ZXJ2aWV3IG9mIHRoZSByZWxldmFudCBidWlsZCBwYXJhbWV0ZXJzIGFuZCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBmbGFncy4gVGhhdCBzaG91bGQgYmUgdGhlIGp1bXBpbmcgb2ZmIHBvaW50IGZvciByZXNvbHZpbmcgd2hhdGV2ZXIgaXNzdWUgYnJvdWdodCBtZSB0byB0aGlzIHBvaW50LiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGlzIGNvbnRyb2xsZWQgYW5kIGludGVncmF0ZWQgd2l0aGluIHRoZSBicm9hZGVyIGtlcm5lbCBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgV0xBTl9WRU5ET1JfTUVESUFURUtcbiAgIDM6XHRcdGJvb2wgXCYjMzQ7TWVkaWFUZWsgZGV2aWNlc1wmIzM0O1xuICAgNDpcdFx0ZGVmYXVsdCB5XG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIElmIHlvdSBoYXZlIGEgd2lyZWxlc3MgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXG4gICA3Olx0XG4gICA4Olx0XHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxuICAgOTpcdFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsIHRoZVxuICAxMDpcdFx0ICBxdWVzdGlvbnMgYWJvdXQgdGhlc2UgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXG4gIDExOlx0XHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cbiAgMTI6XHRcbiAgMTM6XHRpZiBXTEFOX1ZFTkRPUl9NRURJQVRFS1xuICAxNDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2MDF1L0tjb25maWdcJiMzNDtcbiAgMTU6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnXCYjMzQ7XG4gIDE2Olx0ZW5kaWYgIyBXTEFOX1ZFTkRPUl9NRURJQVRFS1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTEwMAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQ3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1UNzkyNSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSBhIHF1aWNrIGRlcGVuZGVuY3kgY2hlY2ssIGl0IGxvb2tzIGxpa2UgYE1UNzkyNVVgIGxldmVyYWdlcyBgTUFDODAyMTFgIGFuZCBgVVNCYCwgd2hpbGUgYE1UNzkyNUVgIHVzZXMgYE1BQzgwMjExYCBhbmQgYFBDSWAuIEJvdGggc2hhcmUgYE1UNzkyNV9DT01NT05gLCBzbyB0aGUgcGF0Y2ggKnNob3VsZCogYWZmZWN0IGJvdGgsIGJ1dCBsZXQmIzM5O3MgYmUgc3VyZS4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgYSBjaGFuZ2Ugd2l0aGluIHRoZSBgV0xBTl9WRU5ET1JfTUVESUFURUtgIHNlY3Rpb24uCgpOb3csIGZvY3VzaW5nIG9uIHRoZSBwYXRjaCBpdHNlbGYuIEl0IHNlZW1zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIGBtdDc5MjVfbWFjX3dyaXRlX3R4d2lgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIHRoZSBgTVRfVFhEMV9UR0lEYCBmaWVsZCB3aXRoaW4gdGhlIGB0eHdpYCBzdHJ1Y3R1cmUuIFByZXZpb3VzbHksIHRoZSBjb2RlIGNvbmRpdGlvbmFsbHkgYXNzaWduZWQgdGhlIGBiYW5kX2lkeGAgdmFsdWUgdG8gYE1UX1RYRDFfVEdJRGAgYmFzZWQgb24gYSBzaW1wbGUgYGlmIChiYW5kX2lkeClgIGNoZWNrLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIHNwZWNpZmljIGNvbmRpdGlvbjogbm93IHRoZSBjb2RlIGNoZWNrcyBgYmFuZF9pZHhgIGFuZCBhbHNvIGVuc3VyZXMgYGJhbmRfaWR4YCBpcyBub3QgYDB4ZmZgLiBUaGUgY29tbWVudCBtZW50aW9ucyB0aGF0IGAweGZmYCByZXByZXNlbnRzIGBCQU5EX0FVVE9gIGZvciB0aGUgZmlybXdhcmUsIGFuZCBpdCBjYW5ub3QgYmUgZW5jb2RlZCB3aXRoaW4gYFRHSURgLiBTbywgdGhpcyBzZWVtcyBsaWtlIGEgZml4IHRvIHByZXZlbnQgYW4gaW5jb3JyZWN0IHZhbHVlIGJlaW5nIHBhc3NlZCB0byB0aGUgZmlybXdhcmUsIHdoaWNoIHNob3VsZCBwcmV2ZW50IGEgY3Jhc2gvZXJyb3IuCgpUbyBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYE1UX1RYRDFfVEdJRGAuIEkmIzM5O2xsIGxvb2sgZWl0aGVyIGluIGBtYWMuaGAgb3Igd2l0aGluIHRoaXMgYG1hYy5jYCBmaWxlIHRvIGVuc3VyZSB0aGUgYml0ZmllbGQgZGVmaW5pdGlvbiBtYXRjaGVzIHdoYXQgSSBzdXNwZWN0LiBUaGlzIHdpbGwgY2xhcmlmeSB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIGFuZCBob3cgaXQgbWlnaHQgaW1wYWN0IHRyYWZmaWMgbWFuYWdlbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDM6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TVRfVFhEMV9UR0lEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjMl9tYWMuaD0zNT1lbnVtIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjMl9tYWMuaC01NS0jZGVmaW5lIE1UX1RYRDFfTE9OR19GT1JNQVRcdFx0QklUKDMxKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYzJfbWFjLmg6NTY6I2RlZmluZSBNVF9UWEQxX1RHSURcdFx0XHRCSVQoMzApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjMl9tYWMuaC01Ny0jZGVmaW5lIE1UX1RYRDFfT1dOX01BQ1x0XHRcdEdFTk1BU0soMjksIDI0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMzX21hYy5oPTIwNT1lbnVtIHR4X2ZyYWdfaWR4IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMuaC0yMzItI2RlZmluZSBNVF9UWEQxX0hEUl9GT1JNQVRcdFx0R0VOTUFTSygxNSwgMTQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMuaDoyMzM6I2RlZmluZSBNVF9UWEQxX1RHSURcdFx0XHRHRU5NQVNLKDEzLCAxMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMzX21hYy5oLTIzNC0jZGVmaW5lIE1UX1RYRDFfV0xBTl9JRFhcdFx0R0VOTUFTSygxMSwgMClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jPTUwND12b2lkIG10NzZfY29ubmFjMl9tYWNfd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNTYyLVx0aWYgKHBoeV9pZHggfHwgYmFuZF9pZHgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jOjU2MzpcdFx0dmFsIHw9IE1UX1RYRDFfVEdJRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNTY0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTc0Nz1tdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04MDItXHRpZiAoYmFuZF9pZHggXHUwMDI2XHUwMDI2IGJhbmRfaWR4ICE9IDB4ZmYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4MDM6XHRcdHZhbCB8PSBGSUVMRF9QUkVQKE1UX1RYRDFfVEdJRCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODA0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTg5ND12b2lkIG10Nzk5Nl9tYWNfd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtOTUyLVx0aWYgKGJhbmRfaWR4KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6OTUzOlx0XHR2YWwgfD0gRklFTERfUFJFUChNVF9UWEQxX1RHSUQsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTk1NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDM6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI5MjUKCQkJCQkJCW91dHB1dDogMTY3CgkJCQkJCQl0aG91Z2h0czogNzk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIE1UNzkyNSBEcml2ZXIgVnVsbmVyYWJpbGl0eSBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYE1UX1RYRDFfVEdJRGAgZmllbGQgYW5kIGhvdyBpdCYjMzk7cyBoYW5kbGVkLiBJdCYjMzk7cyBhIDItYml0IGZpZWxkLCBtZWFuaW5nIGl0IGNhbiBvbmx5IGhvbGQgdmFsdWVzIGZyb20gMCB0byAzLiBUaGUgY29kZSB1c2VzIGBGSUVMRF9QUkVQYCwgYW5kIEkgc2VlIGEgcG90ZW50aWFsIGlzc3VlIGlmIGBiYW5kX2lkeGAgYmVjb21lcyAweGZmLCBiZWNhdXNlIGRpcmVjdGx5IHNldHRpbmcgdGhhdCB3aXRoIGBGSUVMRF9QUkVQYCBjb3VsZCBjYXVzZSBhIHdhcm5pbmcgb3Igb3ZlcmZsb3cgb3IgaW52YWxpZCBiaXQgY29uZmlndXJhdGlvbiwgZXNwZWNpYWxseSB3aXRoIGEgY29uc3RhbnQ7IGhvd2V2ZXIsIHNpbmNlIGl0JiMzOTtzIGEgdmFyaWFibGUsIHRoZSBjb2RlIG1hc2tzIGFuZCBzaGlmdHMsIHJlc3VsdGluZyBpbiBhIFRHSUQgdmFsdWUgb2YgMy4KCk15IHByaW1hcnkgY29uY2VybiBpcyB3aGV0aGVyIHRoaXMgaXMgYSBjb2RlIHBhdGggSSBjYW4gYWN0dWFsbHkgcmVhY2ggaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gQ2FuIEkgdHJpZ2dlciB0aGlzIGNvbmRpdGlvbiB0aHJvdWdoIGEgVVNCIGdhZGdldCBzZXR1cCBpbiBzb21ldGhpbmcgbGlrZSBzeXprYWxsZXIgb3Igc3RhbmRhcmQgUUVNVT8gTGV0JiMzOTtzIHNlZS4uLiBTZWN0aW9uIDIgcG9pbnRzIG91dCB0aGF0IHNvbWUgaGFyZHdhcmUsIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMgYW5kIHN1Y2gsIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gQnV0IFNlY3Rpb24gMyBoaWdobGlnaHRzIHJlYWNoYWJsZSBkcml2ZXJzOiB0aGluZ3MgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyBzdWNoIGFzIHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIGV0Yy4KClNpbmNlIE1UNzkyNSBoYXMgVVNCIHN1cHBvcnQgKE1UNzkyNVUpLCBhbmQgaXQgY2FuIGJpbmQgdG8gVVNCIGRldmljZSBJRHMgdG8gdHJhbnNtaXQgcGFja2V0cywgaXQmIzM5O3MgYSBzdHJvbmcgaW5kaWNhdG9yIHRoYXQgVVNCIGVtdWxhdGlvbiBzaG91bGQgYmUgYSB2aWFibGUgYWNjZXNzIHBhdGguIENhbiBJIHJlYWNoIHRoZSBgbXQ3OTI1X21hY193cml0ZV90eHdpYCBmdW5jdGlvbiB0aHJvdWdoIGBtdDc5MjV1YD8gWWVzISBUaGUgVFggcGF0aCBpbnZvbHZlcyBgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYCAtJmd0OyBgbXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2lgIC0mZ3Q7IGBtdDc5MjVfbWFjX3dyaXRlX3R4d2lgLiBFeGNlbGxlbnQsIHRoYXTigJlzIHByb21pc2luZy4KCkkgbmVlZCB0byBuYWlsIGRvd24gbXkgdGFyZ2V0cyBmb3IgZnV6emluZy4gTGV0IG1lIGNoZWNrIHRoZSBjYWxsZXJzIGFuZCBzeW1ib2xzLiBJJiMzOTtsbCBmb2N1cyBvbiBgbXQ3OTI1X21hY193cml0ZV90eHdpYCwgYG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYmAsIGFuZCBgbXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2lgICh0aGUgbGF0dGVyIGlzIHN0YXRpYywgYnV0IHJlbGV2YW50KS4KCk5vdywgaXMgYG10NzkyNV9tYWNfd3JpdGVfdHh3aWAgc3RhdGljIG9yIGV4cG9ydGVkPyBMZXQgbWUgY2hlY2suLi4gQWgsIGxpbmUgODY4OiBgRVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21hY193cml0ZV90eHdpKTtgIFNvIGl0IGlzIGFuIGV4cG9ydGVkLCBub24tc3RhdGljIHN5bWJvbC4gQW5kIGBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgIGlzIGFsc28gZXhwb3J0ZWQuIFdlIGFsc28gaGF2ZSBgbXQ3OTI1ZV90eF9wcmVwYXJlX3NrYmAgZm9yIFBDSS4KCk5leHQsIEkgbmVlZCB0byB2ZXJpZnkgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gTGV0JiMzOTtzIGxvb2sgYXQgdGhlIGBFbmFibGVDb25maWdzYC4gSSBuZWVkIGBNVDc5MjVVYCwgYE1UNzkyNV9DT01NT05gLCBgTUFDODAyMTFgLCBgVVNCYCwgYW5kIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AuCgpPa2F5LCB0aW1lIHRvIGRvdWJsZS1jaGVjayBldmVyeXRoaW5nOgoKMS4gIElzIHRoaXMgZXZlbiB3b3J0aCBmdXp6aW5nPyBZZXMuCjIuICBNeSBmb2N1cyBzeW1ib2xzIGFyZSBzZXQ6IGBtdDc5MjVfbWFjX3dyaXRlX3R4d2lgLCBgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYC4KMy4gIE15IGVuYWJsZSBjb25maWdzIGFyZSBjb3JyZWN0Lgo0LiAgUmVhc29uaW5nIGlzIHNvdW5kIGFuZCBkb2N1bWVudGVkLgoKQWxyaWdodCwgSSYjMzk7bSByZWFkeSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5MjVVJiMzNDssCiAgICAmIzM0O01UNzkyNV9DT01NT04mIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX01FRElBVEVLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTI1X21hY193cml0ZV90eHdpJiMzNDssCiAgICAmIzM0O210NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBiYW5kX2lkeCBoYW5kbGluZyBpbiBtdDc5MjVfbWFjX3dyaXRlX3R4d2koKSB3aGVuIHdyaXRpbmcgVFggd2lyZWxlc3MgaW5mb3JtYXRpb24gZGVzY3JpcHRvcnMuIFRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGRldmljZXMgKE1UNzkyNVUpIHdoaWNoIGFyZSByZWFjaGFibGUgYW5kIGZ1enphYmxlIHZpYSBVU0IgZGV2aWNlIGVtdWxhdGlvbiAoVVNCIFJhdyBHYWRnZXQgLyB2dXNiKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7LAogICAgJiMzNDtNVDc5MjVfQ09NTU9OJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9NRURJQVRFSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNV9tYWNfd3JpdGVfdHh3aSYjMzQ7LAogICAgJiMzNDttdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2ImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYmFuZF9pZHggaGFuZGxpbmcgaW4gbXQ3OTI1X21hY193cml0ZV90eHdpKCkgd2hlbiB3cml0aW5nIFRYIHdpcmVsZXNzIGluZm9ybWF0aW9uIGRlc2NyaXB0b3JzLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIChNVDc5MjVVKSB3aGljaCBhcmUgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgVVNCIGRldmljZSBlbXVsYXRpb24gKFVTQiBSYXcgR2FkZ2V0IC8gdnVzYikuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjIwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDM6MjA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2FsY3VsYXRpb24gb2YgaGFyZHdhcmUgVFggZGVzY3JpcHRvciBiaXRzIGluIGBtdDc5MjVfbWFjX3dyaXRlX3R4d2koKWAgYnkgYXZvaWRpbmcgdGhlIHVzZSBvZiBgRklFTERfUFJFUChNVF9UWEQxX1RHSUQsIGJhbmRfaWR4KWAgd2hlbiBgYmFuZF9pZHggPT0gMHhmZmAgKEJBTkRfQVVUTykuXG5cbkFsbCBsb2NhbCB2YXJpYWJsZXMsIGluY2x1ZGluZyBgYmFuZF9pZHhgLCBhcmUgZXhwbGljaXRseSBpbml0aWFsaXplZCwgYW5kIHRoZSBmdW5jdGlvbiB3cml0ZXMgZGVzY3JpcHRvciBmaWVsZHMgdG8gYSBwcmUtYWxsb2NhdGVkL21hbmFnZWQgYnVmZmVyIGZvciBoYXJkd2FyZSB0cmFuc21pc3Npb24uIE5vIG1lbW9yeSBjb3B5aW5nIHRvIHVzZXIgc3BhY2UsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgdXNhZ2UsIG9yIHVuaW5pdGlhbGl6ZWQgcGFkZGluZy9idWZmZXIgaGFuZGxpbmcgaXMgaW50cm9kdWNlZCBvciBtb2RpZmllZC4gVGhlcmVmb3JlLCB0aGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZGE1YmI2YjA2OWFkZWNkMmE2OTM1MTgyYjZhNjcyY2U1NzQyYmEwZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDExIDAzOjE4OjMwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYwppbmRleCAxMDFmNTcxYjAyN2YxLi4zYjgyYzlkZTI2YzViIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYwpAQCAtNzk4LDcgJiM0Mzs3OTgsOCBAQCBtdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSwKIAl2YWwgPSBGSUVMRF9QUkVQKE1UX1RYRDFfV0xBTl9JRFgsIHdjaWQtJmd0O2lkeCkgfAogCSAgICAgIEZJRUxEX1BSRVAoTVRfVFhEMV9PV05fTUFDLCBvbWFjX2lkeCk7CiAKLQlpZiAoYmFuZF9pZHgpCiYjNDM7CS8qIDB4ZmYgbWVhbnMgQkFORF9BVVRPIHRvIHRoZSBmaXJtd2FyZSwgYW5kIFRHSUQgY2Fubm90IGVuY29kZSBpdCAqLwomIzQzOwlpZiAoYmFuZF9pZHggJmFtcDsmYW1wOyBiYW5kX2lkeCAhPSAweGZmKQogCQl2YWwgfD0gRklFTERfUFJFUChNVF9UWEQxX1RHSUQsIGJhbmRfaWR4KTsKIAogCXR4d2lbMV0gPSBjcHVfdG9fbGUzMih2YWwpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDM6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIwMAoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDM2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZXZpZXdpbmcgdGhlIE1UNzkyNSBNQUMgV3JpdGUgVFhXSSBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIG10NzkyNSBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgYG10NzkyNV9tYWNfd3JpdGVfdHh3aWAgZnVuY3Rpb24uIFRoZSBjb2RlJiMzOTtzIHB1cnBvc2UgaXMgdG8gY29uc3RydWN0IHRoZSB0cmFuc21pdCBkZXNjcmlwdG9yIChUWFdJKSBmb3IgdGhlIGhhcmR3YXJlLiBJIGNhbiBpbW1lZGlhdGVseSBzZWUgdGhlIGNoYW5nZSBmb2N1c2VzIG9uIGhvdyB0aGUgYGJhbmRfaWR4YCBpcyBoYW5kbGVkIHdpdGhpbiB0aGUgYE1UX1RYRDFfVEdJRGAgZmllbGQuCgpQcmV2aW91c2x5LCBpdCBzZWVtcyB0aGUgY29kZSB1bmNvbmRpdGlvbmFsbHkgY2hlY2tlZCBgYmFuZF9pZHhgJiMzOTtzIHRydXRoaW5lc3MuIE5vdywgd2UmIzM5O3JlIGV4cGxpY2l0bHkgY2hlY2tpbmcgaWYgYGJhbmRfaWR4YCBpc24mIzM5O3QgYDB4ZmZgLiBUaGUgY29tbWVudCBjbGFyaWZpZXMgdGhhdCBhIHZhbHVlIG9mIGAweGZmYCBpbXBsaWVzIGBCQU5EX0FVVE9gIGZvciB0aGUgZmlybXdhcmUuIEl0IGFwcGVhcnMgdGhhdCB0aGUgaGFyZHdhcmUmIzM5O3MgYFRHSURgIGZpZWxkIGNhbiYjMzk7dCBkaXJlY3RseSByZXByZXNlbnQgYEJBTkRfQVVUT2AuIFRoaXMgbWFrZXMgc2Vuc2UsIGFzIGEgZGlyZWN0IG1hcHBpbmcgd291bGQgaW50cm9kdWNlIGFtYmlndWl0eS4KClNvLCB0aGUgbG9naWMgbm93IGNvcnJlY3RseSBza2lwcyBzZXR0aW5nIHRoZSBgTVRfVFhEMV9UR0lEYCB3aGVuIGBiYW5kX2lkeGAgaXMgYDB4ZmZgIHdoaWNoIHdpbGwgc2VuZCB0aGUgc2lnbmFsIHRvIHRoZSBoYXJkd2FyZSB0aGF0IGl0IGNhbiBjaG9vc2UgYmFzZWQgb24gdGhlIGxvZ2ljIG9mIHRoZSBgQkFORF9BVVRPYCBzZXR0aW5nLiBUaGF0JiMzOTtzIGEgZ29vZCBmaXgsIGl0IGNsZWFucyB1cCBhIHBvdGVudGlhbCBjb3JuZXIgY2FzZSBhbmQgcHJvYmFibHkgbWFrZXMgdGhlIGZpcm13YXJlJiMzOTtzIGhhbmRsaW5nIG9mIGBCQU5EX0FVVE9gIG1vcmUgcm9idXN0LiBUaGlzIGlzIGEgc3VidGxlIGJ1dCBpbXBvcnRhbnQgY29ycmVjdGlvbiB0byBlbnN1cmUgdGhlIHJpZ2h0IGJhbmQgc2VsZWN0aW9uIGhhcHBlbnMgZm9yIHRoZSB3aXJlbGVzcyB0cmFuc21pc3Npb24uIEl0JiMzOTtzIGEgc29saWQsIHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2UuIEkmIzM5O20gc2F0aXNmaWVkIHdpdGggdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDM6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1X21hY193cml0ZV90eHdpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9NjQwPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo2NDE6bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjMoX19sZTMyICp0eHdpLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNjQyLVx0XHRcdCAgIHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9Njc1PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo2NzY6bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjExKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy02NzctXHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9NzQ2PXZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjc0NzptdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTc0OC1cdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04NDAtXHRpZiAoaXNfODAyMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg0MTpcdFx0bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjModHh3aSwgc2tiLCB3Y2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg0Mi1cdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg0MzpcdFx0bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjExKGRldiwgdHh3aSwgc2tiLCBrZXkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODQ0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg2Ny19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4Njg6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21hY193cml0ZV90eHdpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg2OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNjIyPW10NzkyNV91c2Jfc2Rpb193cml0ZV90eHdpKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYyOS1cdG1lbXNldCh0eHdpLCAwLCBNVF9TRElPX1RYRF9TSVpFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE2MzA6XHRtdDc5MjVfbWFjX3dyaXRlX3R4d2koXHUwMDI2ZGV2LVx1MDAzZW10NzYsIHR4d2ksIHNrYiwgd2NpZCwga2V5LCBwaWQsIHFpZCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjMxLVx0c2tiX3B1c2goc2tiLCBNVF9TRElPX1RYRF9TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zNDI9dm9pZCBtdDc5MjVfbWFjX3NldF9maXhlZF9yYXRlX3RhYmxlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNDMtXHRcdFx0XHQgICAgIHU4IHRibF9pZHgsIHUxNiByYXRlX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNDQ6dm9pZCBtdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM0NS1cdFx0XHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYz05PWludCBtdDc5MjVlX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jLTQ0LVx0cGlkID0gbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChtZGV2LCB3Y2lkLCB0eF9pbmZvLVx1MDAzZXNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmM6NDU6XHRtdDc5MjVfbWFjX3dyaXRlX3R4d2kobWRldiwgdHh3aV9wdHIsIHR4X2luZm8tXHUwMDNlc2tiLCB3Y2lkLCBrZXksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmMtNDYtXHRcdFx0ICAgICAgcGlkLCBxaWQsIDApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzU3CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHNuaXBwZXQsIGZyYW1lZCBhcyBteSBvd24gdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgTVQ3OTI1IE1BQyBMYXllcioqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmNgIGZpbGUuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGZvY3VzIG9uIGxpbmVzIDc0NiB0aHJvdWdoIDgxMC4gTXkgZ3V0IGZlZWxpbmcgaXMgdGVsbGluZyBtZSBzb21ldGhpbmcgaXMgYW1pc3MgaW4gdGhpcyBhcmVhLiBQcm9iYWJseSByZWxhdGVkIHRvIHRoZSBNQUMgbGF5ZXIgcHJvY2Vzc2luZyBvbiB0aGUgbXQ3OTI1LiBJJiMzOTtsbCBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IGFuZCB1bmRlcnN0YW5kIHdoYXQgb3BlcmF0aW9ucyBhcmUgdHlwaWNhbGx5IHBlcmZvcm1lZCBpbiB0aGlzIHNlY3Rpb24gb2YgdGhlIGNvZGViYXNlIGFuZCB3aGVyZSB0aGlzIGJsb2NrIGZpdHMgaW50byB0aGUgd2hvbGUgcGljdHVyZS4gTGV0JiMzOTtzIHNlZSBpZiB0aGlzIHNlY3Rpb24gcmVsYXRlcyB0byB0cmFmZmljIHNjaGVkdWxpbmcsIGZyYW1lIHRyYW5zbWlzc2lvbiwgb3IgcGVyaGFwcyBldmVuIHBvd2VyIG1hbmFnZW1lbnQuIEkmIzM5O20gaG9waW5nIEkgY2FuIGlkZW50aWZ5IHRoZSBzb3VyY2Ugb2YgdGhlIGlzc3VlIHF1aWNrbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDc4MDpcdFx0fSBlbHNlIGlmIChxaWQgXHUwMDNlPSBNVF9UWFFfUFNEKSB7XG4gNzgxOlx0XHRcdHBfZm10ID0gbXQ3Nl9pc19tbWlvKGRldikgPyBNVF9UWF9UWVBFX0NUIDogTVRfVFhfVFlQRV9TRjtcbiA3ODI6XHRcdFx0cV9pZHggPSBNVF9MTUFDX0FMVFgwO1xuIDc4MzpcdFx0fSBlbHNlIHtcbiA3ODQ6XHRcdFx0cF9mbXQgPSBtdDc2X2lzX21taW8oZGV2KSA/IE1UX1RYX1RZUEVfQ1QgOiBNVF9UWF9UWVBFX1NGO1xuIDc4NTpcdFx0XHRxX2lkeCA9IHdtbV9pZHggKiBNVDc2X0NPTk5BQ19NQVhfV01NX1NFVFMgJiM0MztcbiA3ODY6XHRcdFx0XHRtdDc2X2Nvbm5hY19sbWFjX21hcHBpbmcoc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYikpO1xuIDc4NzpcdFxuIDc4ODpcdFx0XHQvKiBjb3VudGluZyBub24tb2ZmbG9hZGluZyBza2JzICovXG4gNzg5Olx0XHRcdHdjaWQtXHUwMDNlc3RhdHMudHhfYnl0ZXMgJiM0Mzs9IHNrYi1cdTAwM2VsZW47XG4gNzkwOlx0XHRcdHdjaWQtXHUwMDNlc3RhdHMudHhfcGFja2V0cyYjNDM7JiM0Mzs7XG4gNzkxOlx0XHR9XG4gNzkyOlx0XG4gNzkzOlx0XHR2YWwgPSBGSUVMRF9QUkVQKE1UX1RYRDBfVFhfQllURVMsIHNrYi1cdTAwM2VsZW4gJiM0Mzsgc3pfdHhkKSB8XG4gNzk0Olx0XHQgICAgICBGSUVMRF9QUkVQKE1UX1RYRDBfUEtUX0ZNVCwgcF9mbXQpIHxcbiA3OTU6XHRcdCAgICAgIEZJRUxEX1BSRVAoTVRfVFhEMF9RX0lEWCwgcV9pZHgpO1xuIDc5NjpcdFx0dHh3aVswXSA9IGNwdV90b19sZTMyKHZhbCk7XG4gNzk3Olx0XG4gNzk4Olx0XHR2YWwgPSBGSUVMRF9QUkVQKE1UX1RYRDFfV0xBTl9JRFgsIHdjaWQtXHUwMDNlaWR4KSB8XG4gNzk5Olx0XHQgICAgICBGSUVMRF9QUkVQKE1UX1RYRDFfT1dOX01BQywgb21hY19pZHgpO1xuIDgwMDpcdFxuIDgwMTpcdFx0LyogMHhmZiBtZWFucyBCQU5EX0FVVE8gdG8gdGhlIGZpcm13YXJlLCBhbmQgVEdJRCBjYW5ub3QgZW5jb2RlIGl0ICovXG4gODAyOlx0XHRpZiAoYmFuZF9pZHggXHUwMDI2XHUwMDI2IGJhbmRfaWR4ICE9IDB4ZmYpXG4gODAzOlx0XHRcdHZhbCB8PSBGSUVMRF9QUkVQKE1UX1RYRDFfVEdJRCwgYmFuZF9pZHgpO1xuIDgwNDpcdFxuIDgwNTpcdFx0dHh3aVsxXSA9IGNwdV90b19sZTMyKHZhbCk7XG4gODA2Olx0XHR0eHdpWzJdID0gMDtcbiA4MDc6XHRcbiA4MDg6XHRcdHZhbCA9IEZJRUxEX1BSRVAoTVRfVFhEM19SRU1fVFhfQ09VTlQsIDE1KTtcbiA4MDk6XHRcbiA4MTA6XHRcdGlmIChrZXkpXG4gODExOlx0XHRcdHZhbCB8PSBNVF9UWEQzX1BST1RFQ1RfRlJBTUU7XG4gODEyOlx0XHRpZiAoaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX0NUTF9OT19BQ0spXG4gODEzOlx0XHRcdHZhbCB8PSBNVF9UWEQzX05PX0FDSztcbiA4MTQ6XHRcdGlmICh3Y2lkLVx1MDAzZWFtc2R1KVxuIDgxNTpcdFx0XHR2YWwgfD0gTVRfVFhEM19IV19BTVNEVTtcbiA4MTY6XHRcbiA4MTc6XHRcdHR4d2lbM10gPSBjcHVfdG9fbGUzMih2YWwpO1xuIDgxODpcdFx0dHh3aVs0XSA9IDA7XG4gODE5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0MjEKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIGJyZWFrZG93biBvZiBteSB0aG91Z2h0IHByb2Nlc3MgYXMgSSBkZWx2ZSBpbnRvIHRoZSBgbXQ3OTI1X21hY193cml0ZV90eHdpYCBmdW5jdGlvbiwgZm9jdXNpbmcgb24gdGhlIG9yaWdpbiBvZiBgYmFuZF9pZHhgOgoKKipEZWNvbnN0cnVjdGluZyBgbXQ3OTI1X21hY193cml0ZV90eHdpYCBhbmQgdGhlIEVsdXNpdmUgYGJhbmRfaWR4YCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdHJhY2UgdGhpcyBgYmFuZF9pZHhgIHZhcmlhYmxlIHdpdGhpbiBgbXQ3OTI1X21hY193cml0ZV90eHdpYC4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBwcmVjaXNlbHkgKndoZXJlKiB0aGlzIGluZGV4IGlzIGJlaW5nIGRlcml2ZWQuIEl0JiMzOTtzIGNydWNpYWwgYmVjYXVzZSBpdCYjMzk7cyBjbGVhcmx5IHJlbGF0ZWQgdG8gYmFuZCBzZWxlY3Rpb24gaW4gdGhlIHJhZGlvIGhhcmR3YXJlLCBhbmQgdGhhdCYjMzk7cyBmdW5kYW1lbnRhbCBmb3IgY29ycmVjdCBwYWNrZXQgdHJhbnNtaXNzaW9uLiBTbywgSSBuZWVkIHRvIGtub3cgaWYgaXQmIzM5O3MgZGVyaXZlZCBmcm9tIHRoZSBkcml2ZXImIzM5O3MgY29uZmlndXJhdGlvbiwgdGhlIGluY29taW5nIHBhY2tldCwgb3IgbWF5YmUgc29tZXRoaW5nIGVsc2UgZW50aXJlbHkuCgpJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyB0aGUgZnVuY3Rpb24mIzM5O3Mgc2lnbmF0dXJlLiBJcyBgYmFuZF9pZHhgIHBhc3NlZCBpbiBkaXJlY3RseSBhcyBhbiBhcmd1bWVudD8gSWYgc28sIHRoYXQgZ2l2ZXMgbWUgYSBuYXJyb3dlciBzY29wZSB0byBodW50IGRvd24gaXRzIHVwc3RyZWFtIG9yaWdpbi4gSWYgaXQmIzM5O3MgYSBsb2NhbCB2YXJpYWJsZSwgSSYjMzk7bGwgbmVlZCB0byB3b3JrIGZyb20gdGhlcmUuIEFyZSB0aGVyZSBhbnkgb3RoZXIgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgaGF2ZSBpbmZvcm1hdGlvbiB0aGF0IGxvb2tzIHJlbGF0ZWQgdG8gdGhpcz8gVGhpbmdzIGxpa2UgdGhlIHJlZ3VsYXRvcnkgZG9tYWluIG9yIGNvbmZpZ3VyZWQgb3BlcmF0aW5nIGJhbmQgc3ByaW5nIHRvIG1pbmQgYXMgdGhpbmdzIEkgY2FuIGNyb3NzLXJlZmVyZW5jZSwgaWYgbmVlZCBiZS4KClRoZW4sIEkmIzM5O2xsIHNjcnV0aW5pemUgdGhlIGZ1bmN0aW9uJiMzOTtzIGJvZHkuIEkmIzM5O2xsIG1ldGljdWxvdXNseSBzY2FuIHRoZSBjb2RlLCBsb29raW5nIGZvciBhbnkgYXNzaWdubWVudHMgb3IgY2FsY3VsYXRpb25zIGludm9sdmluZyBgYmFuZF9pZHhgLiBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFscyB0aGF0IG1pZ2h0IHNldCBgYmFuZF9pZHhgIGJhc2VkIG9uLCBzYXksIHRoZSB0eXBlIG9mIGZyYW1lIGJlaW5nIHRyYW5zbWl0dGVkIChlLmcuLCBjb250cm9sIGZyYW1lcywgZGF0YSBmcmFtZXMsIG1hbmFnZW1lbnQgZnJhbWVzKT8gT3IsIGNvdWxkIGl0IGJlIGRlcml2ZWQgZnJvbSBhIGxvb2t1cCB0YWJsZT8gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGlzIGRyaXZlciwgaXQgd291bGQgbm90IGJlIGEgc3VycHJpc2UgdG8gc2VlIGEgbG90IG9mIGJpdC10d2lkZGxpbmcgYW5kIGhhcmR3YXJlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLgoKTXkgcHJpbWFyeSBnb2FsIGhlcmUgaXMgdG8gZXN0YWJsaXNoIGEgY29tcGxldGUgZGF0YSBmbG93IHBpY3R1cmUgb2YgdGhlIGBiYW5kX2lkeGAgdmFyaWFibGUuIFVsdGltYXRlbHksIHRoZSBxdWVzdGlvbiBpcywgKmhvdyogZG9lcyB0aGUgZHJpdmVyIGRldGVybWluZSB0aGUgYXBwcm9wcmlhdGUgcmFkaW8gYmFuZCBmb3IgYSBnaXZlbiB0cmFuc21pc3Npb24/IEFuZCwgZG9lcyB0aGlzIGFwcHJvYWNoIG1ha2Ugc2Vuc2Ugd2l0aCB0aGUgY2hpcHNldCBkb2N1bWVudGF0aW9uIGFuZCBhbnkgcHJldmlvdXMgZXhwZXJpZW5jZSBJJiMzOTt2ZSBoYWQgd29ya2luZyB3aXRoIHNpbWlsYXIgaGFyZHdhcmU/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3NDUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDc0NTpcdFxuIDc0NjpcdHZvaWRcbiA3NDc6XHRtdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbiA3NDg6XHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbiA3NDk6XHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5LCBpbnQgcGlkLFxuIDc1MDpcdFx0XHQgICAgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgdTMyIGNoYW5nZWQpXG4gNzUxOlx0e1xuIDc1MjpcdFx0c3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvID0gSUVFRTgwMjExX1NLQl9DQihza2IpO1xuIDc1MzpcdFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiA9IGluZm8tXHUwMDNlY29udHJvbC52aWY7XG4gNzU0Olx0XHR1OCBwX2ZtdCwgcV9pZHgsIG9tYWNfaWR4ID0gMCwgd21tX2lkeCA9IDAsIGJhbmRfaWR4ID0gMDtcbiA3NTU6XHRcdHUzMiB2YWwsIHN6X3R4ZCA9IG10NzZfaXNfbW1pbyhkZXYpID8gTVRfVFhEX1NJWkUgOiBNVF9TRElPX1RYRF9TSVpFO1xuIDc1NjpcdFx0Ym9vbCBpc184MDIzID0gaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX0NUTF9IV184MDIxMV9FTkNBUDtcbiA3NTc6XHRcdHN0cnVjdCBtdDc2X3ZpZl9saW5rICptdmlmO1xuIDc1ODpcdFx0Ym9vbCBiZWFjb24gPSAhIShjaGFuZ2VkIFx1MDAyNiAoQlNTX0NIQU5HRURfQkVBQ09OIHxcbiA3NTk6XHRcdFx0XHRcdCAgICBCU1NfQ0hBTkdFRF9CRUFDT05fRU5BQkxFRCkpO1xuIDc2MDpcdFx0Ym9vbCBpbmJhbmRfZGlzYyA9ICEhKGNoYW5nZWQgXHUwMDI2IChCU1NfQ0hBTkdFRF9VTlNPTF9CQ0FTVF9QUk9CRV9SRVNQIHxcbiA3NjE6XHRcdFx0XHRcdFx0IEJTU19DSEFOR0VEX0ZJTFNfRElTQ09WRVJZKSk7XG4gNzYyOlx0XHRzdHJ1Y3QgbXQ3OTJ4X2Jzc19jb25mICptY29uZjtcbiA3NjM6XHRcbiA3NjQ6XHRcdG1jb25mID0gdmlmID8gbXQ3OTJ4X3ZpZl90b19saW5rKChzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqKXZpZi1cdTAwM2VkcnZfcHJpdixcbiA3NjU6XHRcdFx0XHRcdFx0IHdjaWQtXHUwMDNlbGlua19pZCkgOiBOVUxMO1xuIDc2NjpcdFx0bXZpZiA9IG1jb25mID8gKHN0cnVjdCBtdDc2X3ZpZl9saW5rICopXHUwMDI2bWNvbmYtXHUwMDNlbXQ3NiA6IE5VTEw7XG4gNzY3Olx0XG4gNzY4Olx0XHRpZiAobXZpZikge1xuIDc2OTpcdFx0XHRvbWFjX2lkeCA9IG12aWYtXHUwMDNlb21hY19pZHg7XG4gNzcwOlx0XHRcdHdtbV9pZHggPSBtdmlmLVx1MDAzZXdtbV9pZHg7XG4gNzcxOlx0XHRcdGJhbmRfaWR4ID0gbXZpZi1cdTAwM2ViYW5kX2lkeDtcbiA3NzI6XHRcdH1cbiA3NzM6XHRcbiA3NzQ6XHRcdGlmIChpbmJhbmRfZGlzYykge1xuIDc3NTpcdFx0XHRwX2ZtdCA9IE1UX1RYX1RZUEVfRlc7XG4gNzc2Olx0XHRcdHFfaWR4ID0gTVRfTE1BQ19BTFRYMDtcbiA3Nzc6XHRcdH0gZWxzZSBpZiAoYmVhY29uKSB7XG4gNzc4Olx0XHRcdHBfZm10ID0gTVRfVFhfVFlQRV9GVztcbiA3Nzk6XHRcdFx0cV9pZHggPSBNVF9MTUFDX0JDTjA7XG4gNzgwOlx0XHR9IGVsc2UgaWYgKHFpZCBcdTAwM2U9IE1UX1RYUV9QU0QpIHtcbiA3ODE6XHRcdFx0cF9mbXQgPSBtdDc2X2lzX21taW8oZGV2KSA/IE1UX1RYX1RZUEVfQ1QgOiBNVF9UWF9UWVBFX1NGO1xuIDc4MjpcdFx0XHRxX2lkeCA9IE1UX0xNQUNfQUxUWDA7XG4gNzgzOlx0XHR9IGVsc2Uge1xuIDc4NDpcdFx0XHRwX2ZtdCA9IG10NzZfaXNfbW1pbyhkZXYpID8gTVRfVFhfVFlQRV9DVCA6IE1UX1RYX1RZUEVfU0Y7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4NDkKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCYW5kIEluZGV4IEFzc2lnbm1lbnQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBiYW5kX2lkeGAgaXMgc3RhcnRpbmcgYXQgMCwgd2hpY2ggbWFrZXMgc2Vuc2UgYXMgYSBkZWZhdWx0LiBOb3csIGlmIGBtdmlmYCBleGlzdHMsIGl0JiMzOTtzIGJlaW5nIHBvdGVudGlhbGx5IG92ZXJ3cml0dGVuIGJ5IGBtdmlmLSZndDtiYW5kX2lkeGAuIEkgbmVlZCB0byByZW1lbWJlciB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggdGhlIGBNVF9UWEQxX1RHSURgIGZpZWxkLi4uYWggeWVzLCBpdCYjMzk7cyBiZWluZyBwcmVwcGVkIHdpdGggYEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeClgLgoKTm93IEkgc2VlIGl0LiBCZWZvcmUsIGlmIGBiYW5kX2lkeGAgd2FzIHNldCB0byBgMHhmZmAg4oCTIHRoYXQgYEJBTkRfQVVUT2Agb3IgYE1UX0JBTkRfQVVUT2AgY29uc3RhbnQg4oCTIGBGSUVMRF9QUkVQYCB3b3VsZCBsaWtlbHkgY2F1c2UgYSBwcm9ibGVtIHdpdGggYE1UX1RYRDFfVEdJRGAuIFRoZSBwcmVwIGxpa2VseSB3b3VsZCBvdmVyZmxvdyB0aGUgYml0ZmllbGQsIG9yIHBvdGVudGlhbGx5IHNldCB0aGUgVEdJRCB0byBgMHhmZmAgaWYgdGhlIGJpdHMgYWxsb3dlZCB0aGF0IHZhbHVlLiBJdCBjb3VsZCBldmVuIHRyaWdnZXIgYSBjb21waWxlciB3YXJuaW5nIG9yIGJ1ZyBpZiB0aGUgYEZJRUxEX1BSRVBgIG1hY3JvIGluY2x1ZGVzIGFueSBtYXNrIGNoZWNrcy4gQXQgcnVudGltZSwgdGhlIHJlc3VsdCB3b3VsZCBiZSBpbnZhbGlkIGJpdHMgYmVpbmcgc2V0LCBvciBwb3RlbnRpYWxseSBtYXNrZWQuCgpMZXQgbWUganVzdCBxdWlja2x5IHZlcmlmeSB0aGUgYE1UX1RYRDFfVEdJRGAgZGVmaW5pdGlvbiB0byBlbnN1cmUgSSYjMzk7bSByZW1lbWJlcmluZyB0aGlzIGNvcnJlY3RseS4gSXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoZSBmaWVsZCB3aWR0aCBhbmQgaG93IGAweGZmYCBpbXBhY3RzIGl0cyBlbmNvZGluZy4gV2UgbmVlZCB0byBiZSBzdXJlIHRoYXQgdGhlIHByZXBwZWQgdmFsdWUgaXMgYWx3YXlzIHdpdGhpbiB0aGUgYm91bmRzIG9mIHRoaXMgYml0ZmllbGQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01UX1RYRDFfVEdJRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTc0Nz1tdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04MDItXHRpZiAoYmFuZF9pZHggXHUwMDI2XHUwMDI2IGJhbmRfaWR4ICE9IDB4ZmYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4MDM6XHRcdHZhbCB8PSBGSUVMRF9QUkVQKE1UX1RYRDFfVEdJRCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODA0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTgxCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgYE1UX1RYRDFfVEdJRGAqKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBNVF9UWEQxX1RHSURgIGFjdHVhbGx5ICppcyouIElzIGl0IGEgbWFjcm8/IEEgdmFyaWFibGU/IExldCYjMzk7cyBhc3N1bWUgaXQmIzM5O3MgYSBtYWNybywgZm9yIG5vdy4gSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoZSBlbnRpcmUgcHJvamVjdCB0cmVlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgbXQ3NmAgaGVhZGVycyBhbmQgdGhlIHJlc3Qgb2YgdGhlIHJlbGV2YW50IHNvdXJjZSBjb2RlLCB0byBwaW4gZG93biBpdHMgZGVmaW5pdGlvbi4gS25vd2luZyB0aGUgcHJlY2lzZSBkZWZpbml0aW9uIGlzIGFic29sdXRlbHkgY3JpdGljYWwuIFRoaXMgd2lsbCByZXZlYWwgaXRzIGRhdGEgdHlwZSwgcHVycG9zZSBhbmQgaXRzIHJlbGF0aW9uc2hpcCB3aXRoIG90aGVyIHZhcmlhYmxlcyBvciBtb2R1bGVzLiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB3ZSBnZXQgdGhpcyByaWdodC4gV2UgY2FuJiMzOTt0IHByb2NlZWQgdW50aWwgd2UgaGF2ZSBhIHNvbGlkIGhhbmRsZSBvbiBpdHMgc2NvcGUgYW5kIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDAzOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01UX1RYRDFfVEdJRCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjMl9tYWMuaD0zNT1lbnVtIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjMl9tYWMuaC01NS0jZGVmaW5lIE1UX1RYRDFfTE9OR19GT1JNQVRcdFx0QklUKDMxKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYzJfbWFjLmg6NTY6I2RlZmluZSBNVF9UWEQxX1RHSURcdFx0XHRCSVQoMzApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjMl9tYWMuaC01Ny0jZGVmaW5lIE1UX1RYRDFfT1dOX01BQ1x0XHRcdEdFTk1BU0soMjksIDI0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMzX21hYy5oPTIwNT1lbnVtIHR4X2ZyYWdfaWR4IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMuaC0yMzItI2RlZmluZSBNVF9UWEQxX0hEUl9GT1JNQVRcdFx0R0VOTUFTSygxNSwgMTQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMuaDoyMzM6I2RlZmluZSBNVF9UWEQxX1RHSURcdFx0XHRHRU5NQVNLKDEzLCAxMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMzX21hYy5oLTIzNC0jZGVmaW5lIE1UX1RYRDFfV0xBTl9JRFhcdFx0R0VOTUFTSygxMSwgMClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jPTUwND12b2lkIG10NzZfY29ubmFjMl9tYWNfd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNTYyLVx0aWYgKHBoeV9pZHggfHwgYmFuZF9pZHgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jOjU2MzpcdFx0dmFsIHw9IE1UX1RYRDFfVEdJRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNTY0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTc0Nz1tdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04MDItXHRpZiAoYmFuZF9pZHggXHUwMDI2XHUwMDI2IGJhbmRfaWR4ICE9IDB4ZmYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4MDM6XHRcdHZhbCB8PSBGSUVMRF9QUkVQKE1UX1RYRDFfVEdJRCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODA0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jPTg5ND12b2lkIG10Nzk5Nl9tYWNfd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtOTUyLVx0aWYgKGJhbmRfaWR4KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmM6OTUzOlx0XHR2YWwgfD0gRklFTERfUFJFUChNVF9UWEQxX1RHSUQsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jLTk1NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDM6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODcwOQoJCQkJCQkJb3V0cHV0OiAxNzQKCQkJCQkJCXRob3VnaHRzOiAyMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRHJpdmVyIEJ1ZyBGaXgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZml4IGluIGBtdDc2X2Nvbm5hYzNfbWFjLmhgLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCB0aGUgYE1UX1RYRDFfVEdJRGAgZmllbGQsIHdoaWNoIGlzIGRlZmluZWQgYXMgYEdFTk1BU0soMTMsIDEyKWAg4oCTIHRoYXQmIzM5O3MgMiBiaXRzLCBlZmZlY3RpdmVseSAwIHRvIDMuIFRoZSBjcnV4IG9mIHRoZSBpc3N1ZSBpcyBhcm91bmQgdGhlIGBiYW5kX2lkeGAgdmFyaWFibGUuIElmIGBiYW5kX2lkeGAgc29tZWhvdyBlbmRzIHVwIGJlaW5nIGAweGZmYCwgdGhlIGBGSUVMRF9QUkVQYCBtYWNybyB3b3VsZCBtaXNiZWhhdmU7IHBvdGVudGlhbGx5IGNhdXNpbmcgdHJ1bmNhdGlvbiBvciBvdGhlciBmYWlsdXJlcy4gSXQmIzM5O3MgYSBsb2dpYyBidWcgaW4gaG93IHRoZSBwYWNrZXQgdHJhbnNtaXNzaW9uIGRlc2NyaXB0b3IgaXMgYmVpbmcgZ2VuZXJhdGVkLCBwYXJ0aWN1bGFybHkgb24gdGhlIE1UNzkyNSBoYXJkd2FyZS4KCk15IHByaW1hcnkgY29uY2VybiBpcyBhbHdheXM6IGRvZXMgdGhpcyBmaXggaW50cm9kdWNlIGFueSBuZXcgdnVsbmVyYWJpbGl0aWVzPyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBwb3RlbnRpYWwgbGVha3Mgb2YgdW5pbml0aWFsaXplZCBkYXRhIHRvIHVzZXJzcGFjZSwgb3IgZGVwZW5kZW5jaWVzIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLgoKTGV0JiMzOTtzIGJyZWFrIGl0IGRvd246IEZpcnN0LCBhbGwgdGhlIHZhcmlhYmxlcyBpbnZvbHZlZCB3aXRoaW4gYG10NzkyNV9tYWNfd3JpdGVfdHh3aWAgdGhhdCBhcmUgaW52b2x2ZWQgaW4gdGhpcyBmaXggYXJlIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgKGluIHRoaXMgY2FzZSwgYGJhbmRfaWR4YCBnZXRzIGEgdmFsdWUgb2YgYDBgKS4gU2Vjb25kLCB0aGVyZSYjMzk7cyBubyBkaXJlY3QgY29weSB0byB1c2Vyc3BhY2UgaGVyZTogbm8gYGNvcHlfdG9fdXNlcmAsIG5vIGBwdXRfdXNlcmAsIG5vIG5ldGxpbmsgbWVzc2FnZXMsIGFuZCBubyBpb2N0bCBjYWxscyBpbnZvbHZlZC4gVGhpcyBlZmZlY3RpdmVseSBlbGltaW5hdGVzIHRoZSByaXNrIG9mIGxlYWtpbmcgcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBkYXRhLiBGaW5hbGx5LCB0aGlzIGNoYW5nZSBpc24mIzM5O3QgdG91Y2hpbmcgbWVtb3J5IGluaXRpYWxpemF0aW9uIHJvdXRpbmVzIG9yIGJ1ZmZlciBib3VuZGFyaWVzLCBzbyB0aGVyZSYjMzk7cyBubyBpbmNyZWFzZWQgcmlzayB0aGVyZS4KCkdpdmVuIHRoaXMgYW5hbHlzaXMsIEkmIzM5O20gY29uZmlkZW50IHRoYXQgdGhlIGFuc3dlciB0byBOZWVkc0tNU0FOIGlzICYjMzQ7ZmFsc2UmIzM0Oy4gVGhpcyBhcHBlYXJzIHRvIGJlIGEgY2xlYW4sIHNhZmUgZml4LiBUaW1lIHRvIGNhbGwgaXQgaW4gd2l0aCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwMzoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2FsY3VsYXRpb24gb2YgaGFyZHdhcmUgVFggZGVzY3JpcHRvciBiaXRzIGluIGBtdDc5MjVfbWFjX3dyaXRlX3R4d2koKWAgYnkgYXZvaWRpbmcgdGhlIHVzZSBvZiBgRklFTERfUFJFUChNVF9UWEQxX1RHSUQsIGJhbmRfaWR4KWAgd2hlbiBgYmFuZF9pZHggPT0gMHhmZmAgKEJBTkRfQVVUTykuXG5cbkFsbCBsb2NhbCB2YXJpYWJsZXMsIGluY2x1ZGluZyBgYmFuZF9pZHhgLCBhcmUgZXhwbGljaXRseSBpbml0aWFsaXplZCwgYW5kIHRoZSBmdW5jdGlvbiB3cml0ZXMgZGVzY3JpcHRvciBmaWVsZHMgdG8gYSBwcmUtYWxsb2NhdGVkL21hbmFnZWQgYnVmZmVyIGZvciBoYXJkd2FyZSB0cmFuc21pc3Npb24uIE5vIG1lbW9yeSBjb3B5aW5nIHRvIHVzZXIgc3BhY2UsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgdXNhZ2UsIG9yIHVuaW5pdGlhbGl6ZWQgcGFkZGluZy9idWZmZXIgaGFuZGxpbmcgaXMgaW50cm9kdWNlZCBvciBtb2RpZmllZC4gVGhlcmVmb3JlLCB0aGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNhbGN1bGF0aW9uIG9mIGhhcmR3YXJlIFRYIGRlc2NyaXB0b3IgYml0cyBpbiBgbXQ3OTI1X21hY193cml0ZV90eHdpKClgIGJ5IGF2b2lkaW5nIHRoZSB1c2Ugb2YgYEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeClgIHdoZW4gYGJhbmRfaWR4ID09IDB4ZmZgIChCQU5EX0FVVE8pLlxuXG5BbGwgbG9jYWwgdmFyaWFibGVzLCBpbmNsdWRpbmcgYGJhbmRfaWR4YCwgYXJlIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQsIGFuZCB0aGUgZnVuY3Rpb24gd3JpdGVzIGRlc2NyaXB0b3IgZmllbGRzIHRvIGEgcHJlLWFsbG9jYXRlZC9tYW5hZ2VkIGJ1ZmZlciBmb3IgaGFyZHdhcmUgdHJhbnNtaXNzaW9uLiBObyBtZW1vcnkgY29weWluZyB0byB1c2VyIHNwYWNlLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHVzYWdlLCBvciB1bmluaXRpYWxpemVkIHBhZGRpbmcvYnVmZmVyIGhhbmRsaW5nIGlzIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuIFRoZXJlZm9yZSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTFUMDM6MTg6MzAuNzgwNDYyMDFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzE0MDk4NjI2MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTI1VVwiLFxuICAgIFwiTVQ3OTI1X0NPTU1PTlwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTUVESUFURUtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfbWFjX3dyaXRlX3R4d2lcIixcbiAgICBcIm10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYlwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNhbGN1bGF0aW9uIG9mIGhhcmR3YXJlIFRYIGRlc2NyaXB0b3IgYml0cyBpbiBgbXQ3OTI1X21hY193cml0ZV90eHdpKClgIGJ5IGF2b2lkaW5nIHRoZSB1c2Ugb2YgYEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeClgIHdoZW4gYGJhbmRfaWR4ID09IDB4ZmZgIChCQU5EX0FVVE8pLlxcblxcbkFsbCBsb2NhbCB2YXJpYWJsZXMsIGluY2x1ZGluZyBgYmFuZF9pZHhgLCBhcmUgZXhwbGljaXRseSBpbml0aWFsaXplZCwgYW5kIHRoZSBmdW5jdGlvbiB3cml0ZXMgZGVzY3JpcHRvciBmaWVsZHMgdG8gYSBwcmUtYWxsb2NhdGVkL21hbmFnZWQgYnVmZmVyIGZvciBoYXJkd2FyZSB0cmFuc21pc3Npb24uIE5vIG1lbW9yeSBjb3B5aW5nIHRvIHVzZXIgc3BhY2UsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgdXNhZ2UsIG9yIHVuaW5pdGlhbGl6ZWQgcGFkZGluZy9idWZmZXIgaGFuZGxpbmcgaXMgaW50cm9kdWNlZCBvciBtb2RpZmllZC4gVGhlcmVmb3JlLCB0aGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGJhbmRfaWR4IGhhbmRsaW5nIGluIG10NzkyNV9tYWNfd3JpdGVfdHh3aSgpIHdoZW4gd3JpdGluZyBUWCB3aXJlbGVzcyBpbmZvcm1hdGlvbiBkZXNjcmlwdG9ycy4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgZGV2aWNlcyAoTVQ3OTI1VSkgd2hpY2ggYXJlIHJlYWNoYWJsZSBhbmQgZnV6emFibGUgdmlhIFVTQiBkZXZpY2UgZW11bGF0aW9uIChVU0IgUmF3IEdhZGdldCAvIHZ1c2IpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoxODozMC43ODA0NjU4MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQyOTQwNzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZGE1YmI2YjA2OWFkZWNkMmE2OTM1MTgyYjZhNjcyY2U1NzQyYmEwZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIFNlcCAxMSAwMzoxODozMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jXFxuaW5kZXggMTAxZjU3MWIwMjdmMS4uM2I4MmM5ZGUyNmM1YiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jXFxuQEAgLTc5OCw3ICs3OTgsOCBAQCBtdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcXG4gXFx0dmFsID0gRklFTERfUFJFUChNVF9UWEQxX1dMQU5fSURYLCB3Y2lkLVxcdTAwM2VpZHgpIHxcXG4gXFx0ICAgICAgRklFTERfUFJFUChNVF9UWEQxX09XTl9NQUMsIG9tYWNfaWR4KTtcXG4gXFxuLVxcdGlmIChiYW5kX2lkeClcXG4rXFx0LyogMHhmZiBtZWFucyBCQU5EX0FVVE8gdG8gdGhlIGZpcm13YXJlLCBhbmQgVEdJRCBjYW5ub3QgZW5jb2RlIGl0ICovXFxuK1xcdGlmIChiYW5kX2lkeCBcXHUwMDI2XFx1MDAyNiBiYW5kX2lkeCAhPSAweGZmKVxcbiBcXHRcXHR2YWwgfD0gRklFTERfUFJFUChNVF9UWEQxX1RHSUQsIGJhbmRfaWR4KTtcXG4gXFxuIFxcdHR4d2lbMV0gPSBjcHVfdG9fbGUzMih2YWwpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoxODozMS4yMjQwNjMyOTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjExMjA3OTA0MjI2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MjVVXCIsXG4gICAgXCJNVDc5MjVfQ09NTU9OXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9NRURJQVRFS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzkyNV9tYWNfd3JpdGVfdHh3aVwiLFxuICAgIFwibXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYmFuZF9pZHggaGFuZGxpbmcgaW4gbXQ3OTI1X21hY193cml0ZV90eHdpKCkgd2hlbiB3cml0aW5nIFRYIHdpcmVsZXNzIGluZm9ybWF0aW9uIGRlc2NyaXB0b3JzLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIChNVDc5MjVVKSB3aGljaCBhcmUgcmVhY2hhYmxlIGFuZCBmdXp6YWJsZSB2aWEgVVNCIGRldmljZSBlbXVsYXRpb24gKFVTQiBSYXcgR2FkZ2V0IC8gdnVzYikuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZGE1YmI2YjA2OWFkZWNkMmE2OTM1MTgyYjZhNjcyY2U1NzQyYmEwZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDExIDAzOjE4OjMwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuY1xuaW5kZXggMTAxZjU3MWIwMjdmMS4uM2I4MmM5ZGUyNmM1YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuY1xuQEAgLTc5OCw3ICs3OTgsOCBAQCBtdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbiBcdHZhbCA9IEZJRUxEX1BSRVAoTVRfVFhEMV9XTEFOX0lEWCwgd2NpZC1cdTAwM2VpZHgpIHxcbiBcdCAgICAgIEZJRUxEX1BSRVAoTVRfVFhEMV9PV05fTUFDLCBvbWFjX2lkeCk7XG4gXG4tXHRpZiAoYmFuZF9pZHgpXG4rXHQvKiAweGZmIG1lYW5zIEJBTkRfQVVUTyB0byB0aGUgZmlybXdhcmUsIGFuZCBUR0lEIGNhbm5vdCBlbmNvZGUgaXQgKi9cbitcdGlmIChiYW5kX2lkeCBcdTAwMjZcdTAwMjYgYmFuZF9pZHggIT0gMHhmZilcbiBcdFx0dmFsIHw9IEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeCk7XG4gXG4gXHR0eHdpWzFdID0gY3B1X3RvX2xlMzIodmFsKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAzOjE4OjMxLjIyNDA2NDUwM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ3NDkwMDA3OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXNzZXNzIHRoaXMgcGF0Y2gncyBmdXp6aW5nIHBvdGVudGlhbCwgYW5kIHdoZXJlIHRvIGZvY3VzIG91ciBlZmZvcnRzLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2UuIEl0IGxvb2tzIGxpa2Ugd2UgYXJlIGRlYWxpbmcgd2l0aCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBtdDc5MjVfbWFjX3dyaXRlX3R4d2lgIGZ1bmN0aW9uLiBUaGF0J3Mgb3VyIGZvY2FsIHBvaW50LlxuXG5CZWZvcmUgSSBqdW1wIGludG8gZGlzc2VjdGluZyB0aGUgZnVuY3Rpb24gaXRzZWxmLCBsZXQncyBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyIHRoZSAqY29udGV4dCogb2YgYG10NzkyNWAuIElzIHRoaXMgYSBVU0IsIFBDSSwgb3IgU0RJTyBkZXZpY2U/IENhbiB3ZSBlYXNpbHkgZW11bGF0ZSBpdCwgb3IgaXMgaXQgbW9yZSBvZiBhIGhhcmR3YXJlLWRlcGVuZGVudCBQQ0llL1VTQiBzY2VuYXJpbz8gVW5kZXJzdGFuZGluZyB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBhbmQgdGhlIHBvdGVudGlhbCBmb3IgZW11bGF0aW9uIGlzIGNyaXRpY2FsLiBDYW4gd2UgdXNlIFVTQiBnYWRnZXRzIHRvIHNpbXVsYXRlIGFuIGBtdDc5MjVgPyBLbm93aW5nIHRoZSBjb25uZWN0aW9uIHR5cGUgKFVTQiwgUENJLCBTRElPKSBkaWN0YXRlcyBzbyBtYW55IHRoaW5ncyBhYm91dCBob3cgd2UnZCBhcHByb2FjaCBmdXp6aW5nLiBJdCBpbmZvcm1zIHRoZSBzZXR1cCBhbmQgbWFrZXMgdGhlIGZ1enppbmcgYXBwcm9hY2ggdmVyeSBkaWZmZXJlbnQuIFRoaXMgaXMgdGhlIGZpcnN0IHF1ZXN0aW9uIEkgbmVlZCBhbnN3ZXJlZCBiZWZvcmUgSSBwcm9jZWVkIHdpdGggYW55IGRlZXBlciBhbmFseXNpcyBvZiB0aGUgY29kZS4gTGV0J3MgcmVzZWFyY2ggd2hhdCBgbXQ3OTI1YCBpcyBpbiByZWFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTg4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDM6MTg6MzUuOTczMDY3NDQ4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NDcxNzQwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MjVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDQwOTMgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZz01MD1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjUxOnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU9NTE9b2JqLSQoQ09ORklHX01UNzk5NkUpICs9IG10Nzk5Ni9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjUyOm9iai0kKENPTkZJR19NVDc5MjVfQ09NTU9OKSArPSBtdDc5MjUvXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MTgwPXN0YXRpYyBpbmxpbmUgYm9vbCBpc19jb25uYWMzKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTE4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MTg1OnN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc5MjUoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTE4Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jPTU0PWludCBtdDc2X2Nvbm5hY19tY3VfaW5pdF9kb3dubG9hZChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTMyIGFkZHIsIHUzMiBsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jLTY5LVxcdCAgICAoaXNfY29ubmFjMihkZXYpIFxcdTAwMjZcXHUwMDI2IGFkZHIgPT0gMHg5MDAwMDApIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYzo3MDpcXHQgICAgKChpc19tdDc5MjUoZGV2KSB8fCBpc19tdDc5MjcoZGV2KSkgXFx1MDAyNlxcdTAwMjYgKGFkZHIgPT0gMHg5MDAwMDAgfHwgYWRkciA9PSAweGUwMDAyODAwKSkgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jLTcxLVxcdCAgICAoaXNfbXQ3OTI4KGRldikgXFx1MDAyNlxcdTAwMjYgKGFkZHIgPT0gMHg5MDAwMDAgfHwgYWRkciA9PSAweGUwMDAyMDAwKSkgfHxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlLTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTVQ3OTI1X0NPTU1PTikgKz0gbXQ3OTI1LWNvbW1vbi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfTVQ3OTI1RSkgKz0gbXQ3OTI1ZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfTVQ3OTI1VSkgKz0gbXQ3OTI1dS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGUtNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo3Om10NzkyNS1jb21tb24teSA6PSBtYWMubyBtY3UubyByZWdkLm8gbWFpbi5vIGluaXQubyBkZWJ1Z2ZzLm8gbmFuLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo4Om10NzkyNS1jb21tb24tJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjk6bXQ3OTI1ZS15IDo9IHBjaS5vIHBjaV9tYWMubyBwY2lfbWN1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZToxMDptdDc5MjV1LXkgOj0gdXNiLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo0OiNpbmNsdWRlIFxcXCJtdDc5MjUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNS0jaW5jbHVkZSBcXFwibWN1LmhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9Nz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjg6bXQ3OTI1X3JlZ19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTMtXFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTQ6XFx0bXQ3OTI1X21jdV9yZWd2YWwoZGV2LCBkZXYtXFx1MDAzZW10NzYuZGVidWdmc19yZWcsIFxcdTAwMjZyZWd2YWwsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNS1cXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTIwPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjE6bXQ3OTI1X3JlZ19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNy1cXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODpcXHRyZXQgPSBtdDc5MjVfbWN1X3JlZ3ZhbChkZXYsIGRldi1cXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXFx1MDAyNnJlZ3ZhbCwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yOS1cXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozNjpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZWd2YWwsIG10NzkyNV9yZWdfZ2V0LCBtdDc5MjVfcmVnX3NldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzctXFx0XFx0XFx0IFxcXCIweCUwOGxseFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTM4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mzk6bXQ3OTI1X2Z3X2RlYnVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDUtXFx0ZGV2LVxcdTAwM2Vmd19kZWJ1ZyA9ICh1OCl2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjQ2OlxcdG10NzkyNV9tY3VfZndfbG9nXzJfaG9zdChkZXYsIGRldi1cXHUwMDNlZndfZGVidWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz01Mz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjU0Om10NzkyNV9md19kZWJ1Z19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy02Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NjM6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWcsIG10NzkyNV9md19kZWJ1Z19nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjY0OlxcdFxcdFxcdCBtdDc5MjVfZndfZGVidWdfc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTY1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTY4PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjY5Om10NzkyNV9zZXFfcHV0c19hcnJheShzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKnN0cixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNzAtXFx0XFx0ICAgICAgczggdmFsW11bMl0sIGludCBsZW4sIHU4IGJhbmRfaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo4MzojZGVmaW5lIG10NzkyNV9wcmludF90eHB3cl9lbnRyeShwcmVmaXgsIHJhdGUsIGlkeClcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTg0LSh7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo4NTpcXHRtdDc5MjVfc2VxX3B1dHNfYXJyYXkocywgI3ByZWZpeCBcXFwiICh0bWFjKVxcXCIsXFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy04Ni1cXHRcXHRcXHQgICAgICB0eHB3ci1cXHUwMDNlcmF0ZSxcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9OTE9c3RhdGljIGlubGluZSB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjkyOm10NzkyNV9laHRfdHhwd3Ioc3RydWN0IHNlcV9maWxlICpzLCBzdHJ1Y3QgbXQ3OTI1X3R4cHdyICp0eHB3ciwgdTggYmFuZF9pZHgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTkzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy05Ny1cXHRcXHQgICBcXFwibWNzMTJcXFwiLCBcXFwibWNzMTNcXFwiLCBcXFwibWNzMTRcXFwiLCBcXFwibWNzMTVcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6OTg6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2LCBlaHQyNiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo5OTpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUNTIsIGVodDUyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwMDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMTA2LCBlaHQxMDYsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTAxOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQyNDIsIGVodDI0MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDI6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDQ4NCwgZWh0NDg0LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTA0OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTYsIGVodDk5NiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDU6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngyLCBlaHQ5OTZ4MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDY6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nng0LCBlaHQ5OTZ4NCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDc6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2XzUyLCBlaHQyNl81MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDg6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2XzEwNiwgZWh0MjZfMTA2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwOTpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUNDg0XzI0MiwgZWh0NDg0XzI0MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTA6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nl80ODQsIGVodDk5Nl80ODQsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTExOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZfNDg0XzI0MiwgZWh0OTk2XzQ4NF8yNDIsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTEyOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZ4Ml80ODQsIGVodDk5NngyXzQ4NCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTM6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngzLCBlaHQ5OTZ4MywgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTQ6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngzXzQ4NCwgZWh0OTk2eDNfNDg0LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTExNS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MTE3PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTE4Om10NzkyNV90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTExOS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEyMC1cXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKHMtXFx1MDAzZXByaXZhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMjE6XFx0c3RydWN0IG10NzkyNV90eHB3ciAqdHhwd3IgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMjItXFx0dTggYmFuZF9pZHggPSBkZXYtXFx1MDAzZW1waHkuYmFuZF9pZHg7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTMwLVxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEzMTpcXHRyZXQgPSBtdDc5MjVfZ2V0X3R4cHdyX2luZm8oZGV2LCBiYW5kX2lkeCwgdHhwd3IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMzItXFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMzgtXFx0XFx0ICAgXFxcIiBcXFwiLCBcXFwiMW1cXFwiLCBcXFwiMm1cXFwiLCBcXFwiNW1cXFwiLCBcXFwiMTFtXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEzOTpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoQ0NLLCBjY2ssIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE0My1cXHRcXHQgICBcXFwiNDhtXFxcIiwgXFxcIjU0bVxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNDQ6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KE9GRE0sIG9mZG0sIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE0OC1cXHRcXHQgICBcXFwibWNzNlxcXCIsIFxcXCJtY3M3XFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE0OTpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSFQyMCwgaHQyMCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTUzLVxcdFxcdCAgIFxcXCJtY3M2XFxcIiwgXFxcIm1jczdcXFwiLCBcXFwibWNzMzJcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTU0OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIVDQwLCBodDQwLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNTgtXFx0XFx0ICAgXFxcIm1jczZcXFwiLCBcXFwibWNzN1xcXCIsIFxcXCJtY3M4XFxcIiwgXFxcIm1jczlcXFwiLCBcXFwibWNzMTBcXFwiLCBcXFwibWNzMTFcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTU5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQyMCwgdmh0MjAsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTYwOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQ0MCwgdmh0NDAsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjI6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDgwLCB2aHQ4MCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjM6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDE2MCwgdmh0MTYwLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE2NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTY1OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTI2LCBoZTI2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2NjpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU1MiwgaGU1MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjc6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMTA2LCBoZTEwNiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjg6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMjQyLCBoZTI0MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjk6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFNDg0LCBoZTQ4NCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE3MTpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU5OTYsIGhlOTk2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE3MjpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU5OTZ4MiwgaGU5OTZ4MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE3NDpcXHRtdDc5MjVfZWh0X3R4cHdyKHMsIHR4cHdyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE3NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0xODE9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxODI6bXQ3OTI1X3BtX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xODMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIwNS1cXHRwbS1cXHUwMDNlZW5hYmxlX3VzZXIgPSB2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjIwNjpcXHRtdDc5MjVfc2V0X3J1bnRpbWVfcG0oZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjA3LVxcdG10NzZfY29ubmFjX3Bvd2VyX3NhdmVfc2NoZWQoXFx1MDAyNmRldi1cXHUwMDNlbXBoeSwgcG0pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTIxND1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjIxNTptdDc5MjVfcG1fZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMTYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjI0OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3BtLCBtdDc5MjVfcG1fZ2V0LCBtdDc5MjVfcG1fc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjI2PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjI3Om10NzkyNV9kZWVwX3NsZWVwX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMjgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI0Mi1cXHRwbS1cXHUwMDNlZHNfZW5hYmxlID0gZW5hYmxlIFxcdTAwMjZcXHUwMDI2ICFtb25pdG9yO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNDM6XFx0bXQ3OTI1X21jdV9zZXRfZGVlcF9zbGVlcChkZXYsIHBtLVxcdTAwM2Vkc19lbmFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNDQtb3V0Olxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTI1MD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI1MTptdDc5MjVfZGVlcF9zbGVlcF9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI1Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNjA6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZHMsIG10NzkyNV9kZWVwX3NsZWVwX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjYxOlxcdFxcdFxcdCBtdDc5MjVfZGVlcF9zbGVlcF9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yNjM9REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcG1faWRsZV90aW1lb3V0LCBtdDc5MnhfcG1faWRsZV90aW1lb3V0X2dldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI2NjpzdGF0aWMgaW50IG10NzkyNV9jaGlwX3Jlc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI2Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjc4LVxcdFxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI3OTpcXHRcXHRyZXQgPSBtdDc5MjVfbWN1X2NoaXBfY29uZmlnKGRldiwgXFxcImFzc2VydFxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yODAtXFx0XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4NzpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZXNldCwgTlVMTCwgbXQ3OTI1X2NoaXBfcmVzZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODk6aW50IG10NzkyNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zMDQtXFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cXHUwMDNlbXQ3Ni5kZXYsIFxcXCJ0eHBvd2VyX3NrdVxcXCIsIGRpcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MzA1OlxcdFxcdFxcdFxcdCAgICBtdDc5MjVfdHhwd3IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zMDYtXFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwidHhfc3RhdHNcXFwiLCAwNDAwLCBkaXIsIGRldiwgXFx1MDAyNm10NzkyeF90eF9zdGF0c19mb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy04LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9maXJtd2FyZS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo5OiNpbmNsdWRlIFxcXCJtdDc5MjUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTAtI2luY2x1ZGUgXFxcInJlZ2QuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTQ6c3RhdGljIHNzaXplX3QgbXQ3OTI1X3RoZXJtYWxfdGVtcF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTUtXFx0XFx0XFx0XFx0XFx0c3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjQtXFx0XFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUobWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI1OlxcdFxcdHRlbXBlcmF0dXJlID0gbXQ3OTI1X21jdV9nZXRfdGVtcGVyYXR1cmUocGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjYtXFx0XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UobWRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMzYtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzozNzpzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSX1JPKHRlbXAxX2lucHV0LCBtdDc5MjVfdGhlcm1hbF90ZW1wLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjM5OnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICptdDc5MjVfaHdtb25fYXR0cnNbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDAtXFx0XFx1MDAyNnNlbnNvcl9kZXZfYXR0cl90ZW1wMV9pbnB1dC5kZXZfYXR0ci5hdHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTQyLX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjQzOkFUVFJJQlVURV9HUk9VUFMobXQ3OTI1X2h3bW9uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjQ1OnN0YXRpYyBpbnQgbXQ3OTI1X3RoZXJtYWxfaW5pdChzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy00Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjU0OlxcdG5hbWUgPSBkZXZtX2thc3ByaW50ZihcXHUwMDI2d2lwaHktXFx1MDAzZWRldiwgR0ZQX0tFUk5FTCwgXFxcIm10NzkyNV8lc1xcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTU1LVxcdFxcdFxcdCAgICAgIHdpcGh5X25hbWUod2lwaHkpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy01OS1cXHRod21vbiA9IGRldm1faHdtb25fZGV2aWNlX3JlZ2lzdGVyX3dpdGhfZ3JvdXBzKFxcdTAwMjZ3aXBoeS1cXHUwMDNlZGV2LCBuYW1lLCBwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjYwOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBtdDc5MjVfaHdtb25fZ3JvdXBzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNjEtXFx0cmV0dXJuIFBUUl9FUlJfT1JfWkVSTyhod21vbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjY0OnN0YXRpYyB2b2lkIG10NzkyNV9tYWNfaW5pdF9iYXNpY19yYXRlcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy02NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNzMtXFx0XFx0ICAgICAgIEZJRUxEX1BSRVAoTVRfVFhfUkFURV9JRFgsIHJhdGUgXFx1MDAyNiBHRU5NQVNLKDcsIDApKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NzQ6XFx0XFx0bXQ3OTI1X21hY19zZXRfZml4ZWRfcmF0ZV90YWJsZShkZXYsIGlkeCwgcmF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTc1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy03Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6Nzg6aW50IG10NzkyNV9tYWNfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy03OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtODYtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE1UNzkyeF9XVEJMX1NJWkU7IGkrKylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6ODc6XFx0XFx0bXQ3OTI1X21hY193dGJsX3VwZGF0ZShkZXYsIGksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTg4LVxcdFxcdFxcdFxcdCAgICAgICBNVF9XVEJMX1VQREFURV9BRE1fQ09VTlRfQ0xFQVIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo5MjpcXHRtdDc5MjVfbWFjX2luaXRfYmFzaWNfcmF0ZXMoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo5ODpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWFjX2luaXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy05OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTAwOnN0YXRpYyBpbnQgX19tdDc5MjVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMDEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTExMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTEyOlxcdHJldCA9IG10NzkyNV9tY3Vfc2V0X2VlcHJvbShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMTMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjExNjpcXHRyZXQgPSBtdDc5MjVfbWFjX2luaXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTE3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTIwLVxcdGlmIChpc19tdDc5MjcoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTIxOlxcdFxcdHJldCA9IG10NzkyNV9tY3Vfc2V0X2RiZGMoXFx1MDAyNmRldi1cXHUwMDNlbXBoeSwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEyMi1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMzM6c3RhdGljIGludCBtdDc5MjVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTQ1OlxcdFxcdHJldCA9IF9fbXQ3OTI1X2luaXRfaGFyZHdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTQ2LVxcdFxcdGlmICghcmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTYzOnN0YXRpYyBpbnQgbXQ3OTI1X2luaXRfbmFuX2NhcChzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE2NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTg5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxOTA6c3RhdGljIHZvaWQgbXQ3OTI1X2luaXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE5MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxOTY6XFx0cmV0ID0gbXQ3OTI1X2luaXRfaGFyZHdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTk3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjAwLVxcdG10NzZfc2V0X3N0cmVhbV9jYXBzKFxcdTAwMjZkZXYtXFx1MDAzZW1waHksIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMDE6XFx0bXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHMoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjAyLVxcdG10NzkyeF9jb25maWdfbWFjX2FkZHJfbGlzdChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIwNDpcXHRyZXQgPSBtdDc5MjVfaW5pdF9tbG9fY2FwcyhcXHUwMDI2ZGV2LVxcdTAwM2VwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMDUtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjEwOlxcdGRldi1cXHUwMDNlbXQ3Ni5pbml0X3dpcGh5ID0gbXQ3OTI1X2luaXRfbmFuX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjExLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjE5OlxcdHJldCA9IG10NzkyNV9pbml0X2RlYnVnZnMoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjIwLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIyNTpcXHRyZXQgPSBtdDc5MjVfdGhlcm1hbF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIyNi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMzE6XFx0cmV0ID0gbXQ3OTI1X21jdV9zZXRfdGhlcm1hbF9wcm90ZWN0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIzMi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNDA6XFx0bXQ3OTI1X21jdV9zZXRfZGVlcF9zbGVlcChkZXYsIGRldi1cXHUwMDNlcG0uZHNfZW5hYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjQxLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNDM6aW50IG10NzkyNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNTMtXFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlcG0ucHNfd29yaywgbXQ3OTJ4X3BtX3Bvd2VyX3NhdmVfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI1NDpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VtbG9fcG1fd29yaywgbXQ3OTI1X21sb19wbV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjU1LVxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VwbS53YWtlX3dvcmssIG10NzkyeF9wbV93YWtlX3dvcmspO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI2MS1cXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5Lm1hY193b3JrLCBtdDc5MnhfbWFjX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNjI6XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlcGh5LnNjYW5fd29yaywgbXQ3OTI1X3NjYW5fd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI2MzpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2Vjb3JlZHVtcC53b3JrLCBtdDc5MjVfY29yZWR1bXBfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI2NC0jaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjY1OlxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VpcHY2X25zX3dvcmssIG10NzkyNV9zZXRfaXB2Nl9uc193b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjY2LVxcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXFx1MDAyNmRldi1cXHUwMDNlaXB2Nl9uc19saXN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI3MTpcXHRJTklUX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlcmVzZXRfd29yaywgbXQ3OTI1X21hY19yZXNldF93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjcyOlxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2Vpbml0X3dvcmssIG10NzkyNV9pbml0X3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI3NDpcXHRJTklUX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlcGh5LnJvY193b3JrLCBtdDc5MjVfcm9jX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNzUtXFx0dGltZXJfc2V0dXAoXFx1MDAyNmRldi1cXHUwMDNlcGh5LnJvY190aW1lciwgbXQ3OTJ4X3JvY190aW1lciwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMzAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzozMDI6XFx0aHctXFx1MDAzZXdpcGh5LVxcdTAwM2VyZWdfbm90aWZpZXIgPSBtdDc5MjVfcmVnZF9ub3RpZmllcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMzAzLVxcdGRldi1cXHUwMDNlbXBoeS5zYmFuZF8yZy5zYmFuZC5odF9jYXAuY2FwIHw9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMzI5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MzMwOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9yZWdpc3Rlcl9kZXZpY2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNi0jaW5jbHVkZSBcXHUwMDNjbGludXgvdGltZWtlZXBpbmcuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo3OiNpbmNsdWRlIFxcXCJtdDc5MjUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04LSNpbmNsdWRlIFxcXCIuLi9kbWEuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEzOmJvb2wgbXQ3OTI1X21hY193dGJsX3VwZGF0ZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBpbnQgaWR4LCB1MzIgbWFzaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoyOTpzdGF0aWMgdm9pZCBtdDc5MjVfbWFjX3N0YV9wb2xsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNjUtXFx0XFx0aWR4ID0gbWxpbmstXFx1MDAzZXdjaWQuaWR4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjY2OlxcdFxcdGFkZHIgPSBtdDc5MjVfbWFjX3d0YmxfbG1hY19hZGRyKGRldiwgaWR4LCBNVF9XVEJMX0FDMF9DVFRfT0ZGU0VUKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy02Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg0LVxcdFxcdGlmIChjbGVhcikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg1OlxcdFxcdFxcdG10NzkyNV9tYWNfd3RibF91cGRhdGUoZGV2LCBpZHgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODYtXFx0XFx0XFx0XFx0XFx0ICAgICAgIE1UX1dUQkxfVVBEQVRFX0FETV9DT1VOVF9DTEVBUik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTMwOlxcdFxcdGFkZHIgPSBtdDc5MjVfbWFjX3d0YmxfbG1hY19hZGRyKGRldiwgaWR4LCA2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzEtXFx0XFx0dmFsID0gbXQ3Nl9ycihkZXYsIGFkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEzMi1cXHRcXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBSQVRFX0lORk9fRkxBR1NfRUhUX01DUykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEzMzpcXHRcXHRcXHRhZGRyID0gbXQ3OTI1X21hY193dGJsX2xtYWNfYWRkcihkZXYsIGlkeCwgNSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTM0LVxcdFxcdFxcdHZhbCA9IG10NzZfcnIoZGV2LCBhZGRyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0OC1cXHRcXHQvKiBnZXQgc2lnbmFsIHN0cmVuZ3RoIG9mIHJlc3AgZnJhbWVzIChDVFMvQkEvQUNLKSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0OTpcXHRcXHRhZGRyID0gbXQ3OTI1X21hY193dGJsX2xtYWNfYWRkcihkZXYsIGlkeCwgMzQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE1MC1cXHRcXHR2YWwgPSBtdDc2X3JyKGRldiwgYWRkcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTY0OnZvaWQgbXQ3OTI1X21hY19zZXRfZml4ZWRfcmF0ZV90YWJsZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2NS1cXHRcXHRcXHRcXHQgICAgIHU4IHRibF9pZHgsIHUxNiByYXRlX2lkeClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE4Mi0vKiBUaGUgSFcgZG9lcyBub3QgdHJhbnNsYXRlIHRoZSBtYWMgaGVhZGVyIHRvIDgwMi4zIGZvciBtZXNoIHBvaW50ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTgzOnN0YXRpYyBpbnQgbXQ3OTI1X3JldmVyc2VfZnJhZzBfaGRyX3RyYW5zKHN0cnVjdCBza19idWZmICpza2IsIHUxNiBoZHJfZ2FwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE4NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0yNjI9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjI2MzptdDc5MjVfbWFjX2ZpbGxfcnhfcmF0ZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTI2NC1cXHRcXHRcXHRzdHJ1Y3QgbXQ3Nl9yeF9zdGF0dXMgKnN0YXR1cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTM3Mj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MzczOm10NzkyNV9tYWNfZmlsbF9yeChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTM3NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy01NTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NTUzOlxcdFxcdHJldCA9IG10NzkyNV9tYWNfZmlsbF9yeF9yYXRlKGRldiwgc3RhdHVzLCBzYmFuZCwgcnh2LCBcXHUwMDI2bW9kZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNTU0LVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNTY2LVxcdGlmIChoZHJfdHJhbnMgXFx1MDAyNlxcdTAwMjYgaWVlZTgwMjExX2hhc19tb3JlZnJhZ3MoZmMpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NTY3OlxcdFxcdGlmIChtdDc5MjVfcmV2ZXJzZV9mcmFnMF9oZHJfdHJhbnMoc2tiLCBoZHJfZ2FwKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy01NjgtXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz02NDA9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo2NDE6bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjMoX19sZTMyICp0eHdpLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTY0Mi1cXHRcXHRcXHQgICBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9Njc1PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6Njc2Om10NzkyNV9tYWNfd3JpdGVfdHh3aV84MDIxMShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTY3Ny1cXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTc0Nj12b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NzQ3Om10NzkyNV9tYWNfd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTc0OC1cXHRcXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODQwLVxcdGlmIChpc184MDIzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg0MTpcXHRcXHRtdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMyh0eHdpLCBza2IsIHdjaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg0Mi1cXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODQzOlxcdFxcdG10NzkyNV9tYWNfd3JpdGVfdHh3aV84MDIxMShkZXYsIHR4d2ksIHNrYiwga2V5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04NDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04NjctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg2ODpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWFjX3dyaXRlX3R4d2kpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4NzA6c3RhdGljIHZvaWQgbXQ3OTI1X3R4X2NoZWNrX2FnZ3Ioc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04NzEtXFx0XFx0XFx0XFx0IHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz05MjQ9c3RhdGljIGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo5MjU6bXQ3OTI1X21hY19hZGRfdHhzX3NrYihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTkyNi1cXHRcXHQgICAgICAgaW50IHBpZCwgX19sZTMyICp0eHNfZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTExOTM9dm9pZCBtdDc5MjhfbWFjX2FkZF90eHNfbXNnKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEyMzA6dm9pZCBtdDc5MjVfbWFjX2FkZF90eHMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTI2NDpcXHRtdDc5MjVfbWFjX2FkZF90eHNfc2tiKGRldiwgd2NpZCwgcGlkLCB0eHNfZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTI2NS1cXHRpZiAoIXdjaWQtXFx1MDAzZXN0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTI3NDp2b2lkIG10NzkyNV90eHdpX2ZyZWUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfdHh3aV9jYWNoZSAqdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjc1LVxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjg4LVxcdFxcdGlmIChsaWtlbHkodC1cXHUwMDNlc2tiLVxcdTAwM2Vwcm90b2NvbCAhPSBjcHVfdG9fYmUxNihFVEhfUF9QQUUpKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMjg5OlxcdFxcdFxcdG10NzkyNV90eF9jaGVja19hZ2dyKHN0YSwgdC1cXHUwMDNlc2tiLCB3Y2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjkwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTMwMC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTMwMTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfdHh3aV9mcmVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTEzMDM9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMzA0Om10NzkyNV9tYWNfdHhfZnJlZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB2b2lkICpkYXRhLCBpbnQgbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEzMDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTM3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMzcxOlxcdFxcdFxcdG10NzkyNV90eHdpX2ZyZWUoZGV2LCB0eHdpLCBzdGEsIHdjaWQsIFxcdTAwMjZmcmVlX2xpc3QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEzNzItXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTM3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMzc1OlxcdG10NzkyNV9tYWNfc3RhX3BvbGwoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzc2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTM4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMzg4OmJvb2wgbXQ3OTI1X3J4X2NoZWNrKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqZGF0YSwgaW50IGxlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzg5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MDctXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0MDg6XFx0XFx0bXQ3OTI1X21hY190eF9mcmVlKGRldiwgZGF0YSwgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDA5LVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MTEtXFx0XFx0Zm9yIChyeGQgKz0gNDsgcnhkICsgMTIgXFx1MDAzYz0gZW5kOyByeGQgKz0gMTIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQxMjpcXHRcXHRcXHRtdDc5MjVfbWFjX2FkZF90eHMoZGV2LCByeGQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MTMtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQxNy19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQxODpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfcnhfY2hlY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQyMDp2b2lkIG10NzkyNV9xdWV1ZV9yeF9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCBlbnVtIG10NzZfcnhxX2lkIHEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQyMS1cXHRcXHRcXHQgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyICppbmZvKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ0Ny1cXHRcXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ0ODpcXHRcXHRtdDc5MjVfbWFjX3R4X2ZyZWUoZGV2LCBza2ItXFx1MDAzZWRhdGEsIHNrYi1cXHUwMDNlbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDQ5LVxcdFxcdG5hcGlfY29uc3VtZV9za2Ioc2tiLCAxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NTEtXFx0Y2FzZSBQS1RfVFlQRV9SWF9FVkVOVDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDUyOlxcdFxcdG10NzkyNV9tY3VfcnhfZXZlbnQoZGV2LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NTMtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDU1LVxcdFxcdGZvciAocnhkICs9IDI7IHJ4ZCArIDggXFx1MDAzYz0gZW5kOyByeGQgKz0gOClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDU2OlxcdFxcdFxcdG10NzkyNV9tYWNfYWRkX3R4cyhkZXYsIHJ4ZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ1Ny1cXHRcXHRkZXZfa2ZyZWVfc2tiKHNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDYwLVxcdGNhc2UgUEtUX1RZUEVfTk9STUFMOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0NjE6XFx0XFx0aWYgKCFtdDc5MjVfbWFjX2ZpbGxfcngoZGV2LCBza2IpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ2Mi1cXHRcXHRcXHRtdDc2X3J4KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIHEsIHNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDcwLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDcxOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9xdWV1ZV9yeF9za2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MTQ3Mz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0NzQ6bXQ3OTI1X3ZpZl9jb25uZWN0X2l0ZXIodm9pZCAqcHJpdiwgdTggKm1hYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDc1LVxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAzOjE4OjM2LjIxNzc4OTU5NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk5OTI4ODA1MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ29uc2lkZXJpbmcgVVNCIEZ1enppbmcgZm9yIHRoZSBNVDc5MjUqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEknbSB0aGlua2luZyBhYm91dCB0aGUgYG10NzkyNWAgZHJpdmVyIGFuZCBpdHMgVVNCIHN1cHBvcnQg4oCTIHNwZWNpZmljYWxseSwgdGhhdCBgQ09ORklHX01UNzkyNVVgIG9wdGlvbi4gVGhlIHF1ZXN0aW9uIHRoYXQgcG9wcyB1cCwgb2YgY291cnNlLCBpcyB3aGV0aGVyIHdlIGNhbiBsZXZlcmFnZSB0aGF0IFVTQiBmdW5jdGlvbmFsaXR5IGZvciBmdXp6aW5nLiBDYW4gd2UgZ2V0IGF0IGBtdDc5MjV1YCB1c2luZyBVU0IgZW11bGF0aW9uLCBzb21ldGhpbmcgbGlrZSBzeXprYWxsZXIncyBVU0IgcmF3IGdhZGdldCBmdW5jdGlvbmFsaXR5IG9yIGEgYnJvYWRlciBVU0IgZW11bGF0aW9uIHNldHVwPyBUaGUga2V5IGhlcmUgaXMgdG8gZGV0ZXJtaW5lIGhvdyB0aGUgYG10NzkyNXVgIG1vZHVsZSBpcyBwcm9iZWQgYW5kIHJlZ2lzdGVyZWQuIFVuZGVyc3RhbmRpbmcgdGhhdCBwcm9jZXNzIGlzIGdvaW5nIHRvIGJlIGNyaXRpY2FsIGZvciBjcmFmdGluZyBlZmZlY3RpdmUgZnV6emluZyBzdHJhdGVnaWVzLiBXZSBuZWVkIHRvIGtub3cgaG93IGl0IGluaXRpYWxpemVzLCB3aGF0IGVudHJ5IHBvaW50cyBpdCB1c2VzLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBVU0Igc3Vic3lzdGVtIHRvIGVmZmVjdGl2ZWx5IGNyYWZ0IGFuZCBpbmplY3Qgb3VyIGZ1enppbmcgcGF5bG9hZHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMzYxLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDM6MTg6NDYuMjEwNjcyOTQ3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0LyogQ29weXJpZ2h0IChDKSAyMDIzIE1lZGlhVGVrIEluYy4gKi9cXG4gICAzOlxcdFxcbiAgIDQ6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tlcm5lbC5oXFx1MDAzZVxcbiAgIDU6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbiAgIDY6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VzYi5oXFx1MDAzZVxcbiAgIDc6XFx0XFxuICAgODpcXHQjaW5jbHVkZSBcXFwibXQ3OTI1LmhcXFwiXFxuICAgOTpcXHQjaW5jbHVkZSBcXFwibWN1LmhcXFwiXFxuICAxMDpcXHQjaW5jbHVkZSBcXFwibWFjLmhcXFwiXFxuICAxMTpcXHRcXG4gIDEyOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBtdDc5MjV1X2RldmljZV90YWJsZVtdID0ge1xcbiAgMTM6XFx0XFx0eyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDBlOGQsIDB4NjYzOSwgMHhmZiwgMHhmZiwgMHhmZiksXFxuICAxNDpcXHRcXHRcXHQuZHJpdmVyX2luZm8gPSAoa2VybmVsX3Vsb25nX3QpTVQ3OTI1X0ZJUk1XQVJFX1dNIH0sXFxuICAxNTpcXHRcXHR7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MGU4ZCwgMHg3OTI1LCAweGZmLCAweGZmLCAweGZmKSxcXG4gIDE2OlxcdFxcdFxcdC5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdClNVDc5MjVfRklSTVdBUkVfV00gfSxcXG4gIDE3OlxcdFxcdC8qIE5ldGdlYXIsIEluYy4gQTg1MDAgKi9cXG4gIDE4OlxcdFxcdHsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oMHgwODQ2LCAweDkwNTAsIDB4ZmYsIDB4ZmYsIDB4ZmYpLFxcbiAgMTk6XFx0XFx0XFx0LmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KU1UNzkyNV9GSVJNV0FSRV9XTSB9LFxcbiAgMjA6XFx0XFx0LyogTmV0Z2VhciwgSW5jLiBBOTAwMCAqL1xcbiAgMjE6XFx0XFx0eyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDA4NDYsIDB4OTA3MiwgMHhmZiwgMHhmZiwgMHhmZiksXFxuICAyMjpcXHRcXHRcXHQuZHJpdmVyX2luZm8gPSAoa2VybmVsX3Vsb25nX3QpTVQ3OTI1X0ZJUk1XQVJFX1dNIH0sXFxuICAyMzpcXHRcXHR7IH0sXFxuICAyNDpcXHR9O1xcbiAgMjU6XFx0XFxuICAyNjpcXHRzdGF0aWMgaW50XFxuICAyNzpcXHRtdDc5MjV1X21jdV9zZW5kX21lc3NhZ2Uoc3RydWN0IG10NzZfZGV2ICptZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiAgMjg6XFx0XFx0XFx0XFx0IGludCBjbWQsIGludCAqc2VxKVxcbiAgMjk6XFx0e1xcbiAgMzA6XFx0XFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihtZGV2LCBzdHJ1Y3QgbXQ3OTJ4X2RldiwgbXQ3Nik7XFxuICAzMTpcXHRcXHR1MzIgcGFkLCBlcDtcXG4gIDMyOlxcdFxcdGludCByZXQ7XFxuICAzMzpcXHRcXG4gIDM0OlxcdFxcdHJldCA9IG10NzkyNV9tY3VfZmlsbF9tZXNzYWdlKG1kZXYsIHNrYiwgY21kLCBzZXEpO1xcbiAgMzU6XFx0XFx0aWYgKHJldClcXG4gIDM2OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuICAzNzpcXHRcXG4gIDM4OlxcdFxcdG1kZXYtXFx1MDAzZW1jdS50aW1lb3V0ID0gMyAqIEhaO1xcbiAgMzk6XFx0XFxuICA0MDpcXHRcXHRpZiAoY21kICE9IE1DVV9DTUQoRldfU0NBVFRFUikpXFxuICA0MTpcXHRcXHRcXHRlcCA9IE1UX0VQX09VVF9JTkJBTkRfQ01EO1xcbiAgNDI6XFx0XFx0ZWxzZVxcbiAgNDM6XFx0XFx0XFx0ZXAgPSBNVF9FUF9PVVRfQUNfQkU7XFxuICA0NDpcXHRcXG4gIDQ1OlxcdFxcdG10NzkyeF9za2JfYWRkX3VzYl9zZGlvX2hkcihkZXYsIHNrYiwgMCk7XFxuICA0NjpcXHRcXHRwYWQgPSByb3VuZF91cChza2ItXFx1MDAzZWxlbiwgNCkgKyA0IC0gc2tiLVxcdTAwM2VsZW47XFxuICA0NzpcXHRcXHRfX3NrYl9wdXRfemVybyhza2IsIHBhZCk7XFxuICA0ODpcXHRcXG4gIDQ5OlxcdFxcdHJldCA9IG10NzZ1X2J1bGtfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIHNrYi1cXHUwMDNlZGF0YSwgc2tiLVxcdTAwM2VsZW4sIE5VTEwsXFxuICA1MDpcXHRcXHRcXHRcXHQgICAgIDEwMDAsIGVwKTtcXG4gIDUxOlxcdFxcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG4gIDUyOlxcdFxcbiAgNTM6XFx0XFx0cmV0dXJuIHJldDtcXG4gIDU0OlxcdH1cXG4gIDU1OlxcdFxcbiAgNTY6XFx0c3RhdGljIGludCBtdDc5MjV1X21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuICA1NzpcXHR7XFxuICA1ODpcXHRcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG10NzZfbWN1X29wcyBtY3Vfb3BzID0ge1xcbiAgNTk6XFx0XFx0XFx0LmhlYWRyb29tID0gTVRfU0RJT19IRFJfU0laRSArXFxuICA2MDpcXHRcXHRcXHRcXHQgICAgc2l6ZW9mKHN0cnVjdCBtdDc2X2Nvbm5hYzJfbWN1X3R4ZCksXFxuICA2MTpcXHRcXHRcXHQudGFpbHJvb20gPSBNVF9VU0JfVEFJTF9TSVpFLFxcbiAgNjI6XFx0XFx0XFx0Lm1jdV9za2Jfc2VuZF9tc2cgPSBtdDc5MjV1X21jdV9zZW5kX21lc3NhZ2UsXFxuICA2MzpcXHRcXHRcXHQubWN1X3BhcnNlX3Jlc3BvbnNlID0gbXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZSxcXG4gIDY0OlxcdFxcdH07XFxuICA2NTpcXHRcXHRpbnQgcmV0O1xcbiAgNjY6XFx0XFxuICA2NzpcXHRcXHRkZXYtXFx1MDAzZW10NzYubWN1X29wcyA9IFxcdTAwMjZtY3Vfb3BzO1xcbiAgNjg6XFx0XFxuICA2OTpcXHRcXHRtdDc2X3NldChkZXYsIE1UX1VETUFfVFhfUVNFTCwgTVRfRldfRExfRU4pO1xcbiAgNzA6XFx0XFx0cmV0ID0gbXQ3OTI1X3J1bl9maXJtd2FyZShkZXYpO1xcbiAgNzE6XFx0XFx0aWYgKHJldClcXG4gIDcyOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuICA3MzpcXHRcXG4gIDc0OlxcdFxcdHNldF9iaXQoTVQ3Nl9TVEFURV9NQ1VfUlVOTklORywgXFx1MDAyNmRldi1cXHUwMDNlbXBoeS5zdGF0ZSk7XFxuICA3NTpcXHRcXHRtdDc2X2NsZWFyKGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XFxuICA3NjpcXHRcXG4gIDc3OlxcdFxcdHJldHVybiAwO1xcbiAgNzg6XFx0fVxcbiAgNzk6XFx0XFxuICA4MDpcXHRzdGF0aWMgaW50IG10NzkyNXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuICA4MTpcXHR7XFxuICA4MjpcXHRcXHRpbnQgZXJyO1xcbiAgODM6XFx0XFxuICA4NDpcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5idXNfaHVuZykpXFxuICA4NTpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gIDg2OlxcdFxcbiAgODc6XFx0XFx0bXQ3OTJ4dV9yZXNldF9vbl9idXNfZXJyb3IoZGV2KTtcXG4gIDg4OlxcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LmJ1c19odW5nKSlcXG4gIDg5OlxcdFxcdFxcdHJldHVybiAwO1xcbiAgOTA6XFx0XFxuICA5MTpcXHRcXHRtdDc2X3R4cV9zY2hlZHVsZV9hbGwoXFx1MDAyNmRldi1cXHUwMDNlbXBoeSk7XFxuICA5MjpcXHRcXHRtdDc2X3dvcmtlcl9kaXNhYmxlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYudHhfd29ya2VyKTtcXG4gIDkzOlxcdFxcbiAgOTQ6XFx0XFx0c2V0X2JpdChNVDc2X1JFU0VULCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKTtcXG4gIDk1OlxcdFxcdHNldF9iaXQoTVQ3Nl9NQ1VfUkVTRVQsIFxcdTAwMjZkZXYtXFx1MDAzZW1waHkuc3RhdGUpO1xcbiAgOTY6XFx0XFxuICA5NzpcXHRcXHR3YWtlX3VwKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubWN1LndhaXQpO1xcbiAgOTg6XFx0XFx0c2tiX3F1ZXVlX3B1cmdlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubWN1LnJlc19xKTtcXG4gIDk5OlxcdFxcbiAxMDA6XFx0XFx0bXQ3NnVfc3RvcF9yeChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDM6MTg6NDYuMjEwNzU0Njc4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzAxMDAzNjQ2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byB0aGUgQ29kZTogTG9jYXRpbmcgdGhlIENoYW5nZSoqXG5cbk9rYXksIHNvIHdlIG5lZWQgdG8gcGlucG9pbnQgZXhhY3RseSB3aGVyZSB0aGlzIGJlaGF2aW9yIG1hbmlmZXN0ZWQsIHNvIGxldCdzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gYG1hYy5jYC4gSSdtIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IHRoZSByZWxldmFudCBjaGFuZ2VzIGRpcmVjdGx5IGluIHRoZSBmaWxlLCBwcm9iYWJseSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmNgLiAgSSBuZWVkIHRvIGV4YW1pbmUgdGhlIHBhdGNoIGNvbnRleHQgdGhlcmU7IHRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNydWNpYWwgZGV0YWlscyBhYm91dCB0aGUgaW50cm9kdWN0aW9uIG9mIHRoaXMgYmVoYXZpb3IuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBsaW5lcyBvZiBjb2RlIGFuZCB0aGUgc3Vycm91bmRpbmcgY2hhbmdlcyB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIzOTMsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAzOjE4OjQ5LjIyMDc5NzA0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA0MjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc4MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDc4MDpcXHRcXHR9IGVsc2UgaWYgKHFpZCBcXHUwMDNlPSBNVF9UWFFfUFNEKSB7XFxuIDc4MTpcXHRcXHRcXHRwX2ZtdCA9IG10NzZfaXNfbW1pbyhkZXYpID8gTVRfVFhfVFlQRV9DVCA6IE1UX1RYX1RZUEVfU0Y7XFxuIDc4MjpcXHRcXHRcXHRxX2lkeCA9IE1UX0xNQUNfQUxUWDA7XFxuIDc4MzpcXHRcXHR9IGVsc2Uge1xcbiA3ODQ6XFx0XFx0XFx0cF9mbXQgPSBtdDc2X2lzX21taW8oZGV2KSA/IE1UX1RYX1RZUEVfQ1QgOiBNVF9UWF9UWVBFX1NGO1xcbiA3ODU6XFx0XFx0XFx0cV9pZHggPSB3bW1faWR4ICogTVQ3Nl9DT05OQUNfTUFYX1dNTV9TRVRTICtcXG4gNzg2OlxcdFxcdFxcdFxcdG10NzZfY29ubmFjX2xtYWNfbWFwcGluZyhza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKSk7XFxuIDc4NzpcXHRcXG4gNzg4OlxcdFxcdFxcdC8qIGNvdW50aW5nIG5vbi1vZmZsb2FkaW5nIHNrYnMgKi9cXG4gNzg5OlxcdFxcdFxcdHdjaWQtXFx1MDAzZXN0YXRzLnR4X2J5dGVzICs9IHNrYi1cXHUwMDNlbGVuO1xcbiA3OTA6XFx0XFx0XFx0d2NpZC1cXHUwMDNlc3RhdHMudHhfcGFja2V0cysrO1xcbiA3OTE6XFx0XFx0fVxcbiA3OTI6XFx0XFxuIDc5MzpcXHRcXHR2YWwgPSBGSUVMRF9QUkVQKE1UX1RYRDBfVFhfQllURVMsIHNrYi1cXHUwMDNlbGVuICsgc3pfdHhkKSB8XFxuIDc5NDpcXHRcXHQgICAgICBGSUVMRF9QUkVQKE1UX1RYRDBfUEtUX0ZNVCwgcF9mbXQpIHxcXG4gNzk1OlxcdFxcdCAgICAgIEZJRUxEX1BSRVAoTVRfVFhEMF9RX0lEWCwgcV9pZHgpO1xcbiA3OTY6XFx0XFx0dHh3aVswXSA9IGNwdV90b19sZTMyKHZhbCk7XFxuIDc5NzpcXHRcXG4gNzk4OlxcdFxcdHZhbCA9IEZJRUxEX1BSRVAoTVRfVFhEMV9XTEFOX0lEWCwgd2NpZC1cXHUwMDNlaWR4KSB8XFxuIDc5OTpcXHRcXHQgICAgICBGSUVMRF9QUkVQKE1UX1RYRDFfT1dOX01BQywgb21hY19pZHgpO1xcbiA4MDA6XFx0XFxuIDgwMTpcXHRcXHQvKiAweGZmIG1lYW5zIEJBTkRfQVVUTyB0byB0aGUgZmlybXdhcmUsIGFuZCBUR0lEIGNhbm5vdCBlbmNvZGUgaXQgKi9cXG4gODAyOlxcdFxcdGlmIChiYW5kX2lkeCBcXHUwMDI2XFx1MDAyNiBiYW5kX2lkeCAhPSAweGZmKVxcbiA4MDM6XFx0XFx0XFx0dmFsIHw9IEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeCk7XFxuIDgwNDpcXHRcXG4gODA1OlxcdFxcdHR4d2lbMV0gPSBjcHVfdG9fbGUzMih2YWwpO1xcbiA4MDY6XFx0XFx0dHh3aVsyXSA9IDA7XFxuIDgwNzpcXHRcXG4gODA4OlxcdFxcdHZhbCA9IEZJRUxEX1BSRVAoTVRfVFhEM19SRU1fVFhfQ09VTlQsIDE1KTtcXG4gODA5OlxcdFxcbiA4MTA6XFx0XFx0aWYgKGtleSlcXG4gODExOlxcdFxcdFxcdHZhbCB8PSBNVF9UWEQzX1BST1RFQ1RfRlJBTUU7XFxuIDgxMjpcXHRcXHRpZiAoaW5mby1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfQ1RMX05PX0FDSylcXG4gODEzOlxcdFxcdFxcdHZhbCB8PSBNVF9UWEQzX05PX0FDSztcXG4gODE0OlxcdFxcdGlmICh3Y2lkLVxcdTAwM2VhbXNkdSlcXG4gODE1OlxcdFxcdFxcdHZhbCB8PSBNVF9UWEQzX0hXX0FNU0RVO1xcbiA4MTY6XFx0XFxuIDgxNzpcXHRcXHR0eHdpWzNdID0gY3B1X3RvX2xlMzIodmFsKTtcXG4gODE4OlxcdFxcdHR4d2lbNF0gPSAwO1xcbiA4MTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAzOjE4OjQ5LjIyMTAwMzM1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzMxNTA2MzY1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBtdDc5MjVfbWFjX3dyaXRlX3R4d2lgIEZ1bmN0aW9uKipcblxuUmlnaHQsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgYG10NzkyNV9tYWNfd3JpdGVfdHh3aWAgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkLiBUaGF0IGZ1bmN0aW9uIG5hbWUgc291bmRzIHNwZWNpZmljIHRvIHRoZSBNVDc5MjUgd2lyZWxlc3MgY2hpcHNldCwgbGlrZWx5IHJlbGF0ZWQgdG8gd3JpdGluZyB0aGUgVHJhbnNtaXQgV2lyZWxlc3MgSW5mb3JtYXRpb24gKFRYV0kpIHdoaWNoIGlzIGNydWNpYWwgZm9yIGNvbmZpZ3VyaW5nIGhvdyBhIHBhY2tldCBpcyB0cmFuc21pdHRlZCBvdmVyIHRoZSBhaXIuIEEgZ29vZCBzdGFydGluZyBwb2ludCwgYXMgYWx3YXlzLCBpcyB0byBmaW5kIHRoZSBjYWxsIHNpdGVzLiBUaW1lIHRvIGdyZXAuIEknbGwgZmlyZSB1cCB0aGUgY29tbWFuZC1saW5lIGFuZCBkbyBhIHF1aWNrIHNlYXJjaCBmb3IgdGhhdCBmdW5jdGlvbiBuYW1lIGFjcm9zcyB0aGUgcmVsZXZhbnQgY29kZWJhc2UuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBsaXN0IG9mIGFsbCB0aGUgcGxhY2VzIHdpdGhpbiB0aGUgZHJpdmVyIHdoZXJlIHRoaXMgY3JpdGljYWwgVFhXSSBmdW5jdGlvbiBpcyB1c2VkLiBGcm9tIHRoZXJlLCBJIGNhbiBzdGFydCB0byBidWlsZCBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgVFggcGF0aCBhbmQgaG93IHRoZSB3aXJlbGVzcyBNQUMgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlIHRvIGdldCBwYWNrZXRzIHNlbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNDE5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoxODo1Mi41MzYwNjk4OThaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNjA3Njg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyNV9tYWNfd3JpdGVfdHh3aVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTY0MD1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjY0MTptdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMyhfX2xlMzIgKnR4d2ksIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNjQyLVxcdFxcdFxcdCAgIHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz02NzU9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo2NzY6bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjExKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNjc3LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9NzQ2PXZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo3NDc6bXQ3OTI1X21hY193cml0ZV90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNzQ4LVxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04NDAtXFx0aWYgKGlzXzgwMjMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODQxOlxcdFxcdG10NzkyNV9tYWNfd3JpdGVfdHh3aV84MDIzKHR4d2ksIHNrYiwgd2NpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODQyLVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4NDM6XFx0XFx0bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjExKGRldiwgdHh3aSwgc2tiLCBrZXkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg0NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg2Ny19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODY4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tYWNfd3JpdGVfdHh3aSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODY5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MTYyMj1tdDc5MjVfdXNiX3NkaW9fd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYyOS1cXHRtZW1zZXQodHh3aSwgMCwgTVRfU0RJT19UWERfU0laRSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTYzMDpcXHRtdDc5MjVfbWFjX3dyaXRlX3R4d2koXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgdHh3aSwgc2tiLCB3Y2lkLCBrZXksIHBpZCwgcWlkLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjMxLVxcdHNrYl9wdXNoKHNrYiwgTVRfU0RJT19UWERfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zNDI9dm9pZCBtdDc5MjVfbWFjX3NldF9maXhlZF9yYXRlX3RhYmxlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzQzLVxcdFxcdFxcdFxcdCAgICAgdTggdGJsX2lkeCwgdTE2IHJhdGVfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNDQ6dm9pZCBtdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNDUtXFx0XFx0XFx0ICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYz05PWludCBtdDc5MjVlX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmMtNDQtXFx0cGlkID0gbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChtZGV2LCB3Y2lkLCB0eF9pbmZvLVxcdTAwM2Vza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYzo0NTpcXHRtdDc5MjVfbWFjX3dyaXRlX3R4d2kobWRldiwgdHh3aV9wdHIsIHR4X2luZm8tXFx1MDAzZXNrYiwgd2NpZCwga2V5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYy00Ni1cXHRcXHRcXHQgICAgICBwaWQsIHFpZCwgMCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAzOjE4OjUyLjYwNjY4MzQ3N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODE4MDA3NDMyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIEkgdW5kZXJzdGFuZCB0aGUgc2l0dWF0aW9uOlxuXG4qKlRyYWNpbmcgdGhlIFR4V0kgQ29uZmlndXJhdGlvbiBQYXRoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGBtdDc5MjVfbWFjX3dyaXRlX3R4d2lgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0byBiZSB0aGUgY29yZSBmdW5jdGlvbiBmb3Igd3JpdGluZyB0aGUgdHJhbnNtaXQgV2ktRmkgaW5mb3JtYXRpb24gKFR4V0kpLCBhbmQgaXQncyBjYWxsZWQgYnkgdHdvIG90aGVyIGZ1bmN0aW9uczogYG10NzkyNV91c2Jfc2Rpb193cml0ZV90eHdpYCBhbmQgYG10NzkyNWVfdHhfcHJlcGFyZV9za2JgLiBNeSBwcmltYXJ5IGludGVyZXN0IHJpZ2h0IG5vdyBpcyBmaWd1cmluZyBvdXQgdGhlIGNvbXBsZXRlIHBhdGggdGhhdCBsZWFkcyB0byBgbXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2lgIGJlaW5nIGNhbGxlZC4gS25vd2luZyB0aGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgVVNCIGFuZCBTRElPIGludGVyZmFjZXMgYXJlIGJlaW5nIGhhbmRsZWQgaW4gdGhlIE1lZGlhVGVrIHN5c3RlbS4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGZ1bmN0aW9ucyBjYWxsIGBtdDc5MjVfdXNiX3NkaW9fd3JpdGVfdHh3aWAgc3BlY2lmaWNhbGx5LiBUaGlzIHdpbGwgaGVscCBtZSB0cmFjZSB0aGUgZGF0YSBmbG93IGludm9sdmVkIGluIHRyYW5zbWl0dGluZyBwYWNrZXRzIHZpYSB0aG9zZSBpbnRlcmZhY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTEyMiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAzOjE5OjEwLjc4Njc2MDE2MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODk2ODIxNjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNjIxPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTYyMjptdDc5MjVfdXNiX3NkaW9fd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2MjMtXFx0XFx0XFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNjM0PWludCBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2NjQtXFx0cGt0aWQgPSBtdDc2X3R4X3N0YXR1c19za2JfYWRkKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIHdjaWQsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTY2NTpcXHRtdDc5MjVfdXNiX3NkaW9fd3JpdGVfdHh3aShkZXYsIHdjaWQsIHFpZCwgc3RhLCBrZXksIHBrdGlkLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2NjYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAzOjE5OjEwLjg3NjQ0NzQzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjkwMDU3MTgwNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYiBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLiBCYXNlZCBvbiB0aGUgbmFtZSwgaXQncyBwcmV0dHkgY2xlYXIgdGhpcyBmdW5jdGlvbiBwbGF5cyBhIGNydWNpYWwgcm9sZSBpbiBwcmVwYXJpbmcgU0tCcyAoU29ja2V0IEJ1ZmZlcnMpIGZvciB0cmFuc21pc3Npb24sIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBVU0Igb3IgU0RJTyBpbnRlcmZhY2Ugd2l0aCB0aGUgbXQ3OTI1IGNoaXBzZXQuIEdpdmVuIHRoYXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBNeSBpbml0aWFsIGh1bmNoLCBhbmQgaXQncyBwcmFjdGljYWxseSBhIGNlcnRhaW50eSwgaXMgdGhhdCBpdCdzIHBhcnQgb2YgdGhlIGBtdDc5MjV1YCBvciwgcG90ZW50aWFsbHksIHRoZSBVU0IgZHJpdmVyIGl0c2VsZi4gTm93IEkgbmVlZCB0byBzZWUgaG93IGFuZCB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4gV2hlcmUgYXJlIHRoZSByZWZlcmVuY2VzPyBUaGUgZ29hbCBpcyBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIGludGVncmF0aW9uIGFuZCBwdXJwb3NlIHdpdGhpbiB0aGUgZHJpdmVyJ3MgdHJhbnNtaXQgcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4NDMsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoxOToxOS44ODIxNjgyNDhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MjMxNzU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTE2MjI9bXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2koc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2MzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTYzNDppbnQgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYzNS1cXHRcXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2NzgtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE2Nzk6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjgwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzY5PWludCBtdDc5MjVfbWN1X2dldF90ZW1wZXJhdHVyZShzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzcxOmludCBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICp0eHdpX3B0cixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNzItXFx0XFx0XFx0XFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0xNTA9c3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1OS1cXHRcXHRcXHRcXHRTVVJWRVlfSU5GT19USU1FX0JTU19SWCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNjA6XFx0XFx0LnR4X3ByZXBhcmVfc2tiID0gbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE2MS1cXHRcXHQudHhfY29tcGxldGVfc2tiID0gbXQ3OTI1X3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDM6MTk6MTkuOTM5NDAzNDQ3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY5NTI5NDUxNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRGl2aW5nIGludG8gdGhlIE1UNzkyNVUgVVNCIFByb2JlIEZ1bmN0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgd2l0aCB0aGlzIE1UNzkyNVUgZHJpdmVyLiBMZXQncyBzZWUuLi4gdGhlIG1vc3QgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIFVTQiBpbnRlcmZhY2UgaXMgaW5pdGlhbGl6ZWQgd291bGQgYmUgdGhlIHByb2JlIGZ1bmN0aW9uLiBTbywgSSBuZWVkIHRvIGNoZWNrIG91dCBgbXQ3OTI1dV9wcm9iZWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jYC4gVGhhdCdzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgaW5pdGlhbCBkZXZpY2Ugc2V0dXAsIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBhbnkgcHJlbGltaW5hcnkgaGFyZHdhcmUgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIHRoZSBVU0IgY29ubmVjdGlvbi4gTGV0J3MgaG9wZSBpdCdzIHdlbGwtY29tbWVudGVkOyB0aGlzIGlzIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBiaXRzIHVzdWFsbHkgc3RhcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2OTA5LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDM6MTk6MjYuODkyMzUxMjI3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzOTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE0NSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE0NTpcXHRcXHRtdDc2X3dvcmtlcl9lbmFibGUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni50eF93b3JrZXIpO1xcbiAxNDY6XFx0XFxuIDE0NzpcXHRcXHRyZXR1cm4gZXJyO1xcbiAxNDg6XFx0fVxcbiAxNDk6XFx0XFxuIDE1MDpcXHRzdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbiAxNTE6XFx0XFx0XFx0XFx0IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4gMTUyOlxcdHtcXG4gMTUzOlxcdFxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3Nl9kcml2ZXJfb3BzIGRydl9vcHMgPSB7XFxuIDE1NDpcXHRcXHRcXHQudHh3aV9zaXplID0gTVRfU0RJT19UWERfU0laRSxcXG4gMTU1OlxcdFxcdFxcdC5kcnZfZmxhZ3MgPSBNVF9EUlZfUlhfRE1BX0hEUiB8IE1UX0RSVl9IV19NR01UX1RYUSB8XFxuIDE1NjpcXHRcXHRcXHRcXHQgICAgIE1UX0RSVl9BTVNEVV9PRkZMT0FELFxcbiAxNTc6XFx0XFx0XFx0LnN1cnZleV9mbGFncyA9IFNVUlZFWV9JTkZPX1RJTUVfVFggfFxcbiAxNTg6XFx0XFx0XFx0XFx0XFx0U1VSVkVZX0lORk9fVElNRV9SWCB8XFxuIDE1OTpcXHRcXHRcXHRcXHRcXHRTVVJWRVlfSU5GT19USU1FX0JTU19SWCxcXG4gMTYwOlxcdFxcdFxcdC50eF9wcmVwYXJlX3NrYiA9IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYixcXG4gMTYxOlxcdFxcdFxcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc5MjVfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxcbiAxNjI6XFx0XFx0XFx0LnR4X3N0YXR1c19kYXRhID0gbXQ3OTI1X3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhLFxcbiAxNjM6XFx0XFx0XFx0LnJ4X3NrYiA9IG10NzkyNV9xdWV1ZV9yeF9za2IsXFxuIDE2NDpcXHRcXHRcXHQucnhfY2hlY2sgPSBtdDc5MjVfcnhfY2hlY2ssXFxuIDE2NTpcXHRcXHRcXHQuc3RhX2FkZCA9IG10NzkyNV9tYWNfc3RhX2FkZCxcXG4gMTY2OlxcdFxcdFxcdC5zdGFfZXZlbnQgPSBtdDc5MjVfbWFjX3N0YV9ldmVudCxcXG4gMTY3OlxcdFxcdFxcdC5zdGFfcmVtb3ZlID0gbXQ3OTI1X21hY19zdGFfcmVtb3ZlLFxcbiAxNjg6XFx0XFx0XFx0LnVwZGF0ZV9zdXJ2ZXkgPSBtdDc5MnhfdXBkYXRlX2NoYW5uZWwsXFxuIDE2OTpcXHRcXHR9O1xcbiAxNzA6XFx0XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc5MnhfaGlmX29wcyBoaWZfb3BzID0ge1xcbiAxNzE6XFx0XFx0XFx0Lm1jdV9pbml0ID0gbXQ3OTI1dV9tY3VfaW5pdCxcXG4gMTcyOlxcdFxcdFxcdC5pbml0X3Jlc2V0ID0gbXQ3OTJ4dV9pbml0X3Jlc2V0LFxcbiAxNzM6XFx0XFx0XFx0LnJlc2V0ID0gbXQ3OTI1dV9tYWNfcmVzZXQsXFxuIDE3NDpcXHRcXHR9O1xcbiAxNzU6XFx0XFx0c3RhdGljIHN0cnVjdCBtdDc2X2J1c19vcHMgYnVzX29wcyA9IHtcXG4gMTc2OlxcdFxcdFxcdC5yciA9IG10NzkyeHVfcnIsXFxuIDE3NzpcXHRcXHRcXHQud3IgPSBtdDc5Mnh1X3dyLFxcbiAxNzg6XFx0XFx0XFx0LnJtdyA9IG10NzkyeHVfcm13LFxcbiAxNzk6XFx0XFx0XFx0LnJlYWRfY29weSA9IG10NzZ1X3JlYWRfY29weSxcXG4gMTgwOlxcdFxcdFxcdC53cml0ZV9jb3B5ID0gbXQ3OTJ4dV9jb3B5LFxcbiAxODE6XFx0XFx0XFx0LnR5cGUgPSBNVDc2X0JVU19VU0IsXFxuIDE4MjpcXHRcXHR9O1xcbiAxODM6XFx0XFx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KHVzYl9pbnRmKTtcXG4gMTg0OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfb3BzICpvcHM7XFxuIDE4NTpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodztcXG4gMTg2OlxcdFxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXY7XFxuIDE4NzpcXHRcXHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXY7XFxuIDE4ODpcXHRcXHR1OCBmZWF0dXJlcztcXG4gMTg5OlxcdFxcdGludCByZXQ7XFxuIDE5MDpcXHRcXG4gMTkxOlxcdFxcdG9wcyA9IG10NzkyeF9nZXRfbWFjODAyMTFfb3BzKFxcdTAwMjZ1c2JfaW50Zi1cXHUwMDNlZGV2LCBcXHUwMDI2bXQ3OTI1X29wcyxcXG4gMTkyOlxcdFxcdFxcdFxcdFxcdCAgICAgICh2b2lkICopaWQtXFx1MDAzZWRyaXZlcl9pbmZvLCBcXHUwMDI2ZmVhdHVyZXMpO1xcbiAxOTM6XFx0XFx0aWYgKCFvcHMpXFxuIDE5NDpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMTk1OlxcdFxcbiAxOTY6XFx0XFx0b3BzLVxcdTAwM2VzdG9wID0gbXQ3OTJ4dV9zdG9wO1xcbiAxOTc6XFx0XFxuIDE5ODpcXHRcXHRtZGV2ID0gbXQ3Nl9hbGxvY19kZXZpY2UoXFx1MDAyNnVzYl9pbnRmLVxcdTAwM2VkZXYsIHNpemVvZigqZGV2KSwgb3BzLCBcXHUwMDI2ZHJ2X29wcyk7XFxuIDE5OTpcXHRcXHRpZiAoIW1kZXYpXFxuIDIwMDpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMjAxOlxcdFxcbiAyMDI6XFx0XFx0ZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MnhfZGV2LCBtdDc2KTtcXG4gMjAzOlxcdFxcdGRldi1cXHUwMDNlZndfZmVhdHVyZXMgPSBmZWF0dXJlcztcXG4gMjA0OlxcdFxcdGRldi1cXHUwMDNlaGlmX29wcyA9IFxcdTAwMjZoaWZfb3BzO1xcbiAyMDU6XFx0XFx0bXQ3OTJ4dV9yZXNldF93b3JrX2luaXQoZGV2KTtcXG4gMjA2OlxcdFxcbiAyMDc6XFx0XFx0dXNiX3Jlc2V0X2RldmljZSh1ZGV2KTtcXG4gMjA4OlxcdFxcbiAyMDk6XFx0XFx0dXNiX3NldF9pbnRmZGF0YSh1c2JfaW50ZiwgZGV2KTtcXG4gMjEwOlxcdFxcbiAyMTE6XFx0XFx0cmV0ID0gX19tdDc2dV9pbml0KG1kZXYsIHVzYl9pbnRmLCBcXHUwMDI2YnVzX29wcyk7XFxuIDIxMjpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gMjEzOlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDIxNDpcXHRcXG4gMjE1OlxcdFxcdG1kZXYtXFx1MDAzZXJldiA9IChtdDc2X3JyKGRldiwgTVRfSFdfQ0hJUElEKSBcXHUwMDNjXFx1MDAzYyAxNikgfFxcbiAyMTY6XFx0XFx0XFx0ICAgIChtdDc2X3JyKGRldiwgTVRfSFdfUkVWKSBcXHUwMDI2IDB4ZmYpO1xcbiAyMTc6XFx0XFx0ZGV2X2RiZyhtZGV2LVxcdTAwM2VkZXYsIFxcXCJBU0lDIHJldmlzaW9uOiAlMDR4XFxcXG5cXFwiLCBtZGV2LVxcdTAwM2VyZXYpO1xcbiAyMTg6XFx0XFxuIDIxOTpcXHRcXHRpZiAobXQ3Nl9jaGlwKG1kZXYpID09IDB4NjYzOSkge1xcbiAyMjA6XFx0XFx0XFx0ZGV2X2RiZyhtZGV2LVxcdTAwM2VkZXYsXFxuIDIyMTpcXHRcXHRcXHRcXHRcXFwiTVQ3OTI3IHJhdyBDSElQSUQ9MHglMDR4LCBmb3JjaW5nIGNoaXA9MHg3OTI3XFxcXG5cXFwiLFxcbiAyMjI6XFx0XFx0XFx0XFx0bXQ3Nl9jaGlwKG1kZXYpKTtcXG4gMjIzOlxcdFxcdFxcdG1kZXYtXFx1MDAzZXJldiA9ICgweDc5MjcgXFx1MDAzY1xcdTAwM2MgMTYpIHwgKG1kZXYtXFx1MDAzZXJldiBcXHUwMDI2IDB4ZmYpO1xcbiAyMjQ6XFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoxOToyNi44OTI0MzcwMjdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzA5Mzg3NjI4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBNVDc5MjVVIERyaXZlciB3aXRoIFN5emthbGxlcjogSW5pdGlhbCBBc3Nlc3NtZW50IGFuZCBLY29uZmlnIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCBJJ20gdGhpbmtpbmcuLi4gZmlyc3QsIGBtdDc5MjV1YCwgdGhhdCdzIHRoZSBVU0Igd2lyZWxlc3MgZHJpdmVyLCByaWdodD8gQ2FuIHdlIGV2ZW4gYXBwcm9hY2ggdGhpcyB3aXRoIFN5emthbGxlcidzIFVTQiBlbXVsYXRpb24/IE15IGluaXRpYWwgaW5zdGluY3QgaXMgeWVzLCBzaW5jZSBTeXprYWxsZXIgaGFzIHRoZSByYXcgZ2FkZ2V0L3Z1c2Igc3VwcG9ydC4gQnV0LCBhIHF1aWNrIGRvdWJsZS1jaGVjazogRG9lcyBTeXprYWxsZXIgKmFjdHVhbGx5KiB0YXJnZXQgVVNCIHdpZmkgZHJpdmVycz8gR29vZCBuZXdzLCBpdCBkb2VzLiBNeSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBVU0IgZnV6emluZyBzdXBwb3J0IGluIFN5emthbGxlciwgd2hpY2ggdXRpbGl6ZXMgcmF3IGdhZGdldCBhbmQgYHN5el91c2JfY29ubmVjdGAsIGlzIHRoYXQgaXQgc2hvdWxkIGJlIGFibGUgdG8gcmVhY2ggbWFjODAyMTEtYmFzZWQgYW5kIHdpcmVsZXNzIFVTQiBkcml2ZXJzLCBpbmNsdWRpbmcgdGhlIE1lZGlhVGVrIGZhbWlseTogYG10NzZgLCBgbXQ3OTIxdWAsIGBtdDc5MjV1YCwgZXRjLlxuXG5Ob3csIGEgY3JpdGljYWwgc3RlcDogSSBuZWVkIHRvIHZlcmlmeSB3aGljaCBLY29uZmlnIG9wdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGVuYWJsZSBgbXQ3OTI1YCBmdW5jdGlvbmFsaXR5LiBMZXQncyBkZWx2ZSBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ2AgZmlsZSBhbmQgY29uZmlybSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGlzIGlzIGEgY3J1Y2lhbCBzdGVwIHRvIGVuc3VyaW5nIHRoZSBkcml2ZXIgaXMgcHJvcGVybHkgYnVpbHQgYW5kIGV4cG9zZWQgZm9yIHRlc3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4Njk4LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDM6MTk6MzMuOTg2MzE1OTQ2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdGNvbmZpZyBNVDc5MjVfQ09NTU9OXFxuICAgMzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDQ6XFx0XFx0c2VsZWN0IE1UNzkyeF9MSUJcXG4gICA1OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgIDY6XFx0XFxuICAgNzpcXHRjb25maWcgTVQ3OTI1RVxcbiAgIDg6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuICAgOTpcXHRcXHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxcbiAgMTA6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBQQ0llIGRldmljZXMsXFxuICAxNDpcXHRcXHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxcbiAgMTU6XFx0XFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG4gIDE4OlxcdFxcbiAgMTk6XFx0Y29uZmlnIE1UNzkyNVVcXG4gIDIwOlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcXFwiXFxuICAyMTpcXHRcXHRzZWxlY3QgTVQ3OTJ4X1VTQlxcbiAgMjI6XFx0XFx0c2VsZWN0IE1UNzkyNV9DT01NT05cXG4gIDIzOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDI0OlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuICAyNTpcXHRcXHRoZWxwXFxuICAyNjpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgVVNCIGRldmljZXMsXFxuICAyNzpcXHRcXHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxcbiAgMjg6XFx0XFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXFxuICAyOTpcXHRcXG4gIDMwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDM6MTk6MzMuOTg2Mzg2NTA2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk3NzY5OTM0OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEtjb25maWcgRmlsZSBmb3IgTVQ3NiBXaXJlbGVzcyBEcml2ZXJzKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBzb21lIHdpcmVsZXNzIGRyaXZlciBjb25maWd1cmF0aW9ucywgYW5kIG15IGd1dCBmZWVsaW5nIGlzIHRoYXQgd2UncmUgbWlzc2luZyBzb21ldGhpbmcgY3J1Y2lhbC4gSSd2ZSBiZWVuIGRvd24gdGhpcyByb2FkIGJlZm9yZS4gVG8gbWFrZSBzdXJlIHdlJ3ZlIGdvdCB0aGUgd2hvbGUgcGljdHVyZSwgSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnYCBmaWxlLiBJdCdzIG9mdGVuIHRoZSBjZW50cmFsIHNvdXJjZSBvZiB0cnV0aCBmb3IgdGhlc2UgdHlwZXMgb2YgY29uZmlndXJhdGlvbnMuIEkga25vdyB0aGUgTWVkaWF0ZWsgTVQ3NiBkcml2ZXJzIHByZXR0eSB3ZWxsLCBhbmQgYmFzZWQgb24gcGFzdCBleHBlcmllbmNlLCBLY29uZmlnIGZpbGVzIGFyZSB0aGUgYmVzdCBzdGFydGluZyBwb2ludCB3aGVuIEkgZW5jb3VudGVyIGEgc3lzdGVtIHRoYXQgaXMgbm90IGJlaGF2aW5nIGFzIGV4cGVjdGVkLiBMZXQncyBzZWUgd2hhdCdzIGJlaW5nIGVuYWJsZWQgb3IgZGlzYWJsZWQgdGhlcmUgYW5kIHdoZXRoZXIgdGhlcmUncyBhIHNldHRpbmcgdGhhdCdzIGNhdXNpbmcgdGhpcyBpc3N1ZS4gVGltZSB0byBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NjY0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoxOTo0My43NjMzODI5MTJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc5NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDYwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRjb25maWcgTVQ3Nl9DT1JFXFxuICAgMzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDQ6XFx0XFx0c2VsZWN0IFBBR0VfUE9PTFxcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgTVQ3Nl9MRURTXFxuICAgNzpcXHRcXHRib29sXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxcbiAgIDk6XFx0XFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTVQ3Nl9DT1JFPUxFRFNfQ0xBU1NcXG4gIDEwOlxcdFxcdGRlZmF1bHQgeVxcbiAgMTE6XFx0XFxuICAxMjpcXHRjb25maWcgTVQ3Nl9VU0JcXG4gIDEzOlxcdFxcdHRyaXN0YXRlXFxuICAxNDpcXHRcXHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxcbiAgMTU6XFx0XFxuICAxNjpcXHRjb25maWcgTVQ3Nl9TRElPXFxuICAxNzpcXHRcXHR0cmlzdGF0ZVxcbiAgMTg6XFx0XFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIE1UNzZ4MDJfTElCXFxuICAyMTpcXHRcXHR0cmlzdGF0ZVxcbiAgMjI6XFx0XFx0c2VsZWN0IE1UNzZfQ09SRVxcbiAgMjM6XFx0XFxuICAyNDpcXHRjb25maWcgTVQ3NngwMl9VU0JcXG4gIDI1OlxcdFxcdHRyaXN0YXRlXFxuICAyNjpcXHRcXHRzZWxlY3QgTVQ3Nl9VU0JcXG4gIDI3OlxcdFxcbiAgMjg6XFx0Y29uZmlnIE1UNzZfQ09OTkFDX0xJQlxcbiAgMjk6XFx0XFx0dHJpc3RhdGVcXG4gIDMwOlxcdFxcdHNlbGVjdCBNVDc2X0NPUkVcXG4gIDMxOlxcdFxcbiAgMzI6XFx0Y29uZmlnIE1UNzkyeF9MSUJcXG4gIDMzOlxcdFxcdHRyaXN0YXRlXFxuICAzNDpcXHRcXHRzZWxlY3QgTVQ3Nl9DT05OQUNfTElCXFxuICAzNTpcXHRcXG4gIDM2OlxcdGNvbmZpZyBNVDc5MnhfVVNCXFxuICAzNzpcXHRcXHR0cmlzdGF0ZVxcbiAgMzg6XFx0XFx0c2VsZWN0IE1UNzZfVVNCXFxuICAzOTpcXHRcXG4gIDQwOlxcdGNvbmZpZyBNVDc2X05QVVxcbiAgNDE6XFx0XFx0dHJpc3RhdGVcXG4gIDQyOlxcdFxcdGRlcGVuZHMgb24gTkVUX0FJUk9IQV9OUFU9eSB8fCBNVDc2X0NPUkU9TkVUX0FJUk9IQV9OUFVcXG4gIDQzOlxcdFxcbiAgNDQ6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnXFxcIlxcbiAgNDU6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnXFxcIlxcbiAgNDY6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnXFxcIlxcbiAgNDc6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnXFxcIlxcbiAgNDg6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnXFxcIlxcbiAgNDk6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnXFxcIlxcbiAgNTA6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnXFxcIlxcbiAgNTE6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoxOTo0My43NjM0NjIyMDJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6OTA5MjM2ODczNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgSW5zcGVjdGlvbjogTWVkaWF0ZWsgV2lyZWxlc3MgRHJpdmVyKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGlzLiBUaGUgdGFzayByZXF1aXJlcyBsb29raW5nIGF0IHRoZSBwYXJlbnQgS2NvbmZpZyBmaWxlLiBJJ20gZ29pbmcgdG8gc3RhcnQgd2l0aCB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdgIGRpcmVjdG9yeS4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZm9yIHRoaXMgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVyIGFuZCB3aGVyZSBpdHMgZGVwZW5kZW5jaWVzIGxpZS4gSG9wZWZ1bGx5LCB0aGlzIEtjb25maWcgd2lsbCBnaXZlIG1lIGEgY2xlYXIgb3ZlcnZpZXcgb2YgdGhlIHJlbGV2YW50IGJ1aWxkIHBhcmFtZXRlcnMgYW5kIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZsYWdzLiBUaGF0IHNob3VsZCBiZSB0aGUganVtcGluZyBvZmYgcG9pbnQgZm9yIHJlc29sdmluZyB3aGF0ZXZlciBpc3N1ZSBicm91Z2h0IG1lIHRvIHRoaXMgcG9pbnQuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBpcyBjb250cm9sbGVkIGFuZCBpbnRlZ3JhdGVkIHdpdGhpbiB0aGUgYnJvYWRlciBrZXJuZWwgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA2MzYsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAzOjE5OjUyLjg1NTgzMjk0OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTkzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgV0xBTl9WRU5ET1JfTUVESUFURUtcXG4gICAzOlxcdFxcdGJvb2wgXFxcIk1lZGlhVGVrIGRldmljZXNcXFwiXFxuICAgNDpcXHRcXHRkZWZhdWx0IHlcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgSWYgeW91IGhhdmUgYSB3aXJlbGVzcyBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cXG4gICA3OlxcdFxcbiAgIDg6XFx0XFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJ3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxcbiAgIDk6XFx0XFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsIHRoZVxcbiAgMTA6XFx0XFx0ICBxdWVzdGlvbnMgYWJvdXQgdGhlc2UgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXFxuICAxMTpcXHRcXHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0aWYgV0xBTl9WRU5ET1JfTUVESUFURUtcXG4gIDE0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS9LY29uZmlnXFxcIlxcbiAgMTU6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdcXFwiXFxuICAxNjpcXHRlbmRpZiAjIFdMQU5fVkVORE9SX01FRElBVEVLXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAzOjE5OjUyLjg1NTg5NjI0OVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NDE3MzU2OTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTVQ3OTI1IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSBhIHF1aWNrIGRlcGVuZGVuY3kgY2hlY2ssIGl0IGxvb2tzIGxpa2UgYE1UNzkyNVVgIGxldmVyYWdlcyBgTUFDODAyMTFgIGFuZCBgVVNCYCwgd2hpbGUgYE1UNzkyNUVgIHVzZXMgYE1BQzgwMjExYCBhbmQgYFBDSWAuIEJvdGggc2hhcmUgYE1UNzkyNV9DT01NT05gLCBzbyB0aGUgcGF0Y2ggKnNob3VsZCogYWZmZWN0IGJvdGgsIGJ1dCBsZXQncyBiZSBzdXJlLiBXZSdyZSBsb29raW5nIGF0IGEgY2hhbmdlIHdpdGhpbiB0aGUgYFdMQU5fVkVORE9SX01FRElBVEVLYCBzZWN0aW9uLlxuXG5Ob3csIGZvY3VzaW5nIG9uIHRoZSBwYXRjaCBpdHNlbGYuIEl0IHNlZW1zIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgYG10NzkyNV9tYWNfd3JpdGVfdHh3aWAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgdGhlIGBNVF9UWEQxX1RHSURgIGZpZWxkIHdpdGhpbiB0aGUgYHR4d2lgIHN0cnVjdHVyZS4gUHJldmlvdXNseSwgdGhlIGNvZGUgY29uZGl0aW9uYWxseSBhc3NpZ25lZCB0aGUgYGJhbmRfaWR4YCB2YWx1ZSB0byBgTVRfVFhEMV9UR0lEYCBiYXNlZCBvbiBhIHNpbXBsZSBgaWYgKGJhbmRfaWR4KWAgY2hlY2suIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgc3BlY2lmaWMgY29uZGl0aW9uOiBub3cgdGhlIGNvZGUgY2hlY2tzIGBiYW5kX2lkeGAgYW5kIGFsc28gZW5zdXJlcyBgYmFuZF9pZHhgIGlzIG5vdCBgMHhmZmAuIFRoZSBjb21tZW50IG1lbnRpb25zIHRoYXQgYDB4ZmZgIHJlcHJlc2VudHMgYEJBTkRfQVVUT2AgZm9yIHRoZSBmaXJtd2FyZSwgYW5kIGl0IGNhbm5vdCBiZSBlbmNvZGVkIHdpdGhpbiBgVEdJRGAuIFNvLCB0aGlzIHNlZW1zIGxpa2UgYSBmaXggdG8gcHJldmVudCBhbiBpbmNvcnJlY3QgdmFsdWUgYmVpbmcgcGFzc2VkIHRvIHRoZSBmaXJtd2FyZSwgd2hpY2ggc2hvdWxkIHByZXZlbnQgYSBjcmFzaC9lcnJvci5cblxuVG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGBNVF9UWEQxX1RHSURgLiBJJ2xsIGxvb2sgZWl0aGVyIGluIGBtYWMuaGAgb3Igd2l0aGluIHRoaXMgYG1hYy5jYCBmaWxlIHRvIGVuc3VyZSB0aGUgYml0ZmllbGQgZGVmaW5pdGlvbiBtYXRjaGVzIHdoYXQgSSBzdXNwZWN0LiBUaGlzIHdpbGwgY2xhcmlmeSB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIGFuZCBob3cgaXQgbWlnaHQgaW1wYWN0IHRyYWZmaWMgbWFuYWdlbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzExMDAsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoxOTo1Ny4yNzMyNTU2MloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkwODkxNDIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1UX1RYRDFfVEdJRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMyX21hYy5oPTM1PWVudW0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYzJfbWFjLmgtNTUtI2RlZmluZSBNVF9UWEQxX0xPTkdfRk9STUFUXFx0XFx0QklUKDMxKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMyX21hYy5oOjU2OiNkZWZpbmUgTVRfVFhEMV9UR0lEXFx0XFx0XFx0QklUKDMwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMyX21hYy5oLTU3LSNkZWZpbmUgTVRfVFhEMV9PV05fTUFDXFx0XFx0XFx0R0VOTUFTSygyOSwgMjQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMuaD0yMDU9ZW51bSB0eF9mcmFnX2lkeCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMuaC0yMzItI2RlZmluZSBNVF9UWEQxX0hEUl9GT1JNQVRcXHRcXHRHRU5NQVNLKDE1LCAxNClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMuaDoyMzM6I2RlZmluZSBNVF9UWEQxX1RHSURcXHRcXHRcXHRHRU5NQVNLKDEzLCAxMilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMuaC0yMzQtI2RlZmluZSBNVF9UWEQxX1dMQU5fSURYXFx0XFx0R0VOTUFTSygxMSwgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM9NTA0PXZvaWQgbXQ3Nl9jb25uYWMyX21hY193cml0ZV90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTU2Mi1cXHRpZiAocGh5X2lkeCB8fCBiYW5kX2lkeClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jOjU2MzpcXHRcXHR2YWwgfD0gTVRfVFhEMV9UR0lEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNTY0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9NzQ3PW10NzkyNV9tYWNfd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODAyLVxcdGlmIChiYW5kX2lkeCBcXHUwMDI2XFx1MDAyNiBiYW5kX2lkeCAhPSAweGZmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjgwMzpcXHRcXHR2YWwgfD0gRklFTERfUFJFUChNVF9UWEQxX1RHSUQsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04MDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz04OTQ9dm9pZCBtdDc5OTZfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtOTUyLVxcdGlmIChiYW5kX2lkeClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzo5NTM6XFx0XFx0dmFsIHw9IEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtOTU0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoxOTo1Ny42NjQxNTIyMzNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjU1NjQxMjk2MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgTVQ3OTI1IERyaXZlciBWdWxuZXJhYmlsaXR5IFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYE1UX1RYRDFfVEdJRGAgZmllbGQgYW5kIGhvdyBpdCdzIGhhbmRsZWQuIEl0J3MgYSAyLWJpdCBmaWVsZCwgbWVhbmluZyBpdCBjYW4gb25seSBob2xkIHZhbHVlcyBmcm9tIDAgdG8gMy4gVGhlIGNvZGUgdXNlcyBgRklFTERfUFJFUGAsIGFuZCBJIHNlZSBhIHBvdGVudGlhbCBpc3N1ZSBpZiBgYmFuZF9pZHhgIGJlY29tZXMgMHhmZiwgYmVjYXVzZSBkaXJlY3RseSBzZXR0aW5nIHRoYXQgd2l0aCBgRklFTERfUFJFUGAgY291bGQgY2F1c2UgYSB3YXJuaW5nIG9yIG92ZXJmbG93IG9yIGludmFsaWQgYml0IGNvbmZpZ3VyYXRpb24sIGVzcGVjaWFsbHkgd2l0aCBhIGNvbnN0YW50OyBob3dldmVyLCBzaW5jZSBpdCdzIGEgdmFyaWFibGUsIHRoZSBjb2RlIG1hc2tzIGFuZCBzaGlmdHMsIHJlc3VsdGluZyBpbiBhIFRHSUQgdmFsdWUgb2YgMy5cblxuTXkgcHJpbWFyeSBjb25jZXJuIGlzIHdoZXRoZXIgdGhpcyBpcyBhIGNvZGUgcGF0aCBJIGNhbiBhY3R1YWxseSByZWFjaCBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBDYW4gSSB0cmlnZ2VyIHRoaXMgY29uZGl0aW9uIHRocm91Z2ggYSBVU0IgZ2FkZ2V0IHNldHVwIGluIHNvbWV0aGluZyBsaWtlIHN5emthbGxlciBvciBzdGFuZGFyZCBRRU1VPyBMZXQncyBzZWUuLi4gU2VjdGlvbiAyIHBvaW50cyBvdXQgdGhhdCBzb21lIGhhcmR3YXJlLCBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzIGFuZCBzdWNoLCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuIEJ1dCBTZWN0aW9uIDMgaGlnaGxpZ2h0cyByZWFjaGFibGUgZHJpdmVyczogdGhpbmdzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgc3VjaCBhcyB2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBldGMuXG5cblNpbmNlIE1UNzkyNSBoYXMgVVNCIHN1cHBvcnQgKE1UNzkyNVUpLCBhbmQgaXQgY2FuIGJpbmQgdG8gVVNCIGRldmljZSBJRHMgdG8gdHJhbnNtaXQgcGFja2V0cywgaXQncyBhIHN0cm9uZyBpbmRpY2F0b3IgdGhhdCBVU0IgZW11bGF0aW9uIHNob3VsZCBiZSBhIHZpYWJsZSBhY2Nlc3MgcGF0aC4gQ2FuIEkgcmVhY2ggdGhlIGBtdDc5MjVfbWFjX3dyaXRlX3R4d2lgIGZ1bmN0aW9uIHRocm91Z2ggYG10NzkyNXVgPyBZZXMhIFRoZSBUWCBwYXRoIGludm9sdmVzIGBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgIC1cdTAwM2UgYG10NzkyNV91c2Jfc2Rpb193cml0ZV90eHdpYCAtXHUwMDNlIGBtdDc5MjVfbWFjX3dyaXRlX3R4d2lgLiBFeGNlbGxlbnQsIHRoYXTigJlzIHByb21pc2luZy5cblxuSSBuZWVkIHRvIG5haWwgZG93biBteSB0YXJnZXRzIGZvciBmdXp6aW5nLiBMZXQgbWUgY2hlY2sgdGhlIGNhbGxlcnMgYW5kIHN5bWJvbHMuIEknbGwgZm9jdXMgb24gYG10NzkyNV9tYWNfd3JpdGVfdHh3aWAsIGBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgLCBhbmQgYG10NzkyNV91c2Jfc2Rpb193cml0ZV90eHdpYCAodGhlIGxhdHRlciBpcyBzdGF0aWMsIGJ1dCByZWxldmFudCkuXG5cbk5vdywgaXMgYG10NzkyNV9tYWNfd3JpdGVfdHh3aWAgc3RhdGljIG9yIGV4cG9ydGVkPyBMZXQgbWUgY2hlY2suLi4gQWgsIGxpbmUgODY4OiBgRVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21hY193cml0ZV90eHdpKTtgIFNvIGl0IGlzIGFuIGV4cG9ydGVkLCBub24tc3RhdGljIHN5bWJvbC4gQW5kIGBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JgIGlzIGFsc28gZXhwb3J0ZWQuIFdlIGFsc28gaGF2ZSBgbXQ3OTI1ZV90eF9wcmVwYXJlX3NrYmAgZm9yIFBDSS5cblxuTmV4dCwgSSBuZWVkIHRvIHZlcmlmeSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBMZXQncyBsb29rIGF0IHRoZSBgRW5hYmxlQ29uZmlnc2AuIEkgbmVlZCBgTVQ3OTI1VWAsIGBNVDc5MjVfQ09NTU9OYCwgYE1BQzgwMjExYCwgYFVTQmAsIGFuZCBgV0xBTl9WRU5ET1JfTUVESUFURUtgLlxuXG5Pa2F5LCB0aW1lIHRvIGRvdWJsZS1jaGVjayBldmVyeXRoaW5nOlxuXG4xLiAgSXMgdGhpcyBldmVuIHdvcnRoIGZ1enppbmc/IFllcy5cbjIuICBNeSBmb2N1cyBzeW1ib2xzIGFyZSBzZXQ6IGBtdDc5MjVfbWFjX3dyaXRlX3R4d2lgLCBgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiYC5cbjMuICBNeSBlbmFibGUgY29uZmlncyBhcmUgY29ycmVjdC5cbjQuICBSZWFzb25pbmcgaXMgc291bmQgYW5kIGRvY3VtZW50ZWQuXG5cbkFscmlnaHQsIEknbSByZWFkeSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyOTI1LCJPdXRwdXRUb2tlbnMiOjE2NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoyMDoyMy4yMjgyODQ4MTFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDgxNzQzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTI1VVwiLFxuICAgIFwiTVQ3OTI1X0NPTU1PTlwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTUVESUFURUtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfbWFjX3dyaXRlX3R4d2lcIixcbiAgICBcIm10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGJhbmRfaWR4IGhhbmRsaW5nIGluIG10NzkyNV9tYWNfd3JpdGVfdHh3aSgpIHdoZW4gd3JpdGluZyBUWCB3aXJlbGVzcyBpbmZvcm1hdGlvbiBkZXNjcmlwdG9ycy4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgZGV2aWNlcyAoTVQ3OTI1VSkgd2hpY2ggYXJlIHJlYWNoYWJsZSBhbmQgZnV6emFibGUgdmlhIFVTQiBkZXZpY2UgZW11bGF0aW9uIChVU0IgUmF3IEdhZGdldCAvIHZ1c2IpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1UNzkyNV9DT01NT05cIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIldMQU5fVkVORE9SX01FRElBVEVLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1X21hY193cml0ZV90eHdpXCIsXG4gICAgXCJtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2JcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBiYW5kX2lkeCBoYW5kbGluZyBpbiBtdDc5MjVfbWFjX3dyaXRlX3R4d2koKSB3aGVuIHdyaXRpbmcgVFggd2lyZWxlc3MgaW5mb3JtYXRpb24gZGVzY3JpcHRvcnMuIFRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGRldmljZXMgKE1UNzkyNVUpIHdoaWNoIGFyZSByZWFjaGFibGUgYW5kIGZ1enphYmxlIHZpYSBVU0IgZGV2aWNlIGVtdWxhdGlvbiAoVVNCIFJhdyBHYWRnZXQgLyB2dXNiKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDM6MjA6MjMuMzAzMTA5MzVaIiwiU2VxIjoyNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4ODg3MjA1OTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDM6MjA6MjMuMzAzNjI0MzNaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo1ODg4NjY4Njc2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNhbGN1bGF0aW9uIG9mIGhhcmR3YXJlIFRYIGRlc2NyaXB0b3IgYml0cyBpbiBgbXQ3OTI1X21hY193cml0ZV90eHdpKClgIGJ5IGF2b2lkaW5nIHRoZSB1c2Ugb2YgYEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeClgIHdoZW4gYGJhbmRfaWR4ID09IDB4ZmZgIChCQU5EX0FVVE8pLlxcblxcbkFsbCBsb2NhbCB2YXJpYWJsZXMsIGluY2x1ZGluZyBgYmFuZF9pZHhgLCBhcmUgZXhwbGljaXRseSBpbml0aWFsaXplZCwgYW5kIHRoZSBmdW5jdGlvbiB3cml0ZXMgZGVzY3JpcHRvciBmaWVsZHMgdG8gYSBwcmUtYWxsb2NhdGVkL21hbmFnZWQgYnVmZmVyIGZvciBoYXJkd2FyZSB0cmFuc21pc3Npb24uIE5vIG1lbW9yeSBjb3B5aW5nIHRvIHVzZXIgc3BhY2UsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgdXNhZ2UsIG9yIHVuaW5pdGlhbGl6ZWQgcGFkZGluZy9idWZmZXIgaGFuZGxpbmcgaXMgaW50cm9kdWNlZCBvciBtb2RpZmllZC4gVGhlcmVmb3JlLCB0aGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGRhNWJiNmIwNjlhZGVjZDJhNjkzNTE4MmI2YTY3MmNlNTc0MmJhMGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCAxMSAwMzoxODozMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmNcbmluZGV4IDEwMWY1NzFiMDI3ZjEuLjNiODJjOWRlMjZjNWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmNcbkBAIC03OTgsNyArNzk4LDggQEAgbXQ3OTI1X21hY193cml0ZV90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXG4gXHR2YWwgPSBGSUVMRF9QUkVQKE1UX1RYRDFfV0xBTl9JRFgsIHdjaWQtXHUwMDNlaWR4KSB8XG4gXHQgICAgICBGSUVMRF9QUkVQKE1UX1RYRDFfT1dOX01BQywgb21hY19pZHgpO1xuIFxuLVx0aWYgKGJhbmRfaWR4KVxuK1x0LyogMHhmZiBtZWFucyBCQU5EX0FVVE8gdG8gdGhlIGZpcm13YXJlLCBhbmQgVEdJRCBjYW5ub3QgZW5jb2RlIGl0ICovXG4rXHRpZiAoYmFuZF9pZHggXHUwMDI2XHUwMDI2IGJhbmRfaWR4ICE9IDB4ZmYpXG4gXHRcdHZhbCB8PSBGSUVMRF9QUkVQKE1UX1RYRDFfVEdJRCwgYmFuZF9pZHgpO1xuIFxuIFx0dHh3aVsxXSA9IGNwdV90b19sZTMyKHZhbCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoyMDoyMy4zMDM2MjcwNFoiLCJTZXEiOjI5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1OTQ3NTI1NzY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJldmlld2luZyB0aGUgTVQ3OTI1IE1BQyBXcml0ZSBUWFdJIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIG10NzkyNSBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgYG10NzkyNV9tYWNfd3JpdGVfdHh3aWAgZnVuY3Rpb24uIFRoZSBjb2RlJ3MgcHVycG9zZSBpcyB0byBjb25zdHJ1Y3QgdGhlIHRyYW5zbWl0IGRlc2NyaXB0b3IgKFRYV0kpIGZvciB0aGUgaGFyZHdhcmUuIEkgY2FuIGltbWVkaWF0ZWx5IHNlZSB0aGUgY2hhbmdlIGZvY3VzZXMgb24gaG93IHRoZSBgYmFuZF9pZHhgIGlzIGhhbmRsZWQgd2l0aGluIHRoZSBgTVRfVFhEMV9UR0lEYCBmaWVsZC5cblxuUHJldmlvdXNseSwgaXQgc2VlbXMgdGhlIGNvZGUgdW5jb25kaXRpb25hbGx5IGNoZWNrZWQgYGJhbmRfaWR4YCdzIHRydXRoaW5lc3MuIE5vdywgd2UncmUgZXhwbGljaXRseSBjaGVja2luZyBpZiBgYmFuZF9pZHhgIGlzbid0IGAweGZmYC4gVGhlIGNvbW1lbnQgY2xhcmlmaWVzIHRoYXQgYSB2YWx1ZSBvZiBgMHhmZmAgaW1wbGllcyBgQkFORF9BVVRPYCBmb3IgdGhlIGZpcm13YXJlLiBJdCBhcHBlYXJzIHRoYXQgdGhlIGhhcmR3YXJlJ3MgYFRHSURgIGZpZWxkIGNhbid0IGRpcmVjdGx5IHJlcHJlc2VudCBgQkFORF9BVVRPYC4gVGhpcyBtYWtlcyBzZW5zZSwgYXMgYSBkaXJlY3QgbWFwcGluZyB3b3VsZCBpbnRyb2R1Y2UgYW1iaWd1aXR5LlxuXG5TbywgdGhlIGxvZ2ljIG5vdyBjb3JyZWN0bHkgc2tpcHMgc2V0dGluZyB0aGUgYE1UX1RYRDFfVEdJRGAgd2hlbiBgYmFuZF9pZHhgIGlzIGAweGZmYCB3aGljaCB3aWxsIHNlbmQgdGhlIHNpZ25hbCB0byB0aGUgaGFyZHdhcmUgdGhhdCBpdCBjYW4gY2hvb3NlIGJhc2VkIG9uIHRoZSBsb2dpYyBvZiB0aGUgYEJBTkRfQVVUT2Agc2V0dGluZy4gVGhhdCdzIGEgZ29vZCBmaXgsIGl0IGNsZWFucyB1cCBhIHBvdGVudGlhbCBjb3JuZXIgY2FzZSBhbmQgcHJvYmFibHkgbWFrZXMgdGhlIGZpcm13YXJlJ3MgaGFuZGxpbmcgb2YgYEJBTkRfQVVUT2AgbW9yZSByb2J1c3QuIFRoaXMgaXMgYSBzdWJ0bGUgYnV0IGltcG9ydGFudCBjb3JyZWN0aW9uIHRvIGVuc3VyZSB0aGUgcmlnaHQgYmFuZCBzZWxlY3Rpb24gaGFwcGVucyBmb3IgdGhlIHdpcmVsZXNzIHRyYW5zbWlzc2lvbi4gSXQncyBhIHNvbGlkLCBzdHJhaWdodGZvcndhcmQgY2hhbmdlLiBJJ20gc2F0aXNmaWVkIHdpdGggdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIwMCwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAzOjIwOjI5LjI1MTE1NTEyNloiLCJTZXEiOjMwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTU2MzkxMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X21hY193cml0ZV90eHdpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTY0MD1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjY0MTptdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMyhfX2xlMzIgKnR4d2ksIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNjQyLVxcdFxcdFxcdCAgIHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz02NzU9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo2NzY6bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjExKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNjc3LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9NzQ2PXZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo3NDc6bXQ3OTI1X21hY193cml0ZV90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNzQ4LVxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04NDAtXFx0aWYgKGlzXzgwMjMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODQxOlxcdFxcdG10NzkyNV9tYWNfd3JpdGVfdHh3aV84MDIzKHR4d2ksIHNrYiwgd2NpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODQyLVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4NDM6XFx0XFx0bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjExKGRldiwgdHh3aSwgc2tiLCBrZXkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg0NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg2Ny19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODY4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tYWNfd3JpdGVfdHh3aSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODY5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MTYyMj1tdDc5MjVfdXNiX3NkaW9fd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYyOS1cXHRtZW1zZXQodHh3aSwgMCwgTVRfU0RJT19UWERfU0laRSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTYzMDpcXHRtdDc5MjVfbWFjX3dyaXRlX3R4d2koXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgdHh3aSwgc2tiLCB3Y2lkLCBrZXksIHBpZCwgcWlkLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjMxLVxcdHNrYl9wdXNoKHNrYiwgTVRfU0RJT19UWERfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zNDI9dm9pZCBtdDc5MjVfbWFjX3NldF9maXhlZF9yYXRlX3RhYmxlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzQzLVxcdFxcdFxcdFxcdCAgICAgdTggdGJsX2lkeCwgdTE2IHJhdGVfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNDQ6dm9pZCBtdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNDUtXFx0XFx0XFx0ICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYz05PWludCBtdDc5MjVlX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmMtNDQtXFx0cGlkID0gbXQ3Nl90eF9zdGF0dXNfc2tiX2FkZChtZGV2LCB3Y2lkLCB0eF9pbmZvLVxcdTAwM2Vza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYzo0NTpcXHRtdDc5MjVfbWFjX3dyaXRlX3R4d2kobWRldiwgdHh3aV9wdHIsIHR4X2luZm8tXFx1MDAzZXNrYiwgd2NpZCwga2V5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYy00Ni1cXHRcXHRcXHQgICAgICBwaWQsIHFpZCwgMCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAzOjIwOjI5LjM0Njc5NzM5NVoiLCJTZXEiOjMxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2OTIxNjE2NjkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHNuaXBwZXQsIGZyYW1lZCBhcyBteSBvd24gdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVDc5MjUgTUFDIExheWVyKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jYCBmaWxlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBmb2N1cyBvbiBsaW5lcyA3NDYgdGhyb3VnaCA4MTAuIE15IGd1dCBmZWVsaW5nIGlzIHRlbGxpbmcgbWUgc29tZXRoaW5nIGlzIGFtaXNzIGluIHRoaXMgYXJlYS4gUHJvYmFibHkgcmVsYXRlZCB0byB0aGUgTUFDIGxheWVyIHByb2Nlc3Npbmcgb24gdGhlIG10NzkyNS4gSSdsbCBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IGFuZCB1bmRlcnN0YW5kIHdoYXQgb3BlcmF0aW9ucyBhcmUgdHlwaWNhbGx5IHBlcmZvcm1lZCBpbiB0aGlzIHNlY3Rpb24gb2YgdGhlIGNvZGViYXNlIGFuZCB3aGVyZSB0aGlzIGJsb2NrIGZpdHMgaW50byB0aGUgd2hvbGUgcGljdHVyZS4gTGV0J3Mgc2VlIGlmIHRoaXMgc2VjdGlvbiByZWxhdGVzIHRvIHRyYWZmaWMgc2NoZWR1bGluZywgZnJhbWUgdHJhbnNtaXNzaW9uLCBvciBwZXJoYXBzIGV2ZW4gcG93ZXIgbWFuYWdlbWVudC4gSSdtIGhvcGluZyBJIGNhbiBpZGVudGlmeSB0aGUgc291cmNlIG9mIHRoZSBpc3N1ZSBxdWlja2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzU3LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDM6MjA6MzYuMjY4NDE2MTU2WiIsIlNlcSI6MzIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMDE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3ODAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3ODA6XFx0XFx0fSBlbHNlIGlmIChxaWQgXFx1MDAzZT0gTVRfVFhRX1BTRCkge1xcbiA3ODE6XFx0XFx0XFx0cF9mbXQgPSBtdDc2X2lzX21taW8oZGV2KSA/IE1UX1RYX1RZUEVfQ1QgOiBNVF9UWF9UWVBFX1NGO1xcbiA3ODI6XFx0XFx0XFx0cV9pZHggPSBNVF9MTUFDX0FMVFgwO1xcbiA3ODM6XFx0XFx0fSBlbHNlIHtcXG4gNzg0OlxcdFxcdFxcdHBfZm10ID0gbXQ3Nl9pc19tbWlvKGRldikgPyBNVF9UWF9UWVBFX0NUIDogTVRfVFhfVFlQRV9TRjtcXG4gNzg1OlxcdFxcdFxcdHFfaWR4ID0gd21tX2lkeCAqIE1UNzZfQ09OTkFDX01BWF9XTU1fU0VUUyArXFxuIDc4NjpcXHRcXHRcXHRcXHRtdDc2X2Nvbm5hY19sbWFjX21hcHBpbmcoc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYikpO1xcbiA3ODc6XFx0XFxuIDc4ODpcXHRcXHRcXHQvKiBjb3VudGluZyBub24tb2ZmbG9hZGluZyBza2JzICovXFxuIDc4OTpcXHRcXHRcXHR3Y2lkLVxcdTAwM2VzdGF0cy50eF9ieXRlcyArPSBza2ItXFx1MDAzZWxlbjtcXG4gNzkwOlxcdFxcdFxcdHdjaWQtXFx1MDAzZXN0YXRzLnR4X3BhY2tldHMrKztcXG4gNzkxOlxcdFxcdH1cXG4gNzkyOlxcdFxcbiA3OTM6XFx0XFx0dmFsID0gRklFTERfUFJFUChNVF9UWEQwX1RYX0JZVEVTLCBza2ItXFx1MDAzZWxlbiArIHN6X3R4ZCkgfFxcbiA3OTQ6XFx0XFx0ICAgICAgRklFTERfUFJFUChNVF9UWEQwX1BLVF9GTVQsIHBfZm10KSB8XFxuIDc5NTpcXHRcXHQgICAgICBGSUVMRF9QUkVQKE1UX1RYRDBfUV9JRFgsIHFfaWR4KTtcXG4gNzk2OlxcdFxcdHR4d2lbMF0gPSBjcHVfdG9fbGUzMih2YWwpO1xcbiA3OTc6XFx0XFxuIDc5ODpcXHRcXHR2YWwgPSBGSUVMRF9QUkVQKE1UX1RYRDFfV0xBTl9JRFgsIHdjaWQtXFx1MDAzZWlkeCkgfFxcbiA3OTk6XFx0XFx0ICAgICAgRklFTERfUFJFUChNVF9UWEQxX09XTl9NQUMsIG9tYWNfaWR4KTtcXG4gODAwOlxcdFxcbiA4MDE6XFx0XFx0LyogMHhmZiBtZWFucyBCQU5EX0FVVE8gdG8gdGhlIGZpcm13YXJlLCBhbmQgVEdJRCBjYW5ub3QgZW5jb2RlIGl0ICovXFxuIDgwMjpcXHRcXHRpZiAoYmFuZF9pZHggXFx1MDAyNlxcdTAwMjYgYmFuZF9pZHggIT0gMHhmZilcXG4gODAzOlxcdFxcdFxcdHZhbCB8PSBGSUVMRF9QUkVQKE1UX1RYRDFfVEdJRCwgYmFuZF9pZHgpO1xcbiA4MDQ6XFx0XFxuIDgwNTpcXHRcXHR0eHdpWzFdID0gY3B1X3RvX2xlMzIodmFsKTtcXG4gODA2OlxcdFxcdHR4d2lbMl0gPSAwO1xcbiA4MDc6XFx0XFxuIDgwODpcXHRcXHR2YWwgPSBGSUVMRF9QUkVQKE1UX1RYRDNfUkVNX1RYX0NPVU5ULCAxNSk7XFxuIDgwOTpcXHRcXG4gODEwOlxcdFxcdGlmIChrZXkpXFxuIDgxMTpcXHRcXHRcXHR2YWwgfD0gTVRfVFhEM19QUk9URUNUX0ZSQU1FO1xcbiA4MTI6XFx0XFx0aWYgKGluZm8tXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX0NUTF9OT19BQ0spXFxuIDgxMzpcXHRcXHRcXHR2YWwgfD0gTVRfVFhEM19OT19BQ0s7XFxuIDgxNDpcXHRcXHRpZiAod2NpZC1cXHUwMDNlYW1zZHUpXFxuIDgxNTpcXHRcXHRcXHR2YWwgfD0gTVRfVFhEM19IV19BTVNEVTtcXG4gODE2OlxcdFxcbiA4MTc6XFx0XFx0dHh3aVszXSA9IGNwdV90b19sZTMyKHZhbCk7XFxuIDgxODpcXHRcXHR0eHdpWzRdID0gMDtcXG4gODE5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoyMDozNi4yNjg1NDgxODZaIiwiU2VxIjozMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6OTM3MDc4NTQyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgYnJlYWtkb3duIG9mIG15IHRob3VnaHQgcHJvY2VzcyBhcyBJIGRlbHZlIGludG8gdGhlIGBtdDc5MjVfbWFjX3dyaXRlX3R4d2lgIGZ1bmN0aW9uLCBmb2N1c2luZyBvbiB0aGUgb3JpZ2luIG9mIGBiYW5kX2lkeGA6XG5cbioqRGVjb25zdHJ1Y3RpbmcgYG10NzkyNV9tYWNfd3JpdGVfdHh3aWAgYW5kIHRoZSBFbHVzaXZlIGBiYW5kX2lkeGAqKlxuXG5BbHJpZ2h0LCBsZXQncyB0cmFjZSB0aGlzIGBiYW5kX2lkeGAgdmFyaWFibGUgd2l0aGluIGBtdDc5MjVfbWFjX3dyaXRlX3R4d2lgLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIHByZWNpc2VseSAqd2hlcmUqIHRoaXMgaW5kZXggaXMgYmVpbmcgZGVyaXZlZC4gSXQncyBjcnVjaWFsIGJlY2F1c2UgaXQncyBjbGVhcmx5IHJlbGF0ZWQgdG8gYmFuZCBzZWxlY3Rpb24gaW4gdGhlIHJhZGlvIGhhcmR3YXJlLCBhbmQgdGhhdCdzIGZ1bmRhbWVudGFsIGZvciBjb3JyZWN0IHBhY2tldCB0cmFuc21pc3Npb24uIFNvLCBJIG5lZWQgdG8ga25vdyBpZiBpdCdzIGRlcml2ZWQgZnJvbSB0aGUgZHJpdmVyJ3MgY29uZmlndXJhdGlvbiwgdGhlIGluY29taW5nIHBhY2tldCwgb3IgbWF5YmUgc29tZXRoaW5nIGVsc2UgZW50aXJlbHkuXG5cbkknbGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlLiBJcyBgYmFuZF9pZHhgIHBhc3NlZCBpbiBkaXJlY3RseSBhcyBhbiBhcmd1bWVudD8gSWYgc28sIHRoYXQgZ2l2ZXMgbWUgYSBuYXJyb3dlciBzY29wZSB0byBodW50IGRvd24gaXRzIHVwc3RyZWFtIG9yaWdpbi4gSWYgaXQncyBhIGxvY2FsIHZhcmlhYmxlLCBJJ2xsIG5lZWQgdG8gd29yayBmcm9tIHRoZXJlLiBBcmUgdGhlcmUgYW55IG90aGVyIGRhdGEgc3RydWN0dXJlcyB0aGF0IGhhdmUgaW5mb3JtYXRpb24gdGhhdCBsb29rcyByZWxhdGVkIHRvIHRoaXM/IFRoaW5ncyBsaWtlIHRoZSByZWd1bGF0b3J5IGRvbWFpbiBvciBjb25maWd1cmVkIG9wZXJhdGluZyBiYW5kIHNwcmluZyB0byBtaW5kIGFzIHRoaW5ncyBJIGNhbiBjcm9zcy1yZWZlcmVuY2UsIGlmIG5lZWQgYmUuXG5cblRoZW4sIEknbGwgc2NydXRpbml6ZSB0aGUgZnVuY3Rpb24ncyBib2R5LiBJJ2xsIG1ldGljdWxvdXNseSBzY2FuIHRoZSBjb2RlLCBsb29raW5nIGZvciBhbnkgYXNzaWdubWVudHMgb3IgY2FsY3VsYXRpb25zIGludm9sdmluZyBgYmFuZF9pZHhgLiBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFscyB0aGF0IG1pZ2h0IHNldCBgYmFuZF9pZHhgIGJhc2VkIG9uLCBzYXksIHRoZSB0eXBlIG9mIGZyYW1lIGJlaW5nIHRyYW5zbWl0dGVkIChlLmcuLCBjb250cm9sIGZyYW1lcywgZGF0YSBmcmFtZXMsIG1hbmFnZW1lbnQgZnJhbWVzKT8gT3IsIGNvdWxkIGl0IGJlIGRlcml2ZWQgZnJvbSBhIGxvb2t1cCB0YWJsZT8gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGlzIGRyaXZlciwgaXQgd291bGQgbm90IGJlIGEgc3VycHJpc2UgdG8gc2VlIGEgbG90IG9mIGJpdC10d2lkZGxpbmcgYW5kIGhhcmR3YXJlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLlxuXG5NeSBwcmltYXJ5IGdvYWwgaGVyZSBpcyB0byBlc3RhYmxpc2ggYSBjb21wbGV0ZSBkYXRhIGZsb3cgcGljdHVyZSBvZiB0aGUgYGJhbmRfaWR4YCB2YXJpYWJsZS4gVWx0aW1hdGVseSwgdGhlIHF1ZXN0aW9uIGlzLCAqaG93KiBkb2VzIHRoZSBkcml2ZXIgZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSByYWRpbyBiYW5kIGZvciBhIGdpdmVuIHRyYW5zbWlzc2lvbj8gQW5kLCBkb2VzIHRoaXMgYXBwcm9hY2ggbWFrZSBzZW5zZSB3aXRoIHRoZSBjaGlwc2V0IGRvY3VtZW50YXRpb24gYW5kIGFueSBwcmV2aW91cyBleHBlcmllbmNlIEkndmUgaGFkIHdvcmtpbmcgd2l0aCBzaW1pbGFyIGhhcmR3YXJlP1xuXG5cbiIsIklucHV0VG9rZW5zIjo1NDIxLCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoyMDo0NS42MzkzMzcwODhaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5NzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc0NSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDc0NTpcXHRcXG4gNzQ2OlxcdHZvaWRcXG4gNzQ3OlxcdG10NzkyNV9tYWNfd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxcbiA3NDg6XFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4gNzQ5OlxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleSwgaW50IHBpZCxcXG4gNzUwOlxcdFxcdFxcdCAgICAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCB1MzIgY2hhbmdlZClcXG4gNzUxOlxcdHtcXG4gNzUyOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbyA9IElFRUU4MDIxMV9TS0JfQ0Ioc2tiKTtcXG4gNzUzOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYgPSBpbmZvLVxcdTAwM2Vjb250cm9sLnZpZjtcXG4gNzU0OlxcdFxcdHU4IHBfZm10LCBxX2lkeCwgb21hY19pZHggPSAwLCB3bW1faWR4ID0gMCwgYmFuZF9pZHggPSAwO1xcbiA3NTU6XFx0XFx0dTMyIHZhbCwgc3pfdHhkID0gbXQ3Nl9pc19tbWlvKGRldikgPyBNVF9UWERfU0laRSA6IE1UX1NESU9fVFhEX1NJWkU7XFxuIDc1NjpcXHRcXHRib29sIGlzXzgwMjMgPSBpbmZvLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9DVExfSFdfODAyMTFfRU5DQVA7XFxuIDc1NzpcXHRcXHRzdHJ1Y3QgbXQ3Nl92aWZfbGluayAqbXZpZjtcXG4gNzU4OlxcdFxcdGJvb2wgYmVhY29uID0gISEoY2hhbmdlZCBcXHUwMDI2IChCU1NfQ0hBTkdFRF9CRUFDT04gfFxcbiA3NTk6XFx0XFx0XFx0XFx0XFx0ICAgIEJTU19DSEFOR0VEX0JFQUNPTl9FTkFCTEVEKSk7XFxuIDc2MDpcXHRcXHRib29sIGluYmFuZF9kaXNjID0gISEoY2hhbmdlZCBcXHUwMDI2IChCU1NfQ0hBTkdFRF9VTlNPTF9CQ0FTVF9QUk9CRV9SRVNQIHxcXG4gNzYxOlxcdFxcdFxcdFxcdFxcdFxcdCBCU1NfQ0hBTkdFRF9GSUxTX0RJU0NPVkVSWSkpO1xcbiA3NjI6XFx0XFx0c3RydWN0IG10NzkyeF9ic3NfY29uZiAqbWNvbmY7XFxuIDc2MzpcXHRcXG4gNzY0OlxcdFxcdG1jb25mID0gdmlmID8gbXQ3OTJ4X3ZpZl90b19saW5rKChzdHJ1Y3QgbXQ3OTJ4X3ZpZiAqKXZpZi1cXHUwMDNlZHJ2X3ByaXYsXFxuIDc2NTpcXHRcXHRcXHRcXHRcXHRcXHQgd2NpZC1cXHUwMDNlbGlua19pZCkgOiBOVUxMO1xcbiA3NjY6XFx0XFx0bXZpZiA9IG1jb25mID8gKHN0cnVjdCBtdDc2X3ZpZl9saW5rICopXFx1MDAyNm1jb25mLVxcdTAwM2VtdDc2IDogTlVMTDtcXG4gNzY3OlxcdFxcbiA3Njg6XFx0XFx0aWYgKG12aWYpIHtcXG4gNzY5OlxcdFxcdFxcdG9tYWNfaWR4ID0gbXZpZi1cXHUwMDNlb21hY19pZHg7XFxuIDc3MDpcXHRcXHRcXHR3bW1faWR4ID0gbXZpZi1cXHUwMDNld21tX2lkeDtcXG4gNzcxOlxcdFxcdFxcdGJhbmRfaWR4ID0gbXZpZi1cXHUwMDNlYmFuZF9pZHg7XFxuIDc3MjpcXHRcXHR9XFxuIDc3MzpcXHRcXG4gNzc0OlxcdFxcdGlmIChpbmJhbmRfZGlzYykge1xcbiA3NzU6XFx0XFx0XFx0cF9mbXQgPSBNVF9UWF9UWVBFX0ZXO1xcbiA3NzY6XFx0XFx0XFx0cV9pZHggPSBNVF9MTUFDX0FMVFgwO1xcbiA3Nzc6XFx0XFx0fSBlbHNlIGlmIChiZWFjb24pIHtcXG4gNzc4OlxcdFxcdFxcdHBfZm10ID0gTVRfVFhfVFlQRV9GVztcXG4gNzc5OlxcdFxcdFxcdHFfaWR4ID0gTVRfTE1BQ19CQ04wO1xcbiA3ODA6XFx0XFx0fSBlbHNlIGlmIChxaWQgXFx1MDAzZT0gTVRfVFhRX1BTRCkge1xcbiA3ODE6XFx0XFx0XFx0cF9mbXQgPSBtdDc2X2lzX21taW8oZGV2KSA/IE1UX1RYX1RZUEVfQ1QgOiBNVF9UWF9UWVBFX1NGO1xcbiA3ODI6XFx0XFx0XFx0cV9pZHggPSBNVF9MTUFDX0FMVFgwO1xcbiA3ODM6XFx0XFx0fSBlbHNlIHtcXG4gNzg0OlxcdFxcdFxcdHBfZm10ID0gbXQ3Nl9pc19tbWlvKGRldikgPyBNVF9UWF9UWVBFX0NUIDogTVRfVFhfVFlQRV9TRjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDM6MjA6NDUuNjM5NDg4NDI4WiIsIlNlcSI6MzUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUzNzQ3MjM4MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCYW5kIEluZGV4IEFzc2lnbm1lbnQqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBgYmFuZF9pZHhgIGlzIHN0YXJ0aW5nIGF0IDAsIHdoaWNoIG1ha2VzIHNlbnNlIGFzIGEgZGVmYXVsdC4gTm93LCBpZiBgbXZpZmAgZXhpc3RzLCBpdCdzIGJlaW5nIHBvdGVudGlhbGx5IG92ZXJ3cml0dGVuIGJ5IGBtdmlmLVx1MDAzZWJhbmRfaWR4YC4gSSBuZWVkIHRvIHJlbWVtYmVyIHdoYXQncyBnb2luZyBvbiB3aXRoIHRoZSBgTVRfVFhEMV9UR0lEYCBmaWVsZC4uLmFoIHllcywgaXQncyBiZWluZyBwcmVwcGVkIHdpdGggYEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeClgLlxuXG5Ob3cgSSBzZWUgaXQuIEJlZm9yZSwgaWYgYGJhbmRfaWR4YCB3YXMgc2V0IHRvIGAweGZmYCDigJMgdGhhdCBgQkFORF9BVVRPYCBvciBgTVRfQkFORF9BVVRPYCBjb25zdGFudCDigJMgYEZJRUxEX1BSRVBgIHdvdWxkIGxpa2VseSBjYXVzZSBhIHByb2JsZW0gd2l0aCBgTVRfVFhEMV9UR0lEYC4gVGhlIHByZXAgbGlrZWx5IHdvdWxkIG92ZXJmbG93IHRoZSBiaXRmaWVsZCwgb3IgcG90ZW50aWFsbHkgc2V0IHRoZSBUR0lEIHRvIGAweGZmYCBpZiB0aGUgYml0cyBhbGxvd2VkIHRoYXQgdmFsdWUuIEl0IGNvdWxkIGV2ZW4gdHJpZ2dlciBhIGNvbXBpbGVyIHdhcm5pbmcgb3IgYnVnIGlmIHRoZSBgRklFTERfUFJFUGAgbWFjcm8gaW5jbHVkZXMgYW55IG1hc2sgY2hlY2tzLiBBdCBydW50aW1lLCB0aGUgcmVzdWx0IHdvdWxkIGJlIGludmFsaWQgYml0cyBiZWluZyBzZXQsIG9yIHBvdGVudGlhbGx5IG1hc2tlZC5cblxuTGV0IG1lIGp1c3QgcXVpY2tseSB2ZXJpZnkgdGhlIGBNVF9UWEQxX1RHSURgIGRlZmluaXRpb24gdG8gZW5zdXJlIEknbSByZW1lbWJlcmluZyB0aGlzIGNvcnJlY3RseS4gSXQncyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgdGhlIGZpZWxkIHdpZHRoIGFuZCBob3cgYDB4ZmZgIGltcGFjdHMgaXRzIGVuY29kaW5nLiBXZSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGUgcHJlcHBlZCB2YWx1ZSBpcyBhbHdheXMgd2l0aGluIHRoZSBib3VuZHMgb2YgdGhpcyBiaXRmaWVsZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Njg0OSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAzOjIwOjUxLjAxNDIxNDQxNFoiLCJTZXEiOjM2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg1NjU1NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTVRfVFhEMV9UR0lEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTc0Nz1tdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTgwMi1cXHRpZiAoYmFuZF9pZHggXFx1MDAyNlxcdTAwMjYgYmFuZF9pZHggIT0gMHhmZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4MDM6XFx0XFx0dmFsIHw9IEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODA0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoyMDo1MS4wNjI3ODMwNDNaIiwiU2VxIjozNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTIyOTQwOTI1MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIGBNVF9UWEQxX1RHSURgKipcblxuT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBNVF9UWEQxX1RHSURgIGFjdHVhbGx5ICppcyouIElzIGl0IGEgbWFjcm8/IEEgdmFyaWFibGU/IExldCdzIGFzc3VtZSBpdCdzIGEgbWFjcm8sIGZvciBub3cuIEknbSBnb2luZyB0byBzY2FuIHRoZSBlbnRpcmUgcHJvamVjdCB0cmVlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgbXQ3NmAgaGVhZGVycyBhbmQgdGhlIHJlc3Qgb2YgdGhlIHJlbGV2YW50IHNvdXJjZSBjb2RlLCB0byBwaW4gZG93biBpdHMgZGVmaW5pdGlvbi4gS25vd2luZyB0aGUgcHJlY2lzZSBkZWZpbml0aW9uIGlzIGFic29sdXRlbHkgY3JpdGljYWwuIFRoaXMgd2lsbCByZXZlYWwgaXRzIGRhdGEgdHlwZSwgcHVycG9zZSBhbmQgaXRzIHJlbGF0aW9uc2hpcCB3aXRoIG90aGVyIHZhcmlhYmxlcyBvciBtb2R1bGVzLiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB3ZSBnZXQgdGhpcyByaWdodC4gV2UgY2FuJ3QgcHJvY2VlZCB1bnRpbCB3ZSBoYXZlIGEgc29saWQgaGFuZGxlIG9uIGl0cyBzY29wZSBhbmQgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU4MSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDAzOjIxOjAzLjM1Njg3ODVaIiwiU2VxIjozOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4OTM4NTc5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTVRfVFhEMV9UR0lEXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMyX21hYy5oPTM1PWVudW0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYzJfbWFjLmgtNTUtI2RlZmluZSBNVF9UWEQxX0xPTkdfRk9STUFUXFx0XFx0QklUKDMxKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMyX21hYy5oOjU2OiNkZWZpbmUgTVRfVFhEMV9UR0lEXFx0XFx0XFx0QklUKDMwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMyX21hYy5oLTU3LSNkZWZpbmUgTVRfVFhEMV9PV05fTUFDXFx0XFx0XFx0R0VOTUFTSygyOSwgMjQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMuaD0yMDU9ZW51bSB0eF9mcmFnX2lkeCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMuaC0yMzItI2RlZmluZSBNVF9UWEQxX0hEUl9GT1JNQVRcXHRcXHRHRU5NQVNLKDE1LCAxNClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMuaDoyMzM6I2RlZmluZSBNVF9UWEQxX1RHSURcXHRcXHRcXHRHRU5NQVNLKDEzLCAxMilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMuaC0yMzQtI2RlZmluZSBNVF9UWEQxX1dMQU5fSURYXFx0XFx0R0VOTUFTSygxMSwgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmM9NTA0PXZvaWQgbXQ3Nl9jb25uYWMyX21hY193cml0ZV90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jLTU2Mi1cXHRpZiAocGh5X2lkeCB8fCBiYW5kX2lkeClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21hYy5jOjU2MzpcXHRcXHR2YWwgfD0gTVRfVFhEMV9UR0lEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWFjLmMtNTY0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9NzQ3PW10NzkyNV9tYWNfd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODAyLVxcdGlmIChiYW5kX2lkeCBcXHUwMDI2XFx1MDAyNiBiYW5kX2lkeCAhPSAweGZmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjgwMzpcXHRcXHR2YWwgfD0gRklFTERfUFJFUChNVF9UWEQxX1RHSUQsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04MDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYz04OTQ9dm9pZCBtdDc5OTZfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtOTUyLVxcdGlmIChiYW5kX2lkeClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWMuYzo5NTM6XFx0XFx0dmFsIHw9IEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFjLmMtOTU0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoyMTowNS4yNTA3NDEzMVoiLCJTZXEiOjM5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNjkzOTU1MDAyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBEcml2ZXIgQnVnIEZpeCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZml4IGluIGBtdDc2X2Nvbm5hYzNfbWFjLmhgLiBTcGVjaWZpY2FsbHksIGl0J3MgZGVhbGluZyB3aXRoIHRoZSBgTVRfVFhEMV9UR0lEYCBmaWVsZCwgd2hpY2ggaXMgZGVmaW5lZCBhcyBgR0VOTUFTSygxMywgMTIpYCDigJMgdGhhdCdzIDIgYml0cywgZWZmZWN0aXZlbHkgMCB0byAzLiBUaGUgY3J1eCBvZiB0aGUgaXNzdWUgaXMgYXJvdW5kIHRoZSBgYmFuZF9pZHhgIHZhcmlhYmxlLiBJZiBgYmFuZF9pZHhgIHNvbWVob3cgZW5kcyB1cCBiZWluZyBgMHhmZmAsIHRoZSBgRklFTERfUFJFUGAgbWFjcm8gd291bGQgbWlzYmVoYXZlOyBwb3RlbnRpYWxseSBjYXVzaW5nIHRydW5jYXRpb24gb3Igb3RoZXIgZmFpbHVyZXMuIEl0J3MgYSBsb2dpYyBidWcgaW4gaG93IHRoZSBwYWNrZXQgdHJhbnNtaXNzaW9uIGRlc2NyaXB0b3IgaXMgYmVpbmcgZ2VuZXJhdGVkLCBwYXJ0aWN1bGFybHkgb24gdGhlIE1UNzkyNSBoYXJkd2FyZS5cblxuTXkgcHJpbWFyeSBjb25jZXJuIGlzIGFsd2F5czogZG9lcyB0aGlzIGZpeCBpbnRyb2R1Y2UgYW55IG5ldyB2dWxuZXJhYmlsaXRpZXM/IEknbSB0aGlua2luZyBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgcG90ZW50aWFsIGxlYWtzIG9mIHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2Vyc3BhY2UsIG9yIGRlcGVuZGVuY2llcyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy5cblxuTGV0J3MgYnJlYWsgaXQgZG93bjogRmlyc3QsIGFsbCB0aGUgdmFyaWFibGVzIGludm9sdmVkIHdpdGhpbiBgbXQ3OTI1X21hY193cml0ZV90eHdpYCB0aGF0IGFyZSBpbnZvbHZlZCBpbiB0aGlzIGZpeCBhcmUgZXhwbGljaXRseSBpbml0aWFsaXplZCAoaW4gdGhpcyBjYXNlLCBgYmFuZF9pZHhgIGdldHMgYSB2YWx1ZSBvZiBgMGApLiBTZWNvbmQsIHRoZXJlJ3Mgbm8gZGlyZWN0IGNvcHkgdG8gdXNlcnNwYWNlIGhlcmU6IG5vIGBjb3B5X3RvX3VzZXJgLCBubyBgcHV0X3VzZXJgLCBubyBuZXRsaW5rIG1lc3NhZ2VzLCBhbmQgbm8gaW9jdGwgY2FsbHMgaW52b2x2ZWQuIFRoaXMgZWZmZWN0aXZlbHkgZWxpbWluYXRlcyB0aGUgcmlzayBvZiBsZWFraW5nIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgZGF0YS4gRmluYWxseSwgdGhpcyBjaGFuZ2UgaXNuJ3QgdG91Y2hpbmcgbWVtb3J5IGluaXRpYWxpemF0aW9uIHJvdXRpbmVzIG9yIGJ1ZmZlciBib3VuZGFyaWVzLCBzbyB0aGVyZSdzIG5vIGluY3JlYXNlZCByaXNrIHRoZXJlLlxuXG5HaXZlbiB0aGlzIGFuYWx5c2lzLCBJJ20gY29uZmlkZW50IHRoYXQgdGhlIGFuc3dlciB0byBOZWVkc0tNU0FOIGlzIFwiZmFsc2VcIi4gVGhpcyBhcHBlYXJzIHRvIGJlIGEgY2xlYW4sIHNhZmUgZml4LiBUaW1lIHRvIGNhbGwgaXQgaW4gd2l0aCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzA5LCJPdXRwdXRUb2tlbnMiOjE3NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwMzoyMToyMi4xOTAyOTQxODNaIiwiU2VxIjo0MCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjYWxjdWxhdGlvbiBvZiBoYXJkd2FyZSBUWCBkZXNjcmlwdG9yIGJpdHMgaW4gYG10NzkyNV9tYWNfd3JpdGVfdHh3aSgpYCBieSBhdm9pZGluZyB0aGUgdXNlIG9mIGBGSUVMRF9QUkVQKE1UX1RYRDFfVEdJRCwgYmFuZF9pZHgpYCB3aGVuIGBiYW5kX2lkeCA9PSAweGZmYCAoQkFORF9BVVRPKS5cXG5cXG5BbGwgbG9jYWwgdmFyaWFibGVzLCBpbmNsdWRpbmcgYGJhbmRfaWR4YCwgYXJlIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQsIGFuZCB0aGUgZnVuY3Rpb24gd3JpdGVzIGRlc2NyaXB0b3IgZmllbGRzIHRvIGEgcHJlLWFsbG9jYXRlZC9tYW5hZ2VkIGJ1ZmZlciBmb3IgaGFyZHdhcmUgdHJhbnNtaXNzaW9uLiBObyBtZW1vcnkgY29weWluZyB0byB1c2VyIHNwYWNlLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHVzYWdlLCBvciB1bmluaXRpYWxpemVkIHBhZGRpbmcvYnVmZmVyIGhhbmRsaW5nIGlzIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuIFRoZXJlZm9yZSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2FsY3VsYXRpb24gb2YgaGFyZHdhcmUgVFggZGVzY3JpcHRvciBiaXRzIGluIGBtdDc5MjVfbWFjX3dyaXRlX3R4d2koKWAgYnkgYXZvaWRpbmcgdGhlIHVzZSBvZiBgRklFTERfUFJFUChNVF9UWEQxX1RHSUQsIGJhbmRfaWR4KWAgd2hlbiBgYmFuZF9pZHggPT0gMHhmZmAgKEJBTkRfQVVUTykuXFxuXFxuQWxsIGxvY2FsIHZhcmlhYmxlcywgaW5jbHVkaW5nIGBiYW5kX2lkeGAsIGFyZSBleHBsaWNpdGx5IGluaXRpYWxpemVkLCBhbmQgdGhlIGZ1bmN0aW9uIHdyaXRlcyBkZXNjcmlwdG9yIGZpZWxkcyB0byBhIHByZS1hbGxvY2F0ZWQvbWFuYWdlZCBidWZmZXIgZm9yIGhhcmR3YXJlIHRyYW5zbWlzc2lvbi4gTm8gbWVtb3J5IGNvcHlpbmcgdG8gdXNlciBzcGFjZSwgdW5pbml0aWFsaXplZCB2YXJpYWJsZSB1c2FnZSwgb3IgdW5pbml0aWFsaXplZCBwYWRkaW5nL2J1ZmZlciBoYW5kbGluZyBpcyBpbnRyb2R1Y2VkIG9yIG1vZGlmaWVkLiBUaGVyZWZvcmUsIHRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow49mds[1] Phase: Succeeded StartedAt: 2026-09-11 03:21:34 +0000 UTC FinishedAt: 2026-09-11 03:21:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49mds[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-11 03:21:35 +0000 UTC FinishedAt: 2026-09-11 03:21:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49mds[2] Phase: Succeeded StartedAt: 2026-09-11 03:21:35 +0000 UTC FinishedAt: 2026-09-11 05:06:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-11 03:21:35 +0000 UTC FinishedAt: 2026-09-11 05:06:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-11 03:21:35 +0000 UTC FinishedAt: 2026-09-11 03:21:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-11 03:21:35 +0000 UTC FinishedAt: 2026-09-11 03:21:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow49mds/series-workflow49mds-convert-artifact-2736879224/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-11 03:21:47 +0000 UTC FinishedAt: 2026-09-11 03:42:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-11 03:21:47 +0000 UTC FinishedAt: 2026-09-11 03:42:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*1954ea29-70da-4734-be7b-736dce04ba5b,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-workflow49mds/series-workflow49mds-convert-artifact-2736879224/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": "663a0b4f-7670-4349-b2f2-1a837ae8fad1", "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-workflow49mds/series-workflow49mds-build-action-2073508654/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-11 03:21:47 +0000 UTC FinishedAt: 2026-09-11 03:41:59 +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:*1954ea29-70da-4734-be7b-736dce04ba5b,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-workflow49mds/series-workflow49mds-convert-artifact-2736879224/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": "663a0b4f-7670-4349-b2f2-1a837ae8fad1", "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-workflow49mds/series-workflow49mds-build-action-2073508654/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-11 03:42:09 +0000 UTC FinishedAt: 2026-09-11 03:42:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-11 03:42:09 +0000 UTC FinishedAt: 2026-09-11 03:42:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-11 03:42:09 +0000 UTC FinishedAt: 2026-09-11 03:42:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-11 03:42:09 +0000 UTC FinishedAt: 2026-09-11 03:42:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow49mds/series-workflow49mds-convert-artifact-1473224159/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-11 03:42:19 +0000 UTC FinishedAt: 2026-09-11 03:44:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-11 03:42:19 +0000 UTC FinishedAt: 2026-09-11 03:44:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*663a0b4f-7670-4349-b2f2-1a837ae8fad1,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-workflow49mds/series-workflow49mds-build-action-2073508654/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-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-11 03:44:18 +0000 UTC FinishedAt: 2026-09-11 03:44:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-11 03:44:18 +0000 UTC FinishedAt: 2026-09-11 03:44:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-11 03:44:18 +0000 UTC FinishedAt: 2026-09-11 04:05:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-11 03:44:18 +0000 UTC FinishedAt: 2026-09-11 04:05:45 +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:*1954ea29-70da-4734-be7b-736dce04ba5b,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-workflow49mds/series-workflow49mds-convert-artifact-1473224159/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": "8f684aee-bb97-44c9-ae6a-fe866effe593", "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-workflow49mds/series-workflow49mds-build-action-2812291955/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-11 03:44:18 +0000 UTC FinishedAt: 2026-09-11 04:05:07 +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:*1954ea29-70da-4734-be7b-736dce04ba5b,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-workflow49mds/series-workflow49mds-convert-artifact-1473224159/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": "8f684aee-bb97-44c9-ae6a-fe866effe593", "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-workflow49mds/series-workflow49mds-build-action-2812291955/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-11 04:05:45 +0000 UTC FinishedAt: 2026-09-11 04:05:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-11 04:05:45 +0000 UTC FinishedAt: 2026-09-11 04:05:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-11 04:05:45 +0000 UTC FinishedAt: 2026-09-11 04:07:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-11 04:05:45 +0000 UTC FinishedAt: 2026-09-11 04:07:27 +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:*8f684aee-bb97-44c9-ae6a-fe866effe593,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-workflow49mds/series-workflow49mds-build-action-2812291955/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-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-11 04:07:37 +0000 UTC FinishedAt: 2026-09-11 05:06:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-11 04:07:37 +0000 UTC FinishedAt: 2026-09-11 05:06:11 +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":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"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:*663a0b4f-7670-4349-b2f2-1a837ae8fad1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8f684aee-bb97-44c9-ae6a-fe866effe593,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-workflow49mds/series-workflow49mds-build-action-2073508654/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-workflow49mds/series-workflow49mds-build-action-2812291955/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-11 04:07:37 +0000 UTC FinishedAt: 2026-09-11 04:07:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-11 04:07:37 +0000 UTC FinishedAt: 2026-09-11 04:07:44 +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":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"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-workflow49mds/series-workflow49mds-convert-artifact-692440312/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-11 04:07:37 +0000 UTC FinishedAt: 2026-09-11 04:07:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-11 04:07:37 +0000 UTC FinishedAt: 2026-09-11 04:07:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-11 04:07:37 +0000 UTC FinishedAt: 2026-09-11 04:07:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-11 04:07:47 +0000 UTC FinishedAt: 2026-09-11 05:06:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49mds[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_mac_write_txwi","mt7925_usb_sdio_tx_prepare_skb"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925_COMMON","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"8fa9df09-90db-4e2a-ab91-53a40aeeae25","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-11 04:07:47 +0000 UTC FinishedAt: 2026-09-11 05:06:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*663a0b4f-7670-4349-b2f2-1a837ae8fad1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8f684aee-bb97-44c9-ae6a-fe866effe593,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-workflow49mds/series-workflow49mds-build-action-2073508654/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-workflow49mds/series-workflow49mds-build-action-2812291955/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-workflow49mds/series-workflow49mds-convert-artifact-692440312/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,}