Name: series-workflowj527p Phase: Running StartedAt: 2026-09-10 21:09:58 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj527p[0] Phase: Succeeded StartedAt: 2026-09-10 21:09:58 +0000 UTC FinishedAt: 2026-09-10 21:30:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj527p[0].run-triage Phase: Succeeded StartedAt: 2026-09-10 21:09:58 +0000 UTC FinishedAt: 2026-09-10 21:30:11 +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": [ "WLAN", "WLAN_VENDOR_MORSEMICRO", "MAC80211", "USB", "MM81X", "MM81X_USB" ], "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": [ "WLAN", "WLAN_VENDOR_MORSEMICRO", "MAC80211", "USB", "MM81X", "MM81X_USB" ], "series_id": "a1a93a93-7948-472e-9b89-3bc7950b56f5" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mm81x_yaps_hw_read_pkts", "mm81x_read_pkts_h_is_valid_delim", "mm81x_yaps_read_pkts", "mm81x_yaps_rx_handler" ], "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+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTU9SU0VNSUNSTyYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TU04MVgmIzM0OywKICAgICYjMzQ7TU04MVhfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bW04MXhfeWFwc19od19yZWFkX3BrdHMmIzM0OywKICAgICYjMzQ7bW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW0mIzM0OywKICAgICYjMzQ7bW04MXhfeWFwc19yZWFkX3BrdHMmIzM0OywKICAgICYjMzQ7bW04MXhfeWFwc19yeF9oYW5kbGVyJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaGFyZGVucyBpbnB1dCB2YWxpZGF0aW9uIGluIHRoZSBNb3JzZSBNaWNybyBtbTgxeCBkcml2ZXImIzM5O3MgWUFQUyBoYXJkd2FyZSBwYWNrZXQgcmVhZGluZyBsb2dpYyBieTpcbjEuIEVuc3VyaW5nIGBwa3Rfc2l6ZWAgKHBoYW5kbGUgc2l6ZSkgZXhjZWVkcyBgWUFQU19SRVNFUlZFRF9QQUdFX1NJWkVgIHRvIHByZXZlbnQgdW5kZXJmbG93cyBpbiBgWUFQU19ERUxJTV9HRVRfUEtUX1NJWkUoKWAuXG4yLiBWYWxpZGF0aW5nIHRoYXQgYGJ5dGVzX3JlbWFpbmluZ2AgaXMgNC1ieXRlIGFsaWduZWQgYmVmb3JlIHJlYWRpbmcgZGVsaW1pdGVycyBmcm9tIHRoZSBjaGlwIGJ1ZmZlci5cblxuVGhlc2UgY2hhbmdlcyBwcmV2ZW50IHBvdGVudGlhbCBpbnRlZ2VyIHVuZGVyZmxvdywgb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMsIG9yIHByb3RvY29sIGRlc3luY2hyb25pemF0aW9uIHdoZW4gcGFyc2luZyBoYXJkd2FyZSBwYWNrZXQgYnVmZmVycy4gQW55IG1lbW9yeSBzYWZldHkgdmlvbGF0aW9ucyBpbiB0aGlzIGFyZWEgKGUuZy4sIG5lZ2F0aXZlIHNpemUgcGFzc2VkIHRvIGJ1ZmZlciBvcGVyYXRpb25zIHJlc3VsdGluZyBpbiBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSBhcmUgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBpbiBicmFuY2hpbmcsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYWNrZXQgcmVjZXB0aW9uIGFuZCBkZWxpbWl0ZXIgdmFsaWRhdGlvbiBsb2dpYyBpbiB0aGUgTW9yc2UgTWljcm8gTU04MXggd2lyZWxlc3MgZHJpdmVyIChkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYyksIGFkZGluZyBhbGlnbm1lbnQgdmVyaWZpY2F0aW9uIG9uIHJlbWFpbmluZyBieXRlcyBhbmQgc3RyaWN0ZXIgcGFja2V0IHNpemUgdmFsaWRhdGlvbiBhZ2FpbnN0IHJlc2VydmVkIHBhZ2UgYm91bmRzLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIGFuZCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzY5MWY3OGIwZTM5MjZhOWI0ZjUxNTQ1ZWQyODAyZjJkMzFkOTBiZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDIxOjI4OjI3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmNcbmluZGV4IDNkNjQxZDIzYzM1YmEuLjk3YjJmZjkzYzY5ZmYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmNcbkBAIC00MDcsNyAmIzQzOzQwNyw3IEBAIHN0YXRpYyBib29sIG1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltKHUzMiBkZWxpbSlcbiBcdGlmIChjYWxjX2NyYyAhPSBZQVBTX0RFTElNX0dFVF9DUkMoZGVsaW0pKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4tXHRpZiAocGt0X3NpemUgPT0gMClcbiYjNDM7XHRpZiAocGt0X3NpemUgXHUwMDNjPSBZQVBTX1JFU0VSVkVEX1BBR0VfU0laRSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuIFx0aWYgKChwa3Rfc2l6ZSAmIzQzOyBwYWRkaW5nKSBcdTAwM2UgWUFQU19NQVhfUEtUX1NJWkVfQllURVMpXG5AQCAtNDU1LDYgJiM0Mzs0NTUsMTAgQEAgc3RhdGljIGludCBtbTgxeF95YXBzX2h3X3JlYWRfcGt0cyhzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcyxcbiBcdFx0cmV0dXJuIDA7XG4gXHRpZiAoYnl0ZXNfcmVtYWluaW5nIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gYnl0ZXNfcmVtYWluaW5nO1xuJiM0MztcdGlmICghSVNfQUxJR05FRChieXRlc19yZW1haW5pbmcsIHNpemVvZih1MzIpKSkge1xuJiM0MztcdFx0ZGV2X3dhcm4oeWFwcy1cdTAwM2Vtb3JzLVx1MDAzZWRldiwgXCYjMzQ7eWFwcyB0cnVuY2F0ZWQgZGVsaW1pdGVyXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRUlPO1xuJiM0MztcdH1cbiBcbiBcdGlmIChieXRlc19yZW1haW5pbmcgXHUwMDNlIFlBUFNfSFdfV0lORE9XX1NJWkVfQllURVMpIHtcbiBcdFx0Ynl0ZXNfcmVtYWluaW5nID0gWUFQU19IV19XSU5ET1dfU0laRV9CWVRFUztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtXTEFOJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX01PUlNFTUlDUk8mIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O01NODFYJiMzNDssCiAgICAmIzM0O01NODFYX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21tODF4X3lhcHNfaHdfcmVhZF9wa3RzJiMzNDssCiAgICAmIzM0O21tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltJiMzNDssCiAgICAmIzM0O21tODF4X3lhcHNfcmVhZF9wa3RzJiMzNDssCiAgICAmIzM0O21tODF4X3lhcHNfcnhfaGFuZGxlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFja2V0IHJlY2VwdGlvbiBhbmQgZGVsaW1pdGVyIHZhbGlkYXRpb24gbG9naWMgaW4gdGhlIE1vcnNlIE1pY3JvIE1NODF4IHdpcmVsZXNzIGRyaXZlciAoZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMpLCBhZGRpbmcgYWxpZ25tZW50IHZlcmlmaWNhdGlvbiBvbiByZW1haW5pbmcgYnl0ZXMgYW5kIHN0cmljdGVyIHBhY2tldCBzaXplIHZhbGlkYXRpb24gYWdhaW5zdCByZXNlcnZlZCBwYWdlIGJvdW5kcy4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgZGV2aWNlcyBhbmQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc2OTFmNzhiMGUzOTI2YTliNGY1MTU0NWVkMjgwMmYyZDMxZDkwYmUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IFNlcCAxMCAyMToyODoyNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMKaW5kZXggM2Q2NDFkMjNjMzViYS4uOTdiMmZmOTNjNjlmZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMKQEAgLTQwNyw3ICYjNDM7NDA3LDcgQEAgc3RhdGljIGJvb2wgbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW0odTMyIGRlbGltKQogCWlmIChjYWxjX2NyYyAhPSBZQVBTX0RFTElNX0dFVF9DUkMoZGVsaW0pKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlpZiAocGt0X3NpemUgPT0gMCkKJiM0MzsJaWYgKHBrdF9zaXplICZsdDs9IFlBUFNfUkVTRVJWRURfUEFHRV9TSVpFKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlpZiAoKHBrdF9zaXplICYjNDM7IHBhZGRpbmcpICZndDsgWUFQU19NQVhfUEtUX1NJWkVfQllURVMpCkBAIC00NTUsNiAmIzQzOzQ1NSwxMCBAQCBzdGF0aWMgaW50IG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzKHN0cnVjdCBtbTgxeF95YXBzICp5YXBzLAogCQlyZXR1cm4gMDsKIAlpZiAoYnl0ZXNfcmVtYWluaW5nICZsdDsgMCkKIAkJcmV0dXJuIGJ5dGVzX3JlbWFpbmluZzsKJiM0MzsJaWYgKCFJU19BTElHTkVEKGJ5dGVzX3JlbWFpbmluZywgc2l6ZW9mKHUzMikpKSB7CiYjNDM7CQlkZXZfd2Fybih5YXBzLSZndDttb3JzLSZndDtkZXYsICYjMzQ7eWFwcyB0cnVuY2F0ZWQgZGVsaW1pdGVyJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU87CiYjNDM7CX0KIAogCWlmIChieXRlc19yZW1haW5pbmcgJmd0OyBZQVBTX0hXX1dJTkRPV19TSVpFX0JZVEVTKSB7CiAJCWJ5dGVzX3JlbWFpbmluZyA9IFlBUFNfSFdfV0lORE9XX1NJWkVfQllURVM7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTgKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA2MDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBTeXprYWxsZXIgRnV6emluZyBUcmlhZ2UgUGF0Y2gqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O20gdGhpbmtpbmcuIFRoZSB1c2VyIHdhbnRzIG1lIHRvIHZldCB0aGlzIHBhdGNoIGZvciBzeXprYWxsZXIgZnV6emluZyB0cmlhZ2UuIEZpcnN0LCBJJiMzOTttIGdvaW5nIHRvIHJ1biBhIHF1aWNrIHJpc2sgYW5hbHlzaXMuIFRoaXMgc2VlbXMgbGlrZSBpdCYjMzk7cyBwcmV0dHkgbG93LXN0YWtlcywgYSBjb2RlIHJldmlldyBvciBwYXRjaCB0cmlhZ2Ugc3BlY2lmaWNhbGx5IGZvciB0aGUgTGludXgga2VybmVsIGRyaXZlciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmNgLiBHaXZlbiB0aGF0IGNvbnRleHQsIGl0IGxvb2tzIGJlbmlnbiBvciBkZWZlbnNpdmUsIHNvbWV0aGluZyB0byBpbXByb3ZlIGZ1enppbmcgY29uZmlndXJhdGlvbi4gU28sIHllYWgsIHdlIHNob3VsZCBwcm9jZWVkIHdpdGggdGhpcyByZXF1ZXN0LgoKTm93LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBwYXRjaCBpdHNlbGYuIE9rYXksIEkgc2VlIHRoZSBkaWZmLiBUaGUgY29yZSBjaGFuZ2UgZm9jdXNlcyBvbiB0aGUgYG1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltYCBmdW5jdGlvbiwgYW5kIGBtbTgxeF95YXBzX2h3X3JlYWRfcGt0c2AuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgbW9kaWZpZWQgdGhlIHBhY2tldCBzaXplIHZhbGlkYXRpb24gbG9naWMgd2l0aGluIGBtbTgxeF9yZWFkX3BrdHNfaF9pc192YWxpZF9kZWxpbWAuIFRoZSBvbGQgY2hlY2sganVzdCBydWxlZCBvdXQgemVyby1zaXplZCBwYWNrZXRzOyBub3csIHRoZSBjb25kaXRpb24gaXMgYHBrdF9zaXplICZsdDs9IFlBUFNfUkVTRVJWRURfUEFHRV9TSVpFYC4gQWxzbywgYSBjaGVjayBmb3IgYWxpZ25lZCByZWFkIHNpemUgaGFzIGJlZW4gYWRkZWQgaW50byBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgLiBJdCBzZWVtcyBsaWtlIHRoZSBnb2FsIGlzIHRvIG1ha2UgdGhlIGZ1enppbmcgbW9yZSByb2J1c3QgYnkgcHJldmVudGluZyBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvd3Mgb3IgdW5kZXJmbG93cyBvciBoYW5kbGluZyB0cnVuY2F0ZWQgcmVhZHMuCgpCZWZvcmUgSSBnbyBmdXJ0aGVyLCBJJiMzOTtkIGxpa2UgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgYnJvYWRlciBjb250ZXh0LiBXaGF0IGtpbmQgb2YgYnVzIG9yIGRldmljZSBhcmUgd2UgZGVhbGluZyB3aXRoIGhlcmU/IElzIHRoaXMgU0RJTywgU1BJLCBVU0IsIG9yIHNvbWV0aGluZyBlbHNlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUgdG8gZnVsbHkgYXNzZXNzIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIGVpdGhlciBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gZ2V0IHRoZSBsYXkgb2YgdGhlIGxhbmQgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL2AuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbTgxeCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNDg0NyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnPTEzPWlmIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZzoxNDpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWctMTUtZW5kaWYgIyBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTU04MVgpICYjNDM7PSBtbTgxeC9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlLTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX01NODFYKSAmIzQzOz0gbW04MXhfY29yZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlLTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjU6bW04MXhfY29yZS15ICYjNDM7PSBjb3JlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6NjptbTgxeF9jb3JlLXkgJiM0Mzs9IG1hYy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjc6bW04MXhfY29yZS15ICYjNDM7PSBody5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjg6bW04MXhfY29yZS15ICYjNDM7PSBmdy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjk6bW04MXhfY29yZS15ICYjNDM7PSBjb21tYW5kLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MTA6bW04MXhfY29yZS15ICYjNDM7PSBwcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjExOm1tODF4X2NvcmUteSAmIzQzOz0gc2ticS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjEyOm1tODF4X2NvcmUteSAmIzQzOz0geWFwc19ody5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjEzOm1tODF4X2NvcmUteSAmIzQzOz0geWFwcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjE0Om1tODF4X2NvcmUteSAmIzQzOz0gcmMub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZToxNTptbTgxeF9jb3JlLXkgJiM0Mzs9IG1tcmMub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZS0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX01NODFYX1VTQikgJiM0Mzs9IG1tODF4X3VzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjE4Om1tODF4X3VzYi15ICYjNDM7PSB1c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZS0xOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX01NODFYX1NESU8pICYjNDM7PSBtbTgxeF9zZGlvLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MjE6bW04MXhfc2Rpby15ICYjNDM7PSBzZGlvLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoxMjplbnVtIG1tODF4X2J1c190eXBlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtMTMtXHRNTTgxWF9CVVNfVFlQRV9VU0IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MTc6c3RydWN0IG1tODF4X2J1c19vcHMge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoxODpcdGludCAoKmRtX3JlYWQpKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGFkZHIsIHU4ICpkYXRhLCBpbnQgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MTk6XHRpbnQgKCpkbV93cml0ZSkoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkciwgY29uc3QgdTggKmRhdGEsIGludCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoyMDpcdGludCAoKnJlZzMyX3JlYWQpKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGFkZHIsIHUzMiAqZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjIxOlx0aW50ICgqcmVnMzJfd3JpdGUpKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGFkZHIsIHUzMiBkYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MjI6XHRpbnQgKCpkaWdpdGFsX3Jlc2V0KShzdHJ1Y3QgbW04MXggKm1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoyMzpcdHZvaWQgKCpzZXRfYnVzX2VuYWJsZSkoc3RydWN0IG1tODF4ICptb3JzLCBib29sIGVuYWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjI0Olx0dm9pZCAoKmNvbmZpZ19idXJzdF9tb2RlKShzdHJ1Y3QgbW04MXggKm1vcnMsIGJvb2wgZW5hYmxlX2J1cnN0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MjU6XHR2b2lkICgqY2xhaW0pKHN0cnVjdCBtbTgxeCAqbW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjI2Olx0dm9pZCAoKnNldF9pcnEpKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoyNzpcdHZvaWQgKCpyZWxlYXNlKShzdHJ1Y3QgbW04MXggKm1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC0yOC1cdHVuc2lnbmVkIGludCBidWxrX2FsaWdubWVudDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDozNzovKiBtbTgxeF9kbV9yZWFkIC0gbGVuIG11c3QgYmUgcm91bmRlZCB1cCB0byB0aGUgbmVhcmVzdCA0LWJ5dGUgYm91bmRhcnkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6Mzg6c3RhdGljIGlubGluZSBpbnQgbW04MXhfZG1fcmVhZChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBhZGRyLCB1OCAqZGF0YSwgaW50IGxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtMzkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjQzOnN0YXRpYyBpbmxpbmUgaW50IG1tODF4X2RtX3dyaXRlKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGFkZHIsIGNvbnN0IHU4ICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC00NC1cdFx0XHRcdCBpbnQgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjQ5OnN0YXRpYyBpbmxpbmUgaW50IG1tODF4X3JlZzMyX3JlYWQoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkciwgdTMyICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC01MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC01My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6NTQ6c3RhdGljIGlubGluZSBpbnQgbW04MXhfcmVnMzJfd3JpdGUoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkciwgdTMyIGRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTU1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDo1OTpzdGF0aWMgaW5saW5lIGludCBtbTgxeF9idXNfZGlnaXRhbF9yZXNldChzdHJ1Y3QgbW04MXggKm1vcnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTYwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDo2NzpzdGF0aWMgaW5saW5lIHZvaWQgbW04MXhfc2V0X2J1c19lbmFibGUoc3RydWN0IG1tODF4ICptb3JzLCBib29sIGVuYWJsZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNjgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjcyOnN0YXRpYyBpbmxpbmUgdm9pZCBtbTgxeF9idXNfY29uZmlnX2J1cnN0X21vZGUoc3RydWN0IG1tODF4ICptb3JzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC03My1cdFx0XHRcdFx0ICAgICAgIGJvb2wgZW5hYmxlX2J1cnN0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjc5OnN0YXRpYyBpbmxpbmUgdm9pZCBtbTgxeF9jbGFpbV9idXMoc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC04MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC04My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6ODQ6c3RhdGljIGlubGluZSB2b2lkIG1tODF4X2J1c19zZXRfaXJxKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDo4OTpzdGF0aWMgaW5saW5lIHZvaWQgbW04MXhfcmVsZWFzZV9idXMoc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC05MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC05My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6OTQ6c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgbW04MXhfYnVzX2dldF9hbGlnbm1lbnQoc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC05NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9Mjc9c3RydWN0IGhvc3RfY21kX3Jlc3BfY2Ige1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MzM6c3RhdGljIGludCBtbTgxeF9jbWRfdHgoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM0LVx0XHRcdHN0cnVjdCBob3N0X2NtZF9yZXEgKnJlcSwgdTMyIGxlbmd0aCwgdTMyIHRpbWVvdXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDEtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDI6XHRzdHJ1Y3QgbW04MXhfc2ticSAqY21kX3EgPSBtbTgxeF9oaWZfZ2V0X3R4X2NtZF9xdWV1ZShtb3JzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQzLVx0c3RydWN0IGhvc3RfY21kX3Jlc3BfY2IgKnJlc3BfY2I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1ODpcdG1tODF4X3BzX2Rpc2FibGUobW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy02Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjYzOlx0XHRza2IgPSBtbTgxeF9za2JxX2FsbG9jX3NrYihjbWRfcSwgY21kX2xlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy02NC1cdFx0aWYgKCFza2IpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy04My1cdFx0dGltZW91dCA9IHRpbWVvdXQgPyB0aW1lb3V0IDogSE9TVF9DTURfREVGQVVMVF9USU1FT1VUX01TO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6ODQ6XHRcdHJldCA9IG1tODF4X3NrYnFfc2tiX3R4KGNtZF9xLCBcdTAwMjZza2IsIE5VTEwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy04NS1cdFx0XHRcdFx0TU04MVhfU0tCX0NIQU5fQ09NTUFORCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtODgtXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjg5Olx0XHRcdGRldl9lcnIobW9ycy1cdTAwM2VkZXYsIFwmIzM0O21tODF4X3NrYnFfdHggZmFpbDogJWRcJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy05MC1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xMjEtXHRcdHNwaW5fbG9ja19iaChcdTAwMjZjbWRfcS1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjEyMjpcdFx0bW04MXhfc2ticV9za2JfZmluaXNoKGNtZF9xLCBza2IsIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTIzLVx0XHRzcGluX3VubG9ja19iaChcdTAwMjZjbWRfcS1cdTAwM2Vsb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoxMjk6XHRtbTgxeF9wc19lbmFibGUobW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xMzAtXHRtdXRleF91bmxvY2soXHUwMDI2bW9ycy1cdTAwM2VjbWRfd2FpdCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTQ2OmludCBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE0Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNDgtXHRpbnQgbGVuZ3RoLCByZXQgPSAtRVNSQ0g7IC8qIE5vIHN1Y2ggcHJvY2VzcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTQ5Olx0c3RydWN0IG1tODF4X3NrYnEgKmNtZF9xID0gbW04MXhfaGlmX2dldF90eF9jbWRfcXVldWUobW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNTAtXHRzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqc3JjX3Jlc3AgPSAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKikoc2tiLVx1MDAzZWRhdGEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE2My1cdGlmICghSE9TVF9DTURfSVNfUkVTUChzcmNfcmVzcCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjE2NDpcdFx0cmV0ID0gbW04MXhfbWFjX2V2ZW50X3JlY3YobW9ycywgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE2NS1cdFx0Z290byBleGl0X2ZyZWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTcwOlx0Y21kX3NrYiA9IG1tODF4X3NrYnFfdHhfcGVuZGluZyhjbWRfcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNzEtXHRpZiAoY21kX3NrYikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTcyOlx0XHRtbTgxeF9za2JxX3B1bGxfaGRyX3Bvc3RfdHgoY21kX3NrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNzMtXHRcdHJlcSA9IChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopY21kX3NrYi1cdTAwM2VkYXRhO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTIzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjIzMjppbnQgbW04MXhfY21kX3N0YV9zdGF0ZShzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF92aWYgKm1vcnNfdmlmLCB1MTYgYWlkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjMzLVx0XHRcdHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjQ2Olx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgMCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNDctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjQ5OmludCBtbTgxeF9jbWRfYWRkX2lmKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2ICp2aWZfaWQsIGNvbnN0IHU4ICphZGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjUwLVx0XHQgICAgIGVudW0gbmw4MDIxMV9pZnR5cGUgdHlwZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyNzE6XHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXHUwMDI2cmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI3Mi1cdFx0XHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyNzk6aW50IG1tODF4X2NtZF9nZXRfY2FwYWJpbGl0aWVzKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2IHZpZl9pZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjI4MDpcdFx0XHQgICAgICAgc3RydWN0IG1tODF4X2Z3X2NhcHMgKmNhcGFiaWxpdGllcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI4MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6Mjg5Olx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIChzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqKVx1MDAyNnJzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI5MC1cdFx0XHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgc2l6ZW9mKHJzcCksIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI5NC1cdGNhcGFiaWxpdGllcy1cdTAwM2VhbXBkdV9tc3MgPSByc3AuY2FwYWJpbGl0aWVzLmFtcGR1X21zcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjI5NTpcdGNhcGFiaWxpdGllcy1cdTAwM2VtbTgxeF9tbXNzX29mZnNldCA9IHJzcC5tb3JzZV9tbXNzX29mZnNldDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI5Ni1cdGNhcGFiaWxpdGllcy1cdTAwM2ViZWFtZm9ybWVlX3N0c19jYXBhYmlsaXR5ID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozMDg6aW50IG1tODF4X2NtZF9nZXRfbWF4X3R4cG93ZXIoc3RydWN0IG1tODF4ICptb3JzLCBzMzIgKm91dF9wb3dlcl9tYm0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMDkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMxNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjMxNjpcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilcdTAwMjZyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzE3LVx0XHRcdCAgIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjMyNDppbnQgbW04MXhfY21kX2h3X3NjYW4oc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfaHdfc2Nhbl9wYXJhbXMgKnBhcmFtcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMyNS1cdFx0ICAgICAgYm9vbCBzdG9yZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozMzM6XHRjbWRfc2l6ZSA9IG1tODF4X2h3X3NjYW5faF9nZXRfY21kX3NpemUocGFyYW1zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMzNC1cdGNtZF9zaXplID0gUk9VTkRfQllURVNfVE9fV09SRChjbWRfc2l6ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzUyLVx0XHRyZXEtXHUwMDNlZHdlbGxfdGltZV9tcyA9IGNwdV90b19sZTMyKHBhcmFtcy1cdTAwM2Vkd2VsbF90aW1lX21zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjM1MzpcdFx0YnVmID0gbW04MXhfaHdfc2Nhbl9oX2luc2VydF90bHZzKHBhcmFtcywgYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM1NC1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNTgtXHRyZXEtXHUwMDNlaGRyLmxlbiA9IGNwdV90b19sZTE2KCh1MTYpKChidWYgLSAodTggKilyZXEpIC0gc2l6ZW9mKHJlcS1cdTAwM2VoZHIpKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozNTk6XHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilyZXEsIDAsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzYwLVx0a2ZyZWUocmVxKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozNjU6aW50IG1tODF4X2NtZF9zZXRfdHhwb3dlcihzdHJ1Y3QgbW04MXggKm1vcnMsIHMzMiAqb3V0X3Bvd2VyX21ibSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM2Ni1cdFx0XHQgIGludCB0eHBvd2VyX21ibSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozNzU6XHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXHUwMDI2cmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM3Ni1cdFx0XHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozODM6aW50IG1tODF4X2NtZF9zZXRfY2hhbm5lbChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBvcF9jaGFuX2ZyZXFfaHosXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zODQtXHRcdFx0ICB1OCBwcmlfMW1oel9jaGFuX2lkeCwgdTggb3BfYndfbWh6LCB1OCBwcmlfYndfbWh6LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjM5ODpcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilcdTAwMjZyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzk5LVx0XHRcdCAgIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjQwNjppbnQgbW04MXhfY21kX2Rpc2FibGVfa2V5KHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00MDctXHRcdFx0ICB1MTYgYWlkLCBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDE5Olx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgMCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00MjAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDIyOmludCBtbTgxeF9jbWRfaW5zdGFsbF9rZXkoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQyMy1cdFx0XHQgIHUxNiBhaWQsIHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00NDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0NDY6XHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXHUwMDI2cmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ0Ny1cdFx0XHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00NTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0NTc6aW50IG1tODF4X2NtZF9jZmdfbXVsdGljYXN0X2ZpbHRlcihzdHJ1Y3QgbW04MXggKm1vcnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0NTg6XHRcdFx0XHQgICBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ1OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDc1Olx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopcmVxLCAwLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ3Ni1cdGtmcmVlKHJlcSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDgwOmludCBtbTgxeF9jbWRfY2ZnX2JzcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHUxNiB2aWZfaWQsIHUxNiBiZWFjb25faW50LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDgxLVx0XHQgICAgICB1MTYgZHRpbV9wZXJpb2QsIHUzMiBjc3NpZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00ODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0OTA6XHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCAwLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ5MS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00OTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0OTM6aW50IG1tODF4X2NtZF9jb25maWdfYmVhY29uX3RpbWVyKHN0cnVjdCBtbTgxeCAqbW9ycywgdm9pZCAqbW04MXhfdmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDk0LVx0XHRcdFx0ICBib29sIGVuYWJsZWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00OTUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDk2Olx0c3RydWN0IG1tODF4X3ZpZiAqdmlmID0gbW04MXhfdmlmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDk3LVx0c3RydWN0IGhvc3RfY21kX3JlcV9ic3NfYmVhY29uX2NvbmZpZyByZXEgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTAzOlx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgMCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MDQtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTA1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTA2OmludCBtbTgxeF9jbWRfc2V0X3BzKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGVkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTA3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1MTM6XHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTE0LVx0XHRcdCAgICBIT1NUX0NNRF9QT1dFUlNBVkVfVElNRU9VVF9NUyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTE3OmludCBtbTgxeF9jbWRfY2ZnX3FvcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF9xdWV1ZV9wYXJhbXMgKnBhcmFtcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUxOC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTI5Olx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgMCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MzAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTMyOmludCBtbTgxeF9jbWRfcm1faWYoc3RydWN0IG1tODF4ICptb3JzLCB1MTYgdmlmX2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTMzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1Mzg6XHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCAwLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUzOS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1NDE6aW50IG1tODF4X2NtZF9zZXRfZnJhZ190aHJlc2hvbGQoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgZnJhZ190aHJlc2hvbGQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NDIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjU1MDpcdHJldHVybiBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcdTAwMjZyZXEsIDAsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTUxLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU1Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjU1MzppbnQgbW04MXhfY21kX2dldF9kaXNhYmxlZF9jaGFubmVscyhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjU1NDpcdHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IGhvc3RfY21kX3Jlc3BfZ2V0X2Rpc2FibGVkX2NoYW5uZWxzICpyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTU1LVx0dWludCByZXNwX2xlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1NjE6XHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIChzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqKXJlc3AsIFx1MDAyNnJlcSwgcmVzcF9sZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NjItXHRcdFx0ICAgIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6MTk6c3RydWN0IG1tODF4X3F1ZXVlX3BhcmFtcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6MjE6ZW51bSBtbTgxeF9jbWRfcmV0dXJuX2NvZGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtMjItXHRNTTgxWF9SRVRfU1VDQ0VTUyA9IDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg9NDQ9c3RydWN0IGhvc3RfY21kX2V2ZW50IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC00OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjQ5OmludCBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo1MDppbnQgbW04MXhfY21kX2FkZF9pZihzdHJ1Y3QgbW04MXggKm1vcnMsIHUxNiAqdmlmX2lkLCBjb25zdCB1OCAqYWRkcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTUxLVx0XHQgICAgIGVudW0gbmw4MDIxMV9pZnR5cGUgdHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo1MjppbnQgbW04MXhfY21kX2dldF9jYXBhYmlsaXRpZXMoc3RydWN0IG1tODF4ICptb3JzLCB1MTYgdmlmX2lkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NTM6XHRcdFx0ICAgICAgIHN0cnVjdCBtbTgxeF9md19jYXBzICpjYXBhYmlsaXRpZXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NTQ6aW50IG1tODF4X2NtZF9jZmdfcW9zKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3F1ZXVlX3BhcmFtcyAqcGFyYW1zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjU1OmludCBtbTgxeF9jbWRfY29uZmlnX2JlYWNvbl90aW1lcihzdHJ1Y3QgbW04MXggKm1vcnMsIHZvaWQgKm1tODF4X3ZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTU2LVx0XHRcdFx0ICBib29sIGVuYWJsZWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NTc6aW50IG1tODF4X2NtZF9jZmdfYnNzKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2IHZpZl9pZCwgdTE2IGJlYWNvbl9pbnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC01OC1cdFx0ICAgICAgdTE2IGR0aW1fcGVyaW9kLCB1MzIgY3NzaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NTk6aW50IG1tODF4X2NtZF9zZXRfY2hhbm5lbChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBvcF9jaGFuX2ZyZXFfaHosXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC02MC1cdFx0XHQgIHU4IHByaV8xbWh6X2NoYW5faWR4LCB1OCBvcF9id19taHosIHU4IHByaV9id19taHosXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC02MS1cdFx0XHQgIHMzMiAqcG93ZXJfbWJtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjYyOmludCBtbTgxeF9jbWRfZ2V0X21heF90eHBvd2VyKHN0cnVjdCBtbTgxeCAqbW9ycywgczMyICpvdXRfcG93ZXJfbWJtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjYzOmludCBtbTgxeF9jbWRfc2V0X3R4cG93ZXIoc3RydWN0IG1tODF4ICptb3JzLCBzMzIgKm91dF9wb3dlcl9tYm0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC02NC1cdFx0XHQgIGludCB0eHBvd2VyX21ibSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo2NTppbnQgbW04MXhfY21kX2h3X3NjYW4oc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfaHdfc2Nhbl9wYXJhbXMgKnBhcmFtcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTY2LVx0XHQgICAgICBib29sIHN0b3JlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjY3OmludCBtbTgxeF9jbWRfc2V0X3BzKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGVkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjY4OmludCBtbTgxeF9jbWRfY2ZnX211bHRpY2FzdF9maWx0ZXIoc3RydWN0IG1tODF4ICptb3JzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6Njk6XHRcdFx0XHQgICBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo3MDppbnQgbW04MXhfY21kX3N0YV9zdGF0ZShzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF92aWYgKm1vcnNfdmlmLCB1MTYgYWlkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtNzEtXHRcdFx0c3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTcyLVx0XHRcdGVudW0gaWVlZTgwMjExX3N0YV9zdGF0ZSBzdGF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo3MzppbnQgbW04MXhfY21kX2luc3RhbGxfa2V5KHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC03NC1cdFx0XHQgIHUxNiBhaWQsIHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC03Ni1cdFx0XHQgIGVudW0gaG9zdF9jbWRfYWVzX2tleV9sZW4gbGVuZ3RoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjc3OmludCBtbTgxeF9jbWRfZGlzYWJsZV9rZXkoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTc4LVx0XHRcdCAgdTE2IGFpZCwgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjc5OmludCBtbTgxeF9jbWRfcm1faWYoc3RydWN0IG1tODF4ICptb3JzLCB1MTYgdmlmX2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjgwOmludCBtbTgxeF9jbWRfc2V0X2ZyYWdfdGhyZXNob2xkKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGZyYWdfdGhyZXNob2xkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjgxOmludCBtbTgxeF9jbWRfZ2V0X2Rpc2FibGVkX2NoYW5uZWxzKFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6ODI6XHRzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBob3N0X2NtZF9yZXNwX2dldF9kaXNhYmxlZF9jaGFubmVscyAqcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTgzLVx0dWludCByZXNwX2xlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMTpzdGF0aWMgaW50IG1tODF4X2NvcmVfYXR0YWNoX3JlZ3Moc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTU6XHRtbTgxeF9jbGFpbV9idXMobW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxNjpcdHJldCA9IG1tODF4X3JlZzMyX3JlYWQobW9ycywgTU04MTA4X1JFR19DSElQX0lELCBcdTAwMjZtb3JzLVx1MDAzZWNoaXBfaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTc6XHRtbTgxeF9yZWxlYXNlX2J1cyhtb3JzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTE4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTI2LVx0XHRtb3JzLVx1MDAzZXJlZ3MgPSBcdTAwMjZtbTgxMDhfcmVncztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjI3Olx0XHRtb3JzLVx1MDAzZWhpZi5vcHMgPSBcdTAwMjZtbTgxeF95YXBzX29wcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTI4LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0zNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjM2OnN0YXRpYyB2b2lkIG1tODF4X2NvcmVfaW5pdF9tYWNfYWRkcihzdHJ1Y3QgbW04MXggKm1vcnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0zNy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzozODpcdGludCByZXQgPSBtbTgxeF9od19vdHBfZ2V0X21hY19hZGRyKG1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMzktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo0NDpjaGFyICptbTgxeF9jb3JlX2dldF9md19wYXRoKHUzMiBjaGlwX2lkLCB1MzIgZndfdmVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNDUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTU4LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjU5OkVYUE9SVF9TWU1CT0xfR1BMKG1tODF4X2NvcmVfZ2V0X2Z3X3BhdGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo2MTpzdHJ1Y3QgbW04MXggKm1tODF4X2NvcmVfYWxsb2Moc2l6ZV90IHByaXZfc2l6ZSwgc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNjIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6NjM6XHRyZXR1cm4gbW04MXhfbWFjX2FsbG9jKHByaXZfc2l6ZSwgZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTY0LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjY1OkVYUE9SVF9TWU1CT0xfR1BMKG1tODF4X2NvcmVfYWxsb2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo2NzppbnQgbW04MXhfY29yZV9pbml0KHN0cnVjdCBtbTgxeCAqbW9ycylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTY4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy03My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjc0Olx0bW04MXhfY29yZV9pbml0X21hY19hZGRyKG1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo3NjpcdHJldCA9IG1tODF4X2NvcmVfYXR0YWNoX3JlZ3MobW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy03Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo5MDpcdHJldCA9IG1tODF4X2hpZl9pbml0KG1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtOTEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEwNS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMDY6RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9pbml0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjEwODppbnQgbW04MXhfY29yZV9yZWdpc3RlcihzdHJ1Y3QgbW04MXggKm1vcnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMDkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTEwOlx0cmV0dXJuIG1tODF4X21hY19yZWdpc3Rlcihtb3JzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTExMS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMTI6RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMTQ6dm9pZCBtbTgxeF9jb3JlX3VucmVnaXN0ZXIoc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTE1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjExNjpcdG1tODF4X21hY191bnJlZ2lzdGVyKG1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTE3LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjExODpFWFBPUlRfU1lNQk9MX0dQTChtbTgxeF9jb3JlX3VucmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTIwOnZvaWQgbW04MXhfY29yZV9kZWluaXQoc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTIxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjEyMjpcdG1tODF4X2hpZl9maW5pc2gobW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMjMtXHRmbHVzaF93b3JrcXVldWUobW9ycy1cdTAwM2VuZXRfd3EpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEyNy19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMjg6RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9kZWluaXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTMwOnZvaWQgbW04MXhfY29yZV9mcmVlKHN0cnVjdCBtbTgxeCAqbW9ycylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEzMS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMzI6XHRtbTgxeF9tYWNfZnJlZShtb3JzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEzMy19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMzQ6RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9mcmVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEzNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC01NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjU1OnN0cnVjdCBtbTgxeF9idXNfb3BzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6NTY6c3RydWN0IG1tODF4X2hpZl9vcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC01Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC02Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjYzOmVudW0gbW04MXhfY2Fwc19mbGFncyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC02NC1cdE1NODFYX0NBUFNfRldfU1RBUlQgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTEzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjEzMjpzdHJ1Y3QgbW04MXhfZndfY2FwcyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xMzMtXHR1MzIgZmxhZ3NbRldfQ0FQQUJJTElUSUVTX0ZMQUdTX1dJRFRIXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xMzctXHR1OCBtYXhpbXVtX2FtcGR1X2xlbmd0aF9leHBvbmVudDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjEzODpcdHU4IG1tODF4X21tc3Nfb2Zmc2V0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTM5LX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTQxLSNkZWZpbmUgTU04MVhfRldfU1VQUChNTTgxWF9DQVBTLCBDQVBBQklMSVRZKSBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTQyOlx0bW04MXhfY2Fwc19zdXBwb3J0ZWQoTU04MVhfQ0FQUywgTU04MVhfQ0FQU18jI0NBUEFCSUxJVFkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoxNDQ6c3RhdGljIGlubGluZSBib29sIG1tODF4X2NhcHNfc3VwcG9ydGVkKHN0cnVjdCBtbTgxeF9md19jYXBzICpjYXBzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTQ1Olx0XHRcdFx0XHRlbnVtIG1tODF4X2NhcHNfZmxhZ3MgZmxhZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE0Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTUyOnN0cnVjdCBtbTgxeF9wcyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xNTMtXHR1MzIgd2FrZXJzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjE2MTplbnVtIG1tODF4X3BhZ2VfYWNpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE2Mi1cdE1NODFYX0FDSV9CRSA9IDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTY4OmVudW0gbW04MXhfcW9zX3RpZF91cF9pbmRleCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xNjktXHRNTTgxWF9RT1NfVElEX1VQX0JLID0gMSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoxODI6c3RydWN0IG1tODF4X3N3X3ZlcnNpb24ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTgzLVx0dTggbWFqb3I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTg4OnN0cnVjdCBtbTgxeF9zdGEge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTg5LVx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xOTUtXHRpbnQgbWF4X2J3X21oejtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjE5NjpcdHN0cnVjdCBtbTgxeF9yY19zdGEgcmM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xOTctXHRzdHJ1Y3QgbW1yY19yYXRlIGxhc3Rfc3RhX3R4X3JhdGU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjAyOnN0cnVjdCBtbTgxeF92aWYge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjAzOlx0c3RydWN0IG1tODF4ICptb3JzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjA0LVx0dTE2IGlkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTIxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjIxNzpzdHJ1Y3QgbW04MXhfc3RhbGVfdHhfc3RhdHVzIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTIxOC1cdC8qIFN0YWxlIFR4IGxvY2sgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaD0yMjM9c3RydWN0IG1jYXN0X2ZpbHRlciB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjMzOmVudW0gbW04MXhfaHdfc2Nhbl9vcCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yMzQtXHRNTTgxWF9IV19TQ0FOX09QX1NUQVJULFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTIzNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjIzODpzdHJ1Y3QgbW04MXhfaHdfc2Nhbl9wYXJhbXMge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjM5LVx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjQ1LVx0dTMyIGR3ZWxsX29uX2hvbWVfbXM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyNDY6XHRlbnVtIG1tODF4X2h3X3NjYW5fb3Agb3BlcmF0aW9uO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjQ3LVx0Ym9vbCBzdG9yZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyNjI6ZW51bSBtbTgxeF9od19zY2FuX3N0YXRlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTI2My1cdEhXX1NDQU5fU1RBVEVfSURMRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyNjg6c3RydWN0IG1tODF4X2h3X3NjYW4ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjY5Olx0ZW51bSBtbTgxeF9od19zY2FuX3N0YXRlIHN0YXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjcwLVx0c3RydWN0IGNvbXBsZXRpb24gc2Nhbl9kb25lO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjcxOlx0c3RydWN0IG1tODF4X2h3X3NjYW5fcGFyYW1zICpwYXJhbXM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yNzItXHRzdHJ1Y3QgZGVsYXllZF93b3JrIHRpbWVvdXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6Mjc2OmVudW0gbW04MXhfaGlmX2V2ZW50X2ZsYWdzIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTI3Ny1cdE1NODFYX0hJRl9FVlRfUlhfUEVORCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyODk6ZW51bSBtbTgxeF9zdGF0ZV9mbGFncyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yOTAtXHRNTTgxWF9TVEFURV9DSElQX1VOUkVTUE9OU0lWRSxcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODkzOQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgSSBkZWx2ZSBpbnRvIHRoaXMgY29uZmlndXJhdGlvbjoKCioqSW52ZXN0aWdhdGluZyBVU0IgYW5kIFNESU8gU3VwcG9ydCB3aXRoaW4gdGhlIG1tODF4IFdpcmVsZXNzIERyaXZlcioqCgpPa2F5LCBzbyBJIHNlZSBgQ09ORklHX01NODFYX1VTQmAgYW5kIGBDT05GSUdfTU04MVhfU0RJT2AgYXJlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRpbWUgdG8gZGlnIGluLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc3RhdHVzIG9mIFVTQiBwcm9iaW5nLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBtbTgxeCBjaGlwc2V0LiBNeSBpbml0aWFsIHRhcmdldCBpcyB0aGUgc291cmNlIGNvZGUuIEkgd2lsbCBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuY2AgYW5kIGl0cyBhc3NvY2lhdGVkIGBLY29uZmlnYCBmaWxlLiBUaGUgYHVzYi5jYCBmaWxlIHNob3VsZCBjb250YWluIHRoZSBVU0Itc3BlY2lmaWMgZHJpdmVyIGNvZGUsIGFuZCB0aGUgYEtjb25maWdgIGZpbGUgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBJIHdpbGwgdXNlIHRoZSBgS2NvbmZpZ2AgZm9yIHRoZSBjb25maWd1cmF0aW9uIGZsYWdzIGZvciBwcm9iaW5nLiBCeSByZWZlcmVuY2luZyBib3RoIG9mIHRoZXNlIGZpbGVzLCBJIGNhbiB2ZXJpZnkgd2hldGhlciB0aGUgbW9kdWxlIHN1cHBvcnRzIFVTQiBhbmQgYXNjZXJ0YWluIGhvdyBpdOKAmXMgY29uZmlndXJlZCB0byBwcm9iZSBmb3IgVVNCIGRldmljZXMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbXBsZXRlIHBpY3R1cmUsIG5vdCBqdXN0IHRoZSBjb2RlLCBidXQgdGhlIGludGVudGlvbi4gVGhpcyB3aWxsIGxldCBtZSBhc3Nlc3Mgd2hhdOKAmXMgZ29pbmcgb24sIGFuZCBpZGVudGlmeSBpZiB0aGVyZSBpcyBhbiBpc3N1ZSB0byBhZGRyZXNzIGluIHRoaXMgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHRcbiAgIDM6XHRjb25maWcgTU04MVhcbiAgIDQ6XHRcdHRyaXN0YXRlIFwmIzM0O01vcnNlIE1pY3JvIE1NODF4IHdpcmVsZXNzIGRldmljZXNcJiMzNDsgaWYgQ09NUElMRV9URVNUXG4gICA1Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gICA2Olx0XHRzZWxlY3QgRldfTE9BREVSXG4gICA3Olx0XHRzZWxlY3QgQ1JDN1xuICAgODpcdFx0aGVscFxuICAgOTpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGRldmljZXMgYmFzZWRcbiAgMTA6XHRcdCAgb24gTW9yc2UgTWljcm8gTU04MXh4IGNoaXBzZXRzLlxuICAxMTpcdFxuICAxMjpcdGNvbmZpZyBNTTgxWF9VU0JcbiAgMTM6XHRcdHRyaXN0YXRlIFwmIzM0O01vcnNlIE1pY3JvIE1NODF4IFVTQiBzdXBwb3J0XCYjMzQ7XG4gIDE0Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExIFx1MDAyNlx1MDAyNiBVU0JcbiAgMTU6XHRcdHNlbGVjdCBNTTgxWFxuICAxNjpcdFx0aGVscFxuICAxNzpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHRoZSBVU0IgaW50ZXJmYWNlIG9mXG4gIDE4Olx0XHQgIGRldmljZXMgdXNpbmcgdGhlIE1vcnNlIE1pY3JvIE1NODF4IGNoaXBzZXQuXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIE1NODFYX1NESU9cbiAgMjE6XHRcdHRyaXN0YXRlIFwmIzM0O01vcnNlIE1pY3JvIE1NODF4IFNESU8gc3VwcG9ydFwmIzM0O1xuICAyMjpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcdTAwMjZcdTAwMjYgTU1DXG4gIDIzOlx0XHRzZWxlY3QgTU04MVhcbiAgMjQ6XHRcdGhlbHBcbiAgMjU6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciB0aGUgU0RJTyBpbnRlcmZhY2Ugb2ZcbiAgMjY6XHRcdCAgZGV2aWNlcyB1c2luZyB0aGUgTW9yc2UgTWljcm8gTU04MXggY2hpcHNldC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTY3NQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2U6CgoqKlVTQiBGdXp6aW5nLCBMZXQmIzM5O3MgRGl2ZSBEZWVwKioKClJpZ2h0LCBzbyBgTU04MVhfVVNCYCBpcyAqYWN0dWFsbHkqIGEgdGhpbmchIFN5emthbGxlciBpcyBoYW1tZXJpbmcgYXdheSBhdCBVU0IgZHJpdmVycyB1c2luZyBSYXcgR2FkZ2V0IGFuZCBVU0IgZW11bGF0aW9uLCB3aGljaCBpcyBmYXNjaW5hdGluZy4gVGhpcyBtZWFucyB3ZSYjMzk7dmUgZ290IGEgbmV3IGF2ZW51ZSBmb3IgdW5jb3ZlcmluZyB0aG9zZSBnbmFybHksIGhhcmQtdG8tZmluZCBidWdzLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBmb3IgbWUgaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBgbW04MXhgIHdpcmVsZXNzIGRyaXZlciBpbnRlcmZhY2VzIHdpdGggVVNCLiBJJiMzOTttIGhlYWRpbmcgc3RyYWlnaHQgZm9yIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jYC4gSSBuZWVkIHRvIHNlZSBleGFjdGx5IGhvdyBwYWNrZXRzIGFuZCBZQVBTIGFyZSBhY3R1YWxseSAqcmVhY2hlZCogdGhyb3VnaCB0aGlzIFVTQiBpbnRlcmZhY2UuIExldCYjMzk7cyBzZWUgaG93IHRoZSBtYWdpYyBoYXBwZW5zIGFuZCB3aGF0IGtpbmQgb2YgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyB3ZSBjYW4gc25pZmYgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3lhcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODgwIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlPTExPW1tODF4X2NvcmUteSAmIzQzOz0gc2ticS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjEyOm1tODF4X2NvcmUteSAmIzQzOz0geWFwc19ody5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjEzOm1tODF4X2NvcmUteSAmIzQzOz0geWFwcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlLTE0LW1tODF4X2NvcmUteSAmIzQzOz0gcmMub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jPTExPXN0YXRpYyBpbnQgbW04MXhfY29yZV9hdHRhY2hfcmVncyhzdHJ1Y3QgbW04MXggKm1vcnMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMjYtXHRcdG1vcnMtXHUwMDNlcmVncyA9IFx1MDAyNm1tODEwOF9yZWdzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6Mjc6XHRcdG1vcnMtXHUwMDNlaGlmLm9wcyA9IFx1MDAyNm1tODF4X3lhcHNfb3BzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMjgtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE4LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3dhaXQuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTk6I2luY2x1ZGUgXCYjMzQ7eWFwcy5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyMDojaW5jbHVkZSBcJiMzNDt5YXBzX2h3LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTIxLSNpbmNsdWRlIFwmIzM0O2h3LmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaD0zMDM9c3RydWN0IG1tODF4IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0zNDctXHRcdHVuaW9uIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjM0ODpcdFx0XHRzdHJ1Y3QgbW04MXhfeWFwcyB5YXBzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMzQ5LVx0XHR9IHU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5jPTU0Nj1pbnQgbW04MXhfZndfcGFyc2VfZXh0X2hvc3RfdGJsKHN0cnVjdCBtbTgxeCAqbW9ycylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3LmMtNTc4LVx0XHRjYXNlIE1NODFYX0ZXX0hPU1RfVEFCTEVfVEFHX1lBUFNfVEFCTEU6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3LmM6NTc5Olx0XHRcdG1tODF4X3lhcHNfaHdfcmVhZF90YWJsZShcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvZncuYzo1ODA6XHRcdFx0XHRtb3JzLCBcdTAwMjYoKHN0cnVjdCBleHRfaG9zdF90YmxfeWFwc190YWJsZSAqKWhkcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvZncuYzo1ODE6XHRcdFx0XHRcdCAgICAgICAtXHUwMDNleWFwc190YWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3LmMtNTgyLVx0XHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvZncuaC0xMi0jaW5jbHVkZSBcJiMzNDtjb21tYW5kX2RlZnMuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5oOjEzOiNpbmNsdWRlIFwmIzM0O3lhcHNfaHcuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5oLTE0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvZncuaD0xMjQ9c3RydWN0IGV4dF9ob3N0X3RibF9pbnNlcnRfc2tiX2NoZWNrc3VtIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3LmgtMTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5oOjEyOTpzdHJ1Y3QgZXh0X2hvc3RfdGJsX3lhcHNfdGFibGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5oLTEzMC1cdHN0cnVjdCBleHRfaG9zdF90YmxfdGx2X2hkciBoZWFkZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3Lmg6MTMxOlx0c3RydWN0IG1tODF4X3lhcHNfaHdfdGFibGUgeWFwc190YWJsZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvZncuaC0xMzItfSBfX3BhY2tlZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2h3LmMtMTUtI2luY2x1ZGUgXCYjMzQ7ZncuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9ody5jOjE2OiNpbmNsdWRlIFwmIzM0O3lhcHMuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9ody5jLTE3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MjM6c3RhdGljIGludCBtbTgxeF95YXBzX2FsbG9jX3BrdF9idWZmZXJzKHN0cnVjdCBtbTgxeF95YXBzICp5YXBzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MjU6XHR5YXBzLVx1MDAzZWh3LnRvX2NoaXBfcGt0cyA9IGtjYWxsb2MoTUFYX1BLVFNfUEVSX1RYX1RYTixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjI2Olx0XHRcdFx0XHRzaXplb2YoKnlhcHMtXHUwMDNlaHcudG9fY2hpcF9wa3RzKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTI3LVx0XHRcdFx0XHRHRlBfS0VSTkVMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjI4Olx0aWYgKCF5YXBzLVx1MDAzZWh3LnRvX2NoaXBfcGt0cylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTI5LVx0XHRyZXR1cm4gLUVOT01FTTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MzE6XHR5YXBzLVx1MDAzZWh3LmZyb21fY2hpcF9wa3RzID0ga2NhbGxvYyhNQVhfUEtUU19QRVJfUlhfVFhOLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MzI6XHRcdFx0XHRcdCAgc2l6ZW9mKCp5YXBzLVx1MDAzZWh3LmZyb21fY2hpcF9wa3RzKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTMzLVx0XHRcdFx0XHQgIEdGUF9LRVJORUwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MzQ6XHRpZiAoIXlhcHMtXHUwMDNlaHcuZnJvbV9jaGlwX3BrdHMpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjM1Olx0XHRrZnJlZSh5YXBzLVx1MDAzZWh3LnRvX2NoaXBfcGt0cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozNjpcdFx0eWFwcy1cdTAwM2Vody50b19jaGlwX3BrdHMgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzctXHRcdHJldHVybiAtRU5PTUVNO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDM6c3RhdGljIHZvaWQgbW04MXhfeWFwc19mcmVlX3BrdF9idWZmZXJzKHN0cnVjdCBtbTgxeF95YXBzICp5YXBzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDU6XHRrZnJlZSh5YXBzLVx1MDAzZWh3LmZyb21fY2hpcF9wa3RzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjQ2Olx0eWFwcy1cdTAwM2Vody5mcm9tX2NoaXBfcGt0cyA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0NzpcdGtmcmVlKHlhcHMtXHUwMDNlaHcudG9fY2hpcF9wa3RzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjQ4Olx0eWFwcy1cdTAwM2Vody50b19jaGlwX3BrdHMgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1MTpzdGF0aWMgaW50IG1tODF4X3lhcHNfd3JpdGVfcGt0cyhzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjUyOlx0XHRcdFx0IHN0cnVjdCBtbTgxeF95YXBzX3BrdCAqcGt0cywgaW50IG51bV9wa3RzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTMtXHRcdFx0XHQgaW50ICpudW1fcGt0c19zZW50KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTU6XHRyZXR1cm4geWFwcy1cdTAwM2VvcHMtXHUwMDNld3JpdGVfcGt0cyh5YXBzLCBwa3RzLCBudW1fcGt0cywgbnVtX3BrdHNfc2VudCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01Ni19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU4OnN0YXRpYyBpbnQgbW04MXhfeWFwc19yZWFkX3BrdHMoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1OTpcdFx0XHRcdHN0cnVjdCBtbTgxeF95YXBzX3BrdCAqcGt0cywgaW50IG51bV9wa3RzX21heCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTYwLVx0XHRcdFx0aW50ICpudW1fcGt0c19yZWNlaXZlZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTYxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjYyOlx0cmV0dXJuIHlhcHMtXHUwMDNlb3BzLVx1MDAzZXJlYWRfcGt0cyh5YXBzLCBwa3RzLCBudW1fcGt0c19tYXgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02My1cdFx0XHRcdCAgICBudW1fcGt0c19yZWNlaXZlZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2NjpzdGF0aWMgaW50IG1tODF4X3lhcHNfdXBkYXRlX3N0YXR1cyhzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY4Olx0cmV0dXJuIHlhcHMtXHUwMDNlb3BzLVx1MDAzZXVwZGF0ZV9zdGF0dXMoeWFwcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02OS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy03MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjcxOi8qIE1hcHBpbmdzIGJldHdlZW4gc2tfYnVmZiwgc2ticSBhbmQgeWFwcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NzI6c3RhdGljIHN0cnVjdCBtbTgxeF9za2JxICptbTgxeF95YXBzX3RjX3FfZnJvbV9hY2koc3RydWN0IG1tODF4ICptb3JzLCBpbnQgYWNpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNzMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NzQ6XHRzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcyA9IFx1MDAyNm1vcnMtXHUwMDNlaGlmLnUueWFwcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NzY6XHRpZiAoYWNpIFx1MDAzZT0gQVJSQVlfU0laRSh5YXBzLVx1MDAzZWRhdGFfdHhfcXMpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNzctXHRcdHJldHVybiBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6Nzg6XHRyZXR1cm4gXHUwMDI2eWFwcy1cdTAwM2VkYXRhX3R4X3FzW2FjaV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy03OS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy04MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjgxOnN0YXRpYyB2b2lkIG1tODF4X3lhcHNfZ2V0X3R4X3FzKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3NrYnEgKipxcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTgyLVx0XHRcdFx0IGludCAqbnVtX3FzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtODMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6ODQ6XHQqcXMgPSBtb3JzLVx1MDAzZWhpZi51LnlhcHMuZGF0YV90eF9xcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTg1LVx0Km51bV9xcyA9IFlBUFNfVFhfU0tCUV9NQVg7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo4ODpzdGF0aWMgc3RydWN0IG1tODF4X3NrYnEgKm1tODF4X3lhcHNfZ2V0X2Jjbl90Y19xKHN0cnVjdCBtbTgxeCAqbW9ycylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTg5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjkwOlx0cmV0dXJuIFx1MDAyNm1vcnMtXHUwMDNlaGlmLnUueWFwcy5iZWFjb25fcTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTkxLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6OTM6c3RhdGljIHN0cnVjdCBtbTgxeF9za2JxICptbTgxeF95YXBzX2dldF9tZ210X3RjX3Eoc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtOTQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6OTU6XHRyZXR1cm4gXHUwMDI2bW9ycy1cdTAwM2VoaWYudS55YXBzLm1nbXRfcTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTk2LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6OTg6c3RhdGljIHN0cnVjdCBtbTgxeF9za2JxICptbTgxeF95YXBzX2dldF90eF9jbWRfcXVldWUoc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtOTkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MTAwOlx0cmV0dXJuIFx1MDAyNm1vcnMtXHUwMDNlaGlmLnUueWFwcy5jbWRfcTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTEwMS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMDM6c3RhdGljIGludCBtbTgxeF95YXBzX2lycV9oYW5kbGVyKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIHN0YXR1cylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTEwNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMTA4LVx0aWYgKHN0YXR1cyBcdTAwMjYgQklUKE1NODFYX0lOVF9ZQVBTX0ZDX1BBQ0tFVF9GUkVFRF9VUF9JUlFOKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MTA5Olx0XHR0aW1lcl9kZWxldGVfc3luY190cnkoXHUwMDI2bW9ycy1cdTAwM2VoaWYudS55YXBzLmNoaXBfcXVldWVfZnVsbC50aW1lcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xMTAtXHRcdHNldF9iaXQoTU04MVhfSElGX0VWVF9UWF9QQUNLRVRfRlJFRURfVVBfUEVORCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMTg6Y29uc3Qgc3RydWN0IG1tODF4X2hpZl9vcHMgbW04MXhfeWFwc19vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMTk6XHQuaW5pdCA9IG1tODF4X3lhcHNfaW5pdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjEyMDpcdC5mbHVzaF90eF9kYXRhID0gbW04MXhfeWFwc19mbHVzaF90eF9kYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MTIxOlx0LmZsdXNoX2NtZHMgPSBtbTgxeF95YXBzX2ZsdXNoX2NtZHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMjI6XHQuZ2V0X3R4X3N0YXR1c19wZW5kaW5nX2NvdW50ID0gbW04MXhfeWFwc19nZXRfdHhfc3RhdHVzX3BlbmRpbmdfY291bnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMjM6XHQuZ2V0X3R4X2J1ZmZlcmVkX2NvdW50ID0gbW04MXhfeWFwc19nZXRfdHhfYnVmZmVyZWRfY291bnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMjQ6XHQuZmluaXNoID0gbW04MXhfeWFwc19maW5pc2gsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMjU6XHQuc2ticV9nZXRfdHhfcXMgPSBtbTgxeF95YXBzX2dldF90eF9xcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjEyNjpcdC5nZXRfdHhfYmVhY29uX3F1ZXVlID0gbW04MXhfeWFwc19nZXRfYmNuX3RjX3EsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMjc6XHQuZ2V0X3R4X21nbXRfcXVldWUgPSBtbTgxeF95YXBzX2dldF9tZ210X3RjX3EsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMjg6XHQuZ2V0X3R4X2NtZF9xdWV1ZSA9IG1tODF4X3lhcHNfZ2V0X3R4X2NtZF9xdWV1ZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjEyOTpcdC5nZXRfdHhfZGF0YV9xdWV1ZSA9IG1tODF4X3lhcHNfdGNfcV9mcm9tX2FjaSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjEzMDpcdC5oYW5kbGVfaXJxID0gbW04MXhfeWFwc19pcnFfaGFuZGxlclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMTMxLX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMzM6c3RhdGljIGludCBtbTgxeF95YXBzX3JlYWRfcGt0KHN0cnVjdCBtbTgxeF95YXBzICp5YXBzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMTM0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjEzNTpcdHN0cnVjdCBtbTgxeCAqbW9ycyA9IHlhcHMtXHUwMDNlbW9ycztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTEzNi1cdHN0cnVjdCBza19idWZmX2hlYWQgc2ticTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxNTg6XHRpZiAoeWFwcy1cdTAwM2Vtb3JzLVx1MDAzZWhpZi52YWxpZGF0ZV9za2JfY2hlY2tzdW0gXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xNTktXHQgICAgIW1tODF4X3NrYnFfdmFsaWRhdGVfY2hlY2tzdW0oc2tiLVx1MDAzZWRhdGEpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxNjA6XHRcdGRldl9kYmcoeWFwcy1cdTAwM2Vtb3JzLVx1MDAzZWRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTE2MS1cdFx0XHRcJiMzNDtTS0IgY2hlY2tzdW0gaXMgaW52YWxpZCBoZHI6W2M6JTAyWCBzOiUwMlggbGVuOiVkXVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xNzYtXHRjYXNlIE1NODFYX1NLQl9DSEFOX01HTVQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxNzc6XHRcdG1xID0gXHUwMDI2eWFwcy1cdTAwM2VkYXRhX3J4X3E7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xNzgtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMTc5LVx0Y2FzZSBNTTgxWF9TS0JfQ0hBTl9DT01NQU5EOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MTgwOlx0XHRtcSA9IFx1MDAyNnlhcHMtXHUwMDNlY21kX3Jlc3BfcTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTE4MS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MjI2OnN0YXRpYyBpbnQgbW04MXhfeWFwc190eChzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcywgc3RydWN0IG1tODF4X3NrYnEgKm1xKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjI3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0yMzctXHRzdHJ1Y3Qgc2tfYnVmZiAqcGZpcnN0LCAqcG5leHQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoyMzg6XHRzdHJ1Y3QgbW04MXggKm1vcnMgPSB5YXBzLVx1MDAzZW1vcnM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0yMzktXHRzdHJ1Y3QgbW04MXhfc2tiX2hkciAqaGRyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTI1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjI1MjpcdGlmIChtcSA9PSBcdTAwMjZ5YXBzLVx1MDAzZWNtZF9xKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjUzLVx0XHQvKiBQdXJnZSB0aW1lZC1vdXQgY29tbWFuZHMgKHRoaXMgc2hvdWxkIG5vdCBoYXBwZW4pICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0yNTQtXHRcdG1tODF4X3NrYnFfcHVyZ2UobXEsIFx1MDAyNm1xLVx1MDAzZXBlbmRpbmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MjU1Olx0ZWxzZSBpZiAobXEgPT0gXHUwMDI2eWFwcy1cdTAwM2VtZ210X3EgXHUwMDI2XHUwMDI2IHNrYl9xdWV1ZV9sZW4oXHUwMDI2bXEtXHUwMDNlc2ticSkgXHUwMDNlIDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0yNTYtXHRcdC8qXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjY1LVx0c2tiX3F1ZXVlX3dhbGtfc2FmZShcdTAwMjZza2JxX3RvX3NlbmQsIHBmaXJzdCwgcG5leHQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjI2NjpcdFx0ZW51bSBtbTgxeF95YXBzX3RvX2NoaXBfcSB0Y19xdWV1ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTI2Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0yODItXHRcdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjI4MzpcdFx0eWFwcy1cdTAwM2Vody50b19jaGlwX3BrdHNbdGNfcGt0X2lkeF0udGNfcXVldWUgPSB0Y19xdWV1ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjI4NDpcdFx0eWFwcy1cdTAwM2Vody50b19jaGlwX3BrdHNbdGNfcGt0X2lkeF0uc2tiID0gcGZpcnN0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjg1LVx0XHR0Y19wa3RfaWR4JiM0MzsmIzQzOztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0yODgtXHQvKiBTZW5kIHF1ZXVlZCBwYWNrZXRzIHRvIGNoaXAgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjI4OTpcdHJldCA9IG1tODF4X3lhcHNfdXBkYXRlX3N0YXR1cyh5YXBzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTI5MC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MjkzOlx0cmV0ID0gbW04MXhfeWFwc193cml0ZV9wa3RzKHlhcHMsIHlhcHMtXHUwMDNlaHcudG9fY2hpcF9wa3RzLCB0Y19wa3RfaWR4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjk0LVx0XHRcdFx0ICAgIFx1MDAyNm51bV9wa3RzX3NlbnQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTMyNC0vKiBSZXR1cm5zIHRydWUgaWYgdGhlcmUgYXJlIFRYIGRhdGEgcGFnZXMgd2FpdGluZyB0byBiZSBzZW50ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozMjU6c3RhdGljIGJvb2wgbW04MXhfeWFwc190eF9kYXRhX2hhbmRsZXIoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zMjYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTMyOC1cdHUzMiBjb3VudCA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozMjk6XHRzdHJ1Y3QgbW04MXggKm1vcnMgPSB5YXBzLVx1MDAzZW1vcnM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zMzEtXHRmb3IgKGFjaSA9IE1NODFYX0FDSV9WTzsgYWNpIFx1MDAzZT0gMDsgYWNpLS0pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjMzMjpcdFx0c3RydWN0IG1tODF4X3NrYnEgKmRhdGFfcSA9IG1tODF4X3lhcHNfdGNfcV9mcm9tX2FjaShtb3JzLCBhY2kpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzMzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTMzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjMzNzpcdFx0eWFwcy1cdTAwM2VjaGlwX3F1ZXVlX2Z1bGwuaXNfZnVsbCA9IG1tODF4X3lhcHNfdHgoeWFwcywgZGF0YV9xKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTMzOC1cdFx0Y291bnQgJiM0Mzs9IG1tODF4X3NrYnFfY291bnQoZGF0YV9xKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTMzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjM0MDpcdFx0aWYgKHlhcHMtXHUwMDNlY2hpcF9xdWV1ZV9mdWxsLmlzX2Z1bGwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zNDEtXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzU3LS8qIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgY29tbWFuZHMgd2FpdGluZyB0byBiZSBzZW50ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozNTg6c3RhdGljIGJvb2wgbW04MXhfeWFwc190eF9jbWRfaGFuZGxlcihzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTM1OS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozNjA6XHRzdHJ1Y3QgbW04MXhfc2ticSAqY21kX3EgPSBcdTAwMjZ5YXBzLVx1MDAzZWNtZF9xO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzYxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MzYyOlx0bW04MXhfeWFwc190eCh5YXBzLCBjbWRfcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zNjMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MzY3OnN0YXRpYyBib29sIG1tODF4X3lhcHNfdHhfYmVhY29uX2hhbmRsZXIoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zNjgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MzY5Olx0c3RydWN0IG1tODF4X3NrYnEgKmJlYWNvbl9xID0gXHUwMDI2eWFwcy1cdTAwM2ViZWFjb25fcTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTM3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjM3MTpcdG1tODF4X3lhcHNfdHgoeWFwcywgYmVhY29uX3EpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzcyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTM3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjM3NjpzdGF0aWMgYm9vbCBtbTgxeF95YXBzX3R4X21nbXRfaGFuZGxlcihzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTM3Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozNzg6XHRzdHJ1Y3QgbW04MXhfc2ticSAqbWdtdF9xID0gXHUwMDI2eWFwcy1cdTAwM2VtZ210X3E7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zNzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozODA6XHRtbTgxeF95YXBzX3R4KHlhcHMsIG1nbXRfcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zODEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzg1LS8qIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgcG9wdWxhdGVkIFJYIHBhZ2VzIGxlZnQgaW4gdGhlIGRldmljZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6Mzg2OnN0YXRpYyBib29sIG1tODF4X3lhcHNfcnhfaGFuZGxlcihzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTM4Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MzkyOlx0cmV0ID0gbW04MXhfeWFwc191cGRhdGVfc3RhdHVzKHlhcHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzkzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozOTY6XHRyZXQgPSBtbTgxeF95YXBzX3JlYWRfcGt0cyh5YXBzLCB5YXBzLVx1MDAzZWh3LmZyb21fY2hpcF9wa3RzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzk3LVx0XHRcdFx0ICAgTUFYX1BLVFNfUEVSX1JYX1RYTiwgXHUwMDI2bnVtX3Brc19yZWNlaXZlZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zOTgtXHRpZiAocmV0IFx1MDAyNlx1MDAyNiByZXQgIT0gLUVBR0FJTikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6Mzk5Olx0XHRkZXZfZXJyKHlhcHMtXHUwMDNlbW9ycy1cdTAwM2VkZXYsIFwmIzM0O1lBUFMgcmVhZF9wa3RzIGZhaWw6ICVkXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDAwLVx0XHRnb3RvIGV4aXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDAzLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnVtX3Brc19yZWNlaXZlZDsgJiM0MzsmIzQzO2kpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjQwNDpcdFx0bW04MXhfeWFwc19yZWFkX3BrdCh5YXBzLCB5YXBzLVx1MDAzZWh3LmZyb21fY2hpcF9wa3RzW2ldLnNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0MDU6XHRcdHlhcHMtXHUwMDNlaHcuZnJvbV9jaGlwX3BrdHNbaV0uc2tiID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTQwNi1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00MTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0MTU6dm9pZCBtbTgxeF95YXBzX3N0YWxlX3R4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDE2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00MTktXHRzdHJ1Y3QgbW04MXggKm1vcnMgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG1tODF4LCB0eF9zdGFsZV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjQyMDpcdHN0cnVjdCBtbTgxeF95YXBzICp5YXBzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDIyOlx0eWFwcyA9IFx1MDAyNm1vcnMtXHUwMDNlaGlmLnUueWFwcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjQyMzpcdGZsdXNoZWQgJiM0Mzs9IG1tODF4X3NrYnFfY2hlY2tfZm9yX3N0YWxlX3R4KG1vcnMsIFx1MDAyNnlhcHMtXHUwMDNlYmVhY29uX3EpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDI0Olx0Zmx1c2hlZCAmIzQzOz0gbW04MXhfc2ticV9jaGVja19mb3Jfc3RhbGVfdHgobW9ycywgXHUwMDI2eWFwcy1cdTAwM2VtZ210X3EpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDI2Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRSh5YXBzLVx1MDAzZWRhdGFfdHhfcXMpOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTQyNy1cdFx0Zmx1c2hlZCAmIzQzOz0gbW04MXhfc2ticV9jaGVja19mb3Jfc3RhbGVfdHgobW9ycyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjQyODpcdFx0XHRcdFx0XHRcdCBcdTAwMjZ5YXBzLVx1MDAzZWRhdGFfdHhfcXNbaV0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDI5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTQzNS1cdGlmIChtb3JzLVx1MDAzZXBzLmVuYWJsZSBcdTAwMjZcdTAwMjYgIW1vcnMtXHUwMDNlcHMuc3VzcGVuZGVkIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDM2Olx0ICAgIChtbTgxeF95YXBzX2dldF90eF9idWZmZXJlZF9jb3VudChtb3JzKSA9PSAwKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDM3LVx0XHQvKiBFdmFsdWF0ZSBwcyB0byBjaGVjayBpZiBpdCB3YXMgZ2F0ZWQgb24gYSBzdGFsZSB0eCBzdGF0dXMgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00NDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0NDM6dm9pZCBtbTgxeF95YXBzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDQ0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00NDYtXHR1bnNpZ25lZCBsb25nICpmbGFncyA9IFx1MDAyNm1vcnMtXHUwMDNlaGlmLmV2ZW50X2ZsYWdzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDQ3Olx0c3RydWN0IG1tODF4X3lhcHMgKnlhcHMgPSBcdTAwMjZtb3JzLVx1MDAzZWhpZi51LnlhcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00NDgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDY0LVx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChNTTgxWF9ISUZfRVZUX1JYX1BFTkQsIGZsYWdzKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDY1Olx0XHRpZiAobW04MXhfeWFwc19yeF9oYW5kbGVyKHlhcHMpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDY2LVx0XHRcdHNldF9iaXQoTU04MVhfSElGX0VWVF9SWF9QRU5ELCBmbGFncyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDcwLVx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChNTTgxWF9ISUZfRVZUX1RYX0NPTU1BTkRfUEVORCwgZmxhZ3MpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0NzE6XHRcdGlmIChtbTgxeF95YXBzX3R4X2NtZF9oYW5kbGVyKHlhcHMpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDcyLVx0XHRcdHNldF9iaXQoTU04MVhfSElGX0VWVF9UWF9DT01NQU5EX1BFTkQsIGZsYWdzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00NzYtXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE1NODFYX0hJRl9FVlRfVFhfQkVBQ09OX1BFTkQsIGZsYWdzKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDc3Olx0XHRpZiAobW04MXhfeWFwc190eF9iZWFjb25faGFuZGxlcih5YXBzKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTQ3OC1cdFx0XHRzZXRfYml0KE1NODFYX0hJRl9FVlRfVFhfQkVBQ09OX1BFTkQsIGZsYWdzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00ODItXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE1NODFYX0hJRl9FVlRfVFhfTUdNVF9QRU5ELCBmbGFncykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjQ4MzpcdFx0aWYgKG1tODF4X3lhcHNfdHhfbWdtdF9oYW5kbGVyKHlhcHMpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDg0LVx0XHRcdHNldF9iaXQoTU04MVhfSElGX0VWVF9UWF9NR01UX1BFTkQsIGZsYWdzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00OTktXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE1NODFYX0hJRl9FVlRfVFhfUEFDS0VUX0ZSRUVEX1VQX1BFTkQsIGZsYWdzKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjUwMDpcdFx0eWFwcy1cdTAwM2VjaGlwX3F1ZXVlX2Z1bGwuaXNfZnVsbCA9IGZhbHNlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTAxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTUwNC1cdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTA1Olx0aWYgKHlhcHMtXHUwMDNlY2hpcF9xdWV1ZV9mdWxsLmlzX2Z1bGwgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1MDY6XHQgICAgdGltZV9iZWZvcmUoamlmZmllcywgeWFwcy1cdTAwM2VjaGlwX3F1ZXVlX2Z1bGwucmV0cnlfZXhwaXJ5KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTUwNy1cdFx0Z290byBleGl0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTUxMC1cdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTU04MVhfSElGX0VWVF9UWF9EQVRBX1BFTkQsIGZsYWdzKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTExOlx0XHRpZiAobW04MXhfeWFwc190eF9kYXRhX2hhbmRsZXIoeWFwcykpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01MTItXHRcdFx0c2V0X2JpdChNTTgxWF9ISUZfRVZUX1RYX0RBVEFfUEVORCwgZmxhZ3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTE0Olx0XHRpZiAoeWFwcy1cdTAwM2VjaGlwX3F1ZXVlX2Z1bGwuaXNfZnVsbCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTE1Olx0XHRcdHlhcHMtXHUwMDNlY2hpcF9xdWV1ZV9mdWxsLnJldHJ5X2V4cGlyeSA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01MTYtXHRcdFx0XHRqaWZmaWVzICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01MTctXHRcdFx0XHRtc2Vjc190b19qaWZmaWVzKENISVBfRlVMTF9SRUNPVkVSWV9USU1FT1VUX01TKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjUxODpcdFx0XHRtb2RfdGltZXIoXHUwMDI2eWFwcy1cdTAwM2VjaGlwX3F1ZXVlX2Z1bGwudGltZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1MTk6XHRcdFx0XHQgIHlhcHMtXHUwMDNlY2hpcF9xdWV1ZV9mdWxsLnJldHJ5X2V4cGlyeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01MjAtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01MjktXHQvKiBEb24mIzM5O3QgcmVxdWV1ZSB3b3JrIGlmIHdlIGFyZSBzaHV0dGluZyBkb3duLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTMwOlx0aWYgKHlhcHMtXHUwMDNlZmluaXNoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTMxLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTQxLVx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1NDI6XHRlbHNlIGlmICgheWFwcy1cdTAwM2VjaGlwX3F1ZXVlX2Z1bGwuaXNfZnVsbCBcdTAwMjZcdTAwMjYgKmZsYWdzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTQzLVx0XHRxdWV1ZV93b3JrKG1vcnMtXHUwMDNlY2hpcF93cSwgXHUwMDI2bW9ycy1cdTAwM2VoaWZfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTQ2OmludCBtbTgxeF95YXBzX2dldF90eF9zdGF0dXNfcGVuZGluZ19jb3VudChzdHJ1Y3QgbW04MXggKm1vcnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01NDcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU0OS1cdGludCBjb3VudCA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1NTA6XHRzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU1MjpcdHlhcHMgPSBcdTAwMjZtb3JzLVx1MDAzZWhpZi51LnlhcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1NTM6XHRjb3VudCAmIzQzOz0gc2tiX3F1ZXVlX2xlbihcdTAwMjZ5YXBzLVx1MDAzZWJlYWNvbl9xLnBlbmRpbmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTU0Olx0Y291bnQgJiM0Mzs9IHNrYl9xdWV1ZV9sZW4oXHUwMDI2eWFwcy1cdTAwM2VtZ210X3EucGVuZGluZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1NTU6XHRjb3VudCAmIzQzOz0gc2tiX3F1ZXVlX2xlbihcdTAwMjZ5YXBzLVx1MDAzZWNtZF9xLnBlbmRpbmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTU3Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRSh5YXBzLVx1MDAzZWRhdGFfdHhfcXMpOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU1ODpcdFx0Y291bnQgJiM0Mzs9IHNrYl9xdWV1ZV9sZW4oXHUwMDI2eWFwcy1cdTAwM2VkYXRhX3R4X3FzW2ldLnBlbmRpbmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTU5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU2MzppbnQgbW04MXhfeWFwc19nZXRfdHhfYnVmZmVyZWRfY291bnQoc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTY0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01NjYtXHRpbnQgY291bnQgPSAwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTY3Olx0c3RydWN0IG1tODF4X3lhcHMgKnlhcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1Njk6XHR5YXBzID0gXHUwMDI2bW9ycy1cdTAwM2VoaWYudS55YXBzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTcwOlx0Y291bnQgJiM0Mzs9IHNrYl9xdWV1ZV9sZW4oXHUwMDI2eWFwcy1cdTAwM2ViZWFjb25fcS5za2JxKSAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTcxOlx0XHQgc2tiX3F1ZXVlX2xlbihcdTAwMjZ5YXBzLVx1MDAzZWJlYWNvbl9xLnBlbmRpbmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTcyOlx0Y291bnQgJiM0Mzs9IHNrYl9xdWV1ZV9sZW4oXHUwMDI2eWFwcy1cdTAwM2VtZ210X3Euc2ticSkgJiM0MztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU3MzpcdFx0IHNrYl9xdWV1ZV9sZW4oXHUwMDI2eWFwcy1cdTAwM2VtZ210X3EucGVuZGluZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1NzQ6XHRjb3VudCAmIzQzOz0gc2tiX3F1ZXVlX2xlbihcdTAwMjZ5YXBzLVx1MDAzZWNtZF9xLnNrYnEpICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1NzU6XHRcdCBza2JfcXVldWVfbGVuKFx1MDAyNnlhcHMtXHUwMDNlY21kX3EucGVuZGluZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01NzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1Nzc6XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHlhcHMtXHUwMDNlZGF0YV90eF9xcyk7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTc4Olx0XHRjb3VudCAmIzQzOz0gbW04MXhfc2ticV9jb3VudF90eF9yZWFkeShcdTAwMjZ5YXBzLVx1MDAzZWRhdGFfdHhfcXNbaV0pICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1Nzk6XHRcdFx0IHNrYl9xdWV1ZV9sZW4oXHUwMDI2eWFwcy1cdTAwM2VkYXRhX3R4X3FzW2ldLnBlbmRpbmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTgwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU4NDpzdGF0aWMgdm9pZCBtbTgxeF95YXBzX3R4X3FfZnVsbF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU4NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1ODY6XHRzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcyA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1ODc6XHRcdHRpbWVyX2NvbnRhaW5lcl9vZih5YXBzLCB0LCBjaGlwX3F1ZXVlX2Z1bGwudGltZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTg5Olx0cXVldWVfd29yayh5YXBzLVx1MDAzZW1vcnMtXHUwMDNlY2hpcF93cSwgXHUwMDI2eWFwcy1cdTAwM2Vtb3JzLVx1MDAzZWhpZl93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU5MC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01OTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1OTI6c3RhdGljIHZvaWQgbW04MXhfeWFwc19xX2NoaXBfZnVsbF90aW1lcl9pbml0KHN0cnVjdCBtbTgxeF95YXBzICp5YXBzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTkzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU5NDpcdHRpbWVyX3NldHVwKFx1MDAyNnlhcHMtXHUwMDNlY2hpcF9xdWV1ZV9mdWxsLnRpbWVyLCBtbTgxeF95YXBzX3R4X3FfZnVsbF90aW1lcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU5NS1cdFx0ICAgIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU5ODpzdGF0aWMgdm9pZCBtbTgxeF95YXBzX3FfY2hpcF9mdWxsX3RpbWVyX2ZpbmlzaChzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU5OS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2MDA6XHR0aW1lcl9zaHV0ZG93bl9zeW5jKFx1MDAyNnlhcHMtXHUwMDNlY2hpcF9xdWV1ZV9mdWxsLnRpbWVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTYwMS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2MDM6aW50IG1tODF4X3lhcHNfaW5pdChzdHJ1Y3QgbW04MXggKm1vcnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MDQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjA1LVx0aW50IGksIHJldDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjYwNjpcdHN0cnVjdCBtbTgxeF95YXBzICp5YXBzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjA4Olx0cmV0ID0gbW04MXhfeWFwc19od19pbml0KG1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjA5LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjEwOlx0XHRkZXZfZXJyKG1vcnMtXHUwMDNlZGV2LCBcJiMzNDttbTgxeF95YXBzX2h3X2luaXQgZmFpbGVkICVkXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjExLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTYxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjYxNDpcdHlhcHMgPSBcdTAwMjZtb3JzLVx1MDAzZWhpZi51LnlhcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2MTU6XHR5YXBzLVx1MDAzZW1vcnMgPSBtb3JzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjE2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTYxOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjYxOTpcdHJldCA9IG1tODF4X3lhcHNfYWxsb2NfcGt0X2J1ZmZlcnMoeWFwcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MjAtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjIyLVx0XHRcdHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2MjM6XHRcdG1tODF4X3lhcHNfaHdfZmluaXNoKG1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjI0LVx0XHRtbTgxeF9yZWxlYXNlX2J1cyhtb3JzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MjgtXHQvKiBZQVBTIGlzIGJpLWRpcmVjdGlvbmFsICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2Mjk6XHRtbTgxeF9za2JxX2luaXQobW9ycywgXHUwMDI2eWFwcy1cdTAwM2VkYXRhX3J4X3EsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MzAtXHRcdFx0TU04MVhfSElGX0ZMQUdTX0RBVEEgfCBNTTgxWF9ISUZfRkxBR1NfRElSX1RPX0hPU1QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjMxOlx0bW04MXhfc2ticV9pbml0KG1vcnMsIFx1MDAyNnlhcHMtXHUwMDNlYmVhY29uX3EsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MzItXHRcdFx0TU04MVhfSElGX0ZMQUdTX0RBVEEgfCBNTTgxWF9ISUZfRkxBR1NfRElSX1RPX0hPU1QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjMzOlx0bW04MXhfc2ticV9pbml0KG1vcnMsIFx1MDAyNnlhcHMtXHUwMDNlbWdtdF9xLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjM0LVx0XHRcdE1NODFYX0hJRl9GTEFHU19EQVRBIHwgTU04MVhfSElGX0ZMQUdTX0RJUl9UT19IT1NUKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTYzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjYzNjpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoeWFwcy1cdTAwM2VkYXRhX3R4X3FzKTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjYzNzpcdFx0bW04MXhfc2ticV9pbml0KG1vcnMsIFx1MDAyNnlhcHMtXHUwMDNlZGF0YV90eF9xc1tpXSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTYzOC1cdFx0XHRcdE1NODFYX0hJRl9GTEFHU19EQVRBIHxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02NDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2NDI6XHRtbTgxeF9za2JxX2luaXQobW9ycywgXHUwMDI2eWFwcy1cdTAwM2VjbWRfcSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY0My1cdFx0XHRNTTgxWF9ISUZfRkxBR1NfQ09NTUFORCB8IE1NODFYX0hJRl9GTEFHU19ESVJfVE9fQ0hJUCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2NDQ6XHRtbTgxeF9za2JxX2luaXQobW9ycywgXHUwMDI2eWFwcy1cdTAwM2VjbWRfcmVzcF9xLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjQ1LVx0XHRcdE1NODFYX0hJRl9GTEFHU19DT01NQU5EIHwgTU04MVhfSElGX0ZMQUdTX0RJUl9UT19IT1NUKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY0Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY0NzpcdG1tODF4X3lhcHNfcV9jaGlwX2Z1bGxfdGltZXJfaW5pdCh5YXBzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY0ODpcdElOSVRfV09SSyhcdTAwMjZtb3JzLVx1MDAzZWhpZl93b3JrLCBtbTgxeF95YXBzX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjQ5Olx0SU5JVF9XT1JLKFx1MDAyNm1vcnMtXHUwMDNldHhfc3RhbGVfd29yaywgbW04MXhfeWFwc19zdGFsZV90eF93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY1MC1cdG1tODF4X3JlbGVhc2VfYnVzKG1vcnMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY1NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY1NTp2b2lkIG1tODF4X3lhcHNfZmluaXNoKHN0cnVjdCBtbTgxeCAqbW9ycylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY1Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02NTctXHRpbnQgaTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY1ODpcdHN0cnVjdCBtbTgxeF95YXBzICp5YXBzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjYwOlx0bW04MXhfeWFwc19od19lbmFibGVfaXJxcyhtb3JzLCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2NjI6XHR5YXBzID0gXHUwMDI2bW9ycy1cdTAwM2VoaWYudS55YXBzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjYzOlx0eWFwcy1cdTAwM2VmaW5pc2ggPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjY1Olx0bW04MXhfc2ticV9maW5pc2goXHUwMDI2eWFwcy1cdTAwM2VkYXRhX3J4X3EpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjY2Olx0bW04MXhfc2ticV9maW5pc2goXHUwMDI2eWFwcy1cdTAwM2ViZWFjb25fcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2Njc6XHRtbTgxeF9za2JxX2ZpbmlzaChcdTAwMjZ5YXBzLVx1MDAzZW1nbXRfcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2Njk6XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHlhcHMtXHUwMDNlZGF0YV90eF9xcyk7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjcwOlx0XHRtbTgxeF9za2JxX2ZpbmlzaChcdTAwMjZ5YXBzLVx1MDAzZWRhdGFfdHhfcXNbaV0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjcyOlx0bW04MXhfc2ticV9maW5pc2goXHUwMDI2eWFwcy1cdTAwM2VjbWRfcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2NzM6XHRtbTgxeF9za2JxX2ZpbmlzaChcdTAwMjZ5YXBzLVx1MDAzZWNtZF9yZXNwX3EpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6Njc1Olx0bW04MXhfeWFwc19xX2NoaXBfZnVsbF90aW1lcl9maW5pc2goeWFwcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02NzYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjgwOlx0bW04MXhfeWFwc19mcmVlX3BrdF9idWZmZXJzKHlhcHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjgxOlx0bW04MXhfeWFwc19od19maW5pc2gobW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02ODItfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6Njg0OnZvaWQgbW04MXhfeWFwc19mbHVzaF90eF9kYXRhKHN0cnVjdCBtbTgxeCAqbW9ycylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY4NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02ODYtXHRpbnQgaTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY4NzpcdHN0cnVjdCBtbTgxeF95YXBzICp5YXBzID0gXHUwMDI2bW9ycy1cdTAwM2VoaWYudS55YXBzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6Njg5Olx0bW04MXhfc2ticV90eF9mbHVzaChcdTAwMjZ5YXBzLVx1MDAzZWJlYWNvbl9xKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY5MDpcdG1tODF4X3NrYnFfdHhfZmx1c2goXHUwMDI2eWFwcy1cdTAwM2VtZ210X3EpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjkyOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRSh5YXBzLVx1MDAzZWRhdGFfdHhfcXMpOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY5MzpcdFx0bW04MXhfc2ticV90eF9mbHVzaChcdTAwMjZ5YXBzLVx1MDAzZWRhdGFfdHhfcXNbaV0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjk0LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY5Njp2b2lkIG1tODF4X3lhcHNfZmx1c2hfY21kcyhzdHJ1Y3QgbW04MXggKm1vcnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02OTcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6Njk4Olx0c3RydWN0IG1tODF4X3lhcHMgKnlhcHMgPSBcdTAwMjZtb3JzLVx1MDAzZWhpZi51LnlhcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02OTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo3MDA6XHRpZiAoeWFwcy1cdTAwM2VmbGFncyBcdTAwMjYgTU04MVhfSElGX0ZMQUdTX0NPTU1BTkQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjcwMTpcdFx0bW04MXhfc2ticV9maW5pc2goXHUwMDI2eWFwcy1cdTAwM2VjbWRfcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo3MDI6XHRcdG1tODF4X3NrYnFfZmluaXNoKFx1MDAyNnlhcHMtXHUwMDNlY21kX3Jlc3BfcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy03MDMtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmg9MTU9c3RydWN0IG1tODF4X2hpZl9vcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuaDoxNjpleHRlcm4gY29uc3Qgc3RydWN0IG1tODF4X2hpZl9vcHMgbW04MXhfeWFwc19vcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuaC0xNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5oOjE4OmVudW0gbW04MXhfeWFwc190b19jaGlwX3Ege1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmgtMTktXHRNTTgxWF9ZQVBTX1RYX1EgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5oLTI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmg6Mjc6c3RydWN0IG1tODF4X3lhcHNfcGt0IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5oLTI4LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5oOjI5Olx0ZW51bSBtbTgxeF95YXBzX3RvX2NoaXBfcSB0Y19xdWV1ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5oLTMwLX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuaC0zMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5oOjMyOnN0cnVjdCBtbTgxeF95YXBzIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5oLTMzLVx0c3RydWN0IG1tODF4ICptb3JzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmg6MzQ6XHRzdHJ1Y3QgbW04MXhfeWFwc19od19hdXhfZGF0YSAqYXV4X2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuaDozNTpcdGNvbnN0IHN0cnVjdCBtbTgxeF95YXBzX29wcyAqb3BzO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjE6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY1MjgKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFlBUFMgSGFyZHdhcmUgQ29kZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IHJlbGF0ZWQgdG8gdGhlc2UgcGFja2V0IHJlYWRzIHdpdGhpbiB0aGUgWUFQUyBoYXJkd2FyZS4gVGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgaXMgZGVmaW5pdGVseSB0aGUgc291cmNlIGNvZGUgZm9yIGB5YXBzX2h3LmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYG1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltYCBhbmQgYG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzYCBhcmUgYmVpbmcgdXRpbGl6ZWQuIEkmIzM5O2xsIG5lZWQgdG8gbG9jYXRlIHdoZXJlIGJvdGggZnVuY3Rpb25zIGFyZSAqZGVmaW5lZCosIHNvIEkgY2FuIHNlZSB0aGVpciBpbXBsZW1lbnRhdGlvbiwgYXMgd2VsbCBhcyB3aGVyZSB0aGV5IGFyZSBiZWluZyAqY2FsbGVkKiwgc28gSSBjYW4gdW5kZXJzdGFuZCB0aGUgZXhlY3V0aW9uIHBhdGhzIHRoYXQgbGVhZCB0byB0aGVpciBpbnZvY2F0aW9uLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiBob3cgdGhlIHJlYWQgb3BlcmF0aW9ucyBhcmUgYmVpbmcgaGFuZGxlZCBhbmQgd2hhdCYjMzk7cyB2YWxpZGF0aW5nIHRoZSBkZWxpbWl0ZXJzIGluIHRoZSBwcm9jZXNzLiBUaW1lIHRvIGZpcmUgdXAgdGhlIGVkaXRvciBhbmQgc3RhcnQgdHJhY2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjE6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDAwOlx0XG4gNDAxOlx0c3RhdGljIGJvb2wgbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW0odTMyIGRlbGltKVxuIDQwMjpcdHtcbiA0MDM6XHRcdHU4IGNhbGNfY3JjID0gbW04MXhfeWFwc19od19jcmMoZGVsaW0pO1xuIDQwNDpcdFx0aW50IHBrdF9zaXplID0gWUFQU19ERUxJTV9HRVRfUEhBTkRMRV9TSVpFKGRlbGltKTtcbiA0MDU6XHRcdGludCBwYWRkaW5nID0gWUFQU19ERUxJTV9HRVRfUEFERElORyhkZWxpbSk7XG4gNDA2Olx0XG4gNDA3Olx0XHRpZiAoY2FsY19jcmMgIT0gWUFQU19ERUxJTV9HRVRfQ1JDKGRlbGltKSlcbiA0MDg6XHRcdFx0cmV0dXJuIGZhbHNlO1xuIDQwOTpcdFxuIDQxMDpcdFx0aWYgKHBrdF9zaXplIFx1MDAzYz0gWUFQU19SRVNFUlZFRF9QQUdFX1NJWkUpXG4gNDExOlx0XHRcdHJldHVybiBmYWxzZTtcbiA0MTI6XHRcbiA0MTM6XHRcdGlmICgocGt0X3NpemUgJiM0MzsgcGFkZGluZykgXHUwMDNlIFlBUFNfTUFYX1BLVF9TSVpFX0JZVEVTKVxuIDQxNDpcdFx0XHRyZXR1cm4gZmFsc2U7XG4gNDE1Olx0XG4gNDE2Olx0XHQvKiBQa3QgbGVuZ3RoICYjNDM7IHBhZGRpbmcgc2hvdWxkIG5vdCByZXF1aXJlIG1vcmUgcGFkZGluZyAqL1xuIDQxNzpcdFx0aWYgKFlBUFNfQ0FMQ19QQURESU5HKHBrdF9zaXplKSAhPSBwYWRkaW5nKVxuIDQxODpcdFx0XHRyZXR1cm4gZmFsc2U7XG4gNDE5Olx0XG4gNDIwOlx0XHRyZXR1cm4gdHJ1ZTtcbiA0MjE6XHR9XG4gNDIyOlx0XG4gNDIzOlx0c3RhdGljIGludCBtbTgxeF9yZWFkX3BrdHNfaF9ieXRlc19yZW1haW5pbmcoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMpXG4gNDI0Olx0e1xuIDQyNTpcdFx0dTMyIGJ5dGVzX2luX3F1ZXVlID0geWFwcy1cdTAwM2VhdXhfZGF0YS1cdTAwM2VzdGF0dXNfcmVncy5mY19yeF9ieXRlc19pbl9xdWV1ZTtcbiA0MjY6XHRcdHUzMiBkZWxpbV9vdmVyaGVhZCA9XG4gNDI3Olx0XHRcdHlhcHMtXHUwMDNlYXV4X2RhdGEtXHUwMDNlc3RhdHVzX3JlZ3MuZmNfbnVtX3BrdHMgKiBzaXplb2YodTMyKTtcbiA0Mjg6XHRcdHUzMiByZXNlcnZlZF9ieXRlcyA9IHlhcHMtXHUwMDNlYXV4X2RhdGEtXHUwMDNlc3RhdHVzX3JlZ3MuZmNfbnVtX3BrdHMgKlxuIDQyOTpcdFx0XHRcdCAgICAgeWFwcy1cdTAwM2VhdXhfZGF0YS1cdTAwM2VyZXNlcnZlZF95YXBzX3BhZ2Vfc2l6ZTtcbiA0MzA6XHRcbiA0MzE6XHRcdGlmIChXQVJOX09OKGJ5dGVzX2luX3F1ZXVlIFx1MDAzZSBJTlRfTUFYKSB8fFxuIDQzMjpcdFx0ICAgIFdBUk5fT04oZGVsaW1fb3ZlcmhlYWQgXHUwMDNlIElOVF9NQVgpIHx8XG4gNDMzOlx0XHQgICAgV0FSTl9PTihyZXNlcnZlZF9ieXRlcyBcdTAwM2UgSU5UX01BWCkpXG4gNDM0Olx0XHRcdHJldHVybiAtRUlPO1xuIDQzNTpcdFxuIDQzNjpcdFx0cmV0dXJuIChpbnQpYnl0ZXNfaW5fcXVldWU7XG4gNDM3Olx0fVxuIDQzODpcdFxuIDQzOTpcdHN0YXRpYyBpbnQgbW04MXhfeWFwc19od19yZWFkX3BrdHMoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMsXG4gNDQwOlx0XHRcdFx0XHQgICBzdHJ1Y3QgbW04MXhfeWFwc19wa3QgKnBrdHMsXG4gNDQxOlx0XHRcdFx0XHQgICBpbnQgbnVtX3BrdHNfbWF4LCBpbnQgKm51bV9wa3RzX3JlY2VpdmVkKVxuIDQ0MjpcdHtcbiA0NDM6XHRcdGludCByZXQ7XG4gNDQ0Olx0XHRpbnQgaSA9IDA7XG4gNDQ1Olx0XHRjaGFyICpmcm9tX2NoaXBfYnVmZmVyX2FsaWduZWQgPVxuIDQ0NjpcdFx0XHRQVFJfQUxJR04oeWFwcy1cdTAwM2VhdXhfZGF0YS1cdTAwM2Vmcm9tX2NoaXBfYnVmZmVyLFxuIDQ0NzpcdFx0XHRcdCAgbW04MXhfYnVzX2dldF9hbGlnbm1lbnQoeWFwcy1cdTAwM2Vtb3JzKSk7XG4gNDQ4Olx0XHRjaGFyICpyZWFkX3B0ciA9IGZyb21fY2hpcF9idWZmZXJfYWxpZ25lZDtcbiA0NDk6XHRcdGludCBieXRlc19yZW1haW5pbmcgPSBtbTgxeF9yZWFkX3BrdHNfaF9ieXRlc19yZW1haW5pbmcoeWFwcyk7XG4gNDUwOlx0XHRib29sIGFnYWluID0gZmFsc2U7XG4gNDUxOlx0XG4gNDUyOlx0XHQqbnVtX3BrdHNfcmVjZWl2ZWQgPSAwO1xuIDQ1MzpcdFxuIDQ1NDpcdFx0aWYgKG51bV9wa3RzX21heCA9PSAwIHx8IGJ5dGVzX3JlbWFpbmluZyA9PSAwKVxuIDQ1NTpcdFx0XHRyZXR1cm4gMDtcbiA0NTY6XHRcdGlmIChieXRlc19yZW1haW5pbmcgXHUwMDNjIDApXG4gNDU3Olx0XHRcdHJldHVybiBieXRlc19yZW1haW5pbmc7XG4gNDU4Olx0XHRpZiAoIUlTX0FMSUdORUQoYnl0ZXNfcmVtYWluaW5nLCBzaXplb2YodTMyKSkpIHtcbiA0NTk6XHRcdFx0ZGV2X3dhcm4oeWFwcy1cdTAwM2Vtb3JzLVx1MDAzZWRldiwgXCYjMzQ7eWFwcyB0cnVuY2F0ZWQgZGVsaW1pdGVyXCYjMzQ7KTtcbiA0NjA6XHRcdFx0cmV0dXJuIC1FSU87XG4gNDYxOlx0XHR9XG4gNDYyOlx0XG4gNDYzOlx0XHRpZiAoYnl0ZXNfcmVtYWluaW5nIFx1MDAzZSBZQVBTX0hXX1dJTkRPV19TSVpFX0JZVEVTKSB7XG4gNDY0Olx0XHRcdGJ5dGVzX3JlbWFpbmluZyA9IFlBUFNfSFdfV0lORE9XX1NJWkVfQllURVM7XG4gNDY1Olx0XHRcdGFnYWluID0gdHJ1ZTtcbiA0NjY6XHRcdH1cbiA0Njc6XHRcbiA0Njg6XHRcdC8qXG4gNDY5Olx0XHQgKiBUaGlzIGlzIG1vcmUgY29hcnNlLWdyYWluZWQgdGhhbiBpdCBuZWVkcyB0byBiZSAtIG9uY2UgdGhlIGRhdGFcbiA0NzA6XHRcdCAqIGlzIHJlYWQgaW50byBhIGxvY2FsIGJ1ZmZlciB0aGUgbG9jayBjYW4gYmUgcmVsZWFzZWQsIGhvd2V2ZXJcbiA0NzE6XHRcdCAqIGFjY2VzcyB0byBmcm9tX2NoaXBfYnVmZmVyIHdpbGwgbmVlZCB0byBiZSBwcm90ZWN0ZWQgd2l0aCBpdHNcbiA0NzI6XHRcdCAqIG93biBsb2NrXG4gNDczOlx0XHQgKi9cbiA0NzQ6XHRcdHJldCA9IG1tODF4X3lhcHNfaHdfbG9jayh5YXBzKTtcbiA0NzU6XHRcdGlmIChyZXQpIHtcbiA0NzY6XHRcdFx0ZGV2X2RiZyh5YXBzLVx1MDAzZW1vcnMtXHUwMDNlZGV2LCBcJiMzNDt5YXBzIGxvY2sgZmFpbGVkICVkXCYjMzQ7LCByZXQpO1xuIDQ3NzpcdFx0XHRyZXR1cm4gcmV0O1xuIDQ3ODpcdFx0fVxuIDQ3OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODE2MwoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRoaW5raW5nIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBgeWFwc19ody5jYCBDb2RlKioKCk9rYXksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgaGVyZSwgZXNwZWNpYWxseSBhcm91bmQgaG93IHBhY2tldCByZWFkaW5nIGlzIGhhbmRsZWQuIE15IHByaW1hcnkgaW50ZXJlc3QgaXMgaW4gdGhlIGZ1bmN0aW9ucyBgbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW1gIGFuZCBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgLiBJJiMzOTttIHN0YXJ0aW5nIGJ5IG1lbnRhbGx5IHRyYWNpbmcgd2hlcmUgdGhvc2UgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSAqdXNlZCogd2l0aGluIHRoZSBgeWFwc19ody5jYCBmaWxlLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGVpciBjYWxsZXJzLiBBcmUgdGhleSBjYWxsZWQgaW4gc2VxdWVuY2U/IEFyZSB0aGV5IG9ubHkgY2FsbGVkIGZyb20gYSBzaW5nbGUgcGxhY2UsIG9yIG11bHRpcGxlIHNwb3RzPyBLbm93aW5nIHRoZSBjYWxsIGdyYXBoIHdpbGwgcmVhbGx5IGhlbHAgbWUgdW5kZXJzdGFuZCBob3cgZGF0YSBmbG93cyB0aHJvdWdoIHRoaXMgbW9kdWxlLCBhbmQgaWRlbnRpZnkgYW55IHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBjb250ZXh0cywgdGhlIGNhbGxpbmcgcGFyYW1ldGVycywgZXZlcnl0aGluZy4gSSB3YW50IGEgc29saWQgbWVudGFsIG1vZGVsIG9mIGhvdyB0aGVzZSBwYWNrZXQgcmVhZGluZyBmdW5jdGlvbnMgZml0IGludG8gdGhlIGxhcmdlciBZQVBTIGhhcmR3YXJlIGludGVyYWN0aW9uIHNjaGVtZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDgwOlx0XHQvKiBSZWFkIGFsbCBhdmFpbGFibGUgcGFja2V0cyB0byB0aGUgYnVmZmVyICovXG4gNDgxOlx0XHRyZXQgPSBtbTgxeF9kbV9yZWFkKHlhcHMtXHUwMDNlbW9ycywgeWFwcy1cdTAwM2VhdXhfZGF0YS1cdTAwM2V5c2xfYWRkcixcbiA0ODI6XHRcdFx0XHQgICAgZnJvbV9jaGlwX2J1ZmZlcl9hbGlnbmVkLCBieXRlc19yZW1haW5pbmcpO1xuIDQ4MzpcdFxuIDQ4NDpcdFx0aWYgKHJldClcbiA0ODU6XHRcdFx0Z290byBleGl0O1xuIDQ4NjpcdFxuIDQ4NzpcdFx0LyogU3BsaXQgc2VyaWFsaXNlZCBwYWNrZXRzIGZyb20gYnVmZmVyICovXG4gNDg4Olx0XHR3aGlsZSAoaSBcdTAwM2MgbnVtX3BrdHNfbWF4IFx1MDAyNlx1MDAyNiBieXRlc19yZW1haW5pbmcgXHUwMDNlIDApIHtcbiA0ODk6XHRcdFx0dTMyIGRlbGltO1xuIDQ5MDpcdFx0XHRpbnQgdG90YWxfbGVuO1xuIDQ5MTpcdFx0XHRpbnQgcGt0X3NpemU7XG4gNDkyOlx0XG4gNDkzOlx0XHRcdGRlbGltID0gbGUzMl90b19jcHUoKigoX19sZTMyICopcmVhZF9wdHIpKTtcbiA0OTQ6XHRcdFx0cmVhZF9wdHIgJiM0Mzs9IHNpemVvZihkZWxpbSk7XG4gNDk1Olx0XHRcdGJ5dGVzX3JlbWFpbmluZyAtPSBzaXplb2YoZGVsaW0pO1xuIDQ5NjpcdFxuIDQ5NzpcdFx0XHQvKiBFbmQgb2Ygc3RyZWFtICovXG4gNDk4Olx0XHRcdGlmICghZGVsaW0pXG4gNDk5Olx0XHRcdFx0YnJlYWs7XG4gNTAwOlx0XG4gNTAxOlx0XHRcdGlmICghbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW0oZGVsaW0pKSB7XG4gNTAyOlx0XHRcdFx0LypcbiA1MDM6XHRcdFx0XHQgKiBUaGlzIHdpbGwgc3RhcnQgYSBodW50IGZvciBhIHZhbGlkIGRlbGltaXRlci4gR2l2ZW5cbiA1MDQ6XHRcdFx0XHQgKiB0aGUgQ1JDIGlzIG9ubHkgNyBiaXQgaXQmIzM5O3MgcG9zc2libGUgdG8gZmluZCBhblxuIDUwNTpcdFx0XHRcdCAqIGludmFsaWQgYmxvY2sgd2l0aCBhIHZhbGlkIGRlbGltaXRlciwgbGVhZGluZyB0b1xuIDUwNjpcdFx0XHRcdCAqIGRlc3luY2hyb25pc2F0aW9uLlxuIDUwNzpcdFx0XHRcdCAqL1xuIDUwODpcdFx0XHRcdGRldl93YXJuKHlhcHMtXHUwMDNlbW9ycy1cdTAwM2VkZXYsIFwmIzM0O3lhcHMgaW52YWxpZCBkZWxpbVwmIzM0Oyk7XG4gNTA5Olx0XHRcdFx0YnJlYWs7XG4gNTEwOlx0XHRcdH1cbiA1MTE6XHRcbiA1MTI6XHRcdFx0LyogVG90YWwgbGVuZ3RoIGluIGNoaXAgKi9cbiA1MTM6XHRcdFx0cGt0X3NpemUgPSBZQVBTX0RFTElNX0dFVF9QS1RfU0laRShkZWxpbSk7XG4gNTE0Olx0XHRcdHRvdGFsX2xlbiA9IHBrdF9zaXplICYjNDM7IFlBUFNfREVMSU1fR0VUX1BBRERJTkcoZGVsaW0pO1xuIDUxNTpcdFxuIDUxNjpcdFx0XHRpZiAocGt0c1tpXS5za2IpXG4gNTE3Olx0XHRcdFx0ZGV2X2Vycih5YXBzLVx1MDAzZW1vcnMtXHUwMDNlZGV2LCBcJiMzNDt5YXBzIHBhY2tldCBsZWFrXCYjMzQ7KTtcbiA1MTg6XHRcbiA1MTk6XHRcdFx0LyogU0tCIGRvZXNuJiMzOTt0IHdhbnQgcGFkZGluZyAqL1xuIDUyMDpcdFx0XHRwa3RzW2ldLnNrYiA9IGRldl9hbGxvY19za2IocGt0X3NpemUpO1xuIDUyMTpcdFx0XHRpZiAoIXBrdHNbaV0uc2tiKSB7XG4gNTIyOlx0XHRcdFx0cmV0ID0gLUVOT01FTTtcbiA1MjM6XHRcdFx0XHRkZXZfZXJyKHlhcHMtXHUwMDNlbW9ycy1cdTAwM2VkZXYsIFwmIzM0O3lhcHMgbm8gbWVtIGZvciBza2JcJiMzNDspO1xuIDUyNDpcdFx0XHRcdGdvdG8gZXhpdDtcbiA1MjU6XHRcdFx0fVxuIDUyNjpcdFx0XHRza2JfcHV0KHBrdHNbaV0uc2tiLCBwa3Rfc2l6ZSk7XG4gNTI3Olx0XG4gNTI4Olx0XHRcdGlmICh0b3RhbF9sZW4gXHUwMDNjPSBieXRlc19yZW1haW5pbmcpIHtcbiA1Mjk6XHRcdFx0XHRtZW1jcHkocGt0c1tpXS5za2ItXHUwMDNlZGF0YSwgcmVhZF9wdHIsIHBrdF9zaXplKTtcbiA1MzA6XHRcdFx0XHRyZWFkX3B0ciAmIzQzOz0gdG90YWxfbGVuO1xuIDUzMTpcdFx0XHRcdGJ5dGVzX3JlbWFpbmluZyAtPSB0b3RhbF9sZW47XG4gNTMyOlx0XHRcdH0gZWxzZSB7XG4gNTMzOlx0XHRcdFx0Y29uc3QgaW50IHJlYWRfb3ZlcmhhbmdfbGVuID1cbiA1MzQ6XHRcdFx0XHRcdHRvdGFsX2xlbiAtIGJ5dGVzX3JlbWFpbmluZztcbiA1MzU6XHRcdFx0XHRjb25zdCBpbnQgcGt0X292ZXJoYW5nX2xlbiA9IHBrdF9zaXplIC0gYnl0ZXNfcmVtYWluaW5nO1xuIDUzNjpcdFxuIDUzNzpcdFx0XHRcdG1lbWNweShwa3RzW2ldLnNrYi1cdTAwM2VkYXRhLCByZWFkX3B0ciwgYnl0ZXNfcmVtYWluaW5nKTtcbiA1Mzg6XHRcdFx0XHRyZWFkX3B0ciA9IGZyb21fY2hpcF9idWZmZXJfYWxpZ25lZDtcbiA1Mzk6XHRcbiA1NDA6XHRcdFx0XHRyZXQgPSBtbTgxeF9kbV9yZWFkKFxuIDU0MTpcdFx0XHRcdFx0eWFwcy1cdTAwM2Vtb3JzLFxuIDU0MjpcdFx0XHRcdFx0LyogT2Zmc2V0IGJ5IDQgdG8gYXZvaWQgcmV0cnkgbG9naWMgKi9cbiA1NDM6XHRcdFx0XHRcdHlhcHMtXHUwMDNlYXV4X2RhdGEtXHUwMDNleXNsX2FkZHIgJiM0MzsgNCwgcmVhZF9wdHIsXG4gNTQ0Olx0XHRcdFx0XHRyZWFkX292ZXJoYW5nX2xlbik7XG4gNTQ1Olx0XG4gNTQ2Olx0XHRcdFx0aWYgKHJldClcbiA1NDc6XHRcdFx0XHRcdGdvdG8gZXhpdDtcbiA1NDg6XHRcbiA1NDk6XHRcdFx0XHRtZW1jcHkocGt0c1tpXS5za2ItXHUwMDNlZGF0YSAmIzQzOyBieXRlc19yZW1haW5pbmcsIHJlYWRfcHRyLFxuIDU1MDpcdFx0XHRcdCAgICAgICBwa3Rfb3ZlcmhhbmdfbGVuKTtcbiA1NTE6XHRcdFx0XHRyZWFkX3B0ciAmIzQzOz0gcmVhZF9vdmVyaGFuZ19sZW47XG4gNTUyOlx0XHRcdFx0Ynl0ZXNfcmVtYWluaW5nID0gMDtcbiA1NTM6XHRcdFx0fVxuIDU1NDpcdFxuIDU1NTpcdFx0XHQqbnVtX3BrdHNfcmVjZWl2ZWQgJiM0Mzs9IDE7XG4gNTU2Olx0XHRcdGkmIzQzOyYjNDM7O1xuIDU1NzpcdFx0fVxuIDU1ODpcdFxuIDU1OTpcdFx0aWYgKGFnYWluKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTY3OAoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIGB5YXBzX2h3X3JlYWRfcGt0c2AgaW4gYHlhcHNfaHcuY2AqKgoKT2theSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24gb2YgYG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzYCB3aXRoaW4gdGhlIGB5YXBzX2h3LmNgIG1vZHVsZS4gSSYjMzk7bSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IGludG8gdGhlIGNvZGUsIGFuZCBmb2N1cyBvbiBsaW5lcyA1NTAgdGhyb3VnaCA2MDAuIFRoYXQmIzM5O3MgdXN1YWxseSBhIGdvb2QgcmFuZ2UgdG8gc3RhcnQgd2l0aCBmb3IgY29yZSBmdW5jdGlvbiBjYWxscyBhbmQgaW5pdGlhbGl6YXRpb24gcm91dGluZXMuIEhvcGVmdWxseSwgdGhlIGxpbmtpbmcgaXMgY2xlYXIgYW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IHByb3ZpZGVzIHN1ZmZpY2llbnQgY2x1ZXMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1NjA6XHRcdFx0cmV0ID0gLUVBR0FJTjtcbiA1NjE6XHRcbiA1NjI6XHRleGl0OlxuIDU2MzpcdFx0bW04MXhfeWFwc19od191bmxvY2soeWFwcyk7XG4gNTY0Olx0XHRyZXR1cm4gcmV0O1xuIDU2NTpcdH1cbiA1NjY6XHRcbiA1Njc6XHRzdGF0aWMgaW50IG1tODF4X3lhcHNfaHdfdXBkYXRlX3N0YXR1cyhzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcylcbiA1Njg6XHR7XG4gNTY5Olx0XHRpbnQgcmV0O1xuIDU3MDpcdFx0aW50IHRjX3RvdGFsX3BrdF9jb3VudDtcbiA1NzE6XHRcdHVuc2lnbmVkIGxvbmcgcmVnX3JlYWRfdGltZW91dDtcbiA1NzI6XHRcdHN0cnVjdCBtbTgxeF95YXBzX3N0YXR1c19yZWdzICpyID0gXHUwMDI2eWFwcy1cdTAwM2VhdXhfZGF0YS1cdTAwM2VzdGF0dXNfcmVncztcbiA1NzM6XHRcdHN0cnVjdCBtbTgxeF95YXBzX2h3X3N0YXR1c19yZWdzICpod19yID0gXHUwMDI2eWFwcy1cdTAwM2VhdXhfZGF0YS1cdTAwM2Vod19zdGF0dXNfcmVncztcbiA1NzQ6XHRcbiA1NzU6XHRcdHJldCA9IG1tODF4X3lhcHNfaHdfbG9jayh5YXBzKTtcbiA1NzY6XHRcdGlmIChyZXQpIHtcbiA1Nzc6XHRcdFx0ZGV2X2RiZyh5YXBzLVx1MDAzZW1vcnMtXHUwMDNlZGV2LCBcJiMzNDt5YXBzIGxvY2sgZmFpbGVkICVkXCYjMzQ7LCByZXQpO1xuIDU3ODpcdFx0XHRyZXR1cm4gcmV0O1xuIDU3OTpcdFx0fVxuIDU4MDpcdFxuIDU4MTpcdFx0cmVnX3JlYWRfdGltZW91dCA9IGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcygxMDApO1xuIDU4MjpcdFx0ZG8ge1xuIDU4MzpcdFx0XHRpZiAodGltZV9hZnRlcihqaWZmaWVzLCByZWdfcmVhZF90aW1lb3V0KSkge1xuIDU4NDpcdFx0XHRcdGRldl9lcnIoeWFwcy1cdTAwM2Vtb3JzLVx1MDAzZWRldixcbiA1ODU6XHRcdFx0XHRcdFwmIzM0O3RpbWVkIG91dCByZWFkaW5nIHN0YXR1cyByZWdpc3RlcnM6ICVkXCYjMzQ7LCByZXQpO1xuIDU4NjpcdFx0XHRcdHJldCA9IC1FVElNRURPVVQ7XG4gNTg3Olx0XHRcdFx0YnJlYWs7XG4gNTg4Olx0XHRcdH1cbiA1ODk6XHRcbiA1OTA6XHRcdFx0cmV0ID0gbW04MXhfZG1fcmVhZCh5YXBzLVx1MDAzZW1vcnMsXG4gNTkxOlx0XHRcdFx0XHQgICAgeWFwcy1cdTAwM2VhdXhfZGF0YS1cdTAwM2VzdGF0dXNfcmVnc19hZGRyLFxuIDU5MjpcdFx0XHRcdFx0ICAgICh1OCAqKWh3X3IsIHNpemVvZigqaHdfcikpO1xuIDU5MzpcdFx0fSB3aGlsZSAoIXJldCBcdTAwMjZcdTAwMjYgbGUzMl90b19jcHUoaHdfci1cdTAwM2Vsb2NrKSk7XG4gNTk0Olx0XG4gNTk1Olx0XHRpZiAocmV0KSB7XG4gNTk2Olx0XHRcdGlmIChyZXQgIT0gLUVOT0RFVikge1xuIDU5NzpcdFx0XHRcdGRldl9lcnIoeWFwcy1cdTAwM2Vtb3JzLVx1MDAzZWRldixcbiA1OTg6XHRcdFx0XHRcdFwmIzM0O2Vycm9yIHJlYWRpbmcgeWFwcyBzdGF0dXMgcmVnaXN0ZXJzOiAlZFwmIzM0OywgcmV0KTtcbiA1OTk6XHRcdFx0fVxuIDYwMDpcdFx0XHRnb3RvIGV4aXRfdW5sb2NrO1xuIDYwMTpcdFx0fVxuIDYwMjpcdFxuIDYwMzpcdFx0ci1cdTAwM2V0Y190eF9wb29sX251bV9wYWdlcyA9IGxlMzJfdG9fY3B1KGh3X3ItXHUwMDNldGNfdHhfcG9vbF9udW1fcGFnZXMpO1xuIDYwNDpcdFx0ci1cdTAwM2V0Y19jbWRfcG9vbF9udW1fcGFnZXMgPSBsZTMyX3RvX2NwdShod19yLVx1MDAzZXRjX2NtZF9wb29sX251bV9wYWdlcyk7XG4gNjA1Olx0XHRyLVx1MDAzZXRjX2JlYWNvbl9wb29sX251bV9wYWdlcyA9IGxlMzJfdG9fY3B1KGh3X3ItXHUwMDNldGNfYmVhY29uX3Bvb2xfbnVtX3BhZ2VzKTtcbiA2MDY6XHRcdHItXHUwMDNldGNfbWdtdF9wb29sX251bV9wYWdlcyA9IGxlMzJfdG9fY3B1KGh3X3ItXHUwMDNldGNfbWdtdF9wb29sX251bV9wYWdlcyk7XG4gNjA3Olx0XHRyLVx1MDAzZWZjX3J4X3Bvb2xfbnVtX3BhZ2VzID0gbGUzMl90b19jcHUoaHdfci1cdTAwM2VmY19yeF9wb29sX251bV9wYWdlcyk7XG4gNjA4Olx0XHRyLVx1MDAzZWZjX3Jlc3BfcG9vbF9udW1fcGFnZXMgPSBsZTMyX3RvX2NwdShod19yLVx1MDAzZWZjX3Jlc3BfcG9vbF9udW1fcGFnZXMpO1xuIDYwOTpcdFx0ci1cdTAwM2VmY190eF9zdHNfcG9vbF9udW1fcGFnZXMgPSBsZTMyX3RvX2NwdShod19yLVx1MDAzZWZjX3R4X3N0c19wb29sX251bV9wYWdlcyk7XG4gNjEwOlx0XHRyLVx1MDAzZWZjX2F1eF9wb29sX251bV9wYWdlcyA9IGxlMzJfdG9fY3B1KGh3X3ItXHUwMDNlZmNfYXV4X3Bvb2xfbnVtX3BhZ2VzKTtcbiA2MTE6XHRcdHItXHUwMDNldGNfdHhfbnVtX3BrdHMgPSBsZTMyX3RvX2NwdShod19yLVx1MDAzZXRjX3R4X251bV9wa3RzKTtcbiA2MTI6XHRcdHItXHUwMDNldGNfY21kX251bV9wa3RzID0gbGUzMl90b19jcHUoaHdfci1cdTAwM2V0Y19jbWRfbnVtX3BrdHMpO1xuIDYxMzpcdFx0ci1cdTAwM2V0Y19iZWFjb25fbnVtX3BrdHMgPSBsZTMyX3RvX2NwdShod19yLVx1MDAzZXRjX2JlYWNvbl9udW1fcGt0cyk7XG4gNjE0Olx0XHRyLVx1MDAzZXRjX21nbXRfbnVtX3BrdHMgPSBsZTMyX3RvX2NwdShod19yLVx1MDAzZXRjX21nbXRfbnVtX3BrdHMpO1xuIDYxNTpcdFx0ci1cdTAwM2VmY19udW1fcGt0cyA9IGxlMzJfdG9fY3B1KGh3X3ItXHUwMDNlZmNfbnVtX3BrdHMpO1xuIDYxNjpcdFx0ci1cdTAwM2VmY19kb25lX251bV9wa3RzID0gbGUzMl90b19jcHUoaHdfci1cdTAwM2VmY19kb25lX251bV9wa3RzKTtcbiA2MTc6XHRcdHItXHUwMDNlZmNfcnhfYnl0ZXNfaW5fcXVldWUgPSBsZTMyX3RvX2NwdShod19yLVx1MDAzZWZjX3J4X2J5dGVzX2luX3F1ZXVlKTtcbiA2MTg6XHRcdHItXHUwMDNldGNfZGVsaW1fY3JjX2ZhaWxfZGV0ZWN0ZWQgPSBsZTMyX3RvX2NwdShod19yLVx1MDAzZXRjX2RlbGltX2NyY19mYWlsX2RldGVjdGVkKTtcbiA2MTk6XHRcdHItXHUwMDNlbG9jayA9IGxlMzJfdG9fY3B1KGh3X3ItXHUwMDNlbG9jayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMjgyCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBjb2RlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgIGZ1bmN0aW9uIGZpdHMgaW50byB0aGUgYmlnZ2VyIHBpY3R1cmUsIHNvIG15IGZpcnN0IHN0ZXAgaXMgdG8gdHJhY2Ugd2hlcmUgaXQmIzM5O3MgYmVpbmcgYXNzaWduZWQgdG8gYG9wc2AuIFRoYXQmIzM5O3MgdGhlIGNydWNpYWwgbGluay4gSSYjMzk7bGwgbmVlZCB0byBnbyB0aHJvdWdoIGB5YXBzX2h3LmNgIGFuZCBmaWd1cmUgb3V0IHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgYXNzaWduZWQsIHRoaXMgYG9wc2Agc3RydWN0dXJlLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIHdpbGwgYmUgcmV2ZWFsZWQuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGluc3RhbnRpYXRpb24sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBgb3BzYCB2YXJpYWJsZSBzaWduaWZpZXMsIGFuZCB3aGF0IG90aGVyIGZ1bmN0aW9ucyBhcmUgaW5jbHVkZWQgaW4gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2NjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDY2MDpcdFx0aWYgKCF5YXBzLVx1MDAzZWF1eF9kYXRhKSB7XG4gNjYxOlx0XHRcdHJldCA9IC1FTk9NRU07XG4gNjYyOlx0XHRcdGdvdG8gZXJyX2V4aXQ7XG4gNjYzOlx0XHR9XG4gNjY0Olx0XG4gNjY1Olx0XHR5YXBzLVx1MDAzZWF1eF9kYXRhLVx1MDAzZXRvX2NoaXBfYnVmZmVyID1cbiA2NjY6XHRcdFx0a3phbGxvYyhZQVBTX0hXX1dJTkRPV19TSVpFX0JZVEVTICYjNDM7IGFsaWdubWVudCAtIDEsIEdGUF9LRVJORUwpO1xuIDY2NzpcdFx0aWYgKCF5YXBzLVx1MDAzZWF1eF9kYXRhLVx1MDAzZXRvX2NoaXBfYnVmZmVyKSB7XG4gNjY4Olx0XHRcdHJldCA9IC1FTk9NRU07XG4gNjY5Olx0XHRcdGdvdG8gZXJyX2V4aXQ7XG4gNjcwOlx0XHR9XG4gNjcxOlx0XG4gNjcyOlx0XHR5YXBzLVx1MDAzZWF1eF9kYXRhLVx1MDAzZWZyb21fY2hpcF9idWZmZXIgPVxuIDY3MzpcdFx0XHRremFsbG9jKFlBUFNfSFdfV0lORE9XX1NJWkVfQllURVMgJiM0MzsgYWxpZ25tZW50IC0gMSwgR0ZQX0tFUk5FTCk7XG4gNjc0Olx0XHRpZiAoIXlhcHMtXHUwMDNlYXV4X2RhdGEtXHUwMDNlZnJvbV9jaGlwX2J1ZmZlcikge1xuIDY3NTpcdFx0XHRyZXQgPSAtRU5PTUVNO1xuIDY3NjpcdFx0XHRnb3RvIGVycl9leGl0O1xuIDY3NzpcdFx0fVxuIDY3ODpcdFxuIDY3OTpcdFx0aWYgKCFJU19BTElHTkVEKCh1aW50cHRyX3QpXHUwMDI2eWFwcy1cdTAwM2VhdXhfZGF0YS1cdTAwM2VzdGF0dXNfcmVncywgYWxpZ25tZW50KSkge1xuIDY4MDpcdFx0XHRkZXZfd2Fybihtb3JzLVx1MDAzZWRldixcbiA2ODE6XHRcdFx0XHQgXCYjMzQ7U3RhdHVzIHJlZ2lzdGVycyBhcmUgbm90IGFsaWduZWQgdG8gJWQgYnl0ZXNcJiMzNDssXG4gNjgyOlx0XHRcdFx0IGFsaWdubWVudCk7XG4gNjgzOlx0XHR9XG4gNjg0Olx0XG4gNjg1Olx0XHR5YXBzLVx1MDAzZW9wcyA9IFx1MDAyNm1tODF4X3lhcHNfaHdfb3BzO1xuIDY4NjpcdFx0cmV0dXJuIHJldDtcbiA2ODc6XHRcbiA2ODg6XHRlcnJfZXhpdDpcbiA2ODk6XHRcdG1tODF4X3lhcHNfaHdfZmluaXNoKG1vcnMpO1xuIDY5MDpcdFx0cmV0dXJuIHJldDtcbiA2OTE6XHR9XG4gNjkyOlx0XG4gNjkzOlx0dm9pZCBtbTgxeF95YXBzX2h3X2ZpbmlzaChzdHJ1Y3QgbW04MXggKm1vcnMpXG4gNjk0Olx0e1xuIDY5NTpcdFx0c3RydWN0IG1tODF4X3lhcHMgKnlhcHM7XG4gNjk2Olx0XG4gNjk3Olx0XHR5YXBzID0gXHUwMDI2bW9ycy1cdTAwM2VoaWYudS55YXBzO1xuIDY5ODpcdFx0aWYgKHlhcHMtXHUwMDNlYXV4X2RhdGEpIHtcbiA2OTk6XHRcdFx0a2ZyZWUoeWFwcy1cdTAwM2VhdXhfZGF0YS1cdTAwM2Vmcm9tX2NoaXBfYnVmZmVyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIxMjEKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIGBtbTgxeF95YXBzX2h3X29wc2AgU3RydWN0dXJlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtbTgxeF95YXBzX2h3X29wc2AgdGhpbmcuLi4gSW1tZWRpYXRlbHksIG15IHRob3VnaHQgaXMsIGxldCYjMzk7cyB0cmFjayB0aGlzIGRvd24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBzdHJ1Y3R1cmUgaXMgYW5kIGhvdyBpdCYjMzk7cyB1c2VkLiBTaW5jZSBpdCYjMzk7cyBsaWtlbHkgYSBoYXJkd2FyZSBvcGVyYXRpb25zIHN0cnVjdHVyZSwgYW5kIGl0IGhhcyAmIzM0O3lhcHNfaHcmIzM0OyBpbiB0aGUgbmFtZSwgbXkgaW5zdGluY3QgaXMgdG8ganVtcCByaWdodCBpbnRvIHRoZSBgeWFwc19ody5jYCBmaWxlLiBTZWFyY2hpbmcgZm9yIHRoYXQgc3ltYm9sIHRoZXJlIGlzIHByb2JhYmx5IHRoZSBiZXN0IHN0YXJ0aW5nIHBvaW50LiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbTgxeF95YXBzX2h3X29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jPTU2Nz1zdGF0aWMgaW50IG1tODF4X3lhcHNfaHdfdXBkYXRlX3N0YXR1cyhzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYy02NDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYzo2NDU6c3RhdGljIGNvbnN0IHN0cnVjdCBtbTgxeF95YXBzX29wcyBtbTgxeF95YXBzX2h3X29wcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jLTY0Ni1cdC53cml0ZV9wa3RzID0gbW04MXhfeWFwc19od193cml0ZV9wa3RzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jPTY1MT1pbnQgbW04MXhfeWFwc19od19pbml0KHN0cnVjdCBtbTgxeCAqbW9ycylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYy02ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYzo2ODU6XHR5YXBzLVx1MDAzZW9wcyA9IFx1MDAyNm1tODF4X3lhcHNfaHdfb3BzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMtNjg2LVx0cmV0dXJuIHJldDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI3MDkKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGBtbTgxeGAgVVNCIHByb2JpbmcgcHJvY2Vzcy4gVGltZSB0byBwdWxsIHVwIHRoZSBzb3VyY2UgY29kZSDigJMgc3BlY2lmaWNhbGx5LCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuY2AuIEkmIzM5O20gaG9waW5nIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIFVTQiBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIGRldGVjdGlvbiB3aXRoaW4gdGhhdCBwYXJ0aWN1bGFyIG1vZHVsZS4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGtlcm5lbCBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUsIHRoZSBzZXF1ZW5jZSBvZiBldmVudHMsIGFuZCBhbnkgcXVpcmtzIHNwZWNpZmljIHRvIHRoaXMgYG1tODF4YCBpbXBsZW1lbnRhdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHNlY3JldHMgaXQgaG9sZHMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0LypcbiAgIDM6XHQgKiBDb3B5cmlnaHQgKGMpIDIwMTctMjAyNiBNb3JzZSBNaWNyb1xuICAgNDpcdCAqL1xuICAgNTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2ppZmZpZXMuaFx1MDAzZVxuICAgNjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4gICA3Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvdXNiLmhcdTAwM2VcbiAgIDg6XHQjaW5jbHVkZSBcJiMzNDtoaWYuaFwmIzM0O1xuICAgOTpcdCNpbmNsdWRlIFwmIzM0O2J1cy5oXCYjMzQ7XG4gIDEwOlx0I2luY2x1ZGUgXCYjMzQ7bWFjLmhcJiMzNDtcbiAgMTE6XHQjaW5jbHVkZSBcJiMzNDtjb3JlLmhcJiMzNDtcbiAgMTI6XHRcbiAgMTM6XHQvKlxuICAxNDpcdCAqIFVSQiB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gSWYgYW4gVVJCIGRvZXMgbm90IGNvbXBsZXRlIHdpdGhpbiB0aGlzXG4gIDE1Olx0ICogdGltZSwgaXQgd2lsbCBiZSBraWxsZWQuIFRoaXMgdGltZW91dCBuZWVkcyB0byBhY2NvdW50IGZvciBVU0Igc3VzcGVuZGFuZFxuICAxNjpcdCAqIHJlc3VtZSBvY2N1cnJpbmcgYmVmb3JlIHRoZSBVUkIgY2FuIGJlIHRyYW5zZmVycmVkLCBhbmQgaXQgYWxzbyBuZWVkcyB0b1xuICAxNzpcdCAqIGFjY291bnQgZm9yIHRyYW5zZmVycmluZyBVU0JfTUFYX1RSQU5TRkVSX1NJWkUgYnl0ZXMgb3ZlciBhIHBvdGVudGlhbGx5XG4gIDE4Olx0ICogc2xvdywgY29uZ2VzdGVkIFVTQiBGdWxsIFNwZWVkIGxpbmsuXG4gIDE5Olx0ICovXG4gIDIwOlx0I2RlZmluZSBVUkJfVElNRU9VVF9NUyAyNTBcbiAgMjE6XHRcbiAgMjI6XHQvKiBIaWdoIHNwZWVkIFVTQiAyXig0LTEpICogMTI1dXNlYyA9IDFtc2VjICovXG4gIDIzOlx0I2RlZmluZSBNTTgxWF9VU0JfSU5URVJSVVBUX0lOVEVSVkFMIDRcbiAgMjQ6XHRcbiAgMjU6XHQvKiBNYXggYnl0ZXMgcGVyIFVTQiByZWFkL3dyaXRlICovXG4gIDI2Olx0I2RlZmluZSBVU0JfTUFYX1RSQU5TRkVSX1NJWkUgKDE2ICogMTAyNClcbiAgMjc6XHRcbiAgMjg6XHQvKiBJTlQgRVAgYnVmZmVyIHNpemUgKi9cbiAgMjk6XHQjZGVmaW5lIE1NODFYX0VQX0lOVF9CVUZGRVJfU0laRSA4XG4gIDMwOlx0XG4gIDMxOlx0LyogTW9yc2UgdmVuZG9yIElEcyovXG4gIDMyOlx0I2RlZmluZSBNTTgxWF9WRU5ET1JfSUQgMHgzMjViXG4gIDMzOlx0I2RlZmluZSBNTTgxWF9NTTgxMFhfUFJPRFVDVF9JRCAweDgxMDBcbiAgMzQ6XHRcbiAgMzU6XHQvKiBQb3dlciBtYW5hZ2VtZW50IHJ1bnRpbWUgYXV0by1zdXNwZW5kIGRlbGF5IHZhbHVlIGluIG1pbGxpc2Vjb25kcyAqL1xuICAzNjpcdCNkZWZpbmUgUE1fUlVOVElNRV9BVVRPU1VTUEVORF9ERUxBWV9NUyAxMDBcbiAgMzc6XHRcbiAgMzg6XHRlbnVtIG1tODF4X3VzYl9lbmRwb2ludHMge1xuICAzOTpcdFx0TU04MVhfRVBfQ01EID0gMCxcbiAgNDA6XHRcdE1NODFYX0VQX0lOVCxcbiAgNDE6XHRcdE1NODFYX0VQX01FTV9SRCxcbiAgNDI6XHRcdE1NODFYX0VQX01FTV9XUixcbiAgNDM6XHRcdE1NODFYX0VQX1JFR19SRCxcbiAgNDQ6XHRcdE1NODFYX0VQX1JFR19XUixcbiAgNDU6XHRcdE1NODFYX0VQX0VQX01BWCxcbiAgNDY6XHR9O1xuICA0NzpcdFxuICA0ODpcdHN0cnVjdCBtbTgxeF91c2JfZW5kcG9pbnQge1xuICA0OTpcdFx0dW5zaWduZWQgY2hhciAqYnVmZmVyO1xuICA1MDpcdFx0c3RydWN0IHVyYiAqdXJiO1xuICA1MTpcdFx0X191OCBhZGRyO1xuICA1MjpcdFx0aW50IHNpemU7XG4gIDUzOlx0fTtcbiAgNTQ6XHRcbiAgNTU6XHRlbnVtIG1tODF4X3VzYl9mbGFncyB7IE1NODFYX1VTQl9GTEFHX0FUVEFDSEVELCBNTTgxWF9VU0JfRkxBR19TVVNQRU5ERUQgfTtcbiAgNTY6XHRcbiAgNTc6XHRzdHJ1Y3QgbW04MXhfdXNiIHtcbiAgNTg6XHRcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2O1xuICA1OTpcdFx0c3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZTtcbiAgNjA6XHRcdHN0cnVjdCBtbTgxeF91c2JfZW5kcG9pbnQgZW5kcG9pbnRzW01NODFYX0VQX0VQX01BWF07XG4gIDYxOlx0XHRpbnQgZXJyb3JzO1xuICA2MjpcdFxuICA2MzpcdFx0Lyogc2VyaWFsaXNlIFVTQiBkZXZpY2Ugc3RydWN0ICovXG4gIDY0Olx0XHRzdHJ1Y3QgbXV0ZXggbG9jaztcbiAgNjU6XHRcbiAgNjY6XHRcdC8qIHNlcmlhbGlzZSBVU0IgYnVzIGFjY2VzcyAqL1xuICA2NzpcdFx0c3RydWN0IG11dGV4IGJ1c19sb2NrO1xuICA2ODpcdFxuICA2OTpcdFx0Ym9vbCBvbmdvaW5nX2NtZDtcbiAgNzA6XHRcdGJvb2wgb25nb2luZ19ydztcbiAgNzE6XHRcdHdhaXRfcXVldWVfaGVhZF90IHJ3X2luX3dhaXQ7XG4gIDcyOlx0XHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuICA3MzpcdH07XG4gIDc0Olx0XG4gIDc1Olx0ZW51bSBtbTgxeF91c2JfY29tbWFuZF9kaXJlY3Rpb24ge1xuICA3NjpcdFx0TU04MVhfVVNCX1dSSVRFID0gMHgwMCxcbiAgNzc6XHRcdE1NODFYX1VTQl9SRUFEID0gMHg4MCxcbiAgNzg6XHRcdE1NODFYX1VTQl9SRVNFVCA9IDB4MDIsXG4gIDc5Olx0fTtcbiAgODA6XHRcbiAgODE6XHRzdHJ1Y3QgbW04MXhfdXNiX2NvbW1hbmQge1xuICA4MjpcdFx0X19sZTMyIGRpcjsgLyogTmV4dCBCVUxLIGRpcmVjdGlvbiAqL1xuICA4MzpcdFx0X19sZTMyIGFkZHJlc3M7IC8qIE5leHQgQlVMSyBhZGRyZXNzICovXG4gIDg0Olx0XHRfX2xlMzIgbGVuZ3RoOyAvKiBOZXh0IEJVTEsgc2l6ZSAqL1xuICA4NTpcdH07XG4gIDg2Olx0XG4gIDg3Olx0c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIG1tODF4X3VzYl90YWJsZVtdID0ge1xuICA4ODpcdFx0eyBVU0JfREVWSUNFKE1NODFYX1ZFTkRPUl9JRCwgTU04MVhfTU04MTBYX1BST0RVQ1RfSUQpIH0sXG4gIDg5Olx0XHR7fSAvKiBUZXJtaW5hdGluZyBlbnRyeSAqL1xuICA5MDpcdH07XG4gIDkxOlx0XG4gIDkyOlx0TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIG1tODF4X3VzYl90YWJsZSk7XG4gIDkzOlx0XG4gIDk0Olx0c3RhdGljIHZvaWQgbW04MXhfdXNiX2lycV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiAgOTU6XHR7XG4gIDk2Olx0XHRzdHJ1Y3QgbW04MXggKm1vcnMgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG1tODF4LCB1c2JfaXJxX3dvcmspO1xuICA5NzpcdFxuICA5ODpcdFx0bW04MXhfY2xhaW1fYnVzKG1vcnMpO1xuICA5OTpcdFx0bW04MXhfaHdfaXJxX2hhbmRsZShtb3JzKTtcbiAxMDA6XHRcdG1tODF4X3JlbGVhc2VfYnVzKG1vcnMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDM4MQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkRpdmluZyBpbnRvIHRoZSBVU0IgS2VybmVsIENvZGUqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIFVTQiBpc3N1ZS4gRmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGUgYHVzYi5jYCBmaWxlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcHJvYmluZyBtZWNoYW5pc20gaXMgd29ya2luZy4gSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgb3V0IHRoZSBwcm9iZSBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbi4gRnJvbSB0aGVyZSwgSSYjMzk7bGwga2VlcCBkaWdnaW5nIGRlZXBlciB3aXRoaW4gYHVzYi5jYCB0byBzZWUgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBVU0Igc3Vic3lzdGVtIGFuZCB3aGVyZSB0aGUgaXNzdWUgbWF5IGxheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDAwOlx0XG4gNDAxOlx0XHRtdXRleF9sb2NrKFx1MDAyNm11c2ItXHUwMDNlbG9jayk7XG4gNDAyOlx0XG4gNDAzOlx0XHRtdXNiLVx1MDAzZW9uZ29pbmdfcncgPSB0cnVlO1xuIDQwNDpcdFx0bXVzYi1cdTAwM2VlcnJvcnMgPSAwO1xuIDQwNTpcdFxuIDQwNjpcdFx0LyogU2VuZCBjb21tYW5kIGFoZWFkIHRvIHByZXBhcmUgZm9yIFRva2VucyAqL1xuIDQwNzpcdFx0Y21kLmRpciA9IGNwdV90b19sZTMyKE1NODFYX1VTQl9XUklURSk7XG4gNDA4Olx0XHRjbWQuYWRkcmVzcyA9IGNwdV90b19sZTMyKGFkZHJlc3MpO1xuIDQwOTpcdFx0Y21kLmxlbmd0aCA9IGNwdV90b19sZTMyKHNpemUpO1xuIDQxMDpcdFx0cmV0ID0gbW04MXhfdXNiX2NtZChtdXNiLCBcdTAwMjZjbWQpO1xuIDQxMTpcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIDQxMjpcdFx0XHRkZXZfZXJyKG1vcnMtXHUwMDNlZGV2LCBcJiMzNDttbTgxeF91c2JfbWVtX3JlYWQgZXJyb3IgJWRcJiMzNDssIHJldCk7XG4gNDEzOlx0XHRcdGdvdG8gZXJyb3I7XG4gNDE0Olx0XHR9XG4gNDE1Olx0XG4gNDE2Olx0XHRtZW1jcHkobXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS5idWZmZXIsIGRhdGEsIHNpemUpO1xuIDQxNzpcdFxuIDQxODpcdFx0LyogcHJlcGFyZSBhIHJlYWQgKi9cbiA0MTk6XHRcdHVzYl9maWxsX2J1bGtfdXJiKFxuIDQyMDpcdFx0XHRtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLnVyYiwgbXVzYi1cdTAwM2V1ZGV2LFxuIDQyMTpcdFx0XHR1c2Jfc25kYnVsa3BpcGUobXVzYi1cdTAwM2V1ZGV2LFxuIDQyMjpcdFx0XHRcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS5hZGRyKSxcbiA0MjM6XHRcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS5idWZmZXIsIHNpemUsXG4gNDI0Olx0XHRcdG1tODF4X3VzYl9tZW1fcndfY2FsbGJhY2ssIG1vcnMpO1xuIDQyNTpcdFxuIDQyNjpcdFx0cmV0ID0gdXNiX3N1Ym1pdF91cmIobXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS51cmIsIEdGUF9BVE9NSUMpO1xuIDQyNzpcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIDQyODpcdFx0XHRkZXZfZXJyKG1vcnMtXHUwMDNlZGV2LCBcJiMzNDstIGZhaWxlZCBzdWJtaXR0aW5nIHdyaXRlIHVyYiwgZXJyb3IgJWRcJiMzNDssXG4gNDI5Olx0XHRcdFx0cmV0KTtcbiA0MzA6XHRcdFx0cmV0ID0gKHJldCA9PSAtRU5PTUVNKSA/IHJldCA6IC1FSU87XG4gNDMxOlx0XHRcdGdvdG8gZXJyb3I7XG4gNDMyOlx0XHR9XG4gNDMzOlx0XG4gNDM0Olx0XHRyZXQgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdGltZW91dChcbiA0MzU6XHRcdFx0bXVzYi1cdTAwM2Vyd19pbl93YWl0LCAoIW11c2ItXHUwMDNlb25nb2luZ19ydyksXG4gNDM2Olx0XHRcdG1zZWNzX3RvX2ppZmZpZXMoVVJCX1RJTUVPVVRfTVMpKTtcbiA0Mzc6XHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbiA0Mzg6XHRcdFx0ZGV2X2Vycihtb3JzLVx1MDAzZWRldiwgXCYjMzQ7ZXJyb3IgJWRcJiMzNDssIHJldCk7XG4gNDM5Olx0XHRcdGdvdG8gZXJyb3I7XG4gNDQwOlx0XHR9IGVsc2UgaWYgKHJldCA9PSAwKSB7XG4gNDQxOlx0XHRcdC8qIFRpbWVkIG91dC4gKi9cbiA0NDI6XHRcdFx0dXNiX2tpbGxfdXJiKG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9XUl0udXJiKTtcbiA0NDM6XHRcdH1cbiA0NDQ6XHRcbiA0NDU6XHRcdGlmIChtdXNiLVx1MDAzZWVycm9ycykge1xuIDQ0NjpcdFx0XHRyZXQgPSBtdXNiLVx1MDAzZWVycm9ycztcbiA0NDc6XHRcdFx0ZGV2X2Vycihtb3JzLVx1MDAzZWRldiwgXCYjMzQ7ZXJyb3IgJWRcJiMzNDssIHJldCk7XG4gNDQ4Olx0XHRcdGdvdG8gZXJyb3I7XG4gNDQ5Olx0XHR9XG4gNDUwOlx0XG4gNDUxOlx0XHRyZXQgPSBzaXplO1xuIDQ1MjpcdFxuIDQ1MzpcdGVycm9yOlxuIDQ1NDpcdFx0bXVzYi1cdTAwM2VvbmdvaW5nX3J3ID0gZmFsc2U7XG4gNDU1Olx0XHRtdXRleF91bmxvY2soXHUwMDI2bXVzYi1cdTAwM2Vsb2NrKTtcbiA0NTY6XHRcdHJldHVybiByZXQ7XG4gNDU3Olx0fVxuIDQ1ODpcdFxuIDQ1OTpcdHN0YXRpYyBpbnQgbW04MXhfdXNiX2RtX3JlYWQoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkcmVzcywgdTggKmRhdGEsIGludCBsZW4pXG4gNDYwOlx0e1xuIDQ2MTpcdFx0c3NpemVfdCBvZmZzZXQgPSAwO1xuIDQ2MjpcdFx0aW50IHJldDtcbiA0NjM6XHRcdHN0cnVjdCBtbTgxeF91c2IgKm11c2IgPSAoc3RydWN0IG1tODF4X3VzYiAqKW1vcnMtXHUwMDNlZHJ2X3ByaXY7XG4gNDY0Olx0XG4gNDY1Olx0XHR3aGlsZSAob2Zmc2V0IFx1MDAzYyBsZW4pIHtcbiA0NjY6XHRcdFx0cmV0ID0gbW04MXhfdXNiX21lbV9yZWFkKG11c2IsIGFkZHJlc3MgJiM0Mzsgb2Zmc2V0LFxuIDQ2NzpcdFx0XHRcdFx0XHQgKHU4ICopKGRhdGEgJiM0Mzsgb2Zmc2V0KSxcbiA0Njg6XHRcdFx0XHRcdFx0IG1pbigoc3NpemVfdCkobGVuIC0gb2Zmc2V0KSxcbiA0Njk6XHRcdFx0XHRcdFx0ICAgICAoc3NpemVfdClVU0JfTUFYX1RSQU5TRkVSX1NJWkUpKTtcbiA0NzA6XHRcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIDQ3MTpcdFx0XHRcdGRldl9lcnIobW9ycy1cdTAwM2VkZXYsIFwmIzM0OyVzIGZhaWxlZCAoZXJybm89JWQpXCYjMzQ7LCBfX2Z1bmNfXyxcbiA0NzI6XHRcdFx0XHRcdHJldCk7XG4gNDczOlx0XHRcdFx0cmV0dXJuIHJldDtcbiA0NzQ6XHRcdFx0fVxuIDQ3NTpcdFxuIDQ3NjpcdFx0XHRvZmZzZXQgJiM0Mzs9IHJldDtcbiA0Nzc6XHRcdH1cbiA0Nzg6XHRcbiA0Nzk6XHRcdHJldHVybiAwO1xuIDQ4MDpcdH1cbiA0ODE6XHRcbiA0ODI6XHRzdGF0aWMgaW50IG1tODF4X3VzYl9kbV93cml0ZShzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBhZGRyZXNzLCBjb25zdCB1OCAqZGF0YSxcbiA0ODM6XHRcdFx0XHQgICAgICBpbnQgbGVuKVxuIDQ4NDpcdHtcbiA0ODU6XHRcdHNzaXplX3Qgb2Zmc2V0ID0gMDtcbiA0ODY6XHRcdGludCByZXQ7XG4gNDg3Olx0XHRzdHJ1Y3QgbW04MXhfdXNiICptdXNiID0gKHN0cnVjdCBtbTgxeF91c2IgKiltb3JzLVx1MDAzZWRydl9wcml2O1xuIDQ4ODpcdFxuIDQ4OTpcdFx0d2hpbGUgKG9mZnNldCBcdTAwM2MgbGVuKSB7XG4gNDkwOlx0XHRcdHJldCA9IG1tODF4X3VzYl9tZW1fd3JpdGUobXVzYiwgYWRkcmVzcyAmIzQzOyBvZmZzZXQsXG4gNDkxOlx0XHRcdFx0XHRcdCAgKHU4ICopKGRhdGEgJiM0Mzsgb2Zmc2V0KSxcbiA0OTI6XHRcdFx0XHRcdFx0ICBtaW4oKHNzaXplX3QpKGxlbiAtIG9mZnNldCksXG4gNDkzOlx0XHRcdFx0XHRcdCAgICAgIChzc2l6ZV90KVVTQl9NQVhfVFJBTlNGRVJfU0laRSkpO1xuIDQ5NDpcdFx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gNDk1Olx0XHRcdFx0ZGV2X2Vycihtb3JzLVx1MDAzZWRldiwgXCYjMzQ7JXMgZmFpbGVkIChlcnJubz0lZClcJiMzNDssIF9fZnVuY19fLFxuIDQ5NjpcdFx0XHRcdFx0cmV0KTtcbiA0OTc6XHRcdFx0XHRyZXR1cm4gcmV0O1xuIDQ5ODpcdFx0XHR9XG4gNDk5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2MTU3CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgcHJvYmUgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBsaW5lcyA1MDAtNjAwIGluIGB1c2IuY2AuCgoqKkRpdmluZyBpbnRvIHRoZSBgdXNiLmNgIFByb2JlIEZ1bmN0aW9uKioKCk9rYXksIGxldCYjMzk7cyB6ZXJvIGluIG9uIHRoZSBwcm9iZSBmdW5jdGlvbiwgdGhhdCBjcnVjaWFsIHBpZWNlIGluIGB1c2IuY2AuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhpcyBwYXJ0aWN1bGFyIFVTQiBkcml2ZXIgaGFuZGxlcyBkZXZpY2UgZGV0ZWN0aW9uIGFuZCBpbml0aWFsaXphdGlvbi4gQWxyaWdodCwgbGluZXMgNTAwIHRocm91Z2ggNjAwLCB0aGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBjaHVuayBvZiB0aGUgc2V0dXAgbG9naWMuIEkmIzM5O20gbG9va2luZyBmb3IgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBVU0IgY29yZSwgaG93IGl0IGlkZW50aWZpZXMgdGhlIHNwZWNpZmljIGRldmljZSwgYW5kIGFueSBpbml0aWFsIHJlc291cmNlIGFsbG9jYXRpb24uIEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gYW55IHZlbmRvci9wcm9kdWN0IElEIGNoZWNrcywgYW5kIGhvdyBpdCBoYW5kbGVzIGRpZmZlcmVudCBVU0IgY29uZmlndXJhdGlvbnMg4oCTIHRoYXQmIzM5O3Mgb2Z0ZW4gd2hlcmUgdGhlIHN1YnRsZSBidWdzIG9yIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIGxpa2UgdG8gaGlkZS4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgY2xldmVybmVzcyBpbiBoYW5kbGluZyBxdWlya3Mgb3IgY29tcGF0aWJpbGl0eSBpc3N1ZXMgd2l0aCBvbGRlciBoYXJkd2FyZS4uLiBJJiMzOTtsbCBiZSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgbG9ja2luZyBpc3N1ZXMsIGVzcGVjaWFsbHkgaWYgdGhlcmUmIzM5O3MgYW55IGludGVyYWN0aW9uIHdpdGggaW50ZXJydXB0IGhhbmRsZXJzLiBJJiMzOTttIGdvaW5nIHRvIHNjYW4gZm9yIGFueSBjYWxscyB0byBgdXNiX2FsbG9jX2NvaGVyZW50YCBvciBzaW1pbGFyIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9ucywgc2luY2UgdGhhdCYjMzk7cyBvZnRlbiBhIHNvdXJjZSBvZiBjb250ZW50aW9uIGlmIG5vdCBkb25lIGNvcnJlY3RseS4gTGV0JiMzOTtzIGdldCByZWFkaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvdXNiLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1MDA6XHRcdFx0b2Zmc2V0ICYjNDM7PSByZXQ7XG4gNTAxOlx0XHR9XG4gNTAyOlx0XG4gNTAzOlx0XHRyZXR1cm4gMDtcbiA1MDQ6XHR9XG4gNTA1Olx0XG4gNTA2Olx0c3RhdGljIGludCBtbTgxeF91c2JfcmVnMzJfcmVhZChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBhZGRyZXNzLCB1MzIgKnZhbClcbiA1MDc6XHR7XG4gNTA4Olx0XHRpbnQgcmV0ID0gMDtcbiA1MDk6XHRcdHN0cnVjdCBtbTgxeF91c2IgKm11c2IgPSAoc3RydWN0IG1tODF4X3VzYiAqKW1vcnMtXHUwMDNlZHJ2X3ByaXY7XG4gNTEwOlx0XG4gNTExOlx0XHRyZXQgPSBtbTgxeF91c2JfbWVtX3JlYWQobXVzYiwgYWRkcmVzcywgKHU4ICopdmFsLCBzaXplb2YoKnZhbCkpO1xuIDUxMjpcdFx0aWYgKHJldCA9PSBzaXplb2YoKnZhbCkpIHtcbiA1MTM6XHRcdFx0KnZhbCA9IGxlMzJfdG9fY3B1cCgoX19sZTMyICopdmFsKTtcbiA1MTQ6XHRcdFx0cmV0dXJuIDA7XG4gNTE1Olx0XHR9XG4gNTE2Olx0XG4gNTE3Olx0XHRkZXZfZXJyKG1vcnMtXHUwMDNlZGV2LCBcJiMzNDt1c2IgcmVnMzIgcmVhZCBmYWlsZWQgJWRcJiMzNDssIHJldCk7XG4gNTE4Olx0XHRyZXR1cm4gcmV0O1xuIDUxOTpcdH1cbiA1MjA6XHRcbiA1MjE6XHRzdGF0aWMgaW50IG1tODF4X3VzYl9yZWczMl93cml0ZShzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBhZGRyZXNzLCB1MzIgdmFsKVxuIDUyMjpcdHtcbiA1MjM6XHRcdGludCByZXQgPSAwO1xuIDUyNDpcdFx0c3RydWN0IG1tODF4X3VzYiAqbXVzYiA9IChzdHJ1Y3QgbW04MXhfdXNiICopbW9ycy1cdTAwM2VkcnZfcHJpdjtcbiA1MjU6XHRcdF9fbGUzMiB2YWxfbGUgPSBjcHVfdG9fbGUzMih2YWwpO1xuIDUyNjpcdFxuIDUyNzpcdFx0cmV0ID0gbW04MXhfdXNiX21lbV93cml0ZShtdXNiLCBhZGRyZXNzLCAodTggKilcdTAwMjZ2YWxfbGUsIHNpemVvZih2YWxfbGUpKTtcbiA1Mjg6XHRcdGlmIChyZXQgPT0gc2l6ZW9mKHZhbF9sZSkpXG4gNTI5Olx0XHRcdHJldHVybiAwO1xuIDUzMDpcdFxuIDUzMTpcdFx0ZGV2X2Vycihtb3JzLVx1MDAzZWRldiwgXCYjMzQ7dXNiIHJlZzMyIHdyaXRlIGZhaWxlZCAlZFwmIzM0OywgcmV0KTtcbiA1MzI6XHRcdHJldHVybiByZXQ7XG4gNTMzOlx0fVxuIDUzNDpcdFxuIDUzNTpcdHN0YXRpYyB2b2lkIG1tODF4X3VzYl9idXNfZW5hYmxlKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGUpXG4gNTM2Olx0e1xuIDUzNzpcdFx0c3RydWN0IG1tODF4X3VzYiAqbXVzYiA9IChzdHJ1Y3QgbW04MXhfdXNiICopbW9ycy1cdTAwM2VkcnZfcHJpdjtcbiA1Mzg6XHRcbiA1Mzk6XHRcdGlmIChlbmFibGUpXG4gNTQwOlx0XHRcdHVzYl9hdXRvcG1fZ2V0X2ludGVyZmFjZShtdXNiLVx1MDAzZWludGVyZmFjZSk7XG4gNTQxOlx0XHRlbHNlXG4gNTQyOlx0XHRcdHVzYl9hdXRvcG1fcHV0X2ludGVyZmFjZShtdXNiLVx1MDAzZWludGVyZmFjZSk7XG4gNTQzOlx0fVxuIDU0NDpcdFxuIDU0NTpcdHN0YXRpYyB2b2lkIG1tODF4X3VzYl9jbGFpbV9idXMoc3RydWN0IG1tODF4ICptb3JzKVxuIDU0NjpcdHtcbiA1NDc6XHRcdHN0cnVjdCBtbTgxeF91c2IgKm11c2IgPSAoc3RydWN0IG1tODF4X3VzYiAqKW1vcnMtXHUwMDNlZHJ2X3ByaXY7XG4gNTQ4Olx0XG4gNTQ5Olx0XHRtdXRleF9sb2NrKFx1MDAyNm11c2ItXHUwMDNlYnVzX2xvY2spO1xuIDU1MDpcdH1cbiA1NTE6XHRcbiA1NTI6XHRzdGF0aWMgdm9pZCBtbTgxeF91c2JfcmVsZWFzZV9idXMoc3RydWN0IG1tODF4ICptb3JzKVxuIDU1MzpcdHtcbiA1NTQ6XHRcdHN0cnVjdCBtbTgxeF91c2IgKm11c2IgPSAoc3RydWN0IG1tODF4X3VzYiAqKW1vcnMtXHUwMDNlZHJ2X3ByaXY7XG4gNTU1Olx0XG4gNTU2Olx0XHRtdXRleF91bmxvY2soXHUwMDI2bXVzYi1cdTAwM2VidXNfbG9jayk7XG4gNTU3Olx0fVxuIDU1ODpcdFxuIDU1OTpcdHN0YXRpYyB2b2lkIG1tODF4X3VzYl9zZXRfaXJxKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGUpXG4gNTYwOlx0e1xuIDU2MTpcdH1cbiA1NjI6XHRcbiA1NjM6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG1tODF4X2J1c19vcHMgbW04MXhfdXNiX29wcyA9IHtcbiA1NjQ6XHRcdC5kbV9yZWFkID0gbW04MXhfdXNiX2RtX3JlYWQsXG4gNTY1Olx0XHQuZG1fd3JpdGUgPSBtbTgxeF91c2JfZG1fd3JpdGUsXG4gNTY2Olx0XHQucmVnMzJfcmVhZCA9IG1tODF4X3VzYl9yZWczMl9yZWFkLFxuIDU2NzpcdFx0LnJlZzMyX3dyaXRlID0gbW04MXhfdXNiX3JlZzMyX3dyaXRlLFxuIDU2ODpcdFx0LmRpZ2l0YWxfcmVzZXQgPSBtbTgxeF91c2JfbmRyX3Jlc2V0LFxuIDU2OTpcdFx0LnNldF9idXNfZW5hYmxlID0gbW04MXhfdXNiX2J1c19lbmFibGUsXG4gNTcwOlx0XHQuY2xhaW0gPSBtbTgxeF91c2JfY2xhaW1fYnVzLFxuIDU3MTpcdFx0LnJlbGVhc2UgPSBtbTgxeF91c2JfcmVsZWFzZV9idXMsXG4gNTcyOlx0XHQuc2V0X2lycSA9IG1tODF4X3VzYl9zZXRfaXJxLFxuIDU3MzpcdFx0LmJ1bGtfYWxpZ25tZW50ID0gTU04MVhfQlVTX0RFRkFVTFRfQlVMS19BTElHTk1FTlQsXG4gNTc0Olx0fTtcbiA1NzU6XHRcbiA1NzY6XHRzdGF0aWMgaW50IG1tODF4X3VzYl9kZXRlY3RfZW5kcG9pbnRzKHN0cnVjdCBtbTgxeCAqbW9ycyxcbiA1Nzc6XHRcdFx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuIDU3ODpcdHtcbiA1Nzk6XHRcdGludCByZXQ7XG4gNTgwOlx0XHR1bnNpZ25lZCBpbnQgaTtcbiA1ODE6XHRcdHN0cnVjdCBtbTgxeF91c2IgKm11c2IgPSAoc3RydWN0IG1tODF4X3VzYiAqKW1vcnMtXHUwMDNlZHJ2X3ByaXY7XG4gNTgyOlx0XHRzdHJ1Y3QgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3IgKmVwX2Rlc2M7XG4gNTgzOlx0XHRzdHJ1Y3QgdXNiX2hvc3RfaW50ZXJmYWNlICppbnRmX2Rlc2MgPSBpbnRmLVx1MDAzZWN1cl9hbHRzZXR0aW5nO1xuIDU4NDpcdFxuIDU4NTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgaW50Zl9kZXNjLVx1MDAzZWRlc2MuYk51bUVuZHBvaW50czsgaSYjNDM7JiM0MzspIHtcbiA1ODY6XHRcdFx0ZXBfZGVzYyA9IFx1MDAyNmludGZfZGVzYy1cdTAwM2VlbmRwb2ludFtpXS5kZXNjO1xuIDU4NzpcdFxuIDU4ODpcdFx0XHRpZiAodXNiX2VuZHBvaW50X2lzX2J1bGtfaW4oZXBfZGVzYykpIHtcbiA1ODk6XHRcdFx0XHRpZiAoIW11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9SRF0uYWRkcikge1xuIDU5MDpcdFx0XHRcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1JEXS5hZGRyID1cbiA1OTE6XHRcdFx0XHRcdFx0dXNiX2VuZHBvaW50X251bShlcF9kZXNjKTtcbiA1OTI6XHRcdFx0XHRcdG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9SRF0uc2l6ZSA9XG4gNTkzOlx0XHRcdFx0XHRcdHVzYl9lbmRwb2ludF9tYXhwKGVwX2Rlc2MpO1xuIDU5NDpcdFx0XHRcdH0gZWxzZSBpZiAoIW11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX1JFR19SRF0uYWRkcikge1xuIDU5NTpcdFx0XHRcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfUkVHX1JEXS5hZGRyID1cbiA1OTY6XHRcdFx0XHRcdFx0dXNiX2VuZHBvaW50X251bShlcF9kZXNjKTtcbiA1OTc6XHRcdFx0XHRcdG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX1JFR19SRF0uc2l6ZSA9XG4gNTk4Olx0XHRcdFx0XHRcdHVzYl9lbmRwb2ludF9tYXhwKGVwX2Rlc2MpO1xuIDU5OTpcdFx0XHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgyNzIKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aGlua2luZyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgbW04MXhfdXNiX3Byb2JlIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgbW04MXhfdXNiX3Byb2JlYCBpbiBgdXNiLmNgLiBTb3VuZHMgbGlrZSB0aGUgcHJvYmUgZnVuY3Rpb24gZm9yIGEgVVNCIGRldmljZSwgbGlrZWx5IGFuIG1tODF4LWJhc2VkIGRldmljZS4gSSYjMzk7bSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IHRvIGxpbmVzIDYwMC03MjAuIFRoYXQgcmFuZ2UgdXN1YWxseSBlbmNvbXBhc3NlcyBhIHNpZ25pZmljYW50IHBvcnRpb24gb2YgdGhlIHByb2JlJiMzOTtzIGNvcmUgbG9naWMuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGRldmljZSBJRCBtYXRjaGluZywgcmVzb3VyY2UgYWxsb2NhdGlvbiAoaWYgcmVxdWlyZWQpLCBkcml2ZXIgYmluZGluZywgYW5kIHBvc3NpYmx5IHNvbWUgaW5pdGlhbCBkZXZpY2Ugc2V0dXAuIEkmIzM5O20gaG9waW5nIGl0JiMzOTtzIHdlbGwtY29tbWVudGVkLCBidXQgZXZlbiBpZiBpdCYjMzk7cyBub3QsIEkmIzM5O20gdXNlZCB0byBpbmZlcnJpbmcgdGhlIGNvZGUgZmxvdyBmcm9tIHRoZSBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbiBjYWxscy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDYwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDYwMDpcdFx0XHR9IGVsc2UgaWYgKHVzYl9lbmRwb2ludF9pc19idWxrX291dChlcF9kZXNjKSkge1xuIDYwMTpcdFx0XHRcdGlmICghbXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS5hZGRyKSB7XG4gNjAyOlx0XHRcdFx0XHRtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLmFkZHIgPVxuIDYwMzpcdFx0XHRcdFx0XHR1c2JfZW5kcG9pbnRfbnVtKGVwX2Rlc2MpO1xuIDYwNDpcdFx0XHRcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS5zaXplID1cbiA2MDU6XHRcdFx0XHRcdFx0dXNiX2VuZHBvaW50X21heHAoZXBfZGVzYyk7XG4gNjA2Olx0XHRcdFx0fSBlbHNlIGlmICghbXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfUkVHX1dSXS5hZGRyKSB7XG4gNjA3Olx0XHRcdFx0XHRtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9SRUdfV1JdLmFkZHIgPVxuIDYwODpcdFx0XHRcdFx0XHR1c2JfZW5kcG9pbnRfbnVtKGVwX2Rlc2MpO1xuIDYwOTpcdFx0XHRcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfUkVHX1dSXS5zaXplID1cbiA2MTA6XHRcdFx0XHRcdFx0dXNiX2VuZHBvaW50X21heHAoZXBfZGVzYyk7XG4gNjExOlx0XHRcdFx0fVxuIDYxMjpcdFx0XHR9IGVsc2UgaWYgKHVzYl9lbmRwb2ludF9pc19pbnRfaW4oZXBfZGVzYykpIHtcbiA2MTM6XHRcdFx0XHRtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9JTlRdLmFkZHIgPVxuIDYxNDpcdFx0XHRcdFx0dXNiX2VuZHBvaW50X251bShlcF9kZXNjKTtcbiA2MTU6XHRcdFx0XHRtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9JTlRdLnNpemUgPVxuIDYxNjpcdFx0XHRcdFx0dXNiX2VuZHBvaW50X21heHAoZXBfZGVzYyk7XG4gNjE3Olx0XHRcdH1cbiA2MTg6XHRcdH1cbiA2MTk6XHRcbiA2MjA6XHRcdGRldl9kYmcobW9ycy1cdTAwM2VkZXYsIFwmIzM0O1xcdE1lbW9yeSBFbmRwb2ludCBJTiAlcyBkZXRlY3RlZDogJXUgc2l6ZSAldVwmIzM0OyxcbiA2MjE6XHRcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1JEXS5hZGRyID8gXCYjMzQ7XCYjMzQ7IDogXCYjMzQ7bm90XCYjMzQ7LFxuIDYyMjpcdFx0XHRtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fUkRdLmFkZHIsXG4gNjIzOlx0XHRcdG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9SRF0uc2l6ZSk7XG4gNjI0Olx0XHRkZXZfZGJnKG1vcnMtXHUwMDNlZGV2LCBcJiMzNDtcXHRNZW1vcnkgRW5kcG9pbnQgT1VUICVzIGRldGVjdGVkOiAldSBzaXplICV1XCYjMzQ7LFxuIDYyNTpcdFx0XHRtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLmFkZHIgPyBcJiMzNDtcJiMzNDsgOiBcJiMzNDtub3RcJiMzNDssXG4gNjI2Olx0XHRcdG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9XUl0uYWRkcixcbiA2Mjc6XHRcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS5zaXplKTtcbiA2Mjg6XHRcdGRldl9kYmcobW9ycy1cdTAwM2VkZXYsIFwmIzM0O1xcdFJlZ2lzdGVyIEVuZHBvaW50IElOICVzIGRldGVjdGVkOiAldVwmIzM0OyxcbiA2Mjk6XHRcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfUkVHX1JEXS5hZGRyID8gXCYjMzQ7XCYjMzQ7IDogXCYjMzQ7bm90XCYjMzQ7LFxuIDYzMDpcdFx0XHRtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9SRUdfUkRdLmFkZHIpO1xuIDYzMTpcdFx0ZGV2X2RiZyhtb3JzLVx1MDAzZWRldiwgXCYjMzQ7XFx0UmVnaXN0ZXIgRW5kcG9pbnQgT1VUICVzIGRldGVjdGVkOiAldVwmIzM0OyxcbiA2MzI6XHRcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfUkVHX1dSXS5hZGRyID8gXCYjMzQ7XCYjMzQ7IDogXCYjMzQ7bm90XCYjMzQ7LFxuIDYzMzpcdFx0XHRtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9SRUdfV1JdLmFkZHIpO1xuIDYzNDpcdFx0ZGV2X2RiZyhtb3JzLVx1MDAzZWRldiwgXCYjMzQ7XFx0U3RhdHMgSU4gZW5kcG9pbnQgJXMgZGV0ZWN0ZWQ6ICV1XCYjMzQ7LFxuIDYzNTpcdFx0XHRtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9JTlRdLmFkZHIgPyBcJiMzNDtcJiMzNDsgOiBcJiMzNDtub3RcJiMzNDssXG4gNjM2Olx0XHRcdG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0lOVF0uYWRkcik7XG4gNjM3Olx0XG4gNjM4Olx0XHQvKiBWZXJpZnkgd2UgaGF2ZSBhbiBJTiBhbmQgT1VUICovXG4gNjM5Olx0XHRpZiAoIShtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fUkRdLmFkZHIgXHUwMDI2XHUwMDI2XG4gNjQwOlx0XHQgICAgICBtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLmFkZHIpKVxuIDY0MTpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbiA2NDI6XHRcbiA2NDM6XHRcdC8qIFZlcmlmeSB0aGUgc3RhdHMgTU04MVhfRVBfSU5UIGlzIGRldGVjdGVkICovXG4gNjQ0Olx0XHRpZiAoIW11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0lOVF0uYWRkcilcbiA2NDU6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4gNjQ2Olx0XG4gNjQ3Olx0XHQvKiBWZXJpZnkgbWluaW11bSBpbnRlcnJ1cHQgc3RhdHVzIHJlYWQgKi9cbiA2NDg6XHRcdGlmIChtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9JTlRdLnNpemUgXHUwMDNjIDgpXG4gNjQ5Olx0XHRcdHJldHVybiAtRU5PREVWO1xuIDY1MDpcdFxuIDY1MTpcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXS51cmIgPSB1c2JfYWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpO1xuIDY1MjpcdFx0aWYgKCFtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9DTURdLnVyYikge1xuIDY1MzpcdFx0XHRyZXQgPSAtRU5PTUVNO1xuIDY1NDpcdFx0XHRnb3RvIGVycl9lcDtcbiA2NTU6XHRcdH1cbiA2NTY6XHRcbiA2NTc6XHRcdG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9SRF0udXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTtcbiA2NTg6XHRcdGlmICghbXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1JEXS51cmIpIHtcbiA2NTk6XHRcdFx0cmV0ID0gLUVOT01FTTtcbiA2NjA6XHRcdFx0Z290byBlcnJfZXA7XG4gNjYxOlx0XHR9XG4gNjYyOlx0XG4gNjYzOlx0XHRtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLnVyYiA9IHVzYl9hbGxvY191cmIoMCwgR0ZQX0tFUk5FTCk7XG4gNjY0Olx0XHRpZiAoIW11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9XUl0udXJiKSB7XG4gNjY1Olx0XHRcdHJldCA9IC1FTk9NRU07XG4gNjY2Olx0XHRcdGdvdG8gZXJyX2VwO1xuIDY2NzpcdFx0fVxuIDY2ODpcdFxuIDY2OTpcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1JEXS5idWZmZXIgPVxuIDY3MDpcdFx0XHRrbWFsbG9jKFVTQl9NQVhfVFJBTlNGRVJfU0laRSwgR0ZQX0tFUk5FTCk7XG4gNjcxOlx0XHRpZiAoIW11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9SRF0uYnVmZmVyKSB7XG4gNjcyOlx0XHRcdHJldCA9IC1FTk9NRU07XG4gNjczOlx0XHRcdGdvdG8gZXJyX2VwO1xuIDY3NDpcdFx0fVxuIDY3NTpcdFxuIDY3NjpcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS5idWZmZXIgPVxuIDY3NzpcdFx0XHRrbWFsbG9jKFVTQl9NQVhfVFJBTlNGRVJfU0laRSwgR0ZQX0tFUk5FTCk7XG4gNjc4Olx0XHRpZiAoIW11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9XUl0uYnVmZmVyKSB7XG4gNjc5Olx0XHRcdHJldCA9IC1FTk9NRU07XG4gNjgwOlx0XHRcdGdvdG8gZXJyX2VwO1xuIDY4MTpcdFx0fVxuIDY4MjpcdFxuIDY4MzpcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXS5idWZmZXIgPSB1c2JfYWxsb2NfY29oZXJlbnQoXG4gNjg0Olx0XHRcdG11c2ItXHUwMDNldWRldiwgc2l6ZW9mKHN0cnVjdCBtbTgxeF91c2JfY29tbWFuZCksIEdGUF9LRVJORUwsXG4gNjg1Olx0XHRcdFx1MDAyNm11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0NNRF0udXJiLVx1MDAzZXRyYW5zZmVyX2RtYSk7XG4gNjg2Olx0XG4gNjg3Olx0XHRpZiAoIW11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0NNRF0uYnVmZmVyKSB7XG4gNjg4Olx0XHRcdHJldCA9IC1FTk9NRU07XG4gNjg5Olx0XHRcdGdvdG8gZXJyX2VwO1xuIDY5MDpcdFx0fVxuIDY5MTpcdFxuIDY5MjpcdFx0LyogQXNzaWduIGNvbW1hbmQgdG8gbWVtb3J5IG91dCBlbmQgcG9pbnQgKi9cbiA2OTM6XHRcdG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0NNRF0uYWRkciA9XG4gNjk0Olx0XHRcdG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9XUl0uYWRkcjtcbiA2OTU6XHRcdG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0NNRF0uc2l6ZSA9XG4gNjk2Olx0XHRcdG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9XUl0uc2l6ZTtcbiA2OTc6XHRcbiA2OTg6XHRcdHJldHVybiAwO1xuIDY5OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDQ2OAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgVVNCIFByb2JlIEZ1bmN0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGJhY2sgaW4uIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGBtbTgxeF91c2JfcHJvYmVgIGZ1bmN0aW9uIG5vdy4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHByb2JlIGZ1bmN0aW9ucyBhcmUgY3JpdGljYWwgZm9yIGRldmljZSBpbml0aWFsaXphdGlvbiBhbmQgYXJlIG9mdGVuIHRoZSBlbnRyeSBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgYSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggaGFyZHdhcmUuIEkmIzM5O20gbm90aW5nIHRoZSBzcGVjaWZpYyBsb2NhdGlvbiwgYXJvdW5kIGxpbmUgNzAwLiBUaGlzIGlzIGEgY29tbW9uIHBhdHRlcm4sIGFuZCBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGRldGFpbGVkIGFuYWx5c2lzLiBJJiMzOTtsbCBuZWVkIHRvIG1ldGljdWxvdXNseSBleGFtaW5lIHRoZSBjb2RlIGZsb3cgZnJvbSBoZXJlLCBtYXBwaW5nIHRoZSBzdGVwcyB0aGUgZnVuY3Rpb24gdGFrZXMgdG8gZGV0ZWN0LCBjb25maWd1cmUsIGFuZCB1bHRpbWF0ZWx5IGFjdGl2YXRlIHRoZSBVU0IgZGV2aWNlLiBJIHdpbGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLCBhbmQgdGhlIHBvdGVudGlhbCBlcnJvciBjb25kaXRpb25zIHRoYXQgbWlnaHQgYXJpc2UuIEkgd2lsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBpbmZvcm1hdGlvbiBpcyBwYXNzZWQgaW4sIHdoYXQgZnVuY3Rpb25zIGFyZSBjYWxsZWQsIGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGUgZGV2aWNlIGJlY29tZXMgZnVsbHkgb3BlcmF0aW9uYWwuIEkga25vdyB0aGUgZGV2aWwgaXMgb2Z0ZW4gaW4gdGhlIGRldGFpbHMgd2hlbiBkZWFsaW5nIHdpdGggVVNCLCBzbyBhIHRob3JvdWdoLCBsaW5lLWJ5LWxpbmUgaW5zcGVjdGlvbiBpcyBpbiBvcmRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA3MDA6XHRlcnJfZXA6XG4gNzAxOlx0XHRpZiAobXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXS51cmIgXHUwMDI2XHUwMDI2XG4gNzAyOlx0XHQgICAgbXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXS5idWZmZXIpXG4gNzAzOlx0XHRcdHVzYl9mcmVlX2NvaGVyZW50KFxuIDcwNDpcdFx0XHRcdG11c2ItXHUwMDNldWRldiwgc2l6ZW9mKHN0cnVjdCBtbTgxeF91c2JfY29tbWFuZCksXG4gNzA1Olx0XHRcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXS5idWZmZXIsXG4gNzA2Olx0XHRcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXS51cmItXHUwMDNldHJhbnNmZXJfZG1hKTtcbiA3MDc6XHRcdHVzYl9mcmVlX3VyYihtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fUkRdLnVyYik7XG4gNzA4Olx0XHR1c2JfZnJlZV91cmIobXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXS51cmIpO1xuIDcwOTpcdFx0dXNiX2ZyZWVfdXJiKG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9XUl0udXJiKTtcbiA3MTA6XHRcdGtmcmVlKG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9SRF0uYnVmZmVyKTtcbiA3MTE6XHRcdGtmcmVlKG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9XUl0uYnVmZmVyKTtcbiA3MTI6XHRcbiA3MTM6XHRcdHJldHVybiByZXQ7XG4gNzE0Olx0fVxuIDcxNTpcdFxuIDcxNjpcdHN0YXRpYyB2b2lkIG1tODF4X3VyYl9jbGVhbnVwKHN0cnVjdCBtbTgxeCAqbW9ycylcbiA3MTc6XHR7XG4gNzE4Olx0XHRzdHJ1Y3QgbW04MXhfdXNiICptdXNiID0gKHN0cnVjdCBtbTgxeF91c2IgKiltb3JzLVx1MDAzZWRydl9wcml2O1xuIDcxOTpcdFx0c3RydWN0IG1tODF4X3VzYl9lbmRwb2ludCAqaW50X2VwID0gXHUwMDI2bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfSU5UXTtcbiA3MjA6XHRcdHN0cnVjdCBtbTgxeF91c2JfZW5kcG9pbnQgKnJkX2VwID0gXHUwMDI2bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1JEXTtcbiA3MjE6XHRcdHN0cnVjdCBtbTgxeF91c2JfZW5kcG9pbnQgKndyX2VwID0gXHUwMDI2bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXTtcbiA3MjI6XHRcdHN0cnVjdCBtbTgxeF91c2JfZW5kcG9pbnQgKmNtZF9lcCA9IFx1MDAyNm11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0NNRF07XG4gNzIzOlx0XG4gNzI0Olx0XHR1c2Jfa2lsbF91cmIocmRfZXAtXHUwMDNldXJiKTtcbiA3MjU6XHRcdHVzYl9raWxsX3VyYih3cl9lcC1cdTAwM2V1cmIpO1xuIDcyNjpcdFx0dXNiX2tpbGxfdXJiKGNtZF9lcC1cdTAwM2V1cmIpO1xuIDcyNzpcdFxuIDcyODpcdFx0aWYgKGludF9lcC1cdTAwM2V1cmIpXG4gNzI5Olx0XHRcdHVzYl9mcmVlX2NvaGVyZW50KG11c2ItXHUwMDNldWRldiwgTU04MVhfRVBfSU5UX0JVRkZFUl9TSVpFLFxuIDczMDpcdFx0XHRcdFx0ICBpbnRfZXAtXHUwMDNlYnVmZmVyLCBpbnRfZXAtXHUwMDNldXJiLVx1MDAzZXRyYW5zZmVyX2RtYSk7XG4gNzMxOlx0XG4gNzMyOlx0XHRpZiAoY21kX2VwLVx1MDAzZXVyYilcbiA3MzM6XHRcdFx0dXNiX2ZyZWVfY29oZXJlbnQobXVzYi1cdTAwM2V1ZGV2LCBzaXplb2Yoc3RydWN0IG1tODF4X3VzYl9jb21tYW5kKSxcbiA3MzQ6XHRcdFx0XHRcdCAgY21kX2VwLVx1MDAzZWJ1ZmZlciwgY21kX2VwLVx1MDAzZXVyYi1cdTAwM2V0cmFuc2Zlcl9kbWEpO1xuIDczNTpcdFxuIDczNjpcdFx0a2ZyZWUod3JfZXAtXHUwMDNlYnVmZmVyKTtcbiA3Mzc6XHRcdGtmcmVlKHJkX2VwLVx1MDAzZWJ1ZmZlcik7XG4gNzM4Olx0XG4gNzM5Olx0XHR1c2JfZnJlZV91cmIoaW50X2VwLVx1MDAzZXVyYik7XG4gNzQwOlx0XHR1c2JfZnJlZV91cmIod3JfZXAtXHUwMDNldXJiKTtcbiA3NDE6XHRcdHVzYl9mcmVlX3VyYihyZF9lcC1cdTAwM2V1cmIpO1xuIDc0MjpcdFx0dXNiX2ZyZWVfdXJiKGNtZF9lcC1cdTAwM2V1cmIpO1xuIDc0MzpcdH1cbiA3NDQ6XHRcbiA3NDU6XHRzdGF0aWMgaW50IG1tODF4X3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuIDc0NjpcdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbiA3NDc6XHR7XG4gNzQ4Olx0XHRpbnQgcmV0O1xuIDc0OTpcdFx0c3RydWN0IG1tODF4ICptb3JzO1xuIDc1MDpcdFx0c3RydWN0IG1tODF4X3VzYiAqbXVzYjtcbiA3NTE6XHRcbiA3NTI6XHRcdG1vcnMgPSBtbTgxeF9jb3JlX2FsbG9jKHNpemVvZigqbXVzYiksIFx1MDAyNmludGVyZmFjZS1cdTAwM2VkZXYpO1xuIDc1MzpcdFx0aWYgKCFtb3JzKVxuIDc1NDpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiA3NTU6XHRcbiA3NTY6XHRcdG1vcnMtXHUwMDNlYnVzX29wcyA9IFx1MDAyNm1tODF4X3VzYl9vcHM7XG4gNzU3Olx0XHRtb3JzLVx1MDAzZWJ1c190eXBlID0gTU04MVhfQlVTX1RZUEVfVVNCO1xuIDc1ODpcdFxuIDc1OTpcdFx0bXVzYiA9IChzdHJ1Y3QgbW04MXhfdXNiICopbW9ycy1cdTAwM2VkcnZfcHJpdjtcbiA3NjA6XHRcdG11c2ItXHUwMDNldWRldiA9IHVzYl9nZXRfZGV2KGludGVyZmFjZV90b191c2JkZXYoaW50ZXJmYWNlKSk7XG4gNzYxOlx0XHRtdXNiLVx1MDAzZWludGVyZmFjZSA9IHVzYl9nZXRfaW50ZihpbnRlcmZhY2UpO1xuIDc2MjpcdFxuIDc2MzpcdFx0bXV0ZXhfaW5pdChcdTAwMjZtdXNiLVx1MDAzZWxvY2spO1xuIDc2NDpcdFx0bXV0ZXhfaW5pdChcdTAwMjZtdXNiLVx1MDAzZWJ1c19sb2NrKTtcbiA3NjU6XHRcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXHUwMDI2bXVzYi1cdTAwM2Vyd19pbl93YWl0KTtcbiA3NjY6XHRcdHVzYl9zZXRfaW50ZmRhdGEoaW50ZXJmYWNlLCBtb3JzKTtcbiA3Njc6XHRcbiA3Njg6XHRcdHJldCA9IG1tODF4X3VzYl9kZXRlY3RfZW5kcG9pbnRzKG1vcnMsIGludGVyZmFjZSk7XG4gNzY5Olx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDc3MDpcdFx0XHRnb3RvIGVycl9jb3JlX2ZyZWU7XG4gNzcxOlx0XG4gNzcyOlx0XHRzZXRfYml0KE1NODFYX1VTQl9GTEFHX0FUVEFDSEVELCBcdTAwMjZtdXNiLVx1MDAzZWZsYWdzKTtcbiA3NzM6XHRcbiA3NzQ6XHRcdHJldCA9IG1tODF4X2NvcmVfaW5pdChtb3JzKTtcbiA3NzU6XHRcdGlmIChyZXQpXG4gNzc2Olx0XHRcdGdvdG8gZXJyX3VyYl9jbGVhbnVwO1xuIDc3NzpcdFxuIDc3ODpcdFx0SU5JVF9XT1JLKFx1MDAyNm1vcnMtXHUwMDNldXNiX2lycV93b3JrLCBtbTgxeF91c2JfaXJxX3dvcmspO1xuIDc3OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjIzNgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEwNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBtbTgxeCBVU0IgRHJpdmVyIGZvciBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0aWVzKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgbW04MXhfdXNiX3Byb2JlYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgaG93IGl0IGludGVyZmFjZXMgd2l0aCB0aGUgVVNCIGRldmljZSwgcGFydGljdWxhcmx5IGZvY3VzaW5nIG9uIHRoZSBwYWNrZXQgaGFuZGxpbmcgd2l0aGluIHRoaXMgZHJpdmVyLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzYCBhbmQgYG1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltYCBhcmUgZG9pbmcsIGFzIHRob3NlIGFyZSBvZnRlbiBzcG90cyB0byBsb29rLgoKTG9va2luZyBhdCBgbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW1gLCB0aGVyZSYjMzk7cyB0aGUgc3RhbmRhcmQgQ1JDIGNoZWNrLCBwYWNrZXQgc2l6ZSBhbmQgcGFkZGluZyBjaGVja3MsIGFuZCBhIG5ldyBjb25kaXRpb24sIHRoZSBjaGVjayBmb3IgYHBrdF9zaXplICZsdDs9IFlBUFNfUkVTRVJWRURfUEFHRV9TSVpFYCwgYSBjaGFuZ2Ugd2hpY2ggbG9va3MgbGlrZSBhIHJlY2VudCBmaXguIFRoZSBwYWRkaW5nIGNhbGN1bGF0aW9ucyBsb29rIHR5cGljYWwsIGFuZCB0aGUgc2l6ZSBjaGVja3MgYXJlIHRoZXJlLgoKVGhlbiwgaW5zcGVjdGluZyBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgLCBJIHNlZSB0aGUgZXhwZWN0ZWQgY2hlY2tzIGZvciB0aGUgbnVtYmVyIG9mIHBhY2tldHMgYW5kIHJlbWFpbmluZyBieXRlcy4gVGhlcmUmIzM5O3MgYWxzbyB0aGlzIG5ldyBhbGlnbm1lbnQgY2hlY2sgYCFJU19BTElHTkVEKGJ5dGVzX3JlbWFpbmluZywgc2l6ZW9mKHUzMikpYCwgd2hpY2gsIGlmIHRyaWdnZXJlZCwgd2lsbCByZXN1bHQgaW4gYW4gLUVJTywgYW5kIHRoZSBmdW5jdGlvbiB3aWxsIHJldHVybi4gVGhpcyBjb3VsZCBzaWduYWwgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS4KCk5vdywgaG93IGRvZXMgdGhpcyBhbGwgZml0IHRvZ2V0aGVyPyBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgIGlzIHBhcnQgb2YgYG1tODF4X3lhcHNfaHdfb3BzLnJlYWRfcGt0c2AuIEl0JiMzOTtzIGNhbGxlZCBieSBgbW04MXhfeWFwc19yZWFkX3BrdHNgLCB3aGljaCBpcyB0aGVuIGNhbGxlZCBieSBgbW04MXhfeWFwc19yeF9oYW5kbGVyYCB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jYC4gVGhpcyBgcnhfaGFuZGxlcmAgaXMgY2FsbGVkIGJ5IGBtbTgxeF95YXBzX3dvcmtgLCB3aGljaCBpcyB0cmlnZ2VyZWQgYnkgdGhlIEhJRiB3b3JrIHF1ZXVlIHRvIGhhbmRsZSBSWCBldmVudHMuIFNvLCB0aGlzIGlzIHRoZSBjb3JlIG9mIHBhY2tldCByZWNlcHRpb24gZm9yIHRoaXMgZHJpdmVyLgoKVGhlIG5leHQgcG9pbnQgSSBuZWVkIHRvIGNvbnNpZGVyIGlzLCBhcmUgd2UgYWJsZSB0byByZWFjaCB0aGlzIGRyaXZlcj8gU3l6a2FsbGVyIGNhbiBlbXVsYXRlIFVTQiB3aXJlbGVzcyBkcml2ZXJzLiBUaGV5IHVzZSByYXcgVVNCIGdhZGdldCBlbXVsYXRpb24gd2l0aCBjYWxscyBsaWtlIGBzeXpfdXNiX2Nvbm5lY3RgLiBTbyB5ZXMsIHRoaXMgaXMgc29tZXRoaW5nIHdlIGNhbiBmdXp6LgoKTGV0JiMzOTtzIGxvb2sgYXQgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIGZvciB0aGlzIGRyaXZlci4gSW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvS2NvbmZpZ2AsIEkgc2VlIGBNTTgxWF9VU0JgIHdoaWNoIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYFVTQmAuIEFsc28gdGhlcmUmIzM5O3MgYFdMQU5fVkVORE9SX01PUlNFTUlDUk9gIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWdgLCB0aGF0IGlzIGRlcGVuZGVudCBvbiBgV0xBTmAuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGVzZSBjb25maWd1cmF0aW9ucyBhcmUgc2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlPTE0PW9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9NSUNST0NISVApICYjNDM7PSBtaWNyb2NoaXAvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZToxNTpvYmotJChDT05GSUdfV0xBTl9WRU5ET1JfTU9SU0VNSUNSTykgJiM0Mzs9IG1vcnNlbWljcm8vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZS0xNi1vYmotJChDT05GSUdfV0xBTl9WRU5ET1JfTlhQKSAmIzQzOz0gbnhwL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnOjI6Y29uZmlnIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0zLVx0Ym9vbCBcJiMzNDtNb3JzZSBNaWNybyBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnOjEzOmlmIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0xNC1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWc6MTU6ZW5kaWYgIyBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0MTk3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqRXhhbWluaW5nIHRoZSBNb3JzZSBNaWNybyBLY29uZmlnIEZpbGUqKgoKT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGF0IE1vcnNlIE1pY3JvIFdpLUZpIGRyaXZlci4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZ2AuIFRoaXMgS2NvbmZpZyBmaWxlIGlzIHdoZXJlIGFsbCB0aGUgaW1wb3J0YW50IGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgZHJpdmVyIGFyZSBkZWZpbmVkLiBJIGV4cGVjdCB0byBzZWUgdGhpbmdzIGxpa2UgdGhlIGFiaWxpdHkgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIGRyaXZlciBpdHNlbGYsIHBlcmhhcHMgb3B0aW9ucyBmb3IgZGlmZmVyZW50IGhhcmR3YXJlIHZhcmlhbnRzIGlmIHRoZXJlIGFyZSBhbnksIGxpa2VseSBkZWJ1ZyBmbGFncywgYW5kIG1heWJlIGV2ZW4gY2hvaWNlcyByZWxhdGVkIHRvIGZpcm13YXJlIGxvYWRpbmcgb3Igc3BlY2lmaWMgcHJvdG9jb2wgZmVhdHVyZXMuIEl0JiMzOTtzIGEgY3JpdGljYWwgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgaXMgY29udHJvbGxlZCBhbmQgd2hhdCBzZXR0aW5ncyBJIGNhbiB0d2Vhay4gSSB3YW50IHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGhpZ2gtbGV2ZWwgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueXRoaW5nIEkgY2FuIGltbWVkaWF0ZWx5IGxldmVyYWdlIHRvIGFkZHJlc3MgW2luc2VydCB5b3VyIHBhcnRpY3VsYXIgaXNzdWUgaGVyZSwgZS5nLiAmIzM0O29wdGltaXplIHBlcmZvcm1hbmNlJiMzNDsgb3IgJiMzNDtyZXNvbHZlIHRoYXQgcmVwb3J0ZWQgY29uZmxpY3QmIzM0O10uIEZyb20gdGhlcmUgSSB3aWxsIHVzZSB0aGlzIGluZm9ybWF0aW9uIHRvIGRldGVybWluZSB0aGUgbmV4dCBwaGFzZSBvZiBkZWJ1Z2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cbiAgIDM6XHRcdGJvb2wgXCYjMzQ7TW9yc2UgTWljcm8gZGV2aWNlc1wmIzM0O1xuICAgNDpcdFx0ZGVmYXVsdCB5XG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIElmIHlvdSBoYXZlIGEgd2lyZWxlc3MgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXG4gICA3Olx0XG4gICA4Olx0XHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxuICAgOTpcdFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsIHRoZVxuICAxMDpcdFx0ICBxdWVzdGlvbnMgYWJvdXQgdGhlc2UgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXG4gIDExOlx0XHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cbiAgMTI6XHRcbiAgMTM6XHRpZiBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXG4gIDE0Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvS2NvbmZpZ1wmIzM0O1xuICAxNTpcdGVuZGlmICMgV0xBTl9WRU5ET1JfTU9SU0VNSUNST1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDY5MgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipJbnZlc3RpZ2F0aW5nIFdMQU4gQ29uZmlndXJhdGlvbiBpbiB0aGUgS2VybmVsKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBwYXJlbnQgY29uZmlndXJhdGlvbiBmb3IgYFdMQU5gLiBUaGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGlzIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgcmVsZXZhbnQgZHJpdmVyIGRpcmVjdG9yeS4gU2luY2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB3aXJlbGVzcyBuZXR3b3JraW5nLCB0aGF0IHdvdWxkIGJlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYC4gTGV0JiMzOTtzIG5hdmlnYXRlIHRoZXJlIGFuZCB0YWtlIGEgbG9vay4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBgV0xBTmAgZGVmaW5lZCwgYW5kIG15IGh5cG90aGVzaXMgaXMgdGhhdCBpdCB3aWxsIGJlIGEgcGFyZW50IGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgdGhhdCBnb3Zlcm5zIHRoZSB2YXJpb3VzIHdpcmVsZXNzIG9wdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBoaWVyYXJjaHkgYW5kIGRlcGVuZGVuY2llcywgYW5kIHRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gVGhpcyBpcyBzdGFuZGFyZCBwcm9jZWR1cmUgd2hlbiBJJiMzOTttIHdvcmtpbmcgb24ga2VybmVsIGNvbmZpZ3VyYXRpb25zIGFuZCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBkaWZmZXJlbnQgZmVhdHVyZXMuIEkgc2hvdWxkIGJlIGFibGUgdG8gcXVpY2tseSBkZXRlcm1pbmUgaG93IGBXTEFOYCBmaXRzIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb3JzZW1pY3JvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc9Mjk9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnOjMwOnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWctMzEtc291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvTWFrZWZpbGU9MTQ9b2JqLSQoQ09ORklHX1dMQU5fVkVORE9SX01JQ1JPQ0hJUCkgJiM0Mzs9IG1pY3JvY2hpcC9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlOjE1Om9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPKSAmIzQzOz0gbW9yc2VtaWNyby9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlLTE2LW9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9OWFApICYjNDM7PSBueHAvXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnPTEzPWlmIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZzoxNDpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWctMTUtZW5kaWYgIyBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5oLTE1LSNkZWZpbmUgQkNGX0RBVEFCQVNFX1NJWkUgKDEwMjQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3Lmg6MTY6I2RlZmluZSBNTTgxWF9GV19ESVIgXCYjMzQ7bW9yc2VtaWNyby9tbTgxeFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5oLTE3LSNkZWZpbmUgTU04MVhfRldfRVhUIFwmIzM0Oy5iaW5cJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUzMjQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBXaXJlbGVzcyBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3Igd2lyZWxlc3MgZHJpdmVycy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gbmF2aWdhdGUgdG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG15IGluaXRpYWwgaW52ZXN0aWdhdGlvbiBhcm91bmQgbGluZXMgMjAgdGhyb3VnaCA0MC4gVGhhdCByYW5nZSBpcyB1c3VhbGx5IGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGNvcmUgd2lyZWxlc3MgZHJpdmVyIG9wdGlvbnMgYXJlIHN0cnVjdHVyZWQgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIG9yIGRlZmF1bHRzIG1pZ2h0IGJlIGRlZmluZWQuIEhvcGVmdWxseSwgSSYjMzk7bGwgYmUgYWJsZSB0byBxdWlja2x5IGdyYXNwIHRoZSByZWxldmFudCBrZXkgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGZyb20gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFdpcmVsZXNzIExBTiBkZXZpY2UgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRtZW51Y29uZmlnIFdMQU5cbiAgIDc6XHRcdGJvb2wgXCYjMzQ7V2lyZWxlc3MgTEFOXCYjMzQ7XG4gICA4Olx0XHRkZXBlbmRzIG9uICFTMzkwXG4gICA5Olx0XHRkZXBlbmRzIG9uIE5FVFxuICAxMDpcdFx0c2VsZWN0IFdJUkVMRVNTXG4gIDExOlx0XHRkZWZhdWx0IHlcbiAgMTI6XHRcdGhlbHBcbiAgMTM6XHRcdCAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIGFsbCB0aGUgcHJlIDgwMi4xMSBhbmQgODAyLjExIHdpcmVsZXNzXG4gIDE0Olx0XHQgIGRldmljZSBkcml2ZXJzLiBGb3IgYSBjb21wbGV0ZSBsaXN0IG9mIGRyaXZlcnMgYW5kIGRvY3VtZW50YXRpb25cbiAgMTU6XHRcdCAgb24gdGhlbSByZWZlciB0byB0aGUgd2lyZWxlc3Mgd2lraTpcbiAgMTY6XHRcbiAgMTc6XHRcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVyc1xuICAxODpcdFxuICAxOTpcdGlmIFdMQU5cbiAgMjA6XHRcbiAgMjE6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYWRtdGVrL0tjb25maWdcJiMzNDtcbiAgMjI6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWdcJiMzNDtcbiAgMjM6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvS2NvbmZpZ1wmIzM0O1xuICAyNDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9LY29uZmlnXCYjMzQ7XG4gIDI1Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL0tjb25maWdcJiMzNDtcbiAgMjY6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvS2NvbmZpZ1wmIzM0O1xuICAyNzpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWdcJiMzNDtcbiAgMjg6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZ1wmIzM0O1xuICAyOTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvS2NvbmZpZ1wmIzM0O1xuICAzMDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWdcJiMzNDtcbiAgMzE6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL0tjb25maWdcJiMzNDtcbiAgMzI6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcHVyZWxpZmkvS2NvbmZpZ1wmIzM0O1xuICAzMzpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvS2NvbmZpZ1wmIzM0O1xuICAzNDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL0tjb25maWdcJiMzNDtcbiAgMzU6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWdcJiMzNDtcbiAgMzY6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL0tjb25maWdcJiMzNDtcbiAgMzc6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvS2NvbmZpZ1wmIzM0O1xuICAzODpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy90aS9LY29uZmlnXCYjMzQ7XG4gIDM5Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL0tjb25maWdcJiMzNDtcbiAgNDA6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL0tjb25maWdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTYxMzgKCQkJCQkJCW91dHB1dDogMjE2CgkJCQkJCQl0aG91Z2h0czogOTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlZlcmlmeWluZyBXb3J0aEZ1enppbmcgZm9yIHRoZSBNTTgxeCBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGNvbmZpcm0gaWYgZnV6emluZyB0aGlzIHBhdGNoIGlzIHdhcnJhbnRlZC4gRmlyc3QsIEkgc2VlIHRoZSBjb3JlIGNoYW5nZSBpcyBpbiBgbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW1gIGFuZCBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jYCBmaWxlLiBTcGVjaWZpY2FsbHksIHdlJiMzOTtyZSBsb29raW5nIGF0IGlucHV0IHZhbGlkYXRpb24gbG9naWMgYmVpbmcgdXBkYXRlZCDigJMgYHBrdF9zaXplID09IDBgIGlzIG5vdyBgcGt0X3NpemUgJmx0Oz0gWUFQU19SRVNFUlZFRF9QQUdFX1NJWkVgIGFuZCB0aGVyZSYjMzk7cyBhIG5ldyBhbGlnbm1lbnQgY2hlY2suIFRoaXMgaXMgY3J1Y2lhbCBhcyBpdCBkaXJlY3RseSBpbXBhY3RzIHBhY2tldCBoYW5kbGluZywgYW5kIHZhbGlkYXRpb24gbG9naWMgaXMgYSBjbGFzc2ljIHRhcmdldCBmb3IgZnV6emluZy4KClRoaXMgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzLCB3aGljaCBpcyBmYW50YXN0aWMgYmVjYXVzZSB0aGF0IG1lYW5zIHdlIGNhbiBlYXNpbHkgcmVwbGljYXRlIHRoZSBlbnZpcm9ubWVudCB3aXRoIFFFTVUgb3IgZXZlbiBVU0IgUmF3IEdhZGdldCBzZXR1cCBmb3IgZWZmZWN0aXZlIGZ1enppbmcuIFRoZSBmYWN0IHRoYXQgYENPTkZJR19NTTgxWF9VU0JgIGVuYWJsZXMgdGhpcyBpcyBhIGdyZWVuIGxpZ2h0LgoKTm93LCBsZXQmIzM5O3MgZ2V0IHByZWNpc2Ugb24gdGhlIGltcG9ydGFudCBzeW1ib2xzLiBJJiMzOTt2ZSBub3RlZCB0aGF0IGBtbTgxeF9yZWFkX3BrdHNfaF9pc192YWxpZF9kZWxpbWAgaXMgc3RhdGljLCBwb3RlbnRpYWxseSBpbmxpbmVkIGludG8gYG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzYC4gQnV0IGV2ZW4gaWYgaW5saW5lZCwgaXQmIzM5O3Mgc3RpbGwgcGFydCBvZiB0aGUgY3JpdGljYWwgcGF0aC4gYG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzYCBpcyB0aGUgbWFpbiBmdW5jdGlvbiByZWFkaW5nIHBhY2tldHMgYW5kIGRvaW5nIGRlbGltaXRlciB2YWxpZGF0aW9uLiBgbW04MXhfeWFwc19yZWFkX3BrdHNgIGlzIGFsc28gaW1wb3J0YW50LCBzaW5jZSBpdCBjYWxscyB0aGUgYG9wcy0mZ3Q7cmVhZF9wa3RzYCBmdW5jdGlvbi4gU28sIGJhc2VkIG9uIHRoZSBjb2RlIGZsb3csIHRoZSByZWxldmFudCBzeW1ib2xzIGFyZToKCiogICBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgCiogICBgbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW1gCiogICBgbW04MXhfeWFwc19yZWFkX3BrdHNgCiogICBgbW04MXhfeWFwc19yeF9oYW5kbGVyYAoKSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYG1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltYCBpcyBpbmRlZWQgc3RhdGljIHdpdGhpbiBgeWFwc19ody5jYC4gYG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzYCBpcyBhbHNvIGBzdGF0aWNgLiBJJiMzOTt2ZSBhbHNvIHZlcmlmaWVkIHRoZSBjYWxsIGNoYWluIGZyb20gYG1tODF4X3lhcHNfcmVhZF9wa3RzYCAoaW4gYHlhcHMuY2ApIHRvIGB5YXBzLSZndDtvcHMtJmd0O3JlYWRfcGt0c2AsIGFuZCB0aGF0IGBtbTgxeF95YXBzX3J4X2hhbmRsZXJgIGNhbGxzIGBtbTgxeF95YXBzX3JlYWRfcGt0c2AuIEZ1cnRoZXJtb3JlLCBgbW04MXhfdXNiX3Byb2JlYCBpbiBgdXNiLmNgIGluaXRpYWxpemVzIHRoZSBVU0IgaW50ZXJmYWNlLCB0aHVzIGVzdGFibGlzaGluZyB0aGUgVVNCIGVudHJ5cG9pbnQuCgpHaXZlbiB0aGF0IHRoZSBwYXRjaCBpbnZvbHZlcyBjaGFuZ2VzIHRvIHBhY2tldCB2YWxpZGF0aW9uIGFuZCBhbGlnbm1lbnQgd2l0aGluIGEgd2lyZWxlc3MgZHJpdmVyIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbiwgYWxsIHRoZSByZXF1aXJlZCBlbGVtZW50cyBhcmUgaW4gcGxhY2UuIFRoZSBpZGVudGlmaWVkIGNvbmZpZ3VyYXRpb25zIGFuZCBzeW1ib2xzIGFyZSBjb3JyZWN0LCB3aGljaCBpcyBmdXJ0aGVyIGNvbmZpcm1hdGlvbiB0byBlbmFibGUgZnV6emluZy4gVGh1cywgSSYjMzk7bSBjb25maWRlbnQgdGhhdCBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgc2V0IHRvIGB0cnVlYCwgZ2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgZXhwbG9pdGluZyB2dWxuZXJhYmlsaXRpZXMgaW4gcGFja2V0IGhhbmRsaW5nIGxvZ2ljLgoKTm93LCBJJiMzOTttIHJlYWR5IHRvIHBvcHVsYXRlIHRoZSBgc2V0LXJlc3VsdHNgIGZpZWxkcyBhbmQgY2FsbCBpdCBhIGRheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTU9SU0VNSUNSTyYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TU04MVgmIzM0OywKICAgICYjMzQ7TU04MVhfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bW04MXhfeWFwc19od19yZWFkX3BrdHMmIzM0OywKICAgICYjMzQ7bW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW0mIzM0OywKICAgICYjMzQ7bW04MXhfeWFwc19yZWFkX3BrdHMmIzM0OywKICAgICYjMzQ7bW04MXhfeWFwc19yeF9oYW5kbGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYWNrZXQgcmVjZXB0aW9uIGFuZCBkZWxpbWl0ZXIgdmFsaWRhdGlvbiBsb2dpYyBpbiB0aGUgTW9yc2UgTWljcm8gTU04MXggd2lyZWxlc3MgZHJpdmVyIChkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYyksIGFkZGluZyBhbGlnbm1lbnQgdmVyaWZpY2F0aW9uIG9uIHJlbWFpbmluZyBieXRlcyBhbmQgc3RyaWN0ZXIgcGFja2V0IHNpemUgdmFsaWRhdGlvbiBhZ2FpbnN0IHJlc2VydmVkIHBhZ2UgYm91bmRzLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIGFuZCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtXTEFOJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX01PUlNFTUlDUk8mIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O01NODFYJiMzNDssCiAgICAmIzM0O01NODFYX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21tODF4X3lhcHNfaHdfcmVhZF9wa3RzJiMzNDssCiAgICAmIzM0O21tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltJiMzNDssCiAgICAmIzM0O21tODF4X3lhcHNfcmVhZF9wa3RzJiMzNDssCiAgICAmIzM0O21tODF4X3lhcHNfcnhfaGFuZGxlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFja2V0IHJlY2VwdGlvbiBhbmQgZGVsaW1pdGVyIHZhbGlkYXRpb24gbG9naWMgaW4gdGhlIE1vcnNlIE1pY3JvIE1NODF4IHdpcmVsZXNzIGRyaXZlciAoZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMpLCBhZGRpbmcgYWxpZ25tZW50IHZlcmlmaWNhdGlvbiBvbiByZW1haW5pbmcgYnl0ZXMgYW5kIHN0cmljdGVyIHBhY2tldCBzaXplIHZhbGlkYXRpb24gYWdhaW5zdCByZXNlcnZlZCBwYWdlIGJvdW5kcy4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgZGV2aWNlcyBhbmQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjE6Mjk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGhhcmRlbnMgaW5wdXQgdmFsaWRhdGlvbiBpbiB0aGUgTW9yc2UgTWljcm8gbW04MXggZHJpdmVyJiMzOTtzIFlBUFMgaGFyZHdhcmUgcGFja2V0IHJlYWRpbmcgbG9naWMgYnk6XG4xLiBFbnN1cmluZyBgcGt0X3NpemVgIChwaGFuZGxlIHNpemUpIGV4Y2VlZHMgYFlBUFNfUkVTRVJWRURfUEFHRV9TSVpFYCB0byBwcmV2ZW50IHVuZGVyZmxvd3MgaW4gYFlBUFNfREVMSU1fR0VUX1BLVF9TSVpFKClgLlxuMi4gVmFsaWRhdGluZyB0aGF0IGBieXRlc19yZW1haW5pbmdgIGlzIDQtYnl0ZSBhbGlnbmVkIGJlZm9yZSByZWFkaW5nIGRlbGltaXRlcnMgZnJvbSB0aGUgY2hpcCBidWZmZXIuXG5cblRoZXNlIGNoYW5nZXMgcHJldmVudCBwb3RlbnRpYWwgaW50ZWdlciB1bmRlcmZsb3csIG91dC1vZi1ib3VuZHMgcmVhZHMvd3JpdGVzLCBvciBwcm90b2NvbCBkZXN5bmNocm9uaXphdGlvbiB3aGVuIHBhcnNpbmcgaGFyZHdhcmUgcGFja2V0IGJ1ZmZlcnMuIEFueSBtZW1vcnkgc2FmZXR5IHZpb2xhdGlvbnMgaW4gdGhpcyBhcmVhIChlLmcuLCBuZWdhdGl2ZSBzaXplIHBhc3NlZCB0byBidWZmZXIgb3BlcmF0aW9ucyByZXN1bHRpbmcgaW4gb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcykgYXJlIGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgaW4gYnJhbmNoaW5nLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzY5MWY3OGIwZTM5MjZhOWI0ZjUxNTQ1ZWQyODAyZjJkMzFkOTBiZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDIxOjI4OjI3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYwppbmRleCAzZDY0MWQyM2MzNWJhLi45N2IyZmY5M2M2OWZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYwpAQCAtNDA3LDcgJiM0Mzs0MDcsNyBAQCBzdGF0aWMgYm9vbCBtbTgxeF9yZWFkX3BrdHNfaF9pc192YWxpZF9kZWxpbSh1MzIgZGVsaW0pCiAJaWYgKGNhbGNfY3JjICE9IFlBUFNfREVMSU1fR0VUX0NSQyhkZWxpbSkpCiAJCXJldHVybiBmYWxzZTsKIAotCWlmIChwa3Rfc2l6ZSA9PSAwKQomIzQzOwlpZiAocGt0X3NpemUgJmx0Oz0gWUFQU19SRVNFUlZFRF9QQUdFX1NJWkUpCiAJCXJldHVybiBmYWxzZTsKIAogCWlmICgocGt0X3NpemUgJiM0MzsgcGFkZGluZykgJmd0OyBZQVBTX01BWF9QS1RfU0laRV9CWVRFUykKQEAgLTQ1NSw2ICYjNDM7NDU1LDEwIEBAIHN0YXRpYyBpbnQgbW04MXhfeWFwc19od19yZWFkX3BrdHMoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMsCiAJCXJldHVybiAwOwogCWlmIChieXRlc19yZW1haW5pbmcgJmx0OyAwKQogCQlyZXR1cm4gYnl0ZXNfcmVtYWluaW5nOwomIzQzOwlpZiAoIUlTX0FMSUdORUQoYnl0ZXNfcmVtYWluaW5nLCBzaXplb2YodTMyKSkpIHsKJiM0MzsJCWRldl93YXJuKHlhcHMtJmd0O21vcnMtJmd0O2RldiwgJiMzNDt5YXBzIHRydW5jYXRlZCBkZWxpbWl0ZXImIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVJTzsKJiM0MzsJfQogCiAJaWYgKGJ5dGVzX3JlbWFpbmluZyAmZ3Q7IFlBUFNfSFdfV0lORE9XX1NJWkVfQllURVMpIHsKIAkJYnl0ZXNfcmVtYWluaW5nID0gWUFQU19IV19XSU5ET1dfU0laRV9CWVRFUzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMTAKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAxMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGl2aW5nIGludG8gdGhlIG1tODF4IFdpcmVsZXNzIERyaXZlcioqCgpPa2F5LCBzbyB0aGUgcGF0Y2ggaXMgc3VwcG9zZWRseSBuZXN0bGVkIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmNgLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTGV0JiMzOTtzIHN0YXJ0IGJ5IHNjcnV0aW5pemluZyB0aGF0IHNwZWNpZmljIGZpbGUuIEkgd2FudCB0byB6ZXJvIGluIG9uIHRoZSB2aWNpbml0eSBvZiBgbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW1gIGFuZCBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgLiBUaGVzZSBmdW5jdGlvbiBuYW1lcyBhcmUgc2NyZWFtaW5nIHBvdGVudGlhbCBmb3IgdGhlIGZpeCwgc28gbGV0JiMzOTtzIHVuZGVyc3RhbmQgdGhlaXIgY29udGV4dCBhbmQgaW50ZXJhY3Rpb25zLgoKTGV0JiMzOTtzIHB1bGwgdXAgdGhhdCBgeWFwc19ody5jYCBmaWxlIHVzaW5nIGByZWFkLWZpbGVgIGFuZCBnZXQgYSBnb29kIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZ3Jhc3AgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYmV0dGVyLiBUaGlzIGlzIHdoZXJlIHRoZSByZWFsIGludmVzdGlnYXRpb24gYmVnaW5zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzkwOlx0ZXhpdDpcbiAzOTE6XHRcdGlmIChiYXRjaF90eG5fbGVuIFx1MDAzZSAwKSB7XG4gMzkyOlx0XHRcdHJldCA9IG1tODF4X2RtX3dyaXRlKHlhcHMtXHUwMDNlbW9ycywgeWFwcy1cdTAwM2VhdXhfZGF0YS1cdTAwM2V5ZHNfYWRkcixcbiAzOTM6XHRcdFx0XHRcdCAgICAgdG9fY2hpcF9idWZmZXJfYWxpZ25lZCwgYmF0Y2hfdHhuX2xlbik7XG4gMzk0Olx0XHRcdCpudW1fcGt0c19zZW50ICYjNDM7PSBwa3RzX3BlbmRpbmc7XG4gMzk1Olx0XHR9XG4gMzk2Olx0XG4gMzk3Olx0XHRtbTgxeF95YXBzX2h3X3VubG9jayh5YXBzKTtcbiAzOTg6XHRcdHJldHVybiByZXQ7XG4gMzk5Olx0fVxuIDQwMDpcdFxuIDQwMTpcdHN0YXRpYyBib29sIG1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltKHUzMiBkZWxpbSlcbiA0MDI6XHR7XG4gNDAzOlx0XHR1OCBjYWxjX2NyYyA9IG1tODF4X3lhcHNfaHdfY3JjKGRlbGltKTtcbiA0MDQ6XHRcdGludCBwa3Rfc2l6ZSA9IFlBUFNfREVMSU1fR0VUX1BIQU5ETEVfU0laRShkZWxpbSk7XG4gNDA1Olx0XHRpbnQgcGFkZGluZyA9IFlBUFNfREVMSU1fR0VUX1BBRERJTkcoZGVsaW0pO1xuIDQwNjpcdFxuIDQwNzpcdFx0aWYgKGNhbGNfY3JjICE9IFlBUFNfREVMSU1fR0VUX0NSQyhkZWxpbSkpXG4gNDA4Olx0XHRcdHJldHVybiBmYWxzZTtcbiA0MDk6XHRcbiA0MTA6XHRcdGlmIChwa3Rfc2l6ZSBcdTAwM2M9IFlBUFNfUkVTRVJWRURfUEFHRV9TSVpFKVxuIDQxMTpcdFx0XHRyZXR1cm4gZmFsc2U7XG4gNDEyOlx0XG4gNDEzOlx0XHRpZiAoKHBrdF9zaXplICYjNDM7IHBhZGRpbmcpIFx1MDAzZSBZQVBTX01BWF9QS1RfU0laRV9CWVRFUylcbiA0MTQ6XHRcdFx0cmV0dXJuIGZhbHNlO1xuIDQxNTpcdFxuIDQxNjpcdFx0LyogUGt0IGxlbmd0aCAmIzQzOyBwYWRkaW5nIHNob3VsZCBub3QgcmVxdWlyZSBtb3JlIHBhZGRpbmcgKi9cbiA0MTc6XHRcdGlmIChZQVBTX0NBTENfUEFERElORyhwa3Rfc2l6ZSkgIT0gcGFkZGluZylcbiA0MTg6XHRcdFx0cmV0dXJuIGZhbHNlO1xuIDQxOTpcdFxuIDQyMDpcdFx0cmV0dXJuIHRydWU7XG4gNDIxOlx0fVxuIDQyMjpcdFxuIDQyMzpcdHN0YXRpYyBpbnQgbW04MXhfcmVhZF9wa3RzX2hfYnl0ZXNfcmVtYWluaW5nKHN0cnVjdCBtbTgxeF95YXBzICp5YXBzKVxuIDQyNDpcdHtcbiA0MjU6XHRcdHUzMiBieXRlc19pbl9xdWV1ZSA9IHlhcHMtXHUwMDNlYXV4X2RhdGEtXHUwMDNlc3RhdHVzX3JlZ3MuZmNfcnhfYnl0ZXNfaW5fcXVldWU7XG4gNDI2Olx0XHR1MzIgZGVsaW1fb3ZlcmhlYWQgPVxuIDQyNzpcdFx0XHR5YXBzLVx1MDAzZWF1eF9kYXRhLVx1MDAzZXN0YXR1c19yZWdzLmZjX251bV9wa3RzICogc2l6ZW9mKHUzMik7XG4gNDI4Olx0XHR1MzIgcmVzZXJ2ZWRfYnl0ZXMgPSB5YXBzLVx1MDAzZWF1eF9kYXRhLVx1MDAzZXN0YXR1c19yZWdzLmZjX251bV9wa3RzICpcbiA0Mjk6XHRcdFx0XHQgICAgIHlhcHMtXHUwMDNlYXV4X2RhdGEtXHUwMDNlcmVzZXJ2ZWRfeWFwc19wYWdlX3NpemU7XG4gNDMwOlx0XG4gNDMxOlx0XHRpZiAoV0FSTl9PTihieXRlc19pbl9xdWV1ZSBcdTAwM2UgSU5UX01BWCkgfHxcbiA0MzI6XHRcdCAgICBXQVJOX09OKGRlbGltX292ZXJoZWFkIFx1MDAzZSBJTlRfTUFYKSB8fFxuIDQzMzpcdFx0ICAgIFdBUk5fT04ocmVzZXJ2ZWRfYnl0ZXMgXHUwMDNlIElOVF9NQVgpKVxuIDQzNDpcdFx0XHRyZXR1cm4gLUVJTztcbiA0MzU6XHRcbiA0MzY6XHRcdHJldHVybiAoaW50KWJ5dGVzX2luX3F1ZXVlO1xuIDQzNzpcdH1cbiA0Mzg6XHRcbiA0Mzk6XHRzdGF0aWMgaW50IG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzKHN0cnVjdCBtbTgxeF95YXBzICp5YXBzLFxuIDQ0MDpcdFx0XHRcdFx0ICAgc3RydWN0IG1tODF4X3lhcHNfcGt0ICpwa3RzLFxuIDQ0MTpcdFx0XHRcdFx0ICAgaW50IG51bV9wa3RzX21heCwgaW50ICpudW1fcGt0c19yZWNlaXZlZClcbiA0NDI6XHR7XG4gNDQzOlx0XHRpbnQgcmV0O1xuIDQ0NDpcdFx0aW50IGkgPSAwO1xuIDQ0NTpcdFx0Y2hhciAqZnJvbV9jaGlwX2J1ZmZlcl9hbGlnbmVkID1cbiA0NDY6XHRcdFx0UFRSX0FMSUdOKHlhcHMtXHUwMDNlYXV4X2RhdGEtXHUwMDNlZnJvbV9jaGlwX2J1ZmZlcixcbiA0NDc6XHRcdFx0XHQgIG1tODF4X2J1c19nZXRfYWxpZ25tZW50KHlhcHMtXHUwMDNlbW9ycykpO1xuIDQ0ODpcdFx0Y2hhciAqcmVhZF9wdHIgPSBmcm9tX2NoaXBfYnVmZmVyX2FsaWduZWQ7XG4gNDQ5Olx0XHRpbnQgYnl0ZXNfcmVtYWluaW5nID0gbW04MXhfcmVhZF9wa3RzX2hfYnl0ZXNfcmVtYWluaW5nKHlhcHMpO1xuIDQ1MDpcdFx0Ym9vbCBhZ2FpbiA9IGZhbHNlO1xuIDQ1MTpcdFxuIDQ1MjpcdFx0Km51bV9wa3RzX3JlY2VpdmVkID0gMDtcbiA0NTM6XHRcbiA0NTQ6XHRcdGlmIChudW1fcGt0c19tYXggPT0gMCB8fCBieXRlc19yZW1haW5pbmcgPT0gMClcbiA0NTU6XHRcdFx0cmV0dXJuIDA7XG4gNDU2Olx0XHRpZiAoYnl0ZXNfcmVtYWluaW5nIFx1MDAzYyAwKVxuIDQ1NzpcdFx0XHRyZXR1cm4gYnl0ZXNfcmVtYWluaW5nO1xuIDQ1ODpcdFx0aWYgKCFJU19BTElHTkVEKGJ5dGVzX3JlbWFpbmluZywgc2l6ZW9mKHUzMikpKSB7XG4gNDU5Olx0XHRcdGRldl93YXJuKHlhcHMtXHUwMDNlbW9ycy1cdTAwM2VkZXYsIFwmIzM0O3lhcHMgdHJ1bmNhdGVkIGRlbGltaXRlclwmIzM0Oyk7XG4gNDYwOlx0XHRcdHJldHVybiAtRUlPO1xuIDQ2MTpcdFx0fVxuIDQ2MjpcdFxuIDQ2MzpcdFx0aWYgKGJ5dGVzX3JlbWFpbmluZyBcdTAwM2UgWUFQU19IV19XSU5ET1dfU0laRV9CWVRFUykge1xuIDQ2NDpcdFx0XHRieXRlc19yZW1haW5pbmcgPSBZQVBTX0hXX1dJTkRPV19TSVpFX0JZVEVTO1xuIDQ2NTpcdFx0XHRhZ2FpbiA9IHRydWU7XG4gNDY2Olx0XHR9XG4gNDY3Olx0XG4gNDY4Olx0XHQvKlxuIDQ2OTpcdFx0ICogVGhpcyBpcyBtb3JlIGNvYXJzZS1ncmFpbmVkIHRoYW4gaXQgbmVlZHMgdG8gYmUgLSBvbmNlIHRoZSBkYXRhXG4gNDcwOlx0XHQgKiBpcyByZWFkIGludG8gYSBsb2NhbCBidWZmZXIgdGhlIGxvY2sgY2FuIGJlIHJlbGVhc2VkLCBob3dldmVyXG4gNDcxOlx0XHQgKiBhY2Nlc3MgdG8gZnJvbV9jaGlwX2J1ZmZlciB3aWxsIG5lZWQgdG8gYmUgcHJvdGVjdGVkIHdpdGggaXRzXG4gNDcyOlx0XHQgKiBvd24gbG9ja1xuIDQ3MzpcdFx0ICovXG4gNDc0Olx0XHRyZXQgPSBtbTgxeF95YXBzX2h3X2xvY2soeWFwcyk7XG4gNDc1Olx0XHRpZiAocmV0KSB7XG4gNDc2Olx0XHRcdGRldl9kYmcoeWFwcy1cdTAwM2Vtb3JzLVx1MDAzZWRldiwgXCYjMzQ7eWFwcyBsb2NrIGZhaWxlZCAlZFwmIzM0OywgcmV0KTtcbiA0Nzc6XHRcdFx0cmV0dXJuIHJldDtcbiA0Nzg6XHRcdH1cbiA0Nzk6XHRcbiA0ODA6XHRcdC8qIFJlYWQgYWxsIGF2YWlsYWJsZSBwYWNrZXRzIHRvIHRoZSBidWZmZXIgKi9cbiA0ODE6XHRcdHJldCA9IG1tODF4X2RtX3JlYWQoeWFwcy1cdTAwM2Vtb3JzLCB5YXBzLVx1MDAzZWF1eF9kYXRhLVx1MDAzZXlzbF9hZGRyLFxuIDQ4MjpcdFx0XHRcdCAgICBmcm9tX2NoaXBfYnVmZmVyX2FsaWduZWQsIGJ5dGVzX3JlbWFpbmluZyk7XG4gNDgzOlx0XG4gNDg0Olx0XHRpZiAocmV0KVxuIDQ4NTpcdFx0XHRnb3RvIGV4aXQ7XG4gNDg2Olx0XG4gNDg3Olx0XHQvKiBTcGxpdCBzZXJpYWxpc2VkIHBhY2tldHMgZnJvbSBidWZmZXIgKi9cbiA0ODg6XHRcdHdoaWxlIChpIFx1MDAzYyBudW1fcGt0c19tYXggXHUwMDI2XHUwMDI2IGJ5dGVzX3JlbWFpbmluZyBcdTAwM2UgMCkge1xuIDQ4OTpcdFx0XHR1MzIgZGVsaW07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzMDAKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB3aGF0JiMzOTtzIGdvaW5nIHRocm91Z2ggbXkgbWluZCBhcyBJIGFwcHJvYWNoIHRoZSBjb2RlLCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb24sIGFuZCB0YWlsb3JlZCBmb3IgYSBmaWVsZCBleHBlcnQ6CgoqKkRpdmluZyBpbnRvIGBtbTgxeF95YXBzX2h3X3JlYWRfcGt0c2AqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBpbnRvIHRoaXMgYG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzYCBmdW5jdGlvbi4gR2l2ZW4gdGhlIG5hbWluZywgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB0byBiZSB0aGUgY29yZSBoYXJkd2FyZSBpbnRlcmZhY2UgZm9yIHBhY2tldCByZWNlcHRpb24gb24gdGhlIG1tODF4LCBsaWtlbHkgaW52b2x2aW5nIHNvbWUgaW50ZXJhY3Rpb24gd2l0aCBZQVBTIChZb3VyIEFwcGxpY2F0aW9uIFByb3RvY29sIFNlcnZpY2UsIEkgYXNzdW1lKS4gSSYjMzk7bGwgd2FudCB0byBxdWlja2x5IGFzY2VydGFpbiBhIGZldyB0aGluZ3M6IEZpcnN0LCBob3cgaXMgdGhpcyBmdW5jdGlvbiB0cmlnZ2VyZWQ/IElzIGl0IGludGVycnVwdC1kcml2ZW4sIHBvbGxlZCwgb3Igc29tZXRoaW5nIGVsc2U/IFNlY29uZCwgd2hhdCYjMzk7cyB0aGUgZ2VuZXJhbCBmbG93PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVk4oCUcG9pbnRlcnMgdG8gYnVmZmVycywgZGVzY3JpcHRvcnMsIGFuZCBhbnkgYXNzb2NpYXRlZCBjb250cm9sIHJlZ2lzdGVycy4gSSYjMzk7bSBnb2luZyB0byBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgYm90dGxlbmVja3MgcmlnaHQgYXdheSwgbGlrZSBhbnkgb2J2aW91cyBkYXRhIGNvcGllcyBvciBzeW5jaHJvbml6YXRpb24gaXNzdWVzIGlmIHdlIGFyZSBsb29raW5nIGF0IGEgc2hhcmVkIG1lbW9yeSBtb2RlbC4gQXJlIHRoZXkgdXNpbmcgRE1BPyBJZiBzbywgd2hhdCYjMzk7cyB0aGUgZGVzY3JpcHRvciBzZXR1cD8gSSYjMzk7bGwgYWxzbyBiZSB3YXRjaGluZyBmb3IgZXJyb3IgaGFuZGxpbmcuIElzIHRoZXJlIHJvYnVzdCBlcnJvciBjaGVja2luZyBvbiB0aGUgaGFyZHdhcmUgcmVhZHMsIGFuZCBhcmUgdGhlIGVycm9ycyBoYW5kbGVkIGdyYWNlZnVsbHk/IEZpbmFsbHksIEkgbmVlZCB0byBzZWUgaG93IHRoZSByZWNlaXZlZCBwYWNrZXRzIGFyZSBwYXNzZWQgb24gdXAgdGhlIHN0YWNrIOKAkyBhcmUgdGhleSBwdXQgb24gYSBxdWV1ZSwgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZSB1cHBlciBsYXllciwgb3I/IEkgbmVlZCB0byBzZWUgaWYgdGhlIGludGVyZmFjZSBpcyBvcHRpbWl6ZWQgZm9yIGhpZ2gtdGhyb3VnaHB1dCBvciBwcmlvcml0aXplcyBsb3ctbGF0ZW5jeSwgYW5kIHdoaWNoIHRyYWRlLW9mZnMgd2VyZSBtYWRlLiBUaGF0IHdpbGwgcmVhbGx5IGluZm9ybSBob3cgSSBtaWdodCBnbyBhYm91dCBhbnkgcGVyZm9ybWFuY2UgdHVuaW5nIGxhdGVyLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3ZlIGdvdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ4OCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDg4Olx0XHR3aGlsZSAoaSBcdTAwM2MgbnVtX3BrdHNfbWF4IFx1MDAyNlx1MDAyNiBieXRlc19yZW1haW5pbmcgXHUwMDNlIDApIHtcbiA0ODk6XHRcdFx0dTMyIGRlbGltO1xuIDQ5MDpcdFx0XHRpbnQgdG90YWxfbGVuO1xuIDQ5MTpcdFx0XHRpbnQgcGt0X3NpemU7XG4gNDkyOlx0XG4gNDkzOlx0XHRcdGRlbGltID0gbGUzMl90b19jcHUoKigoX19sZTMyICopcmVhZF9wdHIpKTtcbiA0OTQ6XHRcdFx0cmVhZF9wdHIgJiM0Mzs9IHNpemVvZihkZWxpbSk7XG4gNDk1Olx0XHRcdGJ5dGVzX3JlbWFpbmluZyAtPSBzaXplb2YoZGVsaW0pO1xuIDQ5NjpcdFxuIDQ5NzpcdFx0XHQvKiBFbmQgb2Ygc3RyZWFtICovXG4gNDk4Olx0XHRcdGlmICghZGVsaW0pXG4gNDk5Olx0XHRcdFx0YnJlYWs7XG4gNTAwOlx0XG4gNTAxOlx0XHRcdGlmICghbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW0oZGVsaW0pKSB7XG4gNTAyOlx0XHRcdFx0LypcbiA1MDM6XHRcdFx0XHQgKiBUaGlzIHdpbGwgc3RhcnQgYSBodW50IGZvciBhIHZhbGlkIGRlbGltaXRlci4gR2l2ZW5cbiA1MDQ6XHRcdFx0XHQgKiB0aGUgQ1JDIGlzIG9ubHkgNyBiaXQgaXQmIzM5O3MgcG9zc2libGUgdG8gZmluZCBhblxuIDUwNTpcdFx0XHRcdCAqIGludmFsaWQgYmxvY2sgd2l0aCBhIHZhbGlkIGRlbGltaXRlciwgbGVhZGluZyB0b1xuIDUwNjpcdFx0XHRcdCAqIGRlc3luY2hyb25pc2F0aW9uLlxuIDUwNzpcdFx0XHRcdCAqL1xuIDUwODpcdFx0XHRcdGRldl93YXJuKHlhcHMtXHUwMDNlbW9ycy1cdTAwM2VkZXYsIFwmIzM0O3lhcHMgaW52YWxpZCBkZWxpbVwmIzM0Oyk7XG4gNTA5Olx0XHRcdFx0YnJlYWs7XG4gNTEwOlx0XHRcdH1cbiA1MTE6XHRcbiA1MTI6XHRcdFx0LyogVG90YWwgbGVuZ3RoIGluIGNoaXAgKi9cbiA1MTM6XHRcdFx0cGt0X3NpemUgPSBZQVBTX0RFTElNX0dFVF9QS1RfU0laRShkZWxpbSk7XG4gNTE0Olx0XHRcdHRvdGFsX2xlbiA9IHBrdF9zaXplICYjNDM7IFlBUFNfREVMSU1fR0VUX1BBRERJTkcoZGVsaW0pO1xuIDUxNTpcdFxuIDUxNjpcdFx0XHRpZiAocGt0c1tpXS5za2IpXG4gNTE3Olx0XHRcdFx0ZGV2X2Vycih5YXBzLVx1MDAzZW1vcnMtXHUwMDNlZGV2LCBcJiMzNDt5YXBzIHBhY2tldCBsZWFrXCYjMzQ7KTtcbiA1MTg6XHRcbiA1MTk6XHRcdFx0LyogU0tCIGRvZXNuJiMzOTt0IHdhbnQgcGFkZGluZyAqL1xuIDUyMDpcdFx0XHRwa3RzW2ldLnNrYiA9IGRldl9hbGxvY19za2IocGt0X3NpemUpO1xuIDUyMTpcdFx0XHRpZiAoIXBrdHNbaV0uc2tiKSB7XG4gNTIyOlx0XHRcdFx0cmV0ID0gLUVOT01FTTtcbiA1MjM6XHRcdFx0XHRkZXZfZXJyKHlhcHMtXHUwMDNlbW9ycy1cdTAwM2VkZXYsIFwmIzM0O3lhcHMgbm8gbWVtIGZvciBza2JcJiMzNDspO1xuIDUyNDpcdFx0XHRcdGdvdG8gZXhpdDtcbiA1MjU6XHRcdFx0fVxuIDUyNjpcdFx0XHRza2JfcHV0KHBrdHNbaV0uc2tiLCBwa3Rfc2l6ZSk7XG4gNTI3Olx0XG4gNTI4Olx0XHRcdGlmICh0b3RhbF9sZW4gXHUwMDNjPSBieXRlc19yZW1haW5pbmcpIHtcbiA1Mjk6XHRcdFx0XHRtZW1jcHkocGt0c1tpXS5za2ItXHUwMDNlZGF0YSwgcmVhZF9wdHIsIHBrdF9zaXplKTtcbiA1MzA6XHRcdFx0XHRyZWFkX3B0ciAmIzQzOz0gdG90YWxfbGVuO1xuIDUzMTpcdFx0XHRcdGJ5dGVzX3JlbWFpbmluZyAtPSB0b3RhbF9sZW47XG4gNTMyOlx0XHRcdH0gZWxzZSB7XG4gNTMzOlx0XHRcdFx0Y29uc3QgaW50IHJlYWRfb3ZlcmhhbmdfbGVuID1cbiA1MzQ6XHRcdFx0XHRcdHRvdGFsX2xlbiAtIGJ5dGVzX3JlbWFpbmluZztcbiA1MzU6XHRcdFx0XHRjb25zdCBpbnQgcGt0X292ZXJoYW5nX2xlbiA9IHBrdF9zaXplIC0gYnl0ZXNfcmVtYWluaW5nO1xuIDUzNjpcdFxuIDUzNzpcdFx0XHRcdG1lbWNweShwa3RzW2ldLnNrYi1cdTAwM2VkYXRhLCByZWFkX3B0ciwgYnl0ZXNfcmVtYWluaW5nKTtcbiA1Mzg6XHRcdFx0XHRyZWFkX3B0ciA9IGZyb21fY2hpcF9idWZmZXJfYWxpZ25lZDtcbiA1Mzk6XHRcbiA1NDA6XHRcdFx0XHRyZXQgPSBtbTgxeF9kbV9yZWFkKFxuIDU0MTpcdFx0XHRcdFx0eWFwcy1cdTAwM2Vtb3JzLFxuIDU0MjpcdFx0XHRcdFx0LyogT2Zmc2V0IGJ5IDQgdG8gYXZvaWQgcmV0cnkgbG9naWMgKi9cbiA1NDM6XHRcdFx0XHRcdHlhcHMtXHUwMDNlYXV4X2RhdGEtXHUwMDNleXNsX2FkZHIgJiM0MzsgNCwgcmVhZF9wdHIsXG4gNTQ0Olx0XHRcdFx0XHRyZWFkX292ZXJoYW5nX2xlbik7XG4gNTQ1Olx0XG4gNTQ2Olx0XHRcdFx0aWYgKHJldClcbiA1NDc6XHRcdFx0XHRcdGdvdG8gZXhpdDtcbiA1NDg6XHRcbiA1NDk6XHRcdFx0XHRtZW1jcHkocGt0c1tpXS5za2ItXHUwMDNlZGF0YSAmIzQzOyBieXRlc19yZW1haW5pbmcsIHJlYWRfcHRyLFxuIDU1MDpcdFx0XHRcdCAgICAgICBwa3Rfb3ZlcmhhbmdfbGVuKTtcbiA1NTE6XHRcdFx0XHRyZWFkX3B0ciAmIzQzOz0gcmVhZF9vdmVyaGFuZ19sZW47XG4gNTUyOlx0XHRcdFx0Ynl0ZXNfcmVtYWluaW5nID0gMDtcbiA1NTM6XHRcdFx0fVxuIDU1NDpcdFxuIDU1NTpcdFx0XHQqbnVtX3BrdHNfcmVjZWl2ZWQgJiM0Mzs9IDE7XG4gNTU2Olx0XHRcdGkmIzQzOyYjNDM7O1xuIDU1NzpcdFx0fVxuIDU1ODpcdFxuIDU1OTpcdFx0aWYgKGFnYWluKVxuIDU2MDpcdFx0XHRyZXQgPSAtRUFHQUlOO1xuIDU2MTpcdFxuIDU2MjpcdGV4aXQ6XG4gNTYzOlx0XHRtbTgxeF95YXBzX2h3X3VubG9jayh5YXBzKTtcbiA1NjQ6XHRcdHJldHVybiByZXQ7XG4gNTY1Olx0fVxuIDU2NjpcdFxuIDU2NzpcdHN0YXRpYyBpbnQgbW04MXhfeWFwc19od191cGRhdGVfc3RhdHVzKHN0cnVjdCBtbTgxeF95YXBzICp5YXBzKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTE0CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2g6IElucHV0IFZhbGlkYXRpb24gJmFtcDsgUG90ZW50aWFsIFJpc2tzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJJiMzOTttIHNlZWluZyBhIGNoYW5nZSBpbiBgbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW1gIHdoZXJlIHRoZXkmIzM5O3JlIG5vdyBjaGVja2luZyBgcGt0X3NpemUgJmx0Oz0gWUFQU19SRVNFUlZFRF9QQUdFX1NJWkVgIGluc3RlYWQgb2YganVzdCBgcGt0X3NpemUgPT0gMGAuIFRoYXQmIzM5O3MgdGhlIGZpcnN0IGNsdWUuIFRoZW4sIGluIGBtbTgxeF95YXBzX2h3X3JlYWRfcGt0c2AsIHRoZXJlJiMzOTtzIGEgbmV3IGFsaWdubWVudCBjaGVjazogYCFJU19BTElHTkVEKGJ5dGVzX3JlbWFpbmluZywgc2l6ZW9mKHUzMikpYC4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgYWx3YXlzOiBhcmUgd2UgaW50cm9kdWNpbmcgb3IgY2hhbmdpbmcgYW55dGhpbmcgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvcm1hdGlvbiBsZWFrcywgb3IgYW55IG90aGVyIHBvdGVudGlhbCBzZWN1cml0eSBpc3N1ZXM/CgpMb29raW5nIGRlZXBlciwgYGZyb21fY2hpcF9idWZmZXJfYWxpZ25lZGAgaXMgcG9wdWxhdGVkIGJ5IGBtbTgxeF9kbV9yZWFkYCBmcm9tIGhhcmR3YXJlLCBhbmQgdGhhdCYjMzk7cyB3aGVyZSB0aGUgZGF0YSBmb3IgdGhlIHBhY2tldHMgY29tZXMgZnJvbS4gIFRoZW4sIHRoZSBjb2RlIGNvcGllcyBkYXRhIGludG8gYHNrYmAgYnVmZmVycyB1c2luZyBgbWVtY3B5YC4gIFRoZSBjaGFuZ2UgaXRzZWxmIHNlZW1zIHRvIGJlIGFkZGluZyBtb3JlIHJvYnVzdCBpbnB1dCB2YWxpZGF0aW9uOyByZWplY3RpbmcgYHBrdF9zaXplYCBpZiBpdCYjMzk7cyB0b28gc21hbGwsIGFuZCByZWplY3RpbmcgbWlzYWxpZ25lZCBgYnl0ZXNfcmVtYWluaW5nYC4KCkkgdGhpbmsgdGhpcyBpcyBhbGwgYWJvdXQgbWFraW5nIHN1cmUgd2UmIzM5O3JlIGdldHRpbmcgdmFsaWQgZGF0YSBmcm9tIHRoZSBoYXJkd2FyZS4gIEdpdmVuIHRoZSBkYXRhIGZsb3csIHRoZXJlJiMzOTtzIG5vIHJlYXNvbiB0byB0aGluayBpdCB3aWxsIGNhdXNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2Vzc2VzLiAgQWxsIHRoZSBgc2tiYHMgYXJlIGFsbG9jYXRlZCwgYW5kIHRoZSBkYXRhIGlzIHJlYWQgZGlyZWN0bHkgZnJvbSB0aGUgaGFyZHdhcmUsIHNvIGl0IHNob3VsZCBiZSBmaW5lLiBJdCBpcyBvbmx5IGFib3V0IHN0cmljdGVyIHZhbGlkYXRpb24gYW5kIGVycm9yIGNoZWNraW5nIG9mIHRoZSBoYXJkd2FyZSBpbnB1dC4gTm93LCBJIG5lZWQgdG8gc2VlIGV4YWN0bHkgd2hhdCBgWUFQU19SRVNFUlZFRF9QQUdFX1NJWkVgIGFuZCBgWUFQU19ERUxJTV9HRVRfUEhBTkRMRV9TSVpFYCBhcmUsIGp1c3QgdG8gaGF2ZSBhIGNvbXBsZXRlIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1lBUFNfUkVTRVJWRURfUEFHRV9TSVpFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jLTIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmM6MjE6I2RlZmluZSBZQVBTX1JFU0VSVkVEX1BBR0VfU0laRSAyNTZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jLTIyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jLTM1LSNkZWZpbmUgWUFQU19ERUxJTV9HRVRfUEtUX1NJWkUoX2RlbGltKSBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmM6MzY6XHQoKChfZGVsaW0pIFx1MDAyNiAweDNGRkYpIC0gWUFQU19SRVNFUlZFRF9QQUdFX1NJWkUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYy0zNy0jZGVmaW5lIFlBUFNfREVMSU1fU0VUX1BLVF9TSVpFKF9wa3Rfc2l6ZSkgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jOjM4Olx0KCgoX3BrdF9zaXplKSBcdTAwMjYgMHgzRkZGKSAmIzQzOyBZQVBTX1JFU0VSVkVEX1BBR0VfU0laRSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jLTM5LSNkZWZpbmUgWUFQU19ERUxJTV9HRVRfUEhBTkRMRV9TSVpFKF9kZWxpbSkgKCgoX2RlbGltKSBcdTAwMjYgMHgzRkZGKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYz00MDE9c3RhdGljIGJvb2wgbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW0odTMyIGRlbGltKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jLTQwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jOjQxMDpcdGlmIChwa3Rfc2l6ZSBcdTAwM2M9IFlBUFNfUkVTRVJWRURfUEFHRV9TSVpFKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMtNDExLVx0XHRyZXR1cm4gZmFsc2U7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyNzgKCQkJCQkJCW91dHB1dDogMjI5CgkJCQkJCQl0aG91Z2h0czogMjcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFBhY2tldCBTaXplIENhbGN1bGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBZQVBTX0RFTElNX0dFVF9QS1RfU0laRWAgbWFjcm86IGAoKChfZGVsaW0pICZhbXA7IDB4M0ZGRikgLSBZQVBTX1JFU0VSVkVEX1BBR0VfU0laRSlgLiBJdCYjMzk7cyBjbGVhciB0aGF0IHRoaXMgY2FsY3VsYXRpb24gY291bGQgbGVhZCB0byBwcm9ibGVtcyBpZiB0aGUgcGFja2V0IHNpemUsIHdoaWNoIGlzIGluaXRpYWxseSBkZXRlcm1pbmVkIGJ5IHRoZSBsb3dlciBiaXRzIG9mIHRoZSBkZWxpbWl0ZXIgKGBwa3Rfc2l6ZWApLCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYFlBUFNfUkVTRVJWRURfUEFHRV9TSVpFYC4gVGhhdCB3b3VsZCByZXN1bHQgaW4gZWl0aGVyIGEgbmVnYXRpdmUgcGFja2V0IHNpemUgb3IsIGF0IGJlc3QsIHplcm8uIFRoaXMgc2VlbXMgbGlrZSBhIHRleHRib29rIGNhc2UgZm9yIHBvdGVudGlhbCB1bmRlcmZsb3cgb3IsIG1vcmUgY3JpdGljYWxseSwgaW52YWxpZCBwYWNrZXQgc2l6ZSBjYWxjdWxhdGlvbnMgd2hlbiB3ZSYjMzk7cmUgdW5wYWNraW5nIHBhY2tldHMgZnJvbSB0aGUgY2hpcC4KClRoZSBgaWYgKHBrdF9zaXplICZsdDs9IFlBUFNfUkVTRVJWRURfUEFHRV9TSVpFKWAgY2hlY2sgdGhhdCYjMzk7cyBpbiBwbGFjZSBkaXJlY3RseSBhZGRyZXNzZXMgYW5kIGNvcnJlY3RzIHRoaXMgcG90ZW50aWFsIHVuZGVyZmxvdy9pbnZhbGlkIHNpemUgc2NlbmFyaW8uIEdvb2QsIGdvb2QuIEFuZCB0aGUgYCFJU19BTElHTkVEKGJ5dGVzX3JlbWFpbmluZywgc2l6ZW9mKHUzMikpYCBjb25kaXRpb24gZW5zdXJlcyB0aGUgZGF0YSBidWZmZXIgaXMgNC1ieXRlIGFsaWduZWQsIHdoaWNoIGlzIGNydWNpYWwgZm9yIGRhdGEgaW50ZWdyaXR5LgoKTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgYWx3YXlzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBvZiBjb3Vyc2UuIEJ1dCBhZnRlciBhIHJldmlldywgSSBjYW4gY29uZmlkZW50bHkgc2F5IHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzIGhlcmUuIFRoaXMgZml4ZXMgcG90ZW50aWFsIGJ1ZmZlciB1bmRlcmZsb3csIG91dC1vZi1ib3VuZHMgbWVtb3J5IGlzc3Vlcywgb3IgbG9naWMgZXJyb3JzLCB3aGljaCBLQVNBTiB3aWxsIGhlbHAgZGV0ZWN0LiBDcnVjaWFsbHksIEkmIzM5O20gbm90IGludHJvZHVjaW5nIG9yIG1vZGlmeWluZyBhbnkgY29kZSB0aGF0IGNvdWxkIGxlYWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkgbGVha2luZyB0byB1c2Vyc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgcmVhZHMuCgpUaGVyZWZvcmUsIEkmIzM5O2xsIHVwZGF0ZSB0aGUgYXNzb2NpYXRlZCBpc3N1ZSB3aXRoIGBOZWVkc0tNU0FOOiBmYWxzZWAgYW5kIHByb3ZpZGUgYSBjbGVhciBleHBsYW5hdGlvbiBvZiB0aGVzZSBwb2ludHMgaW4gdGhlIGNvbW1pdCBtZXNzYWdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBoYXJkZW5zIGlucHV0IHZhbGlkYXRpb24gaW4gdGhlIE1vcnNlIE1pY3JvIG1tODF4IGRyaXZlciYjMzk7cyBZQVBTIGhhcmR3YXJlIHBhY2tldCByZWFkaW5nIGxvZ2ljIGJ5OlxuMS4gRW5zdXJpbmcgYHBrdF9zaXplYCAocGhhbmRsZSBzaXplKSBleGNlZWRzIGBZQVBTX1JFU0VSVkVEX1BBR0VfU0laRWAgdG8gcHJldmVudCB1bmRlcmZsb3dzIGluIGBZQVBTX0RFTElNX0dFVF9QS1RfU0laRSgpYC5cbjIuIFZhbGlkYXRpbmcgdGhhdCBgYnl0ZXNfcmVtYWluaW5nYCBpcyA0LWJ5dGUgYWxpZ25lZCBiZWZvcmUgcmVhZGluZyBkZWxpbWl0ZXJzIGZyb20gdGhlIGNoaXAgYnVmZmVyLlxuXG5UaGVzZSBjaGFuZ2VzIHByZXZlbnQgcG90ZW50aWFsIGludGVnZXIgdW5kZXJmbG93LCBvdXQtb2YtYm91bmRzIHJlYWRzL3dyaXRlcywgb3IgcHJvdG9jb2wgZGVzeW5jaHJvbml6YXRpb24gd2hlbiBwYXJzaW5nIGhhcmR3YXJlIHBhY2tldCBidWZmZXJzLiBBbnkgbWVtb3J5IHNhZmV0eSB2aW9sYXRpb25zIGluIHRoaXMgYXJlYSAoZS5nLiwgbmVnYXRpdmUgc2l6ZSBwYXNzZWQgdG8gYnVmZmVyIG9wZXJhdGlvbnMgcmVzdWx0aW5nIGluIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIGFyZSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGluIGJyYW5jaGluZywgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGhhcmRlbnMgaW5wdXQgdmFsaWRhdGlvbiBpbiB0aGUgTW9yc2UgTWljcm8gbW04MXggZHJpdmVyJiMzOTtzIFlBUFMgaGFyZHdhcmUgcGFja2V0IHJlYWRpbmcgbG9naWMgYnk6XG4xLiBFbnN1cmluZyBgcGt0X3NpemVgIChwaGFuZGxlIHNpemUpIGV4Y2VlZHMgYFlBUFNfUkVTRVJWRURfUEFHRV9TSVpFYCB0byBwcmV2ZW50IHVuZGVyZmxvd3MgaW4gYFlBUFNfREVMSU1fR0VUX1BLVF9TSVpFKClgLlxuMi4gVmFsaWRhdGluZyB0aGF0IGBieXRlc19yZW1haW5pbmdgIGlzIDQtYnl0ZSBhbGlnbmVkIGJlZm9yZSByZWFkaW5nIGRlbGltaXRlcnMgZnJvbSB0aGUgY2hpcCBidWZmZXIuXG5cblRoZXNlIGNoYW5nZXMgcHJldmVudCBwb3RlbnRpYWwgaW50ZWdlciB1bmRlcmZsb3csIG91dC1vZi1ib3VuZHMgcmVhZHMvd3JpdGVzLCBvciBwcm90b2NvbCBkZXN5bmNocm9uaXphdGlvbiB3aGVuIHBhcnNpbmcgaGFyZHdhcmUgcGFja2V0IGJ1ZmZlcnMuIEFueSBtZW1vcnkgc2FmZXR5IHZpb2xhdGlvbnMgaW4gdGhpcyBhcmVhIChlLmcuLCBuZWdhdGl2ZSBzaXplIHBhc3NlZCB0byBidWZmZXIgb3BlcmF0aW9ucyByZXN1bHRpbmcgaW4gb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcykgYXJlIGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgaW4gYnJhbmNoaW5nLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyODoyOC4xNjIwOTM3NThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTkxODQ4NDE2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJXTEFOXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJNTTgxWFwiLFxuICAgIFwiTU04MVhfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibW04MXhfeWFwc19od19yZWFkX3BrdHNcIixcbiAgICBcIm1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltXCIsXG4gICAgXCJtbTgxeF95YXBzX3JlYWRfcGt0c1wiLFxuICAgIFwibW04MXhfeWFwc19yeF9oYW5kbGVyXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBoYXJkZW5zIGlucHV0IHZhbGlkYXRpb24gaW4gdGhlIE1vcnNlIE1pY3JvIG1tODF4IGRyaXZlcidzIFlBUFMgaGFyZHdhcmUgcGFja2V0IHJlYWRpbmcgbG9naWMgYnk6XFxuMS4gRW5zdXJpbmcgYHBrdF9zaXplYCAocGhhbmRsZSBzaXplKSBleGNlZWRzIGBZQVBTX1JFU0VSVkVEX1BBR0VfU0laRWAgdG8gcHJldmVudCB1bmRlcmZsb3dzIGluIGBZQVBTX0RFTElNX0dFVF9QS1RfU0laRSgpYC5cXG4yLiBWYWxpZGF0aW5nIHRoYXQgYGJ5dGVzX3JlbWFpbmluZ2AgaXMgNC1ieXRlIGFsaWduZWQgYmVmb3JlIHJlYWRpbmcgZGVsaW1pdGVycyBmcm9tIHRoZSBjaGlwIGJ1ZmZlci5cXG5cXG5UaGVzZSBjaGFuZ2VzIHByZXZlbnQgcG90ZW50aWFsIGludGVnZXIgdW5kZXJmbG93LCBvdXQtb2YtYm91bmRzIHJlYWRzL3dyaXRlcywgb3IgcHJvdG9jb2wgZGVzeW5jaHJvbml6YXRpb24gd2hlbiBwYXJzaW5nIGhhcmR3YXJlIHBhY2tldCBidWZmZXJzLiBBbnkgbWVtb3J5IHNhZmV0eSB2aW9sYXRpb25zIGluIHRoaXMgYXJlYSAoZS5nLiwgbmVnYXRpdmUgc2l6ZSBwYXNzZWQgdG8gYnVmZmVyIG9wZXJhdGlvbnMgcmVzdWx0aW5nIGluIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIGFyZSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGluIGJyYW5jaGluZywgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFja2V0IHJlY2VwdGlvbiBhbmQgZGVsaW1pdGVyIHZhbGlkYXRpb24gbG9naWMgaW4gdGhlIE1vcnNlIE1pY3JvIE1NODF4IHdpcmVsZXNzIGRyaXZlciAoZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMpLCBhZGRpbmcgYWxpZ25tZW50IHZlcmlmaWNhdGlvbiBvbiByZW1haW5pbmcgYnl0ZXMgYW5kIHN0cmljdGVyIHBhY2tldCBzaXplIHZhbGlkYXRpb24gYWdhaW5zdCByZXNlcnZlZCBwYWdlIGJvdW5kcy4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgZGV2aWNlcyBhbmQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjE6Mjg6MjguMTYyMDk5Njc4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDUyNjcyNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3NjkxZjc4YjBlMzkyNmE5YjRmNTE1NDVlZDI4MDJmMmQzMWQ5MGJlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgU2VwIDEwIDIxOjI4OjI3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmNcXG5pbmRleCAzZDY0MWQyM2MzNWJhLi45N2IyZmY5M2M2OWZmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmNcXG5AQCAtNDA3LDcgKzQwNyw3IEBAIHN0YXRpYyBib29sIG1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltKHUzMiBkZWxpbSlcXG4gXFx0aWYgKGNhbGNfY3JjICE9IFlBUFNfREVMSU1fR0VUX0NSQyhkZWxpbSkpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFxuLVxcdGlmIChwa3Rfc2l6ZSA9PSAwKVxcbitcXHRpZiAocGt0X3NpemUgXFx1MDAzYz0gWUFQU19SRVNFUlZFRF9QQUdFX1NJWkUpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFxuIFxcdGlmICgocGt0X3NpemUgKyBwYWRkaW5nKSBcXHUwMDNlIFlBUFNfTUFYX1BLVF9TSVpFX0JZVEVTKVxcbkBAIC00NTUsNiArNDU1LDEwIEBAIHN0YXRpYyBpbnQgbW04MXhfeWFwc19od19yZWFkX3BrdHMoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMsXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXHRpZiAoYnl0ZXNfcmVtYWluaW5nIFxcdTAwM2MgMClcXG4gXFx0XFx0cmV0dXJuIGJ5dGVzX3JlbWFpbmluZztcXG4rXFx0aWYgKCFJU19BTElHTkVEKGJ5dGVzX3JlbWFpbmluZywgc2l6ZW9mKHUzMikpKSB7XFxuK1xcdFxcdGRldl93YXJuKHlhcHMtXFx1MDAzZW1vcnMtXFx1MDAzZWRldiwgXFxcInlhcHMgdHJ1bmNhdGVkIGRlbGltaXRlclxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVJTztcXG4rXFx0fVxcbiBcXG4gXFx0aWYgKGJ5dGVzX3JlbWFpbmluZyBcXHUwMDNlIFlBUFNfSFdfV0lORE9XX1NJWkVfQllURVMpIHtcXG4gXFx0XFx0Ynl0ZXNfcmVtYWluaW5nID0gWUFQU19IV19XSU5ET1dfU0laRV9CWVRFUztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjE6Mjg6MjguNjY4MDUwODIxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo3MDYwODY4Njc3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJXTEFOXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJNTTgxWFwiLFxuICAgIFwiTU04MVhfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibW04MXhfeWFwc19od19yZWFkX3BrdHNcIixcbiAgICBcIm1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltXCIsXG4gICAgXCJtbTgxeF95YXBzX3JlYWRfcGt0c1wiLFxuICAgIFwibW04MXhfeWFwc19yeF9oYW5kbGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhY2tldCByZWNlcHRpb24gYW5kIGRlbGltaXRlciB2YWxpZGF0aW9uIGxvZ2ljIGluIHRoZSBNb3JzZSBNaWNybyBNTTgxeCB3aXJlbGVzcyBkcml2ZXIgKGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jKSwgYWRkaW5nIGFsaWdubWVudCB2ZXJpZmljYXRpb24gb24gcmVtYWluaW5nIGJ5dGVzIGFuZCBzdHJpY3RlciBwYWNrZXQgc2l6ZSB2YWxpZGF0aW9uIGFnYWluc3QgcmVzZXJ2ZWQgcGFnZSBib3VuZHMuIFRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGRldmljZXMgYW5kIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzY5MWY3OGIwZTM5MjZhOWI0ZjUxNTQ1ZWQyODAyZjJkMzFkOTBiZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDIxOjI4OjI3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuY1xuaW5kZXggM2Q2NDFkMjNjMzViYS4uOTdiMmZmOTNjNjlmZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuY1xuQEAgLTQwNyw3ICs0MDcsNyBAQCBzdGF0aWMgYm9vbCBtbTgxeF9yZWFkX3BrdHNfaF9pc192YWxpZF9kZWxpbSh1MzIgZGVsaW0pXG4gXHRpZiAoY2FsY19jcmMgIT0gWUFQU19ERUxJTV9HRVRfQ1JDKGRlbGltKSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuLVx0aWYgKHBrdF9zaXplID09IDApXG4rXHRpZiAocGt0X3NpemUgXHUwMDNjPSBZQVBTX1JFU0VSVkVEX1BBR0VfU0laRSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuIFx0aWYgKChwa3Rfc2l6ZSArIHBhZGRpbmcpIFx1MDAzZSBZQVBTX01BWF9QS1RfU0laRV9CWVRFUylcbkBAIC00NTUsNiArNDU1LDEwIEBAIHN0YXRpYyBpbnQgbW04MXhfeWFwc19od19yZWFkX3BrdHMoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMsXG4gXHRcdHJldHVybiAwO1xuIFx0aWYgKGJ5dGVzX3JlbWFpbmluZyBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIGJ5dGVzX3JlbWFpbmluZztcbitcdGlmICghSVNfQUxJR05FRChieXRlc19yZW1haW5pbmcsIHNpemVvZih1MzIpKSkge1xuK1x0XHRkZXZfd2Fybih5YXBzLVx1MDAzZW1vcnMtXHUwMDNlZGV2LCBcInlhcHMgdHJ1bmNhdGVkIGRlbGltaXRlclwiKTtcbitcdFx0cmV0dXJuIC1FSU87XG4rXHR9XG4gXG4gXHRpZiAoYnl0ZXNfcmVtYWluaW5nIFx1MDAzZSBZQVBTX0hXX1dJTkRPV19TSVpFX0JZVEVTKSB7XG4gXHRcdGJ5dGVzX3JlbWFpbmluZyA9IFlBUFNfSFdfV0lORE9XX1NJWkVfQllURVM7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyODoyOC42NjgwNTIyMTFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMjQ2MDUzNzc3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFN5emthbGxlciBGdXp6aW5nIFRyaWFnZSBQYXRjaCoqXG5cbk9rYXksIGhlcmUncyB3aGF0IEknbSB0aGlua2luZy4gVGhlIHVzZXIgd2FudHMgbWUgdG8gdmV0IHRoaXMgcGF0Y2ggZm9yIHN5emthbGxlciBmdXp6aW5nIHRyaWFnZS4gRmlyc3QsIEknbSBnb2luZyB0byBydW4gYSBxdWljayByaXNrIGFuYWx5c2lzLiBUaGlzIHNlZW1zIGxpa2UgaXQncyBwcmV0dHkgbG93LXN0YWtlcywgYSBjb2RlIHJldmlldyBvciBwYXRjaCB0cmlhZ2Ugc3BlY2lmaWNhbGx5IGZvciB0aGUgTGludXgga2VybmVsIGRyaXZlciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmNgLiBHaXZlbiB0aGF0IGNvbnRleHQsIGl0IGxvb2tzIGJlbmlnbiBvciBkZWZlbnNpdmUsIHNvbWV0aGluZyB0byBpbXByb3ZlIGZ1enppbmcgY29uZmlndXJhdGlvbi4gU28sIHllYWgsIHdlIHNob3VsZCBwcm9jZWVkIHdpdGggdGhpcyByZXF1ZXN0LlxuXG5Ob3csIGxldCdzIGRpdmUgaW50byB0aGUgcGF0Y2ggaXRzZWxmLiBPa2F5LCBJIHNlZSB0aGUgZGlmZi4gVGhlIGNvcmUgY2hhbmdlIGZvY3VzZXMgb24gdGhlIGBtbTgxeF9yZWFkX3BrdHNfaF9pc192YWxpZF9kZWxpbWAgZnVuY3Rpb24sIGFuZCBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgLiBJdCBsb29rcyBsaWtlIHRoZXkndmUgbW9kaWZpZWQgdGhlIHBhY2tldCBzaXplIHZhbGlkYXRpb24gbG9naWMgd2l0aGluIGBtbTgxeF9yZWFkX3BrdHNfaF9pc192YWxpZF9kZWxpbWAuIFRoZSBvbGQgY2hlY2sganVzdCBydWxlZCBvdXQgemVyby1zaXplZCBwYWNrZXRzOyBub3csIHRoZSBjb25kaXRpb24gaXMgYHBrdF9zaXplIFx1MDAzYz0gWUFQU19SRVNFUlZFRF9QQUdFX1NJWkVgLiBBbHNvLCBhIGNoZWNrIGZvciBhbGlnbmVkIHJlYWQgc2l6ZSBoYXMgYmVlbiBhZGRlZCBpbnRvIGBtbTgxeF95YXBzX2h3X3JlYWRfcGt0c2AuIEl0IHNlZW1zIGxpa2UgdGhlIGdvYWwgaXMgdG8gbWFrZSB0aGUgZnV6emluZyBtb3JlIHJvYnVzdCBieSBwcmV2ZW50aW5nIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93cyBvciB1bmRlcmZsb3dzIG9yIGhhbmRsaW5nIHRydW5jYXRlZCByZWFkcy5cblxuQmVmb3JlIEkgZ28gZnVydGhlciwgSSdkIGxpa2UgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgYnJvYWRlciBjb250ZXh0LiBXaGF0IGtpbmQgb2YgYnVzIG9yIGRldmljZSBhcmUgd2UgZGVhbGluZyB3aXRoIGhlcmU/IElzIHRoaXMgU0RJTywgU1BJLCBVU0IsIG9yIHNvbWV0aGluZyBlbHNlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUgdG8gZnVsbHkgYXNzZXNzIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuIEknbGwgbmVlZCB0byB1c2UgZWl0aGVyIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBnZXQgdGhlIGxheSBvZiB0aGUgbGFuZCB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vYC4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwOTgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MDksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyODo0MS4xMjg1OTE5ODhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE1NjEzNzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1tODF4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDQ4NDcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZz0xMz1pZiBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnOjE0OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0xNS1lbmRpZiAjIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9NYWtlZmlsZToyOm9iai0kKENPTkZJR19NTTgxWCkgKz0gbW04MXgvXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlLTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZTozOm9iai0kKENPTkZJR19NTTgxWCkgKz0gbW04MXhfY29yZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZS00LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6NTptbTgxeF9jb3JlLXkgKz0gY29yZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZTo2Om1tODF4X2NvcmUteSArPSBtYWMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6NzptbTgxeF9jb3JlLXkgKz0gaHcub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6ODptbTgxeF9jb3JlLXkgKz0gZncub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6OTptbTgxeF9jb3JlLXkgKz0gY29tbWFuZC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZToxMDptbTgxeF9jb3JlLXkgKz0gcHMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MTE6bW04MXhfY29yZS15ICs9IHNrYnEub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MTI6bW04MXhfY29yZS15ICs9IHlhcHNfaHcub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MTM6bW04MXhfY29yZS15ICs9IHlhcHMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MTQ6bW04MXhfY29yZS15ICs9IHJjLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjE1Om1tODF4X2NvcmUteSArPSBtbXJjLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX01NODFYX1VTQikgKz0gbW04MXhfdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjE4Om1tODF4X3VzYi15ICs9IHVzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZS0xOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19NTTgxWF9TRElPKSArPSBtbTgxeF9zZGlvLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjIxOm1tODF4X3NkaW8teSArPSBzZGlvLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtMTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoxMjplbnVtIG1tODF4X2J1c190eXBlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTEzLVxcdE1NODFYX0JVU19UWVBFX1VTQixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoxNzpzdHJ1Y3QgbW04MXhfYnVzX29wcyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoxODpcXHRpbnQgKCpkbV9yZWFkKShzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBhZGRyLCB1OCAqZGF0YSwgaW50IGxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoxOTpcXHRpbnQgKCpkbV93cml0ZSkoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkciwgY29uc3QgdTggKmRhdGEsIGludCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MjA6XFx0aW50ICgqcmVnMzJfcmVhZCkoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkciwgdTMyICpkYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjIxOlxcdGludCAoKnJlZzMyX3dyaXRlKShzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBhZGRyLCB1MzIgZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoyMjpcXHRpbnQgKCpkaWdpdGFsX3Jlc2V0KShzdHJ1Y3QgbW04MXggKm1vcnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MjM6XFx0dm9pZCAoKnNldF9idXNfZW5hYmxlKShzdHJ1Y3QgbW04MXggKm1vcnMsIGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjI0OlxcdHZvaWQgKCpjb25maWdfYnVyc3RfbW9kZSkoc3RydWN0IG1tODF4ICptb3JzLCBib29sIGVuYWJsZV9idXJzdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoyNTpcXHR2b2lkICgqY2xhaW0pKHN0cnVjdCBtbTgxeCAqbW9ycyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoyNjpcXHR2b2lkICgqc2V0X2lycSkoc3RydWN0IG1tODF4ICptb3JzLCBib29sIGVuYWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoyNzpcXHR2b2lkICgqcmVsZWFzZSkoc3RydWN0IG1tODF4ICptb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTI4LVxcdHVuc2lnbmVkIGludCBidWxrX2FsaWdubWVudDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDozNzovKiBtbTgxeF9kbV9yZWFkIC0gbGVuIG11c3QgYmUgcm91bmRlZCB1cCB0byB0aGUgbmVhcmVzdCA0LWJ5dGUgYm91bmRhcnkgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjM4OnN0YXRpYyBpbmxpbmUgaW50IG1tODF4X2RtX3JlYWQoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkciwgdTggKmRhdGEsIGludCBsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC0zOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6NDM6c3RhdGljIGlubGluZSBpbnQgbW04MXhfZG1fd3JpdGUoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkciwgY29uc3QgdTggKmRhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC00NC1cXHRcXHRcXHRcXHQgaW50IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDo0OTpzdGF0aWMgaW5saW5lIGludCBtbTgxeF9yZWczMl9yZWFkKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGFkZHIsIHUzMiAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTUwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDo1NDpzdGF0aWMgaW5saW5lIGludCBtbTgxeF9yZWczMl93cml0ZShzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBhZGRyLCB1MzIgZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDo1OTpzdGF0aWMgaW5saW5lIGludCBtbTgxeF9idXNfZGlnaXRhbF9yZXNldChzdHJ1Y3QgbW04MXggKm1vcnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC02MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6Njc6c3RhdGljIGlubGluZSB2b2lkIG1tODF4X3NldF9idXNfZW5hYmxlKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC02OC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6NzI6c3RhdGljIGlubGluZSB2b2lkIG1tODF4X2J1c19jb25maWdfYnVyc3RfbW9kZShzdHJ1Y3QgbW04MXggKm1vcnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC03My1cXHRcXHRcXHRcXHRcXHQgICAgICAgYm9vbCBlbmFibGVfYnVyc3QpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6Nzk6c3RhdGljIGlubGluZSB2b2lkIG1tODF4X2NsYWltX2J1cyhzdHJ1Y3QgbW04MXggKm1vcnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC04MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6ODQ6c3RhdGljIGlubGluZSB2b2lkIG1tODF4X2J1c19zZXRfaXJxKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC04NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6ODk6c3RhdGljIGlubGluZSB2b2lkIG1tODF4X3JlbGVhc2VfYnVzKHN0cnVjdCBtbTgxeCAqbW9ycylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDo5NDpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBtbTgxeF9idXNfZ2V0X2FsaWdubWVudChzdHJ1Y3QgbW04MXggKm1vcnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC05NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz0yNz1zdHJ1Y3QgaG9zdF9jbWRfcmVzcF9jYiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozMzpzdGF0aWMgaW50IG1tODF4X2NtZF90eChzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBob3N0X2NtZF9yZXNwICpyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM0LVxcdFxcdFxcdHN0cnVjdCBob3N0X2NtZF9yZXEgKnJlcSwgdTMyIGxlbmd0aCwgdTMyIHRpbWVvdXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00MS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjQyOlxcdHN0cnVjdCBtbTgxeF9za2JxICpjbWRfcSA9IG1tODF4X2hpZl9nZXRfdHhfY21kX3F1ZXVlKG1vcnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQzLVxcdHN0cnVjdCBob3N0X2NtZF9yZXNwX2NiICpyZXNwX2NiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTg6XFx0bW04MXhfcHNfZGlzYWJsZShtb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjYzOlxcdFxcdHNrYiA9IG1tODF4X3NrYnFfYWxsb2Nfc2tiKGNtZF9xLCBjbWRfbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy02NC1cXHRcXHRpZiAoIXNrYikge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtODMtXFx0XFx0dGltZW91dCA9IHRpbWVvdXQgPyB0aW1lb3V0IDogSE9TVF9DTURfREVGQVVMVF9USU1FT1VUX01TO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjg0OlxcdFxcdHJldCA9IG1tODF4X3NrYnFfc2tiX3R4KGNtZF9xLCBcXHUwMDI2c2tiLCBOVUxMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTg1LVxcdFxcdFxcdFxcdFxcdE1NODFYX1NLQl9DSEFOX0NPTU1BTkQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtODgtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjg5OlxcdFxcdFxcdGRldl9lcnIobW9ycy1cXHUwMDNlZGV2LCBcXFwibW04MXhfc2ticV90eCBmYWlsOiAlZFxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtOTAtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xMjEtXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZjbWRfcS1cXHUwMDNlbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTIyOlxcdFxcdG1tODF4X3NrYnFfc2tiX2ZpbmlzaChjbWRfcSwgc2tiLCBOVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xMjMtXFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmNtZF9xLVxcdTAwM2Vsb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTEyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoxMjk6XFx0bW04MXhfcHNfZW5hYmxlKG1vcnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTEzMC1cXHRtdXRleF91bmxvY2soXFx1MDAyNm1vcnMtXFx1MDAzZWNtZF93YWl0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoxNDY6aW50IG1tODF4X2NtZF9yZXNwX3Byb2Nlc3Moc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE0Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTQ4LVxcdGludCBsZW5ndGgsIHJldCA9IC1FU1JDSDsgLyogTm8gc3VjaCBwcm9jZXNzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTQ5OlxcdHN0cnVjdCBtbTgxeF9za2JxICpjbWRfcSA9IG1tODF4X2hpZl9nZXRfdHhfY21kX3F1ZXVlKG1vcnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE1MC1cXHRzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqc3JjX3Jlc3AgPSAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKikoc2tiLVxcdTAwM2VkYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE2My1cXHRpZiAoIUhPU1RfQ01EX0lTX1JFU1Aoc3JjX3Jlc3ApKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTY0OlxcdFxcdHJldCA9IG1tODF4X21hY19ldmVudF9yZWN2KG1vcnMsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTY1LVxcdFxcdGdvdG8gZXhpdF9mcmVlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjE3MDpcXHRjbWRfc2tiID0gbW04MXhfc2ticV90eF9wZW5kaW5nKGNtZF9xKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNzEtXFx0aWYgKGNtZF9za2IpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoxNzI6XFx0XFx0bW04MXhfc2ticV9wdWxsX2hkcl9wb3N0X3R4KGNtZF9za2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE3My1cXHRcXHRyZXEgPSAoc3RydWN0IGhvc3RfY21kX3JlcSAqKWNtZF9za2ItXFx1MDAzZWRhdGE7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjMyOmludCBtbTgxeF9jbWRfc3RhX3N0YXRlKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYsIHUxNiBhaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjMzLVxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjQ2OlxcdHJldHVybiBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcXHUwMDI2cmVxLCAwLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNDctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI0OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyNDk6aW50IG1tODF4X2NtZF9hZGRfaWYoc3RydWN0IG1tODF4ICptb3JzLCB1MTYgKnZpZl9pZCwgY29uc3QgdTggKmFkZHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjUwLVxcdFxcdCAgICAgZW51bSBubDgwMjExX2lmdHlwZSB0eXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjI3MTpcXHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXFx1MDAyNnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjcyLVxcdFxcdFxcdCAgIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI3OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyNzk6aW50IG1tODF4X2NtZF9nZXRfY2FwYWJpbGl0aWVzKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2IHZpZl9pZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyODA6XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBtbTgxeF9md19jYXBzICpjYXBhYmlsaXRpZXMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjgxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyODk6XFx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIChzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqKVxcdTAwMjZyc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjkwLVxcdFxcdFxcdCAgIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgc2l6ZW9mKHJzcCksIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjk0LVxcdGNhcGFiaWxpdGllcy1cXHUwMDNlYW1wZHVfbXNzID0gcnNwLmNhcGFiaWxpdGllcy5hbXBkdV9tc3M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6Mjk1OlxcdGNhcGFiaWxpdGllcy1cXHUwMDNlbW04MXhfbW1zc19vZmZzZXQgPSByc3AubW9yc2VfbW1zc19vZmZzZXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjk2LVxcdGNhcGFiaWxpdGllcy1cXHUwMDNlYmVhbWZvcm1lZV9zdHNfY2FwYWJpbGl0eSA9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MzA4OmludCBtbTgxeF9jbWRfZ2V0X21heF90eHBvd2VyKHN0cnVjdCBtbTgxeCAqbW9ycywgczMyICpvdXRfcG93ZXJfbWJtKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMwOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MzE2OlxcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilcXHUwMDI2cmVzcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMTctXFx0XFx0XFx0ICAgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjMyNDppbnQgbW04MXhfY21kX2h3X3NjYW4oc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfaHdfc2Nhbl9wYXJhbXMgKnBhcmFtcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMjUtXFx0XFx0ICAgICAgYm9vbCBzdG9yZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMzMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozMzM6XFx0Y21kX3NpemUgPSBtbTgxeF9od19zY2FuX2hfZ2V0X2NtZF9zaXplKHBhcmFtcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzM0LVxcdGNtZF9zaXplID0gUk9VTkRfQllURVNfVE9fV09SRChjbWRfc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNTItXFx0XFx0cmVxLVxcdTAwM2Vkd2VsbF90aW1lX21zID0gY3B1X3RvX2xlMzIocGFyYW1zLVxcdTAwM2Vkd2VsbF90aW1lX21zKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozNTM6XFx0XFx0YnVmID0gbW04MXhfaHdfc2Nhbl9oX2luc2VydF90bHZzKHBhcmFtcywgYnVmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNTQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzU4LVxcdHJlcS1cXHUwMDNlaGRyLmxlbiA9IGNwdV90b19sZTE2KCh1MTYpKChidWYgLSAodTggKilyZXEpIC0gc2l6ZW9mKHJlcS1cXHUwMDNlaGRyKSkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjM1OTpcXHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilyZXEsIDAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM2MC1cXHRrZnJlZShyZXEpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjM2NTppbnQgbW04MXhfY21kX3NldF90eHBvd2VyKHN0cnVjdCBtbTgxeCAqbW9ycywgczMyICpvdXRfcG93ZXJfbWJtLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM2Ni1cXHRcXHRcXHQgIGludCB0eHBvd2VyX21ibSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozNzU6XFx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIChzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqKVxcdTAwMjZyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM3Ni1cXHRcXHRcXHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIHNpemVvZihyZXNwKSwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MzgzOmludCBtbTgxeF9jbWRfc2V0X2NoYW5uZWwoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgb3BfY2hhbl9mcmVxX2h6LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM4NC1cXHRcXHRcXHQgIHU4IHByaV8xbWh6X2NoYW5faWR4LCB1OCBvcF9id19taHosIHU4IHByaV9id19taHosXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zOTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6Mzk4OlxcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilcXHUwMDI2cmVzcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zOTktXFx0XFx0XFx0ICAgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjQwNjppbnQgbW04MXhfY21kX2Rpc2FibGVfa2V5KHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDA3LVxcdFxcdFxcdCAgdTE2IGFpZCwgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjQxOTpcXHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgMCwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDIwLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00MjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDIyOmludCBtbTgxeF9jbWRfaW5zdGFsbF9rZXkoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00MjMtXFx0XFx0XFx0ICB1MTYgYWlkLCBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00NDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDQ2OlxcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilcXHUwMDI2cmVzcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00NDctXFx0XFx0XFx0ICAgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjQ1NzppbnQgbW04MXhfY21kX2NmZ19tdWx0aWNhc3RfZmlsdGVyKHN0cnVjdCBtbTgxeCAqbW9ycyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0NTg6XFx0XFx0XFx0XFx0ICAgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDU5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0NzU6XFx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopcmVxLCAwLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00NzYtXFx0a2ZyZWUocmVxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0ODA6aW50IG1tODF4X2NtZF9jZmdfYnNzKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2IHZpZl9pZCwgdTE2IGJlYWNvbl9pbnQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDgxLVxcdFxcdCAgICAgIHUxNiBkdGltX3BlcmlvZCwgdTMyIGNzc2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDg5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjQ5MDpcXHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgMCwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDkxLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00OTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDkzOmludCBtbTgxeF9jbWRfY29uZmlnX2JlYWNvbl90aW1lcihzdHJ1Y3QgbW04MXggKm1vcnMsIHZvaWQgKm1tODF4X3ZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00OTQtXFx0XFx0XFx0XFx0ICBib29sIGVuYWJsZWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDk1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0OTY6XFx0c3RydWN0IG1tODF4X3ZpZiAqdmlmID0gbW04MXhfdmlmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ5Ny1cXHRzdHJ1Y3QgaG9zdF9jbWRfcmVxX2Jzc19iZWFjb25fY29uZmlnIHJlcSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1MDM6XFx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIDAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUwNC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjUwNjppbnQgbW04MXhfY21kX3NldF9wcyhzdHJ1Y3QgbW04MXggKm1vcnMsIGJvb2wgZW5hYmxlZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MDcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjUxMzpcXHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MTQtXFx0XFx0XFx0ICAgIEhPU1RfQ01EX1BPV0VSU0FWRV9USU1FT1VUX01TKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1MTc6aW50IG1tODF4X2NtZF9jZmdfcW9zKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3F1ZXVlX3BhcmFtcyAqcGFyYW1zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUxOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTI5OlxcdHJldHVybiBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcXHUwMDI2cmVxLCAwLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MzAtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUzMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1MzI6aW50IG1tODF4X2NtZF9ybV9pZihzdHJ1Y3QgbW04MXggKm1vcnMsIHUxNiB2aWZfaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTMzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1Mzg6XFx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIDAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUzOS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjU0MTppbnQgbW04MXhfY21kX3NldF9mcmFnX3RocmVzaG9sZChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBmcmFnX3RocmVzaG9sZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NDIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjU1MDpcXHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgMCwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTUxLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTUzOmludCBtbTgxeF9jbWRfZ2V0X2Rpc2FibGVkX2NoYW5uZWxzKFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjU1NDpcXHRzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBob3N0X2NtZF9yZXNwX2dldF9kaXNhYmxlZF9jaGFubmVscyAqcmVzcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NTUtXFx0dWludCByZXNwX2xlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1NjE6XFx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilyZXNwLCBcXHUwMDI2cmVxLCByZXNwX2xlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NjItXFx0XFx0XFx0ICAgIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6MTk6c3RydWN0IG1tODF4X3F1ZXVlX3BhcmFtcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC0yMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDoyMTplbnVtIG1tODF4X2NtZF9yZXR1cm5fY29kZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtMjItXFx0TU04MVhfUkVUX1NVQ0NFU1MgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg9NDQ9c3RydWN0IGhvc3RfY21kX2V2ZW50IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjQ5OmludCBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NTA6aW50IG1tODF4X2NtZF9hZGRfaWYoc3RydWN0IG1tODF4ICptb3JzLCB1MTYgKnZpZl9pZCwgY29uc3QgdTggKmFkZHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtNTEtXFx0XFx0ICAgICBlbnVtIG5sODAyMTFfaWZ0eXBlIHR5cGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjUyOmludCBtbTgxeF9jbWRfZ2V0X2NhcGFiaWxpdGllcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHUxNiB2aWZfaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NTM6XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBtbTgxeF9md19jYXBzICpjYXBhYmlsaXRpZXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjU0OmludCBtbTgxeF9jbWRfY2ZnX3FvcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF9xdWV1ZV9wYXJhbXMgKnBhcmFtcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NTU6aW50IG1tODF4X2NtZF9jb25maWdfYmVhY29uX3RpbWVyKHN0cnVjdCBtbTgxeCAqbW9ycywgdm9pZCAqbW04MXhfdmlmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTU2LVxcdFxcdFxcdFxcdCAgYm9vbCBlbmFibGVkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo1NzppbnQgbW04MXhfY21kX2NmZ19ic3Moc3RydWN0IG1tODF4ICptb3JzLCB1MTYgdmlmX2lkLCB1MTYgYmVhY29uX2ludCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC01OC1cXHRcXHQgICAgICB1MTYgZHRpbV9wZXJpb2QsIHUzMiBjc3NpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NTk6aW50IG1tODF4X2NtZF9zZXRfY2hhbm5lbChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBvcF9jaGFuX2ZyZXFfaHosXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtNjAtXFx0XFx0XFx0ICB1OCBwcmlfMW1oel9jaGFuX2lkeCwgdTggb3BfYndfbWh6LCB1OCBwcmlfYndfbWh6LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTYxLVxcdFxcdFxcdCAgczMyICpwb3dlcl9tYm0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjYyOmludCBtbTgxeF9jbWRfZ2V0X21heF90eHBvd2VyKHN0cnVjdCBtbTgxeCAqbW9ycywgczMyICpvdXRfcG93ZXJfbWJtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo2MzppbnQgbW04MXhfY21kX3NldF90eHBvd2VyKHN0cnVjdCBtbTgxeCAqbW9ycywgczMyICpvdXRfcG93ZXJfbWJtLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTY0LVxcdFxcdFxcdCAgaW50IHR4cG93ZXJfbWJtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo2NTppbnQgbW04MXhfY21kX2h3X3NjYW4oc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfaHdfc2Nhbl9wYXJhbXMgKnBhcmFtcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC02Ni1cXHRcXHQgICAgICBib29sIHN0b3JlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo2NzppbnQgbW04MXhfY21kX3NldF9wcyhzdHJ1Y3QgbW04MXggKm1vcnMsIGJvb2wgZW5hYmxlZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6Njg6aW50IG1tODF4X2NtZF9jZmdfbXVsdGljYXN0X2ZpbHRlcihzdHJ1Y3QgbW04MXggKm1vcnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6Njk6XFx0XFx0XFx0XFx0ICAgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjcwOmludCBtbTgxeF9jbWRfc3RhX3N0YXRlKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYsIHUxNiBhaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtNzEtXFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC03Mi1cXHRcXHRcXHRlbnVtIGllZWU4MDIxMV9zdGFfc3RhdGUgc3RhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjczOmludCBtbTgxeF9jbWRfaW5zdGFsbF9rZXkoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC03NC1cXHRcXHRcXHQgIHUxNiBhaWQsIHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTc2LVxcdFxcdFxcdCAgZW51bSBob3N0X2NtZF9hZXNfa2V5X2xlbiBsZW5ndGgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjc3OmludCBtbTgxeF9jbWRfZGlzYWJsZV9rZXkoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC03OC1cXHRcXHRcXHQgIHUxNiBhaWQsIHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6Nzk6aW50IG1tODF4X2NtZF9ybV9pZihzdHJ1Y3QgbW04MXggKm1vcnMsIHUxNiB2aWZfaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjgwOmludCBtbTgxeF9jbWRfc2V0X2ZyYWdfdGhyZXNob2xkKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGZyYWdfdGhyZXNob2xkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo4MTppbnQgbW04MXhfY21kX2dldF9kaXNhYmxlZF9jaGFubmVscyhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo4MjpcXHRzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBob3N0X2NtZF9yZXNwX2dldF9kaXNhYmxlZF9jaGFubmVscyAqcmVzcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC04My1cXHR1aW50IHJlc3BfbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjExOnN0YXRpYyBpbnQgbW04MXhfY29yZV9hdHRhY2hfcmVncyhzdHJ1Y3QgbW04MXggKm1vcnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTU6XFx0bW04MXhfY2xhaW1fYnVzKG1vcnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjE2OlxcdHJldCA9IG1tODF4X3JlZzMyX3JlYWQobW9ycywgTU04MTA4X1JFR19DSElQX0lELCBcXHUwMDI2bW9ycy1cXHUwMDNlY2hpcF9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTc6XFx0bW04MXhfcmVsZWFzZV9idXMobW9ycyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0yNi1cXHRcXHRtb3JzLVxcdTAwM2VyZWdzID0gXFx1MDAyNm1tODEwOF9yZWdzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjI3OlxcdFxcdG1vcnMtXFx1MDAzZWhpZi5vcHMgPSBcXHUwMDI2bW04MXhfeWFwc19vcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMjgtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0zNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzozNjpzdGF0aWMgdm9pZCBtbTgxeF9jb3JlX2luaXRfbWFjX2FkZHIoc3RydWN0IG1tODF4ICptb3JzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTM3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzozODpcXHRpbnQgcmV0ID0gbW04MXhfaHdfb3RwX2dldF9tYWNfYWRkcihtb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0zOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjQ0OmNoYXIgKm1tODF4X2NvcmVfZ2V0X2Z3X3BhdGgodTMyIGNoaXBfaWQsIHUzMiBmd192ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNTgtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjU5OkVYUE9SVF9TWU1CT0xfR1BMKG1tODF4X2NvcmVfZ2V0X2Z3X3BhdGgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjYxOnN0cnVjdCBtbTgxeCAqbW04MXhfY29yZV9hbGxvYyhzaXplX3QgcHJpdl9zaXplLCBzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNjIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjYzOlxcdHJldHVybiBtbTgxeF9tYWNfYWxsb2MocHJpdl9zaXplLCBkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTY0LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo2NTpFWFBPUlRfU1lNQk9MX0dQTChtbTgxeF9jb3JlX2FsbG9jKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy02Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo2NzppbnQgbW04MXhfY29yZV9pbml0KHN0cnVjdCBtbTgxeCAqbW9ycylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy02OC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy03My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo3NDpcXHRtbTgxeF9jb3JlX2luaXRfbWFjX2FkZHIobW9ycyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6NzY6XFx0cmV0ID0gbW04MXhfY29yZV9hdHRhY2hfcmVncyhtb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy03Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6OTA6XFx0cmV0ID0gbW04MXhfaGlmX2luaXQobW9ycyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtOTEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEwNS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTA2OkVYUE9SVF9TWU1CT0xfR1BMKG1tODF4X2NvcmVfaW5pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjEwODppbnQgbW04MXhfY29yZV9yZWdpc3RlcihzdHJ1Y3QgbW04MXggKm1vcnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTA5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMTA6XFx0cmV0dXJuIG1tODF4X21hY19yZWdpc3Rlcihtb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMTEtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjExMjpFWFBPUlRfU1lNQk9MX0dQTChtbTgxeF9jb3JlX3JlZ2lzdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTE0OnZvaWQgbW04MXhfY29yZV91bnJlZ2lzdGVyKHN0cnVjdCBtbTgxeCAqbW9ycylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMTUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjExNjpcXHRtbTgxeF9tYWNfdW5yZWdpc3Rlcihtb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMTctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjExODpFWFBPUlRfU1lNQk9MX0dQTChtbTgxeF9jb3JlX3VucmVnaXN0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTExOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMjA6dm9pZCBtbTgxeF9jb3JlX2RlaW5pdChzdHJ1Y3QgbW04MXggKm1vcnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTIxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMjI6XFx0bW04MXhfaGlmX2ZpbmlzaChtb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMjMtXFx0Zmx1c2hfd29ya3F1ZXVlKG1vcnMtXFx1MDAzZW5ldF93cSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMjctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjEyODpFWFBPUlRfU1lNQk9MX0dQTChtbTgxeF9jb3JlX2RlaW5pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjEzMDp2b2lkIG1tODF4X2NvcmVfZnJlZShzdHJ1Y3QgbW04MXggKm1vcnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTMxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMzI6XFx0bW04MXhfbWFjX2ZyZWUobW9ycyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTMzLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMzQ6RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9mcmVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMzUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC01NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDo1NTpzdHJ1Y3QgbW04MXhfYnVzX29wcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDo1NjpzdHJ1Y3QgbW04MXhfaGlmX29wcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC01Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjYzOmVudW0gbW04MXhfY2Fwc19mbGFncyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtNjQtXFx0TU04MVhfQ0FQU19GV19TVEFSVCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTMyOnN0cnVjdCBtbTgxeF9md19jYXBzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xMzMtXFx0dTMyIGZsYWdzW0ZXX0NBUEFCSUxJVElFU19GTEFHU19XSURUSF07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xMzctXFx0dTggbWF4aW11bV9hbXBkdV9sZW5ndGhfZXhwb25lbnQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTM4OlxcdHU4IG1tODF4X21tc3Nfb2Zmc2V0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTEzOS19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTQxLSNkZWZpbmUgTU04MVhfRldfU1VQUChNTTgxWF9DQVBTLCBDQVBBQklMSVRZKSBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTQyOlxcdG1tODF4X2NhcHNfc3VwcG9ydGVkKE1NODFYX0NBUFMsIE1NODFYX0NBUFNfIyNDQVBBQklMSVRZKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE0My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoxNDQ6c3RhdGljIGlubGluZSBib29sIG1tODF4X2NhcHNfc3VwcG9ydGVkKHN0cnVjdCBtbTgxeF9md19jYXBzICpjYXBzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjE0NTpcXHRcXHRcXHRcXHRcXHRlbnVtIG1tODF4X2NhcHNfZmxhZ3MgZmxhZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xNDYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjE1MjpzdHJ1Y3QgbW04MXhfcHMge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE1My1cXHR1MzIgd2FrZXJzO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjE2MTplbnVtIG1tODF4X3BhZ2VfYWNpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xNjItXFx0TU04MVhfQUNJX0JFID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoxNjg6ZW51bSBtbTgxeF9xb3NfdGlkX3VwX2luZGV4IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xNjktXFx0TU04MVhfUU9TX1RJRF9VUF9CSyA9IDEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTgyOnN0cnVjdCBtbTgxeF9zd192ZXJzaW9uIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xODMtXFx0dTggbWFqb3I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTg4OnN0cnVjdCBtbTgxeF9zdGEge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE4OS1cXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTk1LVxcdGludCBtYXhfYndfbWh6O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjE5NjpcXHRzdHJ1Y3QgbW04MXhfcmNfc3RhIHJjO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE5Ny1cXHRzdHJ1Y3QgbW1yY19yYXRlIGxhc3Rfc3RhX3R4X3JhdGU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjAyOnN0cnVjdCBtbTgxeF92aWYge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjIwMzpcXHRzdHJ1Y3QgbW04MXggKm1vcnM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjA0LVxcdHUxNiBpZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTIxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyMTc6c3RydWN0IG1tODF4X3N0YWxlX3R4X3N0YXR1cyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjE4LVxcdC8qIFN0YWxlIFR4IGxvY2sgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oPTIyMz1zdHJ1Y3QgbWNhc3RfZmlsdGVyIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTIzMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyMzM6ZW51bSBtbTgxeF9od19zY2FuX29wIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yMzQtXFx0TU04MVhfSFdfU0NBTl9PUF9TVEFSVCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTIzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyMzg6c3RydWN0IG1tODF4X2h3X3NjYW5fcGFyYW1zIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yMzktXFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yNDUtXFx0dTMyIGR3ZWxsX29uX2hvbWVfbXM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjQ2OlxcdGVudW0gbW04MXhfaHdfc2Nhbl9vcCBvcGVyYXRpb247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjQ3LVxcdGJvb2wgc3RvcmU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yNjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjYyOmVudW0gbW04MXhfaHdfc2Nhbl9zdGF0ZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjYzLVxcdEhXX1NDQU5fU1RBVEVfSURMRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTI2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyNjg6c3RydWN0IG1tODF4X2h3X3NjYW4ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjI2OTpcXHRlbnVtIG1tODF4X2h3X3NjYW5fc3RhdGUgc3RhdGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjcwLVxcdHN0cnVjdCBjb21wbGV0aW9uIHNjYW5fZG9uZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyNzE6XFx0c3RydWN0IG1tODF4X2h3X3NjYW5fcGFyYW1zICpwYXJhbXM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjcyLVxcdHN0cnVjdCBkZWxheWVkX3dvcmsgdGltZW91dDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTI3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyNzY6ZW51bSBtbTgxeF9oaWZfZXZlbnRfZmxhZ3Mge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTI3Ny1cXHRNTTgxWF9ISUZfRVZUX1JYX1BFTkQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6Mjg5OmVudW0gbW04MXhfc3RhdGVfZmxhZ3Mge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTI5MC1cXHRNTTgxWF9TVEFURV9DSElQX1VOUkVTUE9OU0lWRSxcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyODo0MS4zNDQyMTA2MTVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNTMyMzYxODg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBJIGRlbHZlIGludG8gdGhpcyBjb25maWd1cmF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgVVNCIGFuZCBTRElPIFN1cHBvcnQgd2l0aGluIHRoZSBtbTgxeCBXaXJlbGVzcyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJIHNlZSBgQ09ORklHX01NODFYX1VTQmAgYW5kIGBDT05GSUdfTU04MVhfU0RJT2AgYXJlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRpbWUgdG8gZGlnIGluLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc3RhdHVzIG9mIFVTQiBwcm9iaW5nLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBtbTgxeCBjaGlwc2V0LiBNeSBpbml0aWFsIHRhcmdldCBpcyB0aGUgc291cmNlIGNvZGUuIEkgd2lsbCBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuY2AgYW5kIGl0cyBhc3NvY2lhdGVkIGBLY29uZmlnYCBmaWxlLiBUaGUgYHVzYi5jYCBmaWxlIHNob3VsZCBjb250YWluIHRoZSBVU0Itc3BlY2lmaWMgZHJpdmVyIGNvZGUsIGFuZCB0aGUgYEtjb25maWdgIGZpbGUgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBJIHdpbGwgdXNlIHRoZSBgS2NvbmZpZ2AgZm9yIHRoZSBjb25maWd1cmF0aW9uIGZsYWdzIGZvciBwcm9iaW5nLiBCeSByZWZlcmVuY2luZyBib3RoIG9mIHRoZXNlIGZpbGVzLCBJIGNhbiB2ZXJpZnkgd2hldGhlciB0aGUgbW9kdWxlIHN1cHBvcnRzIFVTQiBhbmQgYXNjZXJ0YWluIGhvdyBpdOKAmXMgY29uZmlndXJlZCB0byBwcm9iZSBmb3IgVVNCIGRldmljZXMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbXBsZXRlIHBpY3R1cmUsIG5vdCBqdXN0IHRoZSBjb2RlLCBidXQgdGhlIGludGVudGlvbi4gVGhpcyB3aWxsIGxldCBtZSBhc3Nlc3Mgd2hhdOKAmXMgZ29pbmcgb24sIGFuZCBpZGVudGlmeSBpZiB0aGVyZSBpcyBhbiBpc3N1ZSB0byBhZGRyZXNzIGluIHRoaXMgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg5MzksIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyODo0NC44NzY1NzU0MDNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjM2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRcXG4gICAzOlxcdGNvbmZpZyBNTTgxWFxcbiAgIDQ6XFx0XFx0dHJpc3RhdGUgXFxcIk1vcnNlIE1pY3JvIE1NODF4IHdpcmVsZXNzIGRldmljZXNcXFwiIGlmIENPTVBJTEVfVEVTVFxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgIDY6XFx0XFx0c2VsZWN0IEZXX0xPQURFUlxcbiAgIDc6XFx0XFx0c2VsZWN0IENSQzdcXG4gICA4OlxcdFxcdGhlbHBcXG4gICA5OlxcdFxcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBkZXZpY2VzIGJhc2VkXFxuICAxMDpcXHRcXHQgIG9uIE1vcnNlIE1pY3JvIE1NODF4eCBjaGlwc2V0cy5cXG4gIDExOlxcdFxcbiAgMTI6XFx0Y29uZmlnIE1NODFYX1VTQlxcbiAgMTM6XFx0XFx0dHJpc3RhdGUgXFxcIk1vcnNlIE1pY3JvIE1NODF4IFVTQiBzdXBwb3J0XFxcIlxcbiAgMTQ6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcXHUwMDI2XFx1MDAyNiBVU0JcXG4gIDE1OlxcdFxcdHNlbGVjdCBNTTgxWFxcbiAgMTY6XFx0XFx0aGVscFxcbiAgMTc6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHRoZSBVU0IgaW50ZXJmYWNlIG9mXFxuICAxODpcXHRcXHQgIGRldmljZXMgdXNpbmcgdGhlIE1vcnNlIE1pY3JvIE1NODF4IGNoaXBzZXQuXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBNTTgxWF9TRElPXFxuICAyMTpcXHRcXHR0cmlzdGF0ZSBcXFwiTW9yc2UgTWljcm8gTU04MXggU0RJTyBzdXBwb3J0XFxcIlxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcXHUwMDI2XFx1MDAyNiBNTUNcXG4gIDIzOlxcdFxcdHNlbGVjdCBNTTgxWFxcbiAgMjQ6XFx0XFx0aGVscFxcbiAgMjU6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHRoZSBTRElPIGludGVyZmFjZSBvZlxcbiAgMjY6XFx0XFx0ICBkZXZpY2VzIHVzaW5nIHRoZSBNb3JzZSBNaWNybyBNTTgxeCBjaGlwc2V0LlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyODo0NC44NzY2MzM2MDNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1OTEzNjE1OTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZTpcblxuKipVU0IgRnV6emluZywgTGV0J3MgRGl2ZSBEZWVwKipcblxuUmlnaHQsIHNvIGBNTTgxWF9VU0JgIGlzICphY3R1YWxseSogYSB0aGluZyEgU3l6a2FsbGVyIGlzIGhhbW1lcmluZyBhd2F5IGF0IFVTQiBkcml2ZXJzIHVzaW5nIFJhdyBHYWRnZXQgYW5kIFVTQiBlbXVsYXRpb24sIHdoaWNoIGlzIGZhc2NpbmF0aW5nLiBUaGlzIG1lYW5zIHdlJ3ZlIGdvdCBhIG5ldyBhdmVudWUgZm9yIHVuY292ZXJpbmcgdGhvc2UgZ25hcmx5LCBoYXJkLXRvLWZpbmQgYnVncy4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgZm9yIG1lIGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYG1tODF4YCB3aXJlbGVzcyBkcml2ZXIgaW50ZXJmYWNlcyB3aXRoIFVTQi4gSSdtIGhlYWRpbmcgc3RyYWlnaHQgZm9yIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jYC4gSSBuZWVkIHRvIHNlZSBleGFjdGx5IGhvdyBwYWNrZXRzIGFuZCBZQVBTIGFyZSBhY3R1YWxseSAqcmVhY2hlZCogdGhyb3VnaCB0aGlzIFVTQiBpbnRlcmZhY2UuIExldCdzIHNlZSBob3cgdGhlIG1hZ2ljIGhhcHBlbnMgYW5kIHdoYXQga2luZCBvZiBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIHdlIGNhbiBzbmlmZiBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5Njc1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyODo1MC43OTAyNTM0NTVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAxNjE2MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieWFwc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDg4MCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZT0xMT1tbTgxeF9jb3JlLXkgKz0gc2ticS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZToxMjptbTgxeF9jb3JlLXkgKz0geWFwc19ody5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZToxMzptbTgxeF9jb3JlLXkgKz0geWFwcy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZS0xNC1tbTgxeF9jb3JlLXkgKz0gcmMub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM9MTE9c3RhdGljIGludCBtbTgxeF9jb3JlX2F0dGFjaF9yZWdzKHN0cnVjdCBtbTgxeCAqbW9ycylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTI2LVxcdFxcdG1vcnMtXFx1MDAzZXJlZ3MgPSBcXHUwMDI2bW04MTA4X3JlZ3M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6Mjc6XFx0XFx0bW9ycy1cXHUwMDNlaGlmLm9wcyA9IFxcdTAwMjZtbTgxeF95YXBzX29wcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0yOC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE4LSNpbmNsdWRlIFxcdTAwM2NsaW51eC93YWl0LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTk6I2luY2x1ZGUgXFxcInlhcHMuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyMDojaW5jbHVkZSBcXFwieWFwc19ody5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTIxLSNpbmNsdWRlIFxcXCJody5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg9MzAzPXN0cnVjdCBtbTgxeCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0zNDctXFx0XFx0dW5pb24ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjM0ODpcXHRcXHRcXHRzdHJ1Y3QgbW04MXhfeWFwcyB5YXBzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTM0OS1cXHRcXHR9IHU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3LmM9NTQ2PWludCBtbTgxeF9md19wYXJzZV9leHRfaG9zdF90Ymwoc3RydWN0IG1tODF4ICptb3JzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5jLTU3OC1cXHRcXHRjYXNlIE1NODFYX0ZXX0hPU1RfVEFCTEVfVEFHX1lBUFNfVEFCTEU6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5jOjU3OTpcXHRcXHRcXHRtbTgxeF95YXBzX2h3X3JlYWRfdGFibGUoXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5jOjU4MDpcXHRcXHRcXHRcXHRtb3JzLCBcXHUwMDI2KChzdHJ1Y3QgZXh0X2hvc3RfdGJsX3lhcHNfdGFibGUgKiloZHIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5jOjU4MTpcXHRcXHRcXHRcXHRcXHQgICAgICAgLVxcdTAwM2V5YXBzX3RhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3LmMtNTgyLVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5oLTEyLSNpbmNsdWRlIFxcXCJjb21tYW5kX2RlZnMuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3Lmg6MTM6I2luY2x1ZGUgXFxcInlhcHNfaHcuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3LmgtMTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3Lmg9MTI0PXN0cnVjdCBleHRfaG9zdF90YmxfaW5zZXJ0X3NrYl9jaGVja3N1bSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3LmgtMTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvZncuaDoxMjk6c3RydWN0IGV4dF9ob3N0X3RibF95YXBzX3RhYmxlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3LmgtMTMwLVxcdHN0cnVjdCBleHRfaG9zdF90YmxfdGx2X2hkciBoZWFkZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5oOjEzMTpcXHRzdHJ1Y3QgbW04MXhfeWFwc19od190YWJsZSB5YXBzX3RhYmxlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvZncuaC0xMzItfSBfX3BhY2tlZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvaHcuYy0xNS0jaW5jbHVkZSBcXFwiZncuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2h3LmM6MTY6I2luY2x1ZGUgXFxcInlhcHMuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2h3LmMtMTctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0yMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoyMzpzdGF0aWMgaW50IG1tODF4X3lhcHNfYWxsb2NfcGt0X2J1ZmZlcnMoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjI1OlxcdHlhcHMtXFx1MDAzZWh3LnRvX2NoaXBfcGt0cyA9IGtjYWxsb2MoTUFYX1BLVFNfUEVSX1RYX1RYTixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoyNjpcXHRcXHRcXHRcXHRcXHRzaXplb2YoKnlhcHMtXFx1MDAzZWh3LnRvX2NoaXBfcGt0cyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjctXFx0XFx0XFx0XFx0XFx0R0ZQX0tFUk5FTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6Mjg6XFx0aWYgKCF5YXBzLVxcdTAwM2Vody50b19jaGlwX3BrdHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjktXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MzE6XFx0eWFwcy1cXHUwMDNlaHcuZnJvbV9jaGlwX3BrdHMgPSBrY2FsbG9jKE1BWF9QS1RTX1BFUl9SWF9UWE4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MzI6XFx0XFx0XFx0XFx0XFx0ICBzaXplb2YoKnlhcHMtXFx1MDAzZWh3LmZyb21fY2hpcF9wa3RzKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zMy1cXHRcXHRcXHRcXHRcXHQgIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjM0OlxcdGlmICgheWFwcy1cXHUwMDNlaHcuZnJvbV9jaGlwX3BrdHMpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozNTpcXHRcXHRrZnJlZSh5YXBzLVxcdTAwM2Vody50b19jaGlwX3BrdHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjM2OlxcdFxcdHlhcHMtXFx1MDAzZWh3LnRvX2NoaXBfcGt0cyA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzctXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0MzpzdGF0aWMgdm9pZCBtbTgxeF95YXBzX2ZyZWVfcGt0X2J1ZmZlcnMoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjQ1OlxcdGtmcmVlKHlhcHMtXFx1MDAzZWh3LmZyb21fY2hpcF9wa3RzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0NjpcXHR5YXBzLVxcdTAwM2Vody5mcm9tX2NoaXBfcGt0cyA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDc6XFx0a2ZyZWUoeWFwcy1cXHUwMDNlaHcudG9fY2hpcF9wa3RzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0ODpcXHR5YXBzLVxcdTAwM2Vody50b19jaGlwX3BrdHMgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTQ5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1MTpzdGF0aWMgaW50IG1tODF4X3lhcHNfd3JpdGVfcGt0cyhzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1MjpcXHRcXHRcXHRcXHQgc3RydWN0IG1tODF4X3lhcHNfcGt0ICpwa3RzLCBpbnQgbnVtX3BrdHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTMtXFx0XFx0XFx0XFx0IGludCAqbnVtX3BrdHNfc2VudClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTU6XFx0cmV0dXJuIHlhcHMtXFx1MDAzZW9wcy1cXHUwMDNld3JpdGVfcGt0cyh5YXBzLCBwa3RzLCBudW1fcGt0cywgbnVtX3BrdHNfc2VudCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTYtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU4OnN0YXRpYyBpbnQgbW04MXhfeWFwc19yZWFkX3BrdHMoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTk6XFx0XFx0XFx0XFx0c3RydWN0IG1tODF4X3lhcHNfcGt0ICpwa3RzLCBpbnQgbnVtX3BrdHNfbWF4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTYwLVxcdFxcdFxcdFxcdGludCAqbnVtX3BrdHNfcmVjZWl2ZWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjYyOlxcdHJldHVybiB5YXBzLVxcdTAwM2VvcHMtXFx1MDAzZXJlYWRfcGt0cyh5YXBzLCBwa3RzLCBudW1fcGt0c19tYXgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjMtXFx0XFx0XFx0XFx0ICAgIG51bV9wa3RzX3JlY2VpdmVkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY2OnN0YXRpYyBpbnQgbW04MXhfeWFwc191cGRhdGVfc3RhdHVzKHN0cnVjdCBtbTgxeF95YXBzICp5YXBzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2ODpcXHRyZXR1cm4geWFwcy1cXHUwMDNlb3BzLVxcdTAwM2V1cGRhdGVfc3RhdHVzKHlhcHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy03MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo3MTovKiBNYXBwaW5ncyBiZXR3ZWVuIHNrX2J1ZmYsIHNrYnEgYW5kIHlhcHMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo3MjpzdGF0aWMgc3RydWN0IG1tODF4X3NrYnEgKm1tODF4X3lhcHNfdGNfcV9mcm9tX2FjaShzdHJ1Y3QgbW04MXggKm1vcnMsIGludCBhY2kpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNzMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjc0OlxcdHN0cnVjdCBtbTgxeF95YXBzICp5YXBzID0gXFx1MDAyNm1vcnMtXFx1MDAzZWhpZi51LnlhcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NzY6XFx0aWYgKGFjaSBcXHUwMDNlPSBBUlJBWV9TSVpFKHlhcHMtXFx1MDAzZWRhdGFfdHhfcXMpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTc3LVxcdFxcdHJldHVybiBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjc4OlxcdHJldHVybiBcXHUwMDI2eWFwcy1cXHUwMDNlZGF0YV90eF9xc1thY2ldO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTc5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy04MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo4MTpzdGF0aWMgdm9pZCBtbTgxeF95YXBzX2dldF90eF9xcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF9za2JxICoqcXMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtODItXFx0XFx0XFx0XFx0IGludCAqbnVtX3FzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTgzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo4NDpcXHQqcXMgPSBtb3JzLVxcdTAwM2VoaWYudS55YXBzLmRhdGFfdHhfcXM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtODUtXFx0Km51bV9xcyA9IFlBUFNfVFhfU0tCUV9NQVg7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy04Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo4ODpzdGF0aWMgc3RydWN0IG1tODF4X3NrYnEgKm1tODF4X3lhcHNfZ2V0X2Jjbl90Y19xKHN0cnVjdCBtbTgxeCAqbW9ycylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy04OS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6OTA6XFx0cmV0dXJuIFxcdTAwMjZtb3JzLVxcdTAwM2VoaWYudS55YXBzLmJlYWNvbl9xO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTkxLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy05Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo5MzpzdGF0aWMgc3RydWN0IG1tODF4X3NrYnEgKm1tODF4X3lhcHNfZ2V0X21nbXRfdGNfcShzdHJ1Y3QgbW04MXggKm1vcnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtOTQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjk1OlxcdHJldHVybiBcXHUwMDI2bW9ycy1cXHUwMDNlaGlmLnUueWFwcy5tZ210X3E7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtOTYtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjk4OnN0YXRpYyBzdHJ1Y3QgbW04MXhfc2ticSAqbW04MXhfeWFwc19nZXRfdHhfY21kX3F1ZXVlKHN0cnVjdCBtbTgxeCAqbW9ycylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy05OS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MTAwOlxcdHJldHVybiBcXHUwMDI2bW9ycy1cXHUwMDNlaGlmLnUueWFwcy5jbWRfcTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xMDEtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTEwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMDM6c3RhdGljIGludCBtbTgxeF95YXBzX2lycV9oYW5kbGVyKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIHN0YXR1cylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xMDQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMTA4LVxcdGlmIChzdGF0dXMgXFx1MDAyNiBCSVQoTU04MVhfSU5UX1lBUFNfRkNfUEFDS0VUX0ZSRUVEX1VQX0lSUU4pKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MTA5OlxcdFxcdHRpbWVyX2RlbGV0ZV9zeW5jX3RyeShcXHUwMDI2bW9ycy1cXHUwMDNlaGlmLnUueWFwcy5jaGlwX3F1ZXVlX2Z1bGwudGltZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTExMC1cXHRcXHRzZXRfYml0KE1NODFYX0hJRl9FVlRfVFhfUEFDS0VUX0ZSRUVEX1VQX1BFTkQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MTE4OmNvbnN0IHN0cnVjdCBtbTgxeF9oaWZfb3BzIG1tODF4X3lhcHNfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjExOTpcXHQuaW5pdCA9IG1tODF4X3lhcHNfaW5pdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMjA6XFx0LmZsdXNoX3R4X2RhdGEgPSBtbTgxeF95YXBzX2ZsdXNoX3R4X2RhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MTIxOlxcdC5mbHVzaF9jbWRzID0gbW04MXhfeWFwc19mbHVzaF9jbWRzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjEyMjpcXHQuZ2V0X3R4X3N0YXR1c19wZW5kaW5nX2NvdW50ID0gbW04MXhfeWFwc19nZXRfdHhfc3RhdHVzX3BlbmRpbmdfY291bnQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MTIzOlxcdC5nZXRfdHhfYnVmZmVyZWRfY291bnQgPSBtbTgxeF95YXBzX2dldF90eF9idWZmZXJlZF9jb3VudCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMjQ6XFx0LmZpbmlzaCA9IG1tODF4X3lhcHNfZmluaXNoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjEyNTpcXHQuc2ticV9nZXRfdHhfcXMgPSBtbTgxeF95YXBzX2dldF90eF9xcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMjY6XFx0LmdldF90eF9iZWFjb25fcXVldWUgPSBtbTgxeF95YXBzX2dldF9iY25fdGNfcSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMjc6XFx0LmdldF90eF9tZ210X3F1ZXVlID0gbW04MXhfeWFwc19nZXRfbWdtdF90Y19xLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjEyODpcXHQuZ2V0X3R4X2NtZF9xdWV1ZSA9IG1tODF4X3lhcHNfZ2V0X3R4X2NtZF9xdWV1ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMjk6XFx0LmdldF90eF9kYXRhX3F1ZXVlID0gbW04MXhfeWFwc190Y19xX2Zyb21fYWNpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjEzMDpcXHQuaGFuZGxlX2lycSA9IG1tODF4X3lhcHNfaXJxX2hhbmRsZXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xMzEtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xMzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MTMzOnN0YXRpYyBpbnQgbW04MXhfeWFwc19yZWFkX3BrdChzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xMzQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjEzNTpcXHRzdHJ1Y3QgbW04MXggKm1vcnMgPSB5YXBzLVxcdTAwM2Vtb3JzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTEzNi1cXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHNrYnE7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MTU4OlxcdGlmICh5YXBzLVxcdTAwM2Vtb3JzLVxcdTAwM2VoaWYudmFsaWRhdGVfc2tiX2NoZWNrc3VtIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMTU5LVxcdCAgICAhbW04MXhfc2ticV92YWxpZGF0ZV9jaGVja3N1bShza2ItXFx1MDAzZWRhdGEpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MTYwOlxcdFxcdGRldl9kYmcoeWFwcy1cXHUwMDNlbW9ycy1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTE2MS1cXHRcXHRcXHRcXFwiU0tCIGNoZWNrc3VtIGlzIGludmFsaWQgaGRyOltjOiUwMlggczolMDJYIGxlbjolZF1cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMTc2LVxcdGNhc2UgTU04MVhfU0tCX0NIQU5fTUdNVDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxNzc6XFx0XFx0bXEgPSBcXHUwMDI2eWFwcy1cXHUwMDNlZGF0YV9yeF9xO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTE3OC1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xNzktXFx0Y2FzZSBNTTgxWF9TS0JfQ0hBTl9DT01NQU5EOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjE4MDpcXHRcXHRtcSA9IFxcdTAwMjZ5YXBzLVxcdTAwM2VjbWRfcmVzcF9xO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTE4MS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTIyNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoyMjY6c3RhdGljIGludCBtbTgxeF95YXBzX3R4KHN0cnVjdCBtbTgxeF95YXBzICp5YXBzLCBzdHJ1Y3QgbW04MXhfc2ticSAqbXEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjI3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTIzNy1cXHRzdHJ1Y3Qgc2tfYnVmZiAqcGZpcnN0LCAqcG5leHQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MjM4OlxcdHN0cnVjdCBtbTgxeCAqbW9ycyA9IHlhcHMtXFx1MDAzZW1vcnM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjM5LVxcdHN0cnVjdCBtbTgxeF9za2JfaGRyICpoZHI7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0yNTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MjUyOlxcdGlmIChtcSA9PSBcXHUwMDI2eWFwcy1cXHUwMDNlY21kX3EpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjUzLVxcdFxcdC8qIFB1cmdlIHRpbWVkLW91dCBjb21tYW5kcyAodGhpcyBzaG91bGQgbm90IGhhcHBlbikgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0yNTQtXFx0XFx0bW04MXhfc2ticV9wdXJnZShtcSwgXFx1MDAyNm1xLVxcdTAwM2VwZW5kaW5nKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoyNTU6XFx0ZWxzZSBpZiAobXEgPT0gXFx1MDAyNnlhcHMtXFx1MDAzZW1nbXRfcSBcXHUwMDI2XFx1MDAyNiBza2JfcXVldWVfbGVuKFxcdTAwMjZtcS1cXHUwMDNlc2ticSkgXFx1MDAzZSAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTI1Ni1cXHRcXHQvKlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjY1LVxcdHNrYl9xdWV1ZV93YWxrX3NhZmUoXFx1MDAyNnNrYnFfdG9fc2VuZCwgcGZpcnN0LCBwbmV4dCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjI2NjpcXHRcXHRlbnVtIG1tODF4X3lhcHNfdG9fY2hpcF9xIHRjX3F1ZXVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTI2Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTI4Mi1cXHRcXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MjgzOlxcdFxcdHlhcHMtXFx1MDAzZWh3LnRvX2NoaXBfcGt0c1t0Y19wa3RfaWR4XS50Y19xdWV1ZSA9IHRjX3F1ZXVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjI4NDpcXHRcXHR5YXBzLVxcdTAwM2Vody50b19jaGlwX3BrdHNbdGNfcGt0X2lkeF0uc2tiID0gcGZpcnN0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTI4NS1cXHRcXHR0Y19wa3RfaWR4Kys7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0yODgtXFx0LyogU2VuZCBxdWV1ZWQgcGFja2V0cyB0byBjaGlwICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6Mjg5OlxcdHJldCA9IG1tODF4X3lhcHNfdXBkYXRlX3N0YXR1cyh5YXBzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0yOTAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTI5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoyOTM6XFx0cmV0ID0gbW04MXhfeWFwc193cml0ZV9wa3RzKHlhcHMsIHlhcHMtXFx1MDAzZWh3LnRvX2NoaXBfcGt0cywgdGNfcGt0X2lkeCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0yOTQtXFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZudW1fcGt0c19zZW50KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTMyNC0vKiBSZXR1cm5zIHRydWUgaWYgdGhlcmUgYXJlIFRYIGRhdGEgcGFnZXMgd2FpdGluZyB0byBiZSBzZW50ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MzI1OnN0YXRpYyBib29sIG1tODF4X3lhcHNfdHhfZGF0YV9oYW5kbGVyKHN0cnVjdCBtbTgxeF95YXBzICp5YXBzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTMyNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zMjgtXFx0dTMyIGNvdW50ID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozMjk6XFx0c3RydWN0IG1tODF4ICptb3JzID0geWFwcy1cXHUwMDNlbW9ycztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzMxLVxcdGZvciAoYWNpID0gTU04MVhfQUNJX1ZPOyBhY2kgXFx1MDAzZT0gMDsgYWNpLS0pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozMzI6XFx0XFx0c3RydWN0IG1tODF4X3NrYnEgKmRhdGFfcSA9IG1tODF4X3lhcHNfdGNfcV9mcm9tX2FjaShtb3JzLCBhY2kpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTMzMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTMzNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozMzc6XFx0XFx0eWFwcy1cXHUwMDNlY2hpcF9xdWV1ZV9mdWxsLmlzX2Z1bGwgPSBtbTgxeF95YXBzX3R4KHlhcHMsIGRhdGFfcSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzM4LVxcdFxcdGNvdW50ICs9IG1tODF4X3NrYnFfY291bnQoZGF0YV9xKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MzQwOlxcdFxcdGlmICh5YXBzLVxcdTAwM2VjaGlwX3F1ZXVlX2Z1bGwuaXNfZnVsbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zNDEtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zNTctLyogUmV0dXJucyB0cnVlIGlmIHRoZXJlIGFyZSBjb21tYW5kcyB3YWl0aW5nIHRvIGJlIHNlbnQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozNTg6c3RhdGljIGJvb2wgbW04MXhfeWFwc190eF9jbWRfaGFuZGxlcihzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zNTkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjM2MDpcXHRzdHJ1Y3QgbW04MXhfc2ticSAqY21kX3EgPSBcXHUwMDI2eWFwcy1cXHUwMDNlY21kX3E7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjM2MjpcXHRtbTgxeF95YXBzX3R4KHlhcHMsIGNtZF9xKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zNjMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MzY3OnN0YXRpYyBib29sIG1tODF4X3lhcHNfdHhfYmVhY29uX2hhbmRsZXIoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzY4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozNjk6XFx0c3RydWN0IG1tODF4X3NrYnEgKmJlYWNvbl9xID0gXFx1MDAyNnlhcHMtXFx1MDAzZWJlYWNvbl9xO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTM3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozNzE6XFx0bW04MXhfeWFwc190eCh5YXBzLCBiZWFjb25fcSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzcyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjM3NjpzdGF0aWMgYm9vbCBtbTgxeF95YXBzX3R4X21nbXRfaGFuZGxlcihzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zNzcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjM3ODpcXHRzdHJ1Y3QgbW04MXhfc2ticSAqbWdtdF9xID0gXFx1MDAyNnlhcHMtXFx1MDAzZW1nbXRfcTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zNzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MzgwOlxcdG1tODF4X3lhcHNfdHgoeWFwcywgbWdtdF9xKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zODEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zODUtLyogUmV0dXJucyB0cnVlIGlmIHRoZXJlIGFyZSBwb3B1bGF0ZWQgUlggcGFnZXMgbGVmdCBpbiB0aGUgZGV2aWNlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6Mzg2OnN0YXRpYyBib29sIG1tODF4X3lhcHNfcnhfaGFuZGxlcihzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zODcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjM5MjpcXHRyZXQgPSBtbTgxeF95YXBzX3VwZGF0ZV9zdGF0dXMoeWFwcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzkzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zOTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6Mzk2OlxcdHJldCA9IG1tODF4X3lhcHNfcmVhZF9wa3RzKHlhcHMsIHlhcHMtXFx1MDAzZWh3LmZyb21fY2hpcF9wa3RzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTM5Ny1cXHRcXHRcXHRcXHQgICBNQVhfUEtUU19QRVJfUlhfVFhOLCBcXHUwMDI2bnVtX3Brc19yZWNlaXZlZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzk4LVxcdGlmIChyZXQgXFx1MDAyNlxcdTAwMjYgcmV0ICE9IC1FQUdBSU4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozOTk6XFx0XFx0ZGV2X2Vycih5YXBzLVxcdTAwM2Vtb3JzLVxcdTAwM2VkZXYsIFxcXCJZQVBTIHJlYWRfcGt0cyBmYWlsOiAlZFxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDAwLVxcdFxcdGdvdG8gZXhpdDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTQwMy1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnVtX3Brc19yZWNlaXZlZDsgKytpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDA0OlxcdFxcdG1tODF4X3lhcHNfcmVhZF9wa3QoeWFwcywgeWFwcy1cXHUwMDNlaHcuZnJvbV9jaGlwX3BrdHNbaV0uc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0MDU6XFx0XFx0eWFwcy1cXHUwMDNlaHcuZnJvbV9jaGlwX3BrdHNbaV0uc2tiID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00MDYtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjQxNTp2b2lkIG1tODF4X3lhcHNfc3RhbGVfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTQxOS1cXHRzdHJ1Y3QgbW04MXggKm1vcnMgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG1tODF4LCB0eF9zdGFsZV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0MjA6XFx0c3RydWN0IG1tODF4X3lhcHMgKnlhcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjQyMjpcXHR5YXBzID0gXFx1MDAyNm1vcnMtXFx1MDAzZWhpZi51LnlhcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDIzOlxcdGZsdXNoZWQgKz0gbW04MXhfc2ticV9jaGVja19mb3Jfc3RhbGVfdHgobW9ycywgXFx1MDAyNnlhcHMtXFx1MDAzZWJlYWNvbl9xKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0MjQ6XFx0Zmx1c2hlZCArPSBtbTgxeF9za2JxX2NoZWNrX2Zvcl9zdGFsZV90eChtb3JzLCBcXHUwMDI2eWFwcy1cXHUwMDNlbWdtdF9xKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00MjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDI2OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKHlhcHMtXFx1MDAzZWRhdGFfdHhfcXMpOyBpKyspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDI3LVxcdFxcdGZsdXNoZWQgKz0gbW04MXhfc2ticV9jaGVja19mb3Jfc3RhbGVfdHgobW9ycyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0Mjg6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZ5YXBzLVxcdTAwM2VkYXRhX3R4X3FzW2ldKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00MjktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00MzUtXFx0aWYgKG1vcnMtXFx1MDAzZXBzLmVuYWJsZSBcXHUwMDI2XFx1MDAyNiAhbW9ycy1cXHUwMDNlcHMuc3VzcGVuZGVkIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDM2OlxcdCAgICAobW04MXhfeWFwc19nZXRfdHhfYnVmZmVyZWRfY291bnQobW9ycykgPT0gMCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00MzctXFx0XFx0LyogRXZhbHVhdGUgcHMgdG8gY2hlY2sgaWYgaXQgd2FzIGdhdGVkIG9uIGEgc3RhbGUgdHggc3RhdHVzICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00NDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDQzOnZvaWQgbW04MXhfeWFwc193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00NDQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDQ2LVxcdHVuc2lnbmVkIGxvbmcgKmZsYWdzID0gXFx1MDAyNm1vcnMtXFx1MDAzZWhpZi5ldmVudF9mbGFncztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0NDc6XFx0c3RydWN0IG1tODF4X3lhcHMgKnlhcHMgPSBcXHUwMDI2bW9ycy1cXHUwMDNlaGlmLnUueWFwcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00NDgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00NjQtXFx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChNTTgxWF9ISUZfRVZUX1JYX1BFTkQsIGZsYWdzKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjQ2NTpcXHRcXHRpZiAobW04MXhfeWFwc19yeF9oYW5kbGVyKHlhcHMpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTQ2Ni1cXHRcXHRcXHRzZXRfYml0KE1NODFYX0hJRl9FVlRfUlhfUEVORCwgZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDcwLVxcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTU04MVhfSElGX0VWVF9UWF9DT01NQU5EX1BFTkQsIGZsYWdzKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjQ3MTpcXHRcXHRpZiAobW04MXhfeWFwc190eF9jbWRfaGFuZGxlcih5YXBzKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00NzItXFx0XFx0XFx0c2V0X2JpdChNTTgxWF9ISUZfRVZUX1RYX0NPTU1BTkRfUEVORCwgZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDc2LVxcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTU04MVhfSElGX0VWVF9UWF9CRUFDT05fUEVORCwgZmxhZ3MpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDc3OlxcdFxcdGlmIChtbTgxeF95YXBzX3R4X2JlYWNvbl9oYW5kbGVyKHlhcHMpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTQ3OC1cXHRcXHRcXHRzZXRfYml0KE1NODFYX0hJRl9FVlRfVFhfQkVBQ09OX1BFTkQsIGZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTQ4Mi1cXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE1NODFYX0hJRl9FVlRfVFhfTUdNVF9QRU5ELCBmbGFncykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0ODM6XFx0XFx0aWYgKG1tODF4X3lhcHNfdHhfbWdtdF9oYW5kbGVyKHlhcHMpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTQ4NC1cXHRcXHRcXHRzZXRfYml0KE1NODFYX0hJRl9FVlRfVFhfTUdNVF9QRU5ELCBmbGFncyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00OTktXFx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChNTTgxWF9ISUZfRVZUX1RYX1BBQ0tFVF9GUkVFRF9VUF9QRU5ELCBmbGFncykpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTAwOlxcdFxcdHlhcHMtXFx1MDAzZWNoaXBfcXVldWVfZnVsbC5pc19mdWxsID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTAxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTA0LVxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjUwNTpcXHRpZiAoeWFwcy1cXHUwMDNlY2hpcF9xdWV1ZV9mdWxsLmlzX2Z1bGwgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1MDY6XFx0ICAgIHRpbWVfYmVmb3JlKGppZmZpZXMsIHlhcHMtXFx1MDAzZWNoaXBfcXVldWVfZnVsbC5yZXRyeV9leHBpcnkpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTUwNy1cXHRcXHRnb3RvIGV4aXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01MTAtXFx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChNTTgxWF9ISUZfRVZUX1RYX0RBVEFfUEVORCwgZmxhZ3MpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTExOlxcdFxcdGlmIChtbTgxeF95YXBzX3R4X2RhdGFfaGFuZGxlcih5YXBzKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01MTItXFx0XFx0XFx0c2V0X2JpdChNTTgxWF9ISUZfRVZUX1RYX0RBVEFfUEVORCwgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTUxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1MTQ6XFx0XFx0aWYgKHlhcHMtXFx1MDAzZWNoaXBfcXVldWVfZnVsbC5pc19mdWxsKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTE1OlxcdFxcdFxcdHlhcHMtXFx1MDAzZWNoaXBfcXVldWVfZnVsbC5yZXRyeV9leHBpcnkgPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTUxNi1cXHRcXHRcXHRcXHRqaWZmaWVzICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01MTctXFx0XFx0XFx0XFx0bXNlY3NfdG9famlmZmllcyhDSElQX0ZVTExfUkVDT1ZFUllfVElNRU9VVF9NUyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTE4OlxcdFxcdFxcdG1vZF90aW1lcihcXHUwMDI2eWFwcy1cXHUwMDNlY2hpcF9xdWV1ZV9mdWxsLnRpbWVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjUxOTpcXHRcXHRcXHRcXHQgIHlhcHMtXFx1MDAzZWNoaXBfcXVldWVfZnVsbC5yZXRyeV9leHBpcnkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTUyMC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01MjktXFx0LyogRG9uJ3QgcmVxdWV1ZSB3b3JrIGlmIHdlIGFyZSBzaHV0dGluZyBkb3duLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjUzMDpcXHRpZiAoeWFwcy1cXHUwMDNlZmluaXNoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTUzMS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01NDEtXFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTQyOlxcdGVsc2UgaWYgKCF5YXBzLVxcdTAwM2VjaGlwX3F1ZXVlX2Z1bGwuaXNfZnVsbCBcXHUwMDI2XFx1MDAyNiAqZmxhZ3MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTQzLVxcdFxcdHF1ZXVlX3dvcmsobW9ycy1cXHUwMDNlY2hpcF93cSwgXFx1MDAyNm1vcnMtXFx1MDAzZWhpZl93b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1NDY6aW50IG1tODF4X3lhcHNfZ2V0X3R4X3N0YXR1c19wZW5kaW5nX2NvdW50KHN0cnVjdCBtbTgxeCAqbW9ycylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01NDcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTQ5LVxcdGludCBjb3VudCA9IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTUwOlxcdHN0cnVjdCBtbTgxeF95YXBzICp5YXBzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1NTI6XFx0eWFwcyA9IFxcdTAwMjZtb3JzLVxcdTAwM2VoaWYudS55YXBzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU1MzpcXHRjb3VudCArPSBza2JfcXVldWVfbGVuKFxcdTAwMjZ5YXBzLVxcdTAwM2ViZWFjb25fcS5wZW5kaW5nKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1NTQ6XFx0Y291bnQgKz0gc2tiX3F1ZXVlX2xlbihcXHUwMDI2eWFwcy1cXHUwMDNlbWdtdF9xLnBlbmRpbmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU1NTpcXHRjb3VudCArPSBza2JfcXVldWVfbGVuKFxcdTAwMjZ5YXBzLVxcdTAwM2VjbWRfcS5wZW5kaW5nKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01NTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTU3OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKHlhcHMtXFx1MDAzZWRhdGFfdHhfcXMpOyBpKyspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTU4OlxcdFxcdGNvdW50ICs9IHNrYl9xdWV1ZV9sZW4oXFx1MDAyNnlhcHMtXFx1MDAzZWRhdGFfdHhfcXNbaV0ucGVuZGluZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTU5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU2MzppbnQgbW04MXhfeWFwc19nZXRfdHhfYnVmZmVyZWRfY291bnQoc3RydWN0IG1tODF4ICptb3JzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU2NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01NjYtXFx0aW50IGNvdW50ID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1Njc6XFx0c3RydWN0IG1tODF4X3lhcHMgKnlhcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU2OTpcXHR5YXBzID0gXFx1MDAyNm1vcnMtXFx1MDAzZWhpZi51LnlhcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTcwOlxcdGNvdW50ICs9IHNrYl9xdWV1ZV9sZW4oXFx1MDAyNnlhcHMtXFx1MDAzZWJlYWNvbl9xLnNrYnEpICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1NzE6XFx0XFx0IHNrYl9xdWV1ZV9sZW4oXFx1MDAyNnlhcHMtXFx1MDAzZWJlYWNvbl9xLnBlbmRpbmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU3MjpcXHRjb3VudCArPSBza2JfcXVldWVfbGVuKFxcdTAwMjZ5YXBzLVxcdTAwM2VtZ210X3Euc2ticSkgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU3MzpcXHRcXHQgc2tiX3F1ZXVlX2xlbihcXHUwMDI2eWFwcy1cXHUwMDNlbWdtdF9xLnBlbmRpbmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU3NDpcXHRjb3VudCArPSBza2JfcXVldWVfbGVuKFxcdTAwMjZ5YXBzLVxcdTAwM2VjbWRfcS5za2JxKSArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTc1OlxcdFxcdCBza2JfcXVldWVfbGVuKFxcdTAwMjZ5YXBzLVxcdTAwM2VjbWRfcS5wZW5kaW5nKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01NzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTc3OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKHlhcHMtXFx1MDAzZWRhdGFfdHhfcXMpOyBpKyspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTc4OlxcdFxcdGNvdW50ICs9IG1tODF4X3NrYnFfY291bnRfdHhfcmVhZHkoXFx1MDAyNnlhcHMtXFx1MDAzZWRhdGFfdHhfcXNbaV0pICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1Nzk6XFx0XFx0XFx0IHNrYl9xdWV1ZV9sZW4oXFx1MDAyNnlhcHMtXFx1MDAzZWRhdGFfdHhfcXNbaV0ucGVuZGluZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTgwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU4NDpzdGF0aWMgdm9pZCBtbTgxeF95YXBzX3R4X3FfZnVsbF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01ODUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU4NjpcXHRzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcyA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTg3OlxcdFxcdHRpbWVyX2NvbnRhaW5lcl9vZih5YXBzLCB0LCBjaGlwX3F1ZXVlX2Z1bGwudGltZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1ODk6XFx0cXVldWVfd29yayh5YXBzLVxcdTAwM2Vtb3JzLVxcdTAwM2VjaGlwX3dxLCBcXHUwMDI2eWFwcy1cXHUwMDNlbW9ycy1cXHUwMDNlaGlmX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU5MC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU5MjpzdGF0aWMgdm9pZCBtbTgxeF95YXBzX3FfY2hpcF9mdWxsX3RpbWVyX2luaXQoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTkzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1OTQ6XFx0dGltZXJfc2V0dXAoXFx1MDAyNnlhcHMtXFx1MDAzZWNoaXBfcXVldWVfZnVsbC50aW1lciwgbW04MXhfeWFwc190eF9xX2Z1bGxfdGltZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTk1LVxcdFxcdCAgICAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1OTg6c3RhdGljIHZvaWQgbW04MXhfeWFwc19xX2NoaXBfZnVsbF90aW1lcl9maW5pc2goc3RydWN0IG1tODF4X3lhcHMgKnlhcHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTk5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2MDA6XFx0dGltZXJfc2h1dGRvd25fc3luYyhcXHUwMDI2eWFwcy1cXHUwMDNlY2hpcF9xdWV1ZV9mdWxsLnRpbWVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MDEtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTYwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2MDM6aW50IG1tODF4X3lhcHNfaW5pdChzdHJ1Y3QgbW04MXggKm1vcnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjA0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MDUtXFx0aW50IGksIHJldDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2MDY6XFx0c3RydWN0IG1tODF4X3lhcHMgKnlhcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjYwODpcXHRyZXQgPSBtbTgxeF95YXBzX2h3X2luaXQobW9ycyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjA5LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2MTA6XFx0XFx0ZGV2X2Vycihtb3JzLVxcdTAwM2VkZXYsIFxcXCJtbTgxeF95YXBzX2h3X2luaXQgZmFpbGVkICVkXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MTEtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTYxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2MTQ6XFx0eWFwcyA9IFxcdTAwMjZtb3JzLVxcdTAwM2VoaWYudS55YXBzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjYxNTpcXHR5YXBzLVxcdTAwM2Vtb3JzID0gbW9ycztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MTYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjE5OlxcdHJldCA9IG1tODF4X3lhcHNfYWxsb2NfcGt0X2J1ZmZlcnMoeWFwcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjIwLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTYyMi1cXHRcXHRcXHRyZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjYyMzpcXHRcXHRtbTgxeF95YXBzX2h3X2ZpbmlzaChtb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MjQtXFx0XFx0bW04MXhfcmVsZWFzZV9idXMobW9ycyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MjgtXFx0LyogWUFQUyBpcyBiaS1kaXJlY3Rpb25hbCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjYyOTpcXHRtbTgxeF9za2JxX2luaXQobW9ycywgXFx1MDAyNnlhcHMtXFx1MDAzZWRhdGFfcnhfcSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MzAtXFx0XFx0XFx0TU04MVhfSElGX0ZMQUdTX0RBVEEgfCBNTTgxWF9ISUZfRkxBR1NfRElSX1RPX0hPU1QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjYzMTpcXHRtbTgxeF9za2JxX2luaXQobW9ycywgXFx1MDAyNnlhcHMtXFx1MDAzZWJlYWNvbl9xLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTYzMi1cXHRcXHRcXHRNTTgxWF9ISUZfRkxBR1NfREFUQSB8IE1NODFYX0hJRl9GTEFHU19ESVJfVE9fSE9TVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjMzOlxcdG1tODF4X3NrYnFfaW5pdChtb3JzLCBcXHUwMDI2eWFwcy1cXHUwMDNlbWdtdF9xLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTYzNC1cXHRcXHRcXHRNTTgxWF9ISUZfRkxBR1NfREFUQSB8IE1NODFYX0hJRl9GTEFHU19ESVJfVE9fSE9TVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjYzNjpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRSh5YXBzLVxcdTAwM2VkYXRhX3R4X3FzKTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjM3OlxcdFxcdG1tODF4X3NrYnFfaW5pdChtb3JzLCBcXHUwMDI2eWFwcy1cXHUwMDNlZGF0YV90eF9xc1tpXSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MzgtXFx0XFx0XFx0XFx0TU04MVhfSElGX0ZMQUdTX0RBVEEgfFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY0MjpcXHRtbTgxeF9za2JxX2luaXQobW9ycywgXFx1MDAyNnlhcHMtXFx1MDAzZWNtZF9xLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY0My1cXHRcXHRcXHRNTTgxWF9ISUZfRkxBR1NfQ09NTUFORCB8IE1NODFYX0hJRl9GTEFHU19ESVJfVE9fQ0hJUCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjQ0OlxcdG1tODF4X3NrYnFfaW5pdChtb3JzLCBcXHUwMDI2eWFwcy1cXHUwMDNlY21kX3Jlc3BfcSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02NDUtXFx0XFx0XFx0TU04MVhfSElGX0ZMQUdTX0NPTU1BTkQgfCBNTTgxWF9ISUZfRkxBR1NfRElSX1RPX0hPU1QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY0Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2NDc6XFx0bW04MXhfeWFwc19xX2NoaXBfZnVsbF90aW1lcl9pbml0KHlhcHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY0ODpcXHRJTklUX1dPUksoXFx1MDAyNm1vcnMtXFx1MDAzZWhpZl93b3JrLCBtbTgxeF95YXBzX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY0OTpcXHRJTklUX1dPUksoXFx1MDAyNm1vcnMtXFx1MDAzZXR4X3N0YWxlX3dvcmssIG1tODF4X3lhcHNfc3RhbGVfdHhfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjUwLVxcdG1tODF4X3JlbGVhc2VfYnVzKG1vcnMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY1NTp2b2lkIG1tODF4X3lhcHNfZmluaXNoKHN0cnVjdCBtbTgxeCAqbW9ycylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02NTYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY1Ny1cXHRpbnQgaTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2NTg6XFx0c3RydWN0IG1tODF4X3lhcHMgKnlhcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY2MDpcXHRtbTgxeF95YXBzX2h3X2VuYWJsZV9pcnFzKG1vcnMsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjYyOlxcdHlhcHMgPSBcXHUwMDI2bW9ycy1cXHUwMDNlaGlmLnUueWFwcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2NjM6XFx0eWFwcy1cXHUwMDNlZmluaXNoID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02NjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjY1OlxcdG1tODF4X3NrYnFfZmluaXNoKFxcdTAwMjZ5YXBzLVxcdTAwM2VkYXRhX3J4X3EpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY2NjpcXHRtbTgxeF9za2JxX2ZpbmlzaChcXHUwMDI2eWFwcy1cXHUwMDNlYmVhY29uX3EpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY2NzpcXHRtbTgxeF9za2JxX2ZpbmlzaChcXHUwMDI2eWFwcy1cXHUwMDNlbWdtdF9xKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02NjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjY5OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKHlhcHMtXFx1MDAzZWRhdGFfdHhfcXMpOyBpKyspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjcwOlxcdFxcdG1tODF4X3NrYnFfZmluaXNoKFxcdTAwMjZ5YXBzLVxcdTAwM2VkYXRhX3R4X3FzW2ldKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02NzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjcyOlxcdG1tODF4X3NrYnFfZmluaXNoKFxcdTAwMjZ5YXBzLVxcdTAwM2VjbWRfcSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjczOlxcdG1tODF4X3NrYnFfZmluaXNoKFxcdTAwMjZ5YXBzLVxcdTAwM2VjbWRfcmVzcF9xKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6Njc1OlxcdG1tODF4X3lhcHNfcV9jaGlwX2Z1bGxfdGltZXJfZmluaXNoKHlhcHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY3Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2ODA6XFx0bW04MXhfeWFwc19mcmVlX3BrdF9idWZmZXJzKHlhcHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY4MTpcXHRtbTgxeF95YXBzX2h3X2ZpbmlzaChtb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02ODItfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY4My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2ODQ6dm9pZCBtbTgxeF95YXBzX2ZsdXNoX3R4X2RhdGEoc3RydWN0IG1tODF4ICptb3JzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY4NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjg2LVxcdGludCBpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY4NzpcXHRzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcyA9IFxcdTAwMjZtb3JzLVxcdTAwM2VoaWYudS55YXBzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2ODk6XFx0bW04MXhfc2ticV90eF9mbHVzaChcXHUwMDI2eWFwcy1cXHUwMDNlYmVhY29uX3EpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY5MDpcXHRtbTgxeF9za2JxX3R4X2ZsdXNoKFxcdTAwMjZ5YXBzLVxcdTAwM2VtZ210X3EpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2OTI6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoeWFwcy1cXHUwMDNlZGF0YV90eF9xcyk7IGkrKylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2OTM6XFx0XFx0bW04MXhfc2ticV90eF9mbHVzaChcXHUwMDI2eWFwcy1cXHUwMDNlZGF0YV90eF9xc1tpXSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjk0LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02OTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6Njk2OnZvaWQgbW04MXhfeWFwc19mbHVzaF9jbWRzKHN0cnVjdCBtbTgxeCAqbW9ycylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02OTcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY5ODpcXHRzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcyA9IFxcdTAwMjZtb3JzLVxcdTAwM2VoaWYudS55YXBzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo3MDA6XFx0aWYgKHlhcHMtXFx1MDAzZWZsYWdzIFxcdTAwMjYgTU04MVhfSElGX0ZMQUdTX0NPTU1BTkQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo3MDE6XFx0XFx0bW04MXhfc2ticV9maW5pc2goXFx1MDAyNnlhcHMtXFx1MDAzZWNtZF9xKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo3MDI6XFx0XFx0bW04MXhfc2ticV9maW5pc2goXFx1MDAyNnlhcHMtXFx1MDAzZWNtZF9yZXNwX3EpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTcwMy1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuaD0xNT1zdHJ1Y3QgbW04MXhfaGlmX29wcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuaDoxNjpleHRlcm4gY29uc3Qgc3RydWN0IG1tODF4X2hpZl9vcHMgbW04MXhfeWFwc19vcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmgtMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmg6MTg6ZW51bSBtbTgxeF95YXBzX3RvX2NoaXBfcSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmgtMTktXFx0TU04MVhfWUFQU19UWF9RID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5oLTI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5oOjI3OnN0cnVjdCBtbTgxeF95YXBzX3BrdCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmgtMjgtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuaDoyOTpcXHRlbnVtIG1tODF4X3lhcHNfdG9fY2hpcF9xIHRjX3F1ZXVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5oLTMwLX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmgtMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmg6MzI6c3RydWN0IG1tODF4X3lhcHMge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5oLTMzLVxcdHN0cnVjdCBtbTgxeCAqbW9ycztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuaDozNDpcXHRzdHJ1Y3QgbW04MXhfeWFwc19od19hdXhfZGF0YSAqYXV4X2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmg6MzU6XFx0Y29uc3Qgc3RydWN0IG1tODF4X3lhcHNfb3BzICpvcHM7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI4OjUwLjg0MDQyMDM1NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMwNTg5NzQ2ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBZQVBTIEhhcmR3YXJlIENvZGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IHJlbGF0ZWQgdG8gdGhlc2UgcGFja2V0IHJlYWRzIHdpdGhpbiB0aGUgWUFQUyBoYXJkd2FyZS4gVGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgaXMgZGVmaW5pdGVseSB0aGUgc291cmNlIGNvZGUgZm9yIGB5YXBzX2h3LmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYG1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltYCBhbmQgYG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzYCBhcmUgYmVpbmcgdXRpbGl6ZWQuIEknbGwgbmVlZCB0byBsb2NhdGUgd2hlcmUgYm90aCBmdW5jdGlvbnMgYXJlICpkZWZpbmVkKiwgc28gSSBjYW4gc2VlIHRoZWlyIGltcGxlbWVudGF0aW9uLCBhcyB3ZWxsIGFzIHdoZXJlIHRoZXkgYXJlIGJlaW5nICpjYWxsZWQqLCBzbyBJIGNhbiB1bmRlcnN0YW5kIHRoZSBleGVjdXRpb24gcGF0aHMgdGhhdCBsZWFkIHRvIHRoZWlyIGludm9jYXRpb24uIFRoaXMgd2lsbCBnaXZlIG1lIGEgY2xlYXJlciBwaWN0dXJlIG9mIGhvdyB0aGUgcmVhZCBvcGVyYXRpb25zIGFyZSBiZWluZyBoYW5kbGVkIGFuZCB3aGF0J3MgdmFsaWRhdGluZyB0aGUgZGVsaW1pdGVycyBpbiB0aGUgcHJvY2Vzcy4gVGltZSB0byBmaXJlIHVwIHRoZSBlZGl0b3IgYW5kIHN0YXJ0IHRyYWNpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NTI4LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjE6Mjg6NTMuODk5Mzk4Njk4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MDAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0MDA6XFx0XFxuIDQwMTpcXHRzdGF0aWMgYm9vbCBtbTgxeF9yZWFkX3BrdHNfaF9pc192YWxpZF9kZWxpbSh1MzIgZGVsaW0pXFxuIDQwMjpcXHR7XFxuIDQwMzpcXHRcXHR1OCBjYWxjX2NyYyA9IG1tODF4X3lhcHNfaHdfY3JjKGRlbGltKTtcXG4gNDA0OlxcdFxcdGludCBwa3Rfc2l6ZSA9IFlBUFNfREVMSU1fR0VUX1BIQU5ETEVfU0laRShkZWxpbSk7XFxuIDQwNTpcXHRcXHRpbnQgcGFkZGluZyA9IFlBUFNfREVMSU1fR0VUX1BBRERJTkcoZGVsaW0pO1xcbiA0MDY6XFx0XFxuIDQwNzpcXHRcXHRpZiAoY2FsY19jcmMgIT0gWUFQU19ERUxJTV9HRVRfQ1JDKGRlbGltKSlcXG4gNDA4OlxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4gNDA5OlxcdFxcbiA0MTA6XFx0XFx0aWYgKHBrdF9zaXplIFxcdTAwM2M9IFlBUFNfUkVTRVJWRURfUEFHRV9TSVpFKVxcbiA0MTE6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiA0MTI6XFx0XFxuIDQxMzpcXHRcXHRpZiAoKHBrdF9zaXplICsgcGFkZGluZykgXFx1MDAzZSBZQVBTX01BWF9QS1RfU0laRV9CWVRFUylcXG4gNDE0OlxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4gNDE1OlxcdFxcbiA0MTY6XFx0XFx0LyogUGt0IGxlbmd0aCArIHBhZGRpbmcgc2hvdWxkIG5vdCByZXF1aXJlIG1vcmUgcGFkZGluZyAqL1xcbiA0MTc6XFx0XFx0aWYgKFlBUFNfQ0FMQ19QQURESU5HKHBrdF9zaXplKSAhPSBwYWRkaW5nKVxcbiA0MTg6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiA0MTk6XFx0XFxuIDQyMDpcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gNDIxOlxcdH1cXG4gNDIyOlxcdFxcbiA0MjM6XFx0c3RhdGljIGludCBtbTgxeF9yZWFkX3BrdHNfaF9ieXRlc19yZW1haW5pbmcoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMpXFxuIDQyNDpcXHR7XFxuIDQyNTpcXHRcXHR1MzIgYnl0ZXNfaW5fcXVldWUgPSB5YXBzLVxcdTAwM2VhdXhfZGF0YS1cXHUwMDNlc3RhdHVzX3JlZ3MuZmNfcnhfYnl0ZXNfaW5fcXVldWU7XFxuIDQyNjpcXHRcXHR1MzIgZGVsaW1fb3ZlcmhlYWQgPVxcbiA0Mjc6XFx0XFx0XFx0eWFwcy1cXHUwMDNlYXV4X2RhdGEtXFx1MDAzZXN0YXR1c19yZWdzLmZjX251bV9wa3RzICogc2l6ZW9mKHUzMik7XFxuIDQyODpcXHRcXHR1MzIgcmVzZXJ2ZWRfYnl0ZXMgPSB5YXBzLVxcdTAwM2VhdXhfZGF0YS1cXHUwMDNlc3RhdHVzX3JlZ3MuZmNfbnVtX3BrdHMgKlxcbiA0Mjk6XFx0XFx0XFx0XFx0ICAgICB5YXBzLVxcdTAwM2VhdXhfZGF0YS1cXHUwMDNlcmVzZXJ2ZWRfeWFwc19wYWdlX3NpemU7XFxuIDQzMDpcXHRcXG4gNDMxOlxcdFxcdGlmIChXQVJOX09OKGJ5dGVzX2luX3F1ZXVlIFxcdTAwM2UgSU5UX01BWCkgfHxcXG4gNDMyOlxcdFxcdCAgICBXQVJOX09OKGRlbGltX292ZXJoZWFkIFxcdTAwM2UgSU5UX01BWCkgfHxcXG4gNDMzOlxcdFxcdCAgICBXQVJOX09OKHJlc2VydmVkX2J5dGVzIFxcdTAwM2UgSU5UX01BWCkpXFxuIDQzNDpcXHRcXHRcXHRyZXR1cm4gLUVJTztcXG4gNDM1OlxcdFxcbiA0MzY6XFx0XFx0cmV0dXJuIChpbnQpYnl0ZXNfaW5fcXVldWU7XFxuIDQzNzpcXHR9XFxuIDQzODpcXHRcXG4gNDM5OlxcdHN0YXRpYyBpbnQgbW04MXhfeWFwc19od19yZWFkX3BrdHMoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMsXFxuIDQ0MDpcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbW04MXhfeWFwc19wa3QgKnBrdHMsXFxuIDQ0MTpcXHRcXHRcXHRcXHRcXHQgICBpbnQgbnVtX3BrdHNfbWF4LCBpbnQgKm51bV9wa3RzX3JlY2VpdmVkKVxcbiA0NDI6XFx0e1xcbiA0NDM6XFx0XFx0aW50IHJldDtcXG4gNDQ0OlxcdFxcdGludCBpID0gMDtcXG4gNDQ1OlxcdFxcdGNoYXIgKmZyb21fY2hpcF9idWZmZXJfYWxpZ25lZCA9XFxuIDQ0NjpcXHRcXHRcXHRQVFJfQUxJR04oeWFwcy1cXHUwMDNlYXV4X2RhdGEtXFx1MDAzZWZyb21fY2hpcF9idWZmZXIsXFxuIDQ0NzpcXHRcXHRcXHRcXHQgIG1tODF4X2J1c19nZXRfYWxpZ25tZW50KHlhcHMtXFx1MDAzZW1vcnMpKTtcXG4gNDQ4OlxcdFxcdGNoYXIgKnJlYWRfcHRyID0gZnJvbV9jaGlwX2J1ZmZlcl9hbGlnbmVkO1xcbiA0NDk6XFx0XFx0aW50IGJ5dGVzX3JlbWFpbmluZyA9IG1tODF4X3JlYWRfcGt0c19oX2J5dGVzX3JlbWFpbmluZyh5YXBzKTtcXG4gNDUwOlxcdFxcdGJvb2wgYWdhaW4gPSBmYWxzZTtcXG4gNDUxOlxcdFxcbiA0NTI6XFx0XFx0Km51bV9wa3RzX3JlY2VpdmVkID0gMDtcXG4gNDUzOlxcdFxcbiA0NTQ6XFx0XFx0aWYgKG51bV9wa3RzX21heCA9PSAwIHx8IGJ5dGVzX3JlbWFpbmluZyA9PSAwKVxcbiA0NTU6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDQ1NjpcXHRcXHRpZiAoYnl0ZXNfcmVtYWluaW5nIFxcdTAwM2MgMClcXG4gNDU3OlxcdFxcdFxcdHJldHVybiBieXRlc19yZW1haW5pbmc7XFxuIDQ1ODpcXHRcXHRpZiAoIUlTX0FMSUdORUQoYnl0ZXNfcmVtYWluaW5nLCBzaXplb2YodTMyKSkpIHtcXG4gNDU5OlxcdFxcdFxcdGRldl93YXJuKHlhcHMtXFx1MDAzZW1vcnMtXFx1MDAzZWRldiwgXFxcInlhcHMgdHJ1bmNhdGVkIGRlbGltaXRlclxcXCIpO1xcbiA0NjA6XFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuIDQ2MTpcXHRcXHR9XFxuIDQ2MjpcXHRcXG4gNDYzOlxcdFxcdGlmIChieXRlc19yZW1haW5pbmcgXFx1MDAzZSBZQVBTX0hXX1dJTkRPV19TSVpFX0JZVEVTKSB7XFxuIDQ2NDpcXHRcXHRcXHRieXRlc19yZW1haW5pbmcgPSBZQVBTX0hXX1dJTkRPV19TSVpFX0JZVEVTO1xcbiA0NjU6XFx0XFx0XFx0YWdhaW4gPSB0cnVlO1xcbiA0NjY6XFx0XFx0fVxcbiA0Njc6XFx0XFxuIDQ2ODpcXHRcXHQvKlxcbiA0Njk6XFx0XFx0ICogVGhpcyBpcyBtb3JlIGNvYXJzZS1ncmFpbmVkIHRoYW4gaXQgbmVlZHMgdG8gYmUgLSBvbmNlIHRoZSBkYXRhXFxuIDQ3MDpcXHRcXHQgKiBpcyByZWFkIGludG8gYSBsb2NhbCBidWZmZXIgdGhlIGxvY2sgY2FuIGJlIHJlbGVhc2VkLCBob3dldmVyXFxuIDQ3MTpcXHRcXHQgKiBhY2Nlc3MgdG8gZnJvbV9jaGlwX2J1ZmZlciB3aWxsIG5lZWQgdG8gYmUgcHJvdGVjdGVkIHdpdGggaXRzXFxuIDQ3MjpcXHRcXHQgKiBvd24gbG9ja1xcbiA0NzM6XFx0XFx0ICovXFxuIDQ3NDpcXHRcXHRyZXQgPSBtbTgxeF95YXBzX2h3X2xvY2soeWFwcyk7XFxuIDQ3NTpcXHRcXHRpZiAocmV0KSB7XFxuIDQ3NjpcXHRcXHRcXHRkZXZfZGJnKHlhcHMtXFx1MDAzZW1vcnMtXFx1MDAzZWRldiwgXFxcInlhcHMgbG9jayBmYWlsZWQgJWRcXFwiLCByZXQpO1xcbiA0Nzc6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gNDc4OlxcdFxcdH1cXG4gNDc5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyODo1My44OTk1MTEwNzhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODQ4ODk3MTU5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRoaW5raW5nIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIGB5YXBzX2h3LmNgIENvZGUqKlxuXG5Pa2F5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IGhlcmUsIGVzcGVjaWFsbHkgYXJvdW5kIGhvdyBwYWNrZXQgcmVhZGluZyBpcyBoYW5kbGVkLiBNeSBwcmltYXJ5IGludGVyZXN0IGlzIGluIHRoZSBmdW5jdGlvbnMgYG1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltYCBhbmQgYG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzYC4gSSdtIHN0YXJ0aW5nIGJ5IG1lbnRhbGx5IHRyYWNpbmcgd2hlcmUgdGhvc2UgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSAqdXNlZCogd2l0aGluIHRoZSBgeWFwc19ody5jYCBmaWxlLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGVpciBjYWxsZXJzLiBBcmUgdGhleSBjYWxsZWQgaW4gc2VxdWVuY2U/IEFyZSB0aGV5IG9ubHkgY2FsbGVkIGZyb20gYSBzaW5nbGUgcGxhY2UsIG9yIG11bHRpcGxlIHNwb3RzPyBLbm93aW5nIHRoZSBjYWxsIGdyYXBoIHdpbGwgcmVhbGx5IGhlbHAgbWUgdW5kZXJzdGFuZCBob3cgZGF0YSBmbG93cyB0aHJvdWdoIHRoaXMgbW9kdWxlLCBhbmQgaWRlbnRpZnkgYW55IHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLiBJJ20gbG9va2luZyBmb3IgdGhlIGNvbnRleHRzLCB0aGUgY2FsbGluZyBwYXJhbWV0ZXJzLCBldmVyeXRoaW5nLiBJIHdhbnQgYSBzb2xpZCBtZW50YWwgbW9kZWwgb2YgaG93IHRoZXNlIHBhY2tldCByZWFkaW5nIGZ1bmN0aW9ucyBmaXQgaW50byB0aGUgbGFyZ2VyIFlBUFMgaGFyZHdhcmUgaW50ZXJhY3Rpb24gc2NoZW1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODE2MywiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjE6Mjk6MDIuMzg4NDg1NzgyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5ODgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ4MCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ4MDpcXHRcXHQvKiBSZWFkIGFsbCBhdmFpbGFibGUgcGFja2V0cyB0byB0aGUgYnVmZmVyICovXFxuIDQ4MTpcXHRcXHRyZXQgPSBtbTgxeF9kbV9yZWFkKHlhcHMtXFx1MDAzZW1vcnMsIHlhcHMtXFx1MDAzZWF1eF9kYXRhLVxcdTAwM2V5c2xfYWRkcixcXG4gNDgyOlxcdFxcdFxcdFxcdCAgICBmcm9tX2NoaXBfYnVmZmVyX2FsaWduZWQsIGJ5dGVzX3JlbWFpbmluZyk7XFxuIDQ4MzpcXHRcXG4gNDg0OlxcdFxcdGlmIChyZXQpXFxuIDQ4NTpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuIDQ4NjpcXHRcXG4gNDg3OlxcdFxcdC8qIFNwbGl0IHNlcmlhbGlzZWQgcGFja2V0cyBmcm9tIGJ1ZmZlciAqL1xcbiA0ODg6XFx0XFx0d2hpbGUgKGkgXFx1MDAzYyBudW1fcGt0c19tYXggXFx1MDAyNlxcdTAwMjYgYnl0ZXNfcmVtYWluaW5nIFxcdTAwM2UgMCkge1xcbiA0ODk6XFx0XFx0XFx0dTMyIGRlbGltO1xcbiA0OTA6XFx0XFx0XFx0aW50IHRvdGFsX2xlbjtcXG4gNDkxOlxcdFxcdFxcdGludCBwa3Rfc2l6ZTtcXG4gNDkyOlxcdFxcbiA0OTM6XFx0XFx0XFx0ZGVsaW0gPSBsZTMyX3RvX2NwdSgqKChfX2xlMzIgKilyZWFkX3B0cikpO1xcbiA0OTQ6XFx0XFx0XFx0cmVhZF9wdHIgKz0gc2l6ZW9mKGRlbGltKTtcXG4gNDk1OlxcdFxcdFxcdGJ5dGVzX3JlbWFpbmluZyAtPSBzaXplb2YoZGVsaW0pO1xcbiA0OTY6XFx0XFxuIDQ5NzpcXHRcXHRcXHQvKiBFbmQgb2Ygc3RyZWFtICovXFxuIDQ5ODpcXHRcXHRcXHRpZiAoIWRlbGltKVxcbiA0OTk6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDUwMDpcXHRcXG4gNTAxOlxcdFxcdFxcdGlmICghbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW0oZGVsaW0pKSB7XFxuIDUwMjpcXHRcXHRcXHRcXHQvKlxcbiA1MDM6XFx0XFx0XFx0XFx0ICogVGhpcyB3aWxsIHN0YXJ0IGEgaHVudCBmb3IgYSB2YWxpZCBkZWxpbWl0ZXIuIEdpdmVuXFxuIDUwNDpcXHRcXHRcXHRcXHQgKiB0aGUgQ1JDIGlzIG9ubHkgNyBiaXQgaXQncyBwb3NzaWJsZSB0byBmaW5kIGFuXFxuIDUwNTpcXHRcXHRcXHRcXHQgKiBpbnZhbGlkIGJsb2NrIHdpdGggYSB2YWxpZCBkZWxpbWl0ZXIsIGxlYWRpbmcgdG9cXG4gNTA2OlxcdFxcdFxcdFxcdCAqIGRlc3luY2hyb25pc2F0aW9uLlxcbiA1MDc6XFx0XFx0XFx0XFx0ICovXFxuIDUwODpcXHRcXHRcXHRcXHRkZXZfd2Fybih5YXBzLVxcdTAwM2Vtb3JzLVxcdTAwM2VkZXYsIFxcXCJ5YXBzIGludmFsaWQgZGVsaW1cXFwiKTtcXG4gNTA5OlxcdFxcdFxcdFxcdGJyZWFrO1xcbiA1MTA6XFx0XFx0XFx0fVxcbiA1MTE6XFx0XFxuIDUxMjpcXHRcXHRcXHQvKiBUb3RhbCBsZW5ndGggaW4gY2hpcCAqL1xcbiA1MTM6XFx0XFx0XFx0cGt0X3NpemUgPSBZQVBTX0RFTElNX0dFVF9QS1RfU0laRShkZWxpbSk7XFxuIDUxNDpcXHRcXHRcXHR0b3RhbF9sZW4gPSBwa3Rfc2l6ZSArIFlBUFNfREVMSU1fR0VUX1BBRERJTkcoZGVsaW0pO1xcbiA1MTU6XFx0XFxuIDUxNjpcXHRcXHRcXHRpZiAocGt0c1tpXS5za2IpXFxuIDUxNzpcXHRcXHRcXHRcXHRkZXZfZXJyKHlhcHMtXFx1MDAzZW1vcnMtXFx1MDAzZWRldiwgXFxcInlhcHMgcGFja2V0IGxlYWtcXFwiKTtcXG4gNTE4OlxcdFxcbiA1MTk6XFx0XFx0XFx0LyogU0tCIGRvZXNuJ3Qgd2FudCBwYWRkaW5nICovXFxuIDUyMDpcXHRcXHRcXHRwa3RzW2ldLnNrYiA9IGRldl9hbGxvY19za2IocGt0X3NpemUpO1xcbiA1MjE6XFx0XFx0XFx0aWYgKCFwa3RzW2ldLnNrYikge1xcbiA1MjI6XFx0XFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4gNTIzOlxcdFxcdFxcdFxcdGRldl9lcnIoeWFwcy1cXHUwMDNlbW9ycy1cXHUwMDNlZGV2LCBcXFwieWFwcyBubyBtZW0gZm9yIHNrYlxcXCIpO1xcbiA1MjQ6XFx0XFx0XFx0XFx0Z290byBleGl0O1xcbiA1MjU6XFx0XFx0XFx0fVxcbiA1MjY6XFx0XFx0XFx0c2tiX3B1dChwa3RzW2ldLnNrYiwgcGt0X3NpemUpO1xcbiA1Mjc6XFx0XFxuIDUyODpcXHRcXHRcXHRpZiAodG90YWxfbGVuIFxcdTAwM2M9IGJ5dGVzX3JlbWFpbmluZykge1xcbiA1Mjk6XFx0XFx0XFx0XFx0bWVtY3B5KHBrdHNbaV0uc2tiLVxcdTAwM2VkYXRhLCByZWFkX3B0ciwgcGt0X3NpemUpO1xcbiA1MzA6XFx0XFx0XFx0XFx0cmVhZF9wdHIgKz0gdG90YWxfbGVuO1xcbiA1MzE6XFx0XFx0XFx0XFx0Ynl0ZXNfcmVtYWluaW5nIC09IHRvdGFsX2xlbjtcXG4gNTMyOlxcdFxcdFxcdH0gZWxzZSB7XFxuIDUzMzpcXHRcXHRcXHRcXHRjb25zdCBpbnQgcmVhZF9vdmVyaGFuZ19sZW4gPVxcbiA1MzQ6XFx0XFx0XFx0XFx0XFx0dG90YWxfbGVuIC0gYnl0ZXNfcmVtYWluaW5nO1xcbiA1MzU6XFx0XFx0XFx0XFx0Y29uc3QgaW50IHBrdF9vdmVyaGFuZ19sZW4gPSBwa3Rfc2l6ZSAtIGJ5dGVzX3JlbWFpbmluZztcXG4gNTM2OlxcdFxcbiA1Mzc6XFx0XFx0XFx0XFx0bWVtY3B5KHBrdHNbaV0uc2tiLVxcdTAwM2VkYXRhLCByZWFkX3B0ciwgYnl0ZXNfcmVtYWluaW5nKTtcXG4gNTM4OlxcdFxcdFxcdFxcdHJlYWRfcHRyID0gZnJvbV9jaGlwX2J1ZmZlcl9hbGlnbmVkO1xcbiA1Mzk6XFx0XFxuIDU0MDpcXHRcXHRcXHRcXHRyZXQgPSBtbTgxeF9kbV9yZWFkKFxcbiA1NDE6XFx0XFx0XFx0XFx0XFx0eWFwcy1cXHUwMDNlbW9ycyxcXG4gNTQyOlxcdFxcdFxcdFxcdFxcdC8qIE9mZnNldCBieSA0IHRvIGF2b2lkIHJldHJ5IGxvZ2ljICovXFxuIDU0MzpcXHRcXHRcXHRcXHRcXHR5YXBzLVxcdTAwM2VhdXhfZGF0YS1cXHUwMDNleXNsX2FkZHIgKyA0LCByZWFkX3B0cixcXG4gNTQ0OlxcdFxcdFxcdFxcdFxcdHJlYWRfb3ZlcmhhbmdfbGVuKTtcXG4gNTQ1OlxcdFxcbiA1NDY6XFx0XFx0XFx0XFx0aWYgKHJldClcXG4gNTQ3OlxcdFxcdFxcdFxcdFxcdGdvdG8gZXhpdDtcXG4gNTQ4OlxcdFxcbiA1NDk6XFx0XFx0XFx0XFx0bWVtY3B5KHBrdHNbaV0uc2tiLVxcdTAwM2VkYXRhICsgYnl0ZXNfcmVtYWluaW5nLCByZWFkX3B0cixcXG4gNTUwOlxcdFxcdFxcdFxcdCAgICAgICBwa3Rfb3ZlcmhhbmdfbGVuKTtcXG4gNTUxOlxcdFxcdFxcdFxcdHJlYWRfcHRyICs9IHJlYWRfb3ZlcmhhbmdfbGVuO1xcbiA1NTI6XFx0XFx0XFx0XFx0Ynl0ZXNfcmVtYWluaW5nID0gMDtcXG4gNTUzOlxcdFxcdFxcdH1cXG4gNTU0OlxcdFxcbiA1NTU6XFx0XFx0XFx0Km51bV9wa3RzX3JlY2VpdmVkICs9IDE7XFxuIDU1NjpcXHRcXHRcXHRpKys7XFxuIDU1NzpcXHRcXHR9XFxuIDU1ODpcXHRcXG4gNTU5OlxcdFxcdGlmIChhZ2FpbilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjE6Mjk6MDIuMzg4NTg3MzcyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyMjk2MTE2MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIGB5YXBzX2h3X3JlYWRfcGt0c2AgaW4gYHlhcHNfaHcuY2AqKlxuXG5Pa2F5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29ubmVjdGlvbiBvZiBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgIHdpdGhpbiB0aGUgYHlhcHNfaHcuY2AgbW9kdWxlLiBJJ20gZ29pbmcgdG8ganVtcCBzdHJhaWdodCBpbnRvIHRoZSBjb2RlLCBhbmQgZm9jdXMgb24gbGluZXMgNTUwIHRocm91Z2ggNjAwLiBUaGF0J3MgdXN1YWxseSBhIGdvb2QgcmFuZ2UgdG8gc3RhcnQgd2l0aCBmb3IgY29yZSBmdW5jdGlvbiBjYWxscyBhbmQgaW5pdGlhbGl6YXRpb24gcm91dGluZXMuIEhvcGVmdWxseSwgdGhlIGxpbmtpbmcgaXMgY2xlYXIgYW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IHByb3ZpZGVzIHN1ZmZpY2llbnQgY2x1ZXMuIExldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk2NzgsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI5OjA0LjYxODIwMjYyOVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDMwMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTYwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTYwOlxcdFxcdFxcdHJldCA9IC1FQUdBSU47XFxuIDU2MTpcXHRcXG4gNTYyOlxcdGV4aXQ6XFxuIDU2MzpcXHRcXHRtbTgxeF95YXBzX2h3X3VubG9jayh5YXBzKTtcXG4gNTY0OlxcdFxcdHJldHVybiByZXQ7XFxuIDU2NTpcXHR9XFxuIDU2NjpcXHRcXG4gNTY3OlxcdHN0YXRpYyBpbnQgbW04MXhfeWFwc19od191cGRhdGVfc3RhdHVzKHN0cnVjdCBtbTgxeF95YXBzICp5YXBzKVxcbiA1Njg6XFx0e1xcbiA1Njk6XFx0XFx0aW50IHJldDtcXG4gNTcwOlxcdFxcdGludCB0Y190b3RhbF9wa3RfY291bnQ7XFxuIDU3MTpcXHRcXHR1bnNpZ25lZCBsb25nIHJlZ19yZWFkX3RpbWVvdXQ7XFxuIDU3MjpcXHRcXHRzdHJ1Y3QgbW04MXhfeWFwc19zdGF0dXNfcmVncyAqciA9IFxcdTAwMjZ5YXBzLVxcdTAwM2VhdXhfZGF0YS1cXHUwMDNlc3RhdHVzX3JlZ3M7XFxuIDU3MzpcXHRcXHRzdHJ1Y3QgbW04MXhfeWFwc19od19zdGF0dXNfcmVncyAqaHdfciA9IFxcdTAwMjZ5YXBzLVxcdTAwM2VhdXhfZGF0YS1cXHUwMDNlaHdfc3RhdHVzX3JlZ3M7XFxuIDU3NDpcXHRcXG4gNTc1OlxcdFxcdHJldCA9IG1tODF4X3lhcHNfaHdfbG9jayh5YXBzKTtcXG4gNTc2OlxcdFxcdGlmIChyZXQpIHtcXG4gNTc3OlxcdFxcdFxcdGRldl9kYmcoeWFwcy1cXHUwMDNlbW9ycy1cXHUwMDNlZGV2LCBcXFwieWFwcyBsb2NrIGZhaWxlZCAlZFxcXCIsIHJldCk7XFxuIDU3ODpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA1Nzk6XFx0XFx0fVxcbiA1ODA6XFx0XFxuIDU4MTpcXHRcXHRyZWdfcmVhZF90aW1lb3V0ID0gamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoMTAwKTtcXG4gNTgyOlxcdFxcdGRvIHtcXG4gNTgzOlxcdFxcdFxcdGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHJlZ19yZWFkX3RpbWVvdXQpKSB7XFxuIDU4NDpcXHRcXHRcXHRcXHRkZXZfZXJyKHlhcHMtXFx1MDAzZW1vcnMtXFx1MDAzZWRldixcXG4gNTg1OlxcdFxcdFxcdFxcdFxcdFxcXCJ0aW1lZCBvdXQgcmVhZGluZyBzdGF0dXMgcmVnaXN0ZXJzOiAlZFxcXCIsIHJldCk7XFxuIDU4NjpcXHRcXHRcXHRcXHRyZXQgPSAtRVRJTUVET1VUO1xcbiA1ODc6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDU4ODpcXHRcXHRcXHR9XFxuIDU4OTpcXHRcXG4gNTkwOlxcdFxcdFxcdHJldCA9IG1tODF4X2RtX3JlYWQoeWFwcy1cXHUwMDNlbW9ycyxcXG4gNTkxOlxcdFxcdFxcdFxcdFxcdCAgICB5YXBzLVxcdTAwM2VhdXhfZGF0YS1cXHUwMDNlc3RhdHVzX3JlZ3NfYWRkcixcXG4gNTkyOlxcdFxcdFxcdFxcdFxcdCAgICAodTggKilod19yLCBzaXplb2YoKmh3X3IpKTtcXG4gNTkzOlxcdFxcdH0gd2hpbGUgKCFyZXQgXFx1MDAyNlxcdTAwMjYgbGUzMl90b19jcHUoaHdfci1cXHUwMDNlbG9jaykpO1xcbiA1OTQ6XFx0XFxuIDU5NTpcXHRcXHRpZiAocmV0KSB7XFxuIDU5NjpcXHRcXHRcXHRpZiAocmV0ICE9IC1FTk9ERVYpIHtcXG4gNTk3OlxcdFxcdFxcdFxcdGRldl9lcnIoeWFwcy1cXHUwMDNlbW9ycy1cXHUwMDNlZGV2LFxcbiA1OTg6XFx0XFx0XFx0XFx0XFx0XFxcImVycm9yIHJlYWRpbmcgeWFwcyBzdGF0dXMgcmVnaXN0ZXJzOiAlZFxcXCIsIHJldCk7XFxuIDU5OTpcXHRcXHRcXHR9XFxuIDYwMDpcXHRcXHRcXHRnb3RvIGV4aXRfdW5sb2NrO1xcbiA2MDE6XFx0XFx0fVxcbiA2MDI6XFx0XFxuIDYwMzpcXHRcXHRyLVxcdTAwM2V0Y190eF9wb29sX251bV9wYWdlcyA9IGxlMzJfdG9fY3B1KGh3X3ItXFx1MDAzZXRjX3R4X3Bvb2xfbnVtX3BhZ2VzKTtcXG4gNjA0OlxcdFxcdHItXFx1MDAzZXRjX2NtZF9wb29sX251bV9wYWdlcyA9IGxlMzJfdG9fY3B1KGh3X3ItXFx1MDAzZXRjX2NtZF9wb29sX251bV9wYWdlcyk7XFxuIDYwNTpcXHRcXHRyLVxcdTAwM2V0Y19iZWFjb25fcG9vbF9udW1fcGFnZXMgPSBsZTMyX3RvX2NwdShod19yLVxcdTAwM2V0Y19iZWFjb25fcG9vbF9udW1fcGFnZXMpO1xcbiA2MDY6XFx0XFx0ci1cXHUwMDNldGNfbWdtdF9wb29sX251bV9wYWdlcyA9IGxlMzJfdG9fY3B1KGh3X3ItXFx1MDAzZXRjX21nbXRfcG9vbF9udW1fcGFnZXMpO1xcbiA2MDc6XFx0XFx0ci1cXHUwMDNlZmNfcnhfcG9vbF9udW1fcGFnZXMgPSBsZTMyX3RvX2NwdShod19yLVxcdTAwM2VmY19yeF9wb29sX251bV9wYWdlcyk7XFxuIDYwODpcXHRcXHRyLVxcdTAwM2VmY19yZXNwX3Bvb2xfbnVtX3BhZ2VzID0gbGUzMl90b19jcHUoaHdfci1cXHUwMDNlZmNfcmVzcF9wb29sX251bV9wYWdlcyk7XFxuIDYwOTpcXHRcXHRyLVxcdTAwM2VmY190eF9zdHNfcG9vbF9udW1fcGFnZXMgPSBsZTMyX3RvX2NwdShod19yLVxcdTAwM2VmY190eF9zdHNfcG9vbF9udW1fcGFnZXMpO1xcbiA2MTA6XFx0XFx0ci1cXHUwMDNlZmNfYXV4X3Bvb2xfbnVtX3BhZ2VzID0gbGUzMl90b19jcHUoaHdfci1cXHUwMDNlZmNfYXV4X3Bvb2xfbnVtX3BhZ2VzKTtcXG4gNjExOlxcdFxcdHItXFx1MDAzZXRjX3R4X251bV9wa3RzID0gbGUzMl90b19jcHUoaHdfci1cXHUwMDNldGNfdHhfbnVtX3BrdHMpO1xcbiA2MTI6XFx0XFx0ci1cXHUwMDNldGNfY21kX251bV9wa3RzID0gbGUzMl90b19jcHUoaHdfci1cXHUwMDNldGNfY21kX251bV9wa3RzKTtcXG4gNjEzOlxcdFxcdHItXFx1MDAzZXRjX2JlYWNvbl9udW1fcGt0cyA9IGxlMzJfdG9fY3B1KGh3X3ItXFx1MDAzZXRjX2JlYWNvbl9udW1fcGt0cyk7XFxuIDYxNDpcXHRcXHRyLVxcdTAwM2V0Y19tZ210X251bV9wa3RzID0gbGUzMl90b19jcHUoaHdfci1cXHUwMDNldGNfbWdtdF9udW1fcGt0cyk7XFxuIDYxNTpcXHRcXHRyLVxcdTAwM2VmY19udW1fcGt0cyA9IGxlMzJfdG9fY3B1KGh3X3ItXFx1MDAzZWZjX251bV9wa3RzKTtcXG4gNjE2OlxcdFxcdHItXFx1MDAzZWZjX2RvbmVfbnVtX3BrdHMgPSBsZTMyX3RvX2NwdShod19yLVxcdTAwM2VmY19kb25lX251bV9wa3RzKTtcXG4gNjE3OlxcdFxcdHItXFx1MDAzZWZjX3J4X2J5dGVzX2luX3F1ZXVlID0gbGUzMl90b19jcHUoaHdfci1cXHUwMDNlZmNfcnhfYnl0ZXNfaW5fcXVldWUpO1xcbiA2MTg6XFx0XFx0ci1cXHUwMDNldGNfZGVsaW1fY3JjX2ZhaWxfZGV0ZWN0ZWQgPSBsZTMyX3RvX2NwdShod19yLVxcdTAwM2V0Y19kZWxpbV9jcmNfZmFpbF9kZXRlY3RlZCk7XFxuIDYxOTpcXHRcXHRyLVxcdTAwM2Vsb2NrID0gbGUzMl90b19jcHUoaHdfci1cXHUwMDNlbG9jayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI5OjA0LjYxODMwNzY3OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDQyNDk2NTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBjb2RlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgIGZ1bmN0aW9uIGZpdHMgaW50byB0aGUgYmlnZ2VyIHBpY3R1cmUsIHNvIG15IGZpcnN0IHN0ZXAgaXMgdG8gdHJhY2Ugd2hlcmUgaXQncyBiZWluZyBhc3NpZ25lZCB0byBgb3BzYC4gVGhhdCdzIHRoZSBjcnVjaWFsIGxpbmsuIEknbGwgbmVlZCB0byBnbyB0aHJvdWdoIGB5YXBzX2h3LmNgIGFuZCBmaWd1cmUgb3V0IHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgYXNzaWduZWQsIHRoaXMgYG9wc2Agc3RydWN0dXJlLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIHdpbGwgYmUgcmV2ZWFsZWQuIEknbSBsb29raW5nIGZvciB0aGUgaW5zdGFudGlhdGlvbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGBvcHNgIHZhcmlhYmxlIHNpZ25pZmllcywgYW5kIHdoYXQgb3RoZXIgZnVuY3Rpb25zIGFyZSBpbmNsdWRlZCBpbiBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEyODIsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI5OjA3LjA2MDgwNjc4M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2NjAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2NjA6XFx0XFx0aWYgKCF5YXBzLVxcdTAwM2VhdXhfZGF0YSkge1xcbiA2NjE6XFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4gNjYyOlxcdFxcdFxcdGdvdG8gZXJyX2V4aXQ7XFxuIDY2MzpcXHRcXHR9XFxuIDY2NDpcXHRcXG4gNjY1OlxcdFxcdHlhcHMtXFx1MDAzZWF1eF9kYXRhLVxcdTAwM2V0b19jaGlwX2J1ZmZlciA9XFxuIDY2NjpcXHRcXHRcXHRremFsbG9jKFlBUFNfSFdfV0lORE9XX1NJWkVfQllURVMgKyBhbGlnbm1lbnQgLSAxLCBHRlBfS0VSTkVMKTtcXG4gNjY3OlxcdFxcdGlmICgheWFwcy1cXHUwMDNlYXV4X2RhdGEtXFx1MDAzZXRvX2NoaXBfYnVmZmVyKSB7XFxuIDY2ODpcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbiA2Njk6XFx0XFx0XFx0Z290byBlcnJfZXhpdDtcXG4gNjcwOlxcdFxcdH1cXG4gNjcxOlxcdFxcbiA2NzI6XFx0XFx0eWFwcy1cXHUwMDNlYXV4X2RhdGEtXFx1MDAzZWZyb21fY2hpcF9idWZmZXIgPVxcbiA2NzM6XFx0XFx0XFx0a3phbGxvYyhZQVBTX0hXX1dJTkRPV19TSVpFX0JZVEVTICsgYWxpZ25tZW50IC0gMSwgR0ZQX0tFUk5FTCk7XFxuIDY3NDpcXHRcXHRpZiAoIXlhcHMtXFx1MDAzZWF1eF9kYXRhLVxcdTAwM2Vmcm9tX2NoaXBfYnVmZmVyKSB7XFxuIDY3NTpcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbiA2NzY6XFx0XFx0XFx0Z290byBlcnJfZXhpdDtcXG4gNjc3OlxcdFxcdH1cXG4gNjc4OlxcdFxcbiA2Nzk6XFx0XFx0aWYgKCFJU19BTElHTkVEKCh1aW50cHRyX3QpXFx1MDAyNnlhcHMtXFx1MDAzZWF1eF9kYXRhLVxcdTAwM2VzdGF0dXNfcmVncywgYWxpZ25tZW50KSkge1xcbiA2ODA6XFx0XFx0XFx0ZGV2X3dhcm4obW9ycy1cXHUwMDNlZGV2LFxcbiA2ODE6XFx0XFx0XFx0XFx0IFxcXCJTdGF0dXMgcmVnaXN0ZXJzIGFyZSBub3QgYWxpZ25lZCB0byAlZCBieXRlc1xcXCIsXFxuIDY4MjpcXHRcXHRcXHRcXHQgYWxpZ25tZW50KTtcXG4gNjgzOlxcdFxcdH1cXG4gNjg0OlxcdFxcbiA2ODU6XFx0XFx0eWFwcy1cXHUwMDNlb3BzID0gXFx1MDAyNm1tODF4X3lhcHNfaHdfb3BzO1xcbiA2ODY6XFx0XFx0cmV0dXJuIHJldDtcXG4gNjg3OlxcdFxcbiA2ODg6XFx0ZXJyX2V4aXQ6XFxuIDY4OTpcXHRcXHRtbTgxeF95YXBzX2h3X2ZpbmlzaChtb3JzKTtcXG4gNjkwOlxcdFxcdHJldHVybiByZXQ7XFxuIDY5MTpcXHR9XFxuIDY5MjpcXHRcXG4gNjkzOlxcdHZvaWQgbW04MXhfeWFwc19od19maW5pc2goc3RydWN0IG1tODF4ICptb3JzKVxcbiA2OTQ6XFx0e1xcbiA2OTU6XFx0XFx0c3RydWN0IG1tODF4X3lhcHMgKnlhcHM7XFxuIDY5NjpcXHRcXG4gNjk3OlxcdFxcdHlhcHMgPSBcXHUwMDI2bW9ycy1cXHUwMDNlaGlmLnUueWFwcztcXG4gNjk4OlxcdFxcdGlmICh5YXBzLVxcdTAwM2VhdXhfZGF0YSkge1xcbiA2OTk6XFx0XFx0XFx0a2ZyZWUoeWFwcy1cXHUwMDNlYXV4X2RhdGEtXFx1MDAzZWZyb21fY2hpcF9idWZmZXIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyOTowNy4wNjA4OTk3ODNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTc4OTA1MTg0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBgbW04MXhfeWFwc19od19vcHNgIFN0cnVjdHVyZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG1tODF4X3lhcHNfaHdfb3BzYCB0aGluZy4uLiBJbW1lZGlhdGVseSwgbXkgdGhvdWdodCBpcywgbGV0J3MgdHJhY2sgdGhpcyBkb3duLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgc3RydWN0dXJlIGlzIGFuZCBob3cgaXQncyB1c2VkLiBTaW5jZSBpdCdzIGxpa2VseSBhIGhhcmR3YXJlIG9wZXJhdGlvbnMgc3RydWN0dXJlLCBhbmQgaXQgaGFzIFwieWFwc19od1wiIGluIHRoZSBuYW1lLCBteSBpbnN0aW5jdCBpcyB0byBqdW1wIHJpZ2h0IGludG8gdGhlIGB5YXBzX2h3LmNgIGZpbGUuIFNlYXJjaGluZyBmb3IgdGhhdCBzeW1ib2wgdGhlcmUgaXMgcHJvYmFibHkgdGhlIGJlc3Qgc3RhcnRpbmcgcG9pbnQuIExldCdzIHNlZSB3aGF0IHRoYXQgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIxMjEsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI5OjA4Ljg0OTk1NDE1N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIzODA5NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW04MXhfeWFwc19od19vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmM9NTY3PXN0YXRpYyBpbnQgbW04MXhfeWFwc19od191cGRhdGVfc3RhdHVzKHN0cnVjdCBtbTgxeF95YXBzICp5YXBzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMtNjQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jOjY0NTpzdGF0aWMgY29uc3Qgc3RydWN0IG1tODF4X3lhcHNfb3BzIG1tODF4X3lhcHNfaHdfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jLTY0Ni1cXHQud3JpdGVfcGt0cyA9IG1tODF4X3lhcHNfaHdfd3JpdGVfcGt0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jPTY1MT1pbnQgbW04MXhfeWFwc19od19pbml0KHN0cnVjdCBtbTgxeCAqbW9ycylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jLTY4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYzo2ODU6XFx0eWFwcy1cXHUwMDNlb3BzID0gXFx1MDAyNm1tODF4X3lhcHNfaHdfb3BzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jLTY4Ni1cXHRyZXR1cm4gcmV0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyOTowOC45MDIzNDI0MzZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTYzNTQwMjc4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgYG1tODF4YCBVU0IgcHJvYmluZyBwcm9jZXNzLiBUaW1lIHRvIHB1bGwgdXAgdGhlIHNvdXJjZSBjb2RlIOKAkyBzcGVjaWZpY2FsbHksIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jYC4gSSdtIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBVU0IgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCBkZXRlY3Rpb24gd2l0aGluIHRoYXQgcGFydGljdWxhciBtb2R1bGUuIEkgd2FudCB0byBzZWUgaG93IHRoZSBrZXJuZWwgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlLCB0aGUgc2VxdWVuY2Ugb2YgZXZlbnRzLCBhbmQgYW55IHF1aXJrcyBzcGVjaWZpYyB0byB0aGlzIGBtbTgxeGAgaW1wbGVtZW50YXRpb24uIExldCdzIHNlZSB3aGF0IHNlY3JldHMgaXQgaG9sZHMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNzA5LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjE6Mjk6MTAuNTM3NzQ3ODUyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdC8qXFxuICAgMzpcXHQgKiBDb3B5cmlnaHQgKGMpIDIwMTctMjAyNiBNb3JzZSBNaWNyb1xcbiAgIDQ6XFx0ICovXFxuICAgNTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvamlmZmllcy5oXFx1MDAzZVxcbiAgIDY6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbiAgIDc6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VzYi5oXFx1MDAzZVxcbiAgIDg6XFx0I2luY2x1ZGUgXFxcImhpZi5oXFxcIlxcbiAgIDk6XFx0I2luY2x1ZGUgXFxcImJ1cy5oXFxcIlxcbiAgMTA6XFx0I2luY2x1ZGUgXFxcIm1hYy5oXFxcIlxcbiAgMTE6XFx0I2luY2x1ZGUgXFxcImNvcmUuaFxcXCJcXG4gIDEyOlxcdFxcbiAgMTM6XFx0LypcXG4gIDE0OlxcdCAqIFVSQiB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gSWYgYW4gVVJCIGRvZXMgbm90IGNvbXBsZXRlIHdpdGhpbiB0aGlzXFxuICAxNTpcXHQgKiB0aW1lLCBpdCB3aWxsIGJlIGtpbGxlZC4gVGhpcyB0aW1lb3V0IG5lZWRzIHRvIGFjY291bnQgZm9yIFVTQiBzdXNwZW5kYW5kXFxuICAxNjpcXHQgKiByZXN1bWUgb2NjdXJyaW5nIGJlZm9yZSB0aGUgVVJCIGNhbiBiZSB0cmFuc2ZlcnJlZCwgYW5kIGl0IGFsc28gbmVlZHMgdG9cXG4gIDE3OlxcdCAqIGFjY291bnQgZm9yIHRyYW5zZmVycmluZyBVU0JfTUFYX1RSQU5TRkVSX1NJWkUgYnl0ZXMgb3ZlciBhIHBvdGVudGlhbGx5XFxuICAxODpcXHQgKiBzbG93LCBjb25nZXN0ZWQgVVNCIEZ1bGwgU3BlZWQgbGluay5cXG4gIDE5OlxcdCAqL1xcbiAgMjA6XFx0I2RlZmluZSBVUkJfVElNRU9VVF9NUyAyNTBcXG4gIDIxOlxcdFxcbiAgMjI6XFx0LyogSGlnaCBzcGVlZCBVU0IgMl4oNC0xKSAqIDEyNXVzZWMgPSAxbXNlYyAqL1xcbiAgMjM6XFx0I2RlZmluZSBNTTgxWF9VU0JfSU5URVJSVVBUX0lOVEVSVkFMIDRcXG4gIDI0OlxcdFxcbiAgMjU6XFx0LyogTWF4IGJ5dGVzIHBlciBVU0IgcmVhZC93cml0ZSAqL1xcbiAgMjY6XFx0I2RlZmluZSBVU0JfTUFYX1RSQU5TRkVSX1NJWkUgKDE2ICogMTAyNClcXG4gIDI3OlxcdFxcbiAgMjg6XFx0LyogSU5UIEVQIGJ1ZmZlciBzaXplICovXFxuICAyOTpcXHQjZGVmaW5lIE1NODFYX0VQX0lOVF9CVUZGRVJfU0laRSA4XFxuICAzMDpcXHRcXG4gIDMxOlxcdC8qIE1vcnNlIHZlbmRvciBJRHMqL1xcbiAgMzI6XFx0I2RlZmluZSBNTTgxWF9WRU5ET1JfSUQgMHgzMjViXFxuICAzMzpcXHQjZGVmaW5lIE1NODFYX01NODEwWF9QUk9EVUNUX0lEIDB4ODEwMFxcbiAgMzQ6XFx0XFxuICAzNTpcXHQvKiBQb3dlciBtYW5hZ2VtZW50IHJ1bnRpbWUgYXV0by1zdXNwZW5kIGRlbGF5IHZhbHVlIGluIG1pbGxpc2Vjb25kcyAqL1xcbiAgMzY6XFx0I2RlZmluZSBQTV9SVU5USU1FX0FVVE9TVVNQRU5EX0RFTEFZX01TIDEwMFxcbiAgMzc6XFx0XFxuICAzODpcXHRlbnVtIG1tODF4X3VzYl9lbmRwb2ludHMge1xcbiAgMzk6XFx0XFx0TU04MVhfRVBfQ01EID0gMCxcXG4gIDQwOlxcdFxcdE1NODFYX0VQX0lOVCxcXG4gIDQxOlxcdFxcdE1NODFYX0VQX01FTV9SRCxcXG4gIDQyOlxcdFxcdE1NODFYX0VQX01FTV9XUixcXG4gIDQzOlxcdFxcdE1NODFYX0VQX1JFR19SRCxcXG4gIDQ0OlxcdFxcdE1NODFYX0VQX1JFR19XUixcXG4gIDQ1OlxcdFxcdE1NODFYX0VQX0VQX01BWCxcXG4gIDQ2OlxcdH07XFxuICA0NzpcXHRcXG4gIDQ4OlxcdHN0cnVjdCBtbTgxeF91c2JfZW5kcG9pbnQge1xcbiAgNDk6XFx0XFx0dW5zaWduZWQgY2hhciAqYnVmZmVyO1xcbiAgNTA6XFx0XFx0c3RydWN0IHVyYiAqdXJiO1xcbiAgNTE6XFx0XFx0X191OCBhZGRyO1xcbiAgNTI6XFx0XFx0aW50IHNpemU7XFxuICA1MzpcXHR9O1xcbiAgNTQ6XFx0XFxuICA1NTpcXHRlbnVtIG1tODF4X3VzYl9mbGFncyB7IE1NODFYX1VTQl9GTEFHX0FUVEFDSEVELCBNTTgxWF9VU0JfRkxBR19TVVNQRU5ERUQgfTtcXG4gIDU2OlxcdFxcbiAgNTc6XFx0c3RydWN0IG1tODF4X3VzYiB7XFxuICA1ODpcXHRcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldjtcXG4gIDU5OlxcdFxcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2U7XFxuICA2MDpcXHRcXHRzdHJ1Y3QgbW04MXhfdXNiX2VuZHBvaW50IGVuZHBvaW50c1tNTTgxWF9FUF9FUF9NQVhdO1xcbiAgNjE6XFx0XFx0aW50IGVycm9ycztcXG4gIDYyOlxcdFxcbiAgNjM6XFx0XFx0Lyogc2VyaWFsaXNlIFVTQiBkZXZpY2Ugc3RydWN0ICovXFxuICA2NDpcXHRcXHRzdHJ1Y3QgbXV0ZXggbG9jaztcXG4gIDY1OlxcdFxcbiAgNjY6XFx0XFx0Lyogc2VyaWFsaXNlIFVTQiBidXMgYWNjZXNzICovXFxuICA2NzpcXHRcXHRzdHJ1Y3QgbXV0ZXggYnVzX2xvY2s7XFxuICA2ODpcXHRcXG4gIDY5OlxcdFxcdGJvb2wgb25nb2luZ19jbWQ7XFxuICA3MDpcXHRcXHRib29sIG9uZ29pbmdfcnc7XFxuICA3MTpcXHRcXHR3YWl0X3F1ZXVlX2hlYWRfdCByd19pbl93YWl0O1xcbiAgNzI6XFx0XFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4gIDczOlxcdH07XFxuICA3NDpcXHRcXG4gIDc1OlxcdGVudW0gbW04MXhfdXNiX2NvbW1hbmRfZGlyZWN0aW9uIHtcXG4gIDc2OlxcdFxcdE1NODFYX1VTQl9XUklURSA9IDB4MDAsXFxuICA3NzpcXHRcXHRNTTgxWF9VU0JfUkVBRCA9IDB4ODAsXFxuICA3ODpcXHRcXHRNTTgxWF9VU0JfUkVTRVQgPSAweDAyLFxcbiAgNzk6XFx0fTtcXG4gIDgwOlxcdFxcbiAgODE6XFx0c3RydWN0IG1tODF4X3VzYl9jb21tYW5kIHtcXG4gIDgyOlxcdFxcdF9fbGUzMiBkaXI7IC8qIE5leHQgQlVMSyBkaXJlY3Rpb24gKi9cXG4gIDgzOlxcdFxcdF9fbGUzMiBhZGRyZXNzOyAvKiBOZXh0IEJVTEsgYWRkcmVzcyAqL1xcbiAgODQ6XFx0XFx0X19sZTMyIGxlbmd0aDsgLyogTmV4dCBCVUxLIHNpemUgKi9cXG4gIDg1OlxcdH07XFxuICA4NjpcXHRcXG4gIDg3OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBtbTgxeF91c2JfdGFibGVbXSA9IHtcXG4gIDg4OlxcdFxcdHsgVVNCX0RFVklDRShNTTgxWF9WRU5ET1JfSUQsIE1NODFYX01NODEwWF9QUk9EVUNUX0lEKSB9LFxcbiAgODk6XFx0XFx0e30gLyogVGVybWluYXRpbmcgZW50cnkgKi9cXG4gIDkwOlxcdH07XFxuICA5MTpcXHRcXG4gIDkyOlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBtbTgxeF91c2JfdGFibGUpO1xcbiAgOTM6XFx0XFxuICA5NDpcXHRzdGF0aWMgdm9pZCBtbTgxeF91c2JfaXJxX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiAgOTU6XFx0e1xcbiAgOTY6XFx0XFx0c3RydWN0IG1tODF4ICptb3JzID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBtbTgxeCwgdXNiX2lycV93b3JrKTtcXG4gIDk3OlxcdFxcbiAgOTg6XFx0XFx0bW04MXhfY2xhaW1fYnVzKG1vcnMpO1xcbiAgOTk6XFx0XFx0bW04MXhfaHdfaXJxX2hhbmRsZShtb3JzKTtcXG4gMTAwOlxcdFxcdG1tODF4X3JlbGVhc2VfYnVzKG1vcnMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyOToxMC41Mzc4NTA5MDJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTc2NzMyMjA5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqRGl2aW5nIGludG8gdGhlIFVTQiBLZXJuZWwgQ29kZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyBVU0IgaXNzdWUuIEZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0J3MgemVybyBpbiBvbiB0aGUgYHVzYi5jYCBmaWxlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcHJvYmluZyBtZWNoYW5pc20gaXMgd29ya2luZy4gSSdsbCBzdGFydCBieSBjaGVja2luZyBvdXQgdGhlIHByb2JlIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uLiBGcm9tIHRoZXJlLCBJJ2xsIGtlZXAgZGlnZ2luZyBkZWVwZXIgd2l0aGluIGB1c2IuY2AgdG8gc2VlIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgVVNCIHN1YnN5c3RlbSBhbmQgd2hlcmUgdGhlIGlzc3VlIG1heSBsYXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MzgxLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyOToxMi4zMDUxNzU0NzdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI0MDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDAwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQwMDpcXHRcXG4gNDAxOlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNm11c2ItXFx1MDAzZWxvY2spO1xcbiA0MDI6XFx0XFxuIDQwMzpcXHRcXHRtdXNiLVxcdTAwM2VvbmdvaW5nX3J3ID0gdHJ1ZTtcXG4gNDA0OlxcdFxcdG11c2ItXFx1MDAzZWVycm9ycyA9IDA7XFxuIDQwNTpcXHRcXG4gNDA2OlxcdFxcdC8qIFNlbmQgY29tbWFuZCBhaGVhZCB0byBwcmVwYXJlIGZvciBUb2tlbnMgKi9cXG4gNDA3OlxcdFxcdGNtZC5kaXIgPSBjcHVfdG9fbGUzMihNTTgxWF9VU0JfV1JJVEUpO1xcbiA0MDg6XFx0XFx0Y21kLmFkZHJlc3MgPSBjcHVfdG9fbGUzMihhZGRyZXNzKTtcXG4gNDA5OlxcdFxcdGNtZC5sZW5ndGggPSBjcHVfdG9fbGUzMihzaXplKTtcXG4gNDEwOlxcdFxcdHJldCA9IG1tODF4X3VzYl9jbWQobXVzYiwgXFx1MDAyNmNtZCk7XFxuIDQxMTpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiA0MTI6XFx0XFx0XFx0ZGV2X2Vycihtb3JzLVxcdTAwM2VkZXYsIFxcXCJtbTgxeF91c2JfbWVtX3JlYWQgZXJyb3IgJWRcXFwiLCByZXQpO1xcbiA0MTM6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4gNDE0OlxcdFxcdH1cXG4gNDE1OlxcdFxcbiA0MTY6XFx0XFx0bWVtY3B5KG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLmJ1ZmZlciwgZGF0YSwgc2l6ZSk7XFxuIDQxNzpcXHRcXG4gNDE4OlxcdFxcdC8qIHByZXBhcmUgYSByZWFkICovXFxuIDQxOTpcXHRcXHR1c2JfZmlsbF9idWxrX3VyYihcXG4gNDIwOlxcdFxcdFxcdG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLnVyYiwgbXVzYi1cXHUwMDNldWRldixcXG4gNDIxOlxcdFxcdFxcdHVzYl9zbmRidWxrcGlwZShtdXNiLVxcdTAwM2V1ZGV2LFxcbiA0MjI6XFx0XFx0XFx0XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9XUl0uYWRkciksXFxuIDQyMzpcXHRcXHRcXHRtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS5idWZmZXIsIHNpemUsXFxuIDQyNDpcXHRcXHRcXHRtbTgxeF91c2JfbWVtX3J3X2NhbGxiYWNrLCBtb3JzKTtcXG4gNDI1OlxcdFxcbiA0MjY6XFx0XFx0cmV0ID0gdXNiX3N1Ym1pdF91cmIobXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9XUl0udXJiLCBHRlBfQVRPTUlDKTtcXG4gNDI3OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuIDQyODpcXHRcXHRcXHRkZXZfZXJyKG1vcnMtXFx1MDAzZWRldiwgXFxcIi0gZmFpbGVkIHN1Ym1pdHRpbmcgd3JpdGUgdXJiLCBlcnJvciAlZFxcXCIsXFxuIDQyOTpcXHRcXHRcXHRcXHRyZXQpO1xcbiA0MzA6XFx0XFx0XFx0cmV0ID0gKHJldCA9PSAtRU5PTUVNKSA/IHJldCA6IC1FSU87XFxuIDQzMTpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbiA0MzI6XFx0XFx0fVxcbiA0MzM6XFx0XFxuIDQzNDpcXHRcXHRyZXQgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdGltZW91dChcXG4gNDM1OlxcdFxcdFxcdG11c2ItXFx1MDAzZXJ3X2luX3dhaXQsICghbXVzYi1cXHUwMDNlb25nb2luZ19ydyksXFxuIDQzNjpcXHRcXHRcXHRtc2Vjc190b19qaWZmaWVzKFVSQl9USU1FT1VUX01TKSk7XFxuIDQzNzpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiA0Mzg6XFx0XFx0XFx0ZGV2X2Vycihtb3JzLVxcdTAwM2VkZXYsIFxcXCJlcnJvciAlZFxcXCIsIHJldCk7XFxuIDQzOTpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbiA0NDA6XFx0XFx0fSBlbHNlIGlmIChyZXQgPT0gMCkge1xcbiA0NDE6XFx0XFx0XFx0LyogVGltZWQgb3V0LiAqL1xcbiA0NDI6XFx0XFx0XFx0dXNiX2tpbGxfdXJiKG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLnVyYik7XFxuIDQ0MzpcXHRcXHR9XFxuIDQ0NDpcXHRcXG4gNDQ1OlxcdFxcdGlmIChtdXNiLVxcdTAwM2VlcnJvcnMpIHtcXG4gNDQ2OlxcdFxcdFxcdHJldCA9IG11c2ItXFx1MDAzZWVycm9ycztcXG4gNDQ3OlxcdFxcdFxcdGRldl9lcnIobW9ycy1cXHUwMDNlZGV2LCBcXFwiZXJyb3IgJWRcXFwiLCByZXQpO1xcbiA0NDg6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4gNDQ5OlxcdFxcdH1cXG4gNDUwOlxcdFxcbiA0NTE6XFx0XFx0cmV0ID0gc2l6ZTtcXG4gNDUyOlxcdFxcbiA0NTM6XFx0ZXJyb3I6XFxuIDQ1NDpcXHRcXHRtdXNiLVxcdTAwM2VvbmdvaW5nX3J3ID0gZmFsc2U7XFxuIDQ1NTpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm11c2ItXFx1MDAzZWxvY2spO1xcbiA0NTY6XFx0XFx0cmV0dXJuIHJldDtcXG4gNDU3OlxcdH1cXG4gNDU4OlxcdFxcbiA0NTk6XFx0c3RhdGljIGludCBtbTgxeF91c2JfZG1fcmVhZChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBhZGRyZXNzLCB1OCAqZGF0YSwgaW50IGxlbilcXG4gNDYwOlxcdHtcXG4gNDYxOlxcdFxcdHNzaXplX3Qgb2Zmc2V0ID0gMDtcXG4gNDYyOlxcdFxcdGludCByZXQ7XFxuIDQ2MzpcXHRcXHRzdHJ1Y3QgbW04MXhfdXNiICptdXNiID0gKHN0cnVjdCBtbTgxeF91c2IgKiltb3JzLVxcdTAwM2VkcnZfcHJpdjtcXG4gNDY0OlxcdFxcbiA0NjU6XFx0XFx0d2hpbGUgKG9mZnNldCBcXHUwMDNjIGxlbikge1xcbiA0NjY6XFx0XFx0XFx0cmV0ID0gbW04MXhfdXNiX21lbV9yZWFkKG11c2IsIGFkZHJlc3MgKyBvZmZzZXQsXFxuIDQ2NzpcXHRcXHRcXHRcXHRcXHRcXHQgKHU4ICopKGRhdGEgKyBvZmZzZXQpLFxcbiA0Njg6XFx0XFx0XFx0XFx0XFx0XFx0IG1pbigoc3NpemVfdCkobGVuIC0gb2Zmc2V0KSxcXG4gNDY5OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgKHNzaXplX3QpVVNCX01BWF9UUkFOU0ZFUl9TSVpFKSk7XFxuIDQ3MDpcXHRcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiA0NzE6XFx0XFx0XFx0XFx0ZGV2X2Vycihtb3JzLVxcdTAwM2VkZXYsIFxcXCIlcyBmYWlsZWQgKGVycm5vPSVkKVxcXCIsIF9fZnVuY19fLFxcbiA0NzI6XFx0XFx0XFx0XFx0XFx0cmV0KTtcXG4gNDczOlxcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDQ3NDpcXHRcXHRcXHR9XFxuIDQ3NTpcXHRcXG4gNDc2OlxcdFxcdFxcdG9mZnNldCArPSByZXQ7XFxuIDQ3NzpcXHRcXHR9XFxuIDQ3ODpcXHRcXG4gNDc5OlxcdFxcdHJldHVybiAwO1xcbiA0ODA6XFx0fVxcbiA0ODE6XFx0XFxuIDQ4MjpcXHRzdGF0aWMgaW50IG1tODF4X3VzYl9kbV93cml0ZShzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBhZGRyZXNzLCBjb25zdCB1OCAqZGF0YSxcXG4gNDgzOlxcdFxcdFxcdFxcdCAgICAgIGludCBsZW4pXFxuIDQ4NDpcXHR7XFxuIDQ4NTpcXHRcXHRzc2l6ZV90IG9mZnNldCA9IDA7XFxuIDQ4NjpcXHRcXHRpbnQgcmV0O1xcbiA0ODc6XFx0XFx0c3RydWN0IG1tODF4X3VzYiAqbXVzYiA9IChzdHJ1Y3QgbW04MXhfdXNiICopbW9ycy1cXHUwMDNlZHJ2X3ByaXY7XFxuIDQ4ODpcXHRcXG4gNDg5OlxcdFxcdHdoaWxlIChvZmZzZXQgXFx1MDAzYyBsZW4pIHtcXG4gNDkwOlxcdFxcdFxcdHJldCA9IG1tODF4X3VzYl9tZW1fd3JpdGUobXVzYiwgYWRkcmVzcyArIG9mZnNldCxcXG4gNDkxOlxcdFxcdFxcdFxcdFxcdFxcdCAgKHU4ICopKGRhdGEgKyBvZmZzZXQpLFxcbiA0OTI6XFx0XFx0XFx0XFx0XFx0XFx0ICBtaW4oKHNzaXplX3QpKGxlbiAtIG9mZnNldCksXFxuIDQ5MzpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAoc3NpemVfdClVU0JfTUFYX1RSQU5TRkVSX1NJWkUpKTtcXG4gNDk0OlxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuIDQ5NTpcXHRcXHRcXHRcXHRkZXZfZXJyKG1vcnMtXFx1MDAzZWRldiwgXFxcIiVzIGZhaWxlZCAoZXJybm89JWQpXFxcIiwgX19mdW5jX18sXFxuIDQ5NjpcXHRcXHRcXHRcXHRcXHRyZXQpO1xcbiA0OTc6XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gNDk4OlxcdFxcdFxcdH1cXG4gNDk5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyOToxMi4zMDUzMDEyMjZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQwNTA4ODI4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHByb2JlIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgbGluZXMgNTAwLTYwMCBpbiBgdXNiLmNgLlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgdXNiLmNgIFByb2JlIEZ1bmN0aW9uKipcblxuT2theSwgbGV0J3MgemVybyBpbiBvbiB0aGUgcHJvYmUgZnVuY3Rpb24sIHRoYXQgY3J1Y2lhbCBwaWVjZSBpbiBgdXNiLmNgLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IHRoaXMgcGFydGljdWxhciBVU0IgZHJpdmVyIGhhbmRsZXMgZGV2aWNlIGRldGVjdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24uIEFscmlnaHQsIGxpbmVzIDUwMCB0aHJvdWdoIDYwMCwgdGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgY2h1bmsgb2YgdGhlIHNldHVwIGxvZ2ljLiBJJ20gbG9va2luZyBmb3IgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBVU0IgY29yZSwgaG93IGl0IGlkZW50aWZpZXMgdGhlIHNwZWNpZmljIGRldmljZSwgYW5kIGFueSBpbml0aWFsIHJlc291cmNlIGFsbG9jYXRpb24uIEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBhbnkgdmVuZG9yL3Byb2R1Y3QgSUQgY2hlY2tzLCBhbmQgaG93IGl0IGhhbmRsZXMgZGlmZmVyZW50IFVTQiBjb25maWd1cmF0aW9ucyDigJMgdGhhdCdzIG9mdGVuIHdoZXJlIHRoZSBzdWJ0bGUgYnVncyBvciBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBsaWtlIHRvIGhpZGUuIExldCdzIHNlZSBpZiB0aGVyZSdzIGFueSBjbGV2ZXJuZXNzIGluIGhhbmRsaW5nIHF1aXJrcyBvciBjb21wYXRpYmlsaXR5IGlzc3VlcyB3aXRoIG9sZGVyIGhhcmR3YXJlLi4uIEknbGwgYmUga2VlcGluZyBhbiBleWUgb3V0IGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIGxvY2tpbmcgaXNzdWVzLCBlc3BlY2lhbGx5IGlmIHRoZXJlJ3MgYW55IGludGVyYWN0aW9uIHdpdGggaW50ZXJydXB0IGhhbmRsZXJzLiBJJ20gZ29pbmcgdG8gc2NhbiBmb3IgYW55IGNhbGxzIHRvIGB1c2JfYWxsb2NfY29oZXJlbnRgIG9yIHNpbWlsYXIgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb25zLCBzaW5jZSB0aGF0J3Mgb2Z0ZW4gYSBzb3VyY2Ugb2YgY29udGVudGlvbiBpZiBub3QgZG9uZSBjb3JyZWN0bHkuIExldCdzIGdldCByZWFkaW5nIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjE1NywiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjE6Mjk6MTQuNzEwMzkzMjkxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUwMCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1MDA6XFx0XFx0XFx0b2Zmc2V0ICs9IHJldDtcXG4gNTAxOlxcdFxcdH1cXG4gNTAyOlxcdFxcbiA1MDM6XFx0XFx0cmV0dXJuIDA7XFxuIDUwNDpcXHR9XFxuIDUwNTpcXHRcXG4gNTA2OlxcdHN0YXRpYyBpbnQgbW04MXhfdXNiX3JlZzMyX3JlYWQoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkcmVzcywgdTMyICp2YWwpXFxuIDUwNzpcXHR7XFxuIDUwODpcXHRcXHRpbnQgcmV0ID0gMDtcXG4gNTA5OlxcdFxcdHN0cnVjdCBtbTgxeF91c2IgKm11c2IgPSAoc3RydWN0IG1tODF4X3VzYiAqKW1vcnMtXFx1MDAzZWRydl9wcml2O1xcbiA1MTA6XFx0XFxuIDUxMTpcXHRcXHRyZXQgPSBtbTgxeF91c2JfbWVtX3JlYWQobXVzYiwgYWRkcmVzcywgKHU4ICopdmFsLCBzaXplb2YoKnZhbCkpO1xcbiA1MTI6XFx0XFx0aWYgKHJldCA9PSBzaXplb2YoKnZhbCkpIHtcXG4gNTEzOlxcdFxcdFxcdCp2YWwgPSBsZTMyX3RvX2NwdXAoKF9fbGUzMiAqKXZhbCk7XFxuIDUxNDpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNTE1OlxcdFxcdH1cXG4gNTE2OlxcdFxcbiA1MTc6XFx0XFx0ZGV2X2Vycihtb3JzLVxcdTAwM2VkZXYsIFxcXCJ1c2IgcmVnMzIgcmVhZCBmYWlsZWQgJWRcXFwiLCByZXQpO1xcbiA1MTg6XFx0XFx0cmV0dXJuIHJldDtcXG4gNTE5OlxcdH1cXG4gNTIwOlxcdFxcbiA1MjE6XFx0c3RhdGljIGludCBtbTgxeF91c2JfcmVnMzJfd3JpdGUoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkcmVzcywgdTMyIHZhbClcXG4gNTIyOlxcdHtcXG4gNTIzOlxcdFxcdGludCByZXQgPSAwO1xcbiA1MjQ6XFx0XFx0c3RydWN0IG1tODF4X3VzYiAqbXVzYiA9IChzdHJ1Y3QgbW04MXhfdXNiICopbW9ycy1cXHUwMDNlZHJ2X3ByaXY7XFxuIDUyNTpcXHRcXHRfX2xlMzIgdmFsX2xlID0gY3B1X3RvX2xlMzIodmFsKTtcXG4gNTI2OlxcdFxcbiA1Mjc6XFx0XFx0cmV0ID0gbW04MXhfdXNiX21lbV93cml0ZShtdXNiLCBhZGRyZXNzLCAodTggKilcXHUwMDI2dmFsX2xlLCBzaXplb2YodmFsX2xlKSk7XFxuIDUyODpcXHRcXHRpZiAocmV0ID09IHNpemVvZih2YWxfbGUpKVxcbiA1Mjk6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDUzMDpcXHRcXG4gNTMxOlxcdFxcdGRldl9lcnIobW9ycy1cXHUwMDNlZGV2LCBcXFwidXNiIHJlZzMyIHdyaXRlIGZhaWxlZCAlZFxcXCIsIHJldCk7XFxuIDUzMjpcXHRcXHRyZXR1cm4gcmV0O1xcbiA1MzM6XFx0fVxcbiA1MzQ6XFx0XFxuIDUzNTpcXHRzdGF0aWMgdm9pZCBtbTgxeF91c2JfYnVzX2VuYWJsZShzdHJ1Y3QgbW04MXggKm1vcnMsIGJvb2wgZW5hYmxlKVxcbiA1MzY6XFx0e1xcbiA1Mzc6XFx0XFx0c3RydWN0IG1tODF4X3VzYiAqbXVzYiA9IChzdHJ1Y3QgbW04MXhfdXNiICopbW9ycy1cXHUwMDNlZHJ2X3ByaXY7XFxuIDUzODpcXHRcXG4gNTM5OlxcdFxcdGlmIChlbmFibGUpXFxuIDU0MDpcXHRcXHRcXHR1c2JfYXV0b3BtX2dldF9pbnRlcmZhY2UobXVzYi1cXHUwMDNlaW50ZXJmYWNlKTtcXG4gNTQxOlxcdFxcdGVsc2VcXG4gNTQyOlxcdFxcdFxcdHVzYl9hdXRvcG1fcHV0X2ludGVyZmFjZShtdXNiLVxcdTAwM2VpbnRlcmZhY2UpO1xcbiA1NDM6XFx0fVxcbiA1NDQ6XFx0XFxuIDU0NTpcXHRzdGF0aWMgdm9pZCBtbTgxeF91c2JfY2xhaW1fYnVzKHN0cnVjdCBtbTgxeCAqbW9ycylcXG4gNTQ2OlxcdHtcXG4gNTQ3OlxcdFxcdHN0cnVjdCBtbTgxeF91c2IgKm11c2IgPSAoc3RydWN0IG1tODF4X3VzYiAqKW1vcnMtXFx1MDAzZWRydl9wcml2O1xcbiA1NDg6XFx0XFxuIDU0OTpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZtdXNiLVxcdTAwM2VidXNfbG9jayk7XFxuIDU1MDpcXHR9XFxuIDU1MTpcXHRcXG4gNTUyOlxcdHN0YXRpYyB2b2lkIG1tODF4X3VzYl9yZWxlYXNlX2J1cyhzdHJ1Y3QgbW04MXggKm1vcnMpXFxuIDU1MzpcXHR7XFxuIDU1NDpcXHRcXHRzdHJ1Y3QgbW04MXhfdXNiICptdXNiID0gKHN0cnVjdCBtbTgxeF91c2IgKiltb3JzLVxcdTAwM2VkcnZfcHJpdjtcXG4gNTU1OlxcdFxcbiA1NTY6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZtdXNiLVxcdTAwM2VidXNfbG9jayk7XFxuIDU1NzpcXHR9XFxuIDU1ODpcXHRcXG4gNTU5OlxcdHN0YXRpYyB2b2lkIG1tODF4X3VzYl9zZXRfaXJxKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGUpXFxuIDU2MDpcXHR7XFxuIDU2MTpcXHR9XFxuIDU2MjpcXHRcXG4gNTYzOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbW04MXhfYnVzX29wcyBtbTgxeF91c2Jfb3BzID0ge1xcbiA1NjQ6XFx0XFx0LmRtX3JlYWQgPSBtbTgxeF91c2JfZG1fcmVhZCxcXG4gNTY1OlxcdFxcdC5kbV93cml0ZSA9IG1tODF4X3VzYl9kbV93cml0ZSxcXG4gNTY2OlxcdFxcdC5yZWczMl9yZWFkID0gbW04MXhfdXNiX3JlZzMyX3JlYWQsXFxuIDU2NzpcXHRcXHQucmVnMzJfd3JpdGUgPSBtbTgxeF91c2JfcmVnMzJfd3JpdGUsXFxuIDU2ODpcXHRcXHQuZGlnaXRhbF9yZXNldCA9IG1tODF4X3VzYl9uZHJfcmVzZXQsXFxuIDU2OTpcXHRcXHQuc2V0X2J1c19lbmFibGUgPSBtbTgxeF91c2JfYnVzX2VuYWJsZSxcXG4gNTcwOlxcdFxcdC5jbGFpbSA9IG1tODF4X3VzYl9jbGFpbV9idXMsXFxuIDU3MTpcXHRcXHQucmVsZWFzZSA9IG1tODF4X3VzYl9yZWxlYXNlX2J1cyxcXG4gNTcyOlxcdFxcdC5zZXRfaXJxID0gbW04MXhfdXNiX3NldF9pcnEsXFxuIDU3MzpcXHRcXHQuYnVsa19hbGlnbm1lbnQgPSBNTTgxWF9CVVNfREVGQVVMVF9CVUxLX0FMSUdOTUVOVCxcXG4gNTc0OlxcdH07XFxuIDU3NTpcXHRcXG4gNTc2OlxcdHN0YXRpYyBpbnQgbW04MXhfdXNiX2RldGVjdF9lbmRwb2ludHMoc3RydWN0IG1tODF4ICptb3JzLFxcbiA1Nzc6XFx0XFx0XFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuIDU3ODpcXHR7XFxuIDU3OTpcXHRcXHRpbnQgcmV0O1xcbiA1ODA6XFx0XFx0dW5zaWduZWQgaW50IGk7XFxuIDU4MTpcXHRcXHRzdHJ1Y3QgbW04MXhfdXNiICptdXNiID0gKHN0cnVjdCBtbTgxeF91c2IgKiltb3JzLVxcdTAwM2VkcnZfcHJpdjtcXG4gNTgyOlxcdFxcdHN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciAqZXBfZGVzYztcXG4gNTgzOlxcdFxcdHN0cnVjdCB1c2JfaG9zdF9pbnRlcmZhY2UgKmludGZfZGVzYyA9IGludGYtXFx1MDAzZWN1cl9hbHRzZXR0aW5nO1xcbiA1ODQ6XFx0XFxuIDU4NTpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgaW50Zl9kZXNjLVxcdTAwM2VkZXNjLmJOdW1FbmRwb2ludHM7IGkrKykge1xcbiA1ODY6XFx0XFx0XFx0ZXBfZGVzYyA9IFxcdTAwMjZpbnRmX2Rlc2MtXFx1MDAzZWVuZHBvaW50W2ldLmRlc2M7XFxuIDU4NzpcXHRcXG4gNTg4OlxcdFxcdFxcdGlmICh1c2JfZW5kcG9pbnRfaXNfYnVsa19pbihlcF9kZXNjKSkge1xcbiA1ODk6XFx0XFx0XFx0XFx0aWYgKCFtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1JEXS5hZGRyKSB7XFxuIDU5MDpcXHRcXHRcXHRcXHRcXHRtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1JEXS5hZGRyID1cXG4gNTkxOlxcdFxcdFxcdFxcdFxcdFxcdHVzYl9lbmRwb2ludF9udW0oZXBfZGVzYyk7XFxuIDU5MjpcXHRcXHRcXHRcXHRcXHRtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1JEXS5zaXplID1cXG4gNTkzOlxcdFxcdFxcdFxcdFxcdFxcdHVzYl9lbmRwb2ludF9tYXhwKGVwX2Rlc2MpO1xcbiA1OTQ6XFx0XFx0XFx0XFx0fSBlbHNlIGlmICghbXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX1JFR19SRF0uYWRkcikge1xcbiA1OTU6XFx0XFx0XFx0XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX1JFR19SRF0uYWRkciA9XFxuIDU5NjpcXHRcXHRcXHRcXHRcXHRcXHR1c2JfZW5kcG9pbnRfbnVtKGVwX2Rlc2MpO1xcbiA1OTc6XFx0XFx0XFx0XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX1JFR19SRF0uc2l6ZSA9XFxuIDU5ODpcXHRcXHRcXHRcXHRcXHRcXHR1c2JfZW5kcG9pbnRfbWF4cChlcF9kZXNjKTtcXG4gNTk5OlxcdFxcdFxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjE6Mjk6MTQuNzEwNTA4NzMxWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwODU3NDYyMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aGlua2luZyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBtbTgxeF91c2JfcHJvYmUgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgbW04MXhfdXNiX3Byb2JlYCBpbiBgdXNiLmNgLiBTb3VuZHMgbGlrZSB0aGUgcHJvYmUgZnVuY3Rpb24gZm9yIGEgVVNCIGRldmljZSwgbGlrZWx5IGFuIG1tODF4LWJhc2VkIGRldmljZS4gSSdtIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgdG8gbGluZXMgNjAwLTcyMC4gVGhhdCByYW5nZSB1c3VhbGx5IGVuY29tcGFzc2VzIGEgc2lnbmlmaWNhbnQgcG9ydGlvbiBvZiB0aGUgcHJvYmUncyBjb3JlIGxvZ2ljLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBkZXZpY2UgSUQgbWF0Y2hpbmcsIHJlc291cmNlIGFsbG9jYXRpb24gKGlmIHJlcXVpcmVkKSwgZHJpdmVyIGJpbmRpbmcsIGFuZCBwb3NzaWJseSBzb21lIGluaXRpYWwgZGV2aWNlIHNldHVwLiBJJ20gaG9waW5nIGl0J3Mgd2VsbC1jb21tZW50ZWQsIGJ1dCBldmVuIGlmIGl0J3Mgbm90LCBJJ20gdXNlZCB0byBpbmZlcnJpbmcgdGhlIGNvZGUgZmxvdyBmcm9tIHRoZSBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbiBjYWxscy4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODI3MiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjE6Mjk6MTYuNzk2MjU4NDYyWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzEwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwMCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2MDA6XFx0XFx0XFx0fSBlbHNlIGlmICh1c2JfZW5kcG9pbnRfaXNfYnVsa19vdXQoZXBfZGVzYykpIHtcXG4gNjAxOlxcdFxcdFxcdFxcdGlmICghbXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9XUl0uYWRkcikge1xcbiA2MDI6XFx0XFx0XFx0XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9XUl0uYWRkciA9XFxuIDYwMzpcXHRcXHRcXHRcXHRcXHRcXHR1c2JfZW5kcG9pbnRfbnVtKGVwX2Rlc2MpO1xcbiA2MDQ6XFx0XFx0XFx0XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9XUl0uc2l6ZSA9XFxuIDYwNTpcXHRcXHRcXHRcXHRcXHRcXHR1c2JfZW5kcG9pbnRfbWF4cChlcF9kZXNjKTtcXG4gNjA2OlxcdFxcdFxcdFxcdH0gZWxzZSBpZiAoIW11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9SRUdfV1JdLmFkZHIpIHtcXG4gNjA3OlxcdFxcdFxcdFxcdFxcdG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9SRUdfV1JdLmFkZHIgPVxcbiA2MDg6XFx0XFx0XFx0XFx0XFx0XFx0dXNiX2VuZHBvaW50X251bShlcF9kZXNjKTtcXG4gNjA5OlxcdFxcdFxcdFxcdFxcdG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9SRUdfV1JdLnNpemUgPVxcbiA2MTA6XFx0XFx0XFx0XFx0XFx0XFx0dXNiX2VuZHBvaW50X21heHAoZXBfZGVzYyk7XFxuIDYxMTpcXHRcXHRcXHRcXHR9XFxuIDYxMjpcXHRcXHRcXHR9IGVsc2UgaWYgKHVzYl9lbmRwb2ludF9pc19pbnRfaW4oZXBfZGVzYykpIHtcXG4gNjEzOlxcdFxcdFxcdFxcdG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9JTlRdLmFkZHIgPVxcbiA2MTQ6XFx0XFx0XFx0XFx0XFx0dXNiX2VuZHBvaW50X251bShlcF9kZXNjKTtcXG4gNjE1OlxcdFxcdFxcdFxcdG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9JTlRdLnNpemUgPVxcbiA2MTY6XFx0XFx0XFx0XFx0XFx0dXNiX2VuZHBvaW50X21heHAoZXBfZGVzYyk7XFxuIDYxNzpcXHRcXHRcXHR9XFxuIDYxODpcXHRcXHR9XFxuIDYxOTpcXHRcXG4gNjIwOlxcdFxcdGRldl9kYmcobW9ycy1cXHUwMDNlZGV2LCBcXFwiXFxcXHRNZW1vcnkgRW5kcG9pbnQgSU4gJXMgZGV0ZWN0ZWQ6ICV1IHNpemUgJXVcXFwiLFxcbiA2MjE6XFx0XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9SRF0uYWRkciA/IFxcXCJcXFwiIDogXFxcIm5vdFxcXCIsXFxuIDYyMjpcXHRcXHRcXHRtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1JEXS5hZGRyLFxcbiA2MjM6XFx0XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9SRF0uc2l6ZSk7XFxuIDYyNDpcXHRcXHRkZXZfZGJnKG1vcnMtXFx1MDAzZWRldiwgXFxcIlxcXFx0TWVtb3J5IEVuZHBvaW50IE9VVCAlcyBkZXRlY3RlZDogJXUgc2l6ZSAldVxcXCIsXFxuIDYyNTpcXHRcXHRcXHRtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS5hZGRyID8gXFxcIlxcXCIgOiBcXFwibm90XFxcIixcXG4gNjI2OlxcdFxcdFxcdG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLmFkZHIsXFxuIDYyNzpcXHRcXHRcXHRtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS5zaXplKTtcXG4gNjI4OlxcdFxcdGRldl9kYmcobW9ycy1cXHUwMDNlZGV2LCBcXFwiXFxcXHRSZWdpc3RlciBFbmRwb2ludCBJTiAlcyBkZXRlY3RlZDogJXVcXFwiLFxcbiA2Mjk6XFx0XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX1JFR19SRF0uYWRkciA/IFxcXCJcXFwiIDogXFxcIm5vdFxcXCIsXFxuIDYzMDpcXHRcXHRcXHRtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfUkVHX1JEXS5hZGRyKTtcXG4gNjMxOlxcdFxcdGRldl9kYmcobW9ycy1cXHUwMDNlZGV2LCBcXFwiXFxcXHRSZWdpc3RlciBFbmRwb2ludCBPVVQgJXMgZGV0ZWN0ZWQ6ICV1XFxcIixcXG4gNjMyOlxcdFxcdFxcdG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9SRUdfV1JdLmFkZHIgPyBcXFwiXFxcIiA6IFxcXCJub3RcXFwiLFxcbiA2MzM6XFx0XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX1JFR19XUl0uYWRkcik7XFxuIDYzNDpcXHRcXHRkZXZfZGJnKG1vcnMtXFx1MDAzZWRldiwgXFxcIlxcXFx0U3RhdHMgSU4gZW5kcG9pbnQgJXMgZGV0ZWN0ZWQ6ICV1XFxcIixcXG4gNjM1OlxcdFxcdFxcdG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9JTlRdLmFkZHIgPyBcXFwiXFxcIiA6IFxcXCJub3RcXFwiLFxcbiA2MzY6XFx0XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0lOVF0uYWRkcik7XFxuIDYzNzpcXHRcXG4gNjM4OlxcdFxcdC8qIFZlcmlmeSB3ZSBoYXZlIGFuIElOIGFuZCBPVVQgKi9cXG4gNjM5OlxcdFxcdGlmICghKG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fUkRdLmFkZHIgXFx1MDAyNlxcdTAwMjZcXG4gNjQwOlxcdFxcdCAgICAgIG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLmFkZHIpKVxcbiA2NDE6XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuIDY0MjpcXHRcXG4gNjQzOlxcdFxcdC8qIFZlcmlmeSB0aGUgc3RhdHMgTU04MVhfRVBfSU5UIGlzIGRldGVjdGVkICovXFxuIDY0NDpcXHRcXHRpZiAoIW11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9JTlRdLmFkZHIpXFxuIDY0NTpcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gNjQ2OlxcdFxcbiA2NDc6XFx0XFx0LyogVmVyaWZ5IG1pbmltdW0gaW50ZXJydXB0IHN0YXR1cyByZWFkICovXFxuIDY0ODpcXHRcXHRpZiAobXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0lOVF0uc2l6ZSBcXHUwMDNjIDgpXFxuIDY0OTpcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gNjUwOlxcdFxcbiA2NTE6XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0NNRF0udXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTtcXG4gNjUyOlxcdFxcdGlmICghbXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0NNRF0udXJiKSB7XFxuIDY1MzpcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbiA2NTQ6XFx0XFx0XFx0Z290byBlcnJfZXA7XFxuIDY1NTpcXHRcXHR9XFxuIDY1NjpcXHRcXG4gNjU3OlxcdFxcdG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fUkRdLnVyYiA9IHVzYl9hbGxvY191cmIoMCwgR0ZQX0tFUk5FTCk7XFxuIDY1ODpcXHRcXHRpZiAoIW11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fUkRdLnVyYikge1xcbiA2NTk6XFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4gNjYwOlxcdFxcdFxcdGdvdG8gZXJyX2VwO1xcbiA2NjE6XFx0XFx0fVxcbiA2NjI6XFx0XFxuIDY2MzpcXHRcXHRtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS51cmIgPSB1c2JfYWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpO1xcbiA2NjQ6XFx0XFx0aWYgKCFtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS51cmIpIHtcXG4gNjY1OlxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuIDY2NjpcXHRcXHRcXHRnb3RvIGVycl9lcDtcXG4gNjY3OlxcdFxcdH1cXG4gNjY4OlxcdFxcbiA2Njk6XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9SRF0uYnVmZmVyID1cXG4gNjcwOlxcdFxcdFxcdGttYWxsb2MoVVNCX01BWF9UUkFOU0ZFUl9TSVpFLCBHRlBfS0VSTkVMKTtcXG4gNjcxOlxcdFxcdGlmICghbXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9SRF0uYnVmZmVyKSB7XFxuIDY3MjpcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbiA2NzM6XFx0XFx0XFx0Z290byBlcnJfZXA7XFxuIDY3NDpcXHRcXHR9XFxuIDY3NTpcXHRcXG4gNjc2OlxcdFxcdG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLmJ1ZmZlciA9XFxuIDY3NzpcXHRcXHRcXHRrbWFsbG9jKFVTQl9NQVhfVFJBTlNGRVJfU0laRSwgR0ZQX0tFUk5FTCk7XFxuIDY3ODpcXHRcXHRpZiAoIW11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLmJ1ZmZlcikge1xcbiA2Nzk6XFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4gNjgwOlxcdFxcdFxcdGdvdG8gZXJyX2VwO1xcbiA2ODE6XFx0XFx0fVxcbiA2ODI6XFx0XFxuIDY4MzpcXHRcXHRtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXS5idWZmZXIgPSB1c2JfYWxsb2NfY29oZXJlbnQoXFxuIDY4NDpcXHRcXHRcXHRtdXNiLVxcdTAwM2V1ZGV2LCBzaXplb2Yoc3RydWN0IG1tODF4X3VzYl9jb21tYW5kKSwgR0ZQX0tFUk5FTCxcXG4gNjg1OlxcdFxcdFxcdFxcdTAwMjZtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXS51cmItXFx1MDAzZXRyYW5zZmVyX2RtYSk7XFxuIDY4NjpcXHRcXG4gNjg3OlxcdFxcdGlmICghbXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0NNRF0uYnVmZmVyKSB7XFxuIDY4ODpcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbiA2ODk6XFx0XFx0XFx0Z290byBlcnJfZXA7XFxuIDY5MDpcXHRcXHR9XFxuIDY5MTpcXHRcXG4gNjkyOlxcdFxcdC8qIEFzc2lnbiBjb21tYW5kIHRvIG1lbW9yeSBvdXQgZW5kIHBvaW50ICovXFxuIDY5MzpcXHRcXHRtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXS5hZGRyID1cXG4gNjk0OlxcdFxcdFxcdG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLmFkZHI7XFxuIDY5NTpcXHRcXHRtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXS5zaXplID1cXG4gNjk2OlxcdFxcdFxcdG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLnNpemU7XFxuIDY5NzpcXHRcXG4gNjk4OlxcdFxcdHJldHVybiAwO1xcbiA2OTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI5OjE2Ljc5NjM3MzE0MloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTQ0NzQyMzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIFVTQiBQcm9iZSBGdW5jdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgYmFjayBpbi4gSSdtIGZvY3VzaW5nIG9uIHRoZSBgbW04MXhfdXNiX3Byb2JlYCBmdW5jdGlvbiBub3cuIEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCBwcm9iZSBmdW5jdGlvbnMgYXJlIGNyaXRpY2FsIGZvciBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIGFyZSBvZnRlbiB0aGUgZW50cnkgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGEgZHJpdmVyIGludGVyYWN0cyB3aXRoIGhhcmR3YXJlLiBJJ20gbm90aW5nIHRoZSBzcGVjaWZpYyBsb2NhdGlvbiwgYXJvdW5kIGxpbmUgNzAwLiBUaGlzIGlzIGEgY29tbW9uIHBhdHRlcm4sIGFuZCBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGRldGFpbGVkIGFuYWx5c2lzLiBJJ2xsIG5lZWQgdG8gbWV0aWN1bG91c2x5IGV4YW1pbmUgdGhlIGNvZGUgZmxvdyBmcm9tIGhlcmUsIG1hcHBpbmcgdGhlIHN0ZXBzIHRoZSBmdW5jdGlvbiB0YWtlcyB0byBkZXRlY3QsIGNvbmZpZ3VyZSwgYW5kIHVsdGltYXRlbHkgYWN0aXZhdGUgdGhlIFVTQiBkZXZpY2UuIEkgd2lsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIGFuZCB0aGUgcG90ZW50aWFsIGVycm9yIGNvbmRpdGlvbnMgdGhhdCBtaWdodCBhcmlzZS4gSSB3aWxsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGluZm9ybWF0aW9uIGlzIHBhc3NlZCBpbiwgd2hhdCBmdW5jdGlvbnMgYXJlIGNhbGxlZCwgYW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZSBkZXZpY2UgYmVjb21lcyBmdWxseSBvcGVyYXRpb25hbC4gSSBrbm93IHRoZSBkZXZpbCBpcyBvZnRlbiBpbiB0aGUgZGV0YWlscyB3aGVuIGRlYWxpbmcgd2l0aCBVU0IsIHNvIGEgdGhvcm91Z2gsIGxpbmUtYnktbGluZSBpbnNwZWN0aW9uIGlzIGluIG9yZGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDQ2OCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjE6Mjk6MTguOTQxMTE4NDRaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1OTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzAwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzAwOlxcdGVycl9lcDpcXG4gNzAxOlxcdFxcdGlmIChtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXS51cmIgXFx1MDAyNlxcdTAwMjZcXG4gNzAyOlxcdFxcdCAgICBtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXS5idWZmZXIpXFxuIDcwMzpcXHRcXHRcXHR1c2JfZnJlZV9jb2hlcmVudChcXG4gNzA0OlxcdFxcdFxcdFxcdG11c2ItXFx1MDAzZXVkZXYsIHNpemVvZihzdHJ1Y3QgbW04MXhfdXNiX2NvbW1hbmQpLFxcbiA3MDU6XFx0XFx0XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0NNRF0uYnVmZmVyLFxcbiA3MDY6XFx0XFx0XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0NNRF0udXJiLVxcdTAwM2V0cmFuc2Zlcl9kbWEpO1xcbiA3MDc6XFx0XFx0dXNiX2ZyZWVfdXJiKG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fUkRdLnVyYik7XFxuIDcwODpcXHRcXHR1c2JfZnJlZV91cmIobXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0NNRF0udXJiKTtcXG4gNzA5OlxcdFxcdHVzYl9mcmVlX3VyYihtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS51cmIpO1xcbiA3MTA6XFx0XFx0a2ZyZWUobXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9SRF0uYnVmZmVyKTtcXG4gNzExOlxcdFxcdGtmcmVlKG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLmJ1ZmZlcik7XFxuIDcxMjpcXHRcXG4gNzEzOlxcdFxcdHJldHVybiByZXQ7XFxuIDcxNDpcXHR9XFxuIDcxNTpcXHRcXG4gNzE2OlxcdHN0YXRpYyB2b2lkIG1tODF4X3VyYl9jbGVhbnVwKHN0cnVjdCBtbTgxeCAqbW9ycylcXG4gNzE3OlxcdHtcXG4gNzE4OlxcdFxcdHN0cnVjdCBtbTgxeF91c2IgKm11c2IgPSAoc3RydWN0IG1tODF4X3VzYiAqKW1vcnMtXFx1MDAzZWRydl9wcml2O1xcbiA3MTk6XFx0XFx0c3RydWN0IG1tODF4X3VzYl9lbmRwb2ludCAqaW50X2VwID0gXFx1MDAyNm11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9JTlRdO1xcbiA3MjA6XFx0XFx0c3RydWN0IG1tODF4X3VzYl9lbmRwb2ludCAqcmRfZXAgPSBcXHUwMDI2bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9SRF07XFxuIDcyMTpcXHRcXHRzdHJ1Y3QgbW04MXhfdXNiX2VuZHBvaW50ICp3cl9lcCA9IFxcdTAwMjZtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXTtcXG4gNzIyOlxcdFxcdHN0cnVjdCBtbTgxeF91c2JfZW5kcG9pbnQgKmNtZF9lcCA9IFxcdTAwMjZtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXTtcXG4gNzIzOlxcdFxcbiA3MjQ6XFx0XFx0dXNiX2tpbGxfdXJiKHJkX2VwLVxcdTAwM2V1cmIpO1xcbiA3MjU6XFx0XFx0dXNiX2tpbGxfdXJiKHdyX2VwLVxcdTAwM2V1cmIpO1xcbiA3MjY6XFx0XFx0dXNiX2tpbGxfdXJiKGNtZF9lcC1cXHUwMDNldXJiKTtcXG4gNzI3OlxcdFxcbiA3Mjg6XFx0XFx0aWYgKGludF9lcC1cXHUwMDNldXJiKVxcbiA3Mjk6XFx0XFx0XFx0dXNiX2ZyZWVfY29oZXJlbnQobXVzYi1cXHUwMDNldWRldiwgTU04MVhfRVBfSU5UX0JVRkZFUl9TSVpFLFxcbiA3MzA6XFx0XFx0XFx0XFx0XFx0ICBpbnRfZXAtXFx1MDAzZWJ1ZmZlciwgaW50X2VwLVxcdTAwM2V1cmItXFx1MDAzZXRyYW5zZmVyX2RtYSk7XFxuIDczMTpcXHRcXG4gNzMyOlxcdFxcdGlmIChjbWRfZXAtXFx1MDAzZXVyYilcXG4gNzMzOlxcdFxcdFxcdHVzYl9mcmVlX2NvaGVyZW50KG11c2ItXFx1MDAzZXVkZXYsIHNpemVvZihzdHJ1Y3QgbW04MXhfdXNiX2NvbW1hbmQpLFxcbiA3MzQ6XFx0XFx0XFx0XFx0XFx0ICBjbWRfZXAtXFx1MDAzZWJ1ZmZlciwgY21kX2VwLVxcdTAwM2V1cmItXFx1MDAzZXRyYW5zZmVyX2RtYSk7XFxuIDczNTpcXHRcXG4gNzM2OlxcdFxcdGtmcmVlKHdyX2VwLVxcdTAwM2VidWZmZXIpO1xcbiA3Mzc6XFx0XFx0a2ZyZWUocmRfZXAtXFx1MDAzZWJ1ZmZlcik7XFxuIDczODpcXHRcXG4gNzM5OlxcdFxcdHVzYl9mcmVlX3VyYihpbnRfZXAtXFx1MDAzZXVyYik7XFxuIDc0MDpcXHRcXHR1c2JfZnJlZV91cmIod3JfZXAtXFx1MDAzZXVyYik7XFxuIDc0MTpcXHRcXHR1c2JfZnJlZV91cmIocmRfZXAtXFx1MDAzZXVyYik7XFxuIDc0MjpcXHRcXHR1c2JfZnJlZV91cmIoY21kX2VwLVxcdTAwM2V1cmIpO1xcbiA3NDM6XFx0fVxcbiA3NDQ6XFx0XFxuIDc0NTpcXHRzdGF0aWMgaW50IG1tODF4X3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxcbiA3NDY6XFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbiA3NDc6XFx0e1xcbiA3NDg6XFx0XFx0aW50IHJldDtcXG4gNzQ5OlxcdFxcdHN0cnVjdCBtbTgxeCAqbW9ycztcXG4gNzUwOlxcdFxcdHN0cnVjdCBtbTgxeF91c2IgKm11c2I7XFxuIDc1MTpcXHRcXG4gNzUyOlxcdFxcdG1vcnMgPSBtbTgxeF9jb3JlX2FsbG9jKHNpemVvZigqbXVzYiksIFxcdTAwMjZpbnRlcmZhY2UtXFx1MDAzZWRldik7XFxuIDc1MzpcXHRcXHRpZiAoIW1vcnMpXFxuIDc1NDpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gNzU1OlxcdFxcbiA3NTY6XFx0XFx0bW9ycy1cXHUwMDNlYnVzX29wcyA9IFxcdTAwMjZtbTgxeF91c2Jfb3BzO1xcbiA3NTc6XFx0XFx0bW9ycy1cXHUwMDNlYnVzX3R5cGUgPSBNTTgxWF9CVVNfVFlQRV9VU0I7XFxuIDc1ODpcXHRcXG4gNzU5OlxcdFxcdG11c2IgPSAoc3RydWN0IG1tODF4X3VzYiAqKW1vcnMtXFx1MDAzZWRydl9wcml2O1xcbiA3NjA6XFx0XFx0bXVzYi1cXHUwMDNldWRldiA9IHVzYl9nZXRfZGV2KGludGVyZmFjZV90b191c2JkZXYoaW50ZXJmYWNlKSk7XFxuIDc2MTpcXHRcXHRtdXNiLVxcdTAwM2VpbnRlcmZhY2UgPSB1c2JfZ2V0X2ludGYoaW50ZXJmYWNlKTtcXG4gNzYyOlxcdFxcbiA3NjM6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2bXVzYi1cXHUwMDNlbG9jayk7XFxuIDc2NDpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZtdXNiLVxcdTAwM2VidXNfbG9jayk7XFxuIDc2NTpcXHRcXHRpbml0X3dhaXRxdWV1ZV9oZWFkKFxcdTAwMjZtdXNiLVxcdTAwM2Vyd19pbl93YWl0KTtcXG4gNzY2OlxcdFxcdHVzYl9zZXRfaW50ZmRhdGEoaW50ZXJmYWNlLCBtb3JzKTtcXG4gNzY3OlxcdFxcbiA3Njg6XFx0XFx0cmV0ID0gbW04MXhfdXNiX2RldGVjdF9lbmRwb2ludHMobW9ycywgaW50ZXJmYWNlKTtcXG4gNzY5OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiA3NzA6XFx0XFx0XFx0Z290byBlcnJfY29yZV9mcmVlO1xcbiA3NzE6XFx0XFxuIDc3MjpcXHRcXHRzZXRfYml0KE1NODFYX1VTQl9GTEFHX0FUVEFDSEVELCBcXHUwMDI2bXVzYi1cXHUwMDNlZmxhZ3MpO1xcbiA3NzM6XFx0XFxuIDc3NDpcXHRcXHRyZXQgPSBtbTgxeF9jb3JlX2luaXQobW9ycyk7XFxuIDc3NTpcXHRcXHRpZiAocmV0KVxcbiA3NzY6XFx0XFx0XFx0Z290byBlcnJfdXJiX2NsZWFudXA7XFxuIDc3NzpcXHRcXG4gNzc4OlxcdFxcdElOSVRfV09SSyhcXHUwMDI2bW9ycy1cXHUwMDNldXNiX2lycV93b3JrLCBtbTgxeF91c2JfaXJxX3dvcmspO1xcbiA3Nzk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI5OjE4Ljk0MTIyNTg2WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU5NzIxODg2MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBtbTgxeCBVU0IgRHJpdmVyIGZvciBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0aWVzKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYG1tODF4X3VzYl9wcm9iZWAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIGhvdyBpdCBpbnRlcmZhY2VzIHdpdGggdGhlIFVTQiBkZXZpY2UsIHBhcnRpY3VsYXJseSBmb2N1c2luZyBvbiB0aGUgcGFja2V0IGhhbmRsaW5nIHdpdGhpbiB0aGlzIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBtbTgxeF95YXBzX2h3X3JlYWRfcGt0c2AgYW5kIGBtbTgxeF9yZWFkX3BrdHNfaF9pc192YWxpZF9kZWxpbWAgYXJlIGRvaW5nLCBhcyB0aG9zZSBhcmUgb2Z0ZW4gc3BvdHMgdG8gbG9vay5cblxuTG9va2luZyBhdCBgbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW1gLCB0aGVyZSdzIHRoZSBzdGFuZGFyZCBDUkMgY2hlY2ssIHBhY2tldCBzaXplIGFuZCBwYWRkaW5nIGNoZWNrcywgYW5kIGEgbmV3IGNvbmRpdGlvbiwgdGhlIGNoZWNrIGZvciBgcGt0X3NpemUgXHUwMDNjPSBZQVBTX1JFU0VSVkVEX1BBR0VfU0laRWAsIGEgY2hhbmdlIHdoaWNoIGxvb2tzIGxpa2UgYSByZWNlbnQgZml4LiBUaGUgcGFkZGluZyBjYWxjdWxhdGlvbnMgbG9vayB0eXBpY2FsLCBhbmQgdGhlIHNpemUgY2hlY2tzIGFyZSB0aGVyZS5cblxuVGhlbiwgaW5zcGVjdGluZyBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgLCBJIHNlZSB0aGUgZXhwZWN0ZWQgY2hlY2tzIGZvciB0aGUgbnVtYmVyIG9mIHBhY2tldHMgYW5kIHJlbWFpbmluZyBieXRlcy4gVGhlcmUncyBhbHNvIHRoaXMgbmV3IGFsaWdubWVudCBjaGVjayBgIUlTX0FMSUdORUQoYnl0ZXNfcmVtYWluaW5nLCBzaXplb2YodTMyKSlgLCB3aGljaCwgaWYgdHJpZ2dlcmVkLCB3aWxsIHJlc3VsdCBpbiBhbiAtRUlPLCBhbmQgdGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuLiBUaGlzIGNvdWxkIHNpZ25hbCBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5LlxuXG5Ob3csIGhvdyBkb2VzIHRoaXMgYWxsIGZpdCB0b2dldGhlcj8gYG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzYCBpcyBwYXJ0IG9mIGBtbTgxeF95YXBzX2h3X29wcy5yZWFkX3BrdHNgLiBJdCdzIGNhbGxlZCBieSBgbW04MXhfeWFwc19yZWFkX3BrdHNgLCB3aGljaCBpcyB0aGVuIGNhbGxlZCBieSBgbW04MXhfeWFwc19yeF9oYW5kbGVyYCB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jYC4gVGhpcyBgcnhfaGFuZGxlcmAgaXMgY2FsbGVkIGJ5IGBtbTgxeF95YXBzX3dvcmtgLCB3aGljaCBpcyB0cmlnZ2VyZWQgYnkgdGhlIEhJRiB3b3JrIHF1ZXVlIHRvIGhhbmRsZSBSWCBldmVudHMuIFNvLCB0aGlzIGlzIHRoZSBjb3JlIG9mIHBhY2tldCByZWNlcHRpb24gZm9yIHRoaXMgZHJpdmVyLlxuXG5UaGUgbmV4dCBwb2ludCBJIG5lZWQgdG8gY29uc2lkZXIgaXMsIGFyZSB3ZSBhYmxlIHRvIHJlYWNoIHRoaXMgZHJpdmVyPyBTeXprYWxsZXIgY2FuIGVtdWxhdGUgVVNCIHdpcmVsZXNzIGRyaXZlcnMuIFRoZXkgdXNlIHJhdyBVU0IgZ2FkZ2V0IGVtdWxhdGlvbiB3aXRoIGNhbGxzIGxpa2UgYHN5el91c2JfY29ubmVjdGAuIFNvIHllcywgdGhpcyBpcyBzb21ldGhpbmcgd2UgY2FuIGZ1enouXG5cbkxldCdzIGxvb2sgYXQgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIGZvciB0aGlzIGRyaXZlci4gSW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvS2NvbmZpZ2AsIEkgc2VlIGBNTTgxWF9VU0JgIHdoaWNoIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYFVTQmAuIEFsc28gdGhlcmUncyBgV0xBTl9WRU5ET1JfTU9SU0VNSUNST2AgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZ2AsIHRoYXQgaXMgZGVwZW5kZW50IG9uIGBXTEFOYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGFyZSBzZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyMjM2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI5OjI0LjkxMzQxNzc4NVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODU4OTkzNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiV0xBTl9WRU5ET1JfTU9SU0VNSUNST1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvTWFrZWZpbGU9MTQ9b2JqLSQoQ09ORklHX1dMQU5fVkVORE9SX01JQ1JPQ0hJUCkgKz0gbWljcm9jaGlwL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlOjE1Om9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPKSArPSBtb3JzZW1pY3JvL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlLTE2LW9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9OWFApICs9IG54cC9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZzoyOmNvbmZpZyBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnLTMtXFx0Ym9vbCBcXFwiTW9yc2UgTWljcm8gZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0xMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWc6MTM6aWYgV0xBTl9WRU5ET1JfTU9SU0VNSUNST1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0xNC1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWc6MTU6ZW5kaWYgIyBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI5OjI0Ljk5OTMyMjgwM1oiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNzkyMDI3NzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipFeGFtaW5pbmcgdGhlIE1vcnNlIE1pY3JvIEtjb25maWcgRmlsZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhhdCBNb3JzZSBNaWNybyBXaS1GaSBkcml2ZXIuIExldCdzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZ2AuIFRoaXMgS2NvbmZpZyBmaWxlIGlzIHdoZXJlIGFsbCB0aGUgaW1wb3J0YW50IGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgZHJpdmVyIGFyZSBkZWZpbmVkLiBJIGV4cGVjdCB0byBzZWUgdGhpbmdzIGxpa2UgdGhlIGFiaWxpdHkgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIGRyaXZlciBpdHNlbGYsIHBlcmhhcHMgb3B0aW9ucyBmb3IgZGlmZmVyZW50IGhhcmR3YXJlIHZhcmlhbnRzIGlmIHRoZXJlIGFyZSBhbnksIGxpa2VseSBkZWJ1ZyBmbGFncywgYW5kIG1heWJlIGV2ZW4gY2hvaWNlcyByZWxhdGVkIHRvIGZpcm13YXJlIGxvYWRpbmcgb3Igc3BlY2lmaWMgcHJvdG9jb2wgZmVhdHVyZXMuIEl0J3MgYSBjcml0aWNhbCBzdGFydGluZyBwb2ludCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBpcyBjb250cm9sbGVkIGFuZCB3aGF0IHNldHRpbmdzIEkgY2FuIHR3ZWFrLiBJIHdhbnQgdG8gcXVpY2tseSBncmFzcCB0aGUgaGlnaC1sZXZlbCBjb25maWd1cmF0aW9uIHN0cnVjdHVyZSB0byBzZWUgaWYgdGhlcmUncyBhbnl0aGluZyBJIGNhbiBpbW1lZGlhdGVseSBsZXZlcmFnZSB0byBhZGRyZXNzIFtpbnNlcnQgeW91ciBwYXJ0aWN1bGFyIGlzc3VlIGhlcmUsIGUuZy4gXCJvcHRpbWl6ZSBwZXJmb3JtYW5jZVwiIG9yIFwicmVzb2x2ZSB0aGF0IHJlcG9ydGVkIGNvbmZsaWN0XCJdLiBGcm9tIHRoZXJlIEkgd2lsbCB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0byBkZXRlcm1pbmUgdGhlIG5leHQgcGhhc2Ugb2YgZGVidWdnaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDE5NywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI5OjI3Ljc5MTM1Mjc5MloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXFxuICAgMzpcXHRcXHRib29sIFxcXCJNb3JzZSBNaWNybyBkZXZpY2VzXFxcIlxcbiAgIDQ6XFx0XFx0ZGVmYXVsdCB5XFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIElmIHlvdSBoYXZlIGEgd2lyZWxlc3MgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXFxuICAgNzpcXHRcXG4gICA4OlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gICA5OlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbCB0aGVcXG4gIDEwOlxcdFxcdCAgcXVlc3Rpb25zIGFib3V0IHRoZXNlIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsIGJlIGFza2VkIGZvclxcbiAgMTE6XFx0XFx0ICB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXFxuICAxMjpcXHRcXG4gIDEzOlxcdGlmIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cXG4gIDE0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9LY29uZmlnXFxcIlxcbiAgMTU6XFx0ZW5kaWYgIyBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI5OjI3Ljc5MTQxODkyMloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTAzMjY4ODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqSW52ZXN0aWdhdGluZyBXTEFOIENvbmZpZ3VyYXRpb24gaW4gdGhlIEtlcm5lbCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBwYXJlbnQgY29uZmlndXJhdGlvbiBmb3IgYFdMQU5gLiBUaGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGlzIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgcmVsZXZhbnQgZHJpdmVyIGRpcmVjdG9yeS4gU2luY2Ugd2UncmUgZGVhbGluZyB3aXRoIHdpcmVsZXNzIG5ldHdvcmtpbmcsIHRoYXQgd291bGQgYmUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgLiBMZXQncyBuYXZpZ2F0ZSB0aGVyZSBhbmQgdGFrZSBhIGxvb2suIEknbSBleHBlY3RpbmcgdG8gZmluZCBgV0xBTmAgZGVmaW5lZCwgYW5kIG15IGh5cG90aGVzaXMgaXMgdGhhdCBpdCB3aWxsIGJlIGEgcGFyZW50IGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgdGhhdCBnb3Zlcm5zIHRoZSB2YXJpb3VzIHdpcmVsZXNzIG9wdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBoaWVyYXJjaHkgYW5kIGRlcGVuZGVuY2llcywgYW5kIHRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gVGhpcyBpcyBzdGFuZGFyZCBwcm9jZWR1cmUgd2hlbiBJJ20gd29ya2luZyBvbiBrZXJuZWwgY29uZmlndXJhdGlvbnMgYW5kIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGRpZmZlcmVudCBmZWF0dXJlcy4gSSBzaG91bGQgYmUgYWJsZSB0byBxdWlja2x5IGRldGVybWluZSBob3cgYFdMQU5gIGZpdHMgaW50byB0aGUgYmlnZ2VyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NjkyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyOToyOS44OTQ2OTExODFaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MTEwODQ4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb3JzZW1pY3JvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnPTI5PXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZzozMDpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnLTMxLXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL0tjb25maWdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZT0xND1vYmotJChDT05GSUdfV0xBTl9WRU5ET1JfTUlDUk9DSElQKSArPSBtaWNyb2NoaXAvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvTWFrZWZpbGU6MTU6b2JqLSQoQ09ORklHX1dMQU5fVkVORE9SX01PUlNFTUlDUk8pICs9IG1vcnNlbWljcm8vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvTWFrZWZpbGUtMTYtb2JqLSQoQ09ORklHX1dMQU5fVkVORE9SX05YUCkgKz0gbnhwL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnPTEzPWlmIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWc6MTQ6c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnLTE1LWVuZGlmICMgV0xBTl9WRU5ET1JfTU9SU0VNSUNST1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5oLTE1LSNkZWZpbmUgQkNGX0RBVEFCQVNFX1NJWkUgKDEwMjQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5oOjE2OiNkZWZpbmUgTU04MVhfRldfRElSIFxcXCJtb3JzZW1pY3JvL21tODF4XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvZncuaC0xNy0jZGVmaW5lIE1NODFYX0ZXX0VYVCBcXFwiLmJpblxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjE6Mjk6MzAuMjg1ODA3MTU1WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE2NDgzMDAxNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFdpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHdpcmVsZXNzIGRyaXZlcnMuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIG5hdmlnYXRlIHRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AgZmlsZS4gSSdtIGdvaW5nIHRvIGZvY3VzIG15IGluaXRpYWwgaW52ZXN0aWdhdGlvbiBhcm91bmQgbGluZXMgMjAgdGhyb3VnaCA0MC4gVGhhdCByYW5nZSBpcyB1c3VhbGx5IGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGNvcmUgd2lyZWxlc3MgZHJpdmVyIG9wdGlvbnMgYXJlIHN0cnVjdHVyZWQgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIG9yIGRlZmF1bHRzIG1pZ2h0IGJlIGRlZmluZWQuIEhvcGVmdWxseSwgSSdsbCBiZSBhYmxlIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIHJlbGV2YW50IGtleSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZnJvbSB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTUzMjQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyOTozMS45MzQxMTAwNjFaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMzODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgV2lyZWxlc3MgTEFOIGRldmljZSBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnVjb25maWcgV0xBTlxcbiAgIDc6XFx0XFx0Ym9vbCBcXFwiV2lyZWxlc3MgTEFOXFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiAhUzM5MFxcbiAgIDk6XFx0XFx0ZGVwZW5kcyBvbiBORVRcXG4gIDEwOlxcdFxcdHNlbGVjdCBXSVJFTEVTU1xcbiAgMTE6XFx0XFx0ZGVmYXVsdCB5XFxuICAxMjpcXHRcXHRoZWxwXFxuICAxMzpcXHRcXHQgIFRoaXMgc2VjdGlvbiBjb250YWlucyBhbGwgdGhlIHByZSA4MDIuMTEgYW5kIDgwMi4xMSB3aXJlbGVzc1xcbiAgMTQ6XFx0XFx0ICBkZXZpY2UgZHJpdmVycy4gRm9yIGEgY29tcGxldGUgbGlzdCBvZiBkcml2ZXJzIGFuZCBkb2N1bWVudGF0aW9uXFxuICAxNTpcXHRcXHQgIG9uIHRoZW0gcmVmZXIgdG8gdGhlIHdpcmVsZXNzIHdpa2k6XFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVyc1xcbiAgMTg6XFx0XFxuICAxOTpcXHRpZiBXTEFOXFxuICAyMDpcXHRcXG4gIDIxOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYWRtdGVrL0tjb25maWdcXFwiXFxuICAyMjpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnXFxcIlxcbiAgMjM6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9LY29uZmlnXFxcIlxcbiAgMjQ6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9LY29uZmlnXFxcIlxcbiAgMjU6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9LY29uZmlnXFxcIlxcbiAgMjY6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9LY29uZmlnXFxcIlxcbiAgMjc6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWdcXFwiXFxuICAyODpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdcXFwiXFxuICAyOTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC9LY29uZmlnXFxcIlxcbiAgMzA6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWdcXFwiXFxuICAzMTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnXFxcIlxcbiAgMzI6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9wdXJlbGlmaS9LY29uZmlnXFxcIlxcbiAgMzM6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvS2NvbmZpZ1xcXCJcXG4gIDM0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnXFxcIlxcbiAgMzU6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZ1xcXCJcXG4gIDM2OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL0tjb25maWdcXFwiXFxuICAzNzpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L0tjb25maWdcXFwiXFxuICAzODpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL0tjb25maWdcXFwiXFxuICAzOTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL0tjb25maWdcXFwiXFxuICA0MDpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9LY29uZmlnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyOTozMS45MzQyNDYzNDFaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzI2MTg1NDg4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipWZXJpZnlpbmcgV29ydGhGdXp6aW5nIGZvciB0aGUgTU04MXggV2lyZWxlc3MgRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgbGV0J3MgY29uZmlybSBpZiBmdXp6aW5nIHRoaXMgcGF0Y2ggaXMgd2FycmFudGVkLiBGaXJzdCwgSSBzZWUgdGhlIGNvcmUgY2hhbmdlIGlzIGluIGBtbTgxeF9yZWFkX3BrdHNfaF9pc192YWxpZF9kZWxpbWAgYW5kIGBtbTgxeF95YXBzX2h3X3JlYWRfcGt0c2Agd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmNgIGZpbGUuIFNwZWNpZmljYWxseSwgd2UncmUgbG9va2luZyBhdCBpbnB1dCB2YWxpZGF0aW9uIGxvZ2ljIGJlaW5nIHVwZGF0ZWQg4oCTIGBwa3Rfc2l6ZSA9PSAwYCBpcyBub3cgYHBrdF9zaXplIFx1MDAzYz0gWUFQU19SRVNFUlZFRF9QQUdFX1NJWkVgIGFuZCB0aGVyZSdzIGEgbmV3IGFsaWdubWVudCBjaGVjay4gVGhpcyBpcyBjcnVjaWFsIGFzIGl0IGRpcmVjdGx5IGltcGFjdHMgcGFja2V0IGhhbmRsaW5nLCBhbmQgdmFsaWRhdGlvbiBsb2dpYyBpcyBhIGNsYXNzaWMgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5UaGlzIGRyaXZlciBzdXBwb3J0cyBVU0IgZGV2aWNlcywgd2hpY2ggaXMgZmFudGFzdGljIGJlY2F1c2UgdGhhdCBtZWFucyB3ZSBjYW4gZWFzaWx5IHJlcGxpY2F0ZSB0aGUgZW52aXJvbm1lbnQgd2l0aCBRRU1VIG9yIGV2ZW4gVVNCIFJhdyBHYWRnZXQgc2V0dXAgZm9yIGVmZmVjdGl2ZSBmdXp6aW5nLiBUaGUgZmFjdCB0aGF0IGBDT05GSUdfTU04MVhfVVNCYCBlbmFibGVzIHRoaXMgaXMgYSBncmVlbiBsaWdodC5cblxuTm93LCBsZXQncyBnZXQgcHJlY2lzZSBvbiB0aGUgaW1wb3J0YW50IHN5bWJvbHMuIEkndmUgbm90ZWQgdGhhdCBgbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW1gIGlzIHN0YXRpYywgcG90ZW50aWFsbHkgaW5saW5lZCBpbnRvIGBtbTgxeF95YXBzX2h3X3JlYWRfcGt0c2AuIEJ1dCBldmVuIGlmIGlubGluZWQsIGl0J3Mgc3RpbGwgcGFydCBvZiB0aGUgY3JpdGljYWwgcGF0aC4gYG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzYCBpcyB0aGUgbWFpbiBmdW5jdGlvbiByZWFkaW5nIHBhY2tldHMgYW5kIGRvaW5nIGRlbGltaXRlciB2YWxpZGF0aW9uLiBgbW04MXhfeWFwc19yZWFkX3BrdHNgIGlzIGFsc28gaW1wb3J0YW50LCBzaW5jZSBpdCBjYWxscyB0aGUgYG9wcy1cdTAwM2VyZWFkX3BrdHNgIGZ1bmN0aW9uLiBTbywgYmFzZWQgb24gdGhlIGNvZGUgZmxvdywgdGhlIHJlbGV2YW50IHN5bWJvbHMgYXJlOlxuXG4qICAgYG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzYFxuKiAgIGBtbTgxeF9yZWFkX3BrdHNfaF9pc192YWxpZF9kZWxpbWBcbiogICBgbW04MXhfeWFwc19yZWFkX3BrdHNgXG4qICAgYG1tODF4X3lhcHNfcnhfaGFuZGxlcmBcblxuSSd2ZSBjb25maXJtZWQgdGhhdCBgbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW1gIGlzIGluZGVlZCBzdGF0aWMgd2l0aGluIGB5YXBzX2h3LmNgLiBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgIGlzIGFsc28gYHN0YXRpY2AuIEkndmUgYWxzbyB2ZXJpZmllZCB0aGUgY2FsbCBjaGFpbiBmcm9tIGBtbTgxeF95YXBzX3JlYWRfcGt0c2AgKGluIGB5YXBzLmNgKSB0byBgeWFwcy1cdTAwM2VvcHMtXHUwMDNlcmVhZF9wa3RzYCwgYW5kIHRoYXQgYG1tODF4X3lhcHNfcnhfaGFuZGxlcmAgY2FsbHMgYG1tODF4X3lhcHNfcmVhZF9wa3RzYC4gRnVydGhlcm1vcmUsIGBtbTgxeF91c2JfcHJvYmVgIGluIGB1c2IuY2AgaW5pdGlhbGl6ZXMgdGhlIFVTQiBpbnRlcmZhY2UsIHRodXMgZXN0YWJsaXNoaW5nIHRoZSBVU0IgZW50cnlwb2ludC5cblxuR2l2ZW4gdGhhdCB0aGUgcGF0Y2ggaW52b2x2ZXMgY2hhbmdlcyB0byBwYWNrZXQgdmFsaWRhdGlvbiBhbmQgYWxpZ25tZW50IHdpdGhpbiBhIHdpcmVsZXNzIGRyaXZlciByZWFjaGFibGUgdmlhIFVTQiBlbXVsYXRpb24sIGFsbCB0aGUgcmVxdWlyZWQgZWxlbWVudHMgYXJlIGluIHBsYWNlLiBUaGUgaWRlbnRpZmllZCBjb25maWd1cmF0aW9ucyBhbmQgc3ltYm9scyBhcmUgY29ycmVjdCwgd2hpY2ggaXMgZnVydGhlciBjb25maXJtYXRpb24gdG8gZW5hYmxlIGZ1enppbmcuIFRodXMsIEknbSBjb25maWRlbnQgdGhhdCBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgc2V0IHRvIGB0cnVlYCwgZ2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgZXhwbG9pdGluZyB2dWxuZXJhYmlsaXRpZXMgaW4gcGFja2V0IGhhbmRsaW5nIGxvZ2ljLlxuXG5Ob3csIEknbSByZWFkeSB0byBwb3B1bGF0ZSB0aGUgYHNldC1yZXN1bHRzYCBmaWVsZHMgYW5kIGNhbGwgaXQgYSBkYXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2MTM4LCJPdXRwdXRUb2tlbnMiOjIxNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI5OjM5LjE5NjEwNDcwNloiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwNjMwMTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJXTEFOXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJNTTgxWFwiLFxuICAgIFwiTU04MVhfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibW04MXhfeWFwc19od19yZWFkX3BrdHNcIixcbiAgICBcIm1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltXCIsXG4gICAgXCJtbTgxeF95YXBzX3JlYWRfcGt0c1wiLFxuICAgIFwibW04MXhfeWFwc19yeF9oYW5kbGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhY2tldCByZWNlcHRpb24gYW5kIGRlbGltaXRlciB2YWxpZGF0aW9uIGxvZ2ljIGluIHRoZSBNb3JzZSBNaWNybyBNTTgxeCB3aXJlbGVzcyBkcml2ZXIgKGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jKSwgYWRkaW5nIGFsaWdubWVudCB2ZXJpZmljYXRpb24gb24gcmVtYWluaW5nIGJ5dGVzIGFuZCBzdHJpY3RlciBwYWNrZXQgc2l6ZSB2YWxpZGF0aW9uIGFnYWluc3QgcmVzZXJ2ZWQgcGFnZSBib3VuZHMuIFRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGRldmljZXMgYW5kIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTU9SU0VNSUNST1wiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiLFxuICAgIFwiTU04MVhcIixcbiAgICBcIk1NODFYX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1tODF4X3lhcHNfaHdfcmVhZF9wa3RzXCIsXG4gICAgXCJtbTgxeF9yZWFkX3BrdHNfaF9pc192YWxpZF9kZWxpbVwiLFxuICAgIFwibW04MXhfeWFwc19yZWFkX3BrdHNcIixcbiAgICBcIm1tODF4X3lhcHNfcnhfaGFuZGxlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYWNrZXQgcmVjZXB0aW9uIGFuZCBkZWxpbWl0ZXIgdmFsaWRhdGlvbiBsb2dpYyBpbiB0aGUgTW9yc2UgTWljcm8gTU04MXggd2lyZWxlc3MgZHJpdmVyIChkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYyksIGFkZGluZyBhbGlnbm1lbnQgdmVyaWZpY2F0aW9uIG9uIHJlbWFpbmluZyBieXRlcyBhbmQgc3RyaWN0ZXIgcGFja2V0IHNpemUgdmFsaWRhdGlvbiBhZ2FpbnN0IHJlc2VydmVkIHBhZ2UgYm91bmRzLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIGFuZCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyOTozOS4yNzY3NDEyMTVaIiwiU2VxIjozOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwODAzNzcwNjM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjE6Mjk6MzkuMjc3MzIyMTE1WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MjA4MDMxODQ0NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGhhcmRlbnMgaW5wdXQgdmFsaWRhdGlvbiBpbiB0aGUgTW9yc2UgTWljcm8gbW04MXggZHJpdmVyJ3MgWUFQUyBoYXJkd2FyZSBwYWNrZXQgcmVhZGluZyBsb2dpYyBieTpcXG4xLiBFbnN1cmluZyBgcGt0X3NpemVgIChwaGFuZGxlIHNpemUpIGV4Y2VlZHMgYFlBUFNfUkVTRVJWRURfUEFHRV9TSVpFYCB0byBwcmV2ZW50IHVuZGVyZmxvd3MgaW4gYFlBUFNfREVMSU1fR0VUX1BLVF9TSVpFKClgLlxcbjIuIFZhbGlkYXRpbmcgdGhhdCBgYnl0ZXNfcmVtYWluaW5nYCBpcyA0LWJ5dGUgYWxpZ25lZCBiZWZvcmUgcmVhZGluZyBkZWxpbWl0ZXJzIGZyb20gdGhlIGNoaXAgYnVmZmVyLlxcblxcblRoZXNlIGNoYW5nZXMgcHJldmVudCBwb3RlbnRpYWwgaW50ZWdlciB1bmRlcmZsb3csIG91dC1vZi1ib3VuZHMgcmVhZHMvd3JpdGVzLCBvciBwcm90b2NvbCBkZXN5bmNocm9uaXphdGlvbiB3aGVuIHBhcnNpbmcgaGFyZHdhcmUgcGFja2V0IGJ1ZmZlcnMuIEFueSBtZW1vcnkgc2FmZXR5IHZpb2xhdGlvbnMgaW4gdGhpcyBhcmVhIChlLmcuLCBuZWdhdGl2ZSBzaXplIHBhc3NlZCB0byBidWZmZXIgb3BlcmF0aW9ucyByZXN1bHRpbmcgaW4gb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcykgYXJlIGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgaW4gYnJhbmNoaW5nLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDc2OTFmNzhiMGUzOTI2YTliNGY1MTU0NWVkMjgwMmYyZDMxZDkwYmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAyMToyODoyNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmNcbmluZGV4IDNkNjQxZDIzYzM1YmEuLjk3YjJmZjkzYzY5ZmYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmNcbkBAIC00MDcsNyArNDA3LDcgQEAgc3RhdGljIGJvb2wgbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW0odTMyIGRlbGltKVxuIFx0aWYgKGNhbGNfY3JjICE9IFlBUFNfREVMSU1fR0VUX0NSQyhkZWxpbSkpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbi1cdGlmIChwa3Rfc2l6ZSA9PSAwKVxuK1x0aWYgKHBrdF9zaXplIFx1MDAzYz0gWUFQU19SRVNFUlZFRF9QQUdFX1NJWkUpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdGlmICgocGt0X3NpemUgKyBwYWRkaW5nKSBcdTAwM2UgWUFQU19NQVhfUEtUX1NJWkVfQllURVMpXG5AQCAtNDU1LDYgKzQ1NSwxMCBAQCBzdGF0aWMgaW50IG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzKHN0cnVjdCBtbTgxeF95YXBzICp5YXBzLFxuIFx0XHRyZXR1cm4gMDtcbiBcdGlmIChieXRlc19yZW1haW5pbmcgXHUwMDNjIDApXG4gXHRcdHJldHVybiBieXRlc19yZW1haW5pbmc7XG4rXHRpZiAoIUlTX0FMSUdORUQoYnl0ZXNfcmVtYWluaW5nLCBzaXplb2YodTMyKSkpIHtcbitcdFx0ZGV2X3dhcm4oeWFwcy1cdTAwM2Vtb3JzLVx1MDAzZWRldiwgXCJ5YXBzIHRydW5jYXRlZCBkZWxpbWl0ZXJcIik7XG4rXHRcdHJldHVybiAtRUlPO1xuK1x0fVxuIFxuIFx0aWYgKGJ5dGVzX3JlbWFpbmluZyBcdTAwM2UgWUFQU19IV19XSU5ET1dfU0laRV9CWVRFUykge1xuIFx0XHRieXRlc19yZW1haW5pbmcgPSBZQVBTX0hXX1dJTkRPV19TSVpFX0JZVEVTO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjE6Mjk6MzkuMjc3MzIzMzk1WiIsIlNlcSI6NDEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU4ODI3NTMzNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGl2aW5nIGludG8gdGhlIG1tODF4IFdpcmVsZXNzIERyaXZlcioqXG5cbk9rYXksIHNvIHRoZSBwYXRjaCBpcyBzdXBwb3NlZGx5IG5lc3RsZWQgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuY2AuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQncyBzdGFydCBieSBzY3J1dGluaXppbmcgdGhhdCBzcGVjaWZpYyBmaWxlLiBJIHdhbnQgdG8gemVybyBpbiBvbiB0aGUgdmljaW5pdHkgb2YgYG1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltYCBhbmQgYG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzYC4gVGhlc2UgZnVuY3Rpb24gbmFtZXMgYXJlIHNjcmVhbWluZyBwb3RlbnRpYWwgZm9yIHRoZSBmaXgsIHNvIGxldCdzIHVuZGVyc3RhbmQgdGhlaXIgY29udGV4dCBhbmQgaW50ZXJhY3Rpb25zLlxuXG5MZXQncyBwdWxsIHVwIHRoYXQgYHlhcHNfaHcuY2AgZmlsZSB1c2luZyBgcmVhZC1maWxlYCBhbmQgZ2V0IGEgZ29vZCBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGdyYXNwIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGJldHRlci4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBpbnZlc3RpZ2F0aW9uIGJlZ2lucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMxMCwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI5OjQ1LjE2MDA4MTEyOVoiLCJTZXEiOjQyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM0ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzkwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM5MDpcXHRleGl0OlxcbiAzOTE6XFx0XFx0aWYgKGJhdGNoX3R4bl9sZW4gXFx1MDAzZSAwKSB7XFxuIDM5MjpcXHRcXHRcXHRyZXQgPSBtbTgxeF9kbV93cml0ZSh5YXBzLVxcdTAwM2Vtb3JzLCB5YXBzLVxcdTAwM2VhdXhfZGF0YS1cXHUwMDNleWRzX2FkZHIsXFxuIDM5MzpcXHRcXHRcXHRcXHRcXHQgICAgIHRvX2NoaXBfYnVmZmVyX2FsaWduZWQsIGJhdGNoX3R4bl9sZW4pO1xcbiAzOTQ6XFx0XFx0XFx0Km51bV9wa3RzX3NlbnQgKz0gcGt0c19wZW5kaW5nO1xcbiAzOTU6XFx0XFx0fVxcbiAzOTY6XFx0XFxuIDM5NzpcXHRcXHRtbTgxeF95YXBzX2h3X3VubG9jayh5YXBzKTtcXG4gMzk4OlxcdFxcdHJldHVybiByZXQ7XFxuIDM5OTpcXHR9XFxuIDQwMDpcXHRcXG4gNDAxOlxcdHN0YXRpYyBib29sIG1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltKHUzMiBkZWxpbSlcXG4gNDAyOlxcdHtcXG4gNDAzOlxcdFxcdHU4IGNhbGNfY3JjID0gbW04MXhfeWFwc19od19jcmMoZGVsaW0pO1xcbiA0MDQ6XFx0XFx0aW50IHBrdF9zaXplID0gWUFQU19ERUxJTV9HRVRfUEhBTkRMRV9TSVpFKGRlbGltKTtcXG4gNDA1OlxcdFxcdGludCBwYWRkaW5nID0gWUFQU19ERUxJTV9HRVRfUEFERElORyhkZWxpbSk7XFxuIDQwNjpcXHRcXG4gNDA3OlxcdFxcdGlmIChjYWxjX2NyYyAhPSBZQVBTX0RFTElNX0dFVF9DUkMoZGVsaW0pKVxcbiA0MDg6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiA0MDk6XFx0XFxuIDQxMDpcXHRcXHRpZiAocGt0X3NpemUgXFx1MDAzYz0gWUFQU19SRVNFUlZFRF9QQUdFX1NJWkUpXFxuIDQxMTpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIDQxMjpcXHRcXG4gNDEzOlxcdFxcdGlmICgocGt0X3NpemUgKyBwYWRkaW5nKSBcXHUwMDNlIFlBUFNfTUFYX1BLVF9TSVpFX0JZVEVTKVxcbiA0MTQ6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiA0MTU6XFx0XFxuIDQxNjpcXHRcXHQvKiBQa3QgbGVuZ3RoICsgcGFkZGluZyBzaG91bGQgbm90IHJlcXVpcmUgbW9yZSBwYWRkaW5nICovXFxuIDQxNzpcXHRcXHRpZiAoWUFQU19DQUxDX1BBRERJTkcocGt0X3NpemUpICE9IHBhZGRpbmcpXFxuIDQxODpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIDQxOTpcXHRcXG4gNDIwOlxcdFxcdHJldHVybiB0cnVlO1xcbiA0MjE6XFx0fVxcbiA0MjI6XFx0XFxuIDQyMzpcXHRzdGF0aWMgaW50IG1tODF4X3JlYWRfcGt0c19oX2J5dGVzX3JlbWFpbmluZyhzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcylcXG4gNDI0OlxcdHtcXG4gNDI1OlxcdFxcdHUzMiBieXRlc19pbl9xdWV1ZSA9IHlhcHMtXFx1MDAzZWF1eF9kYXRhLVxcdTAwM2VzdGF0dXNfcmVncy5mY19yeF9ieXRlc19pbl9xdWV1ZTtcXG4gNDI2OlxcdFxcdHUzMiBkZWxpbV9vdmVyaGVhZCA9XFxuIDQyNzpcXHRcXHRcXHR5YXBzLVxcdTAwM2VhdXhfZGF0YS1cXHUwMDNlc3RhdHVzX3JlZ3MuZmNfbnVtX3BrdHMgKiBzaXplb2YodTMyKTtcXG4gNDI4OlxcdFxcdHUzMiByZXNlcnZlZF9ieXRlcyA9IHlhcHMtXFx1MDAzZWF1eF9kYXRhLVxcdTAwM2VzdGF0dXNfcmVncy5mY19udW1fcGt0cyAqXFxuIDQyOTpcXHRcXHRcXHRcXHQgICAgIHlhcHMtXFx1MDAzZWF1eF9kYXRhLVxcdTAwM2VyZXNlcnZlZF95YXBzX3BhZ2Vfc2l6ZTtcXG4gNDMwOlxcdFxcbiA0MzE6XFx0XFx0aWYgKFdBUk5fT04oYnl0ZXNfaW5fcXVldWUgXFx1MDAzZSBJTlRfTUFYKSB8fFxcbiA0MzI6XFx0XFx0ICAgIFdBUk5fT04oZGVsaW1fb3ZlcmhlYWQgXFx1MDAzZSBJTlRfTUFYKSB8fFxcbiA0MzM6XFx0XFx0ICAgIFdBUk5fT04ocmVzZXJ2ZWRfYnl0ZXMgXFx1MDAzZSBJTlRfTUFYKSlcXG4gNDM0OlxcdFxcdFxcdHJldHVybiAtRUlPO1xcbiA0MzU6XFx0XFxuIDQzNjpcXHRcXHRyZXR1cm4gKGludClieXRlc19pbl9xdWV1ZTtcXG4gNDM3OlxcdH1cXG4gNDM4OlxcdFxcbiA0Mzk6XFx0c3RhdGljIGludCBtbTgxeF95YXBzX2h3X3JlYWRfcGt0cyhzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcyxcXG4gNDQwOlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBtbTgxeF95YXBzX3BrdCAqcGt0cyxcXG4gNDQxOlxcdFxcdFxcdFxcdFxcdCAgIGludCBudW1fcGt0c19tYXgsIGludCAqbnVtX3BrdHNfcmVjZWl2ZWQpXFxuIDQ0MjpcXHR7XFxuIDQ0MzpcXHRcXHRpbnQgcmV0O1xcbiA0NDQ6XFx0XFx0aW50IGkgPSAwO1xcbiA0NDU6XFx0XFx0Y2hhciAqZnJvbV9jaGlwX2J1ZmZlcl9hbGlnbmVkID1cXG4gNDQ2OlxcdFxcdFxcdFBUUl9BTElHTih5YXBzLVxcdTAwM2VhdXhfZGF0YS1cXHUwMDNlZnJvbV9jaGlwX2J1ZmZlcixcXG4gNDQ3OlxcdFxcdFxcdFxcdCAgbW04MXhfYnVzX2dldF9hbGlnbm1lbnQoeWFwcy1cXHUwMDNlbW9ycykpO1xcbiA0NDg6XFx0XFx0Y2hhciAqcmVhZF9wdHIgPSBmcm9tX2NoaXBfYnVmZmVyX2FsaWduZWQ7XFxuIDQ0OTpcXHRcXHRpbnQgYnl0ZXNfcmVtYWluaW5nID0gbW04MXhfcmVhZF9wa3RzX2hfYnl0ZXNfcmVtYWluaW5nKHlhcHMpO1xcbiA0NTA6XFx0XFx0Ym9vbCBhZ2FpbiA9IGZhbHNlO1xcbiA0NTE6XFx0XFxuIDQ1MjpcXHRcXHQqbnVtX3BrdHNfcmVjZWl2ZWQgPSAwO1xcbiA0NTM6XFx0XFxuIDQ1NDpcXHRcXHRpZiAobnVtX3BrdHNfbWF4ID09IDAgfHwgYnl0ZXNfcmVtYWluaW5nID09IDApXFxuIDQ1NTpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNDU2OlxcdFxcdGlmIChieXRlc19yZW1haW5pbmcgXFx1MDAzYyAwKVxcbiA0NTc6XFx0XFx0XFx0cmV0dXJuIGJ5dGVzX3JlbWFpbmluZztcXG4gNDU4OlxcdFxcdGlmICghSVNfQUxJR05FRChieXRlc19yZW1haW5pbmcsIHNpemVvZih1MzIpKSkge1xcbiA0NTk6XFx0XFx0XFx0ZGV2X3dhcm4oeWFwcy1cXHUwMDNlbW9ycy1cXHUwMDNlZGV2LCBcXFwieWFwcyB0cnVuY2F0ZWQgZGVsaW1pdGVyXFxcIik7XFxuIDQ2MDpcXHRcXHRcXHRyZXR1cm4gLUVJTztcXG4gNDYxOlxcdFxcdH1cXG4gNDYyOlxcdFxcbiA0NjM6XFx0XFx0aWYgKGJ5dGVzX3JlbWFpbmluZyBcXHUwMDNlIFlBUFNfSFdfV0lORE9XX1NJWkVfQllURVMpIHtcXG4gNDY0OlxcdFxcdFxcdGJ5dGVzX3JlbWFpbmluZyA9IFlBUFNfSFdfV0lORE9XX1NJWkVfQllURVM7XFxuIDQ2NTpcXHRcXHRcXHRhZ2FpbiA9IHRydWU7XFxuIDQ2NjpcXHRcXHR9XFxuIDQ2NzpcXHRcXG4gNDY4OlxcdFxcdC8qXFxuIDQ2OTpcXHRcXHQgKiBUaGlzIGlzIG1vcmUgY29hcnNlLWdyYWluZWQgdGhhbiBpdCBuZWVkcyB0byBiZSAtIG9uY2UgdGhlIGRhdGFcXG4gNDcwOlxcdFxcdCAqIGlzIHJlYWQgaW50byBhIGxvY2FsIGJ1ZmZlciB0aGUgbG9jayBjYW4gYmUgcmVsZWFzZWQsIGhvd2V2ZXJcXG4gNDcxOlxcdFxcdCAqIGFjY2VzcyB0byBmcm9tX2NoaXBfYnVmZmVyIHdpbGwgbmVlZCB0byBiZSBwcm90ZWN0ZWQgd2l0aCBpdHNcXG4gNDcyOlxcdFxcdCAqIG93biBsb2NrXFxuIDQ3MzpcXHRcXHQgKi9cXG4gNDc0OlxcdFxcdHJldCA9IG1tODF4X3lhcHNfaHdfbG9jayh5YXBzKTtcXG4gNDc1OlxcdFxcdGlmIChyZXQpIHtcXG4gNDc2OlxcdFxcdFxcdGRldl9kYmcoeWFwcy1cXHUwMDNlbW9ycy1cXHUwMDNlZGV2LCBcXFwieWFwcyBsb2NrIGZhaWxlZCAlZFxcXCIsIHJldCk7XFxuIDQ3NzpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA0Nzg6XFx0XFx0fVxcbiA0Nzk6XFx0XFxuIDQ4MDpcXHRcXHQvKiBSZWFkIGFsbCBhdmFpbGFibGUgcGFja2V0cyB0byB0aGUgYnVmZmVyICovXFxuIDQ4MTpcXHRcXHRyZXQgPSBtbTgxeF9kbV9yZWFkKHlhcHMtXFx1MDAzZW1vcnMsIHlhcHMtXFx1MDAzZWF1eF9kYXRhLVxcdTAwM2V5c2xfYWRkcixcXG4gNDgyOlxcdFxcdFxcdFxcdCAgICBmcm9tX2NoaXBfYnVmZmVyX2FsaWduZWQsIGJ5dGVzX3JlbWFpbmluZyk7XFxuIDQ4MzpcXHRcXG4gNDg0OlxcdFxcdGlmIChyZXQpXFxuIDQ4NTpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuIDQ4NjpcXHRcXG4gNDg3OlxcdFxcdC8qIFNwbGl0IHNlcmlhbGlzZWQgcGFja2V0cyBmcm9tIGJ1ZmZlciAqL1xcbiA0ODg6XFx0XFx0d2hpbGUgKGkgXFx1MDAzYyBudW1fcGt0c19tYXggXFx1MDAyNlxcdTAwMjYgYnl0ZXNfcmVtYWluaW5nIFxcdTAwM2UgMCkge1xcbiA0ODk6XFx0XFx0XFx0dTMyIGRlbGltO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyOTo0NS4xNjAxODY0NTlaIiwiU2VxIjo0MywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTIzOTYzMjU2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHdoYXQncyBnb2luZyB0aHJvdWdoIG15IG1pbmQgYXMgSSBhcHByb2FjaCB0aGUgY29kZSwgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uLCBhbmQgdGFpbG9yZWQgZm9yIGEgZmllbGQgZXhwZXJ0OlxuXG4qKkRpdmluZyBpbnRvIGBtbTgxeF95YXBzX2h3X3JlYWRfcGt0c2AqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgaW50byB0aGlzIGBtbTgxeF95YXBzX2h3X3JlYWRfcGt0c2AgZnVuY3Rpb24uIEdpdmVuIHRoZSBuYW1pbmcsIEknbSBleHBlY3RpbmcgdGhpcyB0byBiZSB0aGUgY29yZSBoYXJkd2FyZSBpbnRlcmZhY2UgZm9yIHBhY2tldCByZWNlcHRpb24gb24gdGhlIG1tODF4LCBsaWtlbHkgaW52b2x2aW5nIHNvbWUgaW50ZXJhY3Rpb24gd2l0aCBZQVBTIChZb3VyIEFwcGxpY2F0aW9uIFByb3RvY29sIFNlcnZpY2UsIEkgYXNzdW1lKS4gSSdsbCB3YW50IHRvIHF1aWNrbHkgYXNjZXJ0YWluIGEgZmV3IHRoaW5nczogRmlyc3QsIGhvdyBpcyB0aGlzIGZ1bmN0aW9uIHRyaWdnZXJlZD8gSXMgaXQgaW50ZXJydXB0LWRyaXZlbiwgcG9sbGVkLCBvciBzb21ldGhpbmcgZWxzZT8gU2Vjb25kLCB3aGF0J3MgdGhlIGdlbmVyYWwgZmxvdz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZOKAlHBvaW50ZXJzIHRvIGJ1ZmZlcnMsIGRlc2NyaXB0b3JzLCBhbmQgYW55IGFzc29jaWF0ZWQgY29udHJvbCByZWdpc3RlcnMuIEknbSBnb2luZyB0byBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgYm90dGxlbmVja3MgcmlnaHQgYXdheSwgbGlrZSBhbnkgb2J2aW91cyBkYXRhIGNvcGllcyBvciBzeW5jaHJvbml6YXRpb24gaXNzdWVzIGlmIHdlIGFyZSBsb29raW5nIGF0IGEgc2hhcmVkIG1lbW9yeSBtb2RlbC4gQXJlIHRoZXkgdXNpbmcgRE1BPyBJZiBzbywgd2hhdCdzIHRoZSBkZXNjcmlwdG9yIHNldHVwPyBJJ2xsIGFsc28gYmUgd2F0Y2hpbmcgZm9yIGVycm9yIGhhbmRsaW5nLiBJcyB0aGVyZSByb2J1c3QgZXJyb3IgY2hlY2tpbmcgb24gdGhlIGhhcmR3YXJlIHJlYWRzLCBhbmQgYXJlIHRoZSBlcnJvcnMgaGFuZGxlZCBncmFjZWZ1bGx5PyBGaW5hbGx5LCBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgcmVjZWl2ZWQgcGFja2V0cyBhcmUgcGFzc2VkIG9uIHVwIHRoZSBzdGFjayDigJMgYXJlIHRoZXkgcHV0IG9uIGEgcXVldWUsIHBhc3NlZCBkaXJlY3RseSB0byB0aGUgdXBwZXIgbGF5ZXIsIG9yPyBJIG5lZWQgdG8gc2VlIGlmIHRoZSBpbnRlcmZhY2UgaXMgb3B0aW1pemVkIGZvciBoaWdoLXRocm91Z2hwdXQgb3IgcHJpb3JpdGl6ZXMgbG93LWxhdGVuY3ksIGFuZCB3aGljaCB0cmFkZS1vZmZzIHdlcmUgbWFkZS4gVGhhdCB3aWxsIHJlYWxseSBpbmZvcm0gaG93IEkgbWlnaHQgZ28gYWJvdXQgYW55IHBlcmZvcm1hbmNlIHR1bmluZyBsYXRlci4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzAwLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyOTo1MC4zOTk4MjI4MDJaIiwiU2VxIjo0NCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5NzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ4OCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ4ODpcXHRcXHR3aGlsZSAoaSBcXHUwMDNjIG51bV9wa3RzX21heCBcXHUwMDI2XFx1MDAyNiBieXRlc19yZW1haW5pbmcgXFx1MDAzZSAwKSB7XFxuIDQ4OTpcXHRcXHRcXHR1MzIgZGVsaW07XFxuIDQ5MDpcXHRcXHRcXHRpbnQgdG90YWxfbGVuO1xcbiA0OTE6XFx0XFx0XFx0aW50IHBrdF9zaXplO1xcbiA0OTI6XFx0XFxuIDQ5MzpcXHRcXHRcXHRkZWxpbSA9IGxlMzJfdG9fY3B1KCooKF9fbGUzMiAqKXJlYWRfcHRyKSk7XFxuIDQ5NDpcXHRcXHRcXHRyZWFkX3B0ciArPSBzaXplb2YoZGVsaW0pO1xcbiA0OTU6XFx0XFx0XFx0Ynl0ZXNfcmVtYWluaW5nIC09IHNpemVvZihkZWxpbSk7XFxuIDQ5NjpcXHRcXG4gNDk3OlxcdFxcdFxcdC8qIEVuZCBvZiBzdHJlYW0gKi9cXG4gNDk4OlxcdFxcdFxcdGlmICghZGVsaW0pXFxuIDQ5OTpcXHRcXHRcXHRcXHRicmVhaztcXG4gNTAwOlxcdFxcbiA1MDE6XFx0XFx0XFx0aWYgKCFtbTgxeF9yZWFkX3BrdHNfaF9pc192YWxpZF9kZWxpbShkZWxpbSkpIHtcXG4gNTAyOlxcdFxcdFxcdFxcdC8qXFxuIDUwMzpcXHRcXHRcXHRcXHQgKiBUaGlzIHdpbGwgc3RhcnQgYSBodW50IGZvciBhIHZhbGlkIGRlbGltaXRlci4gR2l2ZW5cXG4gNTA0OlxcdFxcdFxcdFxcdCAqIHRoZSBDUkMgaXMgb25seSA3IGJpdCBpdCdzIHBvc3NpYmxlIHRvIGZpbmQgYW5cXG4gNTA1OlxcdFxcdFxcdFxcdCAqIGludmFsaWQgYmxvY2sgd2l0aCBhIHZhbGlkIGRlbGltaXRlciwgbGVhZGluZyB0b1xcbiA1MDY6XFx0XFx0XFx0XFx0ICogZGVzeW5jaHJvbmlzYXRpb24uXFxuIDUwNzpcXHRcXHRcXHRcXHQgKi9cXG4gNTA4OlxcdFxcdFxcdFxcdGRldl93YXJuKHlhcHMtXFx1MDAzZW1vcnMtXFx1MDAzZWRldiwgXFxcInlhcHMgaW52YWxpZCBkZWxpbVxcXCIpO1xcbiA1MDk6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDUxMDpcXHRcXHRcXHR9XFxuIDUxMTpcXHRcXG4gNTEyOlxcdFxcdFxcdC8qIFRvdGFsIGxlbmd0aCBpbiBjaGlwICovXFxuIDUxMzpcXHRcXHRcXHRwa3Rfc2l6ZSA9IFlBUFNfREVMSU1fR0VUX1BLVF9TSVpFKGRlbGltKTtcXG4gNTE0OlxcdFxcdFxcdHRvdGFsX2xlbiA9IHBrdF9zaXplICsgWUFQU19ERUxJTV9HRVRfUEFERElORyhkZWxpbSk7XFxuIDUxNTpcXHRcXG4gNTE2OlxcdFxcdFxcdGlmIChwa3RzW2ldLnNrYilcXG4gNTE3OlxcdFxcdFxcdFxcdGRldl9lcnIoeWFwcy1cXHUwMDNlbW9ycy1cXHUwMDNlZGV2LCBcXFwieWFwcyBwYWNrZXQgbGVha1xcXCIpO1xcbiA1MTg6XFx0XFxuIDUxOTpcXHRcXHRcXHQvKiBTS0IgZG9lc24ndCB3YW50IHBhZGRpbmcgKi9cXG4gNTIwOlxcdFxcdFxcdHBrdHNbaV0uc2tiID0gZGV2X2FsbG9jX3NrYihwa3Rfc2l6ZSk7XFxuIDUyMTpcXHRcXHRcXHRpZiAoIXBrdHNbaV0uc2tiKSB7XFxuIDUyMjpcXHRcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbiA1MjM6XFx0XFx0XFx0XFx0ZGV2X2Vycih5YXBzLVxcdTAwM2Vtb3JzLVxcdTAwM2VkZXYsIFxcXCJ5YXBzIG5vIG1lbSBmb3Igc2tiXFxcIik7XFxuIDUyNDpcXHRcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuIDUyNTpcXHRcXHRcXHR9XFxuIDUyNjpcXHRcXHRcXHRza2JfcHV0KHBrdHNbaV0uc2tiLCBwa3Rfc2l6ZSk7XFxuIDUyNzpcXHRcXG4gNTI4OlxcdFxcdFxcdGlmICh0b3RhbF9sZW4gXFx1MDAzYz0gYnl0ZXNfcmVtYWluaW5nKSB7XFxuIDUyOTpcXHRcXHRcXHRcXHRtZW1jcHkocGt0c1tpXS5za2ItXFx1MDAzZWRhdGEsIHJlYWRfcHRyLCBwa3Rfc2l6ZSk7XFxuIDUzMDpcXHRcXHRcXHRcXHRyZWFkX3B0ciArPSB0b3RhbF9sZW47XFxuIDUzMTpcXHRcXHRcXHRcXHRieXRlc19yZW1haW5pbmcgLT0gdG90YWxfbGVuO1xcbiA1MzI6XFx0XFx0XFx0fSBlbHNlIHtcXG4gNTMzOlxcdFxcdFxcdFxcdGNvbnN0IGludCByZWFkX292ZXJoYW5nX2xlbiA9XFxuIDUzNDpcXHRcXHRcXHRcXHRcXHR0b3RhbF9sZW4gLSBieXRlc19yZW1haW5pbmc7XFxuIDUzNTpcXHRcXHRcXHRcXHRjb25zdCBpbnQgcGt0X292ZXJoYW5nX2xlbiA9IHBrdF9zaXplIC0gYnl0ZXNfcmVtYWluaW5nO1xcbiA1MzY6XFx0XFxuIDUzNzpcXHRcXHRcXHRcXHRtZW1jcHkocGt0c1tpXS5za2ItXFx1MDAzZWRhdGEsIHJlYWRfcHRyLCBieXRlc19yZW1haW5pbmcpO1xcbiA1Mzg6XFx0XFx0XFx0XFx0cmVhZF9wdHIgPSBmcm9tX2NoaXBfYnVmZmVyX2FsaWduZWQ7XFxuIDUzOTpcXHRcXG4gNTQwOlxcdFxcdFxcdFxcdHJldCA9IG1tODF4X2RtX3JlYWQoXFxuIDU0MTpcXHRcXHRcXHRcXHRcXHR5YXBzLVxcdTAwM2Vtb3JzLFxcbiA1NDI6XFx0XFx0XFx0XFx0XFx0LyogT2Zmc2V0IGJ5IDQgdG8gYXZvaWQgcmV0cnkgbG9naWMgKi9cXG4gNTQzOlxcdFxcdFxcdFxcdFxcdHlhcHMtXFx1MDAzZWF1eF9kYXRhLVxcdTAwM2V5c2xfYWRkciArIDQsIHJlYWRfcHRyLFxcbiA1NDQ6XFx0XFx0XFx0XFx0XFx0cmVhZF9vdmVyaGFuZ19sZW4pO1xcbiA1NDU6XFx0XFxuIDU0NjpcXHRcXHRcXHRcXHRpZiAocmV0KVxcbiA1NDc6XFx0XFx0XFx0XFx0XFx0Z290byBleGl0O1xcbiA1NDg6XFx0XFxuIDU0OTpcXHRcXHRcXHRcXHRtZW1jcHkocGt0c1tpXS5za2ItXFx1MDAzZWRhdGEgKyBieXRlc19yZW1haW5pbmcsIHJlYWRfcHRyLFxcbiA1NTA6XFx0XFx0XFx0XFx0ICAgICAgIHBrdF9vdmVyaGFuZ19sZW4pO1xcbiA1NTE6XFx0XFx0XFx0XFx0cmVhZF9wdHIgKz0gcmVhZF9vdmVyaGFuZ19sZW47XFxuIDU1MjpcXHRcXHRcXHRcXHRieXRlc19yZW1haW5pbmcgPSAwO1xcbiA1NTM6XFx0XFx0XFx0fVxcbiA1NTQ6XFx0XFxuIDU1NTpcXHRcXHRcXHQqbnVtX3BrdHNfcmVjZWl2ZWQgKz0gMTtcXG4gNTU2OlxcdFxcdFxcdGkrKztcXG4gNTU3OlxcdFxcdH1cXG4gNTU4OlxcdFxcbiA1NTk6XFx0XFx0aWYgKGFnYWluKVxcbiA1NjA6XFx0XFx0XFx0cmV0ID0gLUVBR0FJTjtcXG4gNTYxOlxcdFxcbiA1NjI6XFx0ZXhpdDpcXG4gNTYzOlxcdFxcdG1tODF4X3lhcHNfaHdfdW5sb2NrKHlhcHMpO1xcbiA1NjQ6XFx0XFx0cmV0dXJuIHJldDtcXG4gNTY1OlxcdH1cXG4gNTY2OlxcdFxcbiA1Njc6XFx0c3RhdGljIGludCBtbTgxeF95YXBzX2h3X3VwZGF0ZV9zdGF0dXMoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI5OjUwLjM5OTkzNDcxMloiLCJTZXEiOjQ1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozODc3MTQ0NTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2g6IElucHV0IFZhbGlkYXRpb24gXHUwMDI2IFBvdGVudGlhbCBSaXNrcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEknbSBzZWVpbmcgYSBjaGFuZ2UgaW4gYG1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltYCB3aGVyZSB0aGV5J3JlIG5vdyBjaGVja2luZyBgcGt0X3NpemUgXHUwMDNjPSBZQVBTX1JFU0VSVkVEX1BBR0VfU0laRWAgaW5zdGVhZCBvZiBqdXN0IGBwa3Rfc2l6ZSA9PSAwYC4gVGhhdCdzIHRoZSBmaXJzdCBjbHVlLiBUaGVuLCBpbiBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgLCB0aGVyZSdzIGEgbmV3IGFsaWdubWVudCBjaGVjazogYCFJU19BTElHTkVEKGJ5dGVzX3JlbWFpbmluZywgc2l6ZW9mKHUzMikpYC4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgYWx3YXlzOiBhcmUgd2UgaW50cm9kdWNpbmcgb3IgY2hhbmdpbmcgYW55dGhpbmcgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvcm1hdGlvbiBsZWFrcywgb3IgYW55IG90aGVyIHBvdGVudGlhbCBzZWN1cml0eSBpc3N1ZXM/XG5cbkxvb2tpbmcgZGVlcGVyLCBgZnJvbV9jaGlwX2J1ZmZlcl9hbGlnbmVkYCBpcyBwb3B1bGF0ZWQgYnkgYG1tODF4X2RtX3JlYWRgIGZyb20gaGFyZHdhcmUsIGFuZCB0aGF0J3Mgd2hlcmUgdGhlIGRhdGEgZm9yIHRoZSBwYWNrZXRzIGNvbWVzIGZyb20uICBUaGVuLCB0aGUgY29kZSBjb3BpZXMgZGF0YSBpbnRvIGBza2JgIGJ1ZmZlcnMgdXNpbmcgYG1lbWNweWAuICBUaGUgY2hhbmdlIGl0c2VsZiBzZWVtcyB0byBiZSBhZGRpbmcgbW9yZSByb2J1c3QgaW5wdXQgdmFsaWRhdGlvbjsgcmVqZWN0aW5nIGBwa3Rfc2l6ZWAgaWYgaXQncyB0b28gc21hbGwsIGFuZCByZWplY3RpbmcgbWlzYWxpZ25lZCBgYnl0ZXNfcmVtYWluaW5nYC5cblxuSSB0aGluayB0aGlzIGlzIGFsbCBhYm91dCBtYWtpbmcgc3VyZSB3ZSdyZSBnZXR0aW5nIHZhbGlkIGRhdGEgZnJvbSB0aGUgaGFyZHdhcmUuICBHaXZlbiB0aGUgZGF0YSBmbG93LCB0aGVyZSdzIG5vIHJlYXNvbiB0byB0aGluayBpdCB3aWxsIGNhdXNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2Vzc2VzLiAgQWxsIHRoZSBgc2tiYHMgYXJlIGFsbG9jYXRlZCwgYW5kIHRoZSBkYXRhIGlzIHJlYWQgZGlyZWN0bHkgZnJvbSB0aGUgaGFyZHdhcmUsIHNvIGl0IHNob3VsZCBiZSBmaW5lLiBJdCBpcyBvbmx5IGFib3V0IHN0cmljdGVyIHZhbGlkYXRpb24gYW5kIGVycm9yIGNoZWNraW5nIG9mIHRoZSBoYXJkd2FyZSBpbnB1dC4gTm93LCBJIG5lZWQgdG8gc2VlIGV4YWN0bHkgd2hhdCBgWUFQU19SRVNFUlZFRF9QQUdFX1NJWkVgIGFuZCBgWUFQU19ERUxJTV9HRVRfUEhBTkRMRV9TSVpFYCBhcmUsIGp1c3QgdG8gaGF2ZSBhIGNvbXBsZXRlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5MTQsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyOTo1NC4yNzcwODIwNjVaIiwiU2VxIjo0NiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjMwMzE2NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiWUFQU19SRVNFUlZFRF9QQUdFX1NJWkVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMtMjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmM6MjE6I2RlZmluZSBZQVBTX1JFU0VSVkVEX1BBR0VfU0laRSAyNTZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYy0yMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jLTM1LSNkZWZpbmUgWUFQU19ERUxJTV9HRVRfUEtUX1NJWkUoX2RlbGltKSBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmM6MzY6XFx0KCgoX2RlbGltKSBcXHUwMDI2IDB4M0ZGRikgLSBZQVBTX1JFU0VSVkVEX1BBR0VfU0laRSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYy0zNy0jZGVmaW5lIFlBUFNfREVMSU1fU0VUX1BLVF9TSVpFKF9wa3Rfc2l6ZSkgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jOjM4OlxcdCgoKF9wa3Rfc2l6ZSkgXFx1MDAyNiAweDNGRkYpICsgWUFQU19SRVNFUlZFRF9QQUdFX1NJWkUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMtMzktI2RlZmluZSBZQVBTX0RFTElNX0dFVF9QSEFORExFX1NJWkUoX2RlbGltKSAoKChfZGVsaW0pIFxcdTAwMjYgMHgzRkZGKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jPTQwMT1zdGF0aWMgYm9vbCBtbTgxeF9yZWFkX3BrdHNfaF9pc192YWxpZF9kZWxpbSh1MzIgZGVsaW0pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYy00MDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmM6NDEwOlxcdGlmIChwa3Rfc2l6ZSBcXHUwMDNjPSBZQVBTX1JFU0VSVkVEX1BBR0VfU0laRSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYy00MTEtXFx0XFx0cmV0dXJuIGZhbHNlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyOTo1Ni4yMDAxMTkyNjZaIiwiU2VxIjo0NywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mzg4MDM1NTM3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBQYWNrZXQgU2l6ZSBDYWxjdWxhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYFlBUFNfREVMSU1fR0VUX1BLVF9TSVpFYCBtYWNybzogYCgoKF9kZWxpbSkgXHUwMDI2IDB4M0ZGRikgLSBZQVBTX1JFU0VSVkVEX1BBR0VfU0laRSlgLiBJdCdzIGNsZWFyIHRoYXQgdGhpcyBjYWxjdWxhdGlvbiBjb3VsZCBsZWFkIHRvIHByb2JsZW1zIGlmIHRoZSBwYWNrZXQgc2l6ZSwgd2hpY2ggaXMgaW5pdGlhbGx5IGRldGVybWluZWQgYnkgdGhlIGxvd2VyIGJpdHMgb2YgdGhlIGRlbGltaXRlciAoYHBrdF9zaXplYCksIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgWUFQU19SRVNFUlZFRF9QQUdFX1NJWkVgLiBUaGF0IHdvdWxkIHJlc3VsdCBpbiBlaXRoZXIgYSBuZWdhdGl2ZSBwYWNrZXQgc2l6ZSBvciwgYXQgYmVzdCwgemVyby4gVGhpcyBzZWVtcyBsaWtlIGEgdGV4dGJvb2sgY2FzZSBmb3IgcG90ZW50aWFsIHVuZGVyZmxvdyBvciwgbW9yZSBjcml0aWNhbGx5LCBpbnZhbGlkIHBhY2tldCBzaXplIGNhbGN1bGF0aW9ucyB3aGVuIHdlJ3JlIHVucGFja2luZyBwYWNrZXRzIGZyb20gdGhlIGNoaXAuXG5cblRoZSBgaWYgKHBrdF9zaXplIFx1MDAzYz0gWUFQU19SRVNFUlZFRF9QQUdFX1NJWkUpYCBjaGVjayB0aGF0J3MgaW4gcGxhY2UgZGlyZWN0bHkgYWRkcmVzc2VzIGFuZCBjb3JyZWN0cyB0aGlzIHBvdGVudGlhbCB1bmRlcmZsb3cvaW52YWxpZCBzaXplIHNjZW5hcmlvLiBHb29kLCBnb29kLiBBbmQgdGhlIGAhSVNfQUxJR05FRChieXRlc19yZW1haW5pbmcsIHNpemVvZih1MzIpKWAgY29uZGl0aW9uIGVuc3VyZXMgdGhlIGRhdGEgYnVmZmVyIGlzIDQtYnl0ZSBhbGlnbmVkLCB3aGljaCBpcyBjcnVjaWFsIGZvciBkYXRhIGludGVncml0eS5cblxuTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgYWx3YXlzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBvZiBjb3Vyc2UuIEJ1dCBhZnRlciBhIHJldmlldywgSSBjYW4gY29uZmlkZW50bHkgc2F5IHRoYXQgdGhlcmUgYXJlbid0IGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMgaGVyZS4gVGhpcyBmaXhlcyBwb3RlbnRpYWwgYnVmZmVyIHVuZGVyZmxvdywgb3V0LW9mLWJvdW5kcyBtZW1vcnkgaXNzdWVzLCBvciBsb2dpYyBlcnJvcnMsIHdoaWNoIEtBU0FOIHdpbGwgaGVscCBkZXRlY3QuIENydWNpYWxseSwgSSdtIG5vdCBpbnRyb2R1Y2luZyBvciBtb2RpZnlpbmcgYW55IGNvZGUgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGxlYWtpbmcgdG8gdXNlcnNwYWNlLCBvciB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHJlYWRzLlxuXG5UaGVyZWZvcmUsIEknbGwgdXBkYXRlIHRoZSBhc3NvY2lhdGVkIGlzc3VlIHdpdGggYE5lZWRzS01TQU46IGZhbHNlYCBhbmQgcHJvdmlkZSBhIGNsZWFyIGV4cGxhbmF0aW9uIG9mIHRoZXNlIHBvaW50cyBpbiB0aGUgY29tbWl0IG1lc3NhZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyNzgsIk91dHB1dFRva2VucyI6MjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjMwOjAwLjA4MDQ3ODA2MloiLCJTZXEiOjQ4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMzU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaGFyZGVucyBpbnB1dCB2YWxpZGF0aW9uIGluIHRoZSBNb3JzZSBNaWNybyBtbTgxeCBkcml2ZXIncyBZQVBTIGhhcmR3YXJlIHBhY2tldCByZWFkaW5nIGxvZ2ljIGJ5OlxcbjEuIEVuc3VyaW5nIGBwa3Rfc2l6ZWAgKHBoYW5kbGUgc2l6ZSkgZXhjZWVkcyBgWUFQU19SRVNFUlZFRF9QQUdFX1NJWkVgIHRvIHByZXZlbnQgdW5kZXJmbG93cyBpbiBgWUFQU19ERUxJTV9HRVRfUEtUX1NJWkUoKWAuXFxuMi4gVmFsaWRhdGluZyB0aGF0IGBieXRlc19yZW1haW5pbmdgIGlzIDQtYnl0ZSBhbGlnbmVkIGJlZm9yZSByZWFkaW5nIGRlbGltaXRlcnMgZnJvbSB0aGUgY2hpcCBidWZmZXIuXFxuXFxuVGhlc2UgY2hhbmdlcyBwcmV2ZW50IHBvdGVudGlhbCBpbnRlZ2VyIHVuZGVyZmxvdywgb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMsIG9yIHByb3RvY29sIGRlc3luY2hyb25pemF0aW9uIHdoZW4gcGFyc2luZyBoYXJkd2FyZSBwYWNrZXQgYnVmZmVycy4gQW55IG1lbW9yeSBzYWZldHkgdmlvbGF0aW9ucyBpbiB0aGlzIGFyZWEgKGUuZy4sIG5lZ2F0aXZlIHNpemUgcGFzc2VkIHRvIGJ1ZmZlciBvcGVyYXRpb25zIHJlc3VsdGluZyBpbiBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSBhcmUgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBpbiBicmFuY2hpbmcsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaGFyZGVucyBpbnB1dCB2YWxpZGF0aW9uIGluIHRoZSBNb3JzZSBNaWNybyBtbTgxeCBkcml2ZXIncyBZQVBTIGhhcmR3YXJlIHBhY2tldCByZWFkaW5nIGxvZ2ljIGJ5OlxcbjEuIEVuc3VyaW5nIGBwa3Rfc2l6ZWAgKHBoYW5kbGUgc2l6ZSkgZXhjZWVkcyBgWUFQU19SRVNFUlZFRF9QQUdFX1NJWkVgIHRvIHByZXZlbnQgdW5kZXJmbG93cyBpbiBgWUFQU19ERUxJTV9HRVRfUEtUX1NJWkUoKWAuXFxuMi4gVmFsaWRhdGluZyB0aGF0IGBieXRlc19yZW1haW5pbmdgIGlzIDQtYnl0ZSBhbGlnbmVkIGJlZm9yZSByZWFkaW5nIGRlbGltaXRlcnMgZnJvbSB0aGUgY2hpcCBidWZmZXIuXFxuXFxuVGhlc2UgY2hhbmdlcyBwcmV2ZW50IHBvdGVudGlhbCBpbnRlZ2VyIHVuZGVyZmxvdywgb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMsIG9yIHByb3RvY29sIGRlc3luY2hyb25pemF0aW9uIHdoZW4gcGFyc2luZyBoYXJkd2FyZSBwYWNrZXQgYnVmZmVycy4gQW55IG1lbW9yeSBzYWZldHkgdmlvbGF0aW9ucyBpbiB0aGlzIGFyZWEgKGUuZy4sIG5lZ2F0aXZlIHNpemUgcGFzc2VkIHRvIGJ1ZmZlciBvcGVyYXRpb25zIHJlc3VsdGluZyBpbiBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSBhcmUgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBpbiBicmFuY2hpbmcsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowj527p[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-10 21:09:58 +0000 UTC FinishedAt: 2026-09-10 21:30:02 +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": [ "WLAN", "WLAN_VENDOR_MORSEMICRO", "MAC80211", "USB", "MM81X", "MM81X_USB" ], "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": [ "WLAN", "WLAN_VENDOR_MORSEMICRO", "MAC80211", "USB", "MM81X", "MM81X_USB" ], "series_id": "a1a93a93-7948-472e-9b89-3bc7950b56f5" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mm81x_yaps_hw_read_pkts", "mm81x_read_pkts_h_is_valid_delim", "mm81x_yaps_read_pkts", "mm81x_yaps_rx_handler" ], "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+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTU9SU0VNSUNSTyYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TU04MVgmIzM0OywKICAgICYjMzQ7TU04MVhfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bW04MXhfeWFwc19od19yZWFkX3BrdHMmIzM0OywKICAgICYjMzQ7bW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW0mIzM0OywKICAgICYjMzQ7bW04MXhfeWFwc19yZWFkX3BrdHMmIzM0OywKICAgICYjMzQ7bW04MXhfeWFwc19yeF9oYW5kbGVyJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaGFyZGVucyBpbnB1dCB2YWxpZGF0aW9uIGluIHRoZSBNb3JzZSBNaWNybyBtbTgxeCBkcml2ZXImIzM5O3MgWUFQUyBoYXJkd2FyZSBwYWNrZXQgcmVhZGluZyBsb2dpYyBieTpcbjEuIEVuc3VyaW5nIGBwa3Rfc2l6ZWAgKHBoYW5kbGUgc2l6ZSkgZXhjZWVkcyBgWUFQU19SRVNFUlZFRF9QQUdFX1NJWkVgIHRvIHByZXZlbnQgdW5kZXJmbG93cyBpbiBgWUFQU19ERUxJTV9HRVRfUEtUX1NJWkUoKWAuXG4yLiBWYWxpZGF0aW5nIHRoYXQgYGJ5dGVzX3JlbWFpbmluZ2AgaXMgNC1ieXRlIGFsaWduZWQgYmVmb3JlIHJlYWRpbmcgZGVsaW1pdGVycyBmcm9tIHRoZSBjaGlwIGJ1ZmZlci5cblxuVGhlc2UgY2hhbmdlcyBwcmV2ZW50IHBvdGVudGlhbCBpbnRlZ2VyIHVuZGVyZmxvdywgb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMsIG9yIHByb3RvY29sIGRlc3luY2hyb25pemF0aW9uIHdoZW4gcGFyc2luZyBoYXJkd2FyZSBwYWNrZXQgYnVmZmVycy4gQW55IG1lbW9yeSBzYWZldHkgdmlvbGF0aW9ucyBpbiB0aGlzIGFyZWEgKGUuZy4sIG5lZ2F0aXZlIHNpemUgcGFzc2VkIHRvIGJ1ZmZlciBvcGVyYXRpb25zIHJlc3VsdGluZyBpbiBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSBhcmUgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBpbiBicmFuY2hpbmcsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYWNrZXQgcmVjZXB0aW9uIGFuZCBkZWxpbWl0ZXIgdmFsaWRhdGlvbiBsb2dpYyBpbiB0aGUgTW9yc2UgTWljcm8gTU04MXggd2lyZWxlc3MgZHJpdmVyIChkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYyksIGFkZGluZyBhbGlnbm1lbnQgdmVyaWZpY2F0aW9uIG9uIHJlbWFpbmluZyBieXRlcyBhbmQgc3RyaWN0ZXIgcGFja2V0IHNpemUgdmFsaWRhdGlvbiBhZ2FpbnN0IHJlc2VydmVkIHBhZ2UgYm91bmRzLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIGFuZCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzY5MWY3OGIwZTM5MjZhOWI0ZjUxNTQ1ZWQyODAyZjJkMzFkOTBiZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDIxOjI4OjI3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmNcbmluZGV4IDNkNjQxZDIzYzM1YmEuLjk3YjJmZjkzYzY5ZmYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmNcbkBAIC00MDcsNyAmIzQzOzQwNyw3IEBAIHN0YXRpYyBib29sIG1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltKHUzMiBkZWxpbSlcbiBcdGlmIChjYWxjX2NyYyAhPSBZQVBTX0RFTElNX0dFVF9DUkMoZGVsaW0pKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4tXHRpZiAocGt0X3NpemUgPT0gMClcbiYjNDM7XHRpZiAocGt0X3NpemUgXHUwMDNjPSBZQVBTX1JFU0VSVkVEX1BBR0VfU0laRSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuIFx0aWYgKChwa3Rfc2l6ZSAmIzQzOyBwYWRkaW5nKSBcdTAwM2UgWUFQU19NQVhfUEtUX1NJWkVfQllURVMpXG5AQCAtNDU1LDYgJiM0Mzs0NTUsMTAgQEAgc3RhdGljIGludCBtbTgxeF95YXBzX2h3X3JlYWRfcGt0cyhzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcyxcbiBcdFx0cmV0dXJuIDA7XG4gXHRpZiAoYnl0ZXNfcmVtYWluaW5nIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gYnl0ZXNfcmVtYWluaW5nO1xuJiM0MztcdGlmICghSVNfQUxJR05FRChieXRlc19yZW1haW5pbmcsIHNpemVvZih1MzIpKSkge1xuJiM0MztcdFx0ZGV2X3dhcm4oeWFwcy1cdTAwM2Vtb3JzLVx1MDAzZWRldiwgXCYjMzQ7eWFwcyB0cnVuY2F0ZWQgZGVsaW1pdGVyXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRUlPO1xuJiM0MztcdH1cbiBcbiBcdGlmIChieXRlc19yZW1haW5pbmcgXHUwMDNlIFlBUFNfSFdfV0lORE9XX1NJWkVfQllURVMpIHtcbiBcdFx0Ynl0ZXNfcmVtYWluaW5nID0gWUFQU19IV19XSU5ET1dfU0laRV9CWVRFUztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtXTEFOJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX01PUlNFTUlDUk8mIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O01NODFYJiMzNDssCiAgICAmIzM0O01NODFYX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21tODF4X3lhcHNfaHdfcmVhZF9wa3RzJiMzNDssCiAgICAmIzM0O21tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltJiMzNDssCiAgICAmIzM0O21tODF4X3lhcHNfcmVhZF9wa3RzJiMzNDssCiAgICAmIzM0O21tODF4X3lhcHNfcnhfaGFuZGxlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFja2V0IHJlY2VwdGlvbiBhbmQgZGVsaW1pdGVyIHZhbGlkYXRpb24gbG9naWMgaW4gdGhlIE1vcnNlIE1pY3JvIE1NODF4IHdpcmVsZXNzIGRyaXZlciAoZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMpLCBhZGRpbmcgYWxpZ25tZW50IHZlcmlmaWNhdGlvbiBvbiByZW1haW5pbmcgYnl0ZXMgYW5kIHN0cmljdGVyIHBhY2tldCBzaXplIHZhbGlkYXRpb24gYWdhaW5zdCByZXNlcnZlZCBwYWdlIGJvdW5kcy4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgZGV2aWNlcyBhbmQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc2OTFmNzhiMGUzOTI2YTliNGY1MTU0NWVkMjgwMmYyZDMxZDkwYmUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IFNlcCAxMCAyMToyODoyNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMKaW5kZXggM2Q2NDFkMjNjMzViYS4uOTdiMmZmOTNjNjlmZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMKQEAgLTQwNyw3ICYjNDM7NDA3LDcgQEAgc3RhdGljIGJvb2wgbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW0odTMyIGRlbGltKQogCWlmIChjYWxjX2NyYyAhPSBZQVBTX0RFTElNX0dFVF9DUkMoZGVsaW0pKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlpZiAocGt0X3NpemUgPT0gMCkKJiM0MzsJaWYgKHBrdF9zaXplICZsdDs9IFlBUFNfUkVTRVJWRURfUEFHRV9TSVpFKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlpZiAoKHBrdF9zaXplICYjNDM7IHBhZGRpbmcpICZndDsgWUFQU19NQVhfUEtUX1NJWkVfQllURVMpCkBAIC00NTUsNiAmIzQzOzQ1NSwxMCBAQCBzdGF0aWMgaW50IG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzKHN0cnVjdCBtbTgxeF95YXBzICp5YXBzLAogCQlyZXR1cm4gMDsKIAlpZiAoYnl0ZXNfcmVtYWluaW5nICZsdDsgMCkKIAkJcmV0dXJuIGJ5dGVzX3JlbWFpbmluZzsKJiM0MzsJaWYgKCFJU19BTElHTkVEKGJ5dGVzX3JlbWFpbmluZywgc2l6ZW9mKHUzMikpKSB7CiYjNDM7CQlkZXZfd2Fybih5YXBzLSZndDttb3JzLSZndDtkZXYsICYjMzQ7eWFwcyB0cnVuY2F0ZWQgZGVsaW1pdGVyJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU87CiYjNDM7CX0KIAogCWlmIChieXRlc19yZW1haW5pbmcgJmd0OyBZQVBTX0hXX1dJTkRPV19TSVpFX0JZVEVTKSB7CiAJCWJ5dGVzX3JlbWFpbmluZyA9IFlBUFNfSFdfV0lORE9XX1NJWkVfQllURVM7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTgKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA2MDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBTeXprYWxsZXIgRnV6emluZyBUcmlhZ2UgUGF0Y2gqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O20gdGhpbmtpbmcuIFRoZSB1c2VyIHdhbnRzIG1lIHRvIHZldCB0aGlzIHBhdGNoIGZvciBzeXprYWxsZXIgZnV6emluZyB0cmlhZ2UuIEZpcnN0LCBJJiMzOTttIGdvaW5nIHRvIHJ1biBhIHF1aWNrIHJpc2sgYW5hbHlzaXMuIFRoaXMgc2VlbXMgbGlrZSBpdCYjMzk7cyBwcmV0dHkgbG93LXN0YWtlcywgYSBjb2RlIHJldmlldyBvciBwYXRjaCB0cmlhZ2Ugc3BlY2lmaWNhbGx5IGZvciB0aGUgTGludXgga2VybmVsIGRyaXZlciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmNgLiBHaXZlbiB0aGF0IGNvbnRleHQsIGl0IGxvb2tzIGJlbmlnbiBvciBkZWZlbnNpdmUsIHNvbWV0aGluZyB0byBpbXByb3ZlIGZ1enppbmcgY29uZmlndXJhdGlvbi4gU28sIHllYWgsIHdlIHNob3VsZCBwcm9jZWVkIHdpdGggdGhpcyByZXF1ZXN0LgoKTm93LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBwYXRjaCBpdHNlbGYuIE9rYXksIEkgc2VlIHRoZSBkaWZmLiBUaGUgY29yZSBjaGFuZ2UgZm9jdXNlcyBvbiB0aGUgYG1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltYCBmdW5jdGlvbiwgYW5kIGBtbTgxeF95YXBzX2h3X3JlYWRfcGt0c2AuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgbW9kaWZpZWQgdGhlIHBhY2tldCBzaXplIHZhbGlkYXRpb24gbG9naWMgd2l0aGluIGBtbTgxeF9yZWFkX3BrdHNfaF9pc192YWxpZF9kZWxpbWAuIFRoZSBvbGQgY2hlY2sganVzdCBydWxlZCBvdXQgemVyby1zaXplZCBwYWNrZXRzOyBub3csIHRoZSBjb25kaXRpb24gaXMgYHBrdF9zaXplICZsdDs9IFlBUFNfUkVTRVJWRURfUEFHRV9TSVpFYC4gQWxzbywgYSBjaGVjayBmb3IgYWxpZ25lZCByZWFkIHNpemUgaGFzIGJlZW4gYWRkZWQgaW50byBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgLiBJdCBzZWVtcyBsaWtlIHRoZSBnb2FsIGlzIHRvIG1ha2UgdGhlIGZ1enppbmcgbW9yZSByb2J1c3QgYnkgcHJldmVudGluZyBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvd3Mgb3IgdW5kZXJmbG93cyBvciBoYW5kbGluZyB0cnVuY2F0ZWQgcmVhZHMuCgpCZWZvcmUgSSBnbyBmdXJ0aGVyLCBJJiMzOTtkIGxpa2UgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgYnJvYWRlciBjb250ZXh0LiBXaGF0IGtpbmQgb2YgYnVzIG9yIGRldmljZSBhcmUgd2UgZGVhbGluZyB3aXRoIGhlcmU/IElzIHRoaXMgU0RJTywgU1BJLCBVU0IsIG9yIHNvbWV0aGluZyBlbHNlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUgdG8gZnVsbHkgYXNzZXNzIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIGVpdGhlciBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gZ2V0IHRoZSBsYXkgb2YgdGhlIGxhbmQgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL2AuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbTgxeCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNDg0NyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnPTEzPWlmIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZzoxNDpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWctMTUtZW5kaWYgIyBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTU04MVgpICYjNDM7PSBtbTgxeC9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlLTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX01NODFYKSAmIzQzOz0gbW04MXhfY29yZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlLTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjU6bW04MXhfY29yZS15ICYjNDM7PSBjb3JlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6NjptbTgxeF9jb3JlLXkgJiM0Mzs9IG1hYy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjc6bW04MXhfY29yZS15ICYjNDM7PSBody5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjg6bW04MXhfY29yZS15ICYjNDM7PSBmdy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjk6bW04MXhfY29yZS15ICYjNDM7PSBjb21tYW5kLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MTA6bW04MXhfY29yZS15ICYjNDM7PSBwcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjExOm1tODF4X2NvcmUteSAmIzQzOz0gc2ticS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjEyOm1tODF4X2NvcmUteSAmIzQzOz0geWFwc19ody5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjEzOm1tODF4X2NvcmUteSAmIzQzOz0geWFwcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjE0Om1tODF4X2NvcmUteSAmIzQzOz0gcmMub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZToxNTptbTgxeF9jb3JlLXkgJiM0Mzs9IG1tcmMub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZS0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX01NODFYX1VTQikgJiM0Mzs9IG1tODF4X3VzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjE4Om1tODF4X3VzYi15ICYjNDM7PSB1c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZS0xOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX01NODFYX1NESU8pICYjNDM7PSBtbTgxeF9zZGlvLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MjE6bW04MXhfc2Rpby15ICYjNDM7PSBzZGlvLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoxMjplbnVtIG1tODF4X2J1c190eXBlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtMTMtXHRNTTgxWF9CVVNfVFlQRV9VU0IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MTc6c3RydWN0IG1tODF4X2J1c19vcHMge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoxODpcdGludCAoKmRtX3JlYWQpKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGFkZHIsIHU4ICpkYXRhLCBpbnQgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MTk6XHRpbnQgKCpkbV93cml0ZSkoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkciwgY29uc3QgdTggKmRhdGEsIGludCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoyMDpcdGludCAoKnJlZzMyX3JlYWQpKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGFkZHIsIHUzMiAqZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjIxOlx0aW50ICgqcmVnMzJfd3JpdGUpKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGFkZHIsIHUzMiBkYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MjI6XHRpbnQgKCpkaWdpdGFsX3Jlc2V0KShzdHJ1Y3QgbW04MXggKm1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoyMzpcdHZvaWQgKCpzZXRfYnVzX2VuYWJsZSkoc3RydWN0IG1tODF4ICptb3JzLCBib29sIGVuYWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjI0Olx0dm9pZCAoKmNvbmZpZ19idXJzdF9tb2RlKShzdHJ1Y3QgbW04MXggKm1vcnMsIGJvb2wgZW5hYmxlX2J1cnN0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MjU6XHR2b2lkICgqY2xhaW0pKHN0cnVjdCBtbTgxeCAqbW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjI2Olx0dm9pZCAoKnNldF9pcnEpKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoyNzpcdHZvaWQgKCpyZWxlYXNlKShzdHJ1Y3QgbW04MXggKm1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC0yOC1cdHVuc2lnbmVkIGludCBidWxrX2FsaWdubWVudDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDozNzovKiBtbTgxeF9kbV9yZWFkIC0gbGVuIG11c3QgYmUgcm91bmRlZCB1cCB0byB0aGUgbmVhcmVzdCA0LWJ5dGUgYm91bmRhcnkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6Mzg6c3RhdGljIGlubGluZSBpbnQgbW04MXhfZG1fcmVhZChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBhZGRyLCB1OCAqZGF0YSwgaW50IGxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtMzkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjQzOnN0YXRpYyBpbmxpbmUgaW50IG1tODF4X2RtX3dyaXRlKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGFkZHIsIGNvbnN0IHU4ICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC00NC1cdFx0XHRcdCBpbnQgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjQ5OnN0YXRpYyBpbmxpbmUgaW50IG1tODF4X3JlZzMyX3JlYWQoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkciwgdTMyICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC01MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC01My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6NTQ6c3RhdGljIGlubGluZSBpbnQgbW04MXhfcmVnMzJfd3JpdGUoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkciwgdTMyIGRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTU1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDo1OTpzdGF0aWMgaW5saW5lIGludCBtbTgxeF9idXNfZGlnaXRhbF9yZXNldChzdHJ1Y3QgbW04MXggKm1vcnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTYwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDo2NzpzdGF0aWMgaW5saW5lIHZvaWQgbW04MXhfc2V0X2J1c19lbmFibGUoc3RydWN0IG1tODF4ICptb3JzLCBib29sIGVuYWJsZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNjgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjcyOnN0YXRpYyBpbmxpbmUgdm9pZCBtbTgxeF9idXNfY29uZmlnX2J1cnN0X21vZGUoc3RydWN0IG1tODF4ICptb3JzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC03My1cdFx0XHRcdFx0ICAgICAgIGJvb2wgZW5hYmxlX2J1cnN0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjc5OnN0YXRpYyBpbmxpbmUgdm9pZCBtbTgxeF9jbGFpbV9idXMoc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC04MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC04My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6ODQ6c3RhdGljIGlubGluZSB2b2lkIG1tODF4X2J1c19zZXRfaXJxKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDo4OTpzdGF0aWMgaW5saW5lIHZvaWQgbW04MXhfcmVsZWFzZV9idXMoc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC05MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC05My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6OTQ6c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgbW04MXhfYnVzX2dldF9hbGlnbm1lbnQoc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC05NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM9Mjc9c3RydWN0IGhvc3RfY21kX3Jlc3BfY2Ige1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MzM6c3RhdGljIGludCBtbTgxeF9jbWRfdHgoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM0LVx0XHRcdHN0cnVjdCBob3N0X2NtZF9yZXEgKnJlcSwgdTMyIGxlbmd0aCwgdTMyIHRpbWVvdXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDEtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDI6XHRzdHJ1Y3QgbW04MXhfc2ticSAqY21kX3EgPSBtbTgxeF9oaWZfZ2V0X3R4X2NtZF9xdWV1ZShtb3JzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQzLVx0c3RydWN0IGhvc3RfY21kX3Jlc3BfY2IgKnJlc3BfY2I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1ODpcdG1tODF4X3BzX2Rpc2FibGUobW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy02Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjYzOlx0XHRza2IgPSBtbTgxeF9za2JxX2FsbG9jX3NrYihjbWRfcSwgY21kX2xlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy02NC1cdFx0aWYgKCFza2IpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy04My1cdFx0dGltZW91dCA9IHRpbWVvdXQgPyB0aW1lb3V0IDogSE9TVF9DTURfREVGQVVMVF9USU1FT1VUX01TO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6ODQ6XHRcdHJldCA9IG1tODF4X3NrYnFfc2tiX3R4KGNtZF9xLCBcdTAwMjZza2IsIE5VTEwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy04NS1cdFx0XHRcdFx0TU04MVhfU0tCX0NIQU5fQ09NTUFORCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtODgtXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjg5Olx0XHRcdGRldl9lcnIobW9ycy1cdTAwM2VkZXYsIFwmIzM0O21tODF4X3NrYnFfdHggZmFpbDogJWRcJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy05MC1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xMjEtXHRcdHNwaW5fbG9ja19iaChcdTAwMjZjbWRfcS1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjEyMjpcdFx0bW04MXhfc2ticV9za2JfZmluaXNoKGNtZF9xLCBza2IsIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTIzLVx0XHRzcGluX3VubG9ja19iaChcdTAwMjZjbWRfcS1cdTAwM2Vsb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoxMjk6XHRtbTgxeF9wc19lbmFibGUobW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xMzAtXHRtdXRleF91bmxvY2soXHUwMDI2bW9ycy1cdTAwM2VjbWRfd2FpdCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTQ2OmludCBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE0Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNDgtXHRpbnQgbGVuZ3RoLCByZXQgPSAtRVNSQ0g7IC8qIE5vIHN1Y2ggcHJvY2VzcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTQ5Olx0c3RydWN0IG1tODF4X3NrYnEgKmNtZF9xID0gbW04MXhfaGlmX2dldF90eF9jbWRfcXVldWUobW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNTAtXHRzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqc3JjX3Jlc3AgPSAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKikoc2tiLVx1MDAzZWRhdGEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE2My1cdGlmICghSE9TVF9DTURfSVNfUkVTUChzcmNfcmVzcCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjE2NDpcdFx0cmV0ID0gbW04MXhfbWFjX2V2ZW50X3JlY3YobW9ycywgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE2NS1cdFx0Z290byBleGl0X2ZyZWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTcwOlx0Y21kX3NrYiA9IG1tODF4X3NrYnFfdHhfcGVuZGluZyhjbWRfcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNzEtXHRpZiAoY21kX3NrYikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTcyOlx0XHRtbTgxeF9za2JxX3B1bGxfaGRyX3Bvc3RfdHgoY21kX3NrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNzMtXHRcdHJlcSA9IChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopY21kX3NrYi1cdTAwM2VkYXRhO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTIzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjIzMjppbnQgbW04MXhfY21kX3N0YV9zdGF0ZShzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF92aWYgKm1vcnNfdmlmLCB1MTYgYWlkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjMzLVx0XHRcdHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjQ2Olx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgMCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNDctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjQ5OmludCBtbTgxeF9jbWRfYWRkX2lmKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2ICp2aWZfaWQsIGNvbnN0IHU4ICphZGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjUwLVx0XHQgICAgIGVudW0gbmw4MDIxMV9pZnR5cGUgdHlwZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyNzE6XHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXHUwMDI2cmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI3Mi1cdFx0XHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyNzk6aW50IG1tODF4X2NtZF9nZXRfY2FwYWJpbGl0aWVzKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2IHZpZl9pZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjI4MDpcdFx0XHQgICAgICAgc3RydWN0IG1tODF4X2Z3X2NhcHMgKmNhcGFiaWxpdGllcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI4MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6Mjg5Olx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIChzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqKVx1MDAyNnJzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI5MC1cdFx0XHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgc2l6ZW9mKHJzcCksIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI5NC1cdGNhcGFiaWxpdGllcy1cdTAwM2VhbXBkdV9tc3MgPSByc3AuY2FwYWJpbGl0aWVzLmFtcGR1X21zcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjI5NTpcdGNhcGFiaWxpdGllcy1cdTAwM2VtbTgxeF9tbXNzX29mZnNldCA9IHJzcC5tb3JzZV9tbXNzX29mZnNldDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI5Ni1cdGNhcGFiaWxpdGllcy1cdTAwM2ViZWFtZm9ybWVlX3N0c19jYXBhYmlsaXR5ID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozMDg6aW50IG1tODF4X2NtZF9nZXRfbWF4X3R4cG93ZXIoc3RydWN0IG1tODF4ICptb3JzLCBzMzIgKm91dF9wb3dlcl9tYm0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMDkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMxNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjMxNjpcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilcdTAwMjZyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzE3LVx0XHRcdCAgIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjMyNDppbnQgbW04MXhfY21kX2h3X3NjYW4oc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfaHdfc2Nhbl9wYXJhbXMgKnBhcmFtcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMyNS1cdFx0ICAgICAgYm9vbCBzdG9yZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozMzM6XHRjbWRfc2l6ZSA9IG1tODF4X2h3X3NjYW5faF9nZXRfY21kX3NpemUocGFyYW1zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMzNC1cdGNtZF9zaXplID0gUk9VTkRfQllURVNfVE9fV09SRChjbWRfc2l6ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzUyLVx0XHRyZXEtXHUwMDNlZHdlbGxfdGltZV9tcyA9IGNwdV90b19sZTMyKHBhcmFtcy1cdTAwM2Vkd2VsbF90aW1lX21zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjM1MzpcdFx0YnVmID0gbW04MXhfaHdfc2Nhbl9oX2luc2VydF90bHZzKHBhcmFtcywgYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM1NC1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNTgtXHRyZXEtXHUwMDNlaGRyLmxlbiA9IGNwdV90b19sZTE2KCh1MTYpKChidWYgLSAodTggKilyZXEpIC0gc2l6ZW9mKHJlcS1cdTAwM2VoZHIpKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozNTk6XHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilyZXEsIDAsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzYwLVx0a2ZyZWUocmVxKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozNjU6aW50IG1tODF4X2NtZF9zZXRfdHhwb3dlcihzdHJ1Y3QgbW04MXggKm1vcnMsIHMzMiAqb3V0X3Bvd2VyX21ibSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM2Ni1cdFx0XHQgIGludCB0eHBvd2VyX21ibSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozNzU6XHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXHUwMDI2cmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM3Ni1cdFx0XHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozODM6aW50IG1tODF4X2NtZF9zZXRfY2hhbm5lbChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBvcF9jaGFuX2ZyZXFfaHosXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zODQtXHRcdFx0ICB1OCBwcmlfMW1oel9jaGFuX2lkeCwgdTggb3BfYndfbWh6LCB1OCBwcmlfYndfbWh6LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjM5ODpcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilcdTAwMjZyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzk5LVx0XHRcdCAgIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjQwNjppbnQgbW04MXhfY21kX2Rpc2FibGVfa2V5KHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00MDctXHRcdFx0ICB1MTYgYWlkLCBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDE5Olx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgMCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00MjAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDIyOmludCBtbTgxeF9jbWRfaW5zdGFsbF9rZXkoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQyMy1cdFx0XHQgIHUxNiBhaWQsIHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00NDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0NDY6XHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXHUwMDI2cmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ0Ny1cdFx0XHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00NTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0NTc6aW50IG1tODF4X2NtZF9jZmdfbXVsdGljYXN0X2ZpbHRlcihzdHJ1Y3QgbW04MXggKm1vcnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0NTg6XHRcdFx0XHQgICBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ1OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDc1Olx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopcmVxLCAwLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ3Ni1cdGtmcmVlKHJlcSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDgwOmludCBtbTgxeF9jbWRfY2ZnX2JzcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHUxNiB2aWZfaWQsIHUxNiBiZWFjb25faW50LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDgxLVx0XHQgICAgICB1MTYgZHRpbV9wZXJpb2QsIHUzMiBjc3NpZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00ODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0OTA6XHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCAwLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ5MS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00OTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0OTM6aW50IG1tODF4X2NtZF9jb25maWdfYmVhY29uX3RpbWVyKHN0cnVjdCBtbTgxeCAqbW9ycywgdm9pZCAqbW04MXhfdmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDk0LVx0XHRcdFx0ICBib29sIGVuYWJsZWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00OTUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDk2Olx0c3RydWN0IG1tODF4X3ZpZiAqdmlmID0gbW04MXhfdmlmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDk3LVx0c3RydWN0IGhvc3RfY21kX3JlcV9ic3NfYmVhY29uX2NvbmZpZyByZXEgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTAzOlx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgMCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MDQtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTA1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTA2OmludCBtbTgxeF9jbWRfc2V0X3BzKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGVkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTA3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1MTM6XHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTE0LVx0XHRcdCAgICBIT1NUX0NNRF9QT1dFUlNBVkVfVElNRU9VVF9NUyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTE3OmludCBtbTgxeF9jbWRfY2ZnX3FvcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF9xdWV1ZV9wYXJhbXMgKnBhcmFtcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUxOC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTI5Olx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVx1MDAyNnJlcSwgMCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MzAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTMyOmludCBtbTgxeF9jbWRfcm1faWYoc3RydWN0IG1tODF4ICptb3JzLCB1MTYgdmlmX2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTMzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1Mzg6XHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXHUwMDI2cmVxLCAwLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUzOS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1NDE6aW50IG1tODF4X2NtZF9zZXRfZnJhZ190aHJlc2hvbGQoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgZnJhZ190aHJlc2hvbGQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NDIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjU1MDpcdHJldHVybiBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcdTAwMjZyZXEsIDAsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTUxLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU1Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjU1MzppbnQgbW04MXhfY21kX2dldF9kaXNhYmxlZF9jaGFubmVscyhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjU1NDpcdHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IGhvc3RfY21kX3Jlc3BfZ2V0X2Rpc2FibGVkX2NoYW5uZWxzICpyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTU1LVx0dWludCByZXNwX2xlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1NjE6XHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIChzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqKXJlc3AsIFx1MDAyNnJlcSwgcmVzcF9sZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NjItXHRcdFx0ICAgIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6MTk6c3RydWN0IG1tODF4X3F1ZXVlX3BhcmFtcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6MjE6ZW51bSBtbTgxeF9jbWRfcmV0dXJuX2NvZGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtMjItXHRNTTgxWF9SRVRfU1VDQ0VTUyA9IDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg9NDQ9c3RydWN0IGhvc3RfY21kX2V2ZW50IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC00OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjQ5OmludCBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo1MDppbnQgbW04MXhfY21kX2FkZF9pZihzdHJ1Y3QgbW04MXggKm1vcnMsIHUxNiAqdmlmX2lkLCBjb25zdCB1OCAqYWRkcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTUxLVx0XHQgICAgIGVudW0gbmw4MDIxMV9pZnR5cGUgdHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo1MjppbnQgbW04MXhfY21kX2dldF9jYXBhYmlsaXRpZXMoc3RydWN0IG1tODF4ICptb3JzLCB1MTYgdmlmX2lkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NTM6XHRcdFx0ICAgICAgIHN0cnVjdCBtbTgxeF9md19jYXBzICpjYXBhYmlsaXRpZXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NTQ6aW50IG1tODF4X2NtZF9jZmdfcW9zKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3F1ZXVlX3BhcmFtcyAqcGFyYW1zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjU1OmludCBtbTgxeF9jbWRfY29uZmlnX2JlYWNvbl90aW1lcihzdHJ1Y3QgbW04MXggKm1vcnMsIHZvaWQgKm1tODF4X3ZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTU2LVx0XHRcdFx0ICBib29sIGVuYWJsZWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NTc6aW50IG1tODF4X2NtZF9jZmdfYnNzKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2IHZpZl9pZCwgdTE2IGJlYWNvbl9pbnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC01OC1cdFx0ICAgICAgdTE2IGR0aW1fcGVyaW9kLCB1MzIgY3NzaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NTk6aW50IG1tODF4X2NtZF9zZXRfY2hhbm5lbChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBvcF9jaGFuX2ZyZXFfaHosXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC02MC1cdFx0XHQgIHU4IHByaV8xbWh6X2NoYW5faWR4LCB1OCBvcF9id19taHosIHU4IHByaV9id19taHosXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC02MS1cdFx0XHQgIHMzMiAqcG93ZXJfbWJtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjYyOmludCBtbTgxeF9jbWRfZ2V0X21heF90eHBvd2VyKHN0cnVjdCBtbTgxeCAqbW9ycywgczMyICpvdXRfcG93ZXJfbWJtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjYzOmludCBtbTgxeF9jbWRfc2V0X3R4cG93ZXIoc3RydWN0IG1tODF4ICptb3JzLCBzMzIgKm91dF9wb3dlcl9tYm0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC02NC1cdFx0XHQgIGludCB0eHBvd2VyX21ibSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo2NTppbnQgbW04MXhfY21kX2h3X3NjYW4oc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfaHdfc2Nhbl9wYXJhbXMgKnBhcmFtcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTY2LVx0XHQgICAgICBib29sIHN0b3JlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjY3OmludCBtbTgxeF9jbWRfc2V0X3BzKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGVkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjY4OmludCBtbTgxeF9jbWRfY2ZnX211bHRpY2FzdF9maWx0ZXIoc3RydWN0IG1tODF4ICptb3JzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6Njk6XHRcdFx0XHQgICBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo3MDppbnQgbW04MXhfY21kX3N0YV9zdGF0ZShzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF92aWYgKm1vcnNfdmlmLCB1MTYgYWlkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtNzEtXHRcdFx0c3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTcyLVx0XHRcdGVudW0gaWVlZTgwMjExX3N0YV9zdGF0ZSBzdGF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo3MzppbnQgbW04MXhfY21kX2luc3RhbGxfa2V5KHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC03NC1cdFx0XHQgIHUxNiBhaWQsIHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC03Ni1cdFx0XHQgIGVudW0gaG9zdF9jbWRfYWVzX2tleV9sZW4gbGVuZ3RoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjc3OmludCBtbTgxeF9jbWRfZGlzYWJsZV9rZXkoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTc4LVx0XHRcdCAgdTE2IGFpZCwgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjc5OmludCBtbTgxeF9jbWRfcm1faWYoc3RydWN0IG1tODF4ICptb3JzLCB1MTYgdmlmX2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjgwOmludCBtbTgxeF9jbWRfc2V0X2ZyYWdfdGhyZXNob2xkKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGZyYWdfdGhyZXNob2xkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjgxOmludCBtbTgxeF9jbWRfZ2V0X2Rpc2FibGVkX2NoYW5uZWxzKFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6ODI6XHRzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBob3N0X2NtZF9yZXNwX2dldF9kaXNhYmxlZF9jaGFubmVscyAqcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTgzLVx0dWludCByZXNwX2xlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMTpzdGF0aWMgaW50IG1tODF4X2NvcmVfYXR0YWNoX3JlZ3Moc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTU6XHRtbTgxeF9jbGFpbV9idXMobW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxNjpcdHJldCA9IG1tODF4X3JlZzMyX3JlYWQobW9ycywgTU04MTA4X1JFR19DSElQX0lELCBcdTAwMjZtb3JzLVx1MDAzZWNoaXBfaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTc6XHRtbTgxeF9yZWxlYXNlX2J1cyhtb3JzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTE4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTI2LVx0XHRtb3JzLVx1MDAzZXJlZ3MgPSBcdTAwMjZtbTgxMDhfcmVncztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjI3Olx0XHRtb3JzLVx1MDAzZWhpZi5vcHMgPSBcdTAwMjZtbTgxeF95YXBzX29wcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTI4LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0zNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjM2OnN0YXRpYyB2b2lkIG1tODF4X2NvcmVfaW5pdF9tYWNfYWRkcihzdHJ1Y3QgbW04MXggKm1vcnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0zNy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzozODpcdGludCByZXQgPSBtbTgxeF9od19vdHBfZ2V0X21hY19hZGRyKG1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMzktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo0NDpjaGFyICptbTgxeF9jb3JlX2dldF9md19wYXRoKHUzMiBjaGlwX2lkLCB1MzIgZndfdmVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNDUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTU4LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjU5OkVYUE9SVF9TWU1CT0xfR1BMKG1tODF4X2NvcmVfZ2V0X2Z3X3BhdGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo2MTpzdHJ1Y3QgbW04MXggKm1tODF4X2NvcmVfYWxsb2Moc2l6ZV90IHByaXZfc2l6ZSwgc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNjIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6NjM6XHRyZXR1cm4gbW04MXhfbWFjX2FsbG9jKHByaXZfc2l6ZSwgZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTY0LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjY1OkVYUE9SVF9TWU1CT0xfR1BMKG1tODF4X2NvcmVfYWxsb2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo2NzppbnQgbW04MXhfY29yZV9pbml0KHN0cnVjdCBtbTgxeCAqbW9ycylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTY4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy03My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjc0Olx0bW04MXhfY29yZV9pbml0X21hY19hZGRyKG1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo3NjpcdHJldCA9IG1tODF4X2NvcmVfYXR0YWNoX3JlZ3MobW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy03Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo5MDpcdHJldCA9IG1tODF4X2hpZl9pbml0KG1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtOTEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEwNS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMDY6RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9pbml0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjEwODppbnQgbW04MXhfY29yZV9yZWdpc3RlcihzdHJ1Y3QgbW04MXggKm1vcnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMDkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTEwOlx0cmV0dXJuIG1tODF4X21hY19yZWdpc3Rlcihtb3JzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTExMS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMTI6RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMTQ6dm9pZCBtbTgxeF9jb3JlX3VucmVnaXN0ZXIoc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTE1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjExNjpcdG1tODF4X21hY191bnJlZ2lzdGVyKG1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTE3LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjExODpFWFBPUlRfU1lNQk9MX0dQTChtbTgxeF9jb3JlX3VucmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTIwOnZvaWQgbW04MXhfY29yZV9kZWluaXQoc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTIxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjEyMjpcdG1tODF4X2hpZl9maW5pc2gobW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMjMtXHRmbHVzaF93b3JrcXVldWUobW9ycy1cdTAwM2VuZXRfd3EpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEyNy19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMjg6RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9kZWluaXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTMwOnZvaWQgbW04MXhfY29yZV9mcmVlKHN0cnVjdCBtbTgxeCAqbW9ycylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEzMS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMzI6XHRtbTgxeF9tYWNfZnJlZShtb3JzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEzMy19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMzQ6RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9mcmVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEzNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC01NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjU1OnN0cnVjdCBtbTgxeF9idXNfb3BzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6NTY6c3RydWN0IG1tODF4X2hpZl9vcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC01Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC02Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjYzOmVudW0gbW04MXhfY2Fwc19mbGFncyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC02NC1cdE1NODFYX0NBUFNfRldfU1RBUlQgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTEzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjEzMjpzdHJ1Y3QgbW04MXhfZndfY2FwcyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xMzMtXHR1MzIgZmxhZ3NbRldfQ0FQQUJJTElUSUVTX0ZMQUdTX1dJRFRIXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xMzctXHR1OCBtYXhpbXVtX2FtcGR1X2xlbmd0aF9leHBvbmVudDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjEzODpcdHU4IG1tODF4X21tc3Nfb2Zmc2V0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTM5LX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTQxLSNkZWZpbmUgTU04MVhfRldfU1VQUChNTTgxWF9DQVBTLCBDQVBBQklMSVRZKSBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTQyOlx0bW04MXhfY2Fwc19zdXBwb3J0ZWQoTU04MVhfQ0FQUywgTU04MVhfQ0FQU18jI0NBUEFCSUxJVFkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoxNDQ6c3RhdGljIGlubGluZSBib29sIG1tODF4X2NhcHNfc3VwcG9ydGVkKHN0cnVjdCBtbTgxeF9md19jYXBzICpjYXBzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTQ1Olx0XHRcdFx0XHRlbnVtIG1tODF4X2NhcHNfZmxhZ3MgZmxhZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE0Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTUyOnN0cnVjdCBtbTgxeF9wcyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xNTMtXHR1MzIgd2FrZXJzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjE2MTplbnVtIG1tODF4X3BhZ2VfYWNpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE2Mi1cdE1NODFYX0FDSV9CRSA9IDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTY4OmVudW0gbW04MXhfcW9zX3RpZF91cF9pbmRleCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xNjktXHRNTTgxWF9RT1NfVElEX1VQX0JLID0gMSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoxODI6c3RydWN0IG1tODF4X3N3X3ZlcnNpb24ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTgzLVx0dTggbWFqb3I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTg4OnN0cnVjdCBtbTgxeF9zdGEge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTg5LVx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xOTUtXHRpbnQgbWF4X2J3X21oejtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjE5NjpcdHN0cnVjdCBtbTgxeF9yY19zdGEgcmM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xOTctXHRzdHJ1Y3QgbW1yY19yYXRlIGxhc3Rfc3RhX3R4X3JhdGU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjAyOnN0cnVjdCBtbTgxeF92aWYge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjAzOlx0c3RydWN0IG1tODF4ICptb3JzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjA0LVx0dTE2IGlkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTIxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjIxNzpzdHJ1Y3QgbW04MXhfc3RhbGVfdHhfc3RhdHVzIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTIxOC1cdC8qIFN0YWxlIFR4IGxvY2sgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaD0yMjM9c3RydWN0IG1jYXN0X2ZpbHRlciB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjMzOmVudW0gbW04MXhfaHdfc2Nhbl9vcCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yMzQtXHRNTTgxWF9IV19TQ0FOX09QX1NUQVJULFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTIzNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjIzODpzdHJ1Y3QgbW04MXhfaHdfc2Nhbl9wYXJhbXMge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjM5LVx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjQ1LVx0dTMyIGR3ZWxsX29uX2hvbWVfbXM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyNDY6XHRlbnVtIG1tODF4X2h3X3NjYW5fb3Agb3BlcmF0aW9uO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjQ3LVx0Ym9vbCBzdG9yZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyNjI6ZW51bSBtbTgxeF9od19zY2FuX3N0YXRlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTI2My1cdEhXX1NDQU5fU1RBVEVfSURMRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyNjg6c3RydWN0IG1tODF4X2h3X3NjYW4ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjY5Olx0ZW51bSBtbTgxeF9od19zY2FuX3N0YXRlIHN0YXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjcwLVx0c3RydWN0IGNvbXBsZXRpb24gc2Nhbl9kb25lO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjcxOlx0c3RydWN0IG1tODF4X2h3X3NjYW5fcGFyYW1zICpwYXJhbXM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yNzItXHRzdHJ1Y3QgZGVsYXllZF93b3JrIHRpbWVvdXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6Mjc2OmVudW0gbW04MXhfaGlmX2V2ZW50X2ZsYWdzIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTI3Ny1cdE1NODFYX0hJRl9FVlRfUlhfUEVORCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyODk6ZW51bSBtbTgxeF9zdGF0ZV9mbGFncyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yOTAtXHRNTTgxWF9TVEFURV9DSElQX1VOUkVTUE9OU0lWRSxcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODkzOQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgSSBkZWx2ZSBpbnRvIHRoaXMgY29uZmlndXJhdGlvbjoKCioqSW52ZXN0aWdhdGluZyBVU0IgYW5kIFNESU8gU3VwcG9ydCB3aXRoaW4gdGhlIG1tODF4IFdpcmVsZXNzIERyaXZlcioqCgpPa2F5LCBzbyBJIHNlZSBgQ09ORklHX01NODFYX1VTQmAgYW5kIGBDT05GSUdfTU04MVhfU0RJT2AgYXJlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRpbWUgdG8gZGlnIGluLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc3RhdHVzIG9mIFVTQiBwcm9iaW5nLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBtbTgxeCBjaGlwc2V0LiBNeSBpbml0aWFsIHRhcmdldCBpcyB0aGUgc291cmNlIGNvZGUuIEkgd2lsbCBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuY2AgYW5kIGl0cyBhc3NvY2lhdGVkIGBLY29uZmlnYCBmaWxlLiBUaGUgYHVzYi5jYCBmaWxlIHNob3VsZCBjb250YWluIHRoZSBVU0Itc3BlY2lmaWMgZHJpdmVyIGNvZGUsIGFuZCB0aGUgYEtjb25maWdgIGZpbGUgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBJIHdpbGwgdXNlIHRoZSBgS2NvbmZpZ2AgZm9yIHRoZSBjb25maWd1cmF0aW9uIGZsYWdzIGZvciBwcm9iaW5nLiBCeSByZWZlcmVuY2luZyBib3RoIG9mIHRoZXNlIGZpbGVzLCBJIGNhbiB2ZXJpZnkgd2hldGhlciB0aGUgbW9kdWxlIHN1cHBvcnRzIFVTQiBhbmQgYXNjZXJ0YWluIGhvdyBpdOKAmXMgY29uZmlndXJlZCB0byBwcm9iZSBmb3IgVVNCIGRldmljZXMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbXBsZXRlIHBpY3R1cmUsIG5vdCBqdXN0IHRoZSBjb2RlLCBidXQgdGhlIGludGVudGlvbi4gVGhpcyB3aWxsIGxldCBtZSBhc3Nlc3Mgd2hhdOKAmXMgZ29pbmcgb24sIGFuZCBpZGVudGlmeSBpZiB0aGVyZSBpcyBhbiBpc3N1ZSB0byBhZGRyZXNzIGluIHRoaXMgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHRcbiAgIDM6XHRjb25maWcgTU04MVhcbiAgIDQ6XHRcdHRyaXN0YXRlIFwmIzM0O01vcnNlIE1pY3JvIE1NODF4IHdpcmVsZXNzIGRldmljZXNcJiMzNDsgaWYgQ09NUElMRV9URVNUXG4gICA1Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gICA2Olx0XHRzZWxlY3QgRldfTE9BREVSXG4gICA3Olx0XHRzZWxlY3QgQ1JDN1xuICAgODpcdFx0aGVscFxuICAgOTpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGRldmljZXMgYmFzZWRcbiAgMTA6XHRcdCAgb24gTW9yc2UgTWljcm8gTU04MXh4IGNoaXBzZXRzLlxuICAxMTpcdFxuICAxMjpcdGNvbmZpZyBNTTgxWF9VU0JcbiAgMTM6XHRcdHRyaXN0YXRlIFwmIzM0O01vcnNlIE1pY3JvIE1NODF4IFVTQiBzdXBwb3J0XCYjMzQ7XG4gIDE0Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExIFx1MDAyNlx1MDAyNiBVU0JcbiAgMTU6XHRcdHNlbGVjdCBNTTgxWFxuICAxNjpcdFx0aGVscFxuICAxNzpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHRoZSBVU0IgaW50ZXJmYWNlIG9mXG4gIDE4Olx0XHQgIGRldmljZXMgdXNpbmcgdGhlIE1vcnNlIE1pY3JvIE1NODF4IGNoaXBzZXQuXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIE1NODFYX1NESU9cbiAgMjE6XHRcdHRyaXN0YXRlIFwmIzM0O01vcnNlIE1pY3JvIE1NODF4IFNESU8gc3VwcG9ydFwmIzM0O1xuICAyMjpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcdTAwMjZcdTAwMjYgTU1DXG4gIDIzOlx0XHRzZWxlY3QgTU04MVhcbiAgMjQ6XHRcdGhlbHBcbiAgMjU6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciB0aGUgU0RJTyBpbnRlcmZhY2Ugb2ZcbiAgMjY6XHRcdCAgZGV2aWNlcyB1c2luZyB0aGUgTW9yc2UgTWljcm8gTU04MXggY2hpcHNldC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTY3NQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2U6CgoqKlVTQiBGdXp6aW5nLCBMZXQmIzM5O3MgRGl2ZSBEZWVwKioKClJpZ2h0LCBzbyBgTU04MVhfVVNCYCBpcyAqYWN0dWFsbHkqIGEgdGhpbmchIFN5emthbGxlciBpcyBoYW1tZXJpbmcgYXdheSBhdCBVU0IgZHJpdmVycyB1c2luZyBSYXcgR2FkZ2V0IGFuZCBVU0IgZW11bGF0aW9uLCB3aGljaCBpcyBmYXNjaW5hdGluZy4gVGhpcyBtZWFucyB3ZSYjMzk7dmUgZ290IGEgbmV3IGF2ZW51ZSBmb3IgdW5jb3ZlcmluZyB0aG9zZSBnbmFybHksIGhhcmQtdG8tZmluZCBidWdzLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBmb3IgbWUgaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBgbW04MXhgIHdpcmVsZXNzIGRyaXZlciBpbnRlcmZhY2VzIHdpdGggVVNCLiBJJiMzOTttIGhlYWRpbmcgc3RyYWlnaHQgZm9yIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jYC4gSSBuZWVkIHRvIHNlZSBleGFjdGx5IGhvdyBwYWNrZXRzIGFuZCBZQVBTIGFyZSBhY3R1YWxseSAqcmVhY2hlZCogdGhyb3VnaCB0aGlzIFVTQiBpbnRlcmZhY2UuIExldCYjMzk7cyBzZWUgaG93IHRoZSBtYWdpYyBoYXBwZW5zIGFuZCB3aGF0IGtpbmQgb2YgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyB3ZSBjYW4gc25pZmYgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3lhcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODgwIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlPTExPW1tODF4X2NvcmUteSAmIzQzOz0gc2ticS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjEyOm1tODF4X2NvcmUteSAmIzQzOz0geWFwc19ody5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjEzOm1tODF4X2NvcmUteSAmIzQzOz0geWFwcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlLTE0LW1tODF4X2NvcmUteSAmIzQzOz0gcmMub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jPTExPXN0YXRpYyBpbnQgbW04MXhfY29yZV9hdHRhY2hfcmVncyhzdHJ1Y3QgbW04MXggKm1vcnMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMjYtXHRcdG1vcnMtXHUwMDNlcmVncyA9IFx1MDAyNm1tODEwOF9yZWdzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6Mjc6XHRcdG1vcnMtXHUwMDNlaGlmLm9wcyA9IFx1MDAyNm1tODF4X3lhcHNfb3BzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMjgtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE4LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3dhaXQuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTk6I2luY2x1ZGUgXCYjMzQ7eWFwcy5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyMDojaW5jbHVkZSBcJiMzNDt5YXBzX2h3LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTIxLSNpbmNsdWRlIFwmIzM0O2h3LmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaD0zMDM9c3RydWN0IG1tODF4IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0zNDctXHRcdHVuaW9uIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjM0ODpcdFx0XHRzdHJ1Y3QgbW04MXhfeWFwcyB5YXBzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMzQ5LVx0XHR9IHU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5jPTU0Nj1pbnQgbW04MXhfZndfcGFyc2VfZXh0X2hvc3RfdGJsKHN0cnVjdCBtbTgxeCAqbW9ycylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3LmMtNTc4LVx0XHRjYXNlIE1NODFYX0ZXX0hPU1RfVEFCTEVfVEFHX1lBUFNfVEFCTEU6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3LmM6NTc5Olx0XHRcdG1tODF4X3lhcHNfaHdfcmVhZF90YWJsZShcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvZncuYzo1ODA6XHRcdFx0XHRtb3JzLCBcdTAwMjYoKHN0cnVjdCBleHRfaG9zdF90YmxfeWFwc190YWJsZSAqKWhkcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvZncuYzo1ODE6XHRcdFx0XHRcdCAgICAgICAtXHUwMDNleWFwc190YWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3LmMtNTgyLVx0XHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvZncuaC0xMi0jaW5jbHVkZSBcJiMzNDtjb21tYW5kX2RlZnMuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5oOjEzOiNpbmNsdWRlIFwmIzM0O3lhcHNfaHcuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5oLTE0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvZncuaD0xMjQ9c3RydWN0IGV4dF9ob3N0X3RibF9pbnNlcnRfc2tiX2NoZWNrc3VtIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3LmgtMTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5oOjEyOTpzdHJ1Y3QgZXh0X2hvc3RfdGJsX3lhcHNfdGFibGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5oLTEzMC1cdHN0cnVjdCBleHRfaG9zdF90YmxfdGx2X2hkciBoZWFkZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3Lmg6MTMxOlx0c3RydWN0IG1tODF4X3lhcHNfaHdfdGFibGUgeWFwc190YWJsZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvZncuaC0xMzItfSBfX3BhY2tlZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2h3LmMtMTUtI2luY2x1ZGUgXCYjMzQ7ZncuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9ody5jOjE2OiNpbmNsdWRlIFwmIzM0O3lhcHMuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9ody5jLTE3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MjM6c3RhdGljIGludCBtbTgxeF95YXBzX2FsbG9jX3BrdF9idWZmZXJzKHN0cnVjdCBtbTgxeF95YXBzICp5YXBzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MjU6XHR5YXBzLVx1MDAzZWh3LnRvX2NoaXBfcGt0cyA9IGtjYWxsb2MoTUFYX1BLVFNfUEVSX1RYX1RYTixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjI2Olx0XHRcdFx0XHRzaXplb2YoKnlhcHMtXHUwMDNlaHcudG9fY2hpcF9wa3RzKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTI3LVx0XHRcdFx0XHRHRlBfS0VSTkVMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjI4Olx0aWYgKCF5YXBzLVx1MDAzZWh3LnRvX2NoaXBfcGt0cylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTI5LVx0XHRyZXR1cm4gLUVOT01FTTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MzE6XHR5YXBzLVx1MDAzZWh3LmZyb21fY2hpcF9wa3RzID0ga2NhbGxvYyhNQVhfUEtUU19QRVJfUlhfVFhOLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MzI6XHRcdFx0XHRcdCAgc2l6ZW9mKCp5YXBzLVx1MDAzZWh3LmZyb21fY2hpcF9wa3RzKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTMzLVx0XHRcdFx0XHQgIEdGUF9LRVJORUwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MzQ6XHRpZiAoIXlhcHMtXHUwMDNlaHcuZnJvbV9jaGlwX3BrdHMpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjM1Olx0XHRrZnJlZSh5YXBzLVx1MDAzZWh3LnRvX2NoaXBfcGt0cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozNjpcdFx0eWFwcy1cdTAwM2Vody50b19jaGlwX3BrdHMgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzctXHRcdHJldHVybiAtRU5PTUVNO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDM6c3RhdGljIHZvaWQgbW04MXhfeWFwc19mcmVlX3BrdF9idWZmZXJzKHN0cnVjdCBtbTgxeF95YXBzICp5YXBzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDU6XHRrZnJlZSh5YXBzLVx1MDAzZWh3LmZyb21fY2hpcF9wa3RzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjQ2Olx0eWFwcy1cdTAwM2Vody5mcm9tX2NoaXBfcGt0cyA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0NzpcdGtmcmVlKHlhcHMtXHUwMDNlaHcudG9fY2hpcF9wa3RzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjQ4Olx0eWFwcy1cdTAwM2Vody50b19jaGlwX3BrdHMgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1MTpzdGF0aWMgaW50IG1tODF4X3lhcHNfd3JpdGVfcGt0cyhzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjUyOlx0XHRcdFx0IHN0cnVjdCBtbTgxeF95YXBzX3BrdCAqcGt0cywgaW50IG51bV9wa3RzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTMtXHRcdFx0XHQgaW50ICpudW1fcGt0c19zZW50KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTU6XHRyZXR1cm4geWFwcy1cdTAwM2VvcHMtXHUwMDNld3JpdGVfcGt0cyh5YXBzLCBwa3RzLCBudW1fcGt0cywgbnVtX3BrdHNfc2VudCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01Ni19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU4OnN0YXRpYyBpbnQgbW04MXhfeWFwc19yZWFkX3BrdHMoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1OTpcdFx0XHRcdHN0cnVjdCBtbTgxeF95YXBzX3BrdCAqcGt0cywgaW50IG51bV9wa3RzX21heCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTYwLVx0XHRcdFx0aW50ICpudW1fcGt0c19yZWNlaXZlZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTYxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjYyOlx0cmV0dXJuIHlhcHMtXHUwMDNlb3BzLVx1MDAzZXJlYWRfcGt0cyh5YXBzLCBwa3RzLCBudW1fcGt0c19tYXgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02My1cdFx0XHRcdCAgICBudW1fcGt0c19yZWNlaXZlZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2NjpzdGF0aWMgaW50IG1tODF4X3lhcHNfdXBkYXRlX3N0YXR1cyhzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY4Olx0cmV0dXJuIHlhcHMtXHUwMDNlb3BzLVx1MDAzZXVwZGF0ZV9zdGF0dXMoeWFwcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02OS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy03MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjcxOi8qIE1hcHBpbmdzIGJldHdlZW4gc2tfYnVmZiwgc2ticSBhbmQgeWFwcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NzI6c3RhdGljIHN0cnVjdCBtbTgxeF9za2JxICptbTgxeF95YXBzX3RjX3FfZnJvbV9hY2koc3RydWN0IG1tODF4ICptb3JzLCBpbnQgYWNpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNzMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NzQ6XHRzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcyA9IFx1MDAyNm1vcnMtXHUwMDNlaGlmLnUueWFwcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NzY6XHRpZiAoYWNpIFx1MDAzZT0gQVJSQVlfU0laRSh5YXBzLVx1MDAzZWRhdGFfdHhfcXMpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNzctXHRcdHJldHVybiBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6Nzg6XHRyZXR1cm4gXHUwMDI2eWFwcy1cdTAwM2VkYXRhX3R4X3FzW2FjaV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy03OS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy04MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjgxOnN0YXRpYyB2b2lkIG1tODF4X3lhcHNfZ2V0X3R4X3FzKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3NrYnEgKipxcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTgyLVx0XHRcdFx0IGludCAqbnVtX3FzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtODMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6ODQ6XHQqcXMgPSBtb3JzLVx1MDAzZWhpZi51LnlhcHMuZGF0YV90eF9xcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTg1LVx0Km51bV9xcyA9IFlBUFNfVFhfU0tCUV9NQVg7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo4ODpzdGF0aWMgc3RydWN0IG1tODF4X3NrYnEgKm1tODF4X3lhcHNfZ2V0X2Jjbl90Y19xKHN0cnVjdCBtbTgxeCAqbW9ycylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTg5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjkwOlx0cmV0dXJuIFx1MDAyNm1vcnMtXHUwMDNlaGlmLnUueWFwcy5iZWFjb25fcTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTkxLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6OTM6c3RhdGljIHN0cnVjdCBtbTgxeF9za2JxICptbTgxeF95YXBzX2dldF9tZ210X3RjX3Eoc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtOTQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6OTU6XHRyZXR1cm4gXHUwMDI2bW9ycy1cdTAwM2VoaWYudS55YXBzLm1nbXRfcTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTk2LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6OTg6c3RhdGljIHN0cnVjdCBtbTgxeF9za2JxICptbTgxeF95YXBzX2dldF90eF9jbWRfcXVldWUoc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtOTkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MTAwOlx0cmV0dXJuIFx1MDAyNm1vcnMtXHUwMDNlaGlmLnUueWFwcy5jbWRfcTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTEwMS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMDM6c3RhdGljIGludCBtbTgxeF95YXBzX2lycV9oYW5kbGVyKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIHN0YXR1cylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTEwNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMTA4LVx0aWYgKHN0YXR1cyBcdTAwMjYgQklUKE1NODFYX0lOVF9ZQVBTX0ZDX1BBQ0tFVF9GUkVFRF9VUF9JUlFOKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MTA5Olx0XHR0aW1lcl9kZWxldGVfc3luY190cnkoXHUwMDI2bW9ycy1cdTAwM2VoaWYudS55YXBzLmNoaXBfcXVldWVfZnVsbC50aW1lcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xMTAtXHRcdHNldF9iaXQoTU04MVhfSElGX0VWVF9UWF9QQUNLRVRfRlJFRURfVVBfUEVORCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMTg6Y29uc3Qgc3RydWN0IG1tODF4X2hpZl9vcHMgbW04MXhfeWFwc19vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMTk6XHQuaW5pdCA9IG1tODF4X3lhcHNfaW5pdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjEyMDpcdC5mbHVzaF90eF9kYXRhID0gbW04MXhfeWFwc19mbHVzaF90eF9kYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MTIxOlx0LmZsdXNoX2NtZHMgPSBtbTgxeF95YXBzX2ZsdXNoX2NtZHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMjI6XHQuZ2V0X3R4X3N0YXR1c19wZW5kaW5nX2NvdW50ID0gbW04MXhfeWFwc19nZXRfdHhfc3RhdHVzX3BlbmRpbmdfY291bnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMjM6XHQuZ2V0X3R4X2J1ZmZlcmVkX2NvdW50ID0gbW04MXhfeWFwc19nZXRfdHhfYnVmZmVyZWRfY291bnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMjQ6XHQuZmluaXNoID0gbW04MXhfeWFwc19maW5pc2gsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMjU6XHQuc2ticV9nZXRfdHhfcXMgPSBtbTgxeF95YXBzX2dldF90eF9xcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjEyNjpcdC5nZXRfdHhfYmVhY29uX3F1ZXVlID0gbW04MXhfeWFwc19nZXRfYmNuX3RjX3EsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMjc6XHQuZ2V0X3R4X21nbXRfcXVldWUgPSBtbTgxeF95YXBzX2dldF9tZ210X3RjX3EsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMjg6XHQuZ2V0X3R4X2NtZF9xdWV1ZSA9IG1tODF4X3lhcHNfZ2V0X3R4X2NtZF9xdWV1ZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjEyOTpcdC5nZXRfdHhfZGF0YV9xdWV1ZSA9IG1tODF4X3lhcHNfdGNfcV9mcm9tX2FjaSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjEzMDpcdC5oYW5kbGVfaXJxID0gbW04MXhfeWFwc19pcnFfaGFuZGxlclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMTMxLX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMzM6c3RhdGljIGludCBtbTgxeF95YXBzX3JlYWRfcGt0KHN0cnVjdCBtbTgxeF95YXBzICp5YXBzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMTM0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjEzNTpcdHN0cnVjdCBtbTgxeCAqbW9ycyA9IHlhcHMtXHUwMDNlbW9ycztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTEzNi1cdHN0cnVjdCBza19idWZmX2hlYWQgc2ticTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxNTg6XHRpZiAoeWFwcy1cdTAwM2Vtb3JzLVx1MDAzZWhpZi52YWxpZGF0ZV9za2JfY2hlY2tzdW0gXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xNTktXHQgICAgIW1tODF4X3NrYnFfdmFsaWRhdGVfY2hlY2tzdW0oc2tiLVx1MDAzZWRhdGEpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxNjA6XHRcdGRldl9kYmcoeWFwcy1cdTAwM2Vtb3JzLVx1MDAzZWRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTE2MS1cdFx0XHRcJiMzNDtTS0IgY2hlY2tzdW0gaXMgaW52YWxpZCBoZHI6W2M6JTAyWCBzOiUwMlggbGVuOiVkXVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xNzYtXHRjYXNlIE1NODFYX1NLQl9DSEFOX01HTVQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxNzc6XHRcdG1xID0gXHUwMDI2eWFwcy1cdTAwM2VkYXRhX3J4X3E7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xNzgtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMTc5LVx0Y2FzZSBNTTgxWF9TS0JfQ0hBTl9DT01NQU5EOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MTgwOlx0XHRtcSA9IFx1MDAyNnlhcHMtXHUwMDNlY21kX3Jlc3BfcTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTE4MS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MjI2OnN0YXRpYyBpbnQgbW04MXhfeWFwc190eChzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcywgc3RydWN0IG1tODF4X3NrYnEgKm1xKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjI3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0yMzctXHRzdHJ1Y3Qgc2tfYnVmZiAqcGZpcnN0LCAqcG5leHQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoyMzg6XHRzdHJ1Y3QgbW04MXggKm1vcnMgPSB5YXBzLVx1MDAzZW1vcnM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0yMzktXHRzdHJ1Y3QgbW04MXhfc2tiX2hkciAqaGRyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTI1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjI1MjpcdGlmIChtcSA9PSBcdTAwMjZ5YXBzLVx1MDAzZWNtZF9xKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjUzLVx0XHQvKiBQdXJnZSB0aW1lZC1vdXQgY29tbWFuZHMgKHRoaXMgc2hvdWxkIG5vdCBoYXBwZW4pICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0yNTQtXHRcdG1tODF4X3NrYnFfcHVyZ2UobXEsIFx1MDAyNm1xLVx1MDAzZXBlbmRpbmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MjU1Olx0ZWxzZSBpZiAobXEgPT0gXHUwMDI2eWFwcy1cdTAwM2VtZ210X3EgXHUwMDI2XHUwMDI2IHNrYl9xdWV1ZV9sZW4oXHUwMDI2bXEtXHUwMDNlc2ticSkgXHUwMDNlIDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0yNTYtXHRcdC8qXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjY1LVx0c2tiX3F1ZXVlX3dhbGtfc2FmZShcdTAwMjZza2JxX3RvX3NlbmQsIHBmaXJzdCwgcG5leHQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjI2NjpcdFx0ZW51bSBtbTgxeF95YXBzX3RvX2NoaXBfcSB0Y19xdWV1ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTI2Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0yODItXHRcdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjI4MzpcdFx0eWFwcy1cdTAwM2Vody50b19jaGlwX3BrdHNbdGNfcGt0X2lkeF0udGNfcXVldWUgPSB0Y19xdWV1ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjI4NDpcdFx0eWFwcy1cdTAwM2Vody50b19jaGlwX3BrdHNbdGNfcGt0X2lkeF0uc2tiID0gcGZpcnN0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjg1LVx0XHR0Y19wa3RfaWR4JiM0MzsmIzQzOztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0yODgtXHQvKiBTZW5kIHF1ZXVlZCBwYWNrZXRzIHRvIGNoaXAgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjI4OTpcdHJldCA9IG1tODF4X3lhcHNfdXBkYXRlX3N0YXR1cyh5YXBzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTI5MC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MjkzOlx0cmV0ID0gbW04MXhfeWFwc193cml0ZV9wa3RzKHlhcHMsIHlhcHMtXHUwMDNlaHcudG9fY2hpcF9wa3RzLCB0Y19wa3RfaWR4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjk0LVx0XHRcdFx0ICAgIFx1MDAyNm51bV9wa3RzX3NlbnQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTMyNC0vKiBSZXR1cm5zIHRydWUgaWYgdGhlcmUgYXJlIFRYIGRhdGEgcGFnZXMgd2FpdGluZyB0byBiZSBzZW50ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozMjU6c3RhdGljIGJvb2wgbW04MXhfeWFwc190eF9kYXRhX2hhbmRsZXIoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zMjYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTMyOC1cdHUzMiBjb3VudCA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozMjk6XHRzdHJ1Y3QgbW04MXggKm1vcnMgPSB5YXBzLVx1MDAzZW1vcnM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zMzEtXHRmb3IgKGFjaSA9IE1NODFYX0FDSV9WTzsgYWNpIFx1MDAzZT0gMDsgYWNpLS0pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjMzMjpcdFx0c3RydWN0IG1tODF4X3NrYnEgKmRhdGFfcSA9IG1tODF4X3lhcHNfdGNfcV9mcm9tX2FjaShtb3JzLCBhY2kpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzMzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTMzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjMzNzpcdFx0eWFwcy1cdTAwM2VjaGlwX3F1ZXVlX2Z1bGwuaXNfZnVsbCA9IG1tODF4X3lhcHNfdHgoeWFwcywgZGF0YV9xKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTMzOC1cdFx0Y291bnQgJiM0Mzs9IG1tODF4X3NrYnFfY291bnQoZGF0YV9xKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTMzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjM0MDpcdFx0aWYgKHlhcHMtXHUwMDNlY2hpcF9xdWV1ZV9mdWxsLmlzX2Z1bGwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zNDEtXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzU3LS8qIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgY29tbWFuZHMgd2FpdGluZyB0byBiZSBzZW50ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozNTg6c3RhdGljIGJvb2wgbW04MXhfeWFwc190eF9jbWRfaGFuZGxlcihzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTM1OS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozNjA6XHRzdHJ1Y3QgbW04MXhfc2ticSAqY21kX3EgPSBcdTAwMjZ5YXBzLVx1MDAzZWNtZF9xO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzYxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MzYyOlx0bW04MXhfeWFwc190eCh5YXBzLCBjbWRfcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zNjMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MzY3OnN0YXRpYyBib29sIG1tODF4X3lhcHNfdHhfYmVhY29uX2hhbmRsZXIoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zNjgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MzY5Olx0c3RydWN0IG1tODF4X3NrYnEgKmJlYWNvbl9xID0gXHUwMDI2eWFwcy1cdTAwM2ViZWFjb25fcTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTM3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjM3MTpcdG1tODF4X3lhcHNfdHgoeWFwcywgYmVhY29uX3EpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzcyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTM3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjM3NjpzdGF0aWMgYm9vbCBtbTgxeF95YXBzX3R4X21nbXRfaGFuZGxlcihzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTM3Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozNzg6XHRzdHJ1Y3QgbW04MXhfc2ticSAqbWdtdF9xID0gXHUwMDI2eWFwcy1cdTAwM2VtZ210X3E7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zNzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozODA6XHRtbTgxeF95YXBzX3R4KHlhcHMsIG1nbXRfcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zODEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzg1LS8qIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgcG9wdWxhdGVkIFJYIHBhZ2VzIGxlZnQgaW4gdGhlIGRldmljZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6Mzg2OnN0YXRpYyBib29sIG1tODF4X3lhcHNfcnhfaGFuZGxlcihzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTM4Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MzkyOlx0cmV0ID0gbW04MXhfeWFwc191cGRhdGVfc3RhdHVzKHlhcHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzkzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozOTY6XHRyZXQgPSBtbTgxeF95YXBzX3JlYWRfcGt0cyh5YXBzLCB5YXBzLVx1MDAzZWh3LmZyb21fY2hpcF9wa3RzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzk3LVx0XHRcdFx0ICAgTUFYX1BLVFNfUEVSX1JYX1RYTiwgXHUwMDI2bnVtX3Brc19yZWNlaXZlZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zOTgtXHRpZiAocmV0IFx1MDAyNlx1MDAyNiByZXQgIT0gLUVBR0FJTikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6Mzk5Olx0XHRkZXZfZXJyKHlhcHMtXHUwMDNlbW9ycy1cdTAwM2VkZXYsIFwmIzM0O1lBUFMgcmVhZF9wa3RzIGZhaWw6ICVkXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDAwLVx0XHRnb3RvIGV4aXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDAzLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnVtX3Brc19yZWNlaXZlZDsgJiM0MzsmIzQzO2kpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjQwNDpcdFx0bW04MXhfeWFwc19yZWFkX3BrdCh5YXBzLCB5YXBzLVx1MDAzZWh3LmZyb21fY2hpcF9wa3RzW2ldLnNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0MDU6XHRcdHlhcHMtXHUwMDNlaHcuZnJvbV9jaGlwX3BrdHNbaV0uc2tiID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTQwNi1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00MTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0MTU6dm9pZCBtbTgxeF95YXBzX3N0YWxlX3R4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDE2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00MTktXHRzdHJ1Y3QgbW04MXggKm1vcnMgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG1tODF4LCB0eF9zdGFsZV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjQyMDpcdHN0cnVjdCBtbTgxeF95YXBzICp5YXBzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDIyOlx0eWFwcyA9IFx1MDAyNm1vcnMtXHUwMDNlaGlmLnUueWFwcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjQyMzpcdGZsdXNoZWQgJiM0Mzs9IG1tODF4X3NrYnFfY2hlY2tfZm9yX3N0YWxlX3R4KG1vcnMsIFx1MDAyNnlhcHMtXHUwMDNlYmVhY29uX3EpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDI0Olx0Zmx1c2hlZCAmIzQzOz0gbW04MXhfc2ticV9jaGVja19mb3Jfc3RhbGVfdHgobW9ycywgXHUwMDI2eWFwcy1cdTAwM2VtZ210X3EpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDI2Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRSh5YXBzLVx1MDAzZWRhdGFfdHhfcXMpOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTQyNy1cdFx0Zmx1c2hlZCAmIzQzOz0gbW04MXhfc2ticV9jaGVja19mb3Jfc3RhbGVfdHgobW9ycyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjQyODpcdFx0XHRcdFx0XHRcdCBcdTAwMjZ5YXBzLVx1MDAzZWRhdGFfdHhfcXNbaV0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDI5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTQzNS1cdGlmIChtb3JzLVx1MDAzZXBzLmVuYWJsZSBcdTAwMjZcdTAwMjYgIW1vcnMtXHUwMDNlcHMuc3VzcGVuZGVkIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDM2Olx0ICAgIChtbTgxeF95YXBzX2dldF90eF9idWZmZXJlZF9jb3VudChtb3JzKSA9PSAwKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDM3LVx0XHQvKiBFdmFsdWF0ZSBwcyB0byBjaGVjayBpZiBpdCB3YXMgZ2F0ZWQgb24gYSBzdGFsZSB0eCBzdGF0dXMgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00NDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0NDM6dm9pZCBtbTgxeF95YXBzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDQ0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00NDYtXHR1bnNpZ25lZCBsb25nICpmbGFncyA9IFx1MDAyNm1vcnMtXHUwMDNlaGlmLmV2ZW50X2ZsYWdzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDQ3Olx0c3RydWN0IG1tODF4X3lhcHMgKnlhcHMgPSBcdTAwMjZtb3JzLVx1MDAzZWhpZi51LnlhcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00NDgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDY0LVx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChNTTgxWF9ISUZfRVZUX1JYX1BFTkQsIGZsYWdzKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDY1Olx0XHRpZiAobW04MXhfeWFwc19yeF9oYW5kbGVyKHlhcHMpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDY2LVx0XHRcdHNldF9iaXQoTU04MVhfSElGX0VWVF9SWF9QRU5ELCBmbGFncyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDcwLVx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChNTTgxWF9ISUZfRVZUX1RYX0NPTU1BTkRfUEVORCwgZmxhZ3MpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0NzE6XHRcdGlmIChtbTgxeF95YXBzX3R4X2NtZF9oYW5kbGVyKHlhcHMpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDcyLVx0XHRcdHNldF9iaXQoTU04MVhfSElGX0VWVF9UWF9DT01NQU5EX1BFTkQsIGZsYWdzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00NzYtXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE1NODFYX0hJRl9FVlRfVFhfQkVBQ09OX1BFTkQsIGZsYWdzKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDc3Olx0XHRpZiAobW04MXhfeWFwc190eF9iZWFjb25faGFuZGxlcih5YXBzKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTQ3OC1cdFx0XHRzZXRfYml0KE1NODFYX0hJRl9FVlRfVFhfQkVBQ09OX1BFTkQsIGZsYWdzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00ODItXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE1NODFYX0hJRl9FVlRfVFhfTUdNVF9QRU5ELCBmbGFncykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjQ4MzpcdFx0aWYgKG1tODF4X3lhcHNfdHhfbWdtdF9oYW5kbGVyKHlhcHMpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDg0LVx0XHRcdHNldF9iaXQoTU04MVhfSElGX0VWVF9UWF9NR01UX1BFTkQsIGZsYWdzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00OTktXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE1NODFYX0hJRl9FVlRfVFhfUEFDS0VUX0ZSRUVEX1VQX1BFTkQsIGZsYWdzKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjUwMDpcdFx0eWFwcy1cdTAwM2VjaGlwX3F1ZXVlX2Z1bGwuaXNfZnVsbCA9IGZhbHNlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTAxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTUwNC1cdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTA1Olx0aWYgKHlhcHMtXHUwMDNlY2hpcF9xdWV1ZV9mdWxsLmlzX2Z1bGwgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1MDY6XHQgICAgdGltZV9iZWZvcmUoamlmZmllcywgeWFwcy1cdTAwM2VjaGlwX3F1ZXVlX2Z1bGwucmV0cnlfZXhwaXJ5KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTUwNy1cdFx0Z290byBleGl0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTUxMC1cdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTU04MVhfSElGX0VWVF9UWF9EQVRBX1BFTkQsIGZsYWdzKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTExOlx0XHRpZiAobW04MXhfeWFwc190eF9kYXRhX2hhbmRsZXIoeWFwcykpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01MTItXHRcdFx0c2V0X2JpdChNTTgxWF9ISUZfRVZUX1RYX0RBVEFfUEVORCwgZmxhZ3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTE0Olx0XHRpZiAoeWFwcy1cdTAwM2VjaGlwX3F1ZXVlX2Z1bGwuaXNfZnVsbCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTE1Olx0XHRcdHlhcHMtXHUwMDNlY2hpcF9xdWV1ZV9mdWxsLnJldHJ5X2V4cGlyeSA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01MTYtXHRcdFx0XHRqaWZmaWVzICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01MTctXHRcdFx0XHRtc2Vjc190b19qaWZmaWVzKENISVBfRlVMTF9SRUNPVkVSWV9USU1FT1VUX01TKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjUxODpcdFx0XHRtb2RfdGltZXIoXHUwMDI2eWFwcy1cdTAwM2VjaGlwX3F1ZXVlX2Z1bGwudGltZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1MTk6XHRcdFx0XHQgIHlhcHMtXHUwMDNlY2hpcF9xdWV1ZV9mdWxsLnJldHJ5X2V4cGlyeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01MjAtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01MjktXHQvKiBEb24mIzM5O3QgcmVxdWV1ZSB3b3JrIGlmIHdlIGFyZSBzaHV0dGluZyBkb3duLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTMwOlx0aWYgKHlhcHMtXHUwMDNlZmluaXNoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTMxLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTQxLVx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1NDI6XHRlbHNlIGlmICgheWFwcy1cdTAwM2VjaGlwX3F1ZXVlX2Z1bGwuaXNfZnVsbCBcdTAwMjZcdTAwMjYgKmZsYWdzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTQzLVx0XHRxdWV1ZV93b3JrKG1vcnMtXHUwMDNlY2hpcF93cSwgXHUwMDI2bW9ycy1cdTAwM2VoaWZfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTQ2OmludCBtbTgxeF95YXBzX2dldF90eF9zdGF0dXNfcGVuZGluZ19jb3VudChzdHJ1Y3QgbW04MXggKm1vcnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01NDcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU0OS1cdGludCBjb3VudCA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1NTA6XHRzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU1MjpcdHlhcHMgPSBcdTAwMjZtb3JzLVx1MDAzZWhpZi51LnlhcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1NTM6XHRjb3VudCAmIzQzOz0gc2tiX3F1ZXVlX2xlbihcdTAwMjZ5YXBzLVx1MDAzZWJlYWNvbl9xLnBlbmRpbmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTU0Olx0Y291bnQgJiM0Mzs9IHNrYl9xdWV1ZV9sZW4oXHUwMDI2eWFwcy1cdTAwM2VtZ210X3EucGVuZGluZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1NTU6XHRjb3VudCAmIzQzOz0gc2tiX3F1ZXVlX2xlbihcdTAwMjZ5YXBzLVx1MDAzZWNtZF9xLnBlbmRpbmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTU3Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRSh5YXBzLVx1MDAzZWRhdGFfdHhfcXMpOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU1ODpcdFx0Y291bnQgJiM0Mzs9IHNrYl9xdWV1ZV9sZW4oXHUwMDI2eWFwcy1cdTAwM2VkYXRhX3R4X3FzW2ldLnBlbmRpbmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTU5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU2MzppbnQgbW04MXhfeWFwc19nZXRfdHhfYnVmZmVyZWRfY291bnQoc3RydWN0IG1tODF4ICptb3JzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTY0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01NjYtXHRpbnQgY291bnQgPSAwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTY3Olx0c3RydWN0IG1tODF4X3lhcHMgKnlhcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1Njk6XHR5YXBzID0gXHUwMDI2bW9ycy1cdTAwM2VoaWYudS55YXBzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTcwOlx0Y291bnQgJiM0Mzs9IHNrYl9xdWV1ZV9sZW4oXHUwMDI2eWFwcy1cdTAwM2ViZWFjb25fcS5za2JxKSAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTcxOlx0XHQgc2tiX3F1ZXVlX2xlbihcdTAwMjZ5YXBzLVx1MDAzZWJlYWNvbl9xLnBlbmRpbmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTcyOlx0Y291bnQgJiM0Mzs9IHNrYl9xdWV1ZV9sZW4oXHUwMDI2eWFwcy1cdTAwM2VtZ210X3Euc2ticSkgJiM0MztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU3MzpcdFx0IHNrYl9xdWV1ZV9sZW4oXHUwMDI2eWFwcy1cdTAwM2VtZ210X3EucGVuZGluZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1NzQ6XHRjb3VudCAmIzQzOz0gc2tiX3F1ZXVlX2xlbihcdTAwMjZ5YXBzLVx1MDAzZWNtZF9xLnNrYnEpICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1NzU6XHRcdCBza2JfcXVldWVfbGVuKFx1MDAyNnlhcHMtXHUwMDNlY21kX3EucGVuZGluZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01NzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1Nzc6XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHlhcHMtXHUwMDNlZGF0YV90eF9xcyk7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTc4Olx0XHRjb3VudCAmIzQzOz0gbW04MXhfc2ticV9jb3VudF90eF9yZWFkeShcdTAwMjZ5YXBzLVx1MDAzZWRhdGFfdHhfcXNbaV0pICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1Nzk6XHRcdFx0IHNrYl9xdWV1ZV9sZW4oXHUwMDI2eWFwcy1cdTAwM2VkYXRhX3R4X3FzW2ldLnBlbmRpbmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTgwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU4NDpzdGF0aWMgdm9pZCBtbTgxeF95YXBzX3R4X3FfZnVsbF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU4NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1ODY6XHRzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcyA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1ODc6XHRcdHRpbWVyX2NvbnRhaW5lcl9vZih5YXBzLCB0LCBjaGlwX3F1ZXVlX2Z1bGwudGltZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTg5Olx0cXVldWVfd29yayh5YXBzLVx1MDAzZW1vcnMtXHUwMDNlY2hpcF93cSwgXHUwMDI2eWFwcy1cdTAwM2Vtb3JzLVx1MDAzZWhpZl93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU5MC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01OTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1OTI6c3RhdGljIHZvaWQgbW04MXhfeWFwc19xX2NoaXBfZnVsbF90aW1lcl9pbml0KHN0cnVjdCBtbTgxeF95YXBzICp5YXBzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTkzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU5NDpcdHRpbWVyX3NldHVwKFx1MDAyNnlhcHMtXHUwMDNlY2hpcF9xdWV1ZV9mdWxsLnRpbWVyLCBtbTgxeF95YXBzX3R4X3FfZnVsbF90aW1lcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU5NS1cdFx0ICAgIDApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU5ODpzdGF0aWMgdm9pZCBtbTgxeF95YXBzX3FfY2hpcF9mdWxsX3RpbWVyX2ZpbmlzaChzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU5OS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2MDA6XHR0aW1lcl9zaHV0ZG93bl9zeW5jKFx1MDAyNnlhcHMtXHUwMDNlY2hpcF9xdWV1ZV9mdWxsLnRpbWVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTYwMS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2MDM6aW50IG1tODF4X3lhcHNfaW5pdChzdHJ1Y3QgbW04MXggKm1vcnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MDQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjA1LVx0aW50IGksIHJldDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjYwNjpcdHN0cnVjdCBtbTgxeF95YXBzICp5YXBzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjA4Olx0cmV0ID0gbW04MXhfeWFwc19od19pbml0KG1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjA5LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjEwOlx0XHRkZXZfZXJyKG1vcnMtXHUwMDNlZGV2LCBcJiMzNDttbTgxeF95YXBzX2h3X2luaXQgZmFpbGVkICVkXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjExLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTYxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjYxNDpcdHlhcHMgPSBcdTAwMjZtb3JzLVx1MDAzZWhpZi51LnlhcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2MTU6XHR5YXBzLVx1MDAzZW1vcnMgPSBtb3JzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjE2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTYxOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjYxOTpcdHJldCA9IG1tODF4X3lhcHNfYWxsb2NfcGt0X2J1ZmZlcnMoeWFwcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MjAtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjIyLVx0XHRcdHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2MjM6XHRcdG1tODF4X3lhcHNfaHdfZmluaXNoKG1vcnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjI0LVx0XHRtbTgxeF9yZWxlYXNlX2J1cyhtb3JzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MjgtXHQvKiBZQVBTIGlzIGJpLWRpcmVjdGlvbmFsICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2Mjk6XHRtbTgxeF9za2JxX2luaXQobW9ycywgXHUwMDI2eWFwcy1cdTAwM2VkYXRhX3J4X3EsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MzAtXHRcdFx0TU04MVhfSElGX0ZMQUdTX0RBVEEgfCBNTTgxWF9ISUZfRkxBR1NfRElSX1RPX0hPU1QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjMxOlx0bW04MXhfc2ticV9pbml0KG1vcnMsIFx1MDAyNnlhcHMtXHUwMDNlYmVhY29uX3EsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MzItXHRcdFx0TU04MVhfSElGX0ZMQUdTX0RBVEEgfCBNTTgxWF9ISUZfRkxBR1NfRElSX1RPX0hPU1QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjMzOlx0bW04MXhfc2ticV9pbml0KG1vcnMsIFx1MDAyNnlhcHMtXHUwMDNlbWdtdF9xLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjM0LVx0XHRcdE1NODFYX0hJRl9GTEFHU19EQVRBIHwgTU04MVhfSElGX0ZMQUdTX0RJUl9UT19IT1NUKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTYzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjYzNjpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoeWFwcy1cdTAwM2VkYXRhX3R4X3FzKTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjYzNzpcdFx0bW04MXhfc2ticV9pbml0KG1vcnMsIFx1MDAyNnlhcHMtXHUwMDNlZGF0YV90eF9xc1tpXSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTYzOC1cdFx0XHRcdE1NODFYX0hJRl9GTEFHU19EQVRBIHxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02NDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2NDI6XHRtbTgxeF9za2JxX2luaXQobW9ycywgXHUwMDI2eWFwcy1cdTAwM2VjbWRfcSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY0My1cdFx0XHRNTTgxWF9ISUZfRkxBR1NfQ09NTUFORCB8IE1NODFYX0hJRl9GTEFHU19ESVJfVE9fQ0hJUCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2NDQ6XHRtbTgxeF9za2JxX2luaXQobW9ycywgXHUwMDI2eWFwcy1cdTAwM2VjbWRfcmVzcF9xLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjQ1LVx0XHRcdE1NODFYX0hJRl9GTEFHU19DT01NQU5EIHwgTU04MVhfSElGX0ZMQUdTX0RJUl9UT19IT1NUKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY0Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY0NzpcdG1tODF4X3lhcHNfcV9jaGlwX2Z1bGxfdGltZXJfaW5pdCh5YXBzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY0ODpcdElOSVRfV09SSyhcdTAwMjZtb3JzLVx1MDAzZWhpZl93b3JrLCBtbTgxeF95YXBzX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjQ5Olx0SU5JVF9XT1JLKFx1MDAyNm1vcnMtXHUwMDNldHhfc3RhbGVfd29yaywgbW04MXhfeWFwc19zdGFsZV90eF93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY1MC1cdG1tODF4X3JlbGVhc2VfYnVzKG1vcnMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY1NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY1NTp2b2lkIG1tODF4X3lhcHNfZmluaXNoKHN0cnVjdCBtbTgxeCAqbW9ycylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY1Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02NTctXHRpbnQgaTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY1ODpcdHN0cnVjdCBtbTgxeF95YXBzICp5YXBzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjYwOlx0bW04MXhfeWFwc19od19lbmFibGVfaXJxcyhtb3JzLCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2NjI6XHR5YXBzID0gXHUwMDI2bW9ycy1cdTAwM2VoaWYudS55YXBzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjYzOlx0eWFwcy1cdTAwM2VmaW5pc2ggPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjY1Olx0bW04MXhfc2ticV9maW5pc2goXHUwMDI2eWFwcy1cdTAwM2VkYXRhX3J4X3EpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjY2Olx0bW04MXhfc2ticV9maW5pc2goXHUwMDI2eWFwcy1cdTAwM2ViZWFjb25fcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2Njc6XHRtbTgxeF9za2JxX2ZpbmlzaChcdTAwMjZ5YXBzLVx1MDAzZW1nbXRfcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2Njk6XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHlhcHMtXHUwMDNlZGF0YV90eF9xcyk7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjcwOlx0XHRtbTgxeF9za2JxX2ZpbmlzaChcdTAwMjZ5YXBzLVx1MDAzZWRhdGFfdHhfcXNbaV0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjcyOlx0bW04MXhfc2ticV9maW5pc2goXHUwMDI2eWFwcy1cdTAwM2VjbWRfcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2NzM6XHRtbTgxeF9za2JxX2ZpbmlzaChcdTAwMjZ5YXBzLVx1MDAzZWNtZF9yZXNwX3EpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6Njc1Olx0bW04MXhfeWFwc19xX2NoaXBfZnVsbF90aW1lcl9maW5pc2goeWFwcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02NzYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjgwOlx0bW04MXhfeWFwc19mcmVlX3BrdF9idWZmZXJzKHlhcHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjgxOlx0bW04MXhfeWFwc19od19maW5pc2gobW9ycyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02ODItfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6Njg0OnZvaWQgbW04MXhfeWFwc19mbHVzaF90eF9kYXRhKHN0cnVjdCBtbTgxeCAqbW9ycylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY4NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02ODYtXHRpbnQgaTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY4NzpcdHN0cnVjdCBtbTgxeF95YXBzICp5YXBzID0gXHUwMDI2bW9ycy1cdTAwM2VoaWYudS55YXBzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6Njg5Olx0bW04MXhfc2ticV90eF9mbHVzaChcdTAwMjZ5YXBzLVx1MDAzZWJlYWNvbl9xKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY5MDpcdG1tODF4X3NrYnFfdHhfZmx1c2goXHUwMDI2eWFwcy1cdTAwM2VtZ210X3EpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjkyOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRSh5YXBzLVx1MDAzZWRhdGFfdHhfcXMpOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY5MzpcdFx0bW04MXhfc2ticV90eF9mbHVzaChcdTAwMjZ5YXBzLVx1MDAzZWRhdGFfdHhfcXNbaV0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjk0LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY5Njp2b2lkIG1tODF4X3lhcHNfZmx1c2hfY21kcyhzdHJ1Y3QgbW04MXggKm1vcnMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02OTcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6Njk4Olx0c3RydWN0IG1tODF4X3lhcHMgKnlhcHMgPSBcdTAwMjZtb3JzLVx1MDAzZWhpZi51LnlhcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02OTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo3MDA6XHRpZiAoeWFwcy1cdTAwM2VmbGFncyBcdTAwMjYgTU04MVhfSElGX0ZMQUdTX0NPTU1BTkQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjcwMTpcdFx0bW04MXhfc2ticV9maW5pc2goXHUwMDI2eWFwcy1cdTAwM2VjbWRfcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo3MDI6XHRcdG1tODF4X3NrYnFfZmluaXNoKFx1MDAyNnlhcHMtXHUwMDNlY21kX3Jlc3BfcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy03MDMtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmg9MTU9c3RydWN0IG1tODF4X2hpZl9vcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuaDoxNjpleHRlcm4gY29uc3Qgc3RydWN0IG1tODF4X2hpZl9vcHMgbW04MXhfeWFwc19vcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuaC0xNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5oOjE4OmVudW0gbW04MXhfeWFwc190b19jaGlwX3Ege1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmgtMTktXHRNTTgxWF9ZQVBTX1RYX1EgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5oLTI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmg6Mjc6c3RydWN0IG1tODF4X3lhcHNfcGt0IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5oLTI4LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5oOjI5Olx0ZW51bSBtbTgxeF95YXBzX3RvX2NoaXBfcSB0Y19xdWV1ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5oLTMwLX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuaC0zMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5oOjMyOnN0cnVjdCBtbTgxeF95YXBzIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5oLTMzLVx0c3RydWN0IG1tODF4ICptb3JzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmg6MzQ6XHRzdHJ1Y3QgbW04MXhfeWFwc19od19hdXhfZGF0YSAqYXV4X2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuaDozNTpcdGNvbnN0IHN0cnVjdCBtbTgxeF95YXBzX29wcyAqb3BzO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjE6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY1MjgKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFlBUFMgSGFyZHdhcmUgQ29kZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IHJlbGF0ZWQgdG8gdGhlc2UgcGFja2V0IHJlYWRzIHdpdGhpbiB0aGUgWUFQUyBoYXJkd2FyZS4gVGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgaXMgZGVmaW5pdGVseSB0aGUgc291cmNlIGNvZGUgZm9yIGB5YXBzX2h3LmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYG1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltYCBhbmQgYG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzYCBhcmUgYmVpbmcgdXRpbGl6ZWQuIEkmIzM5O2xsIG5lZWQgdG8gbG9jYXRlIHdoZXJlIGJvdGggZnVuY3Rpb25zIGFyZSAqZGVmaW5lZCosIHNvIEkgY2FuIHNlZSB0aGVpciBpbXBsZW1lbnRhdGlvbiwgYXMgd2VsbCBhcyB3aGVyZSB0aGV5IGFyZSBiZWluZyAqY2FsbGVkKiwgc28gSSBjYW4gdW5kZXJzdGFuZCB0aGUgZXhlY3V0aW9uIHBhdGhzIHRoYXQgbGVhZCB0byB0aGVpciBpbnZvY2F0aW9uLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiBob3cgdGhlIHJlYWQgb3BlcmF0aW9ucyBhcmUgYmVpbmcgaGFuZGxlZCBhbmQgd2hhdCYjMzk7cyB2YWxpZGF0aW5nIHRoZSBkZWxpbWl0ZXJzIGluIHRoZSBwcm9jZXNzLiBUaW1lIHRvIGZpcmUgdXAgdGhlIGVkaXRvciBhbmQgc3RhcnQgdHJhY2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjE6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDAwOlx0XG4gNDAxOlx0c3RhdGljIGJvb2wgbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW0odTMyIGRlbGltKVxuIDQwMjpcdHtcbiA0MDM6XHRcdHU4IGNhbGNfY3JjID0gbW04MXhfeWFwc19od19jcmMoZGVsaW0pO1xuIDQwNDpcdFx0aW50IHBrdF9zaXplID0gWUFQU19ERUxJTV9HRVRfUEhBTkRMRV9TSVpFKGRlbGltKTtcbiA0MDU6XHRcdGludCBwYWRkaW5nID0gWUFQU19ERUxJTV9HRVRfUEFERElORyhkZWxpbSk7XG4gNDA2Olx0XG4gNDA3Olx0XHRpZiAoY2FsY19jcmMgIT0gWUFQU19ERUxJTV9HRVRfQ1JDKGRlbGltKSlcbiA0MDg6XHRcdFx0cmV0dXJuIGZhbHNlO1xuIDQwOTpcdFxuIDQxMDpcdFx0aWYgKHBrdF9zaXplIFx1MDAzYz0gWUFQU19SRVNFUlZFRF9QQUdFX1NJWkUpXG4gNDExOlx0XHRcdHJldHVybiBmYWxzZTtcbiA0MTI6XHRcbiA0MTM6XHRcdGlmICgocGt0X3NpemUgJiM0MzsgcGFkZGluZykgXHUwMDNlIFlBUFNfTUFYX1BLVF9TSVpFX0JZVEVTKVxuIDQxNDpcdFx0XHRyZXR1cm4gZmFsc2U7XG4gNDE1Olx0XG4gNDE2Olx0XHQvKiBQa3QgbGVuZ3RoICYjNDM7IHBhZGRpbmcgc2hvdWxkIG5vdCByZXF1aXJlIG1vcmUgcGFkZGluZyAqL1xuIDQxNzpcdFx0aWYgKFlBUFNfQ0FMQ19QQURESU5HKHBrdF9zaXplKSAhPSBwYWRkaW5nKVxuIDQxODpcdFx0XHRyZXR1cm4gZmFsc2U7XG4gNDE5Olx0XG4gNDIwOlx0XHRyZXR1cm4gdHJ1ZTtcbiA0MjE6XHR9XG4gNDIyOlx0XG4gNDIzOlx0c3RhdGljIGludCBtbTgxeF9yZWFkX3BrdHNfaF9ieXRlc19yZW1haW5pbmcoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMpXG4gNDI0Olx0e1xuIDQyNTpcdFx0dTMyIGJ5dGVzX2luX3F1ZXVlID0geWFwcy1cdTAwM2VhdXhfZGF0YS1cdTAwM2VzdGF0dXNfcmVncy5mY19yeF9ieXRlc19pbl9xdWV1ZTtcbiA0MjY6XHRcdHUzMiBkZWxpbV9vdmVyaGVhZCA9XG4gNDI3Olx0XHRcdHlhcHMtXHUwMDNlYXV4X2RhdGEtXHUwMDNlc3RhdHVzX3JlZ3MuZmNfbnVtX3BrdHMgKiBzaXplb2YodTMyKTtcbiA0Mjg6XHRcdHUzMiByZXNlcnZlZF9ieXRlcyA9IHlhcHMtXHUwMDNlYXV4X2RhdGEtXHUwMDNlc3RhdHVzX3JlZ3MuZmNfbnVtX3BrdHMgKlxuIDQyOTpcdFx0XHRcdCAgICAgeWFwcy1cdTAwM2VhdXhfZGF0YS1cdTAwM2VyZXNlcnZlZF95YXBzX3BhZ2Vfc2l6ZTtcbiA0MzA6XHRcbiA0MzE6XHRcdGlmIChXQVJOX09OKGJ5dGVzX2luX3F1ZXVlIFx1MDAzZSBJTlRfTUFYKSB8fFxuIDQzMjpcdFx0ICAgIFdBUk5fT04oZGVsaW1fb3ZlcmhlYWQgXHUwMDNlIElOVF9NQVgpIHx8XG4gNDMzOlx0XHQgICAgV0FSTl9PTihyZXNlcnZlZF9ieXRlcyBcdTAwM2UgSU5UX01BWCkpXG4gNDM0Olx0XHRcdHJldHVybiAtRUlPO1xuIDQzNTpcdFxuIDQzNjpcdFx0cmV0dXJuIChpbnQpYnl0ZXNfaW5fcXVldWU7XG4gNDM3Olx0fVxuIDQzODpcdFxuIDQzOTpcdHN0YXRpYyBpbnQgbW04MXhfeWFwc19od19yZWFkX3BrdHMoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMsXG4gNDQwOlx0XHRcdFx0XHQgICBzdHJ1Y3QgbW04MXhfeWFwc19wa3QgKnBrdHMsXG4gNDQxOlx0XHRcdFx0XHQgICBpbnQgbnVtX3BrdHNfbWF4LCBpbnQgKm51bV9wa3RzX3JlY2VpdmVkKVxuIDQ0MjpcdHtcbiA0NDM6XHRcdGludCByZXQ7XG4gNDQ0Olx0XHRpbnQgaSA9IDA7XG4gNDQ1Olx0XHRjaGFyICpmcm9tX2NoaXBfYnVmZmVyX2FsaWduZWQgPVxuIDQ0NjpcdFx0XHRQVFJfQUxJR04oeWFwcy1cdTAwM2VhdXhfZGF0YS1cdTAwM2Vmcm9tX2NoaXBfYnVmZmVyLFxuIDQ0NzpcdFx0XHRcdCAgbW04MXhfYnVzX2dldF9hbGlnbm1lbnQoeWFwcy1cdTAwM2Vtb3JzKSk7XG4gNDQ4Olx0XHRjaGFyICpyZWFkX3B0ciA9IGZyb21fY2hpcF9idWZmZXJfYWxpZ25lZDtcbiA0NDk6XHRcdGludCBieXRlc19yZW1haW5pbmcgPSBtbTgxeF9yZWFkX3BrdHNfaF9ieXRlc19yZW1haW5pbmcoeWFwcyk7XG4gNDUwOlx0XHRib29sIGFnYWluID0gZmFsc2U7XG4gNDUxOlx0XG4gNDUyOlx0XHQqbnVtX3BrdHNfcmVjZWl2ZWQgPSAwO1xuIDQ1MzpcdFxuIDQ1NDpcdFx0aWYgKG51bV9wa3RzX21heCA9PSAwIHx8IGJ5dGVzX3JlbWFpbmluZyA9PSAwKVxuIDQ1NTpcdFx0XHRyZXR1cm4gMDtcbiA0NTY6XHRcdGlmIChieXRlc19yZW1haW5pbmcgXHUwMDNjIDApXG4gNDU3Olx0XHRcdHJldHVybiBieXRlc19yZW1haW5pbmc7XG4gNDU4Olx0XHRpZiAoIUlTX0FMSUdORUQoYnl0ZXNfcmVtYWluaW5nLCBzaXplb2YodTMyKSkpIHtcbiA0NTk6XHRcdFx0ZGV2X3dhcm4oeWFwcy1cdTAwM2Vtb3JzLVx1MDAzZWRldiwgXCYjMzQ7eWFwcyB0cnVuY2F0ZWQgZGVsaW1pdGVyXCYjMzQ7KTtcbiA0NjA6XHRcdFx0cmV0dXJuIC1FSU87XG4gNDYxOlx0XHR9XG4gNDYyOlx0XG4gNDYzOlx0XHRpZiAoYnl0ZXNfcmVtYWluaW5nIFx1MDAzZSBZQVBTX0hXX1dJTkRPV19TSVpFX0JZVEVTKSB7XG4gNDY0Olx0XHRcdGJ5dGVzX3JlbWFpbmluZyA9IFlBUFNfSFdfV0lORE9XX1NJWkVfQllURVM7XG4gNDY1Olx0XHRcdGFnYWluID0gdHJ1ZTtcbiA0NjY6XHRcdH1cbiA0Njc6XHRcbiA0Njg6XHRcdC8qXG4gNDY5Olx0XHQgKiBUaGlzIGlzIG1vcmUgY29hcnNlLWdyYWluZWQgdGhhbiBpdCBuZWVkcyB0byBiZSAtIG9uY2UgdGhlIGRhdGFcbiA0NzA6XHRcdCAqIGlzIHJlYWQgaW50byBhIGxvY2FsIGJ1ZmZlciB0aGUgbG9jayBjYW4gYmUgcmVsZWFzZWQsIGhvd2V2ZXJcbiA0NzE6XHRcdCAqIGFjY2VzcyB0byBmcm9tX2NoaXBfYnVmZmVyIHdpbGwgbmVlZCB0byBiZSBwcm90ZWN0ZWQgd2l0aCBpdHNcbiA0NzI6XHRcdCAqIG93biBsb2NrXG4gNDczOlx0XHQgKi9cbiA0NzQ6XHRcdHJldCA9IG1tODF4X3lhcHNfaHdfbG9jayh5YXBzKTtcbiA0NzU6XHRcdGlmIChyZXQpIHtcbiA0NzY6XHRcdFx0ZGV2X2RiZyh5YXBzLVx1MDAzZW1vcnMtXHUwMDNlZGV2LCBcJiMzNDt5YXBzIGxvY2sgZmFpbGVkICVkXCYjMzQ7LCByZXQpO1xuIDQ3NzpcdFx0XHRyZXR1cm4gcmV0O1xuIDQ3ODpcdFx0fVxuIDQ3OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODE2MwoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRoaW5raW5nIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBgeWFwc19ody5jYCBDb2RlKioKCk9rYXksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgaGVyZSwgZXNwZWNpYWxseSBhcm91bmQgaG93IHBhY2tldCByZWFkaW5nIGlzIGhhbmRsZWQuIE15IHByaW1hcnkgaW50ZXJlc3QgaXMgaW4gdGhlIGZ1bmN0aW9ucyBgbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW1gIGFuZCBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgLiBJJiMzOTttIHN0YXJ0aW5nIGJ5IG1lbnRhbGx5IHRyYWNpbmcgd2hlcmUgdGhvc2UgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSAqdXNlZCogd2l0aGluIHRoZSBgeWFwc19ody5jYCBmaWxlLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGVpciBjYWxsZXJzLiBBcmUgdGhleSBjYWxsZWQgaW4gc2VxdWVuY2U/IEFyZSB0aGV5IG9ubHkgY2FsbGVkIGZyb20gYSBzaW5nbGUgcGxhY2UsIG9yIG11bHRpcGxlIHNwb3RzPyBLbm93aW5nIHRoZSBjYWxsIGdyYXBoIHdpbGwgcmVhbGx5IGhlbHAgbWUgdW5kZXJzdGFuZCBob3cgZGF0YSBmbG93cyB0aHJvdWdoIHRoaXMgbW9kdWxlLCBhbmQgaWRlbnRpZnkgYW55IHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBjb250ZXh0cywgdGhlIGNhbGxpbmcgcGFyYW1ldGVycywgZXZlcnl0aGluZy4gSSB3YW50IGEgc29saWQgbWVudGFsIG1vZGVsIG9mIGhvdyB0aGVzZSBwYWNrZXQgcmVhZGluZyBmdW5jdGlvbnMgZml0IGludG8gdGhlIGxhcmdlciBZQVBTIGhhcmR3YXJlIGludGVyYWN0aW9uIHNjaGVtZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDgwOlx0XHQvKiBSZWFkIGFsbCBhdmFpbGFibGUgcGFja2V0cyB0byB0aGUgYnVmZmVyICovXG4gNDgxOlx0XHRyZXQgPSBtbTgxeF9kbV9yZWFkKHlhcHMtXHUwMDNlbW9ycywgeWFwcy1cdTAwM2VhdXhfZGF0YS1cdTAwM2V5c2xfYWRkcixcbiA0ODI6XHRcdFx0XHQgICAgZnJvbV9jaGlwX2J1ZmZlcl9hbGlnbmVkLCBieXRlc19yZW1haW5pbmcpO1xuIDQ4MzpcdFxuIDQ4NDpcdFx0aWYgKHJldClcbiA0ODU6XHRcdFx0Z290byBleGl0O1xuIDQ4NjpcdFxuIDQ4NzpcdFx0LyogU3BsaXQgc2VyaWFsaXNlZCBwYWNrZXRzIGZyb20gYnVmZmVyICovXG4gNDg4Olx0XHR3aGlsZSAoaSBcdTAwM2MgbnVtX3BrdHNfbWF4IFx1MDAyNlx1MDAyNiBieXRlc19yZW1haW5pbmcgXHUwMDNlIDApIHtcbiA0ODk6XHRcdFx0dTMyIGRlbGltO1xuIDQ5MDpcdFx0XHRpbnQgdG90YWxfbGVuO1xuIDQ5MTpcdFx0XHRpbnQgcGt0X3NpemU7XG4gNDkyOlx0XG4gNDkzOlx0XHRcdGRlbGltID0gbGUzMl90b19jcHUoKigoX19sZTMyICopcmVhZF9wdHIpKTtcbiA0OTQ6XHRcdFx0cmVhZF9wdHIgJiM0Mzs9IHNpemVvZihkZWxpbSk7XG4gNDk1Olx0XHRcdGJ5dGVzX3JlbWFpbmluZyAtPSBzaXplb2YoZGVsaW0pO1xuIDQ5NjpcdFxuIDQ5NzpcdFx0XHQvKiBFbmQgb2Ygc3RyZWFtICovXG4gNDk4Olx0XHRcdGlmICghZGVsaW0pXG4gNDk5Olx0XHRcdFx0YnJlYWs7XG4gNTAwOlx0XG4gNTAxOlx0XHRcdGlmICghbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW0oZGVsaW0pKSB7XG4gNTAyOlx0XHRcdFx0LypcbiA1MDM6XHRcdFx0XHQgKiBUaGlzIHdpbGwgc3RhcnQgYSBodW50IGZvciBhIHZhbGlkIGRlbGltaXRlci4gR2l2ZW5cbiA1MDQ6XHRcdFx0XHQgKiB0aGUgQ1JDIGlzIG9ubHkgNyBiaXQgaXQmIzM5O3MgcG9zc2libGUgdG8gZmluZCBhblxuIDUwNTpcdFx0XHRcdCAqIGludmFsaWQgYmxvY2sgd2l0aCBhIHZhbGlkIGRlbGltaXRlciwgbGVhZGluZyB0b1xuIDUwNjpcdFx0XHRcdCAqIGRlc3luY2hyb25pc2F0aW9uLlxuIDUwNzpcdFx0XHRcdCAqL1xuIDUwODpcdFx0XHRcdGRldl93YXJuKHlhcHMtXHUwMDNlbW9ycy1cdTAwM2VkZXYsIFwmIzM0O3lhcHMgaW52YWxpZCBkZWxpbVwmIzM0Oyk7XG4gNTA5Olx0XHRcdFx0YnJlYWs7XG4gNTEwOlx0XHRcdH1cbiA1MTE6XHRcbiA1MTI6XHRcdFx0LyogVG90YWwgbGVuZ3RoIGluIGNoaXAgKi9cbiA1MTM6XHRcdFx0cGt0X3NpemUgPSBZQVBTX0RFTElNX0dFVF9QS1RfU0laRShkZWxpbSk7XG4gNTE0Olx0XHRcdHRvdGFsX2xlbiA9IHBrdF9zaXplICYjNDM7IFlBUFNfREVMSU1fR0VUX1BBRERJTkcoZGVsaW0pO1xuIDUxNTpcdFxuIDUxNjpcdFx0XHRpZiAocGt0c1tpXS5za2IpXG4gNTE3Olx0XHRcdFx0ZGV2X2Vycih5YXBzLVx1MDAzZW1vcnMtXHUwMDNlZGV2LCBcJiMzNDt5YXBzIHBhY2tldCBsZWFrXCYjMzQ7KTtcbiA1MTg6XHRcbiA1MTk6XHRcdFx0LyogU0tCIGRvZXNuJiMzOTt0IHdhbnQgcGFkZGluZyAqL1xuIDUyMDpcdFx0XHRwa3RzW2ldLnNrYiA9IGRldl9hbGxvY19za2IocGt0X3NpemUpO1xuIDUyMTpcdFx0XHRpZiAoIXBrdHNbaV0uc2tiKSB7XG4gNTIyOlx0XHRcdFx0cmV0ID0gLUVOT01FTTtcbiA1MjM6XHRcdFx0XHRkZXZfZXJyKHlhcHMtXHUwMDNlbW9ycy1cdTAwM2VkZXYsIFwmIzM0O3lhcHMgbm8gbWVtIGZvciBza2JcJiMzNDspO1xuIDUyNDpcdFx0XHRcdGdvdG8gZXhpdDtcbiA1MjU6XHRcdFx0fVxuIDUyNjpcdFx0XHRza2JfcHV0KHBrdHNbaV0uc2tiLCBwa3Rfc2l6ZSk7XG4gNTI3Olx0XG4gNTI4Olx0XHRcdGlmICh0b3RhbF9sZW4gXHUwMDNjPSBieXRlc19yZW1haW5pbmcpIHtcbiA1Mjk6XHRcdFx0XHRtZW1jcHkocGt0c1tpXS5za2ItXHUwMDNlZGF0YSwgcmVhZF9wdHIsIHBrdF9zaXplKTtcbiA1MzA6XHRcdFx0XHRyZWFkX3B0ciAmIzQzOz0gdG90YWxfbGVuO1xuIDUzMTpcdFx0XHRcdGJ5dGVzX3JlbWFpbmluZyAtPSB0b3RhbF9sZW47XG4gNTMyOlx0XHRcdH0gZWxzZSB7XG4gNTMzOlx0XHRcdFx0Y29uc3QgaW50IHJlYWRfb3ZlcmhhbmdfbGVuID1cbiA1MzQ6XHRcdFx0XHRcdHRvdGFsX2xlbiAtIGJ5dGVzX3JlbWFpbmluZztcbiA1MzU6XHRcdFx0XHRjb25zdCBpbnQgcGt0X292ZXJoYW5nX2xlbiA9IHBrdF9zaXplIC0gYnl0ZXNfcmVtYWluaW5nO1xuIDUzNjpcdFxuIDUzNzpcdFx0XHRcdG1lbWNweShwa3RzW2ldLnNrYi1cdTAwM2VkYXRhLCByZWFkX3B0ciwgYnl0ZXNfcmVtYWluaW5nKTtcbiA1Mzg6XHRcdFx0XHRyZWFkX3B0ciA9IGZyb21fY2hpcF9idWZmZXJfYWxpZ25lZDtcbiA1Mzk6XHRcbiA1NDA6XHRcdFx0XHRyZXQgPSBtbTgxeF9kbV9yZWFkKFxuIDU0MTpcdFx0XHRcdFx0eWFwcy1cdTAwM2Vtb3JzLFxuIDU0MjpcdFx0XHRcdFx0LyogT2Zmc2V0IGJ5IDQgdG8gYXZvaWQgcmV0cnkgbG9naWMgKi9cbiA1NDM6XHRcdFx0XHRcdHlhcHMtXHUwMDNlYXV4X2RhdGEtXHUwMDNleXNsX2FkZHIgJiM0MzsgNCwgcmVhZF9wdHIsXG4gNTQ0Olx0XHRcdFx0XHRyZWFkX292ZXJoYW5nX2xlbik7XG4gNTQ1Olx0XG4gNTQ2Olx0XHRcdFx0aWYgKHJldClcbiA1NDc6XHRcdFx0XHRcdGdvdG8gZXhpdDtcbiA1NDg6XHRcbiA1NDk6XHRcdFx0XHRtZW1jcHkocGt0c1tpXS5za2ItXHUwMDNlZGF0YSAmIzQzOyBieXRlc19yZW1haW5pbmcsIHJlYWRfcHRyLFxuIDU1MDpcdFx0XHRcdCAgICAgICBwa3Rfb3ZlcmhhbmdfbGVuKTtcbiA1NTE6XHRcdFx0XHRyZWFkX3B0ciAmIzQzOz0gcmVhZF9vdmVyaGFuZ19sZW47XG4gNTUyOlx0XHRcdFx0Ynl0ZXNfcmVtYWluaW5nID0gMDtcbiA1NTM6XHRcdFx0fVxuIDU1NDpcdFxuIDU1NTpcdFx0XHQqbnVtX3BrdHNfcmVjZWl2ZWQgJiM0Mzs9IDE7XG4gNTU2Olx0XHRcdGkmIzQzOyYjNDM7O1xuIDU1NzpcdFx0fVxuIDU1ODpcdFxuIDU1OTpcdFx0aWYgKGFnYWluKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTY3OAoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIGB5YXBzX2h3X3JlYWRfcGt0c2AgaW4gYHlhcHNfaHcuY2AqKgoKT2theSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24gb2YgYG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzYCB3aXRoaW4gdGhlIGB5YXBzX2h3LmNgIG1vZHVsZS4gSSYjMzk7bSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IGludG8gdGhlIGNvZGUsIGFuZCBmb2N1cyBvbiBsaW5lcyA1NTAgdGhyb3VnaCA2MDAuIFRoYXQmIzM5O3MgdXN1YWxseSBhIGdvb2QgcmFuZ2UgdG8gc3RhcnQgd2l0aCBmb3IgY29yZSBmdW5jdGlvbiBjYWxscyBhbmQgaW5pdGlhbGl6YXRpb24gcm91dGluZXMuIEhvcGVmdWxseSwgdGhlIGxpbmtpbmcgaXMgY2xlYXIgYW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IHByb3ZpZGVzIHN1ZmZpY2llbnQgY2x1ZXMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1NjA6XHRcdFx0cmV0ID0gLUVBR0FJTjtcbiA1NjE6XHRcbiA1NjI6XHRleGl0OlxuIDU2MzpcdFx0bW04MXhfeWFwc19od191bmxvY2soeWFwcyk7XG4gNTY0Olx0XHRyZXR1cm4gcmV0O1xuIDU2NTpcdH1cbiA1NjY6XHRcbiA1Njc6XHRzdGF0aWMgaW50IG1tODF4X3lhcHNfaHdfdXBkYXRlX3N0YXR1cyhzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcylcbiA1Njg6XHR7XG4gNTY5Olx0XHRpbnQgcmV0O1xuIDU3MDpcdFx0aW50IHRjX3RvdGFsX3BrdF9jb3VudDtcbiA1NzE6XHRcdHVuc2lnbmVkIGxvbmcgcmVnX3JlYWRfdGltZW91dDtcbiA1NzI6XHRcdHN0cnVjdCBtbTgxeF95YXBzX3N0YXR1c19yZWdzICpyID0gXHUwMDI2eWFwcy1cdTAwM2VhdXhfZGF0YS1cdTAwM2VzdGF0dXNfcmVncztcbiA1NzM6XHRcdHN0cnVjdCBtbTgxeF95YXBzX2h3X3N0YXR1c19yZWdzICpod19yID0gXHUwMDI2eWFwcy1cdTAwM2VhdXhfZGF0YS1cdTAwM2Vod19zdGF0dXNfcmVncztcbiA1NzQ6XHRcbiA1NzU6XHRcdHJldCA9IG1tODF4X3lhcHNfaHdfbG9jayh5YXBzKTtcbiA1NzY6XHRcdGlmIChyZXQpIHtcbiA1Nzc6XHRcdFx0ZGV2X2RiZyh5YXBzLVx1MDAzZW1vcnMtXHUwMDNlZGV2LCBcJiMzNDt5YXBzIGxvY2sgZmFpbGVkICVkXCYjMzQ7LCByZXQpO1xuIDU3ODpcdFx0XHRyZXR1cm4gcmV0O1xuIDU3OTpcdFx0fVxuIDU4MDpcdFxuIDU4MTpcdFx0cmVnX3JlYWRfdGltZW91dCA9IGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcygxMDApO1xuIDU4MjpcdFx0ZG8ge1xuIDU4MzpcdFx0XHRpZiAodGltZV9hZnRlcihqaWZmaWVzLCByZWdfcmVhZF90aW1lb3V0KSkge1xuIDU4NDpcdFx0XHRcdGRldl9lcnIoeWFwcy1cdTAwM2Vtb3JzLVx1MDAzZWRldixcbiA1ODU6XHRcdFx0XHRcdFwmIzM0O3RpbWVkIG91dCByZWFkaW5nIHN0YXR1cyByZWdpc3RlcnM6ICVkXCYjMzQ7LCByZXQpO1xuIDU4NjpcdFx0XHRcdHJldCA9IC1FVElNRURPVVQ7XG4gNTg3Olx0XHRcdFx0YnJlYWs7XG4gNTg4Olx0XHRcdH1cbiA1ODk6XHRcbiA1OTA6XHRcdFx0cmV0ID0gbW04MXhfZG1fcmVhZCh5YXBzLVx1MDAzZW1vcnMsXG4gNTkxOlx0XHRcdFx0XHQgICAgeWFwcy1cdTAwM2VhdXhfZGF0YS1cdTAwM2VzdGF0dXNfcmVnc19hZGRyLFxuIDU5MjpcdFx0XHRcdFx0ICAgICh1OCAqKWh3X3IsIHNpemVvZigqaHdfcikpO1xuIDU5MzpcdFx0fSB3aGlsZSAoIXJldCBcdTAwMjZcdTAwMjYgbGUzMl90b19jcHUoaHdfci1cdTAwM2Vsb2NrKSk7XG4gNTk0Olx0XG4gNTk1Olx0XHRpZiAocmV0KSB7XG4gNTk2Olx0XHRcdGlmIChyZXQgIT0gLUVOT0RFVikge1xuIDU5NzpcdFx0XHRcdGRldl9lcnIoeWFwcy1cdTAwM2Vtb3JzLVx1MDAzZWRldixcbiA1OTg6XHRcdFx0XHRcdFwmIzM0O2Vycm9yIHJlYWRpbmcgeWFwcyBzdGF0dXMgcmVnaXN0ZXJzOiAlZFwmIzM0OywgcmV0KTtcbiA1OTk6XHRcdFx0fVxuIDYwMDpcdFx0XHRnb3RvIGV4aXRfdW5sb2NrO1xuIDYwMTpcdFx0fVxuIDYwMjpcdFxuIDYwMzpcdFx0ci1cdTAwM2V0Y190eF9wb29sX251bV9wYWdlcyA9IGxlMzJfdG9fY3B1KGh3X3ItXHUwMDNldGNfdHhfcG9vbF9udW1fcGFnZXMpO1xuIDYwNDpcdFx0ci1cdTAwM2V0Y19jbWRfcG9vbF9udW1fcGFnZXMgPSBsZTMyX3RvX2NwdShod19yLVx1MDAzZXRjX2NtZF9wb29sX251bV9wYWdlcyk7XG4gNjA1Olx0XHRyLVx1MDAzZXRjX2JlYWNvbl9wb29sX251bV9wYWdlcyA9IGxlMzJfdG9fY3B1KGh3X3ItXHUwMDNldGNfYmVhY29uX3Bvb2xfbnVtX3BhZ2VzKTtcbiA2MDY6XHRcdHItXHUwMDNldGNfbWdtdF9wb29sX251bV9wYWdlcyA9IGxlMzJfdG9fY3B1KGh3X3ItXHUwMDNldGNfbWdtdF9wb29sX251bV9wYWdlcyk7XG4gNjA3Olx0XHRyLVx1MDAzZWZjX3J4X3Bvb2xfbnVtX3BhZ2VzID0gbGUzMl90b19jcHUoaHdfci1cdTAwM2VmY19yeF9wb29sX251bV9wYWdlcyk7XG4gNjA4Olx0XHRyLVx1MDAzZWZjX3Jlc3BfcG9vbF9udW1fcGFnZXMgPSBsZTMyX3RvX2NwdShod19yLVx1MDAzZWZjX3Jlc3BfcG9vbF9udW1fcGFnZXMpO1xuIDYwOTpcdFx0ci1cdTAwM2VmY190eF9zdHNfcG9vbF9udW1fcGFnZXMgPSBsZTMyX3RvX2NwdShod19yLVx1MDAzZWZjX3R4X3N0c19wb29sX251bV9wYWdlcyk7XG4gNjEwOlx0XHRyLVx1MDAzZWZjX2F1eF9wb29sX251bV9wYWdlcyA9IGxlMzJfdG9fY3B1KGh3X3ItXHUwMDNlZmNfYXV4X3Bvb2xfbnVtX3BhZ2VzKTtcbiA2MTE6XHRcdHItXHUwMDNldGNfdHhfbnVtX3BrdHMgPSBsZTMyX3RvX2NwdShod19yLVx1MDAzZXRjX3R4X251bV9wa3RzKTtcbiA2MTI6XHRcdHItXHUwMDNldGNfY21kX251bV9wa3RzID0gbGUzMl90b19jcHUoaHdfci1cdTAwM2V0Y19jbWRfbnVtX3BrdHMpO1xuIDYxMzpcdFx0ci1cdTAwM2V0Y19iZWFjb25fbnVtX3BrdHMgPSBsZTMyX3RvX2NwdShod19yLVx1MDAzZXRjX2JlYWNvbl9udW1fcGt0cyk7XG4gNjE0Olx0XHRyLVx1MDAzZXRjX21nbXRfbnVtX3BrdHMgPSBsZTMyX3RvX2NwdShod19yLVx1MDAzZXRjX21nbXRfbnVtX3BrdHMpO1xuIDYxNTpcdFx0ci1cdTAwM2VmY19udW1fcGt0cyA9IGxlMzJfdG9fY3B1KGh3X3ItXHUwMDNlZmNfbnVtX3BrdHMpO1xuIDYxNjpcdFx0ci1cdTAwM2VmY19kb25lX251bV9wa3RzID0gbGUzMl90b19jcHUoaHdfci1cdTAwM2VmY19kb25lX251bV9wa3RzKTtcbiA2MTc6XHRcdHItXHUwMDNlZmNfcnhfYnl0ZXNfaW5fcXVldWUgPSBsZTMyX3RvX2NwdShod19yLVx1MDAzZWZjX3J4X2J5dGVzX2luX3F1ZXVlKTtcbiA2MTg6XHRcdHItXHUwMDNldGNfZGVsaW1fY3JjX2ZhaWxfZGV0ZWN0ZWQgPSBsZTMyX3RvX2NwdShod19yLVx1MDAzZXRjX2RlbGltX2NyY19mYWlsX2RldGVjdGVkKTtcbiA2MTk6XHRcdHItXHUwMDNlbG9jayA9IGxlMzJfdG9fY3B1KGh3X3ItXHUwMDNlbG9jayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMjgyCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBjb2RlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgIGZ1bmN0aW9uIGZpdHMgaW50byB0aGUgYmlnZ2VyIHBpY3R1cmUsIHNvIG15IGZpcnN0IHN0ZXAgaXMgdG8gdHJhY2Ugd2hlcmUgaXQmIzM5O3MgYmVpbmcgYXNzaWduZWQgdG8gYG9wc2AuIFRoYXQmIzM5O3MgdGhlIGNydWNpYWwgbGluay4gSSYjMzk7bGwgbmVlZCB0byBnbyB0aHJvdWdoIGB5YXBzX2h3LmNgIGFuZCBmaWd1cmUgb3V0IHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgYXNzaWduZWQsIHRoaXMgYG9wc2Agc3RydWN0dXJlLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIHdpbGwgYmUgcmV2ZWFsZWQuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGluc3RhbnRpYXRpb24sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBgb3BzYCB2YXJpYWJsZSBzaWduaWZpZXMsIGFuZCB3aGF0IG90aGVyIGZ1bmN0aW9ucyBhcmUgaW5jbHVkZWQgaW4gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2NjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDY2MDpcdFx0aWYgKCF5YXBzLVx1MDAzZWF1eF9kYXRhKSB7XG4gNjYxOlx0XHRcdHJldCA9IC1FTk9NRU07XG4gNjYyOlx0XHRcdGdvdG8gZXJyX2V4aXQ7XG4gNjYzOlx0XHR9XG4gNjY0Olx0XG4gNjY1Olx0XHR5YXBzLVx1MDAzZWF1eF9kYXRhLVx1MDAzZXRvX2NoaXBfYnVmZmVyID1cbiA2NjY6XHRcdFx0a3phbGxvYyhZQVBTX0hXX1dJTkRPV19TSVpFX0JZVEVTICYjNDM7IGFsaWdubWVudCAtIDEsIEdGUF9LRVJORUwpO1xuIDY2NzpcdFx0aWYgKCF5YXBzLVx1MDAzZWF1eF9kYXRhLVx1MDAzZXRvX2NoaXBfYnVmZmVyKSB7XG4gNjY4Olx0XHRcdHJldCA9IC1FTk9NRU07XG4gNjY5Olx0XHRcdGdvdG8gZXJyX2V4aXQ7XG4gNjcwOlx0XHR9XG4gNjcxOlx0XG4gNjcyOlx0XHR5YXBzLVx1MDAzZWF1eF9kYXRhLVx1MDAzZWZyb21fY2hpcF9idWZmZXIgPVxuIDY3MzpcdFx0XHRremFsbG9jKFlBUFNfSFdfV0lORE9XX1NJWkVfQllURVMgJiM0MzsgYWxpZ25tZW50IC0gMSwgR0ZQX0tFUk5FTCk7XG4gNjc0Olx0XHRpZiAoIXlhcHMtXHUwMDNlYXV4X2RhdGEtXHUwMDNlZnJvbV9jaGlwX2J1ZmZlcikge1xuIDY3NTpcdFx0XHRyZXQgPSAtRU5PTUVNO1xuIDY3NjpcdFx0XHRnb3RvIGVycl9leGl0O1xuIDY3NzpcdFx0fVxuIDY3ODpcdFxuIDY3OTpcdFx0aWYgKCFJU19BTElHTkVEKCh1aW50cHRyX3QpXHUwMDI2eWFwcy1cdTAwM2VhdXhfZGF0YS1cdTAwM2VzdGF0dXNfcmVncywgYWxpZ25tZW50KSkge1xuIDY4MDpcdFx0XHRkZXZfd2Fybihtb3JzLVx1MDAzZWRldixcbiA2ODE6XHRcdFx0XHQgXCYjMzQ7U3RhdHVzIHJlZ2lzdGVycyBhcmUgbm90IGFsaWduZWQgdG8gJWQgYnl0ZXNcJiMzNDssXG4gNjgyOlx0XHRcdFx0IGFsaWdubWVudCk7XG4gNjgzOlx0XHR9XG4gNjg0Olx0XG4gNjg1Olx0XHR5YXBzLVx1MDAzZW9wcyA9IFx1MDAyNm1tODF4X3lhcHNfaHdfb3BzO1xuIDY4NjpcdFx0cmV0dXJuIHJldDtcbiA2ODc6XHRcbiA2ODg6XHRlcnJfZXhpdDpcbiA2ODk6XHRcdG1tODF4X3lhcHNfaHdfZmluaXNoKG1vcnMpO1xuIDY5MDpcdFx0cmV0dXJuIHJldDtcbiA2OTE6XHR9XG4gNjkyOlx0XG4gNjkzOlx0dm9pZCBtbTgxeF95YXBzX2h3X2ZpbmlzaChzdHJ1Y3QgbW04MXggKm1vcnMpXG4gNjk0Olx0e1xuIDY5NTpcdFx0c3RydWN0IG1tODF4X3lhcHMgKnlhcHM7XG4gNjk2Olx0XG4gNjk3Olx0XHR5YXBzID0gXHUwMDI2bW9ycy1cdTAwM2VoaWYudS55YXBzO1xuIDY5ODpcdFx0aWYgKHlhcHMtXHUwMDNlYXV4X2RhdGEpIHtcbiA2OTk6XHRcdFx0a2ZyZWUoeWFwcy1cdTAwM2VhdXhfZGF0YS1cdTAwM2Vmcm9tX2NoaXBfYnVmZmVyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIxMjEKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIGBtbTgxeF95YXBzX2h3X29wc2AgU3RydWN0dXJlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtbTgxeF95YXBzX2h3X29wc2AgdGhpbmcuLi4gSW1tZWRpYXRlbHksIG15IHRob3VnaHQgaXMsIGxldCYjMzk7cyB0cmFjayB0aGlzIGRvd24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBzdHJ1Y3R1cmUgaXMgYW5kIGhvdyBpdCYjMzk7cyB1c2VkLiBTaW5jZSBpdCYjMzk7cyBsaWtlbHkgYSBoYXJkd2FyZSBvcGVyYXRpb25zIHN0cnVjdHVyZSwgYW5kIGl0IGhhcyAmIzM0O3lhcHNfaHcmIzM0OyBpbiB0aGUgbmFtZSwgbXkgaW5zdGluY3QgaXMgdG8ganVtcCByaWdodCBpbnRvIHRoZSBgeWFwc19ody5jYCBmaWxlLiBTZWFyY2hpbmcgZm9yIHRoYXQgc3ltYm9sIHRoZXJlIGlzIHByb2JhYmx5IHRoZSBiZXN0IHN0YXJ0aW5nIHBvaW50LiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbTgxeF95YXBzX2h3X29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jPTU2Nz1zdGF0aWMgaW50IG1tODF4X3lhcHNfaHdfdXBkYXRlX3N0YXR1cyhzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYy02NDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYzo2NDU6c3RhdGljIGNvbnN0IHN0cnVjdCBtbTgxeF95YXBzX29wcyBtbTgxeF95YXBzX2h3X29wcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jLTY0Ni1cdC53cml0ZV9wa3RzID0gbW04MXhfeWFwc19od193cml0ZV9wa3RzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jPTY1MT1pbnQgbW04MXhfeWFwc19od19pbml0KHN0cnVjdCBtbTgxeCAqbW9ycylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYy02ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYzo2ODU6XHR5YXBzLVx1MDAzZW9wcyA9IFx1MDAyNm1tODF4X3lhcHNfaHdfb3BzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMtNjg2LVx0cmV0dXJuIHJldDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI3MDkKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGBtbTgxeGAgVVNCIHByb2JpbmcgcHJvY2Vzcy4gVGltZSB0byBwdWxsIHVwIHRoZSBzb3VyY2UgY29kZSDigJMgc3BlY2lmaWNhbGx5LCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuY2AuIEkmIzM5O20gaG9waW5nIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIFVTQiBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIGRldGVjdGlvbiB3aXRoaW4gdGhhdCBwYXJ0aWN1bGFyIG1vZHVsZS4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGtlcm5lbCBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUsIHRoZSBzZXF1ZW5jZSBvZiBldmVudHMsIGFuZCBhbnkgcXVpcmtzIHNwZWNpZmljIHRvIHRoaXMgYG1tODF4YCBpbXBsZW1lbnRhdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHNlY3JldHMgaXQgaG9sZHMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0LypcbiAgIDM6XHQgKiBDb3B5cmlnaHQgKGMpIDIwMTctMjAyNiBNb3JzZSBNaWNyb1xuICAgNDpcdCAqL1xuICAgNTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2ppZmZpZXMuaFx1MDAzZVxuICAgNjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4gICA3Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvdXNiLmhcdTAwM2VcbiAgIDg6XHQjaW5jbHVkZSBcJiMzNDtoaWYuaFwmIzM0O1xuICAgOTpcdCNpbmNsdWRlIFwmIzM0O2J1cy5oXCYjMzQ7XG4gIDEwOlx0I2luY2x1ZGUgXCYjMzQ7bWFjLmhcJiMzNDtcbiAgMTE6XHQjaW5jbHVkZSBcJiMzNDtjb3JlLmhcJiMzNDtcbiAgMTI6XHRcbiAgMTM6XHQvKlxuICAxNDpcdCAqIFVSQiB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gSWYgYW4gVVJCIGRvZXMgbm90IGNvbXBsZXRlIHdpdGhpbiB0aGlzXG4gIDE1Olx0ICogdGltZSwgaXQgd2lsbCBiZSBraWxsZWQuIFRoaXMgdGltZW91dCBuZWVkcyB0byBhY2NvdW50IGZvciBVU0Igc3VzcGVuZGFuZFxuICAxNjpcdCAqIHJlc3VtZSBvY2N1cnJpbmcgYmVmb3JlIHRoZSBVUkIgY2FuIGJlIHRyYW5zZmVycmVkLCBhbmQgaXQgYWxzbyBuZWVkcyB0b1xuICAxNzpcdCAqIGFjY291bnQgZm9yIHRyYW5zZmVycmluZyBVU0JfTUFYX1RSQU5TRkVSX1NJWkUgYnl0ZXMgb3ZlciBhIHBvdGVudGlhbGx5XG4gIDE4Olx0ICogc2xvdywgY29uZ2VzdGVkIFVTQiBGdWxsIFNwZWVkIGxpbmsuXG4gIDE5Olx0ICovXG4gIDIwOlx0I2RlZmluZSBVUkJfVElNRU9VVF9NUyAyNTBcbiAgMjE6XHRcbiAgMjI6XHQvKiBIaWdoIHNwZWVkIFVTQiAyXig0LTEpICogMTI1dXNlYyA9IDFtc2VjICovXG4gIDIzOlx0I2RlZmluZSBNTTgxWF9VU0JfSU5URVJSVVBUX0lOVEVSVkFMIDRcbiAgMjQ6XHRcbiAgMjU6XHQvKiBNYXggYnl0ZXMgcGVyIFVTQiByZWFkL3dyaXRlICovXG4gIDI2Olx0I2RlZmluZSBVU0JfTUFYX1RSQU5TRkVSX1NJWkUgKDE2ICogMTAyNClcbiAgMjc6XHRcbiAgMjg6XHQvKiBJTlQgRVAgYnVmZmVyIHNpemUgKi9cbiAgMjk6XHQjZGVmaW5lIE1NODFYX0VQX0lOVF9CVUZGRVJfU0laRSA4XG4gIDMwOlx0XG4gIDMxOlx0LyogTW9yc2UgdmVuZG9yIElEcyovXG4gIDMyOlx0I2RlZmluZSBNTTgxWF9WRU5ET1JfSUQgMHgzMjViXG4gIDMzOlx0I2RlZmluZSBNTTgxWF9NTTgxMFhfUFJPRFVDVF9JRCAweDgxMDBcbiAgMzQ6XHRcbiAgMzU6XHQvKiBQb3dlciBtYW5hZ2VtZW50IHJ1bnRpbWUgYXV0by1zdXNwZW5kIGRlbGF5IHZhbHVlIGluIG1pbGxpc2Vjb25kcyAqL1xuICAzNjpcdCNkZWZpbmUgUE1fUlVOVElNRV9BVVRPU1VTUEVORF9ERUxBWV9NUyAxMDBcbiAgMzc6XHRcbiAgMzg6XHRlbnVtIG1tODF4X3VzYl9lbmRwb2ludHMge1xuICAzOTpcdFx0TU04MVhfRVBfQ01EID0gMCxcbiAgNDA6XHRcdE1NODFYX0VQX0lOVCxcbiAgNDE6XHRcdE1NODFYX0VQX01FTV9SRCxcbiAgNDI6XHRcdE1NODFYX0VQX01FTV9XUixcbiAgNDM6XHRcdE1NODFYX0VQX1JFR19SRCxcbiAgNDQ6XHRcdE1NODFYX0VQX1JFR19XUixcbiAgNDU6XHRcdE1NODFYX0VQX0VQX01BWCxcbiAgNDY6XHR9O1xuICA0NzpcdFxuICA0ODpcdHN0cnVjdCBtbTgxeF91c2JfZW5kcG9pbnQge1xuICA0OTpcdFx0dW5zaWduZWQgY2hhciAqYnVmZmVyO1xuICA1MDpcdFx0c3RydWN0IHVyYiAqdXJiO1xuICA1MTpcdFx0X191OCBhZGRyO1xuICA1MjpcdFx0aW50IHNpemU7XG4gIDUzOlx0fTtcbiAgNTQ6XHRcbiAgNTU6XHRlbnVtIG1tODF4X3VzYl9mbGFncyB7IE1NODFYX1VTQl9GTEFHX0FUVEFDSEVELCBNTTgxWF9VU0JfRkxBR19TVVNQRU5ERUQgfTtcbiAgNTY6XHRcbiAgNTc6XHRzdHJ1Y3QgbW04MXhfdXNiIHtcbiAgNTg6XHRcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2O1xuICA1OTpcdFx0c3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZTtcbiAgNjA6XHRcdHN0cnVjdCBtbTgxeF91c2JfZW5kcG9pbnQgZW5kcG9pbnRzW01NODFYX0VQX0VQX01BWF07XG4gIDYxOlx0XHRpbnQgZXJyb3JzO1xuICA2MjpcdFxuICA2MzpcdFx0Lyogc2VyaWFsaXNlIFVTQiBkZXZpY2Ugc3RydWN0ICovXG4gIDY0Olx0XHRzdHJ1Y3QgbXV0ZXggbG9jaztcbiAgNjU6XHRcbiAgNjY6XHRcdC8qIHNlcmlhbGlzZSBVU0IgYnVzIGFjY2VzcyAqL1xuICA2NzpcdFx0c3RydWN0IG11dGV4IGJ1c19sb2NrO1xuICA2ODpcdFxuICA2OTpcdFx0Ym9vbCBvbmdvaW5nX2NtZDtcbiAgNzA6XHRcdGJvb2wgb25nb2luZ19ydztcbiAgNzE6XHRcdHdhaXRfcXVldWVfaGVhZF90IHJ3X2luX3dhaXQ7XG4gIDcyOlx0XHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuICA3MzpcdH07XG4gIDc0Olx0XG4gIDc1Olx0ZW51bSBtbTgxeF91c2JfY29tbWFuZF9kaXJlY3Rpb24ge1xuICA3NjpcdFx0TU04MVhfVVNCX1dSSVRFID0gMHgwMCxcbiAgNzc6XHRcdE1NODFYX1VTQl9SRUFEID0gMHg4MCxcbiAgNzg6XHRcdE1NODFYX1VTQl9SRVNFVCA9IDB4MDIsXG4gIDc5Olx0fTtcbiAgODA6XHRcbiAgODE6XHRzdHJ1Y3QgbW04MXhfdXNiX2NvbW1hbmQge1xuICA4MjpcdFx0X19sZTMyIGRpcjsgLyogTmV4dCBCVUxLIGRpcmVjdGlvbiAqL1xuICA4MzpcdFx0X19sZTMyIGFkZHJlc3M7IC8qIE5leHQgQlVMSyBhZGRyZXNzICovXG4gIDg0Olx0XHRfX2xlMzIgbGVuZ3RoOyAvKiBOZXh0IEJVTEsgc2l6ZSAqL1xuICA4NTpcdH07XG4gIDg2Olx0XG4gIDg3Olx0c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIG1tODF4X3VzYl90YWJsZVtdID0ge1xuICA4ODpcdFx0eyBVU0JfREVWSUNFKE1NODFYX1ZFTkRPUl9JRCwgTU04MVhfTU04MTBYX1BST0RVQ1RfSUQpIH0sXG4gIDg5Olx0XHR7fSAvKiBUZXJtaW5hdGluZyBlbnRyeSAqL1xuICA5MDpcdH07XG4gIDkxOlx0XG4gIDkyOlx0TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIG1tODF4X3VzYl90YWJsZSk7XG4gIDkzOlx0XG4gIDk0Olx0c3RhdGljIHZvaWQgbW04MXhfdXNiX2lycV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiAgOTU6XHR7XG4gIDk2Olx0XHRzdHJ1Y3QgbW04MXggKm1vcnMgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG1tODF4LCB1c2JfaXJxX3dvcmspO1xuICA5NzpcdFxuICA5ODpcdFx0bW04MXhfY2xhaW1fYnVzKG1vcnMpO1xuICA5OTpcdFx0bW04MXhfaHdfaXJxX2hhbmRsZShtb3JzKTtcbiAxMDA6XHRcdG1tODF4X3JlbGVhc2VfYnVzKG1vcnMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDM4MQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkRpdmluZyBpbnRvIHRoZSBVU0IgS2VybmVsIENvZGUqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIFVTQiBpc3N1ZS4gRmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGUgYHVzYi5jYCBmaWxlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcHJvYmluZyBtZWNoYW5pc20gaXMgd29ya2luZy4gSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgb3V0IHRoZSBwcm9iZSBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbi4gRnJvbSB0aGVyZSwgSSYjMzk7bGwga2VlcCBkaWdnaW5nIGRlZXBlciB3aXRoaW4gYHVzYi5jYCB0byBzZWUgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBVU0Igc3Vic3lzdGVtIGFuZCB3aGVyZSB0aGUgaXNzdWUgbWF5IGxheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDAwOlx0XG4gNDAxOlx0XHRtdXRleF9sb2NrKFx1MDAyNm11c2ItXHUwMDNlbG9jayk7XG4gNDAyOlx0XG4gNDAzOlx0XHRtdXNiLVx1MDAzZW9uZ29pbmdfcncgPSB0cnVlO1xuIDQwNDpcdFx0bXVzYi1cdTAwM2VlcnJvcnMgPSAwO1xuIDQwNTpcdFxuIDQwNjpcdFx0LyogU2VuZCBjb21tYW5kIGFoZWFkIHRvIHByZXBhcmUgZm9yIFRva2VucyAqL1xuIDQwNzpcdFx0Y21kLmRpciA9IGNwdV90b19sZTMyKE1NODFYX1VTQl9XUklURSk7XG4gNDA4Olx0XHRjbWQuYWRkcmVzcyA9IGNwdV90b19sZTMyKGFkZHJlc3MpO1xuIDQwOTpcdFx0Y21kLmxlbmd0aCA9IGNwdV90b19sZTMyKHNpemUpO1xuIDQxMDpcdFx0cmV0ID0gbW04MXhfdXNiX2NtZChtdXNiLCBcdTAwMjZjbWQpO1xuIDQxMTpcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIDQxMjpcdFx0XHRkZXZfZXJyKG1vcnMtXHUwMDNlZGV2LCBcJiMzNDttbTgxeF91c2JfbWVtX3JlYWQgZXJyb3IgJWRcJiMzNDssIHJldCk7XG4gNDEzOlx0XHRcdGdvdG8gZXJyb3I7XG4gNDE0Olx0XHR9XG4gNDE1Olx0XG4gNDE2Olx0XHRtZW1jcHkobXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS5idWZmZXIsIGRhdGEsIHNpemUpO1xuIDQxNzpcdFxuIDQxODpcdFx0LyogcHJlcGFyZSBhIHJlYWQgKi9cbiA0MTk6XHRcdHVzYl9maWxsX2J1bGtfdXJiKFxuIDQyMDpcdFx0XHRtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLnVyYiwgbXVzYi1cdTAwM2V1ZGV2LFxuIDQyMTpcdFx0XHR1c2Jfc25kYnVsa3BpcGUobXVzYi1cdTAwM2V1ZGV2LFxuIDQyMjpcdFx0XHRcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS5hZGRyKSxcbiA0MjM6XHRcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS5idWZmZXIsIHNpemUsXG4gNDI0Olx0XHRcdG1tODF4X3VzYl9tZW1fcndfY2FsbGJhY2ssIG1vcnMpO1xuIDQyNTpcdFxuIDQyNjpcdFx0cmV0ID0gdXNiX3N1Ym1pdF91cmIobXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS51cmIsIEdGUF9BVE9NSUMpO1xuIDQyNzpcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIDQyODpcdFx0XHRkZXZfZXJyKG1vcnMtXHUwMDNlZGV2LCBcJiMzNDstIGZhaWxlZCBzdWJtaXR0aW5nIHdyaXRlIHVyYiwgZXJyb3IgJWRcJiMzNDssXG4gNDI5Olx0XHRcdFx0cmV0KTtcbiA0MzA6XHRcdFx0cmV0ID0gKHJldCA9PSAtRU5PTUVNKSA/IHJldCA6IC1FSU87XG4gNDMxOlx0XHRcdGdvdG8gZXJyb3I7XG4gNDMyOlx0XHR9XG4gNDMzOlx0XG4gNDM0Olx0XHRyZXQgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdGltZW91dChcbiA0MzU6XHRcdFx0bXVzYi1cdTAwM2Vyd19pbl93YWl0LCAoIW11c2ItXHUwMDNlb25nb2luZ19ydyksXG4gNDM2Olx0XHRcdG1zZWNzX3RvX2ppZmZpZXMoVVJCX1RJTUVPVVRfTVMpKTtcbiA0Mzc6XHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbiA0Mzg6XHRcdFx0ZGV2X2Vycihtb3JzLVx1MDAzZWRldiwgXCYjMzQ7ZXJyb3IgJWRcJiMzNDssIHJldCk7XG4gNDM5Olx0XHRcdGdvdG8gZXJyb3I7XG4gNDQwOlx0XHR9IGVsc2UgaWYgKHJldCA9PSAwKSB7XG4gNDQxOlx0XHRcdC8qIFRpbWVkIG91dC4gKi9cbiA0NDI6XHRcdFx0dXNiX2tpbGxfdXJiKG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9XUl0udXJiKTtcbiA0NDM6XHRcdH1cbiA0NDQ6XHRcbiA0NDU6XHRcdGlmIChtdXNiLVx1MDAzZWVycm9ycykge1xuIDQ0NjpcdFx0XHRyZXQgPSBtdXNiLVx1MDAzZWVycm9ycztcbiA0NDc6XHRcdFx0ZGV2X2Vycihtb3JzLVx1MDAzZWRldiwgXCYjMzQ7ZXJyb3IgJWRcJiMzNDssIHJldCk7XG4gNDQ4Olx0XHRcdGdvdG8gZXJyb3I7XG4gNDQ5Olx0XHR9XG4gNDUwOlx0XG4gNDUxOlx0XHRyZXQgPSBzaXplO1xuIDQ1MjpcdFxuIDQ1MzpcdGVycm9yOlxuIDQ1NDpcdFx0bXVzYi1cdTAwM2VvbmdvaW5nX3J3ID0gZmFsc2U7XG4gNDU1Olx0XHRtdXRleF91bmxvY2soXHUwMDI2bXVzYi1cdTAwM2Vsb2NrKTtcbiA0NTY6XHRcdHJldHVybiByZXQ7XG4gNDU3Olx0fVxuIDQ1ODpcdFxuIDQ1OTpcdHN0YXRpYyBpbnQgbW04MXhfdXNiX2RtX3JlYWQoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkcmVzcywgdTggKmRhdGEsIGludCBsZW4pXG4gNDYwOlx0e1xuIDQ2MTpcdFx0c3NpemVfdCBvZmZzZXQgPSAwO1xuIDQ2MjpcdFx0aW50IHJldDtcbiA0NjM6XHRcdHN0cnVjdCBtbTgxeF91c2IgKm11c2IgPSAoc3RydWN0IG1tODF4X3VzYiAqKW1vcnMtXHUwMDNlZHJ2X3ByaXY7XG4gNDY0Olx0XG4gNDY1Olx0XHR3aGlsZSAob2Zmc2V0IFx1MDAzYyBsZW4pIHtcbiA0NjY6XHRcdFx0cmV0ID0gbW04MXhfdXNiX21lbV9yZWFkKG11c2IsIGFkZHJlc3MgJiM0Mzsgb2Zmc2V0LFxuIDQ2NzpcdFx0XHRcdFx0XHQgKHU4ICopKGRhdGEgJiM0Mzsgb2Zmc2V0KSxcbiA0Njg6XHRcdFx0XHRcdFx0IG1pbigoc3NpemVfdCkobGVuIC0gb2Zmc2V0KSxcbiA0Njk6XHRcdFx0XHRcdFx0ICAgICAoc3NpemVfdClVU0JfTUFYX1RSQU5TRkVSX1NJWkUpKTtcbiA0NzA6XHRcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIDQ3MTpcdFx0XHRcdGRldl9lcnIobW9ycy1cdTAwM2VkZXYsIFwmIzM0OyVzIGZhaWxlZCAoZXJybm89JWQpXCYjMzQ7LCBfX2Z1bmNfXyxcbiA0NzI6XHRcdFx0XHRcdHJldCk7XG4gNDczOlx0XHRcdFx0cmV0dXJuIHJldDtcbiA0NzQ6XHRcdFx0fVxuIDQ3NTpcdFxuIDQ3NjpcdFx0XHRvZmZzZXQgJiM0Mzs9IHJldDtcbiA0Nzc6XHRcdH1cbiA0Nzg6XHRcbiA0Nzk6XHRcdHJldHVybiAwO1xuIDQ4MDpcdH1cbiA0ODE6XHRcbiA0ODI6XHRzdGF0aWMgaW50IG1tODF4X3VzYl9kbV93cml0ZShzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBhZGRyZXNzLCBjb25zdCB1OCAqZGF0YSxcbiA0ODM6XHRcdFx0XHQgICAgICBpbnQgbGVuKVxuIDQ4NDpcdHtcbiA0ODU6XHRcdHNzaXplX3Qgb2Zmc2V0ID0gMDtcbiA0ODY6XHRcdGludCByZXQ7XG4gNDg3Olx0XHRzdHJ1Y3QgbW04MXhfdXNiICptdXNiID0gKHN0cnVjdCBtbTgxeF91c2IgKiltb3JzLVx1MDAzZWRydl9wcml2O1xuIDQ4ODpcdFxuIDQ4OTpcdFx0d2hpbGUgKG9mZnNldCBcdTAwM2MgbGVuKSB7XG4gNDkwOlx0XHRcdHJldCA9IG1tODF4X3VzYl9tZW1fd3JpdGUobXVzYiwgYWRkcmVzcyAmIzQzOyBvZmZzZXQsXG4gNDkxOlx0XHRcdFx0XHRcdCAgKHU4ICopKGRhdGEgJiM0Mzsgb2Zmc2V0KSxcbiA0OTI6XHRcdFx0XHRcdFx0ICBtaW4oKHNzaXplX3QpKGxlbiAtIG9mZnNldCksXG4gNDkzOlx0XHRcdFx0XHRcdCAgICAgIChzc2l6ZV90KVVTQl9NQVhfVFJBTlNGRVJfU0laRSkpO1xuIDQ5NDpcdFx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gNDk1Olx0XHRcdFx0ZGV2X2Vycihtb3JzLVx1MDAzZWRldiwgXCYjMzQ7JXMgZmFpbGVkIChlcnJubz0lZClcJiMzNDssIF9fZnVuY19fLFxuIDQ5NjpcdFx0XHRcdFx0cmV0KTtcbiA0OTc6XHRcdFx0XHRyZXR1cm4gcmV0O1xuIDQ5ODpcdFx0XHR9XG4gNDk5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2MTU3CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgcHJvYmUgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBsaW5lcyA1MDAtNjAwIGluIGB1c2IuY2AuCgoqKkRpdmluZyBpbnRvIHRoZSBgdXNiLmNgIFByb2JlIEZ1bmN0aW9uKioKCk9rYXksIGxldCYjMzk7cyB6ZXJvIGluIG9uIHRoZSBwcm9iZSBmdW5jdGlvbiwgdGhhdCBjcnVjaWFsIHBpZWNlIGluIGB1c2IuY2AuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhpcyBwYXJ0aWN1bGFyIFVTQiBkcml2ZXIgaGFuZGxlcyBkZXZpY2UgZGV0ZWN0aW9uIGFuZCBpbml0aWFsaXphdGlvbi4gQWxyaWdodCwgbGluZXMgNTAwIHRocm91Z2ggNjAwLCB0aGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBjaHVuayBvZiB0aGUgc2V0dXAgbG9naWMuIEkmIzM5O20gbG9va2luZyBmb3IgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBVU0IgY29yZSwgaG93IGl0IGlkZW50aWZpZXMgdGhlIHNwZWNpZmljIGRldmljZSwgYW5kIGFueSBpbml0aWFsIHJlc291cmNlIGFsbG9jYXRpb24uIEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gYW55IHZlbmRvci9wcm9kdWN0IElEIGNoZWNrcywgYW5kIGhvdyBpdCBoYW5kbGVzIGRpZmZlcmVudCBVU0IgY29uZmlndXJhdGlvbnMg4oCTIHRoYXQmIzM5O3Mgb2Z0ZW4gd2hlcmUgdGhlIHN1YnRsZSBidWdzIG9yIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIGxpa2UgdG8gaGlkZS4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgY2xldmVybmVzcyBpbiBoYW5kbGluZyBxdWlya3Mgb3IgY29tcGF0aWJpbGl0eSBpc3N1ZXMgd2l0aCBvbGRlciBoYXJkd2FyZS4uLiBJJiMzOTtsbCBiZSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgbG9ja2luZyBpc3N1ZXMsIGVzcGVjaWFsbHkgaWYgdGhlcmUmIzM5O3MgYW55IGludGVyYWN0aW9uIHdpdGggaW50ZXJydXB0IGhhbmRsZXJzLiBJJiMzOTttIGdvaW5nIHRvIHNjYW4gZm9yIGFueSBjYWxscyB0byBgdXNiX2FsbG9jX2NvaGVyZW50YCBvciBzaW1pbGFyIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9ucywgc2luY2UgdGhhdCYjMzk7cyBvZnRlbiBhIHNvdXJjZSBvZiBjb250ZW50aW9uIGlmIG5vdCBkb25lIGNvcnJlY3RseS4gTGV0JiMzOTtzIGdldCByZWFkaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvdXNiLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1MDA6XHRcdFx0b2Zmc2V0ICYjNDM7PSByZXQ7XG4gNTAxOlx0XHR9XG4gNTAyOlx0XG4gNTAzOlx0XHRyZXR1cm4gMDtcbiA1MDQ6XHR9XG4gNTA1Olx0XG4gNTA2Olx0c3RhdGljIGludCBtbTgxeF91c2JfcmVnMzJfcmVhZChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBhZGRyZXNzLCB1MzIgKnZhbClcbiA1MDc6XHR7XG4gNTA4Olx0XHRpbnQgcmV0ID0gMDtcbiA1MDk6XHRcdHN0cnVjdCBtbTgxeF91c2IgKm11c2IgPSAoc3RydWN0IG1tODF4X3VzYiAqKW1vcnMtXHUwMDNlZHJ2X3ByaXY7XG4gNTEwOlx0XG4gNTExOlx0XHRyZXQgPSBtbTgxeF91c2JfbWVtX3JlYWQobXVzYiwgYWRkcmVzcywgKHU4ICopdmFsLCBzaXplb2YoKnZhbCkpO1xuIDUxMjpcdFx0aWYgKHJldCA9PSBzaXplb2YoKnZhbCkpIHtcbiA1MTM6XHRcdFx0KnZhbCA9IGxlMzJfdG9fY3B1cCgoX19sZTMyICopdmFsKTtcbiA1MTQ6XHRcdFx0cmV0dXJuIDA7XG4gNTE1Olx0XHR9XG4gNTE2Olx0XG4gNTE3Olx0XHRkZXZfZXJyKG1vcnMtXHUwMDNlZGV2LCBcJiMzNDt1c2IgcmVnMzIgcmVhZCBmYWlsZWQgJWRcJiMzNDssIHJldCk7XG4gNTE4Olx0XHRyZXR1cm4gcmV0O1xuIDUxOTpcdH1cbiA1MjA6XHRcbiA1MjE6XHRzdGF0aWMgaW50IG1tODF4X3VzYl9yZWczMl93cml0ZShzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBhZGRyZXNzLCB1MzIgdmFsKVxuIDUyMjpcdHtcbiA1MjM6XHRcdGludCByZXQgPSAwO1xuIDUyNDpcdFx0c3RydWN0IG1tODF4X3VzYiAqbXVzYiA9IChzdHJ1Y3QgbW04MXhfdXNiICopbW9ycy1cdTAwM2VkcnZfcHJpdjtcbiA1MjU6XHRcdF9fbGUzMiB2YWxfbGUgPSBjcHVfdG9fbGUzMih2YWwpO1xuIDUyNjpcdFxuIDUyNzpcdFx0cmV0ID0gbW04MXhfdXNiX21lbV93cml0ZShtdXNiLCBhZGRyZXNzLCAodTggKilcdTAwMjZ2YWxfbGUsIHNpemVvZih2YWxfbGUpKTtcbiA1Mjg6XHRcdGlmIChyZXQgPT0gc2l6ZW9mKHZhbF9sZSkpXG4gNTI5Olx0XHRcdHJldHVybiAwO1xuIDUzMDpcdFxuIDUzMTpcdFx0ZGV2X2Vycihtb3JzLVx1MDAzZWRldiwgXCYjMzQ7dXNiIHJlZzMyIHdyaXRlIGZhaWxlZCAlZFwmIzM0OywgcmV0KTtcbiA1MzI6XHRcdHJldHVybiByZXQ7XG4gNTMzOlx0fVxuIDUzNDpcdFxuIDUzNTpcdHN0YXRpYyB2b2lkIG1tODF4X3VzYl9idXNfZW5hYmxlKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGUpXG4gNTM2Olx0e1xuIDUzNzpcdFx0c3RydWN0IG1tODF4X3VzYiAqbXVzYiA9IChzdHJ1Y3QgbW04MXhfdXNiICopbW9ycy1cdTAwM2VkcnZfcHJpdjtcbiA1Mzg6XHRcbiA1Mzk6XHRcdGlmIChlbmFibGUpXG4gNTQwOlx0XHRcdHVzYl9hdXRvcG1fZ2V0X2ludGVyZmFjZShtdXNiLVx1MDAzZWludGVyZmFjZSk7XG4gNTQxOlx0XHRlbHNlXG4gNTQyOlx0XHRcdHVzYl9hdXRvcG1fcHV0X2ludGVyZmFjZShtdXNiLVx1MDAzZWludGVyZmFjZSk7XG4gNTQzOlx0fVxuIDU0NDpcdFxuIDU0NTpcdHN0YXRpYyB2b2lkIG1tODF4X3VzYl9jbGFpbV9idXMoc3RydWN0IG1tODF4ICptb3JzKVxuIDU0NjpcdHtcbiA1NDc6XHRcdHN0cnVjdCBtbTgxeF91c2IgKm11c2IgPSAoc3RydWN0IG1tODF4X3VzYiAqKW1vcnMtXHUwMDNlZHJ2X3ByaXY7XG4gNTQ4Olx0XG4gNTQ5Olx0XHRtdXRleF9sb2NrKFx1MDAyNm11c2ItXHUwMDNlYnVzX2xvY2spO1xuIDU1MDpcdH1cbiA1NTE6XHRcbiA1NTI6XHRzdGF0aWMgdm9pZCBtbTgxeF91c2JfcmVsZWFzZV9idXMoc3RydWN0IG1tODF4ICptb3JzKVxuIDU1MzpcdHtcbiA1NTQ6XHRcdHN0cnVjdCBtbTgxeF91c2IgKm11c2IgPSAoc3RydWN0IG1tODF4X3VzYiAqKW1vcnMtXHUwMDNlZHJ2X3ByaXY7XG4gNTU1Olx0XG4gNTU2Olx0XHRtdXRleF91bmxvY2soXHUwMDI2bXVzYi1cdTAwM2VidXNfbG9jayk7XG4gNTU3Olx0fVxuIDU1ODpcdFxuIDU1OTpcdHN0YXRpYyB2b2lkIG1tODF4X3VzYl9zZXRfaXJxKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGUpXG4gNTYwOlx0e1xuIDU2MTpcdH1cbiA1NjI6XHRcbiA1NjM6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG1tODF4X2J1c19vcHMgbW04MXhfdXNiX29wcyA9IHtcbiA1NjQ6XHRcdC5kbV9yZWFkID0gbW04MXhfdXNiX2RtX3JlYWQsXG4gNTY1Olx0XHQuZG1fd3JpdGUgPSBtbTgxeF91c2JfZG1fd3JpdGUsXG4gNTY2Olx0XHQucmVnMzJfcmVhZCA9IG1tODF4X3VzYl9yZWczMl9yZWFkLFxuIDU2NzpcdFx0LnJlZzMyX3dyaXRlID0gbW04MXhfdXNiX3JlZzMyX3dyaXRlLFxuIDU2ODpcdFx0LmRpZ2l0YWxfcmVzZXQgPSBtbTgxeF91c2JfbmRyX3Jlc2V0LFxuIDU2OTpcdFx0LnNldF9idXNfZW5hYmxlID0gbW04MXhfdXNiX2J1c19lbmFibGUsXG4gNTcwOlx0XHQuY2xhaW0gPSBtbTgxeF91c2JfY2xhaW1fYnVzLFxuIDU3MTpcdFx0LnJlbGVhc2UgPSBtbTgxeF91c2JfcmVsZWFzZV9idXMsXG4gNTcyOlx0XHQuc2V0X2lycSA9IG1tODF4X3VzYl9zZXRfaXJxLFxuIDU3MzpcdFx0LmJ1bGtfYWxpZ25tZW50ID0gTU04MVhfQlVTX0RFRkFVTFRfQlVMS19BTElHTk1FTlQsXG4gNTc0Olx0fTtcbiA1NzU6XHRcbiA1NzY6XHRzdGF0aWMgaW50IG1tODF4X3VzYl9kZXRlY3RfZW5kcG9pbnRzKHN0cnVjdCBtbTgxeCAqbW9ycyxcbiA1Nzc6XHRcdFx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuIDU3ODpcdHtcbiA1Nzk6XHRcdGludCByZXQ7XG4gNTgwOlx0XHR1bnNpZ25lZCBpbnQgaTtcbiA1ODE6XHRcdHN0cnVjdCBtbTgxeF91c2IgKm11c2IgPSAoc3RydWN0IG1tODF4X3VzYiAqKW1vcnMtXHUwMDNlZHJ2X3ByaXY7XG4gNTgyOlx0XHRzdHJ1Y3QgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3IgKmVwX2Rlc2M7XG4gNTgzOlx0XHRzdHJ1Y3QgdXNiX2hvc3RfaW50ZXJmYWNlICppbnRmX2Rlc2MgPSBpbnRmLVx1MDAzZWN1cl9hbHRzZXR0aW5nO1xuIDU4NDpcdFxuIDU4NTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgaW50Zl9kZXNjLVx1MDAzZWRlc2MuYk51bUVuZHBvaW50czsgaSYjNDM7JiM0MzspIHtcbiA1ODY6XHRcdFx0ZXBfZGVzYyA9IFx1MDAyNmludGZfZGVzYy1cdTAwM2VlbmRwb2ludFtpXS5kZXNjO1xuIDU4NzpcdFxuIDU4ODpcdFx0XHRpZiAodXNiX2VuZHBvaW50X2lzX2J1bGtfaW4oZXBfZGVzYykpIHtcbiA1ODk6XHRcdFx0XHRpZiAoIW11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9SRF0uYWRkcikge1xuIDU5MDpcdFx0XHRcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1JEXS5hZGRyID1cbiA1OTE6XHRcdFx0XHRcdFx0dXNiX2VuZHBvaW50X251bShlcF9kZXNjKTtcbiA1OTI6XHRcdFx0XHRcdG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9SRF0uc2l6ZSA9XG4gNTkzOlx0XHRcdFx0XHRcdHVzYl9lbmRwb2ludF9tYXhwKGVwX2Rlc2MpO1xuIDU5NDpcdFx0XHRcdH0gZWxzZSBpZiAoIW11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX1JFR19SRF0uYWRkcikge1xuIDU5NTpcdFx0XHRcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfUkVHX1JEXS5hZGRyID1cbiA1OTY6XHRcdFx0XHRcdFx0dXNiX2VuZHBvaW50X251bShlcF9kZXNjKTtcbiA1OTc6XHRcdFx0XHRcdG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX1JFR19SRF0uc2l6ZSA9XG4gNTk4Olx0XHRcdFx0XHRcdHVzYl9lbmRwb2ludF9tYXhwKGVwX2Rlc2MpO1xuIDU5OTpcdFx0XHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgyNzIKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aGlua2luZyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgbW04MXhfdXNiX3Byb2JlIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgbW04MXhfdXNiX3Byb2JlYCBpbiBgdXNiLmNgLiBTb3VuZHMgbGlrZSB0aGUgcHJvYmUgZnVuY3Rpb24gZm9yIGEgVVNCIGRldmljZSwgbGlrZWx5IGFuIG1tODF4LWJhc2VkIGRldmljZS4gSSYjMzk7bSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IHRvIGxpbmVzIDYwMC03MjAuIFRoYXQgcmFuZ2UgdXN1YWxseSBlbmNvbXBhc3NlcyBhIHNpZ25pZmljYW50IHBvcnRpb24gb2YgdGhlIHByb2JlJiMzOTtzIGNvcmUgbG9naWMuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGRldmljZSBJRCBtYXRjaGluZywgcmVzb3VyY2UgYWxsb2NhdGlvbiAoaWYgcmVxdWlyZWQpLCBkcml2ZXIgYmluZGluZywgYW5kIHBvc3NpYmx5IHNvbWUgaW5pdGlhbCBkZXZpY2Ugc2V0dXAuIEkmIzM5O20gaG9waW5nIGl0JiMzOTtzIHdlbGwtY29tbWVudGVkLCBidXQgZXZlbiBpZiBpdCYjMzk7cyBub3QsIEkmIzM5O20gdXNlZCB0byBpbmZlcnJpbmcgdGhlIGNvZGUgZmxvdyBmcm9tIHRoZSBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbiBjYWxscy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDYwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDYwMDpcdFx0XHR9IGVsc2UgaWYgKHVzYl9lbmRwb2ludF9pc19idWxrX291dChlcF9kZXNjKSkge1xuIDYwMTpcdFx0XHRcdGlmICghbXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS5hZGRyKSB7XG4gNjAyOlx0XHRcdFx0XHRtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLmFkZHIgPVxuIDYwMzpcdFx0XHRcdFx0XHR1c2JfZW5kcG9pbnRfbnVtKGVwX2Rlc2MpO1xuIDYwNDpcdFx0XHRcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS5zaXplID1cbiA2MDU6XHRcdFx0XHRcdFx0dXNiX2VuZHBvaW50X21heHAoZXBfZGVzYyk7XG4gNjA2Olx0XHRcdFx0fSBlbHNlIGlmICghbXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfUkVHX1dSXS5hZGRyKSB7XG4gNjA3Olx0XHRcdFx0XHRtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9SRUdfV1JdLmFkZHIgPVxuIDYwODpcdFx0XHRcdFx0XHR1c2JfZW5kcG9pbnRfbnVtKGVwX2Rlc2MpO1xuIDYwOTpcdFx0XHRcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfUkVHX1dSXS5zaXplID1cbiA2MTA6XHRcdFx0XHRcdFx0dXNiX2VuZHBvaW50X21heHAoZXBfZGVzYyk7XG4gNjExOlx0XHRcdFx0fVxuIDYxMjpcdFx0XHR9IGVsc2UgaWYgKHVzYl9lbmRwb2ludF9pc19pbnRfaW4oZXBfZGVzYykpIHtcbiA2MTM6XHRcdFx0XHRtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9JTlRdLmFkZHIgPVxuIDYxNDpcdFx0XHRcdFx0dXNiX2VuZHBvaW50X251bShlcF9kZXNjKTtcbiA2MTU6XHRcdFx0XHRtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9JTlRdLnNpemUgPVxuIDYxNjpcdFx0XHRcdFx0dXNiX2VuZHBvaW50X21heHAoZXBfZGVzYyk7XG4gNjE3Olx0XHRcdH1cbiA2MTg6XHRcdH1cbiA2MTk6XHRcbiA2MjA6XHRcdGRldl9kYmcobW9ycy1cdTAwM2VkZXYsIFwmIzM0O1xcdE1lbW9yeSBFbmRwb2ludCBJTiAlcyBkZXRlY3RlZDogJXUgc2l6ZSAldVwmIzM0OyxcbiA2MjE6XHRcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1JEXS5hZGRyID8gXCYjMzQ7XCYjMzQ7IDogXCYjMzQ7bm90XCYjMzQ7LFxuIDYyMjpcdFx0XHRtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fUkRdLmFkZHIsXG4gNjIzOlx0XHRcdG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9SRF0uc2l6ZSk7XG4gNjI0Olx0XHRkZXZfZGJnKG1vcnMtXHUwMDNlZGV2LCBcJiMzNDtcXHRNZW1vcnkgRW5kcG9pbnQgT1VUICVzIGRldGVjdGVkOiAldSBzaXplICV1XCYjMzQ7LFxuIDYyNTpcdFx0XHRtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLmFkZHIgPyBcJiMzNDtcJiMzNDsgOiBcJiMzNDtub3RcJiMzNDssXG4gNjI2Olx0XHRcdG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9XUl0uYWRkcixcbiA2Mjc6XHRcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS5zaXplKTtcbiA2Mjg6XHRcdGRldl9kYmcobW9ycy1cdTAwM2VkZXYsIFwmIzM0O1xcdFJlZ2lzdGVyIEVuZHBvaW50IElOICVzIGRldGVjdGVkOiAldVwmIzM0OyxcbiA2Mjk6XHRcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfUkVHX1JEXS5hZGRyID8gXCYjMzQ7XCYjMzQ7IDogXCYjMzQ7bm90XCYjMzQ7LFxuIDYzMDpcdFx0XHRtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9SRUdfUkRdLmFkZHIpO1xuIDYzMTpcdFx0ZGV2X2RiZyhtb3JzLVx1MDAzZWRldiwgXCYjMzQ7XFx0UmVnaXN0ZXIgRW5kcG9pbnQgT1VUICVzIGRldGVjdGVkOiAldVwmIzM0OyxcbiA2MzI6XHRcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfUkVHX1dSXS5hZGRyID8gXCYjMzQ7XCYjMzQ7IDogXCYjMzQ7bm90XCYjMzQ7LFxuIDYzMzpcdFx0XHRtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9SRUdfV1JdLmFkZHIpO1xuIDYzNDpcdFx0ZGV2X2RiZyhtb3JzLVx1MDAzZWRldiwgXCYjMzQ7XFx0U3RhdHMgSU4gZW5kcG9pbnQgJXMgZGV0ZWN0ZWQ6ICV1XCYjMzQ7LFxuIDYzNTpcdFx0XHRtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9JTlRdLmFkZHIgPyBcJiMzNDtcJiMzNDsgOiBcJiMzNDtub3RcJiMzNDssXG4gNjM2Olx0XHRcdG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0lOVF0uYWRkcik7XG4gNjM3Olx0XG4gNjM4Olx0XHQvKiBWZXJpZnkgd2UgaGF2ZSBhbiBJTiBhbmQgT1VUICovXG4gNjM5Olx0XHRpZiAoIShtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fUkRdLmFkZHIgXHUwMDI2XHUwMDI2XG4gNjQwOlx0XHQgICAgICBtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLmFkZHIpKVxuIDY0MTpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbiA2NDI6XHRcbiA2NDM6XHRcdC8qIFZlcmlmeSB0aGUgc3RhdHMgTU04MVhfRVBfSU5UIGlzIGRldGVjdGVkICovXG4gNjQ0Olx0XHRpZiAoIW11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0lOVF0uYWRkcilcbiA2NDU6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4gNjQ2Olx0XG4gNjQ3Olx0XHQvKiBWZXJpZnkgbWluaW11bSBpbnRlcnJ1cHQgc3RhdHVzIHJlYWQgKi9cbiA2NDg6XHRcdGlmIChtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9JTlRdLnNpemUgXHUwMDNjIDgpXG4gNjQ5Olx0XHRcdHJldHVybiAtRU5PREVWO1xuIDY1MDpcdFxuIDY1MTpcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXS51cmIgPSB1c2JfYWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpO1xuIDY1MjpcdFx0aWYgKCFtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9DTURdLnVyYikge1xuIDY1MzpcdFx0XHRyZXQgPSAtRU5PTUVNO1xuIDY1NDpcdFx0XHRnb3RvIGVycl9lcDtcbiA2NTU6XHRcdH1cbiA2NTY6XHRcbiA2NTc6XHRcdG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9SRF0udXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTtcbiA2NTg6XHRcdGlmICghbXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1JEXS51cmIpIHtcbiA2NTk6XHRcdFx0cmV0ID0gLUVOT01FTTtcbiA2NjA6XHRcdFx0Z290byBlcnJfZXA7XG4gNjYxOlx0XHR9XG4gNjYyOlx0XG4gNjYzOlx0XHRtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLnVyYiA9IHVzYl9hbGxvY191cmIoMCwgR0ZQX0tFUk5FTCk7XG4gNjY0Olx0XHRpZiAoIW11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9XUl0udXJiKSB7XG4gNjY1Olx0XHRcdHJldCA9IC1FTk9NRU07XG4gNjY2Olx0XHRcdGdvdG8gZXJyX2VwO1xuIDY2NzpcdFx0fVxuIDY2ODpcdFxuIDY2OTpcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1JEXS5idWZmZXIgPVxuIDY3MDpcdFx0XHRrbWFsbG9jKFVTQl9NQVhfVFJBTlNGRVJfU0laRSwgR0ZQX0tFUk5FTCk7XG4gNjcxOlx0XHRpZiAoIW11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9SRF0uYnVmZmVyKSB7XG4gNjcyOlx0XHRcdHJldCA9IC1FTk9NRU07XG4gNjczOlx0XHRcdGdvdG8gZXJyX2VwO1xuIDY3NDpcdFx0fVxuIDY3NTpcdFxuIDY3NjpcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS5idWZmZXIgPVxuIDY3NzpcdFx0XHRrbWFsbG9jKFVTQl9NQVhfVFJBTlNGRVJfU0laRSwgR0ZQX0tFUk5FTCk7XG4gNjc4Olx0XHRpZiAoIW11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9XUl0uYnVmZmVyKSB7XG4gNjc5Olx0XHRcdHJldCA9IC1FTk9NRU07XG4gNjgwOlx0XHRcdGdvdG8gZXJyX2VwO1xuIDY4MTpcdFx0fVxuIDY4MjpcdFxuIDY4MzpcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXS5idWZmZXIgPSB1c2JfYWxsb2NfY29oZXJlbnQoXG4gNjg0Olx0XHRcdG11c2ItXHUwMDNldWRldiwgc2l6ZW9mKHN0cnVjdCBtbTgxeF91c2JfY29tbWFuZCksIEdGUF9LRVJORUwsXG4gNjg1Olx0XHRcdFx1MDAyNm11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0NNRF0udXJiLVx1MDAzZXRyYW5zZmVyX2RtYSk7XG4gNjg2Olx0XG4gNjg3Olx0XHRpZiAoIW11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0NNRF0uYnVmZmVyKSB7XG4gNjg4Olx0XHRcdHJldCA9IC1FTk9NRU07XG4gNjg5Olx0XHRcdGdvdG8gZXJyX2VwO1xuIDY5MDpcdFx0fVxuIDY5MTpcdFxuIDY5MjpcdFx0LyogQXNzaWduIGNvbW1hbmQgdG8gbWVtb3J5IG91dCBlbmQgcG9pbnQgKi9cbiA2OTM6XHRcdG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0NNRF0uYWRkciA9XG4gNjk0Olx0XHRcdG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9XUl0uYWRkcjtcbiA2OTU6XHRcdG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0NNRF0uc2l6ZSA9XG4gNjk2Olx0XHRcdG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9XUl0uc2l6ZTtcbiA2OTc6XHRcbiA2OTg6XHRcdHJldHVybiAwO1xuIDY5OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDQ2OAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgVVNCIFByb2JlIEZ1bmN0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGJhY2sgaW4uIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGBtbTgxeF91c2JfcHJvYmVgIGZ1bmN0aW9uIG5vdy4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHByb2JlIGZ1bmN0aW9ucyBhcmUgY3JpdGljYWwgZm9yIGRldmljZSBpbml0aWFsaXphdGlvbiBhbmQgYXJlIG9mdGVuIHRoZSBlbnRyeSBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgYSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggaGFyZHdhcmUuIEkmIzM5O20gbm90aW5nIHRoZSBzcGVjaWZpYyBsb2NhdGlvbiwgYXJvdW5kIGxpbmUgNzAwLiBUaGlzIGlzIGEgY29tbW9uIHBhdHRlcm4sIGFuZCBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGRldGFpbGVkIGFuYWx5c2lzLiBJJiMzOTtsbCBuZWVkIHRvIG1ldGljdWxvdXNseSBleGFtaW5lIHRoZSBjb2RlIGZsb3cgZnJvbSBoZXJlLCBtYXBwaW5nIHRoZSBzdGVwcyB0aGUgZnVuY3Rpb24gdGFrZXMgdG8gZGV0ZWN0LCBjb25maWd1cmUsIGFuZCB1bHRpbWF0ZWx5IGFjdGl2YXRlIHRoZSBVU0IgZGV2aWNlLiBJIHdpbGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLCBhbmQgdGhlIHBvdGVudGlhbCBlcnJvciBjb25kaXRpb25zIHRoYXQgbWlnaHQgYXJpc2UuIEkgd2lsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBpbmZvcm1hdGlvbiBpcyBwYXNzZWQgaW4sIHdoYXQgZnVuY3Rpb25zIGFyZSBjYWxsZWQsIGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGUgZGV2aWNlIGJlY29tZXMgZnVsbHkgb3BlcmF0aW9uYWwuIEkga25vdyB0aGUgZGV2aWwgaXMgb2Z0ZW4gaW4gdGhlIGRldGFpbHMgd2hlbiBkZWFsaW5nIHdpdGggVVNCLCBzbyBhIHRob3JvdWdoLCBsaW5lLWJ5LWxpbmUgaW5zcGVjdGlvbiBpcyBpbiBvcmRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA3MDA6XHRlcnJfZXA6XG4gNzAxOlx0XHRpZiAobXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXS51cmIgXHUwMDI2XHUwMDI2XG4gNzAyOlx0XHQgICAgbXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXS5idWZmZXIpXG4gNzAzOlx0XHRcdHVzYl9mcmVlX2NvaGVyZW50KFxuIDcwNDpcdFx0XHRcdG11c2ItXHUwMDNldWRldiwgc2l6ZW9mKHN0cnVjdCBtbTgxeF91c2JfY29tbWFuZCksXG4gNzA1Olx0XHRcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXS5idWZmZXIsXG4gNzA2Olx0XHRcdFx0bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXS51cmItXHUwMDNldHJhbnNmZXJfZG1hKTtcbiA3MDc6XHRcdHVzYl9mcmVlX3VyYihtdXNiLVx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fUkRdLnVyYik7XG4gNzA4Olx0XHR1c2JfZnJlZV91cmIobXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXS51cmIpO1xuIDcwOTpcdFx0dXNiX2ZyZWVfdXJiKG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9XUl0udXJiKTtcbiA3MTA6XHRcdGtmcmVlKG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9SRF0uYnVmZmVyKTtcbiA3MTE6XHRcdGtmcmVlKG11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9XUl0uYnVmZmVyKTtcbiA3MTI6XHRcbiA3MTM6XHRcdHJldHVybiByZXQ7XG4gNzE0Olx0fVxuIDcxNTpcdFxuIDcxNjpcdHN0YXRpYyB2b2lkIG1tODF4X3VyYl9jbGVhbnVwKHN0cnVjdCBtbTgxeCAqbW9ycylcbiA3MTc6XHR7XG4gNzE4Olx0XHRzdHJ1Y3QgbW04MXhfdXNiICptdXNiID0gKHN0cnVjdCBtbTgxeF91c2IgKiltb3JzLVx1MDAzZWRydl9wcml2O1xuIDcxOTpcdFx0c3RydWN0IG1tODF4X3VzYl9lbmRwb2ludCAqaW50X2VwID0gXHUwMDI2bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfSU5UXTtcbiA3MjA6XHRcdHN0cnVjdCBtbTgxeF91c2JfZW5kcG9pbnQgKnJkX2VwID0gXHUwMDI2bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1JEXTtcbiA3MjE6XHRcdHN0cnVjdCBtbTgxeF91c2JfZW5kcG9pbnQgKndyX2VwID0gXHUwMDI2bXVzYi1cdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXTtcbiA3MjI6XHRcdHN0cnVjdCBtbTgxeF91c2JfZW5kcG9pbnQgKmNtZF9lcCA9IFx1MDAyNm11c2ItXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0NNRF07XG4gNzIzOlx0XG4gNzI0Olx0XHR1c2Jfa2lsbF91cmIocmRfZXAtXHUwMDNldXJiKTtcbiA3MjU6XHRcdHVzYl9raWxsX3VyYih3cl9lcC1cdTAwM2V1cmIpO1xuIDcyNjpcdFx0dXNiX2tpbGxfdXJiKGNtZF9lcC1cdTAwM2V1cmIpO1xuIDcyNzpcdFxuIDcyODpcdFx0aWYgKGludF9lcC1cdTAwM2V1cmIpXG4gNzI5Olx0XHRcdHVzYl9mcmVlX2NvaGVyZW50KG11c2ItXHUwMDNldWRldiwgTU04MVhfRVBfSU5UX0JVRkZFUl9TSVpFLFxuIDczMDpcdFx0XHRcdFx0ICBpbnRfZXAtXHUwMDNlYnVmZmVyLCBpbnRfZXAtXHUwMDNldXJiLVx1MDAzZXRyYW5zZmVyX2RtYSk7XG4gNzMxOlx0XG4gNzMyOlx0XHRpZiAoY21kX2VwLVx1MDAzZXVyYilcbiA3MzM6XHRcdFx0dXNiX2ZyZWVfY29oZXJlbnQobXVzYi1cdTAwM2V1ZGV2LCBzaXplb2Yoc3RydWN0IG1tODF4X3VzYl9jb21tYW5kKSxcbiA3MzQ6XHRcdFx0XHRcdCAgY21kX2VwLVx1MDAzZWJ1ZmZlciwgY21kX2VwLVx1MDAzZXVyYi1cdTAwM2V0cmFuc2Zlcl9kbWEpO1xuIDczNTpcdFxuIDczNjpcdFx0a2ZyZWUod3JfZXAtXHUwMDNlYnVmZmVyKTtcbiA3Mzc6XHRcdGtmcmVlKHJkX2VwLVx1MDAzZWJ1ZmZlcik7XG4gNzM4Olx0XG4gNzM5Olx0XHR1c2JfZnJlZV91cmIoaW50X2VwLVx1MDAzZXVyYik7XG4gNzQwOlx0XHR1c2JfZnJlZV91cmIod3JfZXAtXHUwMDNldXJiKTtcbiA3NDE6XHRcdHVzYl9mcmVlX3VyYihyZF9lcC1cdTAwM2V1cmIpO1xuIDc0MjpcdFx0dXNiX2ZyZWVfdXJiKGNtZF9lcC1cdTAwM2V1cmIpO1xuIDc0MzpcdH1cbiA3NDQ6XHRcbiA3NDU6XHRzdGF0aWMgaW50IG1tODF4X3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuIDc0NjpcdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbiA3NDc6XHR7XG4gNzQ4Olx0XHRpbnQgcmV0O1xuIDc0OTpcdFx0c3RydWN0IG1tODF4ICptb3JzO1xuIDc1MDpcdFx0c3RydWN0IG1tODF4X3VzYiAqbXVzYjtcbiA3NTE6XHRcbiA3NTI6XHRcdG1vcnMgPSBtbTgxeF9jb3JlX2FsbG9jKHNpemVvZigqbXVzYiksIFx1MDAyNmludGVyZmFjZS1cdTAwM2VkZXYpO1xuIDc1MzpcdFx0aWYgKCFtb3JzKVxuIDc1NDpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiA3NTU6XHRcbiA3NTY6XHRcdG1vcnMtXHUwMDNlYnVzX29wcyA9IFx1MDAyNm1tODF4X3VzYl9vcHM7XG4gNzU3Olx0XHRtb3JzLVx1MDAzZWJ1c190eXBlID0gTU04MVhfQlVTX1RZUEVfVVNCO1xuIDc1ODpcdFxuIDc1OTpcdFx0bXVzYiA9IChzdHJ1Y3QgbW04MXhfdXNiICopbW9ycy1cdTAwM2VkcnZfcHJpdjtcbiA3NjA6XHRcdG11c2ItXHUwMDNldWRldiA9IHVzYl9nZXRfZGV2KGludGVyZmFjZV90b191c2JkZXYoaW50ZXJmYWNlKSk7XG4gNzYxOlx0XHRtdXNiLVx1MDAzZWludGVyZmFjZSA9IHVzYl9nZXRfaW50ZihpbnRlcmZhY2UpO1xuIDc2MjpcdFxuIDc2MzpcdFx0bXV0ZXhfaW5pdChcdTAwMjZtdXNiLVx1MDAzZWxvY2spO1xuIDc2NDpcdFx0bXV0ZXhfaW5pdChcdTAwMjZtdXNiLVx1MDAzZWJ1c19sb2NrKTtcbiA3NjU6XHRcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXHUwMDI2bXVzYi1cdTAwM2Vyd19pbl93YWl0KTtcbiA3NjY6XHRcdHVzYl9zZXRfaW50ZmRhdGEoaW50ZXJmYWNlLCBtb3JzKTtcbiA3Njc6XHRcbiA3Njg6XHRcdHJldCA9IG1tODF4X3VzYl9kZXRlY3RfZW5kcG9pbnRzKG1vcnMsIGludGVyZmFjZSk7XG4gNzY5Olx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDc3MDpcdFx0XHRnb3RvIGVycl9jb3JlX2ZyZWU7XG4gNzcxOlx0XG4gNzcyOlx0XHRzZXRfYml0KE1NODFYX1VTQl9GTEFHX0FUVEFDSEVELCBcdTAwMjZtdXNiLVx1MDAzZWZsYWdzKTtcbiA3NzM6XHRcbiA3NzQ6XHRcdHJldCA9IG1tODF4X2NvcmVfaW5pdChtb3JzKTtcbiA3NzU6XHRcdGlmIChyZXQpXG4gNzc2Olx0XHRcdGdvdG8gZXJyX3VyYl9jbGVhbnVwO1xuIDc3NzpcdFxuIDc3ODpcdFx0SU5JVF9XT1JLKFx1MDAyNm1vcnMtXHUwMDNldXNiX2lycV93b3JrLCBtbTgxeF91c2JfaXJxX3dvcmspO1xuIDc3OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjIzNgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEwNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBtbTgxeCBVU0IgRHJpdmVyIGZvciBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0aWVzKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgbW04MXhfdXNiX3Byb2JlYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgaG93IGl0IGludGVyZmFjZXMgd2l0aCB0aGUgVVNCIGRldmljZSwgcGFydGljdWxhcmx5IGZvY3VzaW5nIG9uIHRoZSBwYWNrZXQgaGFuZGxpbmcgd2l0aGluIHRoaXMgZHJpdmVyLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzYCBhbmQgYG1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltYCBhcmUgZG9pbmcsIGFzIHRob3NlIGFyZSBvZnRlbiBzcG90cyB0byBsb29rLgoKTG9va2luZyBhdCBgbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW1gLCB0aGVyZSYjMzk7cyB0aGUgc3RhbmRhcmQgQ1JDIGNoZWNrLCBwYWNrZXQgc2l6ZSBhbmQgcGFkZGluZyBjaGVja3MsIGFuZCBhIG5ldyBjb25kaXRpb24sIHRoZSBjaGVjayBmb3IgYHBrdF9zaXplICZsdDs9IFlBUFNfUkVTRVJWRURfUEFHRV9TSVpFYCwgYSBjaGFuZ2Ugd2hpY2ggbG9va3MgbGlrZSBhIHJlY2VudCBmaXguIFRoZSBwYWRkaW5nIGNhbGN1bGF0aW9ucyBsb29rIHR5cGljYWwsIGFuZCB0aGUgc2l6ZSBjaGVja3MgYXJlIHRoZXJlLgoKVGhlbiwgaW5zcGVjdGluZyBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgLCBJIHNlZSB0aGUgZXhwZWN0ZWQgY2hlY2tzIGZvciB0aGUgbnVtYmVyIG9mIHBhY2tldHMgYW5kIHJlbWFpbmluZyBieXRlcy4gVGhlcmUmIzM5O3MgYWxzbyB0aGlzIG5ldyBhbGlnbm1lbnQgY2hlY2sgYCFJU19BTElHTkVEKGJ5dGVzX3JlbWFpbmluZywgc2l6ZW9mKHUzMikpYCwgd2hpY2gsIGlmIHRyaWdnZXJlZCwgd2lsbCByZXN1bHQgaW4gYW4gLUVJTywgYW5kIHRoZSBmdW5jdGlvbiB3aWxsIHJldHVybi4gVGhpcyBjb3VsZCBzaWduYWwgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS4KCk5vdywgaG93IGRvZXMgdGhpcyBhbGwgZml0IHRvZ2V0aGVyPyBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgIGlzIHBhcnQgb2YgYG1tODF4X3lhcHNfaHdfb3BzLnJlYWRfcGt0c2AuIEl0JiMzOTtzIGNhbGxlZCBieSBgbW04MXhfeWFwc19yZWFkX3BrdHNgLCB3aGljaCBpcyB0aGVuIGNhbGxlZCBieSBgbW04MXhfeWFwc19yeF9oYW5kbGVyYCB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jYC4gVGhpcyBgcnhfaGFuZGxlcmAgaXMgY2FsbGVkIGJ5IGBtbTgxeF95YXBzX3dvcmtgLCB3aGljaCBpcyB0cmlnZ2VyZWQgYnkgdGhlIEhJRiB3b3JrIHF1ZXVlIHRvIGhhbmRsZSBSWCBldmVudHMuIFNvLCB0aGlzIGlzIHRoZSBjb3JlIG9mIHBhY2tldCByZWNlcHRpb24gZm9yIHRoaXMgZHJpdmVyLgoKVGhlIG5leHQgcG9pbnQgSSBuZWVkIHRvIGNvbnNpZGVyIGlzLCBhcmUgd2UgYWJsZSB0byByZWFjaCB0aGlzIGRyaXZlcj8gU3l6a2FsbGVyIGNhbiBlbXVsYXRlIFVTQiB3aXJlbGVzcyBkcml2ZXJzLiBUaGV5IHVzZSByYXcgVVNCIGdhZGdldCBlbXVsYXRpb24gd2l0aCBjYWxscyBsaWtlIGBzeXpfdXNiX2Nvbm5lY3RgLiBTbyB5ZXMsIHRoaXMgaXMgc29tZXRoaW5nIHdlIGNhbiBmdXp6LgoKTGV0JiMzOTtzIGxvb2sgYXQgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIGZvciB0aGlzIGRyaXZlci4gSW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvS2NvbmZpZ2AsIEkgc2VlIGBNTTgxWF9VU0JgIHdoaWNoIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYFVTQmAuIEFsc28gdGhlcmUmIzM5O3MgYFdMQU5fVkVORE9SX01PUlNFTUlDUk9gIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWdgLCB0aGF0IGlzIGRlcGVuZGVudCBvbiBgV0xBTmAuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGVzZSBjb25maWd1cmF0aW9ucyBhcmUgc2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlPTE0PW9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9NSUNST0NISVApICYjNDM7PSBtaWNyb2NoaXAvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZToxNTpvYmotJChDT05GSUdfV0xBTl9WRU5ET1JfTU9SU0VNSUNSTykgJiM0Mzs9IG1vcnNlbWljcm8vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZS0xNi1vYmotJChDT05GSUdfV0xBTl9WRU5ET1JfTlhQKSAmIzQzOz0gbnhwL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnOjI6Y29uZmlnIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0zLVx0Ym9vbCBcJiMzNDtNb3JzZSBNaWNybyBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnOjEzOmlmIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0xNC1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWc6MTU6ZW5kaWYgIyBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0MTk3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqRXhhbWluaW5nIHRoZSBNb3JzZSBNaWNybyBLY29uZmlnIEZpbGUqKgoKT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGF0IE1vcnNlIE1pY3JvIFdpLUZpIGRyaXZlci4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZ2AuIFRoaXMgS2NvbmZpZyBmaWxlIGlzIHdoZXJlIGFsbCB0aGUgaW1wb3J0YW50IGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgZHJpdmVyIGFyZSBkZWZpbmVkLiBJIGV4cGVjdCB0byBzZWUgdGhpbmdzIGxpa2UgdGhlIGFiaWxpdHkgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIGRyaXZlciBpdHNlbGYsIHBlcmhhcHMgb3B0aW9ucyBmb3IgZGlmZmVyZW50IGhhcmR3YXJlIHZhcmlhbnRzIGlmIHRoZXJlIGFyZSBhbnksIGxpa2VseSBkZWJ1ZyBmbGFncywgYW5kIG1heWJlIGV2ZW4gY2hvaWNlcyByZWxhdGVkIHRvIGZpcm13YXJlIGxvYWRpbmcgb3Igc3BlY2lmaWMgcHJvdG9jb2wgZmVhdHVyZXMuIEl0JiMzOTtzIGEgY3JpdGljYWwgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgaXMgY29udHJvbGxlZCBhbmQgd2hhdCBzZXR0aW5ncyBJIGNhbiB0d2Vhay4gSSB3YW50IHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGhpZ2gtbGV2ZWwgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueXRoaW5nIEkgY2FuIGltbWVkaWF0ZWx5IGxldmVyYWdlIHRvIGFkZHJlc3MgW2luc2VydCB5b3VyIHBhcnRpY3VsYXIgaXNzdWUgaGVyZSwgZS5nLiAmIzM0O29wdGltaXplIHBlcmZvcm1hbmNlJiMzNDsgb3IgJiMzNDtyZXNvbHZlIHRoYXQgcmVwb3J0ZWQgY29uZmxpY3QmIzM0O10uIEZyb20gdGhlcmUgSSB3aWxsIHVzZSB0aGlzIGluZm9ybWF0aW9uIHRvIGRldGVybWluZSB0aGUgbmV4dCBwaGFzZSBvZiBkZWJ1Z2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cbiAgIDM6XHRcdGJvb2wgXCYjMzQ7TW9yc2UgTWljcm8gZGV2aWNlc1wmIzM0O1xuICAgNDpcdFx0ZGVmYXVsdCB5XG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIElmIHlvdSBoYXZlIGEgd2lyZWxlc3MgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXG4gICA3Olx0XG4gICA4Olx0XHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxuICAgOTpcdFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsIHRoZVxuICAxMDpcdFx0ICBxdWVzdGlvbnMgYWJvdXQgdGhlc2UgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXG4gIDExOlx0XHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cbiAgMTI6XHRcbiAgMTM6XHRpZiBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXG4gIDE0Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvS2NvbmZpZ1wmIzM0O1xuICAxNTpcdGVuZGlmICMgV0xBTl9WRU5ET1JfTU9SU0VNSUNST1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDY5MgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipJbnZlc3RpZ2F0aW5nIFdMQU4gQ29uZmlndXJhdGlvbiBpbiB0aGUgS2VybmVsKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBwYXJlbnQgY29uZmlndXJhdGlvbiBmb3IgYFdMQU5gLiBUaGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGlzIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgcmVsZXZhbnQgZHJpdmVyIGRpcmVjdG9yeS4gU2luY2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB3aXJlbGVzcyBuZXR3b3JraW5nLCB0aGF0IHdvdWxkIGJlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYC4gTGV0JiMzOTtzIG5hdmlnYXRlIHRoZXJlIGFuZCB0YWtlIGEgbG9vay4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBgV0xBTmAgZGVmaW5lZCwgYW5kIG15IGh5cG90aGVzaXMgaXMgdGhhdCBpdCB3aWxsIGJlIGEgcGFyZW50IGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgdGhhdCBnb3Zlcm5zIHRoZSB2YXJpb3VzIHdpcmVsZXNzIG9wdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBoaWVyYXJjaHkgYW5kIGRlcGVuZGVuY2llcywgYW5kIHRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gVGhpcyBpcyBzdGFuZGFyZCBwcm9jZWR1cmUgd2hlbiBJJiMzOTttIHdvcmtpbmcgb24ga2VybmVsIGNvbmZpZ3VyYXRpb25zIGFuZCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBkaWZmZXJlbnQgZmVhdHVyZXMuIEkgc2hvdWxkIGJlIGFibGUgdG8gcXVpY2tseSBkZXRlcm1pbmUgaG93IGBXTEFOYCBmaXRzIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb3JzZW1pY3JvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc9Mjk9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnOjMwOnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWctMzEtc291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvTWFrZWZpbGU9MTQ9b2JqLSQoQ09ORklHX1dMQU5fVkVORE9SX01JQ1JPQ0hJUCkgJiM0Mzs9IG1pY3JvY2hpcC9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlOjE1Om9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPKSAmIzQzOz0gbW9yc2VtaWNyby9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlLTE2LW9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9OWFApICYjNDM7PSBueHAvXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnPTEzPWlmIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZzoxNDpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWctMTUtZW5kaWYgIyBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5oLTE1LSNkZWZpbmUgQkNGX0RBVEFCQVNFX1NJWkUgKDEwMjQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3Lmg6MTY6I2RlZmluZSBNTTgxWF9GV19ESVIgXCYjMzQ7bW9yc2VtaWNyby9tbTgxeFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5oLTE3LSNkZWZpbmUgTU04MVhfRldfRVhUIFwmIzM0Oy5iaW5cJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUzMjQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBXaXJlbGVzcyBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3Igd2lyZWxlc3MgZHJpdmVycy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gbmF2aWdhdGUgdG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG15IGluaXRpYWwgaW52ZXN0aWdhdGlvbiBhcm91bmQgbGluZXMgMjAgdGhyb3VnaCA0MC4gVGhhdCByYW5nZSBpcyB1c3VhbGx5IGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGNvcmUgd2lyZWxlc3MgZHJpdmVyIG9wdGlvbnMgYXJlIHN0cnVjdHVyZWQgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIG9yIGRlZmF1bHRzIG1pZ2h0IGJlIGRlZmluZWQuIEhvcGVmdWxseSwgSSYjMzk7bGwgYmUgYWJsZSB0byBxdWlja2x5IGdyYXNwIHRoZSByZWxldmFudCBrZXkgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGZyb20gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFdpcmVsZXNzIExBTiBkZXZpY2UgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRtZW51Y29uZmlnIFdMQU5cbiAgIDc6XHRcdGJvb2wgXCYjMzQ7V2lyZWxlc3MgTEFOXCYjMzQ7XG4gICA4Olx0XHRkZXBlbmRzIG9uICFTMzkwXG4gICA5Olx0XHRkZXBlbmRzIG9uIE5FVFxuICAxMDpcdFx0c2VsZWN0IFdJUkVMRVNTXG4gIDExOlx0XHRkZWZhdWx0IHlcbiAgMTI6XHRcdGhlbHBcbiAgMTM6XHRcdCAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIGFsbCB0aGUgcHJlIDgwMi4xMSBhbmQgODAyLjExIHdpcmVsZXNzXG4gIDE0Olx0XHQgIGRldmljZSBkcml2ZXJzLiBGb3IgYSBjb21wbGV0ZSBsaXN0IG9mIGRyaXZlcnMgYW5kIGRvY3VtZW50YXRpb25cbiAgMTU6XHRcdCAgb24gdGhlbSByZWZlciB0byB0aGUgd2lyZWxlc3Mgd2lraTpcbiAgMTY6XHRcbiAgMTc6XHRcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVyc1xuICAxODpcdFxuICAxOTpcdGlmIFdMQU5cbiAgMjA6XHRcbiAgMjE6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYWRtdGVrL0tjb25maWdcJiMzNDtcbiAgMjI6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWdcJiMzNDtcbiAgMjM6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvS2NvbmZpZ1wmIzM0O1xuICAyNDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9LY29uZmlnXCYjMzQ7XG4gIDI1Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL0tjb25maWdcJiMzNDtcbiAgMjY6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvS2NvbmZpZ1wmIzM0O1xuICAyNzpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWdcJiMzNDtcbiAgMjg6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZ1wmIzM0O1xuICAyOTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvS2NvbmZpZ1wmIzM0O1xuICAzMDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWdcJiMzNDtcbiAgMzE6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL0tjb25maWdcJiMzNDtcbiAgMzI6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcHVyZWxpZmkvS2NvbmZpZ1wmIzM0O1xuICAzMzpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvS2NvbmZpZ1wmIzM0O1xuICAzNDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL0tjb25maWdcJiMzNDtcbiAgMzU6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWdcJiMzNDtcbiAgMzY6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL0tjb25maWdcJiMzNDtcbiAgMzc6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvS2NvbmZpZ1wmIzM0O1xuICAzODpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy90aS9LY29uZmlnXCYjMzQ7XG4gIDM5Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL0tjb25maWdcJiMzNDtcbiAgNDA6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL0tjb25maWdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTYxMzgKCQkJCQkJCW91dHB1dDogMjE2CgkJCQkJCQl0aG91Z2h0czogOTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlZlcmlmeWluZyBXb3J0aEZ1enppbmcgZm9yIHRoZSBNTTgxeCBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGNvbmZpcm0gaWYgZnV6emluZyB0aGlzIHBhdGNoIGlzIHdhcnJhbnRlZC4gRmlyc3QsIEkgc2VlIHRoZSBjb3JlIGNoYW5nZSBpcyBpbiBgbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW1gIGFuZCBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jYCBmaWxlLiBTcGVjaWZpY2FsbHksIHdlJiMzOTtyZSBsb29raW5nIGF0IGlucHV0IHZhbGlkYXRpb24gbG9naWMgYmVpbmcgdXBkYXRlZCDigJMgYHBrdF9zaXplID09IDBgIGlzIG5vdyBgcGt0X3NpemUgJmx0Oz0gWUFQU19SRVNFUlZFRF9QQUdFX1NJWkVgIGFuZCB0aGVyZSYjMzk7cyBhIG5ldyBhbGlnbm1lbnQgY2hlY2suIFRoaXMgaXMgY3J1Y2lhbCBhcyBpdCBkaXJlY3RseSBpbXBhY3RzIHBhY2tldCBoYW5kbGluZywgYW5kIHZhbGlkYXRpb24gbG9naWMgaXMgYSBjbGFzc2ljIHRhcmdldCBmb3IgZnV6emluZy4KClRoaXMgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzLCB3aGljaCBpcyBmYW50YXN0aWMgYmVjYXVzZSB0aGF0IG1lYW5zIHdlIGNhbiBlYXNpbHkgcmVwbGljYXRlIHRoZSBlbnZpcm9ubWVudCB3aXRoIFFFTVUgb3IgZXZlbiBVU0IgUmF3IEdhZGdldCBzZXR1cCBmb3IgZWZmZWN0aXZlIGZ1enppbmcuIFRoZSBmYWN0IHRoYXQgYENPTkZJR19NTTgxWF9VU0JgIGVuYWJsZXMgdGhpcyBpcyBhIGdyZWVuIGxpZ2h0LgoKTm93LCBsZXQmIzM5O3MgZ2V0IHByZWNpc2Ugb24gdGhlIGltcG9ydGFudCBzeW1ib2xzLiBJJiMzOTt2ZSBub3RlZCB0aGF0IGBtbTgxeF9yZWFkX3BrdHNfaF9pc192YWxpZF9kZWxpbWAgaXMgc3RhdGljLCBwb3RlbnRpYWxseSBpbmxpbmVkIGludG8gYG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzYC4gQnV0IGV2ZW4gaWYgaW5saW5lZCwgaXQmIzM5O3Mgc3RpbGwgcGFydCBvZiB0aGUgY3JpdGljYWwgcGF0aC4gYG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzYCBpcyB0aGUgbWFpbiBmdW5jdGlvbiByZWFkaW5nIHBhY2tldHMgYW5kIGRvaW5nIGRlbGltaXRlciB2YWxpZGF0aW9uLiBgbW04MXhfeWFwc19yZWFkX3BrdHNgIGlzIGFsc28gaW1wb3J0YW50LCBzaW5jZSBpdCBjYWxscyB0aGUgYG9wcy0mZ3Q7cmVhZF9wa3RzYCBmdW5jdGlvbi4gU28sIGJhc2VkIG9uIHRoZSBjb2RlIGZsb3csIHRoZSByZWxldmFudCBzeW1ib2xzIGFyZToKCiogICBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgCiogICBgbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW1gCiogICBgbW04MXhfeWFwc19yZWFkX3BrdHNgCiogICBgbW04MXhfeWFwc19yeF9oYW5kbGVyYAoKSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYG1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltYCBpcyBpbmRlZWQgc3RhdGljIHdpdGhpbiBgeWFwc19ody5jYC4gYG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzYCBpcyBhbHNvIGBzdGF0aWNgLiBJJiMzOTt2ZSBhbHNvIHZlcmlmaWVkIHRoZSBjYWxsIGNoYWluIGZyb20gYG1tODF4X3lhcHNfcmVhZF9wa3RzYCAoaW4gYHlhcHMuY2ApIHRvIGB5YXBzLSZndDtvcHMtJmd0O3JlYWRfcGt0c2AsIGFuZCB0aGF0IGBtbTgxeF95YXBzX3J4X2hhbmRsZXJgIGNhbGxzIGBtbTgxeF95YXBzX3JlYWRfcGt0c2AuIEZ1cnRoZXJtb3JlLCBgbW04MXhfdXNiX3Byb2JlYCBpbiBgdXNiLmNgIGluaXRpYWxpemVzIHRoZSBVU0IgaW50ZXJmYWNlLCB0aHVzIGVzdGFibGlzaGluZyB0aGUgVVNCIGVudHJ5cG9pbnQuCgpHaXZlbiB0aGF0IHRoZSBwYXRjaCBpbnZvbHZlcyBjaGFuZ2VzIHRvIHBhY2tldCB2YWxpZGF0aW9uIGFuZCBhbGlnbm1lbnQgd2l0aGluIGEgd2lyZWxlc3MgZHJpdmVyIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbiwgYWxsIHRoZSByZXF1aXJlZCBlbGVtZW50cyBhcmUgaW4gcGxhY2UuIFRoZSBpZGVudGlmaWVkIGNvbmZpZ3VyYXRpb25zIGFuZCBzeW1ib2xzIGFyZSBjb3JyZWN0LCB3aGljaCBpcyBmdXJ0aGVyIGNvbmZpcm1hdGlvbiB0byBlbmFibGUgZnV6emluZy4gVGh1cywgSSYjMzk7bSBjb25maWRlbnQgdGhhdCBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgc2V0IHRvIGB0cnVlYCwgZ2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgZXhwbG9pdGluZyB2dWxuZXJhYmlsaXRpZXMgaW4gcGFja2V0IGhhbmRsaW5nIGxvZ2ljLgoKTm93LCBJJiMzOTttIHJlYWR5IHRvIHBvcHVsYXRlIHRoZSBgc2V0LXJlc3VsdHNgIGZpZWxkcyBhbmQgY2FsbCBpdCBhIGRheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTU9SU0VNSUNSTyYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TU04MVgmIzM0OywKICAgICYjMzQ7TU04MVhfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bW04MXhfeWFwc19od19yZWFkX3BrdHMmIzM0OywKICAgICYjMzQ7bW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW0mIzM0OywKICAgICYjMzQ7bW04MXhfeWFwc19yZWFkX3BrdHMmIzM0OywKICAgICYjMzQ7bW04MXhfeWFwc19yeF9oYW5kbGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYWNrZXQgcmVjZXB0aW9uIGFuZCBkZWxpbWl0ZXIgdmFsaWRhdGlvbiBsb2dpYyBpbiB0aGUgTW9yc2UgTWljcm8gTU04MXggd2lyZWxlc3MgZHJpdmVyIChkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYyksIGFkZGluZyBhbGlnbm1lbnQgdmVyaWZpY2F0aW9uIG9uIHJlbWFpbmluZyBieXRlcyBhbmQgc3RyaWN0ZXIgcGFja2V0IHNpemUgdmFsaWRhdGlvbiBhZ2FpbnN0IHJlc2VydmVkIHBhZ2UgYm91bmRzLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIGFuZCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtXTEFOJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX01PUlNFTUlDUk8mIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O01NODFYJiMzNDssCiAgICAmIzM0O01NODFYX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21tODF4X3lhcHNfaHdfcmVhZF9wa3RzJiMzNDssCiAgICAmIzM0O21tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltJiMzNDssCiAgICAmIzM0O21tODF4X3lhcHNfcmVhZF9wa3RzJiMzNDssCiAgICAmIzM0O21tODF4X3lhcHNfcnhfaGFuZGxlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFja2V0IHJlY2VwdGlvbiBhbmQgZGVsaW1pdGVyIHZhbGlkYXRpb24gbG9naWMgaW4gdGhlIE1vcnNlIE1pY3JvIE1NODF4IHdpcmVsZXNzIGRyaXZlciAoZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMpLCBhZGRpbmcgYWxpZ25tZW50IHZlcmlmaWNhdGlvbiBvbiByZW1haW5pbmcgYnl0ZXMgYW5kIHN0cmljdGVyIHBhY2tldCBzaXplIHZhbGlkYXRpb24gYWdhaW5zdCByZXNlcnZlZCBwYWdlIGJvdW5kcy4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgZGV2aWNlcyBhbmQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjE6Mjk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGhhcmRlbnMgaW5wdXQgdmFsaWRhdGlvbiBpbiB0aGUgTW9yc2UgTWljcm8gbW04MXggZHJpdmVyJiMzOTtzIFlBUFMgaGFyZHdhcmUgcGFja2V0IHJlYWRpbmcgbG9naWMgYnk6XG4xLiBFbnN1cmluZyBgcGt0X3NpemVgIChwaGFuZGxlIHNpemUpIGV4Y2VlZHMgYFlBUFNfUkVTRVJWRURfUEFHRV9TSVpFYCB0byBwcmV2ZW50IHVuZGVyZmxvd3MgaW4gYFlBUFNfREVMSU1fR0VUX1BLVF9TSVpFKClgLlxuMi4gVmFsaWRhdGluZyB0aGF0IGBieXRlc19yZW1haW5pbmdgIGlzIDQtYnl0ZSBhbGlnbmVkIGJlZm9yZSByZWFkaW5nIGRlbGltaXRlcnMgZnJvbSB0aGUgY2hpcCBidWZmZXIuXG5cblRoZXNlIGNoYW5nZXMgcHJldmVudCBwb3RlbnRpYWwgaW50ZWdlciB1bmRlcmZsb3csIG91dC1vZi1ib3VuZHMgcmVhZHMvd3JpdGVzLCBvciBwcm90b2NvbCBkZXN5bmNocm9uaXphdGlvbiB3aGVuIHBhcnNpbmcgaGFyZHdhcmUgcGFja2V0IGJ1ZmZlcnMuIEFueSBtZW1vcnkgc2FmZXR5IHZpb2xhdGlvbnMgaW4gdGhpcyBhcmVhIChlLmcuLCBuZWdhdGl2ZSBzaXplIHBhc3NlZCB0byBidWZmZXIgb3BlcmF0aW9ucyByZXN1bHRpbmcgaW4gb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcykgYXJlIGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgaW4gYnJhbmNoaW5nLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzY5MWY3OGIwZTM5MjZhOWI0ZjUxNTQ1ZWQyODAyZjJkMzFkOTBiZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDIxOjI4OjI3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYwppbmRleCAzZDY0MWQyM2MzNWJhLi45N2IyZmY5M2M2OWZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYwpAQCAtNDA3LDcgJiM0Mzs0MDcsNyBAQCBzdGF0aWMgYm9vbCBtbTgxeF9yZWFkX3BrdHNfaF9pc192YWxpZF9kZWxpbSh1MzIgZGVsaW0pCiAJaWYgKGNhbGNfY3JjICE9IFlBUFNfREVMSU1fR0VUX0NSQyhkZWxpbSkpCiAJCXJldHVybiBmYWxzZTsKIAotCWlmIChwa3Rfc2l6ZSA9PSAwKQomIzQzOwlpZiAocGt0X3NpemUgJmx0Oz0gWUFQU19SRVNFUlZFRF9QQUdFX1NJWkUpCiAJCXJldHVybiBmYWxzZTsKIAogCWlmICgocGt0X3NpemUgJiM0MzsgcGFkZGluZykgJmd0OyBZQVBTX01BWF9QS1RfU0laRV9CWVRFUykKQEAgLTQ1NSw2ICYjNDM7NDU1LDEwIEBAIHN0YXRpYyBpbnQgbW04MXhfeWFwc19od19yZWFkX3BrdHMoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMsCiAJCXJldHVybiAwOwogCWlmIChieXRlc19yZW1haW5pbmcgJmx0OyAwKQogCQlyZXR1cm4gYnl0ZXNfcmVtYWluaW5nOwomIzQzOwlpZiAoIUlTX0FMSUdORUQoYnl0ZXNfcmVtYWluaW5nLCBzaXplb2YodTMyKSkpIHsKJiM0MzsJCWRldl93YXJuKHlhcHMtJmd0O21vcnMtJmd0O2RldiwgJiMzNDt5YXBzIHRydW5jYXRlZCBkZWxpbWl0ZXImIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVJTzsKJiM0MzsJfQogCiAJaWYgKGJ5dGVzX3JlbWFpbmluZyAmZ3Q7IFlBUFNfSFdfV0lORE9XX1NJWkVfQllURVMpIHsKIAkJYnl0ZXNfcmVtYWluaW5nID0gWUFQU19IV19XSU5ET1dfU0laRV9CWVRFUzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMTAKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAxMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGl2aW5nIGludG8gdGhlIG1tODF4IFdpcmVsZXNzIERyaXZlcioqCgpPa2F5LCBzbyB0aGUgcGF0Y2ggaXMgc3VwcG9zZWRseSBuZXN0bGVkIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmNgLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTGV0JiMzOTtzIHN0YXJ0IGJ5IHNjcnV0aW5pemluZyB0aGF0IHNwZWNpZmljIGZpbGUuIEkgd2FudCB0byB6ZXJvIGluIG9uIHRoZSB2aWNpbml0eSBvZiBgbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW1gIGFuZCBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgLiBUaGVzZSBmdW5jdGlvbiBuYW1lcyBhcmUgc2NyZWFtaW5nIHBvdGVudGlhbCBmb3IgdGhlIGZpeCwgc28gbGV0JiMzOTtzIHVuZGVyc3RhbmQgdGhlaXIgY29udGV4dCBhbmQgaW50ZXJhY3Rpb25zLgoKTGV0JiMzOTtzIHB1bGwgdXAgdGhhdCBgeWFwc19ody5jYCBmaWxlIHVzaW5nIGByZWFkLWZpbGVgIGFuZCBnZXQgYSBnb29kIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZ3Jhc3AgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYmV0dGVyLiBUaGlzIGlzIHdoZXJlIHRoZSByZWFsIGludmVzdGlnYXRpb24gYmVnaW5zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzkwOlx0ZXhpdDpcbiAzOTE6XHRcdGlmIChiYXRjaF90eG5fbGVuIFx1MDAzZSAwKSB7XG4gMzkyOlx0XHRcdHJldCA9IG1tODF4X2RtX3dyaXRlKHlhcHMtXHUwMDNlbW9ycywgeWFwcy1cdTAwM2VhdXhfZGF0YS1cdTAwM2V5ZHNfYWRkcixcbiAzOTM6XHRcdFx0XHRcdCAgICAgdG9fY2hpcF9idWZmZXJfYWxpZ25lZCwgYmF0Y2hfdHhuX2xlbik7XG4gMzk0Olx0XHRcdCpudW1fcGt0c19zZW50ICYjNDM7PSBwa3RzX3BlbmRpbmc7XG4gMzk1Olx0XHR9XG4gMzk2Olx0XG4gMzk3Olx0XHRtbTgxeF95YXBzX2h3X3VubG9jayh5YXBzKTtcbiAzOTg6XHRcdHJldHVybiByZXQ7XG4gMzk5Olx0fVxuIDQwMDpcdFxuIDQwMTpcdHN0YXRpYyBib29sIG1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltKHUzMiBkZWxpbSlcbiA0MDI6XHR7XG4gNDAzOlx0XHR1OCBjYWxjX2NyYyA9IG1tODF4X3lhcHNfaHdfY3JjKGRlbGltKTtcbiA0MDQ6XHRcdGludCBwa3Rfc2l6ZSA9IFlBUFNfREVMSU1fR0VUX1BIQU5ETEVfU0laRShkZWxpbSk7XG4gNDA1Olx0XHRpbnQgcGFkZGluZyA9IFlBUFNfREVMSU1fR0VUX1BBRERJTkcoZGVsaW0pO1xuIDQwNjpcdFxuIDQwNzpcdFx0aWYgKGNhbGNfY3JjICE9IFlBUFNfREVMSU1fR0VUX0NSQyhkZWxpbSkpXG4gNDA4Olx0XHRcdHJldHVybiBmYWxzZTtcbiA0MDk6XHRcbiA0MTA6XHRcdGlmIChwa3Rfc2l6ZSBcdTAwM2M9IFlBUFNfUkVTRVJWRURfUEFHRV9TSVpFKVxuIDQxMTpcdFx0XHRyZXR1cm4gZmFsc2U7XG4gNDEyOlx0XG4gNDEzOlx0XHRpZiAoKHBrdF9zaXplICYjNDM7IHBhZGRpbmcpIFx1MDAzZSBZQVBTX01BWF9QS1RfU0laRV9CWVRFUylcbiA0MTQ6XHRcdFx0cmV0dXJuIGZhbHNlO1xuIDQxNTpcdFxuIDQxNjpcdFx0LyogUGt0IGxlbmd0aCAmIzQzOyBwYWRkaW5nIHNob3VsZCBub3QgcmVxdWlyZSBtb3JlIHBhZGRpbmcgKi9cbiA0MTc6XHRcdGlmIChZQVBTX0NBTENfUEFERElORyhwa3Rfc2l6ZSkgIT0gcGFkZGluZylcbiA0MTg6XHRcdFx0cmV0dXJuIGZhbHNlO1xuIDQxOTpcdFxuIDQyMDpcdFx0cmV0dXJuIHRydWU7XG4gNDIxOlx0fVxuIDQyMjpcdFxuIDQyMzpcdHN0YXRpYyBpbnQgbW04MXhfcmVhZF9wa3RzX2hfYnl0ZXNfcmVtYWluaW5nKHN0cnVjdCBtbTgxeF95YXBzICp5YXBzKVxuIDQyNDpcdHtcbiA0MjU6XHRcdHUzMiBieXRlc19pbl9xdWV1ZSA9IHlhcHMtXHUwMDNlYXV4X2RhdGEtXHUwMDNlc3RhdHVzX3JlZ3MuZmNfcnhfYnl0ZXNfaW5fcXVldWU7XG4gNDI2Olx0XHR1MzIgZGVsaW1fb3ZlcmhlYWQgPVxuIDQyNzpcdFx0XHR5YXBzLVx1MDAzZWF1eF9kYXRhLVx1MDAzZXN0YXR1c19yZWdzLmZjX251bV9wa3RzICogc2l6ZW9mKHUzMik7XG4gNDI4Olx0XHR1MzIgcmVzZXJ2ZWRfYnl0ZXMgPSB5YXBzLVx1MDAzZWF1eF9kYXRhLVx1MDAzZXN0YXR1c19yZWdzLmZjX251bV9wa3RzICpcbiA0Mjk6XHRcdFx0XHQgICAgIHlhcHMtXHUwMDNlYXV4X2RhdGEtXHUwMDNlcmVzZXJ2ZWRfeWFwc19wYWdlX3NpemU7XG4gNDMwOlx0XG4gNDMxOlx0XHRpZiAoV0FSTl9PTihieXRlc19pbl9xdWV1ZSBcdTAwM2UgSU5UX01BWCkgfHxcbiA0MzI6XHRcdCAgICBXQVJOX09OKGRlbGltX292ZXJoZWFkIFx1MDAzZSBJTlRfTUFYKSB8fFxuIDQzMzpcdFx0ICAgIFdBUk5fT04ocmVzZXJ2ZWRfYnl0ZXMgXHUwMDNlIElOVF9NQVgpKVxuIDQzNDpcdFx0XHRyZXR1cm4gLUVJTztcbiA0MzU6XHRcbiA0MzY6XHRcdHJldHVybiAoaW50KWJ5dGVzX2luX3F1ZXVlO1xuIDQzNzpcdH1cbiA0Mzg6XHRcbiA0Mzk6XHRzdGF0aWMgaW50IG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzKHN0cnVjdCBtbTgxeF95YXBzICp5YXBzLFxuIDQ0MDpcdFx0XHRcdFx0ICAgc3RydWN0IG1tODF4X3lhcHNfcGt0ICpwa3RzLFxuIDQ0MTpcdFx0XHRcdFx0ICAgaW50IG51bV9wa3RzX21heCwgaW50ICpudW1fcGt0c19yZWNlaXZlZClcbiA0NDI6XHR7XG4gNDQzOlx0XHRpbnQgcmV0O1xuIDQ0NDpcdFx0aW50IGkgPSAwO1xuIDQ0NTpcdFx0Y2hhciAqZnJvbV9jaGlwX2J1ZmZlcl9hbGlnbmVkID1cbiA0NDY6XHRcdFx0UFRSX0FMSUdOKHlhcHMtXHUwMDNlYXV4X2RhdGEtXHUwMDNlZnJvbV9jaGlwX2J1ZmZlcixcbiA0NDc6XHRcdFx0XHQgIG1tODF4X2J1c19nZXRfYWxpZ25tZW50KHlhcHMtXHUwMDNlbW9ycykpO1xuIDQ0ODpcdFx0Y2hhciAqcmVhZF9wdHIgPSBmcm9tX2NoaXBfYnVmZmVyX2FsaWduZWQ7XG4gNDQ5Olx0XHRpbnQgYnl0ZXNfcmVtYWluaW5nID0gbW04MXhfcmVhZF9wa3RzX2hfYnl0ZXNfcmVtYWluaW5nKHlhcHMpO1xuIDQ1MDpcdFx0Ym9vbCBhZ2FpbiA9IGZhbHNlO1xuIDQ1MTpcdFxuIDQ1MjpcdFx0Km51bV9wa3RzX3JlY2VpdmVkID0gMDtcbiA0NTM6XHRcbiA0NTQ6XHRcdGlmIChudW1fcGt0c19tYXggPT0gMCB8fCBieXRlc19yZW1haW5pbmcgPT0gMClcbiA0NTU6XHRcdFx0cmV0dXJuIDA7XG4gNDU2Olx0XHRpZiAoYnl0ZXNfcmVtYWluaW5nIFx1MDAzYyAwKVxuIDQ1NzpcdFx0XHRyZXR1cm4gYnl0ZXNfcmVtYWluaW5nO1xuIDQ1ODpcdFx0aWYgKCFJU19BTElHTkVEKGJ5dGVzX3JlbWFpbmluZywgc2l6ZW9mKHUzMikpKSB7XG4gNDU5Olx0XHRcdGRldl93YXJuKHlhcHMtXHUwMDNlbW9ycy1cdTAwM2VkZXYsIFwmIzM0O3lhcHMgdHJ1bmNhdGVkIGRlbGltaXRlclwmIzM0Oyk7XG4gNDYwOlx0XHRcdHJldHVybiAtRUlPO1xuIDQ2MTpcdFx0fVxuIDQ2MjpcdFxuIDQ2MzpcdFx0aWYgKGJ5dGVzX3JlbWFpbmluZyBcdTAwM2UgWUFQU19IV19XSU5ET1dfU0laRV9CWVRFUykge1xuIDQ2NDpcdFx0XHRieXRlc19yZW1haW5pbmcgPSBZQVBTX0hXX1dJTkRPV19TSVpFX0JZVEVTO1xuIDQ2NTpcdFx0XHRhZ2FpbiA9IHRydWU7XG4gNDY2Olx0XHR9XG4gNDY3Olx0XG4gNDY4Olx0XHQvKlxuIDQ2OTpcdFx0ICogVGhpcyBpcyBtb3JlIGNvYXJzZS1ncmFpbmVkIHRoYW4gaXQgbmVlZHMgdG8gYmUgLSBvbmNlIHRoZSBkYXRhXG4gNDcwOlx0XHQgKiBpcyByZWFkIGludG8gYSBsb2NhbCBidWZmZXIgdGhlIGxvY2sgY2FuIGJlIHJlbGVhc2VkLCBob3dldmVyXG4gNDcxOlx0XHQgKiBhY2Nlc3MgdG8gZnJvbV9jaGlwX2J1ZmZlciB3aWxsIG5lZWQgdG8gYmUgcHJvdGVjdGVkIHdpdGggaXRzXG4gNDcyOlx0XHQgKiBvd24gbG9ja1xuIDQ3MzpcdFx0ICovXG4gNDc0Olx0XHRyZXQgPSBtbTgxeF95YXBzX2h3X2xvY2soeWFwcyk7XG4gNDc1Olx0XHRpZiAocmV0KSB7XG4gNDc2Olx0XHRcdGRldl9kYmcoeWFwcy1cdTAwM2Vtb3JzLVx1MDAzZWRldiwgXCYjMzQ7eWFwcyBsb2NrIGZhaWxlZCAlZFwmIzM0OywgcmV0KTtcbiA0Nzc6XHRcdFx0cmV0dXJuIHJldDtcbiA0Nzg6XHRcdH1cbiA0Nzk6XHRcbiA0ODA6XHRcdC8qIFJlYWQgYWxsIGF2YWlsYWJsZSBwYWNrZXRzIHRvIHRoZSBidWZmZXIgKi9cbiA0ODE6XHRcdHJldCA9IG1tODF4X2RtX3JlYWQoeWFwcy1cdTAwM2Vtb3JzLCB5YXBzLVx1MDAzZWF1eF9kYXRhLVx1MDAzZXlzbF9hZGRyLFxuIDQ4MjpcdFx0XHRcdCAgICBmcm9tX2NoaXBfYnVmZmVyX2FsaWduZWQsIGJ5dGVzX3JlbWFpbmluZyk7XG4gNDgzOlx0XG4gNDg0Olx0XHRpZiAocmV0KVxuIDQ4NTpcdFx0XHRnb3RvIGV4aXQ7XG4gNDg2Olx0XG4gNDg3Olx0XHQvKiBTcGxpdCBzZXJpYWxpc2VkIHBhY2tldHMgZnJvbSBidWZmZXIgKi9cbiA0ODg6XHRcdHdoaWxlIChpIFx1MDAzYyBudW1fcGt0c19tYXggXHUwMDI2XHUwMDI2IGJ5dGVzX3JlbWFpbmluZyBcdTAwM2UgMCkge1xuIDQ4OTpcdFx0XHR1MzIgZGVsaW07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzMDAKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB3aGF0JiMzOTtzIGdvaW5nIHRocm91Z2ggbXkgbWluZCBhcyBJIGFwcHJvYWNoIHRoZSBjb2RlLCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb24sIGFuZCB0YWlsb3JlZCBmb3IgYSBmaWVsZCBleHBlcnQ6CgoqKkRpdmluZyBpbnRvIGBtbTgxeF95YXBzX2h3X3JlYWRfcGt0c2AqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBpbnRvIHRoaXMgYG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzYCBmdW5jdGlvbi4gR2l2ZW4gdGhlIG5hbWluZywgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB0byBiZSB0aGUgY29yZSBoYXJkd2FyZSBpbnRlcmZhY2UgZm9yIHBhY2tldCByZWNlcHRpb24gb24gdGhlIG1tODF4LCBsaWtlbHkgaW52b2x2aW5nIHNvbWUgaW50ZXJhY3Rpb24gd2l0aCBZQVBTIChZb3VyIEFwcGxpY2F0aW9uIFByb3RvY29sIFNlcnZpY2UsIEkgYXNzdW1lKS4gSSYjMzk7bGwgd2FudCB0byBxdWlja2x5IGFzY2VydGFpbiBhIGZldyB0aGluZ3M6IEZpcnN0LCBob3cgaXMgdGhpcyBmdW5jdGlvbiB0cmlnZ2VyZWQ/IElzIGl0IGludGVycnVwdC1kcml2ZW4sIHBvbGxlZCwgb3Igc29tZXRoaW5nIGVsc2U/IFNlY29uZCwgd2hhdCYjMzk7cyB0aGUgZ2VuZXJhbCBmbG93PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVk4oCUcG9pbnRlcnMgdG8gYnVmZmVycywgZGVzY3JpcHRvcnMsIGFuZCBhbnkgYXNzb2NpYXRlZCBjb250cm9sIHJlZ2lzdGVycy4gSSYjMzk7bSBnb2luZyB0byBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgYm90dGxlbmVja3MgcmlnaHQgYXdheSwgbGlrZSBhbnkgb2J2aW91cyBkYXRhIGNvcGllcyBvciBzeW5jaHJvbml6YXRpb24gaXNzdWVzIGlmIHdlIGFyZSBsb29raW5nIGF0IGEgc2hhcmVkIG1lbW9yeSBtb2RlbC4gQXJlIHRoZXkgdXNpbmcgRE1BPyBJZiBzbywgd2hhdCYjMzk7cyB0aGUgZGVzY3JpcHRvciBzZXR1cD8gSSYjMzk7bGwgYWxzbyBiZSB3YXRjaGluZyBmb3IgZXJyb3IgaGFuZGxpbmcuIElzIHRoZXJlIHJvYnVzdCBlcnJvciBjaGVja2luZyBvbiB0aGUgaGFyZHdhcmUgcmVhZHMsIGFuZCBhcmUgdGhlIGVycm9ycyBoYW5kbGVkIGdyYWNlZnVsbHk/IEZpbmFsbHksIEkgbmVlZCB0byBzZWUgaG93IHRoZSByZWNlaXZlZCBwYWNrZXRzIGFyZSBwYXNzZWQgb24gdXAgdGhlIHN0YWNrIOKAkyBhcmUgdGhleSBwdXQgb24gYSBxdWV1ZSwgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZSB1cHBlciBsYXllciwgb3I/IEkgbmVlZCB0byBzZWUgaWYgdGhlIGludGVyZmFjZSBpcyBvcHRpbWl6ZWQgZm9yIGhpZ2gtdGhyb3VnaHB1dCBvciBwcmlvcml0aXplcyBsb3ctbGF0ZW5jeSwgYW5kIHdoaWNoIHRyYWRlLW9mZnMgd2VyZSBtYWRlLiBUaGF0IHdpbGwgcmVhbGx5IGluZm9ybSBob3cgSSBtaWdodCBnbyBhYm91dCBhbnkgcGVyZm9ybWFuY2UgdHVuaW5nIGxhdGVyLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3ZlIGdvdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ4OCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDg4Olx0XHR3aGlsZSAoaSBcdTAwM2MgbnVtX3BrdHNfbWF4IFx1MDAyNlx1MDAyNiBieXRlc19yZW1haW5pbmcgXHUwMDNlIDApIHtcbiA0ODk6XHRcdFx0dTMyIGRlbGltO1xuIDQ5MDpcdFx0XHRpbnQgdG90YWxfbGVuO1xuIDQ5MTpcdFx0XHRpbnQgcGt0X3NpemU7XG4gNDkyOlx0XG4gNDkzOlx0XHRcdGRlbGltID0gbGUzMl90b19jcHUoKigoX19sZTMyICopcmVhZF9wdHIpKTtcbiA0OTQ6XHRcdFx0cmVhZF9wdHIgJiM0Mzs9IHNpemVvZihkZWxpbSk7XG4gNDk1Olx0XHRcdGJ5dGVzX3JlbWFpbmluZyAtPSBzaXplb2YoZGVsaW0pO1xuIDQ5NjpcdFxuIDQ5NzpcdFx0XHQvKiBFbmQgb2Ygc3RyZWFtICovXG4gNDk4Olx0XHRcdGlmICghZGVsaW0pXG4gNDk5Olx0XHRcdFx0YnJlYWs7XG4gNTAwOlx0XG4gNTAxOlx0XHRcdGlmICghbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW0oZGVsaW0pKSB7XG4gNTAyOlx0XHRcdFx0LypcbiA1MDM6XHRcdFx0XHQgKiBUaGlzIHdpbGwgc3RhcnQgYSBodW50IGZvciBhIHZhbGlkIGRlbGltaXRlci4gR2l2ZW5cbiA1MDQ6XHRcdFx0XHQgKiB0aGUgQ1JDIGlzIG9ubHkgNyBiaXQgaXQmIzM5O3MgcG9zc2libGUgdG8gZmluZCBhblxuIDUwNTpcdFx0XHRcdCAqIGludmFsaWQgYmxvY2sgd2l0aCBhIHZhbGlkIGRlbGltaXRlciwgbGVhZGluZyB0b1xuIDUwNjpcdFx0XHRcdCAqIGRlc3luY2hyb25pc2F0aW9uLlxuIDUwNzpcdFx0XHRcdCAqL1xuIDUwODpcdFx0XHRcdGRldl93YXJuKHlhcHMtXHUwMDNlbW9ycy1cdTAwM2VkZXYsIFwmIzM0O3lhcHMgaW52YWxpZCBkZWxpbVwmIzM0Oyk7XG4gNTA5Olx0XHRcdFx0YnJlYWs7XG4gNTEwOlx0XHRcdH1cbiA1MTE6XHRcbiA1MTI6XHRcdFx0LyogVG90YWwgbGVuZ3RoIGluIGNoaXAgKi9cbiA1MTM6XHRcdFx0cGt0X3NpemUgPSBZQVBTX0RFTElNX0dFVF9QS1RfU0laRShkZWxpbSk7XG4gNTE0Olx0XHRcdHRvdGFsX2xlbiA9IHBrdF9zaXplICYjNDM7IFlBUFNfREVMSU1fR0VUX1BBRERJTkcoZGVsaW0pO1xuIDUxNTpcdFxuIDUxNjpcdFx0XHRpZiAocGt0c1tpXS5za2IpXG4gNTE3Olx0XHRcdFx0ZGV2X2Vycih5YXBzLVx1MDAzZW1vcnMtXHUwMDNlZGV2LCBcJiMzNDt5YXBzIHBhY2tldCBsZWFrXCYjMzQ7KTtcbiA1MTg6XHRcbiA1MTk6XHRcdFx0LyogU0tCIGRvZXNuJiMzOTt0IHdhbnQgcGFkZGluZyAqL1xuIDUyMDpcdFx0XHRwa3RzW2ldLnNrYiA9IGRldl9hbGxvY19za2IocGt0X3NpemUpO1xuIDUyMTpcdFx0XHRpZiAoIXBrdHNbaV0uc2tiKSB7XG4gNTIyOlx0XHRcdFx0cmV0ID0gLUVOT01FTTtcbiA1MjM6XHRcdFx0XHRkZXZfZXJyKHlhcHMtXHUwMDNlbW9ycy1cdTAwM2VkZXYsIFwmIzM0O3lhcHMgbm8gbWVtIGZvciBza2JcJiMzNDspO1xuIDUyNDpcdFx0XHRcdGdvdG8gZXhpdDtcbiA1MjU6XHRcdFx0fVxuIDUyNjpcdFx0XHRza2JfcHV0KHBrdHNbaV0uc2tiLCBwa3Rfc2l6ZSk7XG4gNTI3Olx0XG4gNTI4Olx0XHRcdGlmICh0b3RhbF9sZW4gXHUwMDNjPSBieXRlc19yZW1haW5pbmcpIHtcbiA1Mjk6XHRcdFx0XHRtZW1jcHkocGt0c1tpXS5za2ItXHUwMDNlZGF0YSwgcmVhZF9wdHIsIHBrdF9zaXplKTtcbiA1MzA6XHRcdFx0XHRyZWFkX3B0ciAmIzQzOz0gdG90YWxfbGVuO1xuIDUzMTpcdFx0XHRcdGJ5dGVzX3JlbWFpbmluZyAtPSB0b3RhbF9sZW47XG4gNTMyOlx0XHRcdH0gZWxzZSB7XG4gNTMzOlx0XHRcdFx0Y29uc3QgaW50IHJlYWRfb3ZlcmhhbmdfbGVuID1cbiA1MzQ6XHRcdFx0XHRcdHRvdGFsX2xlbiAtIGJ5dGVzX3JlbWFpbmluZztcbiA1MzU6XHRcdFx0XHRjb25zdCBpbnQgcGt0X292ZXJoYW5nX2xlbiA9IHBrdF9zaXplIC0gYnl0ZXNfcmVtYWluaW5nO1xuIDUzNjpcdFxuIDUzNzpcdFx0XHRcdG1lbWNweShwa3RzW2ldLnNrYi1cdTAwM2VkYXRhLCByZWFkX3B0ciwgYnl0ZXNfcmVtYWluaW5nKTtcbiA1Mzg6XHRcdFx0XHRyZWFkX3B0ciA9IGZyb21fY2hpcF9idWZmZXJfYWxpZ25lZDtcbiA1Mzk6XHRcbiA1NDA6XHRcdFx0XHRyZXQgPSBtbTgxeF9kbV9yZWFkKFxuIDU0MTpcdFx0XHRcdFx0eWFwcy1cdTAwM2Vtb3JzLFxuIDU0MjpcdFx0XHRcdFx0LyogT2Zmc2V0IGJ5IDQgdG8gYXZvaWQgcmV0cnkgbG9naWMgKi9cbiA1NDM6XHRcdFx0XHRcdHlhcHMtXHUwMDNlYXV4X2RhdGEtXHUwMDNleXNsX2FkZHIgJiM0MzsgNCwgcmVhZF9wdHIsXG4gNTQ0Olx0XHRcdFx0XHRyZWFkX292ZXJoYW5nX2xlbik7XG4gNTQ1Olx0XG4gNTQ2Olx0XHRcdFx0aWYgKHJldClcbiA1NDc6XHRcdFx0XHRcdGdvdG8gZXhpdDtcbiA1NDg6XHRcbiA1NDk6XHRcdFx0XHRtZW1jcHkocGt0c1tpXS5za2ItXHUwMDNlZGF0YSAmIzQzOyBieXRlc19yZW1haW5pbmcsIHJlYWRfcHRyLFxuIDU1MDpcdFx0XHRcdCAgICAgICBwa3Rfb3ZlcmhhbmdfbGVuKTtcbiA1NTE6XHRcdFx0XHRyZWFkX3B0ciAmIzQzOz0gcmVhZF9vdmVyaGFuZ19sZW47XG4gNTUyOlx0XHRcdFx0Ynl0ZXNfcmVtYWluaW5nID0gMDtcbiA1NTM6XHRcdFx0fVxuIDU1NDpcdFxuIDU1NTpcdFx0XHQqbnVtX3BrdHNfcmVjZWl2ZWQgJiM0Mzs9IDE7XG4gNTU2Olx0XHRcdGkmIzQzOyYjNDM7O1xuIDU1NzpcdFx0fVxuIDU1ODpcdFxuIDU1OTpcdFx0aWYgKGFnYWluKVxuIDU2MDpcdFx0XHRyZXQgPSAtRUFHQUlOO1xuIDU2MTpcdFxuIDU2MjpcdGV4aXQ6XG4gNTYzOlx0XHRtbTgxeF95YXBzX2h3X3VubG9jayh5YXBzKTtcbiA1NjQ6XHRcdHJldHVybiByZXQ7XG4gNTY1Olx0fVxuIDU2NjpcdFxuIDU2NzpcdHN0YXRpYyBpbnQgbW04MXhfeWFwc19od191cGRhdGVfc3RhdHVzKHN0cnVjdCBtbTgxeF95YXBzICp5YXBzKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTE0CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2g6IElucHV0IFZhbGlkYXRpb24gJmFtcDsgUG90ZW50aWFsIFJpc2tzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJJiMzOTttIHNlZWluZyBhIGNoYW5nZSBpbiBgbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW1gIHdoZXJlIHRoZXkmIzM5O3JlIG5vdyBjaGVja2luZyBgcGt0X3NpemUgJmx0Oz0gWUFQU19SRVNFUlZFRF9QQUdFX1NJWkVgIGluc3RlYWQgb2YganVzdCBgcGt0X3NpemUgPT0gMGAuIFRoYXQmIzM5O3MgdGhlIGZpcnN0IGNsdWUuIFRoZW4sIGluIGBtbTgxeF95YXBzX2h3X3JlYWRfcGt0c2AsIHRoZXJlJiMzOTtzIGEgbmV3IGFsaWdubWVudCBjaGVjazogYCFJU19BTElHTkVEKGJ5dGVzX3JlbWFpbmluZywgc2l6ZW9mKHUzMikpYC4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgYWx3YXlzOiBhcmUgd2UgaW50cm9kdWNpbmcgb3IgY2hhbmdpbmcgYW55dGhpbmcgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvcm1hdGlvbiBsZWFrcywgb3IgYW55IG90aGVyIHBvdGVudGlhbCBzZWN1cml0eSBpc3N1ZXM/CgpMb29raW5nIGRlZXBlciwgYGZyb21fY2hpcF9idWZmZXJfYWxpZ25lZGAgaXMgcG9wdWxhdGVkIGJ5IGBtbTgxeF9kbV9yZWFkYCBmcm9tIGhhcmR3YXJlLCBhbmQgdGhhdCYjMzk7cyB3aGVyZSB0aGUgZGF0YSBmb3IgdGhlIHBhY2tldHMgY29tZXMgZnJvbS4gIFRoZW4sIHRoZSBjb2RlIGNvcGllcyBkYXRhIGludG8gYHNrYmAgYnVmZmVycyB1c2luZyBgbWVtY3B5YC4gIFRoZSBjaGFuZ2UgaXRzZWxmIHNlZW1zIHRvIGJlIGFkZGluZyBtb3JlIHJvYnVzdCBpbnB1dCB2YWxpZGF0aW9uOyByZWplY3RpbmcgYHBrdF9zaXplYCBpZiBpdCYjMzk7cyB0b28gc21hbGwsIGFuZCByZWplY3RpbmcgbWlzYWxpZ25lZCBgYnl0ZXNfcmVtYWluaW5nYC4KCkkgdGhpbmsgdGhpcyBpcyBhbGwgYWJvdXQgbWFraW5nIHN1cmUgd2UmIzM5O3JlIGdldHRpbmcgdmFsaWQgZGF0YSBmcm9tIHRoZSBoYXJkd2FyZS4gIEdpdmVuIHRoZSBkYXRhIGZsb3csIHRoZXJlJiMzOTtzIG5vIHJlYXNvbiB0byB0aGluayBpdCB3aWxsIGNhdXNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2Vzc2VzLiAgQWxsIHRoZSBgc2tiYHMgYXJlIGFsbG9jYXRlZCwgYW5kIHRoZSBkYXRhIGlzIHJlYWQgZGlyZWN0bHkgZnJvbSB0aGUgaGFyZHdhcmUsIHNvIGl0IHNob3VsZCBiZSBmaW5lLiBJdCBpcyBvbmx5IGFib3V0IHN0cmljdGVyIHZhbGlkYXRpb24gYW5kIGVycm9yIGNoZWNraW5nIG9mIHRoZSBoYXJkd2FyZSBpbnB1dC4gTm93LCBJIG5lZWQgdG8gc2VlIGV4YWN0bHkgd2hhdCBgWUFQU19SRVNFUlZFRF9QQUdFX1NJWkVgIGFuZCBgWUFQU19ERUxJTV9HRVRfUEhBTkRMRV9TSVpFYCBhcmUsIGp1c3QgdG8gaGF2ZSBhIGNvbXBsZXRlIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1lBUFNfUkVTRVJWRURfUEFHRV9TSVpFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jLTIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmM6MjE6I2RlZmluZSBZQVBTX1JFU0VSVkVEX1BBR0VfU0laRSAyNTZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jLTIyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jLTM1LSNkZWZpbmUgWUFQU19ERUxJTV9HRVRfUEtUX1NJWkUoX2RlbGltKSBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmM6MzY6XHQoKChfZGVsaW0pIFx1MDAyNiAweDNGRkYpIC0gWUFQU19SRVNFUlZFRF9QQUdFX1NJWkUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYy0zNy0jZGVmaW5lIFlBUFNfREVMSU1fU0VUX1BLVF9TSVpFKF9wa3Rfc2l6ZSkgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jOjM4Olx0KCgoX3BrdF9zaXplKSBcdTAwMjYgMHgzRkZGKSAmIzQzOyBZQVBTX1JFU0VSVkVEX1BBR0VfU0laRSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jLTM5LSNkZWZpbmUgWUFQU19ERUxJTV9HRVRfUEhBTkRMRV9TSVpFKF9kZWxpbSkgKCgoX2RlbGltKSBcdTAwMjYgMHgzRkZGKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYz00MDE9c3RhdGljIGJvb2wgbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW0odTMyIGRlbGltKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jLTQwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jOjQxMDpcdGlmIChwa3Rfc2l6ZSBcdTAwM2M9IFlBUFNfUkVTRVJWRURfUEFHRV9TSVpFKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMtNDExLVx0XHRyZXR1cm4gZmFsc2U7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIxOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyNzgKCQkJCQkJCW91dHB1dDogMjI5CgkJCQkJCQl0aG91Z2h0czogMjcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFBhY2tldCBTaXplIENhbGN1bGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBZQVBTX0RFTElNX0dFVF9QS1RfU0laRWAgbWFjcm86IGAoKChfZGVsaW0pICZhbXA7IDB4M0ZGRikgLSBZQVBTX1JFU0VSVkVEX1BBR0VfU0laRSlgLiBJdCYjMzk7cyBjbGVhciB0aGF0IHRoaXMgY2FsY3VsYXRpb24gY291bGQgbGVhZCB0byBwcm9ibGVtcyBpZiB0aGUgcGFja2V0IHNpemUsIHdoaWNoIGlzIGluaXRpYWxseSBkZXRlcm1pbmVkIGJ5IHRoZSBsb3dlciBiaXRzIG9mIHRoZSBkZWxpbWl0ZXIgKGBwa3Rfc2l6ZWApLCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYFlBUFNfUkVTRVJWRURfUEFHRV9TSVpFYC4gVGhhdCB3b3VsZCByZXN1bHQgaW4gZWl0aGVyIGEgbmVnYXRpdmUgcGFja2V0IHNpemUgb3IsIGF0IGJlc3QsIHplcm8uIFRoaXMgc2VlbXMgbGlrZSBhIHRleHRib29rIGNhc2UgZm9yIHBvdGVudGlhbCB1bmRlcmZsb3cgb3IsIG1vcmUgY3JpdGljYWxseSwgaW52YWxpZCBwYWNrZXQgc2l6ZSBjYWxjdWxhdGlvbnMgd2hlbiB3ZSYjMzk7cmUgdW5wYWNraW5nIHBhY2tldHMgZnJvbSB0aGUgY2hpcC4KClRoZSBgaWYgKHBrdF9zaXplICZsdDs9IFlBUFNfUkVTRVJWRURfUEFHRV9TSVpFKWAgY2hlY2sgdGhhdCYjMzk7cyBpbiBwbGFjZSBkaXJlY3RseSBhZGRyZXNzZXMgYW5kIGNvcnJlY3RzIHRoaXMgcG90ZW50aWFsIHVuZGVyZmxvdy9pbnZhbGlkIHNpemUgc2NlbmFyaW8uIEdvb2QsIGdvb2QuIEFuZCB0aGUgYCFJU19BTElHTkVEKGJ5dGVzX3JlbWFpbmluZywgc2l6ZW9mKHUzMikpYCBjb25kaXRpb24gZW5zdXJlcyB0aGUgZGF0YSBidWZmZXIgaXMgNC1ieXRlIGFsaWduZWQsIHdoaWNoIGlzIGNydWNpYWwgZm9yIGRhdGEgaW50ZWdyaXR5LgoKTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgYWx3YXlzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBvZiBjb3Vyc2UuIEJ1dCBhZnRlciBhIHJldmlldywgSSBjYW4gY29uZmlkZW50bHkgc2F5IHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzIGhlcmUuIFRoaXMgZml4ZXMgcG90ZW50aWFsIGJ1ZmZlciB1bmRlcmZsb3csIG91dC1vZi1ib3VuZHMgbWVtb3J5IGlzc3Vlcywgb3IgbG9naWMgZXJyb3JzLCB3aGljaCBLQVNBTiB3aWxsIGhlbHAgZGV0ZWN0LiBDcnVjaWFsbHksIEkmIzM5O20gbm90IGludHJvZHVjaW5nIG9yIG1vZGlmeWluZyBhbnkgY29kZSB0aGF0IGNvdWxkIGxlYWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkgbGVha2luZyB0byB1c2Vyc3BhY2UsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgcmVhZHMuCgpUaGVyZWZvcmUsIEkmIzM5O2xsIHVwZGF0ZSB0aGUgYXNzb2NpYXRlZCBpc3N1ZSB3aXRoIGBOZWVkc0tNU0FOOiBmYWxzZWAgYW5kIHByb3ZpZGUgYSBjbGVhciBleHBsYW5hdGlvbiBvZiB0aGVzZSBwb2ludHMgaW4gdGhlIGNvbW1pdCBtZXNzYWdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBoYXJkZW5zIGlucHV0IHZhbGlkYXRpb24gaW4gdGhlIE1vcnNlIE1pY3JvIG1tODF4IGRyaXZlciYjMzk7cyBZQVBTIGhhcmR3YXJlIHBhY2tldCByZWFkaW5nIGxvZ2ljIGJ5OlxuMS4gRW5zdXJpbmcgYHBrdF9zaXplYCAocGhhbmRsZSBzaXplKSBleGNlZWRzIGBZQVBTX1JFU0VSVkVEX1BBR0VfU0laRWAgdG8gcHJldmVudCB1bmRlcmZsb3dzIGluIGBZQVBTX0RFTElNX0dFVF9QS1RfU0laRSgpYC5cbjIuIFZhbGlkYXRpbmcgdGhhdCBgYnl0ZXNfcmVtYWluaW5nYCBpcyA0LWJ5dGUgYWxpZ25lZCBiZWZvcmUgcmVhZGluZyBkZWxpbWl0ZXJzIGZyb20gdGhlIGNoaXAgYnVmZmVyLlxuXG5UaGVzZSBjaGFuZ2VzIHByZXZlbnQgcG90ZW50aWFsIGludGVnZXIgdW5kZXJmbG93LCBvdXQtb2YtYm91bmRzIHJlYWRzL3dyaXRlcywgb3IgcHJvdG9jb2wgZGVzeW5jaHJvbml6YXRpb24gd2hlbiBwYXJzaW5nIGhhcmR3YXJlIHBhY2tldCBidWZmZXJzLiBBbnkgbWVtb3J5IHNhZmV0eSB2aW9sYXRpb25zIGluIHRoaXMgYXJlYSAoZS5nLiwgbmVnYXRpdmUgc2l6ZSBwYXNzZWQgdG8gYnVmZmVyIG9wZXJhdGlvbnMgcmVzdWx0aW5nIGluIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIGFyZSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGluIGJyYW5jaGluZywgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGhhcmRlbnMgaW5wdXQgdmFsaWRhdGlvbiBpbiB0aGUgTW9yc2UgTWljcm8gbW04MXggZHJpdmVyJiMzOTtzIFlBUFMgaGFyZHdhcmUgcGFja2V0IHJlYWRpbmcgbG9naWMgYnk6XG4xLiBFbnN1cmluZyBgcGt0X3NpemVgIChwaGFuZGxlIHNpemUpIGV4Y2VlZHMgYFlBUFNfUkVTRVJWRURfUEFHRV9TSVpFYCB0byBwcmV2ZW50IHVuZGVyZmxvd3MgaW4gYFlBUFNfREVMSU1fR0VUX1BLVF9TSVpFKClgLlxuMi4gVmFsaWRhdGluZyB0aGF0IGBieXRlc19yZW1haW5pbmdgIGlzIDQtYnl0ZSBhbGlnbmVkIGJlZm9yZSByZWFkaW5nIGRlbGltaXRlcnMgZnJvbSB0aGUgY2hpcCBidWZmZXIuXG5cblRoZXNlIGNoYW5nZXMgcHJldmVudCBwb3RlbnRpYWwgaW50ZWdlciB1bmRlcmZsb3csIG91dC1vZi1ib3VuZHMgcmVhZHMvd3JpdGVzLCBvciBwcm90b2NvbCBkZXN5bmNocm9uaXphdGlvbiB3aGVuIHBhcnNpbmcgaGFyZHdhcmUgcGFja2V0IGJ1ZmZlcnMuIEFueSBtZW1vcnkgc2FmZXR5IHZpb2xhdGlvbnMgaW4gdGhpcyBhcmVhIChlLmcuLCBuZWdhdGl2ZSBzaXplIHBhc3NlZCB0byBidWZmZXIgb3BlcmF0aW9ucyByZXN1bHRpbmcgaW4gb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcykgYXJlIGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgaW4gYnJhbmNoaW5nLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyODoyOC4xNjIwOTM3NThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTkxODQ4NDE2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJXTEFOXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJNTTgxWFwiLFxuICAgIFwiTU04MVhfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibW04MXhfeWFwc19od19yZWFkX3BrdHNcIixcbiAgICBcIm1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltXCIsXG4gICAgXCJtbTgxeF95YXBzX3JlYWRfcGt0c1wiLFxuICAgIFwibW04MXhfeWFwc19yeF9oYW5kbGVyXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBoYXJkZW5zIGlucHV0IHZhbGlkYXRpb24gaW4gdGhlIE1vcnNlIE1pY3JvIG1tODF4IGRyaXZlcidzIFlBUFMgaGFyZHdhcmUgcGFja2V0IHJlYWRpbmcgbG9naWMgYnk6XFxuMS4gRW5zdXJpbmcgYHBrdF9zaXplYCAocGhhbmRsZSBzaXplKSBleGNlZWRzIGBZQVBTX1JFU0VSVkVEX1BBR0VfU0laRWAgdG8gcHJldmVudCB1bmRlcmZsb3dzIGluIGBZQVBTX0RFTElNX0dFVF9QS1RfU0laRSgpYC5cXG4yLiBWYWxpZGF0aW5nIHRoYXQgYGJ5dGVzX3JlbWFpbmluZ2AgaXMgNC1ieXRlIGFsaWduZWQgYmVmb3JlIHJlYWRpbmcgZGVsaW1pdGVycyBmcm9tIHRoZSBjaGlwIGJ1ZmZlci5cXG5cXG5UaGVzZSBjaGFuZ2VzIHByZXZlbnQgcG90ZW50aWFsIGludGVnZXIgdW5kZXJmbG93LCBvdXQtb2YtYm91bmRzIHJlYWRzL3dyaXRlcywgb3IgcHJvdG9jb2wgZGVzeW5jaHJvbml6YXRpb24gd2hlbiBwYXJzaW5nIGhhcmR3YXJlIHBhY2tldCBidWZmZXJzLiBBbnkgbWVtb3J5IHNhZmV0eSB2aW9sYXRpb25zIGluIHRoaXMgYXJlYSAoZS5nLiwgbmVnYXRpdmUgc2l6ZSBwYXNzZWQgdG8gYnVmZmVyIG9wZXJhdGlvbnMgcmVzdWx0aW5nIGluIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIGFyZSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGluIGJyYW5jaGluZywgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFja2V0IHJlY2VwdGlvbiBhbmQgZGVsaW1pdGVyIHZhbGlkYXRpb24gbG9naWMgaW4gdGhlIE1vcnNlIE1pY3JvIE1NODF4IHdpcmVsZXNzIGRyaXZlciAoZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMpLCBhZGRpbmcgYWxpZ25tZW50IHZlcmlmaWNhdGlvbiBvbiByZW1haW5pbmcgYnl0ZXMgYW5kIHN0cmljdGVyIHBhY2tldCBzaXplIHZhbGlkYXRpb24gYWdhaW5zdCByZXNlcnZlZCBwYWdlIGJvdW5kcy4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgZGV2aWNlcyBhbmQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjE6Mjg6MjguMTYyMDk5Njc4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDUyNjcyNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3NjkxZjc4YjBlMzkyNmE5YjRmNTE1NDVlZDI4MDJmMmQzMWQ5MGJlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgU2VwIDEwIDIxOjI4OjI3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmNcXG5pbmRleCAzZDY0MWQyM2MzNWJhLi45N2IyZmY5M2M2OWZmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmNcXG5AQCAtNDA3LDcgKzQwNyw3IEBAIHN0YXRpYyBib29sIG1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltKHUzMiBkZWxpbSlcXG4gXFx0aWYgKGNhbGNfY3JjICE9IFlBUFNfREVMSU1fR0VUX0NSQyhkZWxpbSkpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFxuLVxcdGlmIChwa3Rfc2l6ZSA9PSAwKVxcbitcXHRpZiAocGt0X3NpemUgXFx1MDAzYz0gWUFQU19SRVNFUlZFRF9QQUdFX1NJWkUpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFxuIFxcdGlmICgocGt0X3NpemUgKyBwYWRkaW5nKSBcXHUwMDNlIFlBUFNfTUFYX1BLVF9TSVpFX0JZVEVTKVxcbkBAIC00NTUsNiArNDU1LDEwIEBAIHN0YXRpYyBpbnQgbW04MXhfeWFwc19od19yZWFkX3BrdHMoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMsXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXHRpZiAoYnl0ZXNfcmVtYWluaW5nIFxcdTAwM2MgMClcXG4gXFx0XFx0cmV0dXJuIGJ5dGVzX3JlbWFpbmluZztcXG4rXFx0aWYgKCFJU19BTElHTkVEKGJ5dGVzX3JlbWFpbmluZywgc2l6ZW9mKHUzMikpKSB7XFxuK1xcdFxcdGRldl93YXJuKHlhcHMtXFx1MDAzZW1vcnMtXFx1MDAzZWRldiwgXFxcInlhcHMgdHJ1bmNhdGVkIGRlbGltaXRlclxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVJTztcXG4rXFx0fVxcbiBcXG4gXFx0aWYgKGJ5dGVzX3JlbWFpbmluZyBcXHUwMDNlIFlBUFNfSFdfV0lORE9XX1NJWkVfQllURVMpIHtcXG4gXFx0XFx0Ynl0ZXNfcmVtYWluaW5nID0gWUFQU19IV19XSU5ET1dfU0laRV9CWVRFUztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjE6Mjg6MjguNjY4MDUwODIxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo3MDYwODY4Njc3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJXTEFOXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJNTTgxWFwiLFxuICAgIFwiTU04MVhfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibW04MXhfeWFwc19od19yZWFkX3BrdHNcIixcbiAgICBcIm1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltXCIsXG4gICAgXCJtbTgxeF95YXBzX3JlYWRfcGt0c1wiLFxuICAgIFwibW04MXhfeWFwc19yeF9oYW5kbGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhY2tldCByZWNlcHRpb24gYW5kIGRlbGltaXRlciB2YWxpZGF0aW9uIGxvZ2ljIGluIHRoZSBNb3JzZSBNaWNybyBNTTgxeCB3aXJlbGVzcyBkcml2ZXIgKGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jKSwgYWRkaW5nIGFsaWdubWVudCB2ZXJpZmljYXRpb24gb24gcmVtYWluaW5nIGJ5dGVzIGFuZCBzdHJpY3RlciBwYWNrZXQgc2l6ZSB2YWxpZGF0aW9uIGFnYWluc3QgcmVzZXJ2ZWQgcGFnZSBib3VuZHMuIFRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGRldmljZXMgYW5kIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzY5MWY3OGIwZTM5MjZhOWI0ZjUxNTQ1ZWQyODAyZjJkMzFkOTBiZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDIxOjI4OjI3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuY1xuaW5kZXggM2Q2NDFkMjNjMzViYS4uOTdiMmZmOTNjNjlmZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuY1xuQEAgLTQwNyw3ICs0MDcsNyBAQCBzdGF0aWMgYm9vbCBtbTgxeF9yZWFkX3BrdHNfaF9pc192YWxpZF9kZWxpbSh1MzIgZGVsaW0pXG4gXHRpZiAoY2FsY19jcmMgIT0gWUFQU19ERUxJTV9HRVRfQ1JDKGRlbGltKSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuLVx0aWYgKHBrdF9zaXplID09IDApXG4rXHRpZiAocGt0X3NpemUgXHUwMDNjPSBZQVBTX1JFU0VSVkVEX1BBR0VfU0laRSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuIFx0aWYgKChwa3Rfc2l6ZSArIHBhZGRpbmcpIFx1MDAzZSBZQVBTX01BWF9QS1RfU0laRV9CWVRFUylcbkBAIC00NTUsNiArNDU1LDEwIEBAIHN0YXRpYyBpbnQgbW04MXhfeWFwc19od19yZWFkX3BrdHMoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMsXG4gXHRcdHJldHVybiAwO1xuIFx0aWYgKGJ5dGVzX3JlbWFpbmluZyBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIGJ5dGVzX3JlbWFpbmluZztcbitcdGlmICghSVNfQUxJR05FRChieXRlc19yZW1haW5pbmcsIHNpemVvZih1MzIpKSkge1xuK1x0XHRkZXZfd2Fybih5YXBzLVx1MDAzZW1vcnMtXHUwMDNlZGV2LCBcInlhcHMgdHJ1bmNhdGVkIGRlbGltaXRlclwiKTtcbitcdFx0cmV0dXJuIC1FSU87XG4rXHR9XG4gXG4gXHRpZiAoYnl0ZXNfcmVtYWluaW5nIFx1MDAzZSBZQVBTX0hXX1dJTkRPV19TSVpFX0JZVEVTKSB7XG4gXHRcdGJ5dGVzX3JlbWFpbmluZyA9IFlBUFNfSFdfV0lORE9XX1NJWkVfQllURVM7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyODoyOC42NjgwNTIyMTFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMjQ2MDUzNzc3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFN5emthbGxlciBGdXp6aW5nIFRyaWFnZSBQYXRjaCoqXG5cbk9rYXksIGhlcmUncyB3aGF0IEknbSB0aGlua2luZy4gVGhlIHVzZXIgd2FudHMgbWUgdG8gdmV0IHRoaXMgcGF0Y2ggZm9yIHN5emthbGxlciBmdXp6aW5nIHRyaWFnZS4gRmlyc3QsIEknbSBnb2luZyB0byBydW4gYSBxdWljayByaXNrIGFuYWx5c2lzLiBUaGlzIHNlZW1zIGxpa2UgaXQncyBwcmV0dHkgbG93LXN0YWtlcywgYSBjb2RlIHJldmlldyBvciBwYXRjaCB0cmlhZ2Ugc3BlY2lmaWNhbGx5IGZvciB0aGUgTGludXgga2VybmVsIGRyaXZlciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmNgLiBHaXZlbiB0aGF0IGNvbnRleHQsIGl0IGxvb2tzIGJlbmlnbiBvciBkZWZlbnNpdmUsIHNvbWV0aGluZyB0byBpbXByb3ZlIGZ1enppbmcgY29uZmlndXJhdGlvbi4gU28sIHllYWgsIHdlIHNob3VsZCBwcm9jZWVkIHdpdGggdGhpcyByZXF1ZXN0LlxuXG5Ob3csIGxldCdzIGRpdmUgaW50byB0aGUgcGF0Y2ggaXRzZWxmLiBPa2F5LCBJIHNlZSB0aGUgZGlmZi4gVGhlIGNvcmUgY2hhbmdlIGZvY3VzZXMgb24gdGhlIGBtbTgxeF9yZWFkX3BrdHNfaF9pc192YWxpZF9kZWxpbWAgZnVuY3Rpb24sIGFuZCBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgLiBJdCBsb29rcyBsaWtlIHRoZXkndmUgbW9kaWZpZWQgdGhlIHBhY2tldCBzaXplIHZhbGlkYXRpb24gbG9naWMgd2l0aGluIGBtbTgxeF9yZWFkX3BrdHNfaF9pc192YWxpZF9kZWxpbWAuIFRoZSBvbGQgY2hlY2sganVzdCBydWxlZCBvdXQgemVyby1zaXplZCBwYWNrZXRzOyBub3csIHRoZSBjb25kaXRpb24gaXMgYHBrdF9zaXplIFx1MDAzYz0gWUFQU19SRVNFUlZFRF9QQUdFX1NJWkVgLiBBbHNvLCBhIGNoZWNrIGZvciBhbGlnbmVkIHJlYWQgc2l6ZSBoYXMgYmVlbiBhZGRlZCBpbnRvIGBtbTgxeF95YXBzX2h3X3JlYWRfcGt0c2AuIEl0IHNlZW1zIGxpa2UgdGhlIGdvYWwgaXMgdG8gbWFrZSB0aGUgZnV6emluZyBtb3JlIHJvYnVzdCBieSBwcmV2ZW50aW5nIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93cyBvciB1bmRlcmZsb3dzIG9yIGhhbmRsaW5nIHRydW5jYXRlZCByZWFkcy5cblxuQmVmb3JlIEkgZ28gZnVydGhlciwgSSdkIGxpa2UgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgYnJvYWRlciBjb250ZXh0LiBXaGF0IGtpbmQgb2YgYnVzIG9yIGRldmljZSBhcmUgd2UgZGVhbGluZyB3aXRoIGhlcmU/IElzIHRoaXMgU0RJTywgU1BJLCBVU0IsIG9yIHNvbWV0aGluZyBlbHNlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUgdG8gZnVsbHkgYXNzZXNzIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuIEknbGwgbmVlZCB0byB1c2UgZWl0aGVyIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBnZXQgdGhlIGxheSBvZiB0aGUgbGFuZCB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vYC4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwOTgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MDksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyODo0MS4xMjg1OTE5ODhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE1NjEzNzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1tODF4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDQ4NDcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZz0xMz1pZiBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnOjE0OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0xNS1lbmRpZiAjIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9NYWtlZmlsZToyOm9iai0kKENPTkZJR19NTTgxWCkgKz0gbW04MXgvXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlLTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZTozOm9iai0kKENPTkZJR19NTTgxWCkgKz0gbW04MXhfY29yZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZS00LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6NTptbTgxeF9jb3JlLXkgKz0gY29yZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZTo2Om1tODF4X2NvcmUteSArPSBtYWMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6NzptbTgxeF9jb3JlLXkgKz0gaHcub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6ODptbTgxeF9jb3JlLXkgKz0gZncub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6OTptbTgxeF9jb3JlLXkgKz0gY29tbWFuZC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZToxMDptbTgxeF9jb3JlLXkgKz0gcHMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MTE6bW04MXhfY29yZS15ICs9IHNrYnEub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MTI6bW04MXhfY29yZS15ICs9IHlhcHNfaHcub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MTM6bW04MXhfY29yZS15ICs9IHlhcHMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MTQ6bW04MXhfY29yZS15ICs9IHJjLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjE1Om1tODF4X2NvcmUteSArPSBtbXJjLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX01NODFYX1VTQikgKz0gbW04MXhfdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjE4Om1tODF4X3VzYi15ICs9IHVzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZS0xOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19NTTgxWF9TRElPKSArPSBtbTgxeF9zZGlvLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L01ha2VmaWxlOjIxOm1tODF4X3NkaW8teSArPSBzZGlvLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtMTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoxMjplbnVtIG1tODF4X2J1c190eXBlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTEzLVxcdE1NODFYX0JVU19UWVBFX1VTQixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoxNzpzdHJ1Y3QgbW04MXhfYnVzX29wcyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoxODpcXHRpbnQgKCpkbV9yZWFkKShzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBhZGRyLCB1OCAqZGF0YSwgaW50IGxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoxOTpcXHRpbnQgKCpkbV93cml0ZSkoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkciwgY29uc3QgdTggKmRhdGEsIGludCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MjA6XFx0aW50ICgqcmVnMzJfcmVhZCkoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkciwgdTMyICpkYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjIxOlxcdGludCAoKnJlZzMyX3dyaXRlKShzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBhZGRyLCB1MzIgZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoyMjpcXHRpbnQgKCpkaWdpdGFsX3Jlc2V0KShzdHJ1Y3QgbW04MXggKm1vcnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6MjM6XFx0dm9pZCAoKnNldF9idXNfZW5hYmxlKShzdHJ1Y3QgbW04MXggKm1vcnMsIGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjI0OlxcdHZvaWQgKCpjb25maWdfYnVyc3RfbW9kZSkoc3RydWN0IG1tODF4ICptb3JzLCBib29sIGVuYWJsZV9idXJzdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoyNTpcXHR2b2lkICgqY2xhaW0pKHN0cnVjdCBtbTgxeCAqbW9ycyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoyNjpcXHR2b2lkICgqc2V0X2lycSkoc3RydWN0IG1tODF4ICptb3JzLCBib29sIGVuYWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDoyNzpcXHR2b2lkICgqcmVsZWFzZSkoc3RydWN0IG1tODF4ICptb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTI4LVxcdHVuc2lnbmVkIGludCBidWxrX2FsaWdubWVudDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDozNzovKiBtbTgxeF9kbV9yZWFkIC0gbGVuIG11c3QgYmUgcm91bmRlZCB1cCB0byB0aGUgbmVhcmVzdCA0LWJ5dGUgYm91bmRhcnkgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oOjM4OnN0YXRpYyBpbmxpbmUgaW50IG1tODF4X2RtX3JlYWQoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkciwgdTggKmRhdGEsIGludCBsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC0zOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6NDM6c3RhdGljIGlubGluZSBpbnQgbW04MXhfZG1fd3JpdGUoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkciwgY29uc3QgdTggKmRhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC00NC1cXHRcXHRcXHRcXHQgaW50IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDo0OTpzdGF0aWMgaW5saW5lIGludCBtbTgxeF9yZWczMl9yZWFkKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGFkZHIsIHUzMiAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTUwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDo1NDpzdGF0aWMgaW5saW5lIGludCBtbTgxeF9yZWczMl93cml0ZShzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBhZGRyLCB1MzIgZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDo1OTpzdGF0aWMgaW5saW5lIGludCBtbTgxeF9idXNfZGlnaXRhbF9yZXNldChzdHJ1Y3QgbW04MXggKm1vcnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC02MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6Njc6c3RhdGljIGlubGluZSB2b2lkIG1tODF4X3NldF9idXNfZW5hYmxlKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC02OC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6NzI6c3RhdGljIGlubGluZSB2b2lkIG1tODF4X2J1c19jb25maWdfYnVyc3RfbW9kZShzdHJ1Y3QgbW04MXggKm1vcnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC03My1cXHRcXHRcXHRcXHRcXHQgICAgICAgYm9vbCBlbmFibGVfYnVyc3QpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6Nzk6c3RhdGljIGlubGluZSB2b2lkIG1tODF4X2NsYWltX2J1cyhzdHJ1Y3QgbW04MXggKm1vcnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC04MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6ODQ6c3RhdGljIGlubGluZSB2b2lkIG1tODF4X2J1c19zZXRfaXJxKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC04NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmg6ODk6c3RhdGljIGlubGluZSB2b2lkIG1tODF4X3JlbGVhc2VfYnVzKHN0cnVjdCBtbTgxeCAqbW9ycylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2J1cy5oLTkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvYnVzLmgtOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaDo5NDpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBtbTgxeF9idXNfZ2V0X2FsaWdubWVudChzdHJ1Y3QgbW04MXggKm1vcnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9idXMuaC05NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYz0yNz1zdHJ1Y3QgaG9zdF9jbWRfcmVzcF9jYiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozMzpzdGF0aWMgaW50IG1tODF4X2NtZF90eChzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBob3N0X2NtZF9yZXNwICpyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM0LVxcdFxcdFxcdHN0cnVjdCBob3N0X2NtZF9yZXEgKnJlcSwgdTMyIGxlbmd0aCwgdTMyIHRpbWVvdXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00MS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjQyOlxcdHN0cnVjdCBtbTgxeF9za2JxICpjbWRfcSA9IG1tODF4X2hpZl9nZXRfdHhfY21kX3F1ZXVlKG1vcnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQzLVxcdHN0cnVjdCBob3N0X2NtZF9yZXNwX2NiICpyZXNwX2NiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTg6XFx0bW04MXhfcHNfZGlzYWJsZShtb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjYzOlxcdFxcdHNrYiA9IG1tODF4X3NrYnFfYWxsb2Nfc2tiKGNtZF9xLCBjbWRfbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy02NC1cXHRcXHRpZiAoIXNrYikge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtODMtXFx0XFx0dGltZW91dCA9IHRpbWVvdXQgPyB0aW1lb3V0IDogSE9TVF9DTURfREVGQVVMVF9USU1FT1VUX01TO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjg0OlxcdFxcdHJldCA9IG1tODF4X3NrYnFfc2tiX3R4KGNtZF9xLCBcXHUwMDI2c2tiLCBOVUxMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTg1LVxcdFxcdFxcdFxcdFxcdE1NODFYX1NLQl9DSEFOX0NPTU1BTkQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtODgtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjg5OlxcdFxcdFxcdGRldl9lcnIobW9ycy1cXHUwMDNlZGV2LCBcXFwibW04MXhfc2ticV90eCBmYWlsOiAlZFxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtOTAtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xMjEtXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZjbWRfcS1cXHUwMDNlbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTIyOlxcdFxcdG1tODF4X3NrYnFfc2tiX2ZpbmlzaChjbWRfcSwgc2tiLCBOVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xMjMtXFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmNtZF9xLVxcdTAwM2Vsb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTEyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoxMjk6XFx0bW04MXhfcHNfZW5hYmxlKG1vcnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTEzMC1cXHRtdXRleF91bmxvY2soXFx1MDAyNm1vcnMtXFx1MDAzZWNtZF93YWl0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoxNDY6aW50IG1tODF4X2NtZF9yZXNwX3Byb2Nlc3Moc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE0Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTQ4LVxcdGludCBsZW5ndGgsIHJldCA9IC1FU1JDSDsgLyogTm8gc3VjaCBwcm9jZXNzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTQ5OlxcdHN0cnVjdCBtbTgxeF9za2JxICpjbWRfcSA9IG1tODF4X2hpZl9nZXRfdHhfY21kX3F1ZXVlKG1vcnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE1MC1cXHRzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqc3JjX3Jlc3AgPSAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKikoc2tiLVxcdTAwM2VkYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE2My1cXHRpZiAoIUhPU1RfQ01EX0lTX1JFU1Aoc3JjX3Jlc3ApKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MTY0OlxcdFxcdHJldCA9IG1tODF4X21hY19ldmVudF9yZWN2KG1vcnMsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTY1LVxcdFxcdGdvdG8gZXhpdF9mcmVlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMTY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjE3MDpcXHRjbWRfc2tiID0gbW04MXhfc2ticV90eF9wZW5kaW5nKGNtZF9xKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0xNzEtXFx0aWYgKGNtZF9za2IpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoxNzI6XFx0XFx0bW04MXhfc2ticV9wdWxsX2hkcl9wb3N0X3R4KGNtZF9za2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTE3My1cXHRcXHRyZXEgPSAoc3RydWN0IGhvc3RfY21kX3JlcSAqKWNtZF9za2ItXFx1MDAzZWRhdGE7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjMyOmludCBtbTgxeF9jbWRfc3RhX3N0YXRlKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYsIHUxNiBhaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjMzLVxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MjQ2OlxcdHJldHVybiBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcXHUwMDI2cmVxLCAwLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0yNDctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI0OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyNDk6aW50IG1tODF4X2NtZF9hZGRfaWYoc3RydWN0IG1tODF4ICptb3JzLCB1MTYgKnZpZl9pZCwgY29uc3QgdTggKmFkZHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjUwLVxcdFxcdCAgICAgZW51bSBubDgwMjExX2lmdHlwZSB0eXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjI3MTpcXHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgKHN0cnVjdCBob3N0X2NtZF9yZXNwICopXFx1MDAyNnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjcyLVxcdFxcdFxcdCAgIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgc2l6ZW9mKHJlc3ApLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI3OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyNzk6aW50IG1tODF4X2NtZF9nZXRfY2FwYWJpbGl0aWVzKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2IHZpZl9pZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyODA6XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBtbTgxeF9md19jYXBzICpjYXBhYmlsaXRpZXMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjgxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTI4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzoyODk6XFx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIChzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqKVxcdTAwMjZyc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjkwLVxcdFxcdFxcdCAgIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgc2l6ZW9mKHJzcCksIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjk0LVxcdGNhcGFiaWxpdGllcy1cXHUwMDNlYW1wZHVfbXNzID0gcnNwLmNhcGFiaWxpdGllcy5hbXBkdV9tc3M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6Mjk1OlxcdGNhcGFiaWxpdGllcy1cXHUwMDNlbW04MXhfbW1zc19vZmZzZXQgPSByc3AubW9yc2VfbW1zc19vZmZzZXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMjk2LVxcdGNhcGFiaWxpdGllcy1cXHUwMDNlYmVhbWZvcm1lZV9zdHNfY2FwYWJpbGl0eSA9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MzA4OmludCBtbTgxeF9jbWRfZ2V0X21heF90eHBvd2VyKHN0cnVjdCBtbTgxeCAqbW9ycywgczMyICpvdXRfcG93ZXJfbWJtKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMwOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MzE2OlxcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilcXHUwMDI2cmVzcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMTctXFx0XFx0XFx0ICAgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjMyNDppbnQgbW04MXhfY21kX2h3X3NjYW4oc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfaHdfc2Nhbl9wYXJhbXMgKnBhcmFtcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zMjUtXFx0XFx0ICAgICAgYm9vbCBzdG9yZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTMzMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozMzM6XFx0Y21kX3NpemUgPSBtbTgxeF9od19zY2FuX2hfZ2V0X2NtZF9zaXplKHBhcmFtcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzM0LVxcdGNtZF9zaXplID0gUk9VTkRfQllURVNfVE9fV09SRChjbWRfc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNTItXFx0XFx0cmVxLVxcdTAwM2Vkd2VsbF90aW1lX21zID0gY3B1X3RvX2xlMzIocGFyYW1zLVxcdTAwM2Vkd2VsbF90aW1lX21zKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozNTM6XFx0XFx0YnVmID0gbW04MXhfaHdfc2Nhbl9oX2luc2VydF90bHZzKHBhcmFtcywgYnVmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zNTQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzU4LVxcdHJlcS1cXHUwMDNlaGRyLmxlbiA9IGNwdV90b19sZTE2KCh1MTYpKChidWYgLSAodTggKilyZXEpIC0gc2l6ZW9mKHJlcS1cXHUwMDNlaGRyKSkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjM1OTpcXHRyZXQgPSBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilyZXEsIDAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM2MC1cXHRrZnJlZShyZXEpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtMzY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjM2NTppbnQgbW04MXhfY21kX3NldF90eHBvd2VyKHN0cnVjdCBtbTgxeCAqbW9ycywgczMyICpvdXRfcG93ZXJfbWJtLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM2Ni1cXHRcXHRcXHQgIGludCB0eHBvd2VyX21ibSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzozNzU6XFx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIChzdHJ1Y3QgaG9zdF9jbWRfcmVzcCAqKVxcdTAwMjZyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM3Ni1cXHRcXHRcXHQgICAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIHNpemVvZihyZXNwKSwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6MzgzOmludCBtbTgxeF9jbWRfc2V0X2NoYW5uZWwoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgb3BfY2hhbl9mcmVxX2h6LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTM4NC1cXHRcXHRcXHQgIHU4IHByaV8xbWh6X2NoYW5faWR4LCB1OCBvcF9id19taHosIHU4IHByaV9id19taHosXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zOTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6Mzk4OlxcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilcXHUwMDI2cmVzcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy0zOTktXFx0XFx0XFx0ICAgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjQwNjppbnQgbW04MXhfY21kX2Rpc2FibGVfa2V5KHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDA3LVxcdFxcdFxcdCAgdTE2IGFpZCwgc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjQxOTpcXHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgMCwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDIwLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00MjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDIyOmludCBtbTgxeF9jbWRfaW5zdGFsbF9rZXkoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00MjMtXFx0XFx0XFx0ICB1MTYgYWlkLCBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00NDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDQ2OlxcdHJldCA9IG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilcXHUwMDI2cmVzcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00NDctXFx0XFx0XFx0ICAgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcXHUwMDI2cmVxLCBzaXplb2YocmVzcCksIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjQ1NzppbnQgbW04MXhfY21kX2NmZ19tdWx0aWNhc3RfZmlsdGVyKHN0cnVjdCBtbTgxeCAqbW9ycyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0NTg6XFx0XFx0XFx0XFx0ICAgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDU5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0NzU6XFx0cmV0ID0gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopcmVxLCAwLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00NzYtXFx0a2ZyZWUocmVxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0ODA6aW50IG1tODF4X2NtZF9jZmdfYnNzKHN0cnVjdCBtbTgxeCAqbW9ycywgdTE2IHZpZl9pZCwgdTE2IGJlYWNvbl9pbnQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDgxLVxcdFxcdCAgICAgIHUxNiBkdGltX3BlcmlvZCwgdTMyIGNzc2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDg5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjQ5MDpcXHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgMCwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDkxLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00OTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NDkzOmludCBtbTgxeF9jbWRfY29uZmlnX2JlYWNvbl90aW1lcihzdHJ1Y3QgbW04MXggKm1vcnMsIHZvaWQgKm1tODF4X3ZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy00OTQtXFx0XFx0XFx0XFx0ICBib29sIGVuYWJsZWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNDk1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo0OTY6XFx0c3RydWN0IG1tODF4X3ZpZiAqdmlmID0gbW04MXhfdmlmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTQ5Ny1cXHRzdHJ1Y3QgaG9zdF9jbWRfcmVxX2Jzc19iZWFjb25fY29uZmlnIHJlcSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1MDM6XFx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIDAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUwNC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjUwNjppbnQgbW04MXhfY21kX3NldF9wcyhzdHJ1Y3QgbW04MXggKm1vcnMsIGJvb2wgZW5hYmxlZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MDcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjUxMzpcXHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MTQtXFx0XFx0XFx0ICAgIEhPU1RfQ01EX1BPV0VSU0FWRV9USU1FT1VUX01TKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1MTc6aW50IG1tODF4X2NtZF9jZmdfcW9zKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3F1ZXVlX3BhcmFtcyAqcGFyYW1zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUxOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTI5OlxcdHJldHVybiBtbTgxeF9jbWRfdHgobW9ycywgTlVMTCwgKHN0cnVjdCBob3N0X2NtZF9yZXEgKilcXHUwMDI2cmVxLCAwLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01MzAtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUzMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1MzI6aW50IG1tODF4X2NtZF9ybV9pZihzdHJ1Y3QgbW04MXggKm1vcnMsIHUxNiB2aWZfaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTMzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1Mzg6XFx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCBOVUxMLCAoc3RydWN0IGhvc3RfY21kX3JlcSAqKVxcdTAwMjZyZXEsIDAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTUzOS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjU0MTppbnQgbW04MXhfY21kX3NldF9mcmFnX3RocmVzaG9sZChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBmcmFnX3RocmVzaG9sZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NDIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjU1MDpcXHRyZXR1cm4gbW04MXhfY21kX3R4KG1vcnMsIE5VTEwsIChzdHJ1Y3QgaG9zdF9jbWRfcmVxICopXFx1MDAyNnJlcSwgMCwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmMtNTUxLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmM6NTUzOmludCBtbTgxeF9jbWRfZ2V0X2Rpc2FibGVkX2NoYW5uZWxzKFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jOjU1NDpcXHRzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBob3N0X2NtZF9yZXNwX2dldF9kaXNhYmxlZF9jaGFubmVscyAqcmVzcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NTUtXFx0dWludCByZXNwX2xlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5jLTU2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYzo1NjE6XFx0cmV0dXJuIG1tODF4X2NtZF90eChtb3JzLCAoc3RydWN0IGhvc3RfY21kX3Jlc3AgKilyZXNwLCBcXHUwMDI2cmVxLCByZXNwX2xlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuYy01NjItXFx0XFx0XFx0ICAgIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6MTk6c3RydWN0IG1tODF4X3F1ZXVlX3BhcmFtcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC0yMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDoyMTplbnVtIG1tODF4X2NtZF9yZXR1cm5fY29kZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtMjItXFx0TU04MVhfUkVUX1NVQ0NFU1MgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg9NDQ9c3RydWN0IGhvc3RfY21kX2V2ZW50IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjQ5OmludCBtbTgxeF9jbWRfcmVzcF9wcm9jZXNzKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NTA6aW50IG1tODF4X2NtZF9hZGRfaWYoc3RydWN0IG1tODF4ICptb3JzLCB1MTYgKnZpZl9pZCwgY29uc3QgdTggKmFkZHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtNTEtXFx0XFx0ICAgICBlbnVtIG5sODAyMTFfaWZ0eXBlIHR5cGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjUyOmludCBtbTgxeF9jbWRfZ2V0X2NhcGFiaWxpdGllcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHUxNiB2aWZfaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NTM6XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBtbTgxeF9md19jYXBzICpjYXBhYmlsaXRpZXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjU0OmludCBtbTgxeF9jbWRfY2ZnX3FvcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF9xdWV1ZV9wYXJhbXMgKnBhcmFtcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NTU6aW50IG1tODF4X2NtZF9jb25maWdfYmVhY29uX3RpbWVyKHN0cnVjdCBtbTgxeCAqbW9ycywgdm9pZCAqbW04MXhfdmlmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTU2LVxcdFxcdFxcdFxcdCAgYm9vbCBlbmFibGVkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo1NzppbnQgbW04MXhfY21kX2NmZ19ic3Moc3RydWN0IG1tODF4ICptb3JzLCB1MTYgdmlmX2lkLCB1MTYgYmVhY29uX2ludCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC01OC1cXHRcXHQgICAgICB1MTYgZHRpbV9wZXJpb2QsIHUzMiBjc3NpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6NTk6aW50IG1tODF4X2NtZF9zZXRfY2hhbm5lbChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBvcF9jaGFuX2ZyZXFfaHosXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtNjAtXFx0XFx0XFx0ICB1OCBwcmlfMW1oel9jaGFuX2lkeCwgdTggb3BfYndfbWh6LCB1OCBwcmlfYndfbWh6LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTYxLVxcdFxcdFxcdCAgczMyICpwb3dlcl9tYm0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjYyOmludCBtbTgxeF9jbWRfZ2V0X21heF90eHBvd2VyKHN0cnVjdCBtbTgxeCAqbW9ycywgczMyICpvdXRfcG93ZXJfbWJtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo2MzppbnQgbW04MXhfY21kX3NldF90eHBvd2VyKHN0cnVjdCBtbTgxeCAqbW9ycywgczMyICpvdXRfcG93ZXJfbWJtLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTY0LVxcdFxcdFxcdCAgaW50IHR4cG93ZXJfbWJtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo2NTppbnQgbW04MXhfY21kX2h3X3NjYW4oc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfaHdfc2Nhbl9wYXJhbXMgKnBhcmFtcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC02Ni1cXHRcXHQgICAgICBib29sIHN0b3JlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo2NzppbnQgbW04MXhfY21kX3NldF9wcyhzdHJ1Y3QgbW04MXggKm1vcnMsIGJvb2wgZW5hYmxlZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6Njg6aW50IG1tODF4X2NtZF9jZmdfbXVsdGljYXN0X2ZpbHRlcihzdHJ1Y3QgbW04MXggKm1vcnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6Njk6XFx0XFx0XFx0XFx0ICAgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjcwOmludCBtbTgxeF9jbWRfc3RhX3N0YXRlKHN0cnVjdCBtbTgxeCAqbW9ycywgc3RydWN0IG1tODF4X3ZpZiAqbW9yc192aWYsIHUxNiBhaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmgtNzEtXFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC03Mi1cXHRcXHRcXHRlbnVtIGllZWU4MDIxMV9zdGFfc3RhdGUgc3RhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjczOmludCBtbTgxeF9jbWRfaW5zdGFsbF9rZXkoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC03NC1cXHRcXHRcXHQgIHUxNiBhaWQsIHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oLTc2LVxcdFxcdFxcdCAgZW51bSBob3N0X2NtZF9hZXNfa2V5X2xlbiBsZW5ndGgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjc3OmludCBtbTgxeF9jbWRfZGlzYWJsZV9rZXkoc3RydWN0IG1tODF4ICptb3JzLCBzdHJ1Y3QgbW04MXhfdmlmICptb3JzX3ZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC03OC1cXHRcXHRcXHQgIHUxNiBhaWQsIHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb21tYW5kLmg6Nzk6aW50IG1tODF4X2NtZF9ybV9pZihzdHJ1Y3QgbW04MXggKm1vcnMsIHUxNiB2aWZfaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29tbWFuZC5oOjgwOmludCBtbTgxeF9jbWRfc2V0X2ZyYWdfdGhyZXNob2xkKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIGZyYWdfdGhyZXNob2xkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo4MTppbnQgbW04MXhfY21kX2dldF9kaXNhYmxlZF9jaGFubmVscyhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaDo4MjpcXHRzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBob3N0X2NtZF9yZXNwX2dldF9kaXNhYmxlZF9jaGFubmVscyAqcmVzcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvbW1hbmQuaC04My1cXHR1aW50IHJlc3BfbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjExOnN0YXRpYyBpbnQgbW04MXhfY29yZV9hdHRhY2hfcmVncyhzdHJ1Y3QgbW04MXggKm1vcnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTU6XFx0bW04MXhfY2xhaW1fYnVzKG1vcnMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjE2OlxcdHJldCA9IG1tODF4X3JlZzMyX3JlYWQobW9ycywgTU04MTA4X1JFR19DSElQX0lELCBcXHUwMDI2bW9ycy1cXHUwMDNlY2hpcF9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTc6XFx0bW04MXhfcmVsZWFzZV9idXMobW9ycyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0yNi1cXHRcXHRtb3JzLVxcdTAwM2VyZWdzID0gXFx1MDAyNm1tODEwOF9yZWdzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjI3OlxcdFxcdG1vcnMtXFx1MDAzZWhpZi5vcHMgPSBcXHUwMDI2bW04MXhfeWFwc19vcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMjgtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0zNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzozNjpzdGF0aWMgdm9pZCBtbTgxeF9jb3JlX2luaXRfbWFjX2FkZHIoc3RydWN0IG1tODF4ICptb3JzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTM3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzozODpcXHRpbnQgcmV0ID0gbW04MXhfaHdfb3RwX2dldF9tYWNfYWRkcihtb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0zOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjQ0OmNoYXIgKm1tODF4X2NvcmVfZ2V0X2Z3X3BhdGgodTMyIGNoaXBfaWQsIHUzMiBmd192ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNTgtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjU5OkVYUE9SVF9TWU1CT0xfR1BMKG1tODF4X2NvcmVfZ2V0X2Z3X3BhdGgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjYxOnN0cnVjdCBtbTgxeCAqbW04MXhfY29yZV9hbGxvYyhzaXplX3QgcHJpdl9zaXplLCBzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNjIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjYzOlxcdHJldHVybiBtbTgxeF9tYWNfYWxsb2MocHJpdl9zaXplLCBkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTY0LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo2NTpFWFBPUlRfU1lNQk9MX0dQTChtbTgxeF9jb3JlX2FsbG9jKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy02Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo2NzppbnQgbW04MXhfY29yZV9pbml0KHN0cnVjdCBtbTgxeCAqbW9ycylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy02OC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy03My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzo3NDpcXHRtbTgxeF9jb3JlX2luaXRfbWFjX2FkZHIobW9ycyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtNzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6NzY6XFx0cmV0ID0gbW04MXhfY29yZV9hdHRhY2hfcmVncyhtb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy03Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6OTA6XFx0cmV0ID0gbW04MXhfaGlmX2luaXQobW9ycyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtOTEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTEwNS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTA2OkVYUE9SVF9TWU1CT0xfR1BMKG1tODF4X2NvcmVfaW5pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjEwODppbnQgbW04MXhfY29yZV9yZWdpc3RlcihzdHJ1Y3QgbW04MXggKm1vcnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTA5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMTA6XFx0cmV0dXJuIG1tODF4X21hY19yZWdpc3Rlcihtb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMTEtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjExMjpFWFBPUlRfU1lNQk9MX0dQTChtbTgxeF9jb3JlX3JlZ2lzdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6MTE0OnZvaWQgbW04MXhfY29yZV91bnJlZ2lzdGVyKHN0cnVjdCBtbTgxeCAqbW9ycylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMTUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjExNjpcXHRtbTgxeF9tYWNfdW5yZWdpc3Rlcihtb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMTctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjExODpFWFBPUlRfU1lNQk9MX0dQTChtbTgxeF9jb3JlX3VucmVnaXN0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTExOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMjA6dm9pZCBtbTgxeF9jb3JlX2RlaW5pdChzdHJ1Y3QgbW04MXggKm1vcnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTIxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMjI6XFx0bW04MXhfaGlmX2ZpbmlzaChtb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMjMtXFx0Zmx1c2hfd29ya3F1ZXVlKG1vcnMtXFx1MDAzZW5ldF93cSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMjctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjEyODpFWFBPUlRfU1lNQk9MX0dQTChtbTgxeF9jb3JlX2RlaW5pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jOjEzMDp2b2lkIG1tODF4X2NvcmVfZnJlZShzdHJ1Y3QgbW04MXggKm1vcnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTMxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMzI6XFx0bW04MXhfbWFjX2ZyZWUobW9ycyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmMtMTMzLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYzoxMzQ6RVhQT1JUX1NZTUJPTF9HUEwobW04MXhfY29yZV9mcmVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0xMzUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC01NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDo1NTpzdHJ1Y3QgbW04MXhfYnVzX29wcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDo1NjpzdHJ1Y3QgbW04MXhfaGlmX29wcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC01Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjYzOmVudW0gbW04MXhfY2Fwc19mbGFncyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtNjQtXFx0TU04MVhfQ0FQU19GV19TVEFSVCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTMyOnN0cnVjdCBtbTgxeF9md19jYXBzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xMzMtXFx0dTMyIGZsYWdzW0ZXX0NBUEFCSUxJVElFU19GTEFHU19XSURUSF07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xMzctXFx0dTggbWF4aW11bV9hbXBkdV9sZW5ndGhfZXhwb25lbnQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTM4OlxcdHU4IG1tODF4X21tc3Nfb2Zmc2V0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTEzOS19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTQxLSNkZWZpbmUgTU04MVhfRldfU1VQUChNTTgxWF9DQVBTLCBDQVBBQklMSVRZKSBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTQyOlxcdG1tODF4X2NhcHNfc3VwcG9ydGVkKE1NODFYX0NBUFMsIE1NODFYX0NBUFNfIyNDQVBBQklMSVRZKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE0My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoxNDQ6c3RhdGljIGlubGluZSBib29sIG1tODF4X2NhcHNfc3VwcG9ydGVkKHN0cnVjdCBtbTgxeF9md19jYXBzICpjYXBzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjE0NTpcXHRcXHRcXHRcXHRcXHRlbnVtIG1tODF4X2NhcHNfZmxhZ3MgZmxhZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xNDYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjE1MjpzdHJ1Y3QgbW04MXhfcHMge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE1My1cXHR1MzIgd2FrZXJzO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjE2MTplbnVtIG1tODF4X3BhZ2VfYWNpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xNjItXFx0TU04MVhfQUNJX0JFID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoxNjg6ZW51bSBtbTgxeF9xb3NfdGlkX3VwX2luZGV4IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xNjktXFx0TU04MVhfUU9TX1RJRF9VUF9CSyA9IDEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTgyOnN0cnVjdCBtbTgxeF9zd192ZXJzaW9uIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xODMtXFx0dTggbWFqb3I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0xODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTg4OnN0cnVjdCBtbTgxeF9zdGEge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE4OS1cXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMTk1LVxcdGludCBtYXhfYndfbWh6O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjE5NjpcXHRzdHJ1Y3QgbW04MXhfcmNfc3RhIHJjO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE5Ny1cXHRzdHJ1Y3QgbW1yY19yYXRlIGxhc3Rfc3RhX3R4X3JhdGU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjAyOnN0cnVjdCBtbTgxeF92aWYge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjIwMzpcXHRzdHJ1Y3QgbW04MXggKm1vcnM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjA0LVxcdHUxNiBpZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTIxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyMTc6c3RydWN0IG1tODF4X3N0YWxlX3R4X3N0YXR1cyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjE4LVxcdC8qIFN0YWxlIFR4IGxvY2sgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oPTIyMz1zdHJ1Y3QgbWNhc3RfZmlsdGVyIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTIzMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyMzM6ZW51bSBtbTgxeF9od19zY2FuX29wIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yMzQtXFx0TU04MVhfSFdfU0NBTl9PUF9TVEFSVCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTIzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyMzg6c3RydWN0IG1tODF4X2h3X3NjYW5fcGFyYW1zIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yMzktXFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yNDUtXFx0dTMyIGR3ZWxsX29uX2hvbWVfbXM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjQ2OlxcdGVudW0gbW04MXhfaHdfc2Nhbl9vcCBvcGVyYXRpb247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjQ3LVxcdGJvb2wgc3RvcmU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yNjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MjYyOmVudW0gbW04MXhfaHdfc2Nhbl9zdGF0ZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjYzLVxcdEhXX1NDQU5fU1RBVEVfSURMRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTI2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyNjg6c3RydWN0IG1tODF4X2h3X3NjYW4ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjI2OTpcXHRlbnVtIG1tODF4X2h3X3NjYW5fc3RhdGUgc3RhdGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjcwLVxcdHN0cnVjdCBjb21wbGV0aW9uIHNjYW5fZG9uZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyNzE6XFx0c3RydWN0IG1tODF4X2h3X3NjYW5fcGFyYW1zICpwYXJhbXM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmgtMjcyLVxcdHN0cnVjdCBkZWxheWVkX3dvcmsgdGltZW91dDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTI3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyNzY6ZW51bSBtbTgxeF9oaWZfZXZlbnRfZmxhZ3Mge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTI3Ny1cXHRNTTgxWF9ISUZfRVZUX1JYX1BFTkQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0yODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6Mjg5OmVudW0gbW04MXhfc3RhdGVfZmxhZ3Mge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTI5MC1cXHRNTTgxWF9TVEFURV9DSElQX1VOUkVTUE9OU0lWRSxcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyODo0MS4zNDQyMTA2MTVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNTMyMzYxODg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBJIGRlbHZlIGludG8gdGhpcyBjb25maWd1cmF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgVVNCIGFuZCBTRElPIFN1cHBvcnQgd2l0aGluIHRoZSBtbTgxeCBXaXJlbGVzcyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJIHNlZSBgQ09ORklHX01NODFYX1VTQmAgYW5kIGBDT05GSUdfTU04MVhfU0RJT2AgYXJlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRpbWUgdG8gZGlnIGluLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc3RhdHVzIG9mIFVTQiBwcm9iaW5nLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBtbTgxeCBjaGlwc2V0LiBNeSBpbml0aWFsIHRhcmdldCBpcyB0aGUgc291cmNlIGNvZGUuIEkgd2lsbCBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC91c2IuY2AgYW5kIGl0cyBhc3NvY2lhdGVkIGBLY29uZmlnYCBmaWxlLiBUaGUgYHVzYi5jYCBmaWxlIHNob3VsZCBjb250YWluIHRoZSBVU0Itc3BlY2lmaWMgZHJpdmVyIGNvZGUsIGFuZCB0aGUgYEtjb25maWdgIGZpbGUgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBJIHdpbGwgdXNlIHRoZSBgS2NvbmZpZ2AgZm9yIHRoZSBjb25maWd1cmF0aW9uIGZsYWdzIGZvciBwcm9iaW5nLiBCeSByZWZlcmVuY2luZyBib3RoIG9mIHRoZXNlIGZpbGVzLCBJIGNhbiB2ZXJpZnkgd2hldGhlciB0aGUgbW9kdWxlIHN1cHBvcnRzIFVTQiBhbmQgYXNjZXJ0YWluIGhvdyBpdOKAmXMgY29uZmlndXJlZCB0byBwcm9iZSBmb3IgVVNCIGRldmljZXMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbXBsZXRlIHBpY3R1cmUsIG5vdCBqdXN0IHRoZSBjb2RlLCBidXQgdGhlIGludGVudGlvbi4gVGhpcyB3aWxsIGxldCBtZSBhc3Nlc3Mgd2hhdOKAmXMgZ29pbmcgb24sIGFuZCBpZGVudGlmeSBpZiB0aGVyZSBpcyBhbiBpc3N1ZSB0byBhZGRyZXNzIGluIHRoaXMgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg5MzksIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyODo0NC44NzY1NzU0MDNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjM2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRcXG4gICAzOlxcdGNvbmZpZyBNTTgxWFxcbiAgIDQ6XFx0XFx0dHJpc3RhdGUgXFxcIk1vcnNlIE1pY3JvIE1NODF4IHdpcmVsZXNzIGRldmljZXNcXFwiIGlmIENPTVBJTEVfVEVTVFxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgIDY6XFx0XFx0c2VsZWN0IEZXX0xPQURFUlxcbiAgIDc6XFx0XFx0c2VsZWN0IENSQzdcXG4gICA4OlxcdFxcdGhlbHBcXG4gICA5OlxcdFxcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBkZXZpY2VzIGJhc2VkXFxuICAxMDpcXHRcXHQgIG9uIE1vcnNlIE1pY3JvIE1NODF4eCBjaGlwc2V0cy5cXG4gIDExOlxcdFxcbiAgMTI6XFx0Y29uZmlnIE1NODFYX1VTQlxcbiAgMTM6XFx0XFx0dHJpc3RhdGUgXFxcIk1vcnNlIE1pY3JvIE1NODF4IFVTQiBzdXBwb3J0XFxcIlxcbiAgMTQ6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcXHUwMDI2XFx1MDAyNiBVU0JcXG4gIDE1OlxcdFxcdHNlbGVjdCBNTTgxWFxcbiAgMTY6XFx0XFx0aGVscFxcbiAgMTc6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHRoZSBVU0IgaW50ZXJmYWNlIG9mXFxuICAxODpcXHRcXHQgIGRldmljZXMgdXNpbmcgdGhlIE1vcnNlIE1pY3JvIE1NODF4IGNoaXBzZXQuXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBNTTgxWF9TRElPXFxuICAyMTpcXHRcXHR0cmlzdGF0ZSBcXFwiTW9yc2UgTWljcm8gTU04MXggU0RJTyBzdXBwb3J0XFxcIlxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcXHUwMDI2XFx1MDAyNiBNTUNcXG4gIDIzOlxcdFxcdHNlbGVjdCBNTTgxWFxcbiAgMjQ6XFx0XFx0aGVscFxcbiAgMjU6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHRoZSBTRElPIGludGVyZmFjZSBvZlxcbiAgMjY6XFx0XFx0ICBkZXZpY2VzIHVzaW5nIHRoZSBNb3JzZSBNaWNybyBNTTgxeCBjaGlwc2V0LlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyODo0NC44NzY2MzM2MDNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1OTEzNjE1OTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZTpcblxuKipVU0IgRnV6emluZywgTGV0J3MgRGl2ZSBEZWVwKipcblxuUmlnaHQsIHNvIGBNTTgxWF9VU0JgIGlzICphY3R1YWxseSogYSB0aGluZyEgU3l6a2FsbGVyIGlzIGhhbW1lcmluZyBhd2F5IGF0IFVTQiBkcml2ZXJzIHVzaW5nIFJhdyBHYWRnZXQgYW5kIFVTQiBlbXVsYXRpb24sIHdoaWNoIGlzIGZhc2NpbmF0aW5nLiBUaGlzIG1lYW5zIHdlJ3ZlIGdvdCBhIG5ldyBhdmVudWUgZm9yIHVuY292ZXJpbmcgdGhvc2UgZ25hcmx5LCBoYXJkLXRvLWZpbmQgYnVncy4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgZm9yIG1lIGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYG1tODF4YCB3aXJlbGVzcyBkcml2ZXIgaW50ZXJmYWNlcyB3aXRoIFVTQi4gSSdtIGhlYWRpbmcgc3RyYWlnaHQgZm9yIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jYC4gSSBuZWVkIHRvIHNlZSBleGFjdGx5IGhvdyBwYWNrZXRzIGFuZCBZQVBTIGFyZSBhY3R1YWxseSAqcmVhY2hlZCogdGhyb3VnaCB0aGlzIFVTQiBpbnRlcmZhY2UuIExldCdzIHNlZSBob3cgdGhlIG1hZ2ljIGhhcHBlbnMgYW5kIHdoYXQga2luZCBvZiBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIHdlIGNhbiBzbmlmZiBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5Njc1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyODo1MC43OTAyNTM0NTVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAxNjE2MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieWFwc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDg4MCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZT0xMT1tbTgxeF9jb3JlLXkgKz0gc2ticS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZToxMjptbTgxeF9jb3JlLXkgKz0geWFwc19ody5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZToxMzptbTgxeF9jb3JlLXkgKz0geWFwcy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9NYWtlZmlsZS0xNC1tbTgxeF9jb3JlLXkgKz0gcmMub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM9MTE9c3RhdGljIGludCBtbTgxeF9jb3JlX2F0dGFjaF9yZWdzKHN0cnVjdCBtbTgxeCAqbW9ycylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5jLTI2LVxcdFxcdG1vcnMtXFx1MDAzZXJlZ3MgPSBcXHUwMDI2bW04MTA4X3JlZ3M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmM6Mjc6XFx0XFx0bW9ycy1cXHUwMDNlaGlmLm9wcyA9IFxcdTAwMjZtbTgxeF95YXBzX29wcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuYy0yOC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTE4LSNpbmNsdWRlIFxcdTAwM2NsaW51eC93YWl0LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg6MTk6I2luY2x1ZGUgXFxcInlhcHMuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaDoyMDojaW5jbHVkZSBcXFwieWFwc19ody5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTIxLSNpbmNsdWRlIFxcXCJody5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9jb3JlLmg9MzAzPXN0cnVjdCBtbTgxeCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2NvcmUuaC0zNDctXFx0XFx0dW5pb24ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oOjM0ODpcXHRcXHRcXHRzdHJ1Y3QgbW04MXhfeWFwcyB5YXBzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvY29yZS5oLTM0OS1cXHRcXHR9IHU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3LmM9NTQ2PWludCBtbTgxeF9md19wYXJzZV9leHRfaG9zdF90Ymwoc3RydWN0IG1tODF4ICptb3JzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5jLTU3OC1cXHRcXHRjYXNlIE1NODFYX0ZXX0hPU1RfVEFCTEVfVEFHX1lBUFNfVEFCTEU6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5jOjU3OTpcXHRcXHRcXHRtbTgxeF95YXBzX2h3X3JlYWRfdGFibGUoXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5jOjU4MDpcXHRcXHRcXHRcXHRtb3JzLCBcXHUwMDI2KChzdHJ1Y3QgZXh0X2hvc3RfdGJsX3lhcHNfdGFibGUgKiloZHIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5jOjU4MTpcXHRcXHRcXHRcXHRcXHQgICAgICAgLVxcdTAwM2V5YXBzX3RhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3LmMtNTgyLVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5oLTEyLSNpbmNsdWRlIFxcXCJjb21tYW5kX2RlZnMuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3Lmg6MTM6I2luY2x1ZGUgXFxcInlhcHNfaHcuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3LmgtMTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3Lmg9MTI0PXN0cnVjdCBleHRfaG9zdF90YmxfaW5zZXJ0X3NrYl9jaGVja3N1bSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3LmgtMTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvZncuaDoxMjk6c3RydWN0IGV4dF9ob3N0X3RibF95YXBzX3RhYmxlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2Z3LmgtMTMwLVxcdHN0cnVjdCBleHRfaG9zdF90YmxfdGx2X2hkciBoZWFkZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5oOjEzMTpcXHRzdHJ1Y3QgbW04MXhfeWFwc19od190YWJsZSB5YXBzX3RhYmxlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvZncuaC0xMzItfSBfX3BhY2tlZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvaHcuYy0xNS0jaW5jbHVkZSBcXFwiZncuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2h3LmM6MTY6I2luY2x1ZGUgXFxcInlhcHMuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L2h3LmMtMTctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0yMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoyMzpzdGF0aWMgaW50IG1tODF4X3lhcHNfYWxsb2NfcGt0X2J1ZmZlcnMoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjI1OlxcdHlhcHMtXFx1MDAzZWh3LnRvX2NoaXBfcGt0cyA9IGtjYWxsb2MoTUFYX1BLVFNfUEVSX1RYX1RYTixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoyNjpcXHRcXHRcXHRcXHRcXHRzaXplb2YoKnlhcHMtXFx1MDAzZWh3LnRvX2NoaXBfcGt0cyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjctXFx0XFx0XFx0XFx0XFx0R0ZQX0tFUk5FTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6Mjg6XFx0aWYgKCF5YXBzLVxcdTAwM2Vody50b19jaGlwX3BrdHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjktXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MzE6XFx0eWFwcy1cXHUwMDNlaHcuZnJvbV9jaGlwX3BrdHMgPSBrY2FsbG9jKE1BWF9QS1RTX1BFUl9SWF9UWE4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MzI6XFx0XFx0XFx0XFx0XFx0ICBzaXplb2YoKnlhcHMtXFx1MDAzZWh3LmZyb21fY2hpcF9wa3RzKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zMy1cXHRcXHRcXHRcXHRcXHQgIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjM0OlxcdGlmICgheWFwcy1cXHUwMDNlaHcuZnJvbV9jaGlwX3BrdHMpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozNTpcXHRcXHRrZnJlZSh5YXBzLVxcdTAwM2Vody50b19jaGlwX3BrdHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjM2OlxcdFxcdHlhcHMtXFx1MDAzZWh3LnRvX2NoaXBfcGt0cyA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzctXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0MzpzdGF0aWMgdm9pZCBtbTgxeF95YXBzX2ZyZWVfcGt0X2J1ZmZlcnMoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjQ1OlxcdGtmcmVlKHlhcHMtXFx1MDAzZWh3LmZyb21fY2hpcF9wa3RzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0NjpcXHR5YXBzLVxcdTAwM2Vody5mcm9tX2NoaXBfcGt0cyA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDc6XFx0a2ZyZWUoeWFwcy1cXHUwMDNlaHcudG9fY2hpcF9wa3RzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0ODpcXHR5YXBzLVxcdTAwM2Vody50b19jaGlwX3BrdHMgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTQ5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1MTpzdGF0aWMgaW50IG1tODF4X3lhcHNfd3JpdGVfcGt0cyhzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1MjpcXHRcXHRcXHRcXHQgc3RydWN0IG1tODF4X3lhcHNfcGt0ICpwa3RzLCBpbnQgbnVtX3BrdHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTMtXFx0XFx0XFx0XFx0IGludCAqbnVtX3BrdHNfc2VudClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTU6XFx0cmV0dXJuIHlhcHMtXFx1MDAzZW9wcy1cXHUwMDNld3JpdGVfcGt0cyh5YXBzLCBwa3RzLCBudW1fcGt0cywgbnVtX3BrdHNfc2VudCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTYtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU4OnN0YXRpYyBpbnQgbW04MXhfeWFwc19yZWFkX3BrdHMoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTk6XFx0XFx0XFx0XFx0c3RydWN0IG1tODF4X3lhcHNfcGt0ICpwa3RzLCBpbnQgbnVtX3BrdHNfbWF4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTYwLVxcdFxcdFxcdFxcdGludCAqbnVtX3BrdHNfcmVjZWl2ZWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjYyOlxcdHJldHVybiB5YXBzLVxcdTAwM2VvcHMtXFx1MDAzZXJlYWRfcGt0cyh5YXBzLCBwa3RzLCBudW1fcGt0c19tYXgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjMtXFx0XFx0XFx0XFx0ICAgIG51bV9wa3RzX3JlY2VpdmVkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY2OnN0YXRpYyBpbnQgbW04MXhfeWFwc191cGRhdGVfc3RhdHVzKHN0cnVjdCBtbTgxeF95YXBzICp5YXBzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2ODpcXHRyZXR1cm4geWFwcy1cXHUwMDNlb3BzLVxcdTAwM2V1cGRhdGVfc3RhdHVzKHlhcHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy03MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo3MTovKiBNYXBwaW5ncyBiZXR3ZWVuIHNrX2J1ZmYsIHNrYnEgYW5kIHlhcHMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo3MjpzdGF0aWMgc3RydWN0IG1tODF4X3NrYnEgKm1tODF4X3lhcHNfdGNfcV9mcm9tX2FjaShzdHJ1Y3QgbW04MXggKm1vcnMsIGludCBhY2kpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNzMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjc0OlxcdHN0cnVjdCBtbTgxeF95YXBzICp5YXBzID0gXFx1MDAyNm1vcnMtXFx1MDAzZWhpZi51LnlhcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NzY6XFx0aWYgKGFjaSBcXHUwMDNlPSBBUlJBWV9TSVpFKHlhcHMtXFx1MDAzZWRhdGFfdHhfcXMpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTc3LVxcdFxcdHJldHVybiBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjc4OlxcdHJldHVybiBcXHUwMDI2eWFwcy1cXHUwMDNlZGF0YV90eF9xc1thY2ldO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTc5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy04MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo4MTpzdGF0aWMgdm9pZCBtbTgxeF95YXBzX2dldF90eF9xcyhzdHJ1Y3QgbW04MXggKm1vcnMsIHN0cnVjdCBtbTgxeF9za2JxICoqcXMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtODItXFx0XFx0XFx0XFx0IGludCAqbnVtX3FzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTgzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo4NDpcXHQqcXMgPSBtb3JzLVxcdTAwM2VoaWYudS55YXBzLmRhdGFfdHhfcXM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtODUtXFx0Km51bV9xcyA9IFlBUFNfVFhfU0tCUV9NQVg7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy04Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo4ODpzdGF0aWMgc3RydWN0IG1tODF4X3NrYnEgKm1tODF4X3lhcHNfZ2V0X2Jjbl90Y19xKHN0cnVjdCBtbTgxeCAqbW9ycylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy04OS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6OTA6XFx0cmV0dXJuIFxcdTAwMjZtb3JzLVxcdTAwM2VoaWYudS55YXBzLmJlYWNvbl9xO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTkxLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy05Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo5MzpzdGF0aWMgc3RydWN0IG1tODF4X3NrYnEgKm1tODF4X3lhcHNfZ2V0X21nbXRfdGNfcShzdHJ1Y3QgbW04MXggKm1vcnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtOTQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjk1OlxcdHJldHVybiBcXHUwMDI2bW9ycy1cXHUwMDNlaGlmLnUueWFwcy5tZ210X3E7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtOTYtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjk4OnN0YXRpYyBzdHJ1Y3QgbW04MXhfc2ticSAqbW04MXhfeWFwc19nZXRfdHhfY21kX3F1ZXVlKHN0cnVjdCBtbTgxeCAqbW9ycylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy05OS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MTAwOlxcdHJldHVybiBcXHUwMDI2bW9ycy1cXHUwMDNlaGlmLnUueWFwcy5jbWRfcTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xMDEtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTEwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMDM6c3RhdGljIGludCBtbTgxeF95YXBzX2lycV9oYW5kbGVyKHN0cnVjdCBtbTgxeCAqbW9ycywgdTMyIHN0YXR1cylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xMDQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMTA4LVxcdGlmIChzdGF0dXMgXFx1MDAyNiBCSVQoTU04MVhfSU5UX1lBUFNfRkNfUEFDS0VUX0ZSRUVEX1VQX0lSUU4pKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MTA5OlxcdFxcdHRpbWVyX2RlbGV0ZV9zeW5jX3RyeShcXHUwMDI2bW9ycy1cXHUwMDNlaGlmLnUueWFwcy5jaGlwX3F1ZXVlX2Z1bGwudGltZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTExMC1cXHRcXHRzZXRfYml0KE1NODFYX0hJRl9FVlRfVFhfUEFDS0VUX0ZSRUVEX1VQX1BFTkQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MTE4OmNvbnN0IHN0cnVjdCBtbTgxeF9oaWZfb3BzIG1tODF4X3lhcHNfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjExOTpcXHQuaW5pdCA9IG1tODF4X3lhcHNfaW5pdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMjA6XFx0LmZsdXNoX3R4X2RhdGEgPSBtbTgxeF95YXBzX2ZsdXNoX3R4X2RhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MTIxOlxcdC5mbHVzaF9jbWRzID0gbW04MXhfeWFwc19mbHVzaF9jbWRzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjEyMjpcXHQuZ2V0X3R4X3N0YXR1c19wZW5kaW5nX2NvdW50ID0gbW04MXhfeWFwc19nZXRfdHhfc3RhdHVzX3BlbmRpbmdfY291bnQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MTIzOlxcdC5nZXRfdHhfYnVmZmVyZWRfY291bnQgPSBtbTgxeF95YXBzX2dldF90eF9idWZmZXJlZF9jb3VudCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMjQ6XFx0LmZpbmlzaCA9IG1tODF4X3lhcHNfZmluaXNoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjEyNTpcXHQuc2ticV9nZXRfdHhfcXMgPSBtbTgxeF95YXBzX2dldF90eF9xcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMjY6XFx0LmdldF90eF9iZWFjb25fcXVldWUgPSBtbTgxeF95YXBzX2dldF9iY25fdGNfcSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMjc6XFx0LmdldF90eF9tZ210X3F1ZXVlID0gbW04MXhfeWFwc19nZXRfbWdtdF90Y19xLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjEyODpcXHQuZ2V0X3R4X2NtZF9xdWV1ZSA9IG1tODF4X3lhcHNfZ2V0X3R4X2NtZF9xdWV1ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxMjk6XFx0LmdldF90eF9kYXRhX3F1ZXVlID0gbW04MXhfeWFwc190Y19xX2Zyb21fYWNpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjEzMDpcXHQuaGFuZGxlX2lycSA9IG1tODF4X3lhcHNfaXJxX2hhbmRsZXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xMzEtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xMzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MTMzOnN0YXRpYyBpbnQgbW04MXhfeWFwc19yZWFkX3BrdChzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xMzQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjEzNTpcXHRzdHJ1Y3QgbW04MXggKm1vcnMgPSB5YXBzLVxcdTAwM2Vtb3JzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTEzNi1cXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHNrYnE7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MTU4OlxcdGlmICh5YXBzLVxcdTAwM2Vtb3JzLVxcdTAwM2VoaWYudmFsaWRhdGVfc2tiX2NoZWNrc3VtIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMTU5LVxcdCAgICAhbW04MXhfc2ticV92YWxpZGF0ZV9jaGVja3N1bShza2ItXFx1MDAzZWRhdGEpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MTYwOlxcdFxcdGRldl9kYmcoeWFwcy1cXHUwMDNlbW9ycy1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTE2MS1cXHRcXHRcXHRcXFwiU0tCIGNoZWNrc3VtIGlzIGludmFsaWQgaGRyOltjOiUwMlggczolMDJYIGxlbjolZF1cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMTc2LVxcdGNhc2UgTU04MVhfU0tCX0NIQU5fTUdNVDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoxNzc6XFx0XFx0bXEgPSBcXHUwMDI2eWFwcy1cXHUwMDNlZGF0YV9yeF9xO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTE3OC1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0xNzktXFx0Y2FzZSBNTTgxWF9TS0JfQ0hBTl9DT01NQU5EOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjE4MDpcXHRcXHRtcSA9IFxcdTAwMjZ5YXBzLVxcdTAwM2VjbWRfcmVzcF9xO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTE4MS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTIyNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoyMjY6c3RhdGljIGludCBtbTgxeF95YXBzX3R4KHN0cnVjdCBtbTgxeF95YXBzICp5YXBzLCBzdHJ1Y3QgbW04MXhfc2ticSAqbXEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjI3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTIzNy1cXHRzdHJ1Y3Qgc2tfYnVmZiAqcGZpcnN0LCAqcG5leHQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MjM4OlxcdHN0cnVjdCBtbTgxeCAqbW9ycyA9IHlhcHMtXFx1MDAzZW1vcnM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjM5LVxcdHN0cnVjdCBtbTgxeF9za2JfaGRyICpoZHI7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0yNTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MjUyOlxcdGlmIChtcSA9PSBcXHUwMDI2eWFwcy1cXHUwMDNlY21kX3EpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjUzLVxcdFxcdC8qIFB1cmdlIHRpbWVkLW91dCBjb21tYW5kcyAodGhpcyBzaG91bGQgbm90IGhhcHBlbikgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0yNTQtXFx0XFx0bW04MXhfc2ticV9wdXJnZShtcSwgXFx1MDAyNm1xLVxcdTAwM2VwZW5kaW5nKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoyNTU6XFx0ZWxzZSBpZiAobXEgPT0gXFx1MDAyNnlhcHMtXFx1MDAzZW1nbXRfcSBcXHUwMDI2XFx1MDAyNiBza2JfcXVldWVfbGVuKFxcdTAwMjZtcS1cXHUwMDNlc2ticSkgXFx1MDAzZSAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTI1Ni1cXHRcXHQvKlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMjY1LVxcdHNrYl9xdWV1ZV93YWxrX3NhZmUoXFx1MDAyNnNrYnFfdG9fc2VuZCwgcGZpcnN0LCBwbmV4dCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjI2NjpcXHRcXHRlbnVtIG1tODF4X3lhcHNfdG9fY2hpcF9xIHRjX3F1ZXVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTI2Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTI4Mi1cXHRcXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MjgzOlxcdFxcdHlhcHMtXFx1MDAzZWh3LnRvX2NoaXBfcGt0c1t0Y19wa3RfaWR4XS50Y19xdWV1ZSA9IHRjX3F1ZXVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjI4NDpcXHRcXHR5YXBzLVxcdTAwM2Vody50b19jaGlwX3BrdHNbdGNfcGt0X2lkeF0uc2tiID0gcGZpcnN0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTI4NS1cXHRcXHR0Y19wa3RfaWR4Kys7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0yODgtXFx0LyogU2VuZCBxdWV1ZWQgcGFja2V0cyB0byBjaGlwICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6Mjg5OlxcdHJldCA9IG1tODF4X3lhcHNfdXBkYXRlX3N0YXR1cyh5YXBzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0yOTAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTI5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzoyOTM6XFx0cmV0ID0gbW04MXhfeWFwc193cml0ZV9wa3RzKHlhcHMsIHlhcHMtXFx1MDAzZWh3LnRvX2NoaXBfcGt0cywgdGNfcGt0X2lkeCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0yOTQtXFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZudW1fcGt0c19zZW50KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTMyNC0vKiBSZXR1cm5zIHRydWUgaWYgdGhlcmUgYXJlIFRYIGRhdGEgcGFnZXMgd2FpdGluZyB0byBiZSBzZW50ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MzI1OnN0YXRpYyBib29sIG1tODF4X3lhcHNfdHhfZGF0YV9oYW5kbGVyKHN0cnVjdCBtbTgxeF95YXBzICp5YXBzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTMyNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zMjgtXFx0dTMyIGNvdW50ID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozMjk6XFx0c3RydWN0IG1tODF4ICptb3JzID0geWFwcy1cXHUwMDNlbW9ycztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzMxLVxcdGZvciAoYWNpID0gTU04MVhfQUNJX1ZPOyBhY2kgXFx1MDAzZT0gMDsgYWNpLS0pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozMzI6XFx0XFx0c3RydWN0IG1tODF4X3NrYnEgKmRhdGFfcSA9IG1tODF4X3lhcHNfdGNfcV9mcm9tX2FjaShtb3JzLCBhY2kpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTMzMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTMzNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozMzc6XFx0XFx0eWFwcy1cXHUwMDNlY2hpcF9xdWV1ZV9mdWxsLmlzX2Z1bGwgPSBtbTgxeF95YXBzX3R4KHlhcHMsIGRhdGFfcSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzM4LVxcdFxcdGNvdW50ICs9IG1tODF4X3NrYnFfY291bnQoZGF0YV9xKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MzQwOlxcdFxcdGlmICh5YXBzLVxcdTAwM2VjaGlwX3F1ZXVlX2Z1bGwuaXNfZnVsbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zNDEtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zNTctLyogUmV0dXJucyB0cnVlIGlmIHRoZXJlIGFyZSBjb21tYW5kcyB3YWl0aW5nIHRvIGJlIHNlbnQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozNTg6c3RhdGljIGJvb2wgbW04MXhfeWFwc190eF9jbWRfaGFuZGxlcihzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zNTkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjM2MDpcXHRzdHJ1Y3QgbW04MXhfc2ticSAqY21kX3EgPSBcXHUwMDI2eWFwcy1cXHUwMDNlY21kX3E7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjM2MjpcXHRtbTgxeF95YXBzX3R4KHlhcHMsIGNtZF9xKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zNjMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MzY3OnN0YXRpYyBib29sIG1tODF4X3lhcHNfdHhfYmVhY29uX2hhbmRsZXIoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzY4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozNjk6XFx0c3RydWN0IG1tODF4X3NrYnEgKmJlYWNvbl9xID0gXFx1MDAyNnlhcHMtXFx1MDAzZWJlYWNvbl9xO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTM3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozNzE6XFx0bW04MXhfeWFwc190eCh5YXBzLCBiZWFjb25fcSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzcyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjM3NjpzdGF0aWMgYm9vbCBtbTgxeF95YXBzX3R4X21nbXRfaGFuZGxlcihzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zNzcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjM3ODpcXHRzdHJ1Y3QgbW04MXhfc2ticSAqbWdtdF9xID0gXFx1MDAyNnlhcHMtXFx1MDAzZW1nbXRfcTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zNzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6MzgwOlxcdG1tODF4X3lhcHNfdHgoeWFwcywgbWdtdF9xKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zODEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zODUtLyogUmV0dXJucyB0cnVlIGlmIHRoZXJlIGFyZSBwb3B1bGF0ZWQgUlggcGFnZXMgbGVmdCBpbiB0aGUgZGV2aWNlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6Mzg2OnN0YXRpYyBib29sIG1tODF4X3lhcHNfcnhfaGFuZGxlcihzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zODcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjM5MjpcXHRyZXQgPSBtbTgxeF95YXBzX3VwZGF0ZV9zdGF0dXMoeWFwcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzkzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy0zOTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6Mzk2OlxcdHJldCA9IG1tODF4X3lhcHNfcmVhZF9wa3RzKHlhcHMsIHlhcHMtXFx1MDAzZWh3LmZyb21fY2hpcF9wa3RzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTM5Ny1cXHRcXHRcXHRcXHQgICBNQVhfUEtUU19QRVJfUlhfVFhOLCBcXHUwMDI2bnVtX3Brc19yZWNlaXZlZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtMzk4LVxcdGlmIChyZXQgXFx1MDAyNlxcdTAwMjYgcmV0ICE9IC1FQUdBSU4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzozOTk6XFx0XFx0ZGV2X2Vycih5YXBzLVxcdTAwM2Vtb3JzLVxcdTAwM2VkZXYsIFxcXCJZQVBTIHJlYWRfcGt0cyBmYWlsOiAlZFxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDAwLVxcdFxcdGdvdG8gZXhpdDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTQwMy1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnVtX3Brc19yZWNlaXZlZDsgKytpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDA0OlxcdFxcdG1tODF4X3lhcHNfcmVhZF9wa3QoeWFwcywgeWFwcy1cXHUwMDNlaHcuZnJvbV9jaGlwX3BrdHNbaV0uc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0MDU6XFx0XFx0eWFwcy1cXHUwMDNlaHcuZnJvbV9jaGlwX3BrdHNbaV0uc2tiID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00MDYtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjQxNTp2b2lkIG1tODF4X3lhcHNfc3RhbGVfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTQxOS1cXHRzdHJ1Y3QgbW04MXggKm1vcnMgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG1tODF4LCB0eF9zdGFsZV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0MjA6XFx0c3RydWN0IG1tODF4X3lhcHMgKnlhcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjQyMjpcXHR5YXBzID0gXFx1MDAyNm1vcnMtXFx1MDAzZWhpZi51LnlhcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDIzOlxcdGZsdXNoZWQgKz0gbW04MXhfc2ticV9jaGVja19mb3Jfc3RhbGVfdHgobW9ycywgXFx1MDAyNnlhcHMtXFx1MDAzZWJlYWNvbl9xKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0MjQ6XFx0Zmx1c2hlZCArPSBtbTgxeF9za2JxX2NoZWNrX2Zvcl9zdGFsZV90eChtb3JzLCBcXHUwMDI2eWFwcy1cXHUwMDNlbWdtdF9xKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00MjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDI2OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKHlhcHMtXFx1MDAzZWRhdGFfdHhfcXMpOyBpKyspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDI3LVxcdFxcdGZsdXNoZWQgKz0gbW04MXhfc2ticV9jaGVja19mb3Jfc3RhbGVfdHgobW9ycyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0Mjg6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZ5YXBzLVxcdTAwM2VkYXRhX3R4X3FzW2ldKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00MjktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00MzUtXFx0aWYgKG1vcnMtXFx1MDAzZXBzLmVuYWJsZSBcXHUwMDI2XFx1MDAyNiAhbW9ycy1cXHUwMDNlcHMuc3VzcGVuZGVkIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDM2OlxcdCAgICAobW04MXhfeWFwc19nZXRfdHhfYnVmZmVyZWRfY291bnQobW9ycykgPT0gMCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00MzctXFx0XFx0LyogRXZhbHVhdGUgcHMgdG8gY2hlY2sgaWYgaXQgd2FzIGdhdGVkIG9uIGEgc3RhbGUgdHggc3RhdHVzICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00NDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDQzOnZvaWQgbW04MXhfeWFwc193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00NDQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDQ2LVxcdHVuc2lnbmVkIGxvbmcgKmZsYWdzID0gXFx1MDAyNm1vcnMtXFx1MDAzZWhpZi5ldmVudF9mbGFncztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0NDc6XFx0c3RydWN0IG1tODF4X3lhcHMgKnlhcHMgPSBcXHUwMDI2bW9ycy1cXHUwMDNlaGlmLnUueWFwcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00NDgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00NjQtXFx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChNTTgxWF9ISUZfRVZUX1JYX1BFTkQsIGZsYWdzKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjQ2NTpcXHRcXHRpZiAobW04MXhfeWFwc19yeF9oYW5kbGVyKHlhcHMpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTQ2Ni1cXHRcXHRcXHRzZXRfYml0KE1NODFYX0hJRl9FVlRfUlhfUEVORCwgZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDcwLVxcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTU04MVhfSElGX0VWVF9UWF9DT01NQU5EX1BFTkQsIGZsYWdzKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjQ3MTpcXHRcXHRpZiAobW04MXhfeWFwc190eF9jbWRfaGFuZGxlcih5YXBzKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00NzItXFx0XFx0XFx0c2V0X2JpdChNTTgxWF9ISUZfRVZUX1RYX0NPTU1BTkRfUEVORCwgZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNDc2LVxcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTU04MVhfSElGX0VWVF9UWF9CRUFDT05fUEVORCwgZmxhZ3MpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NDc3OlxcdFxcdGlmIChtbTgxeF95YXBzX3R4X2JlYWNvbl9oYW5kbGVyKHlhcHMpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTQ3OC1cXHRcXHRcXHRzZXRfYml0KE1NODFYX0hJRl9FVlRfVFhfQkVBQ09OX1BFTkQsIGZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTQ4Mi1cXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE1NODFYX0hJRl9FVlRfVFhfTUdNVF9QRU5ELCBmbGFncykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo0ODM6XFx0XFx0aWYgKG1tODF4X3lhcHNfdHhfbWdtdF9oYW5kbGVyKHlhcHMpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTQ4NC1cXHRcXHRcXHRzZXRfYml0KE1NODFYX0hJRl9FVlRfVFhfTUdNVF9QRU5ELCBmbGFncyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy00OTktXFx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChNTTgxWF9ISUZfRVZUX1RYX1BBQ0tFVF9GUkVFRF9VUF9QRU5ELCBmbGFncykpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTAwOlxcdFxcdHlhcHMtXFx1MDAzZWNoaXBfcXVldWVfZnVsbC5pc19mdWxsID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTAxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTA0LVxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjUwNTpcXHRpZiAoeWFwcy1cXHUwMDNlY2hpcF9xdWV1ZV9mdWxsLmlzX2Z1bGwgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1MDY6XFx0ICAgIHRpbWVfYmVmb3JlKGppZmZpZXMsIHlhcHMtXFx1MDAzZWNoaXBfcXVldWVfZnVsbC5yZXRyeV9leHBpcnkpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTUwNy1cXHRcXHRnb3RvIGV4aXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01MTAtXFx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChNTTgxWF9ISUZfRVZUX1RYX0RBVEFfUEVORCwgZmxhZ3MpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTExOlxcdFxcdGlmIChtbTgxeF95YXBzX3R4X2RhdGFfaGFuZGxlcih5YXBzKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01MTItXFx0XFx0XFx0c2V0X2JpdChNTTgxWF9ISUZfRVZUX1RYX0RBVEFfUEVORCwgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTUxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1MTQ6XFx0XFx0aWYgKHlhcHMtXFx1MDAzZWNoaXBfcXVldWVfZnVsbC5pc19mdWxsKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTE1OlxcdFxcdFxcdHlhcHMtXFx1MDAzZWNoaXBfcXVldWVfZnVsbC5yZXRyeV9leHBpcnkgPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTUxNi1cXHRcXHRcXHRcXHRqaWZmaWVzICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01MTctXFx0XFx0XFx0XFx0bXNlY3NfdG9famlmZmllcyhDSElQX0ZVTExfUkVDT1ZFUllfVElNRU9VVF9NUyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTE4OlxcdFxcdFxcdG1vZF90aW1lcihcXHUwMDI2eWFwcy1cXHUwMDNlY2hpcF9xdWV1ZV9mdWxsLnRpbWVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjUxOTpcXHRcXHRcXHRcXHQgIHlhcHMtXFx1MDAzZWNoaXBfcXVldWVfZnVsbC5yZXRyeV9leHBpcnkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTUyMC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01MjktXFx0LyogRG9uJ3QgcmVxdWV1ZSB3b3JrIGlmIHdlIGFyZSBzaHV0dGluZyBkb3duLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjUzMDpcXHRpZiAoeWFwcy1cXHUwMDNlZmluaXNoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTUzMS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01NDEtXFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTQyOlxcdGVsc2UgaWYgKCF5YXBzLVxcdTAwM2VjaGlwX3F1ZXVlX2Z1bGwuaXNfZnVsbCBcXHUwMDI2XFx1MDAyNiAqZmxhZ3MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTQzLVxcdFxcdHF1ZXVlX3dvcmsobW9ycy1cXHUwMDNlY2hpcF93cSwgXFx1MDAyNm1vcnMtXFx1MDAzZWhpZl93b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1NDY6aW50IG1tODF4X3lhcHNfZ2V0X3R4X3N0YXR1c19wZW5kaW5nX2NvdW50KHN0cnVjdCBtbTgxeCAqbW9ycylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01NDcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTQ5LVxcdGludCBjb3VudCA9IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTUwOlxcdHN0cnVjdCBtbTgxeF95YXBzICp5YXBzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1NTI6XFx0eWFwcyA9IFxcdTAwMjZtb3JzLVxcdTAwM2VoaWYudS55YXBzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU1MzpcXHRjb3VudCArPSBza2JfcXVldWVfbGVuKFxcdTAwMjZ5YXBzLVxcdTAwM2ViZWFjb25fcS5wZW5kaW5nKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1NTQ6XFx0Y291bnQgKz0gc2tiX3F1ZXVlX2xlbihcXHUwMDI2eWFwcy1cXHUwMDNlbWdtdF9xLnBlbmRpbmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU1NTpcXHRjb3VudCArPSBza2JfcXVldWVfbGVuKFxcdTAwMjZ5YXBzLVxcdTAwM2VjbWRfcS5wZW5kaW5nKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01NTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTU3OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKHlhcHMtXFx1MDAzZWRhdGFfdHhfcXMpOyBpKyspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTU4OlxcdFxcdGNvdW50ICs9IHNrYl9xdWV1ZV9sZW4oXFx1MDAyNnlhcHMtXFx1MDAzZWRhdGFfdHhfcXNbaV0ucGVuZGluZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTU5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU2MzppbnQgbW04MXhfeWFwc19nZXRfdHhfYnVmZmVyZWRfY291bnQoc3RydWN0IG1tODF4ICptb3JzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU2NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01NjYtXFx0aW50IGNvdW50ID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1Njc6XFx0c3RydWN0IG1tODF4X3lhcHMgKnlhcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU2OTpcXHR5YXBzID0gXFx1MDAyNm1vcnMtXFx1MDAzZWhpZi51LnlhcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTcwOlxcdGNvdW50ICs9IHNrYl9xdWV1ZV9sZW4oXFx1MDAyNnlhcHMtXFx1MDAzZWJlYWNvbl9xLnNrYnEpICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1NzE6XFx0XFx0IHNrYl9xdWV1ZV9sZW4oXFx1MDAyNnlhcHMtXFx1MDAzZWJlYWNvbl9xLnBlbmRpbmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU3MjpcXHRjb3VudCArPSBza2JfcXVldWVfbGVuKFxcdTAwMjZ5YXBzLVxcdTAwM2VtZ210X3Euc2ticSkgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU3MzpcXHRcXHQgc2tiX3F1ZXVlX2xlbihcXHUwMDI2eWFwcy1cXHUwMDNlbWdtdF9xLnBlbmRpbmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU3NDpcXHRjb3VudCArPSBza2JfcXVldWVfbGVuKFxcdTAwMjZ5YXBzLVxcdTAwM2VjbWRfcS5za2JxKSArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTc1OlxcdFxcdCBza2JfcXVldWVfbGVuKFxcdTAwMjZ5YXBzLVxcdTAwM2VjbWRfcS5wZW5kaW5nKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01NzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTc3OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKHlhcHMtXFx1MDAzZWRhdGFfdHhfcXMpOyBpKyspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTc4OlxcdFxcdGNvdW50ICs9IG1tODF4X3NrYnFfY291bnRfdHhfcmVhZHkoXFx1MDAyNnlhcHMtXFx1MDAzZWRhdGFfdHhfcXNbaV0pICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1Nzk6XFx0XFx0XFx0IHNrYl9xdWV1ZV9sZW4oXFx1MDAyNnlhcHMtXFx1MDAzZWRhdGFfdHhfcXNbaV0ucGVuZGluZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTgwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU4NDpzdGF0aWMgdm9pZCBtbTgxeF95YXBzX3R4X3FfZnVsbF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy01ODUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU4NjpcXHRzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcyA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NTg3OlxcdFxcdHRpbWVyX2NvbnRhaW5lcl9vZih5YXBzLCB0LCBjaGlwX3F1ZXVlX2Z1bGwudGltZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1ODk6XFx0cXVldWVfd29yayh5YXBzLVxcdTAwM2Vtb3JzLVxcdTAwM2VjaGlwX3dxLCBcXHUwMDI2eWFwcy1cXHUwMDNlbW9ycy1cXHUwMDNlaGlmX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU5MC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjU5MjpzdGF0aWMgdm9pZCBtbTgxeF95YXBzX3FfY2hpcF9mdWxsX3RpbWVyX2luaXQoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTkzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1OTQ6XFx0dGltZXJfc2V0dXAoXFx1MDAyNnlhcHMtXFx1MDAzZWNoaXBfcXVldWVfZnVsbC50aW1lciwgbW04MXhfeWFwc190eF9xX2Z1bGxfdGltZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTk1LVxcdFxcdCAgICAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTU5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo1OTg6c3RhdGljIHZvaWQgbW04MXhfeWFwc19xX2NoaXBfZnVsbF90aW1lcl9maW5pc2goc3RydWN0IG1tODF4X3lhcHMgKnlhcHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNTk5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2MDA6XFx0dGltZXJfc2h1dGRvd25fc3luYyhcXHUwMDI2eWFwcy1cXHUwMDNlY2hpcF9xdWV1ZV9mdWxsLnRpbWVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MDEtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTYwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2MDM6aW50IG1tODF4X3lhcHNfaW5pdChzdHJ1Y3QgbW04MXggKm1vcnMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjA0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MDUtXFx0aW50IGksIHJldDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2MDY6XFx0c3RydWN0IG1tODF4X3lhcHMgKnlhcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjYwODpcXHRyZXQgPSBtbTgxeF95YXBzX2h3X2luaXQobW9ycyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjA5LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2MTA6XFx0XFx0ZGV2X2Vycihtb3JzLVxcdTAwM2VkZXYsIFxcXCJtbTgxeF95YXBzX2h3X2luaXQgZmFpbGVkICVkXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MTEtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTYxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2MTQ6XFx0eWFwcyA9IFxcdTAwMjZtb3JzLVxcdTAwM2VoaWYudS55YXBzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjYxNTpcXHR5YXBzLVxcdTAwM2Vtb3JzID0gbW9ycztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MTYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjE5OlxcdHJldCA9IG1tODF4X3lhcHNfYWxsb2NfcGt0X2J1ZmZlcnMoeWFwcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjIwLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTYyMi1cXHRcXHRcXHRyZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjYyMzpcXHRcXHRtbTgxeF95YXBzX2h3X2ZpbmlzaChtb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MjQtXFx0XFx0bW04MXhfcmVsZWFzZV9idXMobW9ycyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MjgtXFx0LyogWUFQUyBpcyBiaS1kaXJlY3Rpb25hbCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjYyOTpcXHRtbTgxeF9za2JxX2luaXQobW9ycywgXFx1MDAyNnlhcHMtXFx1MDAzZWRhdGFfcnhfcSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MzAtXFx0XFx0XFx0TU04MVhfSElGX0ZMQUdTX0RBVEEgfCBNTTgxWF9ISUZfRkxBR1NfRElSX1RPX0hPU1QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjYzMTpcXHRtbTgxeF9za2JxX2luaXQobW9ycywgXFx1MDAyNnlhcHMtXFx1MDAzZWJlYWNvbl9xLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTYzMi1cXHRcXHRcXHRNTTgxWF9ISUZfRkxBR1NfREFUQSB8IE1NODFYX0hJRl9GTEFHU19ESVJfVE9fSE9TVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjMzOlxcdG1tODF4X3NrYnFfaW5pdChtb3JzLCBcXHUwMDI2eWFwcy1cXHUwMDNlbWdtdF9xLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTYzNC1cXHRcXHRcXHRNTTgxWF9ISUZfRkxBR1NfREFUQSB8IE1NODFYX0hJRl9GTEFHU19ESVJfVE9fSE9TVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjYzNjpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRSh5YXBzLVxcdTAwM2VkYXRhX3R4X3FzKTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjM3OlxcdFxcdG1tODF4X3NrYnFfaW5pdChtb3JzLCBcXHUwMDI2eWFwcy1cXHUwMDNlZGF0YV90eF9xc1tpXSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02MzgtXFx0XFx0XFx0XFx0TU04MVhfSElGX0ZMQUdTX0RBVEEgfFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY0MjpcXHRtbTgxeF9za2JxX2luaXQobW9ycywgXFx1MDAyNnlhcHMtXFx1MDAzZWNtZF9xLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY0My1cXHRcXHRcXHRNTTgxWF9ISUZfRkxBR1NfQ09NTUFORCB8IE1NODFYX0hJRl9GTEFHU19ESVJfVE9fQ0hJUCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjQ0OlxcdG1tODF4X3NrYnFfaW5pdChtb3JzLCBcXHUwMDI2eWFwcy1cXHUwMDNlY21kX3Jlc3BfcSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02NDUtXFx0XFx0XFx0TU04MVhfSElGX0ZMQUdTX0NPTU1BTkQgfCBNTTgxWF9ISUZfRkxBR1NfRElSX1RPX0hPU1QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY0Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2NDc6XFx0bW04MXhfeWFwc19xX2NoaXBfZnVsbF90aW1lcl9pbml0KHlhcHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY0ODpcXHRJTklUX1dPUksoXFx1MDAyNm1vcnMtXFx1MDAzZWhpZl93b3JrLCBtbTgxeF95YXBzX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY0OTpcXHRJTklUX1dPUksoXFx1MDAyNm1vcnMtXFx1MDAzZXR4X3N0YWxlX3dvcmssIG1tODF4X3lhcHNfc3RhbGVfdHhfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjUwLVxcdG1tODF4X3JlbGVhc2VfYnVzKG1vcnMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY1NTp2b2lkIG1tODF4X3lhcHNfZmluaXNoKHN0cnVjdCBtbTgxeCAqbW9ycylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02NTYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY1Ny1cXHRpbnQgaTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2NTg6XFx0c3RydWN0IG1tODF4X3lhcHMgKnlhcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY2MDpcXHRtbTgxeF95YXBzX2h3X2VuYWJsZV9pcnFzKG1vcnMsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjYyOlxcdHlhcHMgPSBcXHUwMDI2bW9ycy1cXHUwMDNlaGlmLnUueWFwcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2NjM6XFx0eWFwcy1cXHUwMDNlZmluaXNoID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02NjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjY1OlxcdG1tODF4X3NrYnFfZmluaXNoKFxcdTAwMjZ5YXBzLVxcdTAwM2VkYXRhX3J4X3EpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY2NjpcXHRtbTgxeF9za2JxX2ZpbmlzaChcXHUwMDI2eWFwcy1cXHUwMDNlYmVhY29uX3EpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY2NzpcXHRtbTgxeF9za2JxX2ZpbmlzaChcXHUwMDI2eWFwcy1cXHUwMDNlbWdtdF9xKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02NjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjY5OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKHlhcHMtXFx1MDAzZWRhdGFfdHhfcXMpOyBpKyspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjcwOlxcdFxcdG1tODF4X3NrYnFfZmluaXNoKFxcdTAwMjZ5YXBzLVxcdTAwM2VkYXRhX3R4X3FzW2ldKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02NzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjcyOlxcdG1tODF4X3NrYnFfZmluaXNoKFxcdTAwMjZ5YXBzLVxcdTAwM2VjbWRfcSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6NjczOlxcdG1tODF4X3NrYnFfZmluaXNoKFxcdTAwMjZ5YXBzLVxcdTAwM2VjbWRfcmVzcF9xKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6Njc1OlxcdG1tODF4X3lhcHNfcV9jaGlwX2Z1bGxfdGltZXJfZmluaXNoKHlhcHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY3Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2ODA6XFx0bW04MXhfeWFwc19mcmVlX3BrdF9idWZmZXJzKHlhcHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY4MTpcXHRtbTgxeF95YXBzX2h3X2ZpbmlzaChtb3JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02ODItfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY4My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2ODQ6dm9pZCBtbTgxeF95YXBzX2ZsdXNoX3R4X2RhdGEoc3RydWN0IG1tODF4ICptb3JzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY4NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjg2LVxcdGludCBpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY4NzpcXHRzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcyA9IFxcdTAwMjZtb3JzLVxcdTAwM2VoaWYudS55YXBzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2ODk6XFx0bW04MXhfc2ticV90eF9mbHVzaChcXHUwMDI2eWFwcy1cXHUwMDNlYmVhY29uX3EpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY5MDpcXHRtbTgxeF9za2JxX3R4X2ZsdXNoKFxcdTAwMjZ5YXBzLVxcdTAwM2VtZ210X3EpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2OTI6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoeWFwcy1cXHUwMDNlZGF0YV90eF9xcyk7IGkrKylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo2OTM6XFx0XFx0bW04MXhfc2ticV90eF9mbHVzaChcXHUwMDI2eWFwcy1cXHUwMDNlZGF0YV90eF9xc1tpXSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmMtNjk0LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02OTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmM6Njk2OnZvaWQgbW04MXhfeWFwc19mbHVzaF9jbWRzKHN0cnVjdCBtbTgxeCAqbW9ycylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYy02OTcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jOjY5ODpcXHRzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcyA9IFxcdTAwMjZtb3JzLVxcdTAwM2VoaWYudS55YXBzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTY5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo3MDA6XFx0aWYgKHlhcHMtXFx1MDAzZWZsYWdzIFxcdTAwMjYgTU04MVhfSElGX0ZMQUdTX0NPTU1BTkQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo3MDE6XFx0XFx0bW04MXhfc2ticV9maW5pc2goXFx1MDAyNnlhcHMtXFx1MDAzZWNtZF9xKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuYzo3MDI6XFx0XFx0bW04MXhfc2ticV9maW5pc2goXFx1MDAyNnlhcHMtXFx1MDAzZWNtZF9yZXNwX3EpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jLTcwMy1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuaD0xNT1zdHJ1Y3QgbW04MXhfaGlmX29wcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuaDoxNjpleHRlcm4gY29uc3Qgc3RydWN0IG1tODF4X2hpZl9vcHMgbW04MXhfeWFwc19vcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmgtMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmg6MTg6ZW51bSBtbTgxeF95YXBzX3RvX2NoaXBfcSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmgtMTktXFx0TU04MVhfWUFQU19UWF9RID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5oLTI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5oOjI3OnN0cnVjdCBtbTgxeF95YXBzX3BrdCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmgtMjgtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuaDoyOTpcXHRlbnVtIG1tODF4X3lhcHNfdG9fY2hpcF9xIHRjX3F1ZXVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5oLTMwLX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmgtMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmg6MzI6c3RydWN0IG1tODF4X3lhcHMge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5oLTMzLVxcdHN0cnVjdCBtbTgxeCAqbW9ycztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHMuaDozNDpcXHRzdHJ1Y3QgbW04MXhfeWFwc19od19hdXhfZGF0YSAqYXV4X2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzLmg6MzU6XFx0Y29uc3Qgc3RydWN0IG1tODF4X3lhcHNfb3BzICpvcHM7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI4OjUwLjg0MDQyMDM1NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMwNTg5NzQ2ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBZQVBTIEhhcmR3YXJlIENvZGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IHJlbGF0ZWQgdG8gdGhlc2UgcGFja2V0IHJlYWRzIHdpdGhpbiB0aGUgWUFQUyBoYXJkd2FyZS4gVGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgaXMgZGVmaW5pdGVseSB0aGUgc291cmNlIGNvZGUgZm9yIGB5YXBzX2h3LmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYG1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltYCBhbmQgYG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzYCBhcmUgYmVpbmcgdXRpbGl6ZWQuIEknbGwgbmVlZCB0byBsb2NhdGUgd2hlcmUgYm90aCBmdW5jdGlvbnMgYXJlICpkZWZpbmVkKiwgc28gSSBjYW4gc2VlIHRoZWlyIGltcGxlbWVudGF0aW9uLCBhcyB3ZWxsIGFzIHdoZXJlIHRoZXkgYXJlIGJlaW5nICpjYWxsZWQqLCBzbyBJIGNhbiB1bmRlcnN0YW5kIHRoZSBleGVjdXRpb24gcGF0aHMgdGhhdCBsZWFkIHRvIHRoZWlyIGludm9jYXRpb24uIFRoaXMgd2lsbCBnaXZlIG1lIGEgY2xlYXJlciBwaWN0dXJlIG9mIGhvdyB0aGUgcmVhZCBvcGVyYXRpb25zIGFyZSBiZWluZyBoYW5kbGVkIGFuZCB3aGF0J3MgdmFsaWRhdGluZyB0aGUgZGVsaW1pdGVycyBpbiB0aGUgcHJvY2Vzcy4gVGltZSB0byBmaXJlIHVwIHRoZSBlZGl0b3IgYW5kIHN0YXJ0IHRyYWNpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NTI4LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjE6Mjg6NTMuODk5Mzk4Njk4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MDAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0MDA6XFx0XFxuIDQwMTpcXHRzdGF0aWMgYm9vbCBtbTgxeF9yZWFkX3BrdHNfaF9pc192YWxpZF9kZWxpbSh1MzIgZGVsaW0pXFxuIDQwMjpcXHR7XFxuIDQwMzpcXHRcXHR1OCBjYWxjX2NyYyA9IG1tODF4X3lhcHNfaHdfY3JjKGRlbGltKTtcXG4gNDA0OlxcdFxcdGludCBwa3Rfc2l6ZSA9IFlBUFNfREVMSU1fR0VUX1BIQU5ETEVfU0laRShkZWxpbSk7XFxuIDQwNTpcXHRcXHRpbnQgcGFkZGluZyA9IFlBUFNfREVMSU1fR0VUX1BBRERJTkcoZGVsaW0pO1xcbiA0MDY6XFx0XFxuIDQwNzpcXHRcXHRpZiAoY2FsY19jcmMgIT0gWUFQU19ERUxJTV9HRVRfQ1JDKGRlbGltKSlcXG4gNDA4OlxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4gNDA5OlxcdFxcbiA0MTA6XFx0XFx0aWYgKHBrdF9zaXplIFxcdTAwM2M9IFlBUFNfUkVTRVJWRURfUEFHRV9TSVpFKVxcbiA0MTE6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiA0MTI6XFx0XFxuIDQxMzpcXHRcXHRpZiAoKHBrdF9zaXplICsgcGFkZGluZykgXFx1MDAzZSBZQVBTX01BWF9QS1RfU0laRV9CWVRFUylcXG4gNDE0OlxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4gNDE1OlxcdFxcbiA0MTY6XFx0XFx0LyogUGt0IGxlbmd0aCArIHBhZGRpbmcgc2hvdWxkIG5vdCByZXF1aXJlIG1vcmUgcGFkZGluZyAqL1xcbiA0MTc6XFx0XFx0aWYgKFlBUFNfQ0FMQ19QQURESU5HKHBrdF9zaXplKSAhPSBwYWRkaW5nKVxcbiA0MTg6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiA0MTk6XFx0XFxuIDQyMDpcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gNDIxOlxcdH1cXG4gNDIyOlxcdFxcbiA0MjM6XFx0c3RhdGljIGludCBtbTgxeF9yZWFkX3BrdHNfaF9ieXRlc19yZW1haW5pbmcoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMpXFxuIDQyNDpcXHR7XFxuIDQyNTpcXHRcXHR1MzIgYnl0ZXNfaW5fcXVldWUgPSB5YXBzLVxcdTAwM2VhdXhfZGF0YS1cXHUwMDNlc3RhdHVzX3JlZ3MuZmNfcnhfYnl0ZXNfaW5fcXVldWU7XFxuIDQyNjpcXHRcXHR1MzIgZGVsaW1fb3ZlcmhlYWQgPVxcbiA0Mjc6XFx0XFx0XFx0eWFwcy1cXHUwMDNlYXV4X2RhdGEtXFx1MDAzZXN0YXR1c19yZWdzLmZjX251bV9wa3RzICogc2l6ZW9mKHUzMik7XFxuIDQyODpcXHRcXHR1MzIgcmVzZXJ2ZWRfYnl0ZXMgPSB5YXBzLVxcdTAwM2VhdXhfZGF0YS1cXHUwMDNlc3RhdHVzX3JlZ3MuZmNfbnVtX3BrdHMgKlxcbiA0Mjk6XFx0XFx0XFx0XFx0ICAgICB5YXBzLVxcdTAwM2VhdXhfZGF0YS1cXHUwMDNlcmVzZXJ2ZWRfeWFwc19wYWdlX3NpemU7XFxuIDQzMDpcXHRcXG4gNDMxOlxcdFxcdGlmIChXQVJOX09OKGJ5dGVzX2luX3F1ZXVlIFxcdTAwM2UgSU5UX01BWCkgfHxcXG4gNDMyOlxcdFxcdCAgICBXQVJOX09OKGRlbGltX292ZXJoZWFkIFxcdTAwM2UgSU5UX01BWCkgfHxcXG4gNDMzOlxcdFxcdCAgICBXQVJOX09OKHJlc2VydmVkX2J5dGVzIFxcdTAwM2UgSU5UX01BWCkpXFxuIDQzNDpcXHRcXHRcXHRyZXR1cm4gLUVJTztcXG4gNDM1OlxcdFxcbiA0MzY6XFx0XFx0cmV0dXJuIChpbnQpYnl0ZXNfaW5fcXVldWU7XFxuIDQzNzpcXHR9XFxuIDQzODpcXHRcXG4gNDM5OlxcdHN0YXRpYyBpbnQgbW04MXhfeWFwc19od19yZWFkX3BrdHMoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMsXFxuIDQ0MDpcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbW04MXhfeWFwc19wa3QgKnBrdHMsXFxuIDQ0MTpcXHRcXHRcXHRcXHRcXHQgICBpbnQgbnVtX3BrdHNfbWF4LCBpbnQgKm51bV9wa3RzX3JlY2VpdmVkKVxcbiA0NDI6XFx0e1xcbiA0NDM6XFx0XFx0aW50IHJldDtcXG4gNDQ0OlxcdFxcdGludCBpID0gMDtcXG4gNDQ1OlxcdFxcdGNoYXIgKmZyb21fY2hpcF9idWZmZXJfYWxpZ25lZCA9XFxuIDQ0NjpcXHRcXHRcXHRQVFJfQUxJR04oeWFwcy1cXHUwMDNlYXV4X2RhdGEtXFx1MDAzZWZyb21fY2hpcF9idWZmZXIsXFxuIDQ0NzpcXHRcXHRcXHRcXHQgIG1tODF4X2J1c19nZXRfYWxpZ25tZW50KHlhcHMtXFx1MDAzZW1vcnMpKTtcXG4gNDQ4OlxcdFxcdGNoYXIgKnJlYWRfcHRyID0gZnJvbV9jaGlwX2J1ZmZlcl9hbGlnbmVkO1xcbiA0NDk6XFx0XFx0aW50IGJ5dGVzX3JlbWFpbmluZyA9IG1tODF4X3JlYWRfcGt0c19oX2J5dGVzX3JlbWFpbmluZyh5YXBzKTtcXG4gNDUwOlxcdFxcdGJvb2wgYWdhaW4gPSBmYWxzZTtcXG4gNDUxOlxcdFxcbiA0NTI6XFx0XFx0Km51bV9wa3RzX3JlY2VpdmVkID0gMDtcXG4gNDUzOlxcdFxcbiA0NTQ6XFx0XFx0aWYgKG51bV9wa3RzX21heCA9PSAwIHx8IGJ5dGVzX3JlbWFpbmluZyA9PSAwKVxcbiA0NTU6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDQ1NjpcXHRcXHRpZiAoYnl0ZXNfcmVtYWluaW5nIFxcdTAwM2MgMClcXG4gNDU3OlxcdFxcdFxcdHJldHVybiBieXRlc19yZW1haW5pbmc7XFxuIDQ1ODpcXHRcXHRpZiAoIUlTX0FMSUdORUQoYnl0ZXNfcmVtYWluaW5nLCBzaXplb2YodTMyKSkpIHtcXG4gNDU5OlxcdFxcdFxcdGRldl93YXJuKHlhcHMtXFx1MDAzZW1vcnMtXFx1MDAzZWRldiwgXFxcInlhcHMgdHJ1bmNhdGVkIGRlbGltaXRlclxcXCIpO1xcbiA0NjA6XFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuIDQ2MTpcXHRcXHR9XFxuIDQ2MjpcXHRcXG4gNDYzOlxcdFxcdGlmIChieXRlc19yZW1haW5pbmcgXFx1MDAzZSBZQVBTX0hXX1dJTkRPV19TSVpFX0JZVEVTKSB7XFxuIDQ2NDpcXHRcXHRcXHRieXRlc19yZW1haW5pbmcgPSBZQVBTX0hXX1dJTkRPV19TSVpFX0JZVEVTO1xcbiA0NjU6XFx0XFx0XFx0YWdhaW4gPSB0cnVlO1xcbiA0NjY6XFx0XFx0fVxcbiA0Njc6XFx0XFxuIDQ2ODpcXHRcXHQvKlxcbiA0Njk6XFx0XFx0ICogVGhpcyBpcyBtb3JlIGNvYXJzZS1ncmFpbmVkIHRoYW4gaXQgbmVlZHMgdG8gYmUgLSBvbmNlIHRoZSBkYXRhXFxuIDQ3MDpcXHRcXHQgKiBpcyByZWFkIGludG8gYSBsb2NhbCBidWZmZXIgdGhlIGxvY2sgY2FuIGJlIHJlbGVhc2VkLCBob3dldmVyXFxuIDQ3MTpcXHRcXHQgKiBhY2Nlc3MgdG8gZnJvbV9jaGlwX2J1ZmZlciB3aWxsIG5lZWQgdG8gYmUgcHJvdGVjdGVkIHdpdGggaXRzXFxuIDQ3MjpcXHRcXHQgKiBvd24gbG9ja1xcbiA0NzM6XFx0XFx0ICovXFxuIDQ3NDpcXHRcXHRyZXQgPSBtbTgxeF95YXBzX2h3X2xvY2soeWFwcyk7XFxuIDQ3NTpcXHRcXHRpZiAocmV0KSB7XFxuIDQ3NjpcXHRcXHRcXHRkZXZfZGJnKHlhcHMtXFx1MDAzZW1vcnMtXFx1MDAzZWRldiwgXFxcInlhcHMgbG9jayBmYWlsZWQgJWRcXFwiLCByZXQpO1xcbiA0Nzc6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gNDc4OlxcdFxcdH1cXG4gNDc5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyODo1My44OTk1MTEwNzhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODQ4ODk3MTU5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRoaW5raW5nIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIGB5YXBzX2h3LmNgIENvZGUqKlxuXG5Pa2F5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IGhlcmUsIGVzcGVjaWFsbHkgYXJvdW5kIGhvdyBwYWNrZXQgcmVhZGluZyBpcyBoYW5kbGVkLiBNeSBwcmltYXJ5IGludGVyZXN0IGlzIGluIHRoZSBmdW5jdGlvbnMgYG1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltYCBhbmQgYG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzYC4gSSdtIHN0YXJ0aW5nIGJ5IG1lbnRhbGx5IHRyYWNpbmcgd2hlcmUgdGhvc2UgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSAqdXNlZCogd2l0aGluIHRoZSBgeWFwc19ody5jYCBmaWxlLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGVpciBjYWxsZXJzLiBBcmUgdGhleSBjYWxsZWQgaW4gc2VxdWVuY2U/IEFyZSB0aGV5IG9ubHkgY2FsbGVkIGZyb20gYSBzaW5nbGUgcGxhY2UsIG9yIG11bHRpcGxlIHNwb3RzPyBLbm93aW5nIHRoZSBjYWxsIGdyYXBoIHdpbGwgcmVhbGx5IGhlbHAgbWUgdW5kZXJzdGFuZCBob3cgZGF0YSBmbG93cyB0aHJvdWdoIHRoaXMgbW9kdWxlLCBhbmQgaWRlbnRpZnkgYW55IHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLiBJJ20gbG9va2luZyBmb3IgdGhlIGNvbnRleHRzLCB0aGUgY2FsbGluZyBwYXJhbWV0ZXJzLCBldmVyeXRoaW5nLiBJIHdhbnQgYSBzb2xpZCBtZW50YWwgbW9kZWwgb2YgaG93IHRoZXNlIHBhY2tldCByZWFkaW5nIGZ1bmN0aW9ucyBmaXQgaW50byB0aGUgbGFyZ2VyIFlBUFMgaGFyZHdhcmUgaW50ZXJhY3Rpb24gc2NoZW1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODE2MywiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjE6Mjk6MDIuMzg4NDg1NzgyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5ODgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ4MCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ4MDpcXHRcXHQvKiBSZWFkIGFsbCBhdmFpbGFibGUgcGFja2V0cyB0byB0aGUgYnVmZmVyICovXFxuIDQ4MTpcXHRcXHRyZXQgPSBtbTgxeF9kbV9yZWFkKHlhcHMtXFx1MDAzZW1vcnMsIHlhcHMtXFx1MDAzZWF1eF9kYXRhLVxcdTAwM2V5c2xfYWRkcixcXG4gNDgyOlxcdFxcdFxcdFxcdCAgICBmcm9tX2NoaXBfYnVmZmVyX2FsaWduZWQsIGJ5dGVzX3JlbWFpbmluZyk7XFxuIDQ4MzpcXHRcXG4gNDg0OlxcdFxcdGlmIChyZXQpXFxuIDQ4NTpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuIDQ4NjpcXHRcXG4gNDg3OlxcdFxcdC8qIFNwbGl0IHNlcmlhbGlzZWQgcGFja2V0cyBmcm9tIGJ1ZmZlciAqL1xcbiA0ODg6XFx0XFx0d2hpbGUgKGkgXFx1MDAzYyBudW1fcGt0c19tYXggXFx1MDAyNlxcdTAwMjYgYnl0ZXNfcmVtYWluaW5nIFxcdTAwM2UgMCkge1xcbiA0ODk6XFx0XFx0XFx0dTMyIGRlbGltO1xcbiA0OTA6XFx0XFx0XFx0aW50IHRvdGFsX2xlbjtcXG4gNDkxOlxcdFxcdFxcdGludCBwa3Rfc2l6ZTtcXG4gNDkyOlxcdFxcbiA0OTM6XFx0XFx0XFx0ZGVsaW0gPSBsZTMyX3RvX2NwdSgqKChfX2xlMzIgKilyZWFkX3B0cikpO1xcbiA0OTQ6XFx0XFx0XFx0cmVhZF9wdHIgKz0gc2l6ZW9mKGRlbGltKTtcXG4gNDk1OlxcdFxcdFxcdGJ5dGVzX3JlbWFpbmluZyAtPSBzaXplb2YoZGVsaW0pO1xcbiA0OTY6XFx0XFxuIDQ5NzpcXHRcXHRcXHQvKiBFbmQgb2Ygc3RyZWFtICovXFxuIDQ5ODpcXHRcXHRcXHRpZiAoIWRlbGltKVxcbiA0OTk6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDUwMDpcXHRcXG4gNTAxOlxcdFxcdFxcdGlmICghbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW0oZGVsaW0pKSB7XFxuIDUwMjpcXHRcXHRcXHRcXHQvKlxcbiA1MDM6XFx0XFx0XFx0XFx0ICogVGhpcyB3aWxsIHN0YXJ0IGEgaHVudCBmb3IgYSB2YWxpZCBkZWxpbWl0ZXIuIEdpdmVuXFxuIDUwNDpcXHRcXHRcXHRcXHQgKiB0aGUgQ1JDIGlzIG9ubHkgNyBiaXQgaXQncyBwb3NzaWJsZSB0byBmaW5kIGFuXFxuIDUwNTpcXHRcXHRcXHRcXHQgKiBpbnZhbGlkIGJsb2NrIHdpdGggYSB2YWxpZCBkZWxpbWl0ZXIsIGxlYWRpbmcgdG9cXG4gNTA2OlxcdFxcdFxcdFxcdCAqIGRlc3luY2hyb25pc2F0aW9uLlxcbiA1MDc6XFx0XFx0XFx0XFx0ICovXFxuIDUwODpcXHRcXHRcXHRcXHRkZXZfd2Fybih5YXBzLVxcdTAwM2Vtb3JzLVxcdTAwM2VkZXYsIFxcXCJ5YXBzIGludmFsaWQgZGVsaW1cXFwiKTtcXG4gNTA5OlxcdFxcdFxcdFxcdGJyZWFrO1xcbiA1MTA6XFx0XFx0XFx0fVxcbiA1MTE6XFx0XFxuIDUxMjpcXHRcXHRcXHQvKiBUb3RhbCBsZW5ndGggaW4gY2hpcCAqL1xcbiA1MTM6XFx0XFx0XFx0cGt0X3NpemUgPSBZQVBTX0RFTElNX0dFVF9QS1RfU0laRShkZWxpbSk7XFxuIDUxNDpcXHRcXHRcXHR0b3RhbF9sZW4gPSBwa3Rfc2l6ZSArIFlBUFNfREVMSU1fR0VUX1BBRERJTkcoZGVsaW0pO1xcbiA1MTU6XFx0XFxuIDUxNjpcXHRcXHRcXHRpZiAocGt0c1tpXS5za2IpXFxuIDUxNzpcXHRcXHRcXHRcXHRkZXZfZXJyKHlhcHMtXFx1MDAzZW1vcnMtXFx1MDAzZWRldiwgXFxcInlhcHMgcGFja2V0IGxlYWtcXFwiKTtcXG4gNTE4OlxcdFxcbiA1MTk6XFx0XFx0XFx0LyogU0tCIGRvZXNuJ3Qgd2FudCBwYWRkaW5nICovXFxuIDUyMDpcXHRcXHRcXHRwa3RzW2ldLnNrYiA9IGRldl9hbGxvY19za2IocGt0X3NpemUpO1xcbiA1MjE6XFx0XFx0XFx0aWYgKCFwa3RzW2ldLnNrYikge1xcbiA1MjI6XFx0XFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4gNTIzOlxcdFxcdFxcdFxcdGRldl9lcnIoeWFwcy1cXHUwMDNlbW9ycy1cXHUwMDNlZGV2LCBcXFwieWFwcyBubyBtZW0gZm9yIHNrYlxcXCIpO1xcbiA1MjQ6XFx0XFx0XFx0XFx0Z290byBleGl0O1xcbiA1MjU6XFx0XFx0XFx0fVxcbiA1MjY6XFx0XFx0XFx0c2tiX3B1dChwa3RzW2ldLnNrYiwgcGt0X3NpemUpO1xcbiA1Mjc6XFx0XFxuIDUyODpcXHRcXHRcXHRpZiAodG90YWxfbGVuIFxcdTAwM2M9IGJ5dGVzX3JlbWFpbmluZykge1xcbiA1Mjk6XFx0XFx0XFx0XFx0bWVtY3B5KHBrdHNbaV0uc2tiLVxcdTAwM2VkYXRhLCByZWFkX3B0ciwgcGt0X3NpemUpO1xcbiA1MzA6XFx0XFx0XFx0XFx0cmVhZF9wdHIgKz0gdG90YWxfbGVuO1xcbiA1MzE6XFx0XFx0XFx0XFx0Ynl0ZXNfcmVtYWluaW5nIC09IHRvdGFsX2xlbjtcXG4gNTMyOlxcdFxcdFxcdH0gZWxzZSB7XFxuIDUzMzpcXHRcXHRcXHRcXHRjb25zdCBpbnQgcmVhZF9vdmVyaGFuZ19sZW4gPVxcbiA1MzQ6XFx0XFx0XFx0XFx0XFx0dG90YWxfbGVuIC0gYnl0ZXNfcmVtYWluaW5nO1xcbiA1MzU6XFx0XFx0XFx0XFx0Y29uc3QgaW50IHBrdF9vdmVyaGFuZ19sZW4gPSBwa3Rfc2l6ZSAtIGJ5dGVzX3JlbWFpbmluZztcXG4gNTM2OlxcdFxcbiA1Mzc6XFx0XFx0XFx0XFx0bWVtY3B5KHBrdHNbaV0uc2tiLVxcdTAwM2VkYXRhLCByZWFkX3B0ciwgYnl0ZXNfcmVtYWluaW5nKTtcXG4gNTM4OlxcdFxcdFxcdFxcdHJlYWRfcHRyID0gZnJvbV9jaGlwX2J1ZmZlcl9hbGlnbmVkO1xcbiA1Mzk6XFx0XFxuIDU0MDpcXHRcXHRcXHRcXHRyZXQgPSBtbTgxeF9kbV9yZWFkKFxcbiA1NDE6XFx0XFx0XFx0XFx0XFx0eWFwcy1cXHUwMDNlbW9ycyxcXG4gNTQyOlxcdFxcdFxcdFxcdFxcdC8qIE9mZnNldCBieSA0IHRvIGF2b2lkIHJldHJ5IGxvZ2ljICovXFxuIDU0MzpcXHRcXHRcXHRcXHRcXHR5YXBzLVxcdTAwM2VhdXhfZGF0YS1cXHUwMDNleXNsX2FkZHIgKyA0LCByZWFkX3B0cixcXG4gNTQ0OlxcdFxcdFxcdFxcdFxcdHJlYWRfb3ZlcmhhbmdfbGVuKTtcXG4gNTQ1OlxcdFxcbiA1NDY6XFx0XFx0XFx0XFx0aWYgKHJldClcXG4gNTQ3OlxcdFxcdFxcdFxcdFxcdGdvdG8gZXhpdDtcXG4gNTQ4OlxcdFxcbiA1NDk6XFx0XFx0XFx0XFx0bWVtY3B5KHBrdHNbaV0uc2tiLVxcdTAwM2VkYXRhICsgYnl0ZXNfcmVtYWluaW5nLCByZWFkX3B0cixcXG4gNTUwOlxcdFxcdFxcdFxcdCAgICAgICBwa3Rfb3ZlcmhhbmdfbGVuKTtcXG4gNTUxOlxcdFxcdFxcdFxcdHJlYWRfcHRyICs9IHJlYWRfb3ZlcmhhbmdfbGVuO1xcbiA1NTI6XFx0XFx0XFx0XFx0Ynl0ZXNfcmVtYWluaW5nID0gMDtcXG4gNTUzOlxcdFxcdFxcdH1cXG4gNTU0OlxcdFxcbiA1NTU6XFx0XFx0XFx0Km51bV9wa3RzX3JlY2VpdmVkICs9IDE7XFxuIDU1NjpcXHRcXHRcXHRpKys7XFxuIDU1NzpcXHRcXHR9XFxuIDU1ODpcXHRcXG4gNTU5OlxcdFxcdGlmIChhZ2FpbilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjE6Mjk6MDIuMzg4NTg3MzcyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyMjk2MTE2MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIGB5YXBzX2h3X3JlYWRfcGt0c2AgaW4gYHlhcHNfaHcuY2AqKlxuXG5Pa2F5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29ubmVjdGlvbiBvZiBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgIHdpdGhpbiB0aGUgYHlhcHNfaHcuY2AgbW9kdWxlLiBJJ20gZ29pbmcgdG8ganVtcCBzdHJhaWdodCBpbnRvIHRoZSBjb2RlLCBhbmQgZm9jdXMgb24gbGluZXMgNTUwIHRocm91Z2ggNjAwLiBUaGF0J3MgdXN1YWxseSBhIGdvb2QgcmFuZ2UgdG8gc3RhcnQgd2l0aCBmb3IgY29yZSBmdW5jdGlvbiBjYWxscyBhbmQgaW5pdGlhbGl6YXRpb24gcm91dGluZXMuIEhvcGVmdWxseSwgdGhlIGxpbmtpbmcgaXMgY2xlYXIgYW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IHByb3ZpZGVzIHN1ZmZpY2llbnQgY2x1ZXMuIExldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk2NzgsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI5OjA0LjYxODIwMjYyOVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDMwMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTYwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTYwOlxcdFxcdFxcdHJldCA9IC1FQUdBSU47XFxuIDU2MTpcXHRcXG4gNTYyOlxcdGV4aXQ6XFxuIDU2MzpcXHRcXHRtbTgxeF95YXBzX2h3X3VubG9jayh5YXBzKTtcXG4gNTY0OlxcdFxcdHJldHVybiByZXQ7XFxuIDU2NTpcXHR9XFxuIDU2NjpcXHRcXG4gNTY3OlxcdHN0YXRpYyBpbnQgbW04MXhfeWFwc19od191cGRhdGVfc3RhdHVzKHN0cnVjdCBtbTgxeF95YXBzICp5YXBzKVxcbiA1Njg6XFx0e1xcbiA1Njk6XFx0XFx0aW50IHJldDtcXG4gNTcwOlxcdFxcdGludCB0Y190b3RhbF9wa3RfY291bnQ7XFxuIDU3MTpcXHRcXHR1bnNpZ25lZCBsb25nIHJlZ19yZWFkX3RpbWVvdXQ7XFxuIDU3MjpcXHRcXHRzdHJ1Y3QgbW04MXhfeWFwc19zdGF0dXNfcmVncyAqciA9IFxcdTAwMjZ5YXBzLVxcdTAwM2VhdXhfZGF0YS1cXHUwMDNlc3RhdHVzX3JlZ3M7XFxuIDU3MzpcXHRcXHRzdHJ1Y3QgbW04MXhfeWFwc19od19zdGF0dXNfcmVncyAqaHdfciA9IFxcdTAwMjZ5YXBzLVxcdTAwM2VhdXhfZGF0YS1cXHUwMDNlaHdfc3RhdHVzX3JlZ3M7XFxuIDU3NDpcXHRcXG4gNTc1OlxcdFxcdHJldCA9IG1tODF4X3lhcHNfaHdfbG9jayh5YXBzKTtcXG4gNTc2OlxcdFxcdGlmIChyZXQpIHtcXG4gNTc3OlxcdFxcdFxcdGRldl9kYmcoeWFwcy1cXHUwMDNlbW9ycy1cXHUwMDNlZGV2LCBcXFwieWFwcyBsb2NrIGZhaWxlZCAlZFxcXCIsIHJldCk7XFxuIDU3ODpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA1Nzk6XFx0XFx0fVxcbiA1ODA6XFx0XFxuIDU4MTpcXHRcXHRyZWdfcmVhZF90aW1lb3V0ID0gamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoMTAwKTtcXG4gNTgyOlxcdFxcdGRvIHtcXG4gNTgzOlxcdFxcdFxcdGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHJlZ19yZWFkX3RpbWVvdXQpKSB7XFxuIDU4NDpcXHRcXHRcXHRcXHRkZXZfZXJyKHlhcHMtXFx1MDAzZW1vcnMtXFx1MDAzZWRldixcXG4gNTg1OlxcdFxcdFxcdFxcdFxcdFxcXCJ0aW1lZCBvdXQgcmVhZGluZyBzdGF0dXMgcmVnaXN0ZXJzOiAlZFxcXCIsIHJldCk7XFxuIDU4NjpcXHRcXHRcXHRcXHRyZXQgPSAtRVRJTUVET1VUO1xcbiA1ODc6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDU4ODpcXHRcXHRcXHR9XFxuIDU4OTpcXHRcXG4gNTkwOlxcdFxcdFxcdHJldCA9IG1tODF4X2RtX3JlYWQoeWFwcy1cXHUwMDNlbW9ycyxcXG4gNTkxOlxcdFxcdFxcdFxcdFxcdCAgICB5YXBzLVxcdTAwM2VhdXhfZGF0YS1cXHUwMDNlc3RhdHVzX3JlZ3NfYWRkcixcXG4gNTkyOlxcdFxcdFxcdFxcdFxcdCAgICAodTggKilod19yLCBzaXplb2YoKmh3X3IpKTtcXG4gNTkzOlxcdFxcdH0gd2hpbGUgKCFyZXQgXFx1MDAyNlxcdTAwMjYgbGUzMl90b19jcHUoaHdfci1cXHUwMDNlbG9jaykpO1xcbiA1OTQ6XFx0XFxuIDU5NTpcXHRcXHRpZiAocmV0KSB7XFxuIDU5NjpcXHRcXHRcXHRpZiAocmV0ICE9IC1FTk9ERVYpIHtcXG4gNTk3OlxcdFxcdFxcdFxcdGRldl9lcnIoeWFwcy1cXHUwMDNlbW9ycy1cXHUwMDNlZGV2LFxcbiA1OTg6XFx0XFx0XFx0XFx0XFx0XFxcImVycm9yIHJlYWRpbmcgeWFwcyBzdGF0dXMgcmVnaXN0ZXJzOiAlZFxcXCIsIHJldCk7XFxuIDU5OTpcXHRcXHRcXHR9XFxuIDYwMDpcXHRcXHRcXHRnb3RvIGV4aXRfdW5sb2NrO1xcbiA2MDE6XFx0XFx0fVxcbiA2MDI6XFx0XFxuIDYwMzpcXHRcXHRyLVxcdTAwM2V0Y190eF9wb29sX251bV9wYWdlcyA9IGxlMzJfdG9fY3B1KGh3X3ItXFx1MDAzZXRjX3R4X3Bvb2xfbnVtX3BhZ2VzKTtcXG4gNjA0OlxcdFxcdHItXFx1MDAzZXRjX2NtZF9wb29sX251bV9wYWdlcyA9IGxlMzJfdG9fY3B1KGh3X3ItXFx1MDAzZXRjX2NtZF9wb29sX251bV9wYWdlcyk7XFxuIDYwNTpcXHRcXHRyLVxcdTAwM2V0Y19iZWFjb25fcG9vbF9udW1fcGFnZXMgPSBsZTMyX3RvX2NwdShod19yLVxcdTAwM2V0Y19iZWFjb25fcG9vbF9udW1fcGFnZXMpO1xcbiA2MDY6XFx0XFx0ci1cXHUwMDNldGNfbWdtdF9wb29sX251bV9wYWdlcyA9IGxlMzJfdG9fY3B1KGh3X3ItXFx1MDAzZXRjX21nbXRfcG9vbF9udW1fcGFnZXMpO1xcbiA2MDc6XFx0XFx0ci1cXHUwMDNlZmNfcnhfcG9vbF9udW1fcGFnZXMgPSBsZTMyX3RvX2NwdShod19yLVxcdTAwM2VmY19yeF9wb29sX251bV9wYWdlcyk7XFxuIDYwODpcXHRcXHRyLVxcdTAwM2VmY19yZXNwX3Bvb2xfbnVtX3BhZ2VzID0gbGUzMl90b19jcHUoaHdfci1cXHUwMDNlZmNfcmVzcF9wb29sX251bV9wYWdlcyk7XFxuIDYwOTpcXHRcXHRyLVxcdTAwM2VmY190eF9zdHNfcG9vbF9udW1fcGFnZXMgPSBsZTMyX3RvX2NwdShod19yLVxcdTAwM2VmY190eF9zdHNfcG9vbF9udW1fcGFnZXMpO1xcbiA2MTA6XFx0XFx0ci1cXHUwMDNlZmNfYXV4X3Bvb2xfbnVtX3BhZ2VzID0gbGUzMl90b19jcHUoaHdfci1cXHUwMDNlZmNfYXV4X3Bvb2xfbnVtX3BhZ2VzKTtcXG4gNjExOlxcdFxcdHItXFx1MDAzZXRjX3R4X251bV9wa3RzID0gbGUzMl90b19jcHUoaHdfci1cXHUwMDNldGNfdHhfbnVtX3BrdHMpO1xcbiA2MTI6XFx0XFx0ci1cXHUwMDNldGNfY21kX251bV9wa3RzID0gbGUzMl90b19jcHUoaHdfci1cXHUwMDNldGNfY21kX251bV9wa3RzKTtcXG4gNjEzOlxcdFxcdHItXFx1MDAzZXRjX2JlYWNvbl9udW1fcGt0cyA9IGxlMzJfdG9fY3B1KGh3X3ItXFx1MDAzZXRjX2JlYWNvbl9udW1fcGt0cyk7XFxuIDYxNDpcXHRcXHRyLVxcdTAwM2V0Y19tZ210X251bV9wa3RzID0gbGUzMl90b19jcHUoaHdfci1cXHUwMDNldGNfbWdtdF9udW1fcGt0cyk7XFxuIDYxNTpcXHRcXHRyLVxcdTAwM2VmY19udW1fcGt0cyA9IGxlMzJfdG9fY3B1KGh3X3ItXFx1MDAzZWZjX251bV9wa3RzKTtcXG4gNjE2OlxcdFxcdHItXFx1MDAzZWZjX2RvbmVfbnVtX3BrdHMgPSBsZTMyX3RvX2NwdShod19yLVxcdTAwM2VmY19kb25lX251bV9wa3RzKTtcXG4gNjE3OlxcdFxcdHItXFx1MDAzZWZjX3J4X2J5dGVzX2luX3F1ZXVlID0gbGUzMl90b19jcHUoaHdfci1cXHUwMDNlZmNfcnhfYnl0ZXNfaW5fcXVldWUpO1xcbiA2MTg6XFx0XFx0ci1cXHUwMDNldGNfZGVsaW1fY3JjX2ZhaWxfZGV0ZWN0ZWQgPSBsZTMyX3RvX2NwdShod19yLVxcdTAwM2V0Y19kZWxpbV9jcmNfZmFpbF9kZXRlY3RlZCk7XFxuIDYxOTpcXHRcXHRyLVxcdTAwM2Vsb2NrID0gbGUzMl90b19jcHUoaHdfci1cXHUwMDNlbG9jayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI5OjA0LjYxODMwNzY3OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDQyNDk2NTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBjb2RlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgIGZ1bmN0aW9uIGZpdHMgaW50byB0aGUgYmlnZ2VyIHBpY3R1cmUsIHNvIG15IGZpcnN0IHN0ZXAgaXMgdG8gdHJhY2Ugd2hlcmUgaXQncyBiZWluZyBhc3NpZ25lZCB0byBgb3BzYC4gVGhhdCdzIHRoZSBjcnVjaWFsIGxpbmsuIEknbGwgbmVlZCB0byBnbyB0aHJvdWdoIGB5YXBzX2h3LmNgIGFuZCBmaWd1cmUgb3V0IHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgYXNzaWduZWQsIHRoaXMgYG9wc2Agc3RydWN0dXJlLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIHdpbGwgYmUgcmV2ZWFsZWQuIEknbSBsb29raW5nIGZvciB0aGUgaW5zdGFudGlhdGlvbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGBvcHNgIHZhcmlhYmxlIHNpZ25pZmllcywgYW5kIHdoYXQgb3RoZXIgZnVuY3Rpb25zIGFyZSBpbmNsdWRlZCBpbiBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEyODIsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI5OjA3LjA2MDgwNjc4M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2NjAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2NjA6XFx0XFx0aWYgKCF5YXBzLVxcdTAwM2VhdXhfZGF0YSkge1xcbiA2NjE6XFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4gNjYyOlxcdFxcdFxcdGdvdG8gZXJyX2V4aXQ7XFxuIDY2MzpcXHRcXHR9XFxuIDY2NDpcXHRcXG4gNjY1OlxcdFxcdHlhcHMtXFx1MDAzZWF1eF9kYXRhLVxcdTAwM2V0b19jaGlwX2J1ZmZlciA9XFxuIDY2NjpcXHRcXHRcXHRremFsbG9jKFlBUFNfSFdfV0lORE9XX1NJWkVfQllURVMgKyBhbGlnbm1lbnQgLSAxLCBHRlBfS0VSTkVMKTtcXG4gNjY3OlxcdFxcdGlmICgheWFwcy1cXHUwMDNlYXV4X2RhdGEtXFx1MDAzZXRvX2NoaXBfYnVmZmVyKSB7XFxuIDY2ODpcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbiA2Njk6XFx0XFx0XFx0Z290byBlcnJfZXhpdDtcXG4gNjcwOlxcdFxcdH1cXG4gNjcxOlxcdFxcbiA2NzI6XFx0XFx0eWFwcy1cXHUwMDNlYXV4X2RhdGEtXFx1MDAzZWZyb21fY2hpcF9idWZmZXIgPVxcbiA2NzM6XFx0XFx0XFx0a3phbGxvYyhZQVBTX0hXX1dJTkRPV19TSVpFX0JZVEVTICsgYWxpZ25tZW50IC0gMSwgR0ZQX0tFUk5FTCk7XFxuIDY3NDpcXHRcXHRpZiAoIXlhcHMtXFx1MDAzZWF1eF9kYXRhLVxcdTAwM2Vmcm9tX2NoaXBfYnVmZmVyKSB7XFxuIDY3NTpcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbiA2NzY6XFx0XFx0XFx0Z290byBlcnJfZXhpdDtcXG4gNjc3OlxcdFxcdH1cXG4gNjc4OlxcdFxcbiA2Nzk6XFx0XFx0aWYgKCFJU19BTElHTkVEKCh1aW50cHRyX3QpXFx1MDAyNnlhcHMtXFx1MDAzZWF1eF9kYXRhLVxcdTAwM2VzdGF0dXNfcmVncywgYWxpZ25tZW50KSkge1xcbiA2ODA6XFx0XFx0XFx0ZGV2X3dhcm4obW9ycy1cXHUwMDNlZGV2LFxcbiA2ODE6XFx0XFx0XFx0XFx0IFxcXCJTdGF0dXMgcmVnaXN0ZXJzIGFyZSBub3QgYWxpZ25lZCB0byAlZCBieXRlc1xcXCIsXFxuIDY4MjpcXHRcXHRcXHRcXHQgYWxpZ25tZW50KTtcXG4gNjgzOlxcdFxcdH1cXG4gNjg0OlxcdFxcbiA2ODU6XFx0XFx0eWFwcy1cXHUwMDNlb3BzID0gXFx1MDAyNm1tODF4X3lhcHNfaHdfb3BzO1xcbiA2ODY6XFx0XFx0cmV0dXJuIHJldDtcXG4gNjg3OlxcdFxcbiA2ODg6XFx0ZXJyX2V4aXQ6XFxuIDY4OTpcXHRcXHRtbTgxeF95YXBzX2h3X2ZpbmlzaChtb3JzKTtcXG4gNjkwOlxcdFxcdHJldHVybiByZXQ7XFxuIDY5MTpcXHR9XFxuIDY5MjpcXHRcXG4gNjkzOlxcdHZvaWQgbW04MXhfeWFwc19od19maW5pc2goc3RydWN0IG1tODF4ICptb3JzKVxcbiA2OTQ6XFx0e1xcbiA2OTU6XFx0XFx0c3RydWN0IG1tODF4X3lhcHMgKnlhcHM7XFxuIDY5NjpcXHRcXG4gNjk3OlxcdFxcdHlhcHMgPSBcXHUwMDI2bW9ycy1cXHUwMDNlaGlmLnUueWFwcztcXG4gNjk4OlxcdFxcdGlmICh5YXBzLVxcdTAwM2VhdXhfZGF0YSkge1xcbiA2OTk6XFx0XFx0XFx0a2ZyZWUoeWFwcy1cXHUwMDNlYXV4X2RhdGEtXFx1MDAzZWZyb21fY2hpcF9idWZmZXIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyOTowNy4wNjA4OTk3ODNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTc4OTA1MTg0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBgbW04MXhfeWFwc19od19vcHNgIFN0cnVjdHVyZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG1tODF4X3lhcHNfaHdfb3BzYCB0aGluZy4uLiBJbW1lZGlhdGVseSwgbXkgdGhvdWdodCBpcywgbGV0J3MgdHJhY2sgdGhpcyBkb3duLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgc3RydWN0dXJlIGlzIGFuZCBob3cgaXQncyB1c2VkLiBTaW5jZSBpdCdzIGxpa2VseSBhIGhhcmR3YXJlIG9wZXJhdGlvbnMgc3RydWN0dXJlLCBhbmQgaXQgaGFzIFwieWFwc19od1wiIGluIHRoZSBuYW1lLCBteSBpbnN0aW5jdCBpcyB0byBqdW1wIHJpZ2h0IGludG8gdGhlIGB5YXBzX2h3LmNgIGZpbGUuIFNlYXJjaGluZyBmb3IgdGhhdCBzeW1ib2wgdGhlcmUgaXMgcHJvYmFibHkgdGhlIGJlc3Qgc3RhcnRpbmcgcG9pbnQuIExldCdzIHNlZSB3aGF0IHRoYXQgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIxMjEsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI5OjA4Ljg0OTk1NDE1N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIzODA5NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW04MXhfeWFwc19od19vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmM9NTY3PXN0YXRpYyBpbnQgbW04MXhfeWFwc19od191cGRhdGVfc3RhdHVzKHN0cnVjdCBtbTgxeF95YXBzICp5YXBzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMtNjQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jOjY0NTpzdGF0aWMgY29uc3Qgc3RydWN0IG1tODF4X3lhcHNfb3BzIG1tODF4X3lhcHNfaHdfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jLTY0Ni1cXHQud3JpdGVfcGt0cyA9IG1tODF4X3lhcHNfaHdfd3JpdGVfcGt0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jPTY1MT1pbnQgbW04MXhfeWFwc19od19pbml0KHN0cnVjdCBtbTgxeCAqbW9ycylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jLTY4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYzo2ODU6XFx0eWFwcy1cXHUwMDNlb3BzID0gXFx1MDAyNm1tODF4X3lhcHNfaHdfb3BzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jLTY4Ni1cXHRyZXR1cm4gcmV0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyOTowOC45MDIzNDI0MzZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTYzNTQwMjc4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgYG1tODF4YCBVU0IgcHJvYmluZyBwcm9jZXNzLiBUaW1lIHRvIHB1bGwgdXAgdGhlIHNvdXJjZSBjb2RlIOKAkyBzcGVjaWZpY2FsbHksIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jYC4gSSdtIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBVU0IgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCBkZXRlY3Rpb24gd2l0aGluIHRoYXQgcGFydGljdWxhciBtb2R1bGUuIEkgd2FudCB0byBzZWUgaG93IHRoZSBrZXJuZWwgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlLCB0aGUgc2VxdWVuY2Ugb2YgZXZlbnRzLCBhbmQgYW55IHF1aXJrcyBzcGVjaWZpYyB0byB0aGlzIGBtbTgxeGAgaW1wbGVtZW50YXRpb24uIExldCdzIHNlZSB3aGF0IHNlY3JldHMgaXQgaG9sZHMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNzA5LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjE6Mjk6MTAuNTM3NzQ3ODUyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdC8qXFxuICAgMzpcXHQgKiBDb3B5cmlnaHQgKGMpIDIwMTctMjAyNiBNb3JzZSBNaWNyb1xcbiAgIDQ6XFx0ICovXFxuICAgNTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvamlmZmllcy5oXFx1MDAzZVxcbiAgIDY6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbiAgIDc6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VzYi5oXFx1MDAzZVxcbiAgIDg6XFx0I2luY2x1ZGUgXFxcImhpZi5oXFxcIlxcbiAgIDk6XFx0I2luY2x1ZGUgXFxcImJ1cy5oXFxcIlxcbiAgMTA6XFx0I2luY2x1ZGUgXFxcIm1hYy5oXFxcIlxcbiAgMTE6XFx0I2luY2x1ZGUgXFxcImNvcmUuaFxcXCJcXG4gIDEyOlxcdFxcbiAgMTM6XFx0LypcXG4gIDE0OlxcdCAqIFVSQiB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gSWYgYW4gVVJCIGRvZXMgbm90IGNvbXBsZXRlIHdpdGhpbiB0aGlzXFxuICAxNTpcXHQgKiB0aW1lLCBpdCB3aWxsIGJlIGtpbGxlZC4gVGhpcyB0aW1lb3V0IG5lZWRzIHRvIGFjY291bnQgZm9yIFVTQiBzdXNwZW5kYW5kXFxuICAxNjpcXHQgKiByZXN1bWUgb2NjdXJyaW5nIGJlZm9yZSB0aGUgVVJCIGNhbiBiZSB0cmFuc2ZlcnJlZCwgYW5kIGl0IGFsc28gbmVlZHMgdG9cXG4gIDE3OlxcdCAqIGFjY291bnQgZm9yIHRyYW5zZmVycmluZyBVU0JfTUFYX1RSQU5TRkVSX1NJWkUgYnl0ZXMgb3ZlciBhIHBvdGVudGlhbGx5XFxuICAxODpcXHQgKiBzbG93LCBjb25nZXN0ZWQgVVNCIEZ1bGwgU3BlZWQgbGluay5cXG4gIDE5OlxcdCAqL1xcbiAgMjA6XFx0I2RlZmluZSBVUkJfVElNRU9VVF9NUyAyNTBcXG4gIDIxOlxcdFxcbiAgMjI6XFx0LyogSGlnaCBzcGVlZCBVU0IgMl4oNC0xKSAqIDEyNXVzZWMgPSAxbXNlYyAqL1xcbiAgMjM6XFx0I2RlZmluZSBNTTgxWF9VU0JfSU5URVJSVVBUX0lOVEVSVkFMIDRcXG4gIDI0OlxcdFxcbiAgMjU6XFx0LyogTWF4IGJ5dGVzIHBlciBVU0IgcmVhZC93cml0ZSAqL1xcbiAgMjY6XFx0I2RlZmluZSBVU0JfTUFYX1RSQU5TRkVSX1NJWkUgKDE2ICogMTAyNClcXG4gIDI3OlxcdFxcbiAgMjg6XFx0LyogSU5UIEVQIGJ1ZmZlciBzaXplICovXFxuICAyOTpcXHQjZGVmaW5lIE1NODFYX0VQX0lOVF9CVUZGRVJfU0laRSA4XFxuICAzMDpcXHRcXG4gIDMxOlxcdC8qIE1vcnNlIHZlbmRvciBJRHMqL1xcbiAgMzI6XFx0I2RlZmluZSBNTTgxWF9WRU5ET1JfSUQgMHgzMjViXFxuICAzMzpcXHQjZGVmaW5lIE1NODFYX01NODEwWF9QUk9EVUNUX0lEIDB4ODEwMFxcbiAgMzQ6XFx0XFxuICAzNTpcXHQvKiBQb3dlciBtYW5hZ2VtZW50IHJ1bnRpbWUgYXV0by1zdXNwZW5kIGRlbGF5IHZhbHVlIGluIG1pbGxpc2Vjb25kcyAqL1xcbiAgMzY6XFx0I2RlZmluZSBQTV9SVU5USU1FX0FVVE9TVVNQRU5EX0RFTEFZX01TIDEwMFxcbiAgMzc6XFx0XFxuICAzODpcXHRlbnVtIG1tODF4X3VzYl9lbmRwb2ludHMge1xcbiAgMzk6XFx0XFx0TU04MVhfRVBfQ01EID0gMCxcXG4gIDQwOlxcdFxcdE1NODFYX0VQX0lOVCxcXG4gIDQxOlxcdFxcdE1NODFYX0VQX01FTV9SRCxcXG4gIDQyOlxcdFxcdE1NODFYX0VQX01FTV9XUixcXG4gIDQzOlxcdFxcdE1NODFYX0VQX1JFR19SRCxcXG4gIDQ0OlxcdFxcdE1NODFYX0VQX1JFR19XUixcXG4gIDQ1OlxcdFxcdE1NODFYX0VQX0VQX01BWCxcXG4gIDQ2OlxcdH07XFxuICA0NzpcXHRcXG4gIDQ4OlxcdHN0cnVjdCBtbTgxeF91c2JfZW5kcG9pbnQge1xcbiAgNDk6XFx0XFx0dW5zaWduZWQgY2hhciAqYnVmZmVyO1xcbiAgNTA6XFx0XFx0c3RydWN0IHVyYiAqdXJiO1xcbiAgNTE6XFx0XFx0X191OCBhZGRyO1xcbiAgNTI6XFx0XFx0aW50IHNpemU7XFxuICA1MzpcXHR9O1xcbiAgNTQ6XFx0XFxuICA1NTpcXHRlbnVtIG1tODF4X3VzYl9mbGFncyB7IE1NODFYX1VTQl9GTEFHX0FUVEFDSEVELCBNTTgxWF9VU0JfRkxBR19TVVNQRU5ERUQgfTtcXG4gIDU2OlxcdFxcbiAgNTc6XFx0c3RydWN0IG1tODF4X3VzYiB7XFxuICA1ODpcXHRcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldjtcXG4gIDU5OlxcdFxcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2U7XFxuICA2MDpcXHRcXHRzdHJ1Y3QgbW04MXhfdXNiX2VuZHBvaW50IGVuZHBvaW50c1tNTTgxWF9FUF9FUF9NQVhdO1xcbiAgNjE6XFx0XFx0aW50IGVycm9ycztcXG4gIDYyOlxcdFxcbiAgNjM6XFx0XFx0Lyogc2VyaWFsaXNlIFVTQiBkZXZpY2Ugc3RydWN0ICovXFxuICA2NDpcXHRcXHRzdHJ1Y3QgbXV0ZXggbG9jaztcXG4gIDY1OlxcdFxcbiAgNjY6XFx0XFx0Lyogc2VyaWFsaXNlIFVTQiBidXMgYWNjZXNzICovXFxuICA2NzpcXHRcXHRzdHJ1Y3QgbXV0ZXggYnVzX2xvY2s7XFxuICA2ODpcXHRcXG4gIDY5OlxcdFxcdGJvb2wgb25nb2luZ19jbWQ7XFxuICA3MDpcXHRcXHRib29sIG9uZ29pbmdfcnc7XFxuICA3MTpcXHRcXHR3YWl0X3F1ZXVlX2hlYWRfdCByd19pbl93YWl0O1xcbiAgNzI6XFx0XFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4gIDczOlxcdH07XFxuICA3NDpcXHRcXG4gIDc1OlxcdGVudW0gbW04MXhfdXNiX2NvbW1hbmRfZGlyZWN0aW9uIHtcXG4gIDc2OlxcdFxcdE1NODFYX1VTQl9XUklURSA9IDB4MDAsXFxuICA3NzpcXHRcXHRNTTgxWF9VU0JfUkVBRCA9IDB4ODAsXFxuICA3ODpcXHRcXHRNTTgxWF9VU0JfUkVTRVQgPSAweDAyLFxcbiAgNzk6XFx0fTtcXG4gIDgwOlxcdFxcbiAgODE6XFx0c3RydWN0IG1tODF4X3VzYl9jb21tYW5kIHtcXG4gIDgyOlxcdFxcdF9fbGUzMiBkaXI7IC8qIE5leHQgQlVMSyBkaXJlY3Rpb24gKi9cXG4gIDgzOlxcdFxcdF9fbGUzMiBhZGRyZXNzOyAvKiBOZXh0IEJVTEsgYWRkcmVzcyAqL1xcbiAgODQ6XFx0XFx0X19sZTMyIGxlbmd0aDsgLyogTmV4dCBCVUxLIHNpemUgKi9cXG4gIDg1OlxcdH07XFxuICA4NjpcXHRcXG4gIDg3OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBtbTgxeF91c2JfdGFibGVbXSA9IHtcXG4gIDg4OlxcdFxcdHsgVVNCX0RFVklDRShNTTgxWF9WRU5ET1JfSUQsIE1NODFYX01NODEwWF9QUk9EVUNUX0lEKSB9LFxcbiAgODk6XFx0XFx0e30gLyogVGVybWluYXRpbmcgZW50cnkgKi9cXG4gIDkwOlxcdH07XFxuICA5MTpcXHRcXG4gIDkyOlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBtbTgxeF91c2JfdGFibGUpO1xcbiAgOTM6XFx0XFxuICA5NDpcXHRzdGF0aWMgdm9pZCBtbTgxeF91c2JfaXJxX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiAgOTU6XFx0e1xcbiAgOTY6XFx0XFx0c3RydWN0IG1tODF4ICptb3JzID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBtbTgxeCwgdXNiX2lycV93b3JrKTtcXG4gIDk3OlxcdFxcbiAgOTg6XFx0XFx0bW04MXhfY2xhaW1fYnVzKG1vcnMpO1xcbiAgOTk6XFx0XFx0bW04MXhfaHdfaXJxX2hhbmRsZShtb3JzKTtcXG4gMTAwOlxcdFxcdG1tODF4X3JlbGVhc2VfYnVzKG1vcnMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyOToxMC41Mzc4NTA5MDJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTc2NzMyMjA5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqRGl2aW5nIGludG8gdGhlIFVTQiBLZXJuZWwgQ29kZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyBVU0IgaXNzdWUuIEZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0J3MgemVybyBpbiBvbiB0aGUgYHVzYi5jYCBmaWxlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcHJvYmluZyBtZWNoYW5pc20gaXMgd29ya2luZy4gSSdsbCBzdGFydCBieSBjaGVja2luZyBvdXQgdGhlIHByb2JlIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uLiBGcm9tIHRoZXJlLCBJJ2xsIGtlZXAgZGlnZ2luZyBkZWVwZXIgd2l0aGluIGB1c2IuY2AgdG8gc2VlIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgVVNCIHN1YnN5c3RlbSBhbmQgd2hlcmUgdGhlIGlzc3VlIG1heSBsYXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MzgxLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyOToxMi4zMDUxNzU0NzdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI0MDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDAwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQwMDpcXHRcXG4gNDAxOlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNm11c2ItXFx1MDAzZWxvY2spO1xcbiA0MDI6XFx0XFxuIDQwMzpcXHRcXHRtdXNiLVxcdTAwM2VvbmdvaW5nX3J3ID0gdHJ1ZTtcXG4gNDA0OlxcdFxcdG11c2ItXFx1MDAzZWVycm9ycyA9IDA7XFxuIDQwNTpcXHRcXG4gNDA2OlxcdFxcdC8qIFNlbmQgY29tbWFuZCBhaGVhZCB0byBwcmVwYXJlIGZvciBUb2tlbnMgKi9cXG4gNDA3OlxcdFxcdGNtZC5kaXIgPSBjcHVfdG9fbGUzMihNTTgxWF9VU0JfV1JJVEUpO1xcbiA0MDg6XFx0XFx0Y21kLmFkZHJlc3MgPSBjcHVfdG9fbGUzMihhZGRyZXNzKTtcXG4gNDA5OlxcdFxcdGNtZC5sZW5ndGggPSBjcHVfdG9fbGUzMihzaXplKTtcXG4gNDEwOlxcdFxcdHJldCA9IG1tODF4X3VzYl9jbWQobXVzYiwgXFx1MDAyNmNtZCk7XFxuIDQxMTpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiA0MTI6XFx0XFx0XFx0ZGV2X2Vycihtb3JzLVxcdTAwM2VkZXYsIFxcXCJtbTgxeF91c2JfbWVtX3JlYWQgZXJyb3IgJWRcXFwiLCByZXQpO1xcbiA0MTM6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4gNDE0OlxcdFxcdH1cXG4gNDE1OlxcdFxcbiA0MTY6XFx0XFx0bWVtY3B5KG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLmJ1ZmZlciwgZGF0YSwgc2l6ZSk7XFxuIDQxNzpcXHRcXG4gNDE4OlxcdFxcdC8qIHByZXBhcmUgYSByZWFkICovXFxuIDQxOTpcXHRcXHR1c2JfZmlsbF9idWxrX3VyYihcXG4gNDIwOlxcdFxcdFxcdG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLnVyYiwgbXVzYi1cXHUwMDNldWRldixcXG4gNDIxOlxcdFxcdFxcdHVzYl9zbmRidWxrcGlwZShtdXNiLVxcdTAwM2V1ZGV2LFxcbiA0MjI6XFx0XFx0XFx0XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9XUl0uYWRkciksXFxuIDQyMzpcXHRcXHRcXHRtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS5idWZmZXIsIHNpemUsXFxuIDQyNDpcXHRcXHRcXHRtbTgxeF91c2JfbWVtX3J3X2NhbGxiYWNrLCBtb3JzKTtcXG4gNDI1OlxcdFxcbiA0MjY6XFx0XFx0cmV0ID0gdXNiX3N1Ym1pdF91cmIobXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9XUl0udXJiLCBHRlBfQVRPTUlDKTtcXG4gNDI3OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuIDQyODpcXHRcXHRcXHRkZXZfZXJyKG1vcnMtXFx1MDAzZWRldiwgXFxcIi0gZmFpbGVkIHN1Ym1pdHRpbmcgd3JpdGUgdXJiLCBlcnJvciAlZFxcXCIsXFxuIDQyOTpcXHRcXHRcXHRcXHRyZXQpO1xcbiA0MzA6XFx0XFx0XFx0cmV0ID0gKHJldCA9PSAtRU5PTUVNKSA/IHJldCA6IC1FSU87XFxuIDQzMTpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbiA0MzI6XFx0XFx0fVxcbiA0MzM6XFx0XFxuIDQzNDpcXHRcXHRyZXQgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdGltZW91dChcXG4gNDM1OlxcdFxcdFxcdG11c2ItXFx1MDAzZXJ3X2luX3dhaXQsICghbXVzYi1cXHUwMDNlb25nb2luZ19ydyksXFxuIDQzNjpcXHRcXHRcXHRtc2Vjc190b19qaWZmaWVzKFVSQl9USU1FT1VUX01TKSk7XFxuIDQzNzpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiA0Mzg6XFx0XFx0XFx0ZGV2X2Vycihtb3JzLVxcdTAwM2VkZXYsIFxcXCJlcnJvciAlZFxcXCIsIHJldCk7XFxuIDQzOTpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbiA0NDA6XFx0XFx0fSBlbHNlIGlmIChyZXQgPT0gMCkge1xcbiA0NDE6XFx0XFx0XFx0LyogVGltZWQgb3V0LiAqL1xcbiA0NDI6XFx0XFx0XFx0dXNiX2tpbGxfdXJiKG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLnVyYik7XFxuIDQ0MzpcXHRcXHR9XFxuIDQ0NDpcXHRcXG4gNDQ1OlxcdFxcdGlmIChtdXNiLVxcdTAwM2VlcnJvcnMpIHtcXG4gNDQ2OlxcdFxcdFxcdHJldCA9IG11c2ItXFx1MDAzZWVycm9ycztcXG4gNDQ3OlxcdFxcdFxcdGRldl9lcnIobW9ycy1cXHUwMDNlZGV2LCBcXFwiZXJyb3IgJWRcXFwiLCByZXQpO1xcbiA0NDg6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4gNDQ5OlxcdFxcdH1cXG4gNDUwOlxcdFxcbiA0NTE6XFx0XFx0cmV0ID0gc2l6ZTtcXG4gNDUyOlxcdFxcbiA0NTM6XFx0ZXJyb3I6XFxuIDQ1NDpcXHRcXHRtdXNiLVxcdTAwM2VvbmdvaW5nX3J3ID0gZmFsc2U7XFxuIDQ1NTpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm11c2ItXFx1MDAzZWxvY2spO1xcbiA0NTY6XFx0XFx0cmV0dXJuIHJldDtcXG4gNDU3OlxcdH1cXG4gNDU4OlxcdFxcbiA0NTk6XFx0c3RhdGljIGludCBtbTgxeF91c2JfZG1fcmVhZChzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBhZGRyZXNzLCB1OCAqZGF0YSwgaW50IGxlbilcXG4gNDYwOlxcdHtcXG4gNDYxOlxcdFxcdHNzaXplX3Qgb2Zmc2V0ID0gMDtcXG4gNDYyOlxcdFxcdGludCByZXQ7XFxuIDQ2MzpcXHRcXHRzdHJ1Y3QgbW04MXhfdXNiICptdXNiID0gKHN0cnVjdCBtbTgxeF91c2IgKiltb3JzLVxcdTAwM2VkcnZfcHJpdjtcXG4gNDY0OlxcdFxcbiA0NjU6XFx0XFx0d2hpbGUgKG9mZnNldCBcXHUwMDNjIGxlbikge1xcbiA0NjY6XFx0XFx0XFx0cmV0ID0gbW04MXhfdXNiX21lbV9yZWFkKG11c2IsIGFkZHJlc3MgKyBvZmZzZXQsXFxuIDQ2NzpcXHRcXHRcXHRcXHRcXHRcXHQgKHU4ICopKGRhdGEgKyBvZmZzZXQpLFxcbiA0Njg6XFx0XFx0XFx0XFx0XFx0XFx0IG1pbigoc3NpemVfdCkobGVuIC0gb2Zmc2V0KSxcXG4gNDY5OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgKHNzaXplX3QpVVNCX01BWF9UUkFOU0ZFUl9TSVpFKSk7XFxuIDQ3MDpcXHRcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiA0NzE6XFx0XFx0XFx0XFx0ZGV2X2Vycihtb3JzLVxcdTAwM2VkZXYsIFxcXCIlcyBmYWlsZWQgKGVycm5vPSVkKVxcXCIsIF9fZnVuY19fLFxcbiA0NzI6XFx0XFx0XFx0XFx0XFx0cmV0KTtcXG4gNDczOlxcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDQ3NDpcXHRcXHRcXHR9XFxuIDQ3NTpcXHRcXG4gNDc2OlxcdFxcdFxcdG9mZnNldCArPSByZXQ7XFxuIDQ3NzpcXHRcXHR9XFxuIDQ3ODpcXHRcXG4gNDc5OlxcdFxcdHJldHVybiAwO1xcbiA0ODA6XFx0fVxcbiA0ODE6XFx0XFxuIDQ4MjpcXHRzdGF0aWMgaW50IG1tODF4X3VzYl9kbV93cml0ZShzdHJ1Y3QgbW04MXggKm1vcnMsIHUzMiBhZGRyZXNzLCBjb25zdCB1OCAqZGF0YSxcXG4gNDgzOlxcdFxcdFxcdFxcdCAgICAgIGludCBsZW4pXFxuIDQ4NDpcXHR7XFxuIDQ4NTpcXHRcXHRzc2l6ZV90IG9mZnNldCA9IDA7XFxuIDQ4NjpcXHRcXHRpbnQgcmV0O1xcbiA0ODc6XFx0XFx0c3RydWN0IG1tODF4X3VzYiAqbXVzYiA9IChzdHJ1Y3QgbW04MXhfdXNiICopbW9ycy1cXHUwMDNlZHJ2X3ByaXY7XFxuIDQ4ODpcXHRcXG4gNDg5OlxcdFxcdHdoaWxlIChvZmZzZXQgXFx1MDAzYyBsZW4pIHtcXG4gNDkwOlxcdFxcdFxcdHJldCA9IG1tODF4X3VzYl9tZW1fd3JpdGUobXVzYiwgYWRkcmVzcyArIG9mZnNldCxcXG4gNDkxOlxcdFxcdFxcdFxcdFxcdFxcdCAgKHU4ICopKGRhdGEgKyBvZmZzZXQpLFxcbiA0OTI6XFx0XFx0XFx0XFx0XFx0XFx0ICBtaW4oKHNzaXplX3QpKGxlbiAtIG9mZnNldCksXFxuIDQ5MzpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAoc3NpemVfdClVU0JfTUFYX1RSQU5TRkVSX1NJWkUpKTtcXG4gNDk0OlxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuIDQ5NTpcXHRcXHRcXHRcXHRkZXZfZXJyKG1vcnMtXFx1MDAzZWRldiwgXFxcIiVzIGZhaWxlZCAoZXJybm89JWQpXFxcIiwgX19mdW5jX18sXFxuIDQ5NjpcXHRcXHRcXHRcXHRcXHRyZXQpO1xcbiA0OTc6XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gNDk4OlxcdFxcdFxcdH1cXG4gNDk5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyOToxMi4zMDUzMDEyMjZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQwNTA4ODI4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHByb2JlIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgbGluZXMgNTAwLTYwMCBpbiBgdXNiLmNgLlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgdXNiLmNgIFByb2JlIEZ1bmN0aW9uKipcblxuT2theSwgbGV0J3MgemVybyBpbiBvbiB0aGUgcHJvYmUgZnVuY3Rpb24sIHRoYXQgY3J1Y2lhbCBwaWVjZSBpbiBgdXNiLmNgLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IHRoaXMgcGFydGljdWxhciBVU0IgZHJpdmVyIGhhbmRsZXMgZGV2aWNlIGRldGVjdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24uIEFscmlnaHQsIGxpbmVzIDUwMCB0aHJvdWdoIDYwMCwgdGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgY2h1bmsgb2YgdGhlIHNldHVwIGxvZ2ljLiBJJ20gbG9va2luZyBmb3IgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBVU0IgY29yZSwgaG93IGl0IGlkZW50aWZpZXMgdGhlIHNwZWNpZmljIGRldmljZSwgYW5kIGFueSBpbml0aWFsIHJlc291cmNlIGFsbG9jYXRpb24uIEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBhbnkgdmVuZG9yL3Byb2R1Y3QgSUQgY2hlY2tzLCBhbmQgaG93IGl0IGhhbmRsZXMgZGlmZmVyZW50IFVTQiBjb25maWd1cmF0aW9ucyDigJMgdGhhdCdzIG9mdGVuIHdoZXJlIHRoZSBzdWJ0bGUgYnVncyBvciBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBsaWtlIHRvIGhpZGUuIExldCdzIHNlZSBpZiB0aGVyZSdzIGFueSBjbGV2ZXJuZXNzIGluIGhhbmRsaW5nIHF1aXJrcyBvciBjb21wYXRpYmlsaXR5IGlzc3VlcyB3aXRoIG9sZGVyIGhhcmR3YXJlLi4uIEknbGwgYmUga2VlcGluZyBhbiBleWUgb3V0IGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIGxvY2tpbmcgaXNzdWVzLCBlc3BlY2lhbGx5IGlmIHRoZXJlJ3MgYW55IGludGVyYWN0aW9uIHdpdGggaW50ZXJydXB0IGhhbmRsZXJzLiBJJ20gZ29pbmcgdG8gc2NhbiBmb3IgYW55IGNhbGxzIHRvIGB1c2JfYWxsb2NfY29oZXJlbnRgIG9yIHNpbWlsYXIgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb25zLCBzaW5jZSB0aGF0J3Mgb2Z0ZW4gYSBzb3VyY2Ugb2YgY29udGVudGlvbiBpZiBub3QgZG9uZSBjb3JyZWN0bHkuIExldCdzIGdldCByZWFkaW5nIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjE1NywiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjE6Mjk6MTQuNzEwMzkzMjkxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUwMCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1MDA6XFx0XFx0XFx0b2Zmc2V0ICs9IHJldDtcXG4gNTAxOlxcdFxcdH1cXG4gNTAyOlxcdFxcbiA1MDM6XFx0XFx0cmV0dXJuIDA7XFxuIDUwNDpcXHR9XFxuIDUwNTpcXHRcXG4gNTA2OlxcdHN0YXRpYyBpbnQgbW04MXhfdXNiX3JlZzMyX3JlYWQoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkcmVzcywgdTMyICp2YWwpXFxuIDUwNzpcXHR7XFxuIDUwODpcXHRcXHRpbnQgcmV0ID0gMDtcXG4gNTA5OlxcdFxcdHN0cnVjdCBtbTgxeF91c2IgKm11c2IgPSAoc3RydWN0IG1tODF4X3VzYiAqKW1vcnMtXFx1MDAzZWRydl9wcml2O1xcbiA1MTA6XFx0XFxuIDUxMTpcXHRcXHRyZXQgPSBtbTgxeF91c2JfbWVtX3JlYWQobXVzYiwgYWRkcmVzcywgKHU4ICopdmFsLCBzaXplb2YoKnZhbCkpO1xcbiA1MTI6XFx0XFx0aWYgKHJldCA9PSBzaXplb2YoKnZhbCkpIHtcXG4gNTEzOlxcdFxcdFxcdCp2YWwgPSBsZTMyX3RvX2NwdXAoKF9fbGUzMiAqKXZhbCk7XFxuIDUxNDpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNTE1OlxcdFxcdH1cXG4gNTE2OlxcdFxcbiA1MTc6XFx0XFx0ZGV2X2Vycihtb3JzLVxcdTAwM2VkZXYsIFxcXCJ1c2IgcmVnMzIgcmVhZCBmYWlsZWQgJWRcXFwiLCByZXQpO1xcbiA1MTg6XFx0XFx0cmV0dXJuIHJldDtcXG4gNTE5OlxcdH1cXG4gNTIwOlxcdFxcbiA1MjE6XFx0c3RhdGljIGludCBtbTgxeF91c2JfcmVnMzJfd3JpdGUoc3RydWN0IG1tODF4ICptb3JzLCB1MzIgYWRkcmVzcywgdTMyIHZhbClcXG4gNTIyOlxcdHtcXG4gNTIzOlxcdFxcdGludCByZXQgPSAwO1xcbiA1MjQ6XFx0XFx0c3RydWN0IG1tODF4X3VzYiAqbXVzYiA9IChzdHJ1Y3QgbW04MXhfdXNiICopbW9ycy1cXHUwMDNlZHJ2X3ByaXY7XFxuIDUyNTpcXHRcXHRfX2xlMzIgdmFsX2xlID0gY3B1X3RvX2xlMzIodmFsKTtcXG4gNTI2OlxcdFxcbiA1Mjc6XFx0XFx0cmV0ID0gbW04MXhfdXNiX21lbV93cml0ZShtdXNiLCBhZGRyZXNzLCAodTggKilcXHUwMDI2dmFsX2xlLCBzaXplb2YodmFsX2xlKSk7XFxuIDUyODpcXHRcXHRpZiAocmV0ID09IHNpemVvZih2YWxfbGUpKVxcbiA1Mjk6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDUzMDpcXHRcXG4gNTMxOlxcdFxcdGRldl9lcnIobW9ycy1cXHUwMDNlZGV2LCBcXFwidXNiIHJlZzMyIHdyaXRlIGZhaWxlZCAlZFxcXCIsIHJldCk7XFxuIDUzMjpcXHRcXHRyZXR1cm4gcmV0O1xcbiA1MzM6XFx0fVxcbiA1MzQ6XFx0XFxuIDUzNTpcXHRzdGF0aWMgdm9pZCBtbTgxeF91c2JfYnVzX2VuYWJsZShzdHJ1Y3QgbW04MXggKm1vcnMsIGJvb2wgZW5hYmxlKVxcbiA1MzY6XFx0e1xcbiA1Mzc6XFx0XFx0c3RydWN0IG1tODF4X3VzYiAqbXVzYiA9IChzdHJ1Y3QgbW04MXhfdXNiICopbW9ycy1cXHUwMDNlZHJ2X3ByaXY7XFxuIDUzODpcXHRcXG4gNTM5OlxcdFxcdGlmIChlbmFibGUpXFxuIDU0MDpcXHRcXHRcXHR1c2JfYXV0b3BtX2dldF9pbnRlcmZhY2UobXVzYi1cXHUwMDNlaW50ZXJmYWNlKTtcXG4gNTQxOlxcdFxcdGVsc2VcXG4gNTQyOlxcdFxcdFxcdHVzYl9hdXRvcG1fcHV0X2ludGVyZmFjZShtdXNiLVxcdTAwM2VpbnRlcmZhY2UpO1xcbiA1NDM6XFx0fVxcbiA1NDQ6XFx0XFxuIDU0NTpcXHRzdGF0aWMgdm9pZCBtbTgxeF91c2JfY2xhaW1fYnVzKHN0cnVjdCBtbTgxeCAqbW9ycylcXG4gNTQ2OlxcdHtcXG4gNTQ3OlxcdFxcdHN0cnVjdCBtbTgxeF91c2IgKm11c2IgPSAoc3RydWN0IG1tODF4X3VzYiAqKW1vcnMtXFx1MDAzZWRydl9wcml2O1xcbiA1NDg6XFx0XFxuIDU0OTpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZtdXNiLVxcdTAwM2VidXNfbG9jayk7XFxuIDU1MDpcXHR9XFxuIDU1MTpcXHRcXG4gNTUyOlxcdHN0YXRpYyB2b2lkIG1tODF4X3VzYl9yZWxlYXNlX2J1cyhzdHJ1Y3QgbW04MXggKm1vcnMpXFxuIDU1MzpcXHR7XFxuIDU1NDpcXHRcXHRzdHJ1Y3QgbW04MXhfdXNiICptdXNiID0gKHN0cnVjdCBtbTgxeF91c2IgKiltb3JzLVxcdTAwM2VkcnZfcHJpdjtcXG4gNTU1OlxcdFxcbiA1NTY6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZtdXNiLVxcdTAwM2VidXNfbG9jayk7XFxuIDU1NzpcXHR9XFxuIDU1ODpcXHRcXG4gNTU5OlxcdHN0YXRpYyB2b2lkIG1tODF4X3VzYl9zZXRfaXJxKHN0cnVjdCBtbTgxeCAqbW9ycywgYm9vbCBlbmFibGUpXFxuIDU2MDpcXHR7XFxuIDU2MTpcXHR9XFxuIDU2MjpcXHRcXG4gNTYzOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbW04MXhfYnVzX29wcyBtbTgxeF91c2Jfb3BzID0ge1xcbiA1NjQ6XFx0XFx0LmRtX3JlYWQgPSBtbTgxeF91c2JfZG1fcmVhZCxcXG4gNTY1OlxcdFxcdC5kbV93cml0ZSA9IG1tODF4X3VzYl9kbV93cml0ZSxcXG4gNTY2OlxcdFxcdC5yZWczMl9yZWFkID0gbW04MXhfdXNiX3JlZzMyX3JlYWQsXFxuIDU2NzpcXHRcXHQucmVnMzJfd3JpdGUgPSBtbTgxeF91c2JfcmVnMzJfd3JpdGUsXFxuIDU2ODpcXHRcXHQuZGlnaXRhbF9yZXNldCA9IG1tODF4X3VzYl9uZHJfcmVzZXQsXFxuIDU2OTpcXHRcXHQuc2V0X2J1c19lbmFibGUgPSBtbTgxeF91c2JfYnVzX2VuYWJsZSxcXG4gNTcwOlxcdFxcdC5jbGFpbSA9IG1tODF4X3VzYl9jbGFpbV9idXMsXFxuIDU3MTpcXHRcXHQucmVsZWFzZSA9IG1tODF4X3VzYl9yZWxlYXNlX2J1cyxcXG4gNTcyOlxcdFxcdC5zZXRfaXJxID0gbW04MXhfdXNiX3NldF9pcnEsXFxuIDU3MzpcXHRcXHQuYnVsa19hbGlnbm1lbnQgPSBNTTgxWF9CVVNfREVGQVVMVF9CVUxLX0FMSUdOTUVOVCxcXG4gNTc0OlxcdH07XFxuIDU3NTpcXHRcXG4gNTc2OlxcdHN0YXRpYyBpbnQgbW04MXhfdXNiX2RldGVjdF9lbmRwb2ludHMoc3RydWN0IG1tODF4ICptb3JzLFxcbiA1Nzc6XFx0XFx0XFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuIDU3ODpcXHR7XFxuIDU3OTpcXHRcXHRpbnQgcmV0O1xcbiA1ODA6XFx0XFx0dW5zaWduZWQgaW50IGk7XFxuIDU4MTpcXHRcXHRzdHJ1Y3QgbW04MXhfdXNiICptdXNiID0gKHN0cnVjdCBtbTgxeF91c2IgKiltb3JzLVxcdTAwM2VkcnZfcHJpdjtcXG4gNTgyOlxcdFxcdHN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciAqZXBfZGVzYztcXG4gNTgzOlxcdFxcdHN0cnVjdCB1c2JfaG9zdF9pbnRlcmZhY2UgKmludGZfZGVzYyA9IGludGYtXFx1MDAzZWN1cl9hbHRzZXR0aW5nO1xcbiA1ODQ6XFx0XFxuIDU4NTpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgaW50Zl9kZXNjLVxcdTAwM2VkZXNjLmJOdW1FbmRwb2ludHM7IGkrKykge1xcbiA1ODY6XFx0XFx0XFx0ZXBfZGVzYyA9IFxcdTAwMjZpbnRmX2Rlc2MtXFx1MDAzZWVuZHBvaW50W2ldLmRlc2M7XFxuIDU4NzpcXHRcXG4gNTg4OlxcdFxcdFxcdGlmICh1c2JfZW5kcG9pbnRfaXNfYnVsa19pbihlcF9kZXNjKSkge1xcbiA1ODk6XFx0XFx0XFx0XFx0aWYgKCFtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1JEXS5hZGRyKSB7XFxuIDU5MDpcXHRcXHRcXHRcXHRcXHRtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1JEXS5hZGRyID1cXG4gNTkxOlxcdFxcdFxcdFxcdFxcdFxcdHVzYl9lbmRwb2ludF9udW0oZXBfZGVzYyk7XFxuIDU5MjpcXHRcXHRcXHRcXHRcXHRtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1JEXS5zaXplID1cXG4gNTkzOlxcdFxcdFxcdFxcdFxcdFxcdHVzYl9lbmRwb2ludF9tYXhwKGVwX2Rlc2MpO1xcbiA1OTQ6XFx0XFx0XFx0XFx0fSBlbHNlIGlmICghbXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX1JFR19SRF0uYWRkcikge1xcbiA1OTU6XFx0XFx0XFx0XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX1JFR19SRF0uYWRkciA9XFxuIDU5NjpcXHRcXHRcXHRcXHRcXHRcXHR1c2JfZW5kcG9pbnRfbnVtKGVwX2Rlc2MpO1xcbiA1OTc6XFx0XFx0XFx0XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX1JFR19SRF0uc2l6ZSA9XFxuIDU5ODpcXHRcXHRcXHRcXHRcXHRcXHR1c2JfZW5kcG9pbnRfbWF4cChlcF9kZXNjKTtcXG4gNTk5OlxcdFxcdFxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjE6Mjk6MTQuNzEwNTA4NzMxWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwODU3NDYyMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aGlua2luZyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBtbTgxeF91c2JfcHJvYmUgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgbW04MXhfdXNiX3Byb2JlYCBpbiBgdXNiLmNgLiBTb3VuZHMgbGlrZSB0aGUgcHJvYmUgZnVuY3Rpb24gZm9yIGEgVVNCIGRldmljZSwgbGlrZWx5IGFuIG1tODF4LWJhc2VkIGRldmljZS4gSSdtIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgdG8gbGluZXMgNjAwLTcyMC4gVGhhdCByYW5nZSB1c3VhbGx5IGVuY29tcGFzc2VzIGEgc2lnbmlmaWNhbnQgcG9ydGlvbiBvZiB0aGUgcHJvYmUncyBjb3JlIGxvZ2ljLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBkZXZpY2UgSUQgbWF0Y2hpbmcsIHJlc291cmNlIGFsbG9jYXRpb24gKGlmIHJlcXVpcmVkKSwgZHJpdmVyIGJpbmRpbmcsIGFuZCBwb3NzaWJseSBzb21lIGluaXRpYWwgZGV2aWNlIHNldHVwLiBJJ20gaG9waW5nIGl0J3Mgd2VsbC1jb21tZW50ZWQsIGJ1dCBldmVuIGlmIGl0J3Mgbm90LCBJJ20gdXNlZCB0byBpbmZlcnJpbmcgdGhlIGNvZGUgZmxvdyBmcm9tIHRoZSBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbiBjYWxscy4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODI3MiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjE6Mjk6MTYuNzk2MjU4NDYyWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzEwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3VzYi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwMCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2MDA6XFx0XFx0XFx0fSBlbHNlIGlmICh1c2JfZW5kcG9pbnRfaXNfYnVsa19vdXQoZXBfZGVzYykpIHtcXG4gNjAxOlxcdFxcdFxcdFxcdGlmICghbXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9XUl0uYWRkcikge1xcbiA2MDI6XFx0XFx0XFx0XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9XUl0uYWRkciA9XFxuIDYwMzpcXHRcXHRcXHRcXHRcXHRcXHR1c2JfZW5kcG9pbnRfbnVtKGVwX2Rlc2MpO1xcbiA2MDQ6XFx0XFx0XFx0XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9XUl0uc2l6ZSA9XFxuIDYwNTpcXHRcXHRcXHRcXHRcXHRcXHR1c2JfZW5kcG9pbnRfbWF4cChlcF9kZXNjKTtcXG4gNjA2OlxcdFxcdFxcdFxcdH0gZWxzZSBpZiAoIW11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9SRUdfV1JdLmFkZHIpIHtcXG4gNjA3OlxcdFxcdFxcdFxcdFxcdG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9SRUdfV1JdLmFkZHIgPVxcbiA2MDg6XFx0XFx0XFx0XFx0XFx0XFx0dXNiX2VuZHBvaW50X251bShlcF9kZXNjKTtcXG4gNjA5OlxcdFxcdFxcdFxcdFxcdG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9SRUdfV1JdLnNpemUgPVxcbiA2MTA6XFx0XFx0XFx0XFx0XFx0XFx0dXNiX2VuZHBvaW50X21heHAoZXBfZGVzYyk7XFxuIDYxMTpcXHRcXHRcXHRcXHR9XFxuIDYxMjpcXHRcXHRcXHR9IGVsc2UgaWYgKHVzYl9lbmRwb2ludF9pc19pbnRfaW4oZXBfZGVzYykpIHtcXG4gNjEzOlxcdFxcdFxcdFxcdG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9JTlRdLmFkZHIgPVxcbiA2MTQ6XFx0XFx0XFx0XFx0XFx0dXNiX2VuZHBvaW50X251bShlcF9kZXNjKTtcXG4gNjE1OlxcdFxcdFxcdFxcdG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9JTlRdLnNpemUgPVxcbiA2MTY6XFx0XFx0XFx0XFx0XFx0dXNiX2VuZHBvaW50X21heHAoZXBfZGVzYyk7XFxuIDYxNzpcXHRcXHRcXHR9XFxuIDYxODpcXHRcXHR9XFxuIDYxOTpcXHRcXG4gNjIwOlxcdFxcdGRldl9kYmcobW9ycy1cXHUwMDNlZGV2LCBcXFwiXFxcXHRNZW1vcnkgRW5kcG9pbnQgSU4gJXMgZGV0ZWN0ZWQ6ICV1IHNpemUgJXVcXFwiLFxcbiA2MjE6XFx0XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9SRF0uYWRkciA/IFxcXCJcXFwiIDogXFxcIm5vdFxcXCIsXFxuIDYyMjpcXHRcXHRcXHRtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1JEXS5hZGRyLFxcbiA2MjM6XFx0XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9SRF0uc2l6ZSk7XFxuIDYyNDpcXHRcXHRkZXZfZGJnKG1vcnMtXFx1MDAzZWRldiwgXFxcIlxcXFx0TWVtb3J5IEVuZHBvaW50IE9VVCAlcyBkZXRlY3RlZDogJXUgc2l6ZSAldVxcXCIsXFxuIDYyNTpcXHRcXHRcXHRtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS5hZGRyID8gXFxcIlxcXCIgOiBcXFwibm90XFxcIixcXG4gNjI2OlxcdFxcdFxcdG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLmFkZHIsXFxuIDYyNzpcXHRcXHRcXHRtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS5zaXplKTtcXG4gNjI4OlxcdFxcdGRldl9kYmcobW9ycy1cXHUwMDNlZGV2LCBcXFwiXFxcXHRSZWdpc3RlciBFbmRwb2ludCBJTiAlcyBkZXRlY3RlZDogJXVcXFwiLFxcbiA2Mjk6XFx0XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX1JFR19SRF0uYWRkciA/IFxcXCJcXFwiIDogXFxcIm5vdFxcXCIsXFxuIDYzMDpcXHRcXHRcXHRtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfUkVHX1JEXS5hZGRyKTtcXG4gNjMxOlxcdFxcdGRldl9kYmcobW9ycy1cXHUwMDNlZGV2LCBcXFwiXFxcXHRSZWdpc3RlciBFbmRwb2ludCBPVVQgJXMgZGV0ZWN0ZWQ6ICV1XFxcIixcXG4gNjMyOlxcdFxcdFxcdG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9SRUdfV1JdLmFkZHIgPyBcXFwiXFxcIiA6IFxcXCJub3RcXFwiLFxcbiA2MzM6XFx0XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX1JFR19XUl0uYWRkcik7XFxuIDYzNDpcXHRcXHRkZXZfZGJnKG1vcnMtXFx1MDAzZWRldiwgXFxcIlxcXFx0U3RhdHMgSU4gZW5kcG9pbnQgJXMgZGV0ZWN0ZWQ6ICV1XFxcIixcXG4gNjM1OlxcdFxcdFxcdG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9JTlRdLmFkZHIgPyBcXFwiXFxcIiA6IFxcXCJub3RcXFwiLFxcbiA2MzY6XFx0XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0lOVF0uYWRkcik7XFxuIDYzNzpcXHRcXG4gNjM4OlxcdFxcdC8qIFZlcmlmeSB3ZSBoYXZlIGFuIElOIGFuZCBPVVQgKi9cXG4gNjM5OlxcdFxcdGlmICghKG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fUkRdLmFkZHIgXFx1MDAyNlxcdTAwMjZcXG4gNjQwOlxcdFxcdCAgICAgIG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLmFkZHIpKVxcbiA2NDE6XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuIDY0MjpcXHRcXG4gNjQzOlxcdFxcdC8qIFZlcmlmeSB0aGUgc3RhdHMgTU04MVhfRVBfSU5UIGlzIGRldGVjdGVkICovXFxuIDY0NDpcXHRcXHRpZiAoIW11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9JTlRdLmFkZHIpXFxuIDY0NTpcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gNjQ2OlxcdFxcbiA2NDc6XFx0XFx0LyogVmVyaWZ5IG1pbmltdW0gaW50ZXJydXB0IHN0YXR1cyByZWFkICovXFxuIDY0ODpcXHRcXHRpZiAobXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0lOVF0uc2l6ZSBcXHUwMDNjIDgpXFxuIDY0OTpcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gNjUwOlxcdFxcbiA2NTE6XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0NNRF0udXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTtcXG4gNjUyOlxcdFxcdGlmICghbXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0NNRF0udXJiKSB7XFxuIDY1MzpcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbiA2NTQ6XFx0XFx0XFx0Z290byBlcnJfZXA7XFxuIDY1NTpcXHRcXHR9XFxuIDY1NjpcXHRcXG4gNjU3OlxcdFxcdG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fUkRdLnVyYiA9IHVzYl9hbGxvY191cmIoMCwgR0ZQX0tFUk5FTCk7XFxuIDY1ODpcXHRcXHRpZiAoIW11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fUkRdLnVyYikge1xcbiA2NTk6XFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4gNjYwOlxcdFxcdFxcdGdvdG8gZXJyX2VwO1xcbiA2NjE6XFx0XFx0fVxcbiA2NjI6XFx0XFxuIDY2MzpcXHRcXHRtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS51cmIgPSB1c2JfYWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpO1xcbiA2NjQ6XFx0XFx0aWYgKCFtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS51cmIpIHtcXG4gNjY1OlxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuIDY2NjpcXHRcXHRcXHRnb3RvIGVycl9lcDtcXG4gNjY3OlxcdFxcdH1cXG4gNjY4OlxcdFxcbiA2Njk6XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9SRF0uYnVmZmVyID1cXG4gNjcwOlxcdFxcdFxcdGttYWxsb2MoVVNCX01BWF9UUkFOU0ZFUl9TSVpFLCBHRlBfS0VSTkVMKTtcXG4gNjcxOlxcdFxcdGlmICghbXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9SRF0uYnVmZmVyKSB7XFxuIDY3MjpcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbiA2NzM6XFx0XFx0XFx0Z290byBlcnJfZXA7XFxuIDY3NDpcXHRcXHR9XFxuIDY3NTpcXHRcXG4gNjc2OlxcdFxcdG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLmJ1ZmZlciA9XFxuIDY3NzpcXHRcXHRcXHRrbWFsbG9jKFVTQl9NQVhfVFJBTlNGRVJfU0laRSwgR0ZQX0tFUk5FTCk7XFxuIDY3ODpcXHRcXHRpZiAoIW11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLmJ1ZmZlcikge1xcbiA2Nzk6XFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4gNjgwOlxcdFxcdFxcdGdvdG8gZXJyX2VwO1xcbiA2ODE6XFx0XFx0fVxcbiA2ODI6XFx0XFxuIDY4MzpcXHRcXHRtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXS5idWZmZXIgPSB1c2JfYWxsb2NfY29oZXJlbnQoXFxuIDY4NDpcXHRcXHRcXHRtdXNiLVxcdTAwM2V1ZGV2LCBzaXplb2Yoc3RydWN0IG1tODF4X3VzYl9jb21tYW5kKSwgR0ZQX0tFUk5FTCxcXG4gNjg1OlxcdFxcdFxcdFxcdTAwMjZtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXS51cmItXFx1MDAzZXRyYW5zZmVyX2RtYSk7XFxuIDY4NjpcXHRcXG4gNjg3OlxcdFxcdGlmICghbXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0NNRF0uYnVmZmVyKSB7XFxuIDY4ODpcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbiA2ODk6XFx0XFx0XFx0Z290byBlcnJfZXA7XFxuIDY5MDpcXHRcXHR9XFxuIDY5MTpcXHRcXG4gNjkyOlxcdFxcdC8qIEFzc2lnbiBjb21tYW5kIHRvIG1lbW9yeSBvdXQgZW5kIHBvaW50ICovXFxuIDY5MzpcXHRcXHRtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXS5hZGRyID1cXG4gNjk0OlxcdFxcdFxcdG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLmFkZHI7XFxuIDY5NTpcXHRcXHRtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXS5zaXplID1cXG4gNjk2OlxcdFxcdFxcdG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLnNpemU7XFxuIDY5NzpcXHRcXG4gNjk4OlxcdFxcdHJldHVybiAwO1xcbiA2OTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI5OjE2Ljc5NjM3MzE0MloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTQ0NzQyMzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIFVTQiBQcm9iZSBGdW5jdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgYmFjayBpbi4gSSdtIGZvY3VzaW5nIG9uIHRoZSBgbW04MXhfdXNiX3Byb2JlYCBmdW5jdGlvbiBub3cuIEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCBwcm9iZSBmdW5jdGlvbnMgYXJlIGNyaXRpY2FsIGZvciBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIGFyZSBvZnRlbiB0aGUgZW50cnkgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGEgZHJpdmVyIGludGVyYWN0cyB3aXRoIGhhcmR3YXJlLiBJJ20gbm90aW5nIHRoZSBzcGVjaWZpYyBsb2NhdGlvbiwgYXJvdW5kIGxpbmUgNzAwLiBUaGlzIGlzIGEgY29tbW9uIHBhdHRlcm4sIGFuZCBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGRldGFpbGVkIGFuYWx5c2lzLiBJJ2xsIG5lZWQgdG8gbWV0aWN1bG91c2x5IGV4YW1pbmUgdGhlIGNvZGUgZmxvdyBmcm9tIGhlcmUsIG1hcHBpbmcgdGhlIHN0ZXBzIHRoZSBmdW5jdGlvbiB0YWtlcyB0byBkZXRlY3QsIGNvbmZpZ3VyZSwgYW5kIHVsdGltYXRlbHkgYWN0aXZhdGUgdGhlIFVTQiBkZXZpY2UuIEkgd2lsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIGFuZCB0aGUgcG90ZW50aWFsIGVycm9yIGNvbmRpdGlvbnMgdGhhdCBtaWdodCBhcmlzZS4gSSB3aWxsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGluZm9ybWF0aW9uIGlzIHBhc3NlZCBpbiwgd2hhdCBmdW5jdGlvbnMgYXJlIGNhbGxlZCwgYW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZSBkZXZpY2UgYmVjb21lcyBmdWxseSBvcGVyYXRpb25hbC4gSSBrbm93IHRoZSBkZXZpbCBpcyBvZnRlbiBpbiB0aGUgZGV0YWlscyB3aGVuIGRlYWxpbmcgd2l0aCBVU0IsIHNvIGEgdGhvcm91Z2gsIGxpbmUtYnktbGluZSBpbnNwZWN0aW9uIGlzIGluIG9yZGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDQ2OCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjE6Mjk6MTguOTQxMTE4NDRaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1OTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzAwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzAwOlxcdGVycl9lcDpcXG4gNzAxOlxcdFxcdGlmIChtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXS51cmIgXFx1MDAyNlxcdTAwMjZcXG4gNzAyOlxcdFxcdCAgICBtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXS5idWZmZXIpXFxuIDcwMzpcXHRcXHRcXHR1c2JfZnJlZV9jb2hlcmVudChcXG4gNzA0OlxcdFxcdFxcdFxcdG11c2ItXFx1MDAzZXVkZXYsIHNpemVvZihzdHJ1Y3QgbW04MXhfdXNiX2NvbW1hbmQpLFxcbiA3MDU6XFx0XFx0XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0NNRF0uYnVmZmVyLFxcbiA3MDY6XFx0XFx0XFx0XFx0bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0NNRF0udXJiLVxcdTAwM2V0cmFuc2Zlcl9kbWEpO1xcbiA3MDc6XFx0XFx0dXNiX2ZyZWVfdXJiKG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fUkRdLnVyYik7XFxuIDcwODpcXHRcXHR1c2JfZnJlZV91cmIobXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX0NNRF0udXJiKTtcXG4gNzA5OlxcdFxcdHVzYl9mcmVlX3VyYihtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXS51cmIpO1xcbiA3MTA6XFx0XFx0a2ZyZWUobXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9SRF0uYnVmZmVyKTtcXG4gNzExOlxcdFxcdGtmcmVlKG11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9NRU1fV1JdLmJ1ZmZlcik7XFxuIDcxMjpcXHRcXG4gNzEzOlxcdFxcdHJldHVybiByZXQ7XFxuIDcxNDpcXHR9XFxuIDcxNTpcXHRcXG4gNzE2OlxcdHN0YXRpYyB2b2lkIG1tODF4X3VyYl9jbGVhbnVwKHN0cnVjdCBtbTgxeCAqbW9ycylcXG4gNzE3OlxcdHtcXG4gNzE4OlxcdFxcdHN0cnVjdCBtbTgxeF91c2IgKm11c2IgPSAoc3RydWN0IG1tODF4X3VzYiAqKW1vcnMtXFx1MDAzZWRydl9wcml2O1xcbiA3MTk6XFx0XFx0c3RydWN0IG1tODF4X3VzYl9lbmRwb2ludCAqaW50X2VwID0gXFx1MDAyNm11c2ItXFx1MDAzZWVuZHBvaW50c1tNTTgxWF9FUF9JTlRdO1xcbiA3MjA6XFx0XFx0c3RydWN0IG1tODF4X3VzYl9lbmRwb2ludCAqcmRfZXAgPSBcXHUwMDI2bXVzYi1cXHUwMDNlZW5kcG9pbnRzW01NODFYX0VQX01FTV9SRF07XFxuIDcyMTpcXHRcXHRzdHJ1Y3QgbW04MXhfdXNiX2VuZHBvaW50ICp3cl9lcCA9IFxcdTAwMjZtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfTUVNX1dSXTtcXG4gNzIyOlxcdFxcdHN0cnVjdCBtbTgxeF91c2JfZW5kcG9pbnQgKmNtZF9lcCA9IFxcdTAwMjZtdXNiLVxcdTAwM2VlbmRwb2ludHNbTU04MVhfRVBfQ01EXTtcXG4gNzIzOlxcdFxcbiA3MjQ6XFx0XFx0dXNiX2tpbGxfdXJiKHJkX2VwLVxcdTAwM2V1cmIpO1xcbiA3MjU6XFx0XFx0dXNiX2tpbGxfdXJiKHdyX2VwLVxcdTAwM2V1cmIpO1xcbiA3MjY6XFx0XFx0dXNiX2tpbGxfdXJiKGNtZF9lcC1cXHUwMDNldXJiKTtcXG4gNzI3OlxcdFxcbiA3Mjg6XFx0XFx0aWYgKGludF9lcC1cXHUwMDNldXJiKVxcbiA3Mjk6XFx0XFx0XFx0dXNiX2ZyZWVfY29oZXJlbnQobXVzYi1cXHUwMDNldWRldiwgTU04MVhfRVBfSU5UX0JVRkZFUl9TSVpFLFxcbiA3MzA6XFx0XFx0XFx0XFx0XFx0ICBpbnRfZXAtXFx1MDAzZWJ1ZmZlciwgaW50X2VwLVxcdTAwM2V1cmItXFx1MDAzZXRyYW5zZmVyX2RtYSk7XFxuIDczMTpcXHRcXG4gNzMyOlxcdFxcdGlmIChjbWRfZXAtXFx1MDAzZXVyYilcXG4gNzMzOlxcdFxcdFxcdHVzYl9mcmVlX2NvaGVyZW50KG11c2ItXFx1MDAzZXVkZXYsIHNpemVvZihzdHJ1Y3QgbW04MXhfdXNiX2NvbW1hbmQpLFxcbiA3MzQ6XFx0XFx0XFx0XFx0XFx0ICBjbWRfZXAtXFx1MDAzZWJ1ZmZlciwgY21kX2VwLVxcdTAwM2V1cmItXFx1MDAzZXRyYW5zZmVyX2RtYSk7XFxuIDczNTpcXHRcXG4gNzM2OlxcdFxcdGtmcmVlKHdyX2VwLVxcdTAwM2VidWZmZXIpO1xcbiA3Mzc6XFx0XFx0a2ZyZWUocmRfZXAtXFx1MDAzZWJ1ZmZlcik7XFxuIDczODpcXHRcXG4gNzM5OlxcdFxcdHVzYl9mcmVlX3VyYihpbnRfZXAtXFx1MDAzZXVyYik7XFxuIDc0MDpcXHRcXHR1c2JfZnJlZV91cmIod3JfZXAtXFx1MDAzZXVyYik7XFxuIDc0MTpcXHRcXHR1c2JfZnJlZV91cmIocmRfZXAtXFx1MDAzZXVyYik7XFxuIDc0MjpcXHRcXHR1c2JfZnJlZV91cmIoY21kX2VwLVxcdTAwM2V1cmIpO1xcbiA3NDM6XFx0fVxcbiA3NDQ6XFx0XFxuIDc0NTpcXHRzdGF0aWMgaW50IG1tODF4X3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxcbiA3NDY6XFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbiA3NDc6XFx0e1xcbiA3NDg6XFx0XFx0aW50IHJldDtcXG4gNzQ5OlxcdFxcdHN0cnVjdCBtbTgxeCAqbW9ycztcXG4gNzUwOlxcdFxcdHN0cnVjdCBtbTgxeF91c2IgKm11c2I7XFxuIDc1MTpcXHRcXG4gNzUyOlxcdFxcdG1vcnMgPSBtbTgxeF9jb3JlX2FsbG9jKHNpemVvZigqbXVzYiksIFxcdTAwMjZpbnRlcmZhY2UtXFx1MDAzZWRldik7XFxuIDc1MzpcXHRcXHRpZiAoIW1vcnMpXFxuIDc1NDpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gNzU1OlxcdFxcbiA3NTY6XFx0XFx0bW9ycy1cXHUwMDNlYnVzX29wcyA9IFxcdTAwMjZtbTgxeF91c2Jfb3BzO1xcbiA3NTc6XFx0XFx0bW9ycy1cXHUwMDNlYnVzX3R5cGUgPSBNTTgxWF9CVVNfVFlQRV9VU0I7XFxuIDc1ODpcXHRcXG4gNzU5OlxcdFxcdG11c2IgPSAoc3RydWN0IG1tODF4X3VzYiAqKW1vcnMtXFx1MDAzZWRydl9wcml2O1xcbiA3NjA6XFx0XFx0bXVzYi1cXHUwMDNldWRldiA9IHVzYl9nZXRfZGV2KGludGVyZmFjZV90b191c2JkZXYoaW50ZXJmYWNlKSk7XFxuIDc2MTpcXHRcXHRtdXNiLVxcdTAwM2VpbnRlcmZhY2UgPSB1c2JfZ2V0X2ludGYoaW50ZXJmYWNlKTtcXG4gNzYyOlxcdFxcbiA3NjM6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2bXVzYi1cXHUwMDNlbG9jayk7XFxuIDc2NDpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZtdXNiLVxcdTAwM2VidXNfbG9jayk7XFxuIDc2NTpcXHRcXHRpbml0X3dhaXRxdWV1ZV9oZWFkKFxcdTAwMjZtdXNiLVxcdTAwM2Vyd19pbl93YWl0KTtcXG4gNzY2OlxcdFxcdHVzYl9zZXRfaW50ZmRhdGEoaW50ZXJmYWNlLCBtb3JzKTtcXG4gNzY3OlxcdFxcbiA3Njg6XFx0XFx0cmV0ID0gbW04MXhfdXNiX2RldGVjdF9lbmRwb2ludHMobW9ycywgaW50ZXJmYWNlKTtcXG4gNzY5OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiA3NzA6XFx0XFx0XFx0Z290byBlcnJfY29yZV9mcmVlO1xcbiA3NzE6XFx0XFxuIDc3MjpcXHRcXHRzZXRfYml0KE1NODFYX1VTQl9GTEFHX0FUVEFDSEVELCBcXHUwMDI2bXVzYi1cXHUwMDNlZmxhZ3MpO1xcbiA3NzM6XFx0XFxuIDc3NDpcXHRcXHRyZXQgPSBtbTgxeF9jb3JlX2luaXQobW9ycyk7XFxuIDc3NTpcXHRcXHRpZiAocmV0KVxcbiA3NzY6XFx0XFx0XFx0Z290byBlcnJfdXJiX2NsZWFudXA7XFxuIDc3NzpcXHRcXG4gNzc4OlxcdFxcdElOSVRfV09SSyhcXHUwMDI2bW9ycy1cXHUwMDNldXNiX2lycV93b3JrLCBtbTgxeF91c2JfaXJxX3dvcmspO1xcbiA3Nzk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI5OjE4Ljk0MTIyNTg2WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU5NzIxODg2MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBtbTgxeCBVU0IgRHJpdmVyIGZvciBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0aWVzKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYG1tODF4X3VzYl9wcm9iZWAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIGhvdyBpdCBpbnRlcmZhY2VzIHdpdGggdGhlIFVTQiBkZXZpY2UsIHBhcnRpY3VsYXJseSBmb2N1c2luZyBvbiB0aGUgcGFja2V0IGhhbmRsaW5nIHdpdGhpbiB0aGlzIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBtbTgxeF95YXBzX2h3X3JlYWRfcGt0c2AgYW5kIGBtbTgxeF9yZWFkX3BrdHNfaF9pc192YWxpZF9kZWxpbWAgYXJlIGRvaW5nLCBhcyB0aG9zZSBhcmUgb2Z0ZW4gc3BvdHMgdG8gbG9vay5cblxuTG9va2luZyBhdCBgbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW1gLCB0aGVyZSdzIHRoZSBzdGFuZGFyZCBDUkMgY2hlY2ssIHBhY2tldCBzaXplIGFuZCBwYWRkaW5nIGNoZWNrcywgYW5kIGEgbmV3IGNvbmRpdGlvbiwgdGhlIGNoZWNrIGZvciBgcGt0X3NpemUgXHUwMDNjPSBZQVBTX1JFU0VSVkVEX1BBR0VfU0laRWAsIGEgY2hhbmdlIHdoaWNoIGxvb2tzIGxpa2UgYSByZWNlbnQgZml4LiBUaGUgcGFkZGluZyBjYWxjdWxhdGlvbnMgbG9vayB0eXBpY2FsLCBhbmQgdGhlIHNpemUgY2hlY2tzIGFyZSB0aGVyZS5cblxuVGhlbiwgaW5zcGVjdGluZyBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgLCBJIHNlZSB0aGUgZXhwZWN0ZWQgY2hlY2tzIGZvciB0aGUgbnVtYmVyIG9mIHBhY2tldHMgYW5kIHJlbWFpbmluZyBieXRlcy4gVGhlcmUncyBhbHNvIHRoaXMgbmV3IGFsaWdubWVudCBjaGVjayBgIUlTX0FMSUdORUQoYnl0ZXNfcmVtYWluaW5nLCBzaXplb2YodTMyKSlgLCB3aGljaCwgaWYgdHJpZ2dlcmVkLCB3aWxsIHJlc3VsdCBpbiBhbiAtRUlPLCBhbmQgdGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuLiBUaGlzIGNvdWxkIHNpZ25hbCBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5LlxuXG5Ob3csIGhvdyBkb2VzIHRoaXMgYWxsIGZpdCB0b2dldGhlcj8gYG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzYCBpcyBwYXJ0IG9mIGBtbTgxeF95YXBzX2h3X29wcy5yZWFkX3BrdHNgLiBJdCdzIGNhbGxlZCBieSBgbW04MXhfeWFwc19yZWFkX3BrdHNgLCB3aGljaCBpcyB0aGVuIGNhbGxlZCBieSBgbW04MXhfeWFwc19yeF9oYW5kbGVyYCB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwcy5jYC4gVGhpcyBgcnhfaGFuZGxlcmAgaXMgY2FsbGVkIGJ5IGBtbTgxeF95YXBzX3dvcmtgLCB3aGljaCBpcyB0cmlnZ2VyZWQgYnkgdGhlIEhJRiB3b3JrIHF1ZXVlIHRvIGhhbmRsZSBSWCBldmVudHMuIFNvLCB0aGlzIGlzIHRoZSBjb3JlIG9mIHBhY2tldCByZWNlcHRpb24gZm9yIHRoaXMgZHJpdmVyLlxuXG5UaGUgbmV4dCBwb2ludCBJIG5lZWQgdG8gY29uc2lkZXIgaXMsIGFyZSB3ZSBhYmxlIHRvIHJlYWNoIHRoaXMgZHJpdmVyPyBTeXprYWxsZXIgY2FuIGVtdWxhdGUgVVNCIHdpcmVsZXNzIGRyaXZlcnMuIFRoZXkgdXNlIHJhdyBVU0IgZ2FkZ2V0IGVtdWxhdGlvbiB3aXRoIGNhbGxzIGxpa2UgYHN5el91c2JfY29ubmVjdGAuIFNvIHllcywgdGhpcyBpcyBzb21ldGhpbmcgd2UgY2FuIGZ1enouXG5cbkxldCdzIGxvb2sgYXQgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIGZvciB0aGlzIGRyaXZlci4gSW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvS2NvbmZpZ2AsIEkgc2VlIGBNTTgxWF9VU0JgIHdoaWNoIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYFVTQmAuIEFsc28gdGhlcmUncyBgV0xBTl9WRU5ET1JfTU9SU0VNSUNST2AgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZ2AsIHRoYXQgaXMgZGVwZW5kZW50IG9uIGBXTEFOYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGFyZSBzZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyMjM2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI5OjI0LjkxMzQxNzc4NVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODU4OTkzNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiV0xBTl9WRU5ET1JfTU9SU0VNSUNST1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvTWFrZWZpbGU9MTQ9b2JqLSQoQ09ORklHX1dMQU5fVkVORE9SX01JQ1JPQ0hJUCkgKz0gbWljcm9jaGlwL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlOjE1Om9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPKSArPSBtb3JzZW1pY3JvL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlLTE2LW9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9OWFApICs9IG54cC9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZzoyOmNvbmZpZyBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnLTMtXFx0Ym9vbCBcXFwiTW9yc2UgTWljcm8gZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0xMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWc6MTM6aWYgV0xBTl9WRU5ET1JfTU9SU0VNSUNST1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZy0xNC1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWc6MTU6ZW5kaWYgIyBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI5OjI0Ljk5OTMyMjgwM1oiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNzkyMDI3NzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipFeGFtaW5pbmcgdGhlIE1vcnNlIE1pY3JvIEtjb25maWcgRmlsZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhhdCBNb3JzZSBNaWNybyBXaS1GaSBkcml2ZXIuIExldCdzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZ2AuIFRoaXMgS2NvbmZpZyBmaWxlIGlzIHdoZXJlIGFsbCB0aGUgaW1wb3J0YW50IGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgZHJpdmVyIGFyZSBkZWZpbmVkLiBJIGV4cGVjdCB0byBzZWUgdGhpbmdzIGxpa2UgdGhlIGFiaWxpdHkgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIGRyaXZlciBpdHNlbGYsIHBlcmhhcHMgb3B0aW9ucyBmb3IgZGlmZmVyZW50IGhhcmR3YXJlIHZhcmlhbnRzIGlmIHRoZXJlIGFyZSBhbnksIGxpa2VseSBkZWJ1ZyBmbGFncywgYW5kIG1heWJlIGV2ZW4gY2hvaWNlcyByZWxhdGVkIHRvIGZpcm13YXJlIGxvYWRpbmcgb3Igc3BlY2lmaWMgcHJvdG9jb2wgZmVhdHVyZXMuIEl0J3MgYSBjcml0aWNhbCBzdGFydGluZyBwb2ludCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBpcyBjb250cm9sbGVkIGFuZCB3aGF0IHNldHRpbmdzIEkgY2FuIHR3ZWFrLiBJIHdhbnQgdG8gcXVpY2tseSBncmFzcCB0aGUgaGlnaC1sZXZlbCBjb25maWd1cmF0aW9uIHN0cnVjdHVyZSB0byBzZWUgaWYgdGhlcmUncyBhbnl0aGluZyBJIGNhbiBpbW1lZGlhdGVseSBsZXZlcmFnZSB0byBhZGRyZXNzIFtpbnNlcnQgeW91ciBwYXJ0aWN1bGFyIGlzc3VlIGhlcmUsIGUuZy4gXCJvcHRpbWl6ZSBwZXJmb3JtYW5jZVwiIG9yIFwicmVzb2x2ZSB0aGF0IHJlcG9ydGVkIGNvbmZsaWN0XCJdLiBGcm9tIHRoZXJlIEkgd2lsbCB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0byBkZXRlcm1pbmUgdGhlIG5leHQgcGhhc2Ugb2YgZGVidWdnaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDE5NywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI5OjI3Ljc5MTM1Mjc5MloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXFxuICAgMzpcXHRcXHRib29sIFxcXCJNb3JzZSBNaWNybyBkZXZpY2VzXFxcIlxcbiAgIDQ6XFx0XFx0ZGVmYXVsdCB5XFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIElmIHlvdSBoYXZlIGEgd2lyZWxlc3MgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXFxuICAgNzpcXHRcXG4gICA4OlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gICA5OlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbCB0aGVcXG4gIDEwOlxcdFxcdCAgcXVlc3Rpb25zIGFib3V0IHRoZXNlIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsIGJlIGFza2VkIGZvclxcbiAgMTE6XFx0XFx0ICB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXFxuICAxMjpcXHRcXG4gIDEzOlxcdGlmIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cXG4gIDE0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9LY29uZmlnXFxcIlxcbiAgMTU6XFx0ZW5kaWYgIyBXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI5OjI3Ljc5MTQxODkyMloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTAzMjY4ODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqSW52ZXN0aWdhdGluZyBXTEFOIENvbmZpZ3VyYXRpb24gaW4gdGhlIEtlcm5lbCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBwYXJlbnQgY29uZmlndXJhdGlvbiBmb3IgYFdMQU5gLiBUaGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGlzIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgcmVsZXZhbnQgZHJpdmVyIGRpcmVjdG9yeS4gU2luY2Ugd2UncmUgZGVhbGluZyB3aXRoIHdpcmVsZXNzIG5ldHdvcmtpbmcsIHRoYXQgd291bGQgYmUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgLiBMZXQncyBuYXZpZ2F0ZSB0aGVyZSBhbmQgdGFrZSBhIGxvb2suIEknbSBleHBlY3RpbmcgdG8gZmluZCBgV0xBTmAgZGVmaW5lZCwgYW5kIG15IGh5cG90aGVzaXMgaXMgdGhhdCBpdCB3aWxsIGJlIGEgcGFyZW50IGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgdGhhdCBnb3Zlcm5zIHRoZSB2YXJpb3VzIHdpcmVsZXNzIG9wdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBoaWVyYXJjaHkgYW5kIGRlcGVuZGVuY2llcywgYW5kIHRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gVGhpcyBpcyBzdGFuZGFyZCBwcm9jZWR1cmUgd2hlbiBJJ20gd29ya2luZyBvbiBrZXJuZWwgY29uZmlndXJhdGlvbnMgYW5kIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGRpZmZlcmVudCBmZWF0dXJlcy4gSSBzaG91bGQgYmUgYWJsZSB0byBxdWlja2x5IGRldGVybWluZSBob3cgYFdMQU5gIGZpdHMgaW50byB0aGUgYmlnZ2VyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NjkyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyOToyOS44OTQ2OTExODFaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MTEwODQ4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb3JzZW1pY3JvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnPTI5PXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZzozMDpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnLTMxLXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL0tjb25maWdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZT0xND1vYmotJChDT05GSUdfV0xBTl9WRU5ET1JfTUlDUk9DSElQKSArPSBtaWNyb2NoaXAvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvTWFrZWZpbGU6MTU6b2JqLSQoQ09ORklHX1dMQU5fVkVORE9SX01PUlNFTUlDUk8pICs9IG1vcnNlbWljcm8vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvTWFrZWZpbGUtMTYtb2JqLSQoQ09ORklHX1dMQU5fVkVORE9SX05YUCkgKz0gbnhwL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnPTEzPWlmIFdMQU5fVkVORE9SX01PUlNFTUlDUk9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWc6MTQ6c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnLTE1LWVuZGlmICMgV0xBTl9WRU5ET1JfTU9SU0VNSUNST1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5oLTE1LSNkZWZpbmUgQkNGX0RBVEFCQVNFX1NJWkUgKDEwMjQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC9mdy5oOjE2OiNkZWZpbmUgTU04MVhfRldfRElSIFxcXCJtb3JzZW1pY3JvL21tODF4XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgvZncuaC0xNy0jZGVmaW5lIE1NODFYX0ZXX0VYVCBcXFwiLmJpblxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjE6Mjk6MzAuMjg1ODA3MTU1WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE2NDgzMDAxNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFdpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHdpcmVsZXNzIGRyaXZlcnMuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIG5hdmlnYXRlIHRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AgZmlsZS4gSSdtIGdvaW5nIHRvIGZvY3VzIG15IGluaXRpYWwgaW52ZXN0aWdhdGlvbiBhcm91bmQgbGluZXMgMjAgdGhyb3VnaCA0MC4gVGhhdCByYW5nZSBpcyB1c3VhbGx5IGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGNvcmUgd2lyZWxlc3MgZHJpdmVyIG9wdGlvbnMgYXJlIHN0cnVjdHVyZWQgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIG9yIGRlZmF1bHRzIG1pZ2h0IGJlIGRlZmluZWQuIEhvcGVmdWxseSwgSSdsbCBiZSBhYmxlIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIHJlbGV2YW50IGtleSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZnJvbSB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTUzMjQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyOTozMS45MzQxMTAwNjFaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMzODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgV2lyZWxlc3MgTEFOIGRldmljZSBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnVjb25maWcgV0xBTlxcbiAgIDc6XFx0XFx0Ym9vbCBcXFwiV2lyZWxlc3MgTEFOXFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiAhUzM5MFxcbiAgIDk6XFx0XFx0ZGVwZW5kcyBvbiBORVRcXG4gIDEwOlxcdFxcdHNlbGVjdCBXSVJFTEVTU1xcbiAgMTE6XFx0XFx0ZGVmYXVsdCB5XFxuICAxMjpcXHRcXHRoZWxwXFxuICAxMzpcXHRcXHQgIFRoaXMgc2VjdGlvbiBjb250YWlucyBhbGwgdGhlIHByZSA4MDIuMTEgYW5kIDgwMi4xMSB3aXJlbGVzc1xcbiAgMTQ6XFx0XFx0ICBkZXZpY2UgZHJpdmVycy4gRm9yIGEgY29tcGxldGUgbGlzdCBvZiBkcml2ZXJzIGFuZCBkb2N1bWVudGF0aW9uXFxuICAxNTpcXHRcXHQgIG9uIHRoZW0gcmVmZXIgdG8gdGhlIHdpcmVsZXNzIHdpa2k6XFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVyc1xcbiAgMTg6XFx0XFxuICAxOTpcXHRpZiBXTEFOXFxuICAyMDpcXHRcXG4gIDIxOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYWRtdGVrL0tjb25maWdcXFwiXFxuICAyMjpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnXFxcIlxcbiAgMjM6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9LY29uZmlnXFxcIlxcbiAgMjQ6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9LY29uZmlnXFxcIlxcbiAgMjU6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9LY29uZmlnXFxcIlxcbiAgMjY6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9LY29uZmlnXFxcIlxcbiAgMjc6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWdcXFwiXFxuICAyODpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdcXFwiXFxuICAyOTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC9LY29uZmlnXFxcIlxcbiAgMzA6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWdcXFwiXFxuICAzMTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnXFxcIlxcbiAgMzI6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9wdXJlbGlmaS9LY29uZmlnXFxcIlxcbiAgMzM6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvS2NvbmZpZ1xcXCJcXG4gIDM0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnXFxcIlxcbiAgMzU6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZ1xcXCJcXG4gIDM2OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL0tjb25maWdcXFwiXFxuICAzNzpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L0tjb25maWdcXFwiXFxuICAzODpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL0tjb25maWdcXFwiXFxuICAzOTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL0tjb25maWdcXFwiXFxuICA0MDpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9LY29uZmlnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyOTozMS45MzQyNDYzNDFaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzI2MTg1NDg4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipWZXJpZnlpbmcgV29ydGhGdXp6aW5nIGZvciB0aGUgTU04MXggV2lyZWxlc3MgRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgbGV0J3MgY29uZmlybSBpZiBmdXp6aW5nIHRoaXMgcGF0Y2ggaXMgd2FycmFudGVkLiBGaXJzdCwgSSBzZWUgdGhlIGNvcmUgY2hhbmdlIGlzIGluIGBtbTgxeF9yZWFkX3BrdHNfaF9pc192YWxpZF9kZWxpbWAgYW5kIGBtbTgxeF95YXBzX2h3X3JlYWRfcGt0c2Agd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmNgIGZpbGUuIFNwZWNpZmljYWxseSwgd2UncmUgbG9va2luZyBhdCBpbnB1dCB2YWxpZGF0aW9uIGxvZ2ljIGJlaW5nIHVwZGF0ZWQg4oCTIGBwa3Rfc2l6ZSA9PSAwYCBpcyBub3cgYHBrdF9zaXplIFx1MDAzYz0gWUFQU19SRVNFUlZFRF9QQUdFX1NJWkVgIGFuZCB0aGVyZSdzIGEgbmV3IGFsaWdubWVudCBjaGVjay4gVGhpcyBpcyBjcnVjaWFsIGFzIGl0IGRpcmVjdGx5IGltcGFjdHMgcGFja2V0IGhhbmRsaW5nLCBhbmQgdmFsaWRhdGlvbiBsb2dpYyBpcyBhIGNsYXNzaWMgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5UaGlzIGRyaXZlciBzdXBwb3J0cyBVU0IgZGV2aWNlcywgd2hpY2ggaXMgZmFudGFzdGljIGJlY2F1c2UgdGhhdCBtZWFucyB3ZSBjYW4gZWFzaWx5IHJlcGxpY2F0ZSB0aGUgZW52aXJvbm1lbnQgd2l0aCBRRU1VIG9yIGV2ZW4gVVNCIFJhdyBHYWRnZXQgc2V0dXAgZm9yIGVmZmVjdGl2ZSBmdXp6aW5nLiBUaGUgZmFjdCB0aGF0IGBDT05GSUdfTU04MVhfVVNCYCBlbmFibGVzIHRoaXMgaXMgYSBncmVlbiBsaWdodC5cblxuTm93LCBsZXQncyBnZXQgcHJlY2lzZSBvbiB0aGUgaW1wb3J0YW50IHN5bWJvbHMuIEkndmUgbm90ZWQgdGhhdCBgbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW1gIGlzIHN0YXRpYywgcG90ZW50aWFsbHkgaW5saW5lZCBpbnRvIGBtbTgxeF95YXBzX2h3X3JlYWRfcGt0c2AuIEJ1dCBldmVuIGlmIGlubGluZWQsIGl0J3Mgc3RpbGwgcGFydCBvZiB0aGUgY3JpdGljYWwgcGF0aC4gYG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzYCBpcyB0aGUgbWFpbiBmdW5jdGlvbiByZWFkaW5nIHBhY2tldHMgYW5kIGRvaW5nIGRlbGltaXRlciB2YWxpZGF0aW9uLiBgbW04MXhfeWFwc19yZWFkX3BrdHNgIGlzIGFsc28gaW1wb3J0YW50LCBzaW5jZSBpdCBjYWxscyB0aGUgYG9wcy1cdTAwM2VyZWFkX3BrdHNgIGZ1bmN0aW9uLiBTbywgYmFzZWQgb24gdGhlIGNvZGUgZmxvdywgdGhlIHJlbGV2YW50IHN5bWJvbHMgYXJlOlxuXG4qICAgYG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzYFxuKiAgIGBtbTgxeF9yZWFkX3BrdHNfaF9pc192YWxpZF9kZWxpbWBcbiogICBgbW04MXhfeWFwc19yZWFkX3BrdHNgXG4qICAgYG1tODF4X3lhcHNfcnhfaGFuZGxlcmBcblxuSSd2ZSBjb25maXJtZWQgdGhhdCBgbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW1gIGlzIGluZGVlZCBzdGF0aWMgd2l0aGluIGB5YXBzX2h3LmNgLiBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgIGlzIGFsc28gYHN0YXRpY2AuIEkndmUgYWxzbyB2ZXJpZmllZCB0aGUgY2FsbCBjaGFpbiBmcm9tIGBtbTgxeF95YXBzX3JlYWRfcGt0c2AgKGluIGB5YXBzLmNgKSB0byBgeWFwcy1cdTAwM2VvcHMtXHUwMDNlcmVhZF9wa3RzYCwgYW5kIHRoYXQgYG1tODF4X3lhcHNfcnhfaGFuZGxlcmAgY2FsbHMgYG1tODF4X3lhcHNfcmVhZF9wa3RzYC4gRnVydGhlcm1vcmUsIGBtbTgxeF91c2JfcHJvYmVgIGluIGB1c2IuY2AgaW5pdGlhbGl6ZXMgdGhlIFVTQiBpbnRlcmZhY2UsIHRodXMgZXN0YWJsaXNoaW5nIHRoZSBVU0IgZW50cnlwb2ludC5cblxuR2l2ZW4gdGhhdCB0aGUgcGF0Y2ggaW52b2x2ZXMgY2hhbmdlcyB0byBwYWNrZXQgdmFsaWRhdGlvbiBhbmQgYWxpZ25tZW50IHdpdGhpbiBhIHdpcmVsZXNzIGRyaXZlciByZWFjaGFibGUgdmlhIFVTQiBlbXVsYXRpb24sIGFsbCB0aGUgcmVxdWlyZWQgZWxlbWVudHMgYXJlIGluIHBsYWNlLiBUaGUgaWRlbnRpZmllZCBjb25maWd1cmF0aW9ucyBhbmQgc3ltYm9scyBhcmUgY29ycmVjdCwgd2hpY2ggaXMgZnVydGhlciBjb25maXJtYXRpb24gdG8gZW5hYmxlIGZ1enppbmcuIFRodXMsIEknbSBjb25maWRlbnQgdGhhdCBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgc2V0IHRvIGB0cnVlYCwgZ2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgZXhwbG9pdGluZyB2dWxuZXJhYmlsaXRpZXMgaW4gcGFja2V0IGhhbmRsaW5nIGxvZ2ljLlxuXG5Ob3csIEknbSByZWFkeSB0byBwb3B1bGF0ZSB0aGUgYHNldC1yZXN1bHRzYCBmaWVsZHMgYW5kIGNhbGwgaXQgYSBkYXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2MTM4LCJPdXRwdXRUb2tlbnMiOjIxNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI5OjM5LjE5NjEwNDcwNloiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwNjMwMTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJXTEFOXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9NT1JTRU1JQ1JPXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJNTTgxWFwiLFxuICAgIFwiTU04MVhfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibW04MXhfeWFwc19od19yZWFkX3BrdHNcIixcbiAgICBcIm1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltXCIsXG4gICAgXCJtbTgxeF95YXBzX3JlYWRfcGt0c1wiLFxuICAgIFwibW04MXhfeWFwc19yeF9oYW5kbGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhY2tldCByZWNlcHRpb24gYW5kIGRlbGltaXRlciB2YWxpZGF0aW9uIGxvZ2ljIGluIHRoZSBNb3JzZSBNaWNybyBNTTgxeCB3aXJlbGVzcyBkcml2ZXIgKGRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jKSwgYWRkaW5nIGFsaWdubWVudCB2ZXJpZmljYXRpb24gb24gcmVtYWluaW5nIGJ5dGVzIGFuZCBzdHJpY3RlciBwYWNrZXQgc2l6ZSB2YWxpZGF0aW9uIGFnYWluc3QgcmVzZXJ2ZWQgcGFnZSBib3VuZHMuIFRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGRldmljZXMgYW5kIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTU9SU0VNSUNST1wiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiLFxuICAgIFwiTU04MVhcIixcbiAgICBcIk1NODFYX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1tODF4X3lhcHNfaHdfcmVhZF9wa3RzXCIsXG4gICAgXCJtbTgxeF9yZWFkX3BrdHNfaF9pc192YWxpZF9kZWxpbVwiLFxuICAgIFwibW04MXhfeWFwc19yZWFkX3BrdHNcIixcbiAgICBcIm1tODF4X3lhcHNfcnhfaGFuZGxlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYWNrZXQgcmVjZXB0aW9uIGFuZCBkZWxpbWl0ZXIgdmFsaWRhdGlvbiBsb2dpYyBpbiB0aGUgTW9yc2UgTWljcm8gTU04MXggd2lyZWxlc3MgZHJpdmVyIChkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYyksIGFkZGluZyBhbGlnbm1lbnQgdmVyaWZpY2F0aW9uIG9uIHJlbWFpbmluZyBieXRlcyBhbmQgc3RyaWN0ZXIgcGFja2V0IHNpemUgdmFsaWRhdGlvbiBhZ2FpbnN0IHJlc2VydmVkIHBhZ2UgYm91bmRzLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBkZXZpY2VzIGFuZCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyOTozOS4yNzY3NDEyMTVaIiwiU2VxIjozOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwODAzNzcwNjM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjE6Mjk6MzkuMjc3MzIyMTE1WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MjA4MDMxODQ0NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGhhcmRlbnMgaW5wdXQgdmFsaWRhdGlvbiBpbiB0aGUgTW9yc2UgTWljcm8gbW04MXggZHJpdmVyJ3MgWUFQUyBoYXJkd2FyZSBwYWNrZXQgcmVhZGluZyBsb2dpYyBieTpcXG4xLiBFbnN1cmluZyBgcGt0X3NpemVgIChwaGFuZGxlIHNpemUpIGV4Y2VlZHMgYFlBUFNfUkVTRVJWRURfUEFHRV9TSVpFYCB0byBwcmV2ZW50IHVuZGVyZmxvd3MgaW4gYFlBUFNfREVMSU1fR0VUX1BLVF9TSVpFKClgLlxcbjIuIFZhbGlkYXRpbmcgdGhhdCBgYnl0ZXNfcmVtYWluaW5nYCBpcyA0LWJ5dGUgYWxpZ25lZCBiZWZvcmUgcmVhZGluZyBkZWxpbWl0ZXJzIGZyb20gdGhlIGNoaXAgYnVmZmVyLlxcblxcblRoZXNlIGNoYW5nZXMgcHJldmVudCBwb3RlbnRpYWwgaW50ZWdlciB1bmRlcmZsb3csIG91dC1vZi1ib3VuZHMgcmVhZHMvd3JpdGVzLCBvciBwcm90b2NvbCBkZXN5bmNocm9uaXphdGlvbiB3aGVuIHBhcnNpbmcgaGFyZHdhcmUgcGFja2V0IGJ1ZmZlcnMuIEFueSBtZW1vcnkgc2FmZXR5IHZpb2xhdGlvbnMgaW4gdGhpcyBhcmVhIChlLmcuLCBuZWdhdGl2ZSBzaXplIHBhc3NlZCB0byBidWZmZXIgb3BlcmF0aW9ucyByZXN1bHRpbmcgaW4gb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcykgYXJlIGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgaW4gYnJhbmNoaW5nLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDc2OTFmNzhiMGUzOTI2YTliNGY1MTU0NWVkMjgwMmYyZDMxZDkwYmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAyMToyODoyNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmNcbmluZGV4IDNkNjQxZDIzYzM1YmEuLjk3YjJmZjkzYzY5ZmYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmNcbkBAIC00MDcsNyArNDA3LDcgQEAgc3RhdGljIGJvb2wgbW04MXhfcmVhZF9wa3RzX2hfaXNfdmFsaWRfZGVsaW0odTMyIGRlbGltKVxuIFx0aWYgKGNhbGNfY3JjICE9IFlBUFNfREVMSU1fR0VUX0NSQyhkZWxpbSkpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbi1cdGlmIChwa3Rfc2l6ZSA9PSAwKVxuK1x0aWYgKHBrdF9zaXplIFx1MDAzYz0gWUFQU19SRVNFUlZFRF9QQUdFX1NJWkUpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdGlmICgocGt0X3NpemUgKyBwYWRkaW5nKSBcdTAwM2UgWUFQU19NQVhfUEtUX1NJWkVfQllURVMpXG5AQCAtNDU1LDYgKzQ1NSwxMCBAQCBzdGF0aWMgaW50IG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzKHN0cnVjdCBtbTgxeF95YXBzICp5YXBzLFxuIFx0XHRyZXR1cm4gMDtcbiBcdGlmIChieXRlc19yZW1haW5pbmcgXHUwMDNjIDApXG4gXHRcdHJldHVybiBieXRlc19yZW1haW5pbmc7XG4rXHRpZiAoIUlTX0FMSUdORUQoYnl0ZXNfcmVtYWluaW5nLCBzaXplb2YodTMyKSkpIHtcbitcdFx0ZGV2X3dhcm4oeWFwcy1cdTAwM2Vtb3JzLVx1MDAzZWRldiwgXCJ5YXBzIHRydW5jYXRlZCBkZWxpbWl0ZXJcIik7XG4rXHRcdHJldHVybiAtRUlPO1xuK1x0fVxuIFxuIFx0aWYgKGJ5dGVzX3JlbWFpbmluZyBcdTAwM2UgWUFQU19IV19XSU5ET1dfU0laRV9CWVRFUykge1xuIFx0XHRieXRlc19yZW1haW5pbmcgPSBZQVBTX0hXX1dJTkRPV19TSVpFX0JZVEVTO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjE6Mjk6MzkuMjc3MzIzMzk1WiIsIlNlcSI6NDEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU4ODI3NTMzNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGl2aW5nIGludG8gdGhlIG1tODF4IFdpcmVsZXNzIERyaXZlcioqXG5cbk9rYXksIHNvIHRoZSBwYXRjaCBpcyBzdXBwb3NlZGx5IG5lc3RsZWQgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuY2AuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQncyBzdGFydCBieSBzY3J1dGluaXppbmcgdGhhdCBzcGVjaWZpYyBmaWxlLiBJIHdhbnQgdG8gemVybyBpbiBvbiB0aGUgdmljaW5pdHkgb2YgYG1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltYCBhbmQgYG1tODF4X3lhcHNfaHdfcmVhZF9wa3RzYC4gVGhlc2UgZnVuY3Rpb24gbmFtZXMgYXJlIHNjcmVhbWluZyBwb3RlbnRpYWwgZm9yIHRoZSBmaXgsIHNvIGxldCdzIHVuZGVyc3RhbmQgdGhlaXIgY29udGV4dCBhbmQgaW50ZXJhY3Rpb25zLlxuXG5MZXQncyBwdWxsIHVwIHRoYXQgYHlhcHNfaHcuY2AgZmlsZSB1c2luZyBgcmVhZC1maWxlYCBhbmQgZ2V0IGEgZ29vZCBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGdyYXNwIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGJldHRlci4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBpbnZlc3RpZ2F0aW9uIGJlZ2lucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMxMCwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI5OjQ1LjE2MDA4MTEyOVoiLCJTZXEiOjQyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM0ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzkwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM5MDpcXHRleGl0OlxcbiAzOTE6XFx0XFx0aWYgKGJhdGNoX3R4bl9sZW4gXFx1MDAzZSAwKSB7XFxuIDM5MjpcXHRcXHRcXHRyZXQgPSBtbTgxeF9kbV93cml0ZSh5YXBzLVxcdTAwM2Vtb3JzLCB5YXBzLVxcdTAwM2VhdXhfZGF0YS1cXHUwMDNleWRzX2FkZHIsXFxuIDM5MzpcXHRcXHRcXHRcXHRcXHQgICAgIHRvX2NoaXBfYnVmZmVyX2FsaWduZWQsIGJhdGNoX3R4bl9sZW4pO1xcbiAzOTQ6XFx0XFx0XFx0Km51bV9wa3RzX3NlbnQgKz0gcGt0c19wZW5kaW5nO1xcbiAzOTU6XFx0XFx0fVxcbiAzOTY6XFx0XFxuIDM5NzpcXHRcXHRtbTgxeF95YXBzX2h3X3VubG9jayh5YXBzKTtcXG4gMzk4OlxcdFxcdHJldHVybiByZXQ7XFxuIDM5OTpcXHR9XFxuIDQwMDpcXHRcXG4gNDAxOlxcdHN0YXRpYyBib29sIG1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltKHUzMiBkZWxpbSlcXG4gNDAyOlxcdHtcXG4gNDAzOlxcdFxcdHU4IGNhbGNfY3JjID0gbW04MXhfeWFwc19od19jcmMoZGVsaW0pO1xcbiA0MDQ6XFx0XFx0aW50IHBrdF9zaXplID0gWUFQU19ERUxJTV9HRVRfUEhBTkRMRV9TSVpFKGRlbGltKTtcXG4gNDA1OlxcdFxcdGludCBwYWRkaW5nID0gWUFQU19ERUxJTV9HRVRfUEFERElORyhkZWxpbSk7XFxuIDQwNjpcXHRcXG4gNDA3OlxcdFxcdGlmIChjYWxjX2NyYyAhPSBZQVBTX0RFTElNX0dFVF9DUkMoZGVsaW0pKVxcbiA0MDg6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiA0MDk6XFx0XFxuIDQxMDpcXHRcXHRpZiAocGt0X3NpemUgXFx1MDAzYz0gWUFQU19SRVNFUlZFRF9QQUdFX1NJWkUpXFxuIDQxMTpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIDQxMjpcXHRcXG4gNDEzOlxcdFxcdGlmICgocGt0X3NpemUgKyBwYWRkaW5nKSBcXHUwMDNlIFlBUFNfTUFYX1BLVF9TSVpFX0JZVEVTKVxcbiA0MTQ6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiA0MTU6XFx0XFxuIDQxNjpcXHRcXHQvKiBQa3QgbGVuZ3RoICsgcGFkZGluZyBzaG91bGQgbm90IHJlcXVpcmUgbW9yZSBwYWRkaW5nICovXFxuIDQxNzpcXHRcXHRpZiAoWUFQU19DQUxDX1BBRERJTkcocGt0X3NpemUpICE9IHBhZGRpbmcpXFxuIDQxODpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIDQxOTpcXHRcXG4gNDIwOlxcdFxcdHJldHVybiB0cnVlO1xcbiA0MjE6XFx0fVxcbiA0MjI6XFx0XFxuIDQyMzpcXHRzdGF0aWMgaW50IG1tODF4X3JlYWRfcGt0c19oX2J5dGVzX3JlbWFpbmluZyhzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcylcXG4gNDI0OlxcdHtcXG4gNDI1OlxcdFxcdHUzMiBieXRlc19pbl9xdWV1ZSA9IHlhcHMtXFx1MDAzZWF1eF9kYXRhLVxcdTAwM2VzdGF0dXNfcmVncy5mY19yeF9ieXRlc19pbl9xdWV1ZTtcXG4gNDI2OlxcdFxcdHUzMiBkZWxpbV9vdmVyaGVhZCA9XFxuIDQyNzpcXHRcXHRcXHR5YXBzLVxcdTAwM2VhdXhfZGF0YS1cXHUwMDNlc3RhdHVzX3JlZ3MuZmNfbnVtX3BrdHMgKiBzaXplb2YodTMyKTtcXG4gNDI4OlxcdFxcdHUzMiByZXNlcnZlZF9ieXRlcyA9IHlhcHMtXFx1MDAzZWF1eF9kYXRhLVxcdTAwM2VzdGF0dXNfcmVncy5mY19udW1fcGt0cyAqXFxuIDQyOTpcXHRcXHRcXHRcXHQgICAgIHlhcHMtXFx1MDAzZWF1eF9kYXRhLVxcdTAwM2VyZXNlcnZlZF95YXBzX3BhZ2Vfc2l6ZTtcXG4gNDMwOlxcdFxcbiA0MzE6XFx0XFx0aWYgKFdBUk5fT04oYnl0ZXNfaW5fcXVldWUgXFx1MDAzZSBJTlRfTUFYKSB8fFxcbiA0MzI6XFx0XFx0ICAgIFdBUk5fT04oZGVsaW1fb3ZlcmhlYWQgXFx1MDAzZSBJTlRfTUFYKSB8fFxcbiA0MzM6XFx0XFx0ICAgIFdBUk5fT04ocmVzZXJ2ZWRfYnl0ZXMgXFx1MDAzZSBJTlRfTUFYKSlcXG4gNDM0OlxcdFxcdFxcdHJldHVybiAtRUlPO1xcbiA0MzU6XFx0XFxuIDQzNjpcXHRcXHRyZXR1cm4gKGludClieXRlc19pbl9xdWV1ZTtcXG4gNDM3OlxcdH1cXG4gNDM4OlxcdFxcbiA0Mzk6XFx0c3RhdGljIGludCBtbTgxeF95YXBzX2h3X3JlYWRfcGt0cyhzdHJ1Y3QgbW04MXhfeWFwcyAqeWFwcyxcXG4gNDQwOlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBtbTgxeF95YXBzX3BrdCAqcGt0cyxcXG4gNDQxOlxcdFxcdFxcdFxcdFxcdCAgIGludCBudW1fcGt0c19tYXgsIGludCAqbnVtX3BrdHNfcmVjZWl2ZWQpXFxuIDQ0MjpcXHR7XFxuIDQ0MzpcXHRcXHRpbnQgcmV0O1xcbiA0NDQ6XFx0XFx0aW50IGkgPSAwO1xcbiA0NDU6XFx0XFx0Y2hhciAqZnJvbV9jaGlwX2J1ZmZlcl9hbGlnbmVkID1cXG4gNDQ2OlxcdFxcdFxcdFBUUl9BTElHTih5YXBzLVxcdTAwM2VhdXhfZGF0YS1cXHUwMDNlZnJvbV9jaGlwX2J1ZmZlcixcXG4gNDQ3OlxcdFxcdFxcdFxcdCAgbW04MXhfYnVzX2dldF9hbGlnbm1lbnQoeWFwcy1cXHUwMDNlbW9ycykpO1xcbiA0NDg6XFx0XFx0Y2hhciAqcmVhZF9wdHIgPSBmcm9tX2NoaXBfYnVmZmVyX2FsaWduZWQ7XFxuIDQ0OTpcXHRcXHRpbnQgYnl0ZXNfcmVtYWluaW5nID0gbW04MXhfcmVhZF9wa3RzX2hfYnl0ZXNfcmVtYWluaW5nKHlhcHMpO1xcbiA0NTA6XFx0XFx0Ym9vbCBhZ2FpbiA9IGZhbHNlO1xcbiA0NTE6XFx0XFxuIDQ1MjpcXHRcXHQqbnVtX3BrdHNfcmVjZWl2ZWQgPSAwO1xcbiA0NTM6XFx0XFxuIDQ1NDpcXHRcXHRpZiAobnVtX3BrdHNfbWF4ID09IDAgfHwgYnl0ZXNfcmVtYWluaW5nID09IDApXFxuIDQ1NTpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNDU2OlxcdFxcdGlmIChieXRlc19yZW1haW5pbmcgXFx1MDAzYyAwKVxcbiA0NTc6XFx0XFx0XFx0cmV0dXJuIGJ5dGVzX3JlbWFpbmluZztcXG4gNDU4OlxcdFxcdGlmICghSVNfQUxJR05FRChieXRlc19yZW1haW5pbmcsIHNpemVvZih1MzIpKSkge1xcbiA0NTk6XFx0XFx0XFx0ZGV2X3dhcm4oeWFwcy1cXHUwMDNlbW9ycy1cXHUwMDNlZGV2LCBcXFwieWFwcyB0cnVuY2F0ZWQgZGVsaW1pdGVyXFxcIik7XFxuIDQ2MDpcXHRcXHRcXHRyZXR1cm4gLUVJTztcXG4gNDYxOlxcdFxcdH1cXG4gNDYyOlxcdFxcbiA0NjM6XFx0XFx0aWYgKGJ5dGVzX3JlbWFpbmluZyBcXHUwMDNlIFlBUFNfSFdfV0lORE9XX1NJWkVfQllURVMpIHtcXG4gNDY0OlxcdFxcdFxcdGJ5dGVzX3JlbWFpbmluZyA9IFlBUFNfSFdfV0lORE9XX1NJWkVfQllURVM7XFxuIDQ2NTpcXHRcXHRcXHRhZ2FpbiA9IHRydWU7XFxuIDQ2NjpcXHRcXHR9XFxuIDQ2NzpcXHRcXG4gNDY4OlxcdFxcdC8qXFxuIDQ2OTpcXHRcXHQgKiBUaGlzIGlzIG1vcmUgY29hcnNlLWdyYWluZWQgdGhhbiBpdCBuZWVkcyB0byBiZSAtIG9uY2UgdGhlIGRhdGFcXG4gNDcwOlxcdFxcdCAqIGlzIHJlYWQgaW50byBhIGxvY2FsIGJ1ZmZlciB0aGUgbG9jayBjYW4gYmUgcmVsZWFzZWQsIGhvd2V2ZXJcXG4gNDcxOlxcdFxcdCAqIGFjY2VzcyB0byBmcm9tX2NoaXBfYnVmZmVyIHdpbGwgbmVlZCB0byBiZSBwcm90ZWN0ZWQgd2l0aCBpdHNcXG4gNDcyOlxcdFxcdCAqIG93biBsb2NrXFxuIDQ3MzpcXHRcXHQgKi9cXG4gNDc0OlxcdFxcdHJldCA9IG1tODF4X3lhcHNfaHdfbG9jayh5YXBzKTtcXG4gNDc1OlxcdFxcdGlmIChyZXQpIHtcXG4gNDc2OlxcdFxcdFxcdGRldl9kYmcoeWFwcy1cXHUwMDNlbW9ycy1cXHUwMDNlZGV2LCBcXFwieWFwcyBsb2NrIGZhaWxlZCAlZFxcXCIsIHJldCk7XFxuIDQ3NzpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA0Nzg6XFx0XFx0fVxcbiA0Nzk6XFx0XFxuIDQ4MDpcXHRcXHQvKiBSZWFkIGFsbCBhdmFpbGFibGUgcGFja2V0cyB0byB0aGUgYnVmZmVyICovXFxuIDQ4MTpcXHRcXHRyZXQgPSBtbTgxeF9kbV9yZWFkKHlhcHMtXFx1MDAzZW1vcnMsIHlhcHMtXFx1MDAzZWF1eF9kYXRhLVxcdTAwM2V5c2xfYWRkcixcXG4gNDgyOlxcdFxcdFxcdFxcdCAgICBmcm9tX2NoaXBfYnVmZmVyX2FsaWduZWQsIGJ5dGVzX3JlbWFpbmluZyk7XFxuIDQ4MzpcXHRcXG4gNDg0OlxcdFxcdGlmIChyZXQpXFxuIDQ4NTpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuIDQ4NjpcXHRcXG4gNDg3OlxcdFxcdC8qIFNwbGl0IHNlcmlhbGlzZWQgcGFja2V0cyBmcm9tIGJ1ZmZlciAqL1xcbiA0ODg6XFx0XFx0d2hpbGUgKGkgXFx1MDAzYyBudW1fcGt0c19tYXggXFx1MDAyNlxcdTAwMjYgYnl0ZXNfcmVtYWluaW5nIFxcdTAwM2UgMCkge1xcbiA0ODk6XFx0XFx0XFx0dTMyIGRlbGltO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyOTo0NS4xNjAxODY0NTlaIiwiU2VxIjo0MywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTIzOTYzMjU2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHdoYXQncyBnb2luZyB0aHJvdWdoIG15IG1pbmQgYXMgSSBhcHByb2FjaCB0aGUgY29kZSwgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uLCBhbmQgdGFpbG9yZWQgZm9yIGEgZmllbGQgZXhwZXJ0OlxuXG4qKkRpdmluZyBpbnRvIGBtbTgxeF95YXBzX2h3X3JlYWRfcGt0c2AqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgaW50byB0aGlzIGBtbTgxeF95YXBzX2h3X3JlYWRfcGt0c2AgZnVuY3Rpb24uIEdpdmVuIHRoZSBuYW1pbmcsIEknbSBleHBlY3RpbmcgdGhpcyB0byBiZSB0aGUgY29yZSBoYXJkd2FyZSBpbnRlcmZhY2UgZm9yIHBhY2tldCByZWNlcHRpb24gb24gdGhlIG1tODF4LCBsaWtlbHkgaW52b2x2aW5nIHNvbWUgaW50ZXJhY3Rpb24gd2l0aCBZQVBTIChZb3VyIEFwcGxpY2F0aW9uIFByb3RvY29sIFNlcnZpY2UsIEkgYXNzdW1lKS4gSSdsbCB3YW50IHRvIHF1aWNrbHkgYXNjZXJ0YWluIGEgZmV3IHRoaW5nczogRmlyc3QsIGhvdyBpcyB0aGlzIGZ1bmN0aW9uIHRyaWdnZXJlZD8gSXMgaXQgaW50ZXJydXB0LWRyaXZlbiwgcG9sbGVkLCBvciBzb21ldGhpbmcgZWxzZT8gU2Vjb25kLCB3aGF0J3MgdGhlIGdlbmVyYWwgZmxvdz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZOKAlHBvaW50ZXJzIHRvIGJ1ZmZlcnMsIGRlc2NyaXB0b3JzLCBhbmQgYW55IGFzc29jaWF0ZWQgY29udHJvbCByZWdpc3RlcnMuIEknbSBnb2luZyB0byBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgYm90dGxlbmVja3MgcmlnaHQgYXdheSwgbGlrZSBhbnkgb2J2aW91cyBkYXRhIGNvcGllcyBvciBzeW5jaHJvbml6YXRpb24gaXNzdWVzIGlmIHdlIGFyZSBsb29raW5nIGF0IGEgc2hhcmVkIG1lbW9yeSBtb2RlbC4gQXJlIHRoZXkgdXNpbmcgRE1BPyBJZiBzbywgd2hhdCdzIHRoZSBkZXNjcmlwdG9yIHNldHVwPyBJJ2xsIGFsc28gYmUgd2F0Y2hpbmcgZm9yIGVycm9yIGhhbmRsaW5nLiBJcyB0aGVyZSByb2J1c3QgZXJyb3IgY2hlY2tpbmcgb24gdGhlIGhhcmR3YXJlIHJlYWRzLCBhbmQgYXJlIHRoZSBlcnJvcnMgaGFuZGxlZCBncmFjZWZ1bGx5PyBGaW5hbGx5LCBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgcmVjZWl2ZWQgcGFja2V0cyBhcmUgcGFzc2VkIG9uIHVwIHRoZSBzdGFjayDigJMgYXJlIHRoZXkgcHV0IG9uIGEgcXVldWUsIHBhc3NlZCBkaXJlY3RseSB0byB0aGUgdXBwZXIgbGF5ZXIsIG9yPyBJIG5lZWQgdG8gc2VlIGlmIHRoZSBpbnRlcmZhY2UgaXMgb3B0aW1pemVkIGZvciBoaWdoLXRocm91Z2hwdXQgb3IgcHJpb3JpdGl6ZXMgbG93LWxhdGVuY3ksIGFuZCB3aGljaCB0cmFkZS1vZmZzIHdlcmUgbWFkZS4gVGhhdCB3aWxsIHJlYWxseSBpbmZvcm0gaG93IEkgbWlnaHQgZ28gYWJvdXQgYW55IHBlcmZvcm1hbmNlIHR1bmluZyBsYXRlci4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzAwLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyOTo1MC4zOTk4MjI4MDJaIiwiU2VxIjo0NCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5NzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ4OCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ4ODpcXHRcXHR3aGlsZSAoaSBcXHUwMDNjIG51bV9wa3RzX21heCBcXHUwMDI2XFx1MDAyNiBieXRlc19yZW1haW5pbmcgXFx1MDAzZSAwKSB7XFxuIDQ4OTpcXHRcXHRcXHR1MzIgZGVsaW07XFxuIDQ5MDpcXHRcXHRcXHRpbnQgdG90YWxfbGVuO1xcbiA0OTE6XFx0XFx0XFx0aW50IHBrdF9zaXplO1xcbiA0OTI6XFx0XFxuIDQ5MzpcXHRcXHRcXHRkZWxpbSA9IGxlMzJfdG9fY3B1KCooKF9fbGUzMiAqKXJlYWRfcHRyKSk7XFxuIDQ5NDpcXHRcXHRcXHRyZWFkX3B0ciArPSBzaXplb2YoZGVsaW0pO1xcbiA0OTU6XFx0XFx0XFx0Ynl0ZXNfcmVtYWluaW5nIC09IHNpemVvZihkZWxpbSk7XFxuIDQ5NjpcXHRcXG4gNDk3OlxcdFxcdFxcdC8qIEVuZCBvZiBzdHJlYW0gKi9cXG4gNDk4OlxcdFxcdFxcdGlmICghZGVsaW0pXFxuIDQ5OTpcXHRcXHRcXHRcXHRicmVhaztcXG4gNTAwOlxcdFxcbiA1MDE6XFx0XFx0XFx0aWYgKCFtbTgxeF9yZWFkX3BrdHNfaF9pc192YWxpZF9kZWxpbShkZWxpbSkpIHtcXG4gNTAyOlxcdFxcdFxcdFxcdC8qXFxuIDUwMzpcXHRcXHRcXHRcXHQgKiBUaGlzIHdpbGwgc3RhcnQgYSBodW50IGZvciBhIHZhbGlkIGRlbGltaXRlci4gR2l2ZW5cXG4gNTA0OlxcdFxcdFxcdFxcdCAqIHRoZSBDUkMgaXMgb25seSA3IGJpdCBpdCdzIHBvc3NpYmxlIHRvIGZpbmQgYW5cXG4gNTA1OlxcdFxcdFxcdFxcdCAqIGludmFsaWQgYmxvY2sgd2l0aCBhIHZhbGlkIGRlbGltaXRlciwgbGVhZGluZyB0b1xcbiA1MDY6XFx0XFx0XFx0XFx0ICogZGVzeW5jaHJvbmlzYXRpb24uXFxuIDUwNzpcXHRcXHRcXHRcXHQgKi9cXG4gNTA4OlxcdFxcdFxcdFxcdGRldl93YXJuKHlhcHMtXFx1MDAzZW1vcnMtXFx1MDAzZWRldiwgXFxcInlhcHMgaW52YWxpZCBkZWxpbVxcXCIpO1xcbiA1MDk6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDUxMDpcXHRcXHRcXHR9XFxuIDUxMTpcXHRcXG4gNTEyOlxcdFxcdFxcdC8qIFRvdGFsIGxlbmd0aCBpbiBjaGlwICovXFxuIDUxMzpcXHRcXHRcXHRwa3Rfc2l6ZSA9IFlBUFNfREVMSU1fR0VUX1BLVF9TSVpFKGRlbGltKTtcXG4gNTE0OlxcdFxcdFxcdHRvdGFsX2xlbiA9IHBrdF9zaXplICsgWUFQU19ERUxJTV9HRVRfUEFERElORyhkZWxpbSk7XFxuIDUxNTpcXHRcXG4gNTE2OlxcdFxcdFxcdGlmIChwa3RzW2ldLnNrYilcXG4gNTE3OlxcdFxcdFxcdFxcdGRldl9lcnIoeWFwcy1cXHUwMDNlbW9ycy1cXHUwMDNlZGV2LCBcXFwieWFwcyBwYWNrZXQgbGVha1xcXCIpO1xcbiA1MTg6XFx0XFxuIDUxOTpcXHRcXHRcXHQvKiBTS0IgZG9lc24ndCB3YW50IHBhZGRpbmcgKi9cXG4gNTIwOlxcdFxcdFxcdHBrdHNbaV0uc2tiID0gZGV2X2FsbG9jX3NrYihwa3Rfc2l6ZSk7XFxuIDUyMTpcXHRcXHRcXHRpZiAoIXBrdHNbaV0uc2tiKSB7XFxuIDUyMjpcXHRcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbiA1MjM6XFx0XFx0XFx0XFx0ZGV2X2Vycih5YXBzLVxcdTAwM2Vtb3JzLVxcdTAwM2VkZXYsIFxcXCJ5YXBzIG5vIG1lbSBmb3Igc2tiXFxcIik7XFxuIDUyNDpcXHRcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuIDUyNTpcXHRcXHRcXHR9XFxuIDUyNjpcXHRcXHRcXHRza2JfcHV0KHBrdHNbaV0uc2tiLCBwa3Rfc2l6ZSk7XFxuIDUyNzpcXHRcXG4gNTI4OlxcdFxcdFxcdGlmICh0b3RhbF9sZW4gXFx1MDAzYz0gYnl0ZXNfcmVtYWluaW5nKSB7XFxuIDUyOTpcXHRcXHRcXHRcXHRtZW1jcHkocGt0c1tpXS5za2ItXFx1MDAzZWRhdGEsIHJlYWRfcHRyLCBwa3Rfc2l6ZSk7XFxuIDUzMDpcXHRcXHRcXHRcXHRyZWFkX3B0ciArPSB0b3RhbF9sZW47XFxuIDUzMTpcXHRcXHRcXHRcXHRieXRlc19yZW1haW5pbmcgLT0gdG90YWxfbGVuO1xcbiA1MzI6XFx0XFx0XFx0fSBlbHNlIHtcXG4gNTMzOlxcdFxcdFxcdFxcdGNvbnN0IGludCByZWFkX292ZXJoYW5nX2xlbiA9XFxuIDUzNDpcXHRcXHRcXHRcXHRcXHR0b3RhbF9sZW4gLSBieXRlc19yZW1haW5pbmc7XFxuIDUzNTpcXHRcXHRcXHRcXHRjb25zdCBpbnQgcGt0X292ZXJoYW5nX2xlbiA9IHBrdF9zaXplIC0gYnl0ZXNfcmVtYWluaW5nO1xcbiA1MzY6XFx0XFxuIDUzNzpcXHRcXHRcXHRcXHRtZW1jcHkocGt0c1tpXS5za2ItXFx1MDAzZWRhdGEsIHJlYWRfcHRyLCBieXRlc19yZW1haW5pbmcpO1xcbiA1Mzg6XFx0XFx0XFx0XFx0cmVhZF9wdHIgPSBmcm9tX2NoaXBfYnVmZmVyX2FsaWduZWQ7XFxuIDUzOTpcXHRcXG4gNTQwOlxcdFxcdFxcdFxcdHJldCA9IG1tODF4X2RtX3JlYWQoXFxuIDU0MTpcXHRcXHRcXHRcXHRcXHR5YXBzLVxcdTAwM2Vtb3JzLFxcbiA1NDI6XFx0XFx0XFx0XFx0XFx0LyogT2Zmc2V0IGJ5IDQgdG8gYXZvaWQgcmV0cnkgbG9naWMgKi9cXG4gNTQzOlxcdFxcdFxcdFxcdFxcdHlhcHMtXFx1MDAzZWF1eF9kYXRhLVxcdTAwM2V5c2xfYWRkciArIDQsIHJlYWRfcHRyLFxcbiA1NDQ6XFx0XFx0XFx0XFx0XFx0cmVhZF9vdmVyaGFuZ19sZW4pO1xcbiA1NDU6XFx0XFxuIDU0NjpcXHRcXHRcXHRcXHRpZiAocmV0KVxcbiA1NDc6XFx0XFx0XFx0XFx0XFx0Z290byBleGl0O1xcbiA1NDg6XFx0XFxuIDU0OTpcXHRcXHRcXHRcXHRtZW1jcHkocGt0c1tpXS5za2ItXFx1MDAzZWRhdGEgKyBieXRlc19yZW1haW5pbmcsIHJlYWRfcHRyLFxcbiA1NTA6XFx0XFx0XFx0XFx0ICAgICAgIHBrdF9vdmVyaGFuZ19sZW4pO1xcbiA1NTE6XFx0XFx0XFx0XFx0cmVhZF9wdHIgKz0gcmVhZF9vdmVyaGFuZ19sZW47XFxuIDU1MjpcXHRcXHRcXHRcXHRieXRlc19yZW1haW5pbmcgPSAwO1xcbiA1NTM6XFx0XFx0XFx0fVxcbiA1NTQ6XFx0XFxuIDU1NTpcXHRcXHRcXHQqbnVtX3BrdHNfcmVjZWl2ZWQgKz0gMTtcXG4gNTU2OlxcdFxcdFxcdGkrKztcXG4gNTU3OlxcdFxcdH1cXG4gNTU4OlxcdFxcbiA1NTk6XFx0XFx0aWYgKGFnYWluKVxcbiA1NjA6XFx0XFx0XFx0cmV0ID0gLUVBR0FJTjtcXG4gNTYxOlxcdFxcbiA1NjI6XFx0ZXhpdDpcXG4gNTYzOlxcdFxcdG1tODF4X3lhcHNfaHdfdW5sb2NrKHlhcHMpO1xcbiA1NjQ6XFx0XFx0cmV0dXJuIHJldDtcXG4gNTY1OlxcdH1cXG4gNTY2OlxcdFxcbiA1Njc6XFx0c3RhdGljIGludCBtbTgxeF95YXBzX2h3X3VwZGF0ZV9zdGF0dXMoc3RydWN0IG1tODF4X3lhcHMgKnlhcHMpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjI5OjUwLjM5OTkzNDcxMloiLCJTZXEiOjQ1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozODc3MTQ0NTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2g6IElucHV0IFZhbGlkYXRpb24gXHUwMDI2IFBvdGVudGlhbCBSaXNrcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEknbSBzZWVpbmcgYSBjaGFuZ2UgaW4gYG1tODF4X3JlYWRfcGt0c19oX2lzX3ZhbGlkX2RlbGltYCB3aGVyZSB0aGV5J3JlIG5vdyBjaGVja2luZyBgcGt0X3NpemUgXHUwMDNjPSBZQVBTX1JFU0VSVkVEX1BBR0VfU0laRWAgaW5zdGVhZCBvZiBqdXN0IGBwa3Rfc2l6ZSA9PSAwYC4gVGhhdCdzIHRoZSBmaXJzdCBjbHVlLiBUaGVuLCBpbiBgbW04MXhfeWFwc19od19yZWFkX3BrdHNgLCB0aGVyZSdzIGEgbmV3IGFsaWdubWVudCBjaGVjazogYCFJU19BTElHTkVEKGJ5dGVzX3JlbWFpbmluZywgc2l6ZW9mKHUzMikpYC4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgYWx3YXlzOiBhcmUgd2UgaW50cm9kdWNpbmcgb3IgY2hhbmdpbmcgYW55dGhpbmcgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvcm1hdGlvbiBsZWFrcywgb3IgYW55IG90aGVyIHBvdGVudGlhbCBzZWN1cml0eSBpc3N1ZXM/XG5cbkxvb2tpbmcgZGVlcGVyLCBgZnJvbV9jaGlwX2J1ZmZlcl9hbGlnbmVkYCBpcyBwb3B1bGF0ZWQgYnkgYG1tODF4X2RtX3JlYWRgIGZyb20gaGFyZHdhcmUsIGFuZCB0aGF0J3Mgd2hlcmUgdGhlIGRhdGEgZm9yIHRoZSBwYWNrZXRzIGNvbWVzIGZyb20uICBUaGVuLCB0aGUgY29kZSBjb3BpZXMgZGF0YSBpbnRvIGBza2JgIGJ1ZmZlcnMgdXNpbmcgYG1lbWNweWAuICBUaGUgY2hhbmdlIGl0c2VsZiBzZWVtcyB0byBiZSBhZGRpbmcgbW9yZSByb2J1c3QgaW5wdXQgdmFsaWRhdGlvbjsgcmVqZWN0aW5nIGBwa3Rfc2l6ZWAgaWYgaXQncyB0b28gc21hbGwsIGFuZCByZWplY3RpbmcgbWlzYWxpZ25lZCBgYnl0ZXNfcmVtYWluaW5nYC5cblxuSSB0aGluayB0aGlzIGlzIGFsbCBhYm91dCBtYWtpbmcgc3VyZSB3ZSdyZSBnZXR0aW5nIHZhbGlkIGRhdGEgZnJvbSB0aGUgaGFyZHdhcmUuICBHaXZlbiB0aGUgZGF0YSBmbG93LCB0aGVyZSdzIG5vIHJlYXNvbiB0byB0aGluayBpdCB3aWxsIGNhdXNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2Vzc2VzLiAgQWxsIHRoZSBgc2tiYHMgYXJlIGFsbG9jYXRlZCwgYW5kIHRoZSBkYXRhIGlzIHJlYWQgZGlyZWN0bHkgZnJvbSB0aGUgaGFyZHdhcmUsIHNvIGl0IHNob3VsZCBiZSBmaW5lLiBJdCBpcyBvbmx5IGFib3V0IHN0cmljdGVyIHZhbGlkYXRpb24gYW5kIGVycm9yIGNoZWNraW5nIG9mIHRoZSBoYXJkd2FyZSBpbnB1dC4gTm93LCBJIG5lZWQgdG8gc2VlIGV4YWN0bHkgd2hhdCBgWUFQU19SRVNFUlZFRF9QQUdFX1NJWkVgIGFuZCBgWUFQU19ERUxJTV9HRVRfUEhBTkRMRV9TSVpFYCBhcmUsIGp1c3QgdG8gaGF2ZSBhIGNvbXBsZXRlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5MTQsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyOTo1NC4yNzcwODIwNjVaIiwiU2VxIjo0NiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjMwMzE2NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiWUFQU19SRVNFUlZFRF9QQUdFX1NJWkVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMtMjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmM6MjE6I2RlZmluZSBZQVBTX1JFU0VSVkVEX1BBR0VfU0laRSAyNTZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYy0yMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jLTM1LSNkZWZpbmUgWUFQU19ERUxJTV9HRVRfUEtUX1NJWkUoX2RlbGltKSBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmM6MzY6XFx0KCgoX2RlbGltKSBcXHUwMDI2IDB4M0ZGRikgLSBZQVBTX1JFU0VSVkVEX1BBR0VfU0laRSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYy0zNy0jZGVmaW5lIFlBUFNfREVMSU1fU0VUX1BLVF9TSVpFKF9wa3Rfc2l6ZSkgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jOjM4OlxcdCgoKF9wa3Rfc2l6ZSkgXFx1MDAyNiAweDNGRkYpICsgWUFQU19SRVNFUlZFRF9QQUdFX1NJWkUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmMtMzktI2RlZmluZSBZQVBTX0RFTElNX0dFVF9QSEFORExFX1NJWkUoX2RlbGltKSAoKChfZGVsaW0pIFxcdTAwMjYgMHgzRkZGKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21vcnNlbWljcm8vbW04MXgveWFwc19ody5jPTQwMT1zdGF0aWMgYm9vbCBtbTgxeF9yZWFkX3BrdHNfaF9pc192YWxpZF9kZWxpbSh1MzIgZGVsaW0pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYy00MDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9tbTgxeC95YXBzX2h3LmM6NDEwOlxcdGlmIChwa3Rfc2l6ZSBcXHUwMDNjPSBZQVBTX1JFU0VSVkVEX1BBR0VfU0laRSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL21tODF4L3lhcHNfaHcuYy00MTEtXFx0XFx0cmV0dXJuIGZhbHNlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMToyOTo1Ni4yMDAxMTkyNjZaIiwiU2VxIjo0NywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mzg4MDM1NTM3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBQYWNrZXQgU2l6ZSBDYWxjdWxhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYFlBUFNfREVMSU1fR0VUX1BLVF9TSVpFYCBtYWNybzogYCgoKF9kZWxpbSkgXHUwMDI2IDB4M0ZGRikgLSBZQVBTX1JFU0VSVkVEX1BBR0VfU0laRSlgLiBJdCdzIGNsZWFyIHRoYXQgdGhpcyBjYWxjdWxhdGlvbiBjb3VsZCBsZWFkIHRvIHByb2JsZW1zIGlmIHRoZSBwYWNrZXQgc2l6ZSwgd2hpY2ggaXMgaW5pdGlhbGx5IGRldGVybWluZWQgYnkgdGhlIGxvd2VyIGJpdHMgb2YgdGhlIGRlbGltaXRlciAoYHBrdF9zaXplYCksIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgWUFQU19SRVNFUlZFRF9QQUdFX1NJWkVgLiBUaGF0IHdvdWxkIHJlc3VsdCBpbiBlaXRoZXIgYSBuZWdhdGl2ZSBwYWNrZXQgc2l6ZSBvciwgYXQgYmVzdCwgemVyby4gVGhpcyBzZWVtcyBsaWtlIGEgdGV4dGJvb2sgY2FzZSBmb3IgcG90ZW50aWFsIHVuZGVyZmxvdyBvciwgbW9yZSBjcml0aWNhbGx5LCBpbnZhbGlkIHBhY2tldCBzaXplIGNhbGN1bGF0aW9ucyB3aGVuIHdlJ3JlIHVucGFja2luZyBwYWNrZXRzIGZyb20gdGhlIGNoaXAuXG5cblRoZSBgaWYgKHBrdF9zaXplIFx1MDAzYz0gWUFQU19SRVNFUlZFRF9QQUdFX1NJWkUpYCBjaGVjayB0aGF0J3MgaW4gcGxhY2UgZGlyZWN0bHkgYWRkcmVzc2VzIGFuZCBjb3JyZWN0cyB0aGlzIHBvdGVudGlhbCB1bmRlcmZsb3cvaW52YWxpZCBzaXplIHNjZW5hcmlvLiBHb29kLCBnb29kLiBBbmQgdGhlIGAhSVNfQUxJR05FRChieXRlc19yZW1haW5pbmcsIHNpemVvZih1MzIpKWAgY29uZGl0aW9uIGVuc3VyZXMgdGhlIGRhdGEgYnVmZmVyIGlzIDQtYnl0ZSBhbGlnbmVkLCB3aGljaCBpcyBjcnVjaWFsIGZvciBkYXRhIGludGVncml0eS5cblxuTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgYWx3YXlzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBvZiBjb3Vyc2UuIEJ1dCBhZnRlciBhIHJldmlldywgSSBjYW4gY29uZmlkZW50bHkgc2F5IHRoYXQgdGhlcmUgYXJlbid0IGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMgaGVyZS4gVGhpcyBmaXhlcyBwb3RlbnRpYWwgYnVmZmVyIHVuZGVyZmxvdywgb3V0LW9mLWJvdW5kcyBtZW1vcnkgaXNzdWVzLCBvciBsb2dpYyBlcnJvcnMsIHdoaWNoIEtBU0FOIHdpbGwgaGVscCBkZXRlY3QuIENydWNpYWxseSwgSSdtIG5vdCBpbnRyb2R1Y2luZyBvciBtb2RpZnlpbmcgYW55IGNvZGUgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGxlYWtpbmcgdG8gdXNlcnNwYWNlLCBvciB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHJlYWRzLlxuXG5UaGVyZWZvcmUsIEknbGwgdXBkYXRlIHRoZSBhc3NvY2lhdGVkIGlzc3VlIHdpdGggYE5lZWRzS01TQU46IGZhbHNlYCBhbmQgcHJvdmlkZSBhIGNsZWFyIGV4cGxhbmF0aW9uIG9mIHRoZXNlIHBvaW50cyBpbiB0aGUgY29tbWl0IG1lc3NhZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyNzgsIk91dHB1dFRva2VucyI6MjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIxOjMwOjAwLjA4MDQ3ODA2MloiLCJTZXEiOjQ4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMzU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaGFyZGVucyBpbnB1dCB2YWxpZGF0aW9uIGluIHRoZSBNb3JzZSBNaWNybyBtbTgxeCBkcml2ZXIncyBZQVBTIGhhcmR3YXJlIHBhY2tldCByZWFkaW5nIGxvZ2ljIGJ5OlxcbjEuIEVuc3VyaW5nIGBwa3Rfc2l6ZWAgKHBoYW5kbGUgc2l6ZSkgZXhjZWVkcyBgWUFQU19SRVNFUlZFRF9QQUdFX1NJWkVgIHRvIHByZXZlbnQgdW5kZXJmbG93cyBpbiBgWUFQU19ERUxJTV9HRVRfUEtUX1NJWkUoKWAuXFxuMi4gVmFsaWRhdGluZyB0aGF0IGBieXRlc19yZW1haW5pbmdgIGlzIDQtYnl0ZSBhbGlnbmVkIGJlZm9yZSByZWFkaW5nIGRlbGltaXRlcnMgZnJvbSB0aGUgY2hpcCBidWZmZXIuXFxuXFxuVGhlc2UgY2hhbmdlcyBwcmV2ZW50IHBvdGVudGlhbCBpbnRlZ2VyIHVuZGVyZmxvdywgb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMsIG9yIHByb3RvY29sIGRlc3luY2hyb25pemF0aW9uIHdoZW4gcGFyc2luZyBoYXJkd2FyZSBwYWNrZXQgYnVmZmVycy4gQW55IG1lbW9yeSBzYWZldHkgdmlvbGF0aW9ucyBpbiB0aGlzIGFyZWEgKGUuZy4sIG5lZ2F0aXZlIHNpemUgcGFzc2VkIHRvIGJ1ZmZlciBvcGVyYXRpb25zIHJlc3VsdGluZyBpbiBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSBhcmUgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBpbiBicmFuY2hpbmcsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaGFyZGVucyBpbnB1dCB2YWxpZGF0aW9uIGluIHRoZSBNb3JzZSBNaWNybyBtbTgxeCBkcml2ZXIncyBZQVBTIGhhcmR3YXJlIHBhY2tldCByZWFkaW5nIGxvZ2ljIGJ5OlxcbjEuIEVuc3VyaW5nIGBwa3Rfc2l6ZWAgKHBoYW5kbGUgc2l6ZSkgZXhjZWVkcyBgWUFQU19SRVNFUlZFRF9QQUdFX1NJWkVgIHRvIHByZXZlbnQgdW5kZXJmbG93cyBpbiBgWUFQU19ERUxJTV9HRVRfUEtUX1NJWkUoKWAuXFxuMi4gVmFsaWRhdGluZyB0aGF0IGBieXRlc19yZW1haW5pbmdgIGlzIDQtYnl0ZSBhbGlnbmVkIGJlZm9yZSByZWFkaW5nIGRlbGltaXRlcnMgZnJvbSB0aGUgY2hpcCBidWZmZXIuXFxuXFxuVGhlc2UgY2hhbmdlcyBwcmV2ZW50IHBvdGVudGlhbCBpbnRlZ2VyIHVuZGVyZmxvdywgb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMsIG9yIHByb3RvY29sIGRlc3luY2hyb25pemF0aW9uIHdoZW4gcGFyc2luZyBoYXJkd2FyZSBwYWNrZXQgYnVmZmVycy4gQW55IG1lbW9yeSBzYWZldHkgdmlvbGF0aW9ucyBpbiB0aGlzIGFyZWEgKGUuZy4sIG5lZ2F0aXZlIHNpemUgcGFzc2VkIHRvIGJ1ZmZlciBvcGVyYXRpb25zIHJlc3VsdGluZyBpbiBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSBhcmUgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBpbiBicmFuY2hpbmcsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowj527p[1] Phase: Succeeded StartedAt: 2026-09-10 21:30:11 +0000 UTC FinishedAt: 2026-09-10 21:30:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj527p[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-10 21:30:11 +0000 UTC FinishedAt: 2026-09-10 21:30:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj527p[2] Phase: Running StartedAt: 2026-09-10 21:30:11 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj527p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"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":["mm81x_yaps_hw_read_pkts","mm81x_read_pkts_h_is_valid_delim","mm81x_yaps_read_pkts","mm81x_yaps_rx_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"series_id":"a1a93a93-7948-472e-9b89-3bc7950b56f5","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Running StartedAt: 2026-09-10 21:30:11 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +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":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"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":["mm81x_yaps_hw_read_pkts","mm81x_read_pkts_h_is_valid_delim","mm81x_yaps_read_pkts","mm81x_yaps_rx_handler"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"series_id":"a1a93a93-7948-472e-9b89-3bc7950b56f5","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-workflowj527p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"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":["mm81x_yaps_hw_read_pkts","mm81x_read_pkts_h_is_valid_delim","mm81x_yaps_read_pkts","mm81x_yaps_rx_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"series_id":"a1a93a93-7948-472e-9b89-3bc7950b56f5","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-10 21:30:11 +0000 UTC FinishedAt: 2026-09-10 21:30:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj527p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"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":["mm81x_yaps_hw_read_pkts","mm81x_read_pkts_h_is_valid_delim","mm81x_yaps_read_pkts","mm81x_yaps_rx_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"series_id":"a1a93a93-7948-472e-9b89-3bc7950b56f5","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-10 21:30:11 +0000 UTC FinishedAt: 2026-09-10 21:30:16 +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":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"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-workflowj527p/series-workflowj527p-convert-artifact-294627345/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowj527p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"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":["mm81x_yaps_hw_read_pkts","mm81x_read_pkts_h_is_valid_delim","mm81x_yaps_read_pkts","mm81x_yaps_rx_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"series_id":"a1a93a93-7948-472e-9b89-3bc7950b56f5","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-10 21:30:22 +0000 UTC FinishedAt: 2026-09-10 21:46:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj527p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"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":["mm81x_yaps_hw_read_pkts","mm81x_read_pkts_h_is_valid_delim","mm81x_yaps_read_pkts","mm81x_yaps_rx_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"series_id":"a1a93a93-7948-472e-9b89-3bc7950b56f5","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-10 21:30:22 +0000 UTC FinishedAt: 2026-09-10 21:46:44 +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:*e11b0fa3-3fb7-43ca-b9b8-1f49b144722c,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-workflowj527p/series-workflowj527p-convert-artifact-294627345/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": "3925a09b-56ae-4748-8175-155af39f9737", "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-workflowj527p/series-workflowj527p-build-action-516000191/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowj527p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"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":["mm81x_yaps_hw_read_pkts","mm81x_read_pkts_h_is_valid_delim","mm81x_yaps_read_pkts","mm81x_yaps_rx_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"series_id":"a1a93a93-7948-472e-9b89-3bc7950b56f5","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-10 21:30:22 +0000 UTC FinishedAt: 2026-09-10 21:46:34 +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:*e11b0fa3-3fb7-43ca-b9b8-1f49b144722c,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-workflowj527p/series-workflowj527p-convert-artifact-294627345/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": "3925a09b-56ae-4748-8175-155af39f9737", "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-workflowj527p/series-workflowj527p-build-action-516000191/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowj527p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"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":["mm81x_yaps_hw_read_pkts","mm81x_read_pkts_h_is_valid_delim","mm81x_yaps_read_pkts","mm81x_yaps_rx_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"series_id":"a1a93a93-7948-472e-9b89-3bc7950b56f5","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-10 21:46:44 +0000 UTC FinishedAt: 2026-09-10 21:46:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj527p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"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":["mm81x_yaps_hw_read_pkts","mm81x_read_pkts_h_is_valid_delim","mm81x_yaps_read_pkts","mm81x_yaps_rx_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"series_id":"a1a93a93-7948-472e-9b89-3bc7950b56f5","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-10 21:46:44 +0000 UTC FinishedAt: 2026-09-10 21:46:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj527p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"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":["mm81x_yaps_hw_read_pkts","mm81x_read_pkts_h_is_valid_delim","mm81x_yaps_read_pkts","mm81x_yaps_rx_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"series_id":"a1a93a93-7948-472e-9b89-3bc7950b56f5","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-10 21:46:44 +0000 UTC FinishedAt: 2026-09-10 21:46:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj527p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"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":["mm81x_yaps_hw_read_pkts","mm81x_read_pkts_h_is_valid_delim","mm81x_yaps_read_pkts","mm81x_yaps_rx_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"series_id":"a1a93a93-7948-472e-9b89-3bc7950b56f5","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-10 21:46:44 +0000 UTC FinishedAt: 2026-09-10 21:46:48 +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":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"series_id":"a1a93a93-7948-472e-9b89-3bc7950b56f5","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-workflowj527p/series-workflowj527p-convert-artifact-1512885476/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowj527p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"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":["mm81x_yaps_hw_read_pkts","mm81x_read_pkts_h_is_valid_delim","mm81x_yaps_read_pkts","mm81x_yaps_rx_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"series_id":"a1a93a93-7948-472e-9b89-3bc7950b56f5","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-10 21:46:54 +0000 UTC FinishedAt: 2026-09-10 21:48:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj527p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"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":["mm81x_yaps_hw_read_pkts","mm81x_read_pkts_h_is_valid_delim","mm81x_yaps_read_pkts","mm81x_yaps_rx_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"series_id":"a1a93a93-7948-472e-9b89-3bc7950b56f5","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-10 21:46:54 +0000 UTC FinishedAt: 2026-09-10 21:48:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3925a09b-56ae-4748-8175-155af39f9737,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-workflowj527p/series-workflowj527p-build-action-516000191/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-workflowj527p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"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":["mm81x_yaps_hw_read_pkts","mm81x_read_pkts_h_is_valid_delim","mm81x_yaps_read_pkts","mm81x_yaps_rx_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"series_id":"a1a93a93-7948-472e-9b89-3bc7950b56f5","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-10 21:48:47 +0000 UTC FinishedAt: 2026-09-10 21:48:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj527p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"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":["mm81x_yaps_hw_read_pkts","mm81x_read_pkts_h_is_valid_delim","mm81x_yaps_read_pkts","mm81x_yaps_rx_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"series_id":"a1a93a93-7948-472e-9b89-3bc7950b56f5","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-10 21:48:47 +0000 UTC FinishedAt: 2026-09-10 21:48:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj527p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"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":["mm81x_yaps_hw_read_pkts","mm81x_read_pkts_h_is_valid_delim","mm81x_yaps_read_pkts","mm81x_yaps_rx_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"series_id":"a1a93a93-7948-472e-9b89-3bc7950b56f5","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: Running StartedAt: 2026-09-10 21:48:47 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj527p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"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":["mm81x_yaps_hw_read_pkts","mm81x_read_pkts_h_is_valid_delim","mm81x_yaps_read_pkts","mm81x_yaps_rx_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"series_id":"a1a93a93-7948-472e-9b89-3bc7950b56f5","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: Running StartedAt: 2026-09-10 21:48:47 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +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:*e11b0fa3-3fb7-43ca-b9b8-1f49b144722c,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-workflowj527p/series-workflowj527p-convert-artifact-1512885476/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowj527p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"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":["mm81x_yaps_hw_read_pkts","mm81x_read_pkts_h_is_valid_delim","mm81x_yaps_read_pkts","mm81x_yaps_rx_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MORSEMICRO","MAC80211","USB","MM81X","MM81X_USB"],"series_id":"a1a93a93-7948-472e-9b89-3bc7950b56f5","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: Running StartedAt: 2026-09-10 21:48:47 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +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:*e11b0fa3-3fb7-43ca-b9b8-1f49b144722c,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-workflowj527p/series-workflowj527p-convert-artifact-1512885476/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,}