Name: series-workflowdf297 Phase: Succeeded StartedAt: 2026-08-02 19:32:20 +0000 UTC FinishedAt: 2026-08-02 20:20:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdf297[0] Phase: Succeeded StartedAt: 2026-08-02 19:32:20 +0000 UTC FinishedAt: 2026-08-02 20:19:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdf297[0].run-triage Phase: Succeeded StartedAt: 2026-08-02 19:32:20 +0000 UTC FinishedAt: 2026-08-02 20:19:45 +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": "4a0bd262df757b25fc4e2a53c947317c119ced4e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN", "WLAN_VENDOR_MARVELL", "CFG80211", "MWIFIEX", "MWIFIEX_USB", "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": "4a0bd262df757b25fc4e2a53c947317c119ced4e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN", "WLAN_VENDOR_MARVELL", "CFG80211", "MWIFIEX", "MWIFIEX_USB", "USB" ], "series_id": "fa025f7a-cc54-4236-8faf-54b156e9c62d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mwifiex_update_bss_desc_with_ie", "mwifiex_set_sta_ht_cap" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUFSVkVMTCYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNV0lGSUVYJiMzNDssCiAgICAmIzM0O01XSUZJRVhfVVNCJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUmIzM0OywKICAgICYjMzQ7bXdpZmlleF9zZXRfc3RhX2h0X2NhcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgZm9yIHZhcmlvdXMgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgaW4gYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGFuZCBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzL3dyaXRlcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSBwYXJ0IG9mIHRoZSBNYXJ2ZWxsIFdpRmktRXggZHJpdmVyIChgbXdpZmlleGApLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBpbnRlcmZhY2VzIChgTVdJRklFWF9VU0JgKSwgd2hpY2ggY2FuIGJlIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgc3l6a2FsbGVyJiMzOTtzIFVTQiBkdW1teV9oY2QgZW11bGF0aW9uLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIHZpYSBVU0IgVVJCIHJlc3BvbnNlcyBjb250YWluaW5nIG1hbGljaW91cyBJRXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6MTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2YmI1NjEyNzY2NGNlY2E5MjdjNjJhMWNkYzMzZDg2ZjMxMGU0ZDExXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAyMDoxNzozNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY1xuaW5kZXggOTdjMGVjM2I4MjJlNy4uMjIwMzFmYWJhMDU3ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNcbkBAIC0xMzg0LDYgJiM0MzsxMzg0LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0XHRcdFx0XHRcdGJzc19lbnRyeS1cdTAwM2ViZWFjb25fYnVmKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBXTEFOX0VJRF9IVF9DQVBBQklMSVRZOlxuJiM0MztcdFx0XHRpZiAoZWxlbWVudF9sZW4gXHUwMDNjIHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCkpXG4mIzQzO1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdFx0YnNzX2VudHJ5LVx1MDAzZWJjbl9odF9jYXAgPSAoc3RydWN0IGllZWU4MDIxMV9odF9jYXAgKilcbiBcdFx0XHRcdFx0KGN1cnJlbnRfcHRyICYjNDM7XG4gXHRcdFx0XHRcdHNpemVvZihzdHJ1Y3QgaWVlZV90eXBlc19oZWFkZXIpKTtcbkBAIC0xMzkyLDYgJiM0MzsxMzk0LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0XHRcdFx0YnNzX2VudHJ5LVx1MDAzZWJlYWNvbl9idWYpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIFdMQU5fRUlEX0hUX09QRVJBVElPTjpcbiYjNDM7XHRcdFx0aWYgKGVsZW1lbnRfbGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9odF9vcGVyYXRpb24pKVxuJiM0MztcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2ViY25faHRfb3BlciA9XG4gXHRcdFx0XHQoc3RydWN0IGllZWU4MDIxMV9odF9vcGVyYXRpb24gKikoY3VycmVudF9wdHIgJiM0MztcbiBcdFx0XHRcdFx0c2l6ZW9mKHN0cnVjdCBpZWVlX3R5cGVzX2hlYWRlcikpO1xuQEAgLTE0MDAsNiAmIzQzOzE0MDQsOCBAQCBpbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuIFx0XHRcdFx0XHRic3NfZW50cnktXHUwMDNlYmVhY29uX2J1Zik7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgV0xBTl9FSURfVkhUX0NBUEFCSUxJVFk6XG4mIzQzO1x0XHRcdGlmIChlbGVtZW50X2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCkpXG4mIzQzO1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdFx0YnNzX2VudHJ5LVx1MDAzZWRpc2FibGVfMTFhYyA9IGZhbHNlO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2ViY25fdmh0X2NhcCA9XG4gXHRcdFx0XHQodm9pZCAqKShjdXJyZW50X3B0ciAmIzQzO1xuQEAgLTE0MDksNiAmIzQzOzE0MTUsOCBAQCBpbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuIFx0XHRcdFx0XHQgICAgICBic3NfZW50cnktXHUwMDNlYmVhY29uX2J1Zik7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgV0xBTl9FSURfVkhUX09QRVJBVElPTjpcbiYjNDM7XHRcdFx0aWYgKGVsZW1lbnRfbGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV92aHRfb3BlcmF0aW9uKSlcbiYjNDM7XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0XHRic3NfZW50cnktXHUwMDNlYmNuX3ZodF9vcGVyID1cbiBcdFx0XHRcdCh2b2lkICopKGN1cnJlbnRfcHRyICYjNDM7XG4gXHRcdFx0XHRcdCBzaXplb2Yoc3RydWN0IGllZWVfdHlwZXNfaGVhZGVyKSk7XG5AQCAtMTQxNyw2ICYjNDM7MTQyNSw4IEBAIGludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4gXHRcdFx0XHRcdCAgICAgIGJzc19lbnRyeS1cdTAwM2ViZWFjb25fYnVmKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBXTEFOX0VJRF9CU1NfQ09FWF8yMDQwOlxuJiM0MztcdFx0XHRpZiAoIWVsZW1lbnRfbGVuKVxuJiM0MztcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2ViY25fYnNzX2NvXzIwNDAgPSBjdXJyZW50X3B0cjtcbiBcdFx0XHRic3NfZW50cnktXHUwMDNlYnNzX2NvXzIwNDBfb2Zmc2V0ID1cbiBcdFx0XHRcdCh1MTYpIChjdXJyZW50X3B0ciAtIGJzc19lbnRyeS1cdTAwM2ViZWFjb25fYnVmKTtcbkBAIC0xNDI3LDYgJiM0MzsxNDM3LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0XHRcdCh1MTYpIChjdXJyZW50X3B0ciAtIGJzc19lbnRyeS1cdTAwM2ViZWFjb25fYnVmKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBXTEFOX0VJRF9PUE1PREVfTk9USUY6XG4mIzQzO1x0XHRcdGlmICghZWxlbWVudF9sZW4pXG4mIzQzO1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdFx0YnNzX2VudHJ5LVx1MDAzZW9wZXJfbW9kZSA9ICh2b2lkICopY3VycmVudF9wdHI7XG4gXHRcdFx0YnNzX2VudHJ5LVx1MDAzZW9wZXJfbW9kZV9vZmZzZXQgPVxuIFx0XHRcdFx0XHQodTE2KSgodTggKilic3NfZW50cnktXHUwMDNlb3Blcl9tb2RlIC1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuY1xuaW5kZXggN2QzNjMxZDIxMjIzNi4uODQ0MjIzYzA0ZTJlZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmNcbkBAIC03MjEsNyAmIzQzOzcyMSw3IEBAIG13aWZpZXhfc2V0X3N0YV9odF9jYXAoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgY29uc3QgdTggKmllcyxcbiBcbiBcdGh0X2NhcF9pZSA9ICh2b2lkICopY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9IVF9DQVBBQklMSVRZLCBpZXMsXG4gXHRcdFx0XHRcdCAgICAgaWVzX2xlbik7XG4tXHRpZiAoaHRfY2FwX2llKSB7XG4mIzQzO1x0aWYgKGh0X2NhcF9pZSBcdTAwMjZcdTAwMjYgaHRfY2FwX2llLVx1MDAzZWxlbiBcdTAwM2U9IHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCkpIHtcbiBcdFx0aHRfY2FwID0gKHZvaWQgKikoaHRfY2FwX2llICYjNDM7IDEpO1xuIFx0XHRub2RlLVx1MDAzZWlzXzExbl9lbmFibGVkID0gMTtcbiBcdFx0bm9kZS1cdTAwM2VtYXhfYW1zZHUgPSBsZTE2X3RvX2NwdShodF9jYXAtXHUwMDNlY2FwX2luZm8pIFx1MDAyNlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjE3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtXTEFOJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX01BUlZFTEwmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llJiMzNDssCiAgICAmIzM0O213aWZpZXhfc2V0X3N0YV9odF9jYXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIGZvciB2YXJpb3VzIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIGluIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcGFydCBvZiB0aGUgTWFydmVsbCBXaUZpLUV4IGRyaXZlciAoYG13aWZpZXhgKS4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyAoYE1XSUZJRVhfVVNCYCksIHdoaWNoIGNhbiBiZSBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHN5emthbGxlciYjMzk7cyBVU0IgZHVtbXlfaGNkIGVtdWxhdGlvbi4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSB2aWEgVVNCIFVSQiByZXNwb25zZXMgY29udGFpbmluZyBtYWxpY2lvdXMgSUVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNmJiNTYxMjc2NjRjZWNhOTI3YzYyYTFjZGMzM2Q4NmYzMTBlNGQxMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDIgMjA6MTc6MzcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYwppbmRleCA5N2MwZWMzYjgyMmU3Li4yMjAzMWZhYmEwNTdmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMKQEAgLTEzODQsNiAmIzQzOzEzODQsOCBAQCBpbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLAogCQkJCQkJCWJzc19lbnRyeS0mZ3Q7YmVhY29uX2J1Zik7CiAJCQlicmVhazsKIAkJY2FzZSBXTEFOX0VJRF9IVF9DQVBBQklMSVRZOgomIzQzOwkJCWlmIChlbGVtZW50X2xlbiAmbHQ7IHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCkpCiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwogCQkJYnNzX2VudHJ5LSZndDtiY25faHRfY2FwID0gKHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwICopCiAJCQkJCShjdXJyZW50X3B0ciAmIzQzOwogCQkJCQlzaXplb2Yoc3RydWN0IGllZWVfdHlwZXNfaGVhZGVyKSk7CkBAIC0xMzkyLDYgJiM0MzsxMzk0LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwKIAkJCQkJYnNzX2VudHJ5LSZndDtiZWFjb25fYnVmKTsKIAkJCWJyZWFrOwogCQljYXNlIFdMQU5fRUlEX0hUX09QRVJBVElPTjoKJiM0MzsJCQlpZiAoZWxlbWVudF9sZW4gJmx0OyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9odF9vcGVyYXRpb24pKQomIzQzOwkJCQlyZXR1cm4gLUVJTlZBTDsKIAkJCWJzc19lbnRyeS0mZ3Q7YmNuX2h0X29wZXIgPQogCQkJCShzdHJ1Y3QgaWVlZTgwMjExX2h0X29wZXJhdGlvbiAqKShjdXJyZW50X3B0ciAmIzQzOwogCQkJCQlzaXplb2Yoc3RydWN0IGllZWVfdHlwZXNfaGVhZGVyKSk7CkBAIC0xNDAwLDYgJiM0MzsxNDA0LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwKIAkJCQkJYnNzX2VudHJ5LSZndDtiZWFjb25fYnVmKTsKIAkJCWJyZWFrOwogCQljYXNlIFdMQU5fRUlEX1ZIVF9DQVBBQklMSVRZOgomIzQzOwkJCWlmIChlbGVtZW50X2xlbiAmbHQ7IHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXApKQomIzQzOwkJCQlyZXR1cm4gLUVJTlZBTDsKIAkJCWJzc19lbnRyeS0mZ3Q7ZGlzYWJsZV8xMWFjID0gZmFsc2U7CiAJCQlic3NfZW50cnktJmd0O2Jjbl92aHRfY2FwID0KIAkJCQkodm9pZCAqKShjdXJyZW50X3B0ciAmIzQzOwpAQCAtMTQwOSw2ICYjNDM7MTQxNSw4IEBAIGludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsCiAJCQkJCSAgICAgIGJzc19lbnRyeS0mZ3Q7YmVhY29uX2J1Zik7CiAJCQlicmVhazsKIAkJY2FzZSBXTEFOX0VJRF9WSFRfT1BFUkFUSU9OOgomIzQzOwkJCWlmIChlbGVtZW50X2xlbiAmbHQ7IHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX3ZodF9vcGVyYXRpb24pKQomIzQzOwkJCQlyZXR1cm4gLUVJTlZBTDsKIAkJCWJzc19lbnRyeS0mZ3Q7YmNuX3ZodF9vcGVyID0KIAkJCQkodm9pZCAqKShjdXJyZW50X3B0ciAmIzQzOwogCQkJCQkgc2l6ZW9mKHN0cnVjdCBpZWVlX3R5cGVzX2hlYWRlcikpOwpAQCAtMTQxNyw2ICYjNDM7MTQyNSw4IEBAIGludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsCiAJCQkJCSAgICAgIGJzc19lbnRyeS0mZ3Q7YmVhY29uX2J1Zik7CiAJCQlicmVhazsKIAkJY2FzZSBXTEFOX0VJRF9CU1NfQ09FWF8yMDQwOgomIzQzOwkJCWlmICghZWxlbWVudF9sZW4pCiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwogCQkJYnNzX2VudHJ5LSZndDtiY25fYnNzX2NvXzIwNDAgPSBjdXJyZW50X3B0cjsKIAkJCWJzc19lbnRyeS0mZ3Q7YnNzX2NvXzIwNDBfb2Zmc2V0ID0KIAkJCQkodTE2KSAoY3VycmVudF9wdHIgLSBic3NfZW50cnktJmd0O2JlYWNvbl9idWYpOwpAQCAtMTQyNyw2ICYjNDM7MTQzNyw4IEBAIGludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsCiAJCQkJKHUxNikgKGN1cnJlbnRfcHRyIC0gYnNzX2VudHJ5LSZndDtiZWFjb25fYnVmKTsKIAkJCWJyZWFrOwogCQljYXNlIFdMQU5fRUlEX09QTU9ERV9OT1RJRjoKJiM0MzsJCQlpZiAoIWVsZW1lbnRfbGVuKQomIzQzOwkJCQlyZXR1cm4gLUVJTlZBTDsKIAkJCWJzc19lbnRyeS0mZ3Q7b3Blcl9tb2RlID0gKHZvaWQgKiljdXJyZW50X3B0cjsKIAkJCWJzc19lbnRyeS0mZ3Q7b3Blcl9tb2RlX29mZnNldCA9CiAJCQkJCSh1MTYpKCh1OCAqKWJzc19lbnRyeS0mZ3Q7b3Blcl9tb2RlIC0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jCmluZGV4IDdkMzYzMWQyMTIyMzYuLjg0NDIyM2MwNGUyZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYwpAQCAtNzIxLDcgJiM0Mzs3MjEsNyBAQCBtd2lmaWV4X3NldF9zdGFfaHRfY2FwKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIGNvbnN0IHU4ICppZXMsCiAKIAlodF9jYXBfaWUgPSAodm9pZCAqKWNmZzgwMjExX2ZpbmRfaWUoV0xBTl9FSURfSFRfQ0FQQUJJTElUWSwgaWVzLAogCQkJCQkgICAgIGllc19sZW4pOwotCWlmIChodF9jYXBfaWUpIHsKJiM0MzsJaWYgKGh0X2NhcF9pZSAmYW1wOyZhbXA7IGh0X2NhcF9pZS0mZ3Q7bGVuICZndDs9IHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCkpIHsKIAkJaHRfY2FwID0gKHZvaWQgKikoaHRfY2FwX2llICYjNDM7IDEpOwogCQlub2RlLSZndDtpc18xMW5fZW5hYmxlZCA9IDE7CiAJCW5vZGUtJmd0O21heF9hbXNkdSA9IGxlMTZfdG9fY3B1KGh0X2NhcC0mZ3Q7Y2FwX2luZm8pICZhbXA7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNjkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2lGaSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYG13aWZpZXhgIOKAkyBzcGVjaWZpY2FsbHksIGBzY2FuLmNgIGFuZCBgdXRpbC5jYC4gU2VlbXMgbGlrZSB0aGV5JiMzOTtyZSBhZGRpbmcgc29tZSBsZW5ndGggY2hlY2tzIHRvIHRoZSBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBoYW5kbGluZyB3aXRoaW4gYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGFuZCBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAuIFNvdW5kcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGFpbWVkIGF0IHByZXZlbnRpbmcgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZHMgb3Igd3JpdGVzLCB3aGljaCBpcyBhbHdheXMgZ29vZCB0byBzZWUuIFRoZSBkcml2ZXIgaW4gcXVlc3Rpb24gaGVyZSBpcyB0aGUgTWFydmVsbCBXaUZpIGRyaXZlciwgYG13aWZpZXhgLgoKTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBjYW4gdGhpcyBiZSB0ZXN0ZWQgaW4gYSB2aXJ0dWFsaXplZCBzZXR1cD8gV2lGaSBkcml2ZXJzIGFyZSBvZnRlbiBhIHBhaW4gYmVjYXVzZSB0aGV5IHVzdWFsbHkgZGVwZW5kIG9uIHNwZWNpZmljIGhhcmR3YXJlLCBsaWtlIFBDSWUsIFNESU8sIG9yIFVTQiBpbnRlcmZhY2VzLiBCdXQgd2FpdCBhIG1pbnV0ZSwgYG13aWZpZXhgICpkb2VzKiBzdXBwb3J0IFBDSWUsIFNESU8sICphbmQqIFVTQi4gVGhhdCBvcGVucyB1cCBzb21lIHBvc3NpYmlsaXRpZXMuCgpMZXQmIzM5O3MgZGlnIGRlZXBlci4gSWRlYWxseSwgSSB3YW50IHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhIFVTQiBkcml2ZXIgY29tcG9uZW50IHdpdGhpbiBgbXdpZmlleGAgdGhhdCBjb3VsZCBiZSBmdXp6ZWQuIElmIHRoZXJlJiMzOTtzIGEgVVNCIGltcGxlbWVudGF0aW9uLCB3ZSBtaWdodCBiZSBhYmxlIHRvIHVzZSBhIFVTQiBnYWRnZXQgc2V0dXAgb3IgYSBkdW1teSBIQ0Qgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMgKHVzaW5nIGBkdW1teV9oY2RgKSB3b3VsZCBiZSBwZXJmZWN0IGZvciB0aGlzIGtpbmQgb2YgdGVzdGluZy4gU28sIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZywgcHJvYmFibHkgdW5kZXIgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnYCwgdG8gc2VlIHdoYXQmIzM5O3MgZW5hYmxlZCBhbmQgd2hhdCYjMzk7cyBub3QuIFRoYXQgc2hvdWxkIHRlbGwgbWUgaWYgd2UgaGF2ZSBhIHZpYWJsZSBmdXp6aW5nIHRhcmdldC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVdJRklFWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyOmNvbmZpZyBNV0lGSUVYXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MTI6Y29uZmlnIE1XSUZJRVhfU0RJT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjU6Y29uZmlnIE1XSUZJRVhfUENJRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjYtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzozNzpjb25maWcgTVdJRklFWF9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM4LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjMzCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gYXMgaWYgdGhleSB3ZXJlIG15IG93bjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50IGFuZCBEZXBlbmRlbmN5IENoZWNrKioKClJpZ2h0LCBleGNlbGxlbnQsIHRoZSBgTVdJRklFWF9VU0JgIG1vZHVsZSBpcyBwcmVzZW50IGFuZCBhY2NvdW50ZWQgZm9yLiBHb29kLiBOb3csIGJlZm9yZSBJIGdldCB0b28gZmFyIGRvd24gdGhlIHJvYWQsIGxldCYjMzk7cyBqdXN0IHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIHVzdWFsIG1lbnRhbCBjaGVja2xpc3QuIExldCBtZSBzZWUuLi4gSSYjMzk7bGwgbmVlZCB0byBpbW1lZGlhdGVseSBzdGFydCB0aGlua2luZyBhYm91dCBpdHMgZGVwZW5kZW5jaWVzLiAqV2hpY2gqIG90aGVyIGtlcm5lbCBtb2R1bGVzIG9yIHN5c3RlbSBsaWJyYXJpZXMgaXMgYE1XSUZJRVhfVVNCYCBnb2luZyB0byByZWx5IG9uPyBBcmUgdGhlcmUgYW55IHNwZWNpZmljIHZlcnNpb25zIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gQW55IHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciBkcml2ZXJzIHRoYXQgSSBrbm93IGZyb20gZXhwZXJpZW5jZSBjYW4gYmUgcHJvYmxlbWF0aWM/IEdvdHRhIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBvdmVybG9va2luZyBzb21lIG9ic2N1cmUgcGllY2Ugb2YgdGhlIHB1enpsZSB0aGF0JiMzOTtsbCBiaXRlIG1lIGxhdGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNV0lGSUVYX1VTQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTI1PWNvbmZpZyBNV0lGSUVYX1BDSUVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM3OmNvbmZpZyBNV0lGSUVYX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2MDIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgTWFydmVsbCBXaS1GaSBEcml2ZXIgS2NvbmZpZyoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgc3BlY2lmaWNzIG9mIHRoZSBNYXJ2ZWxsIHdpcmVsZXNzIGRyaXZlciBjb25maWd1cmF0aW9uLiBJJiMzOTttIGdvaW5nIHRvIG5hdmlnYXRlIGRpcmVjdGx5IHRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ2AgYXJvdW5kIGxpbmUgMzcuIFRoaXMgYXJlYSBpcyB0eXBpY2FsbHkgd2hlcmUgdGhlIGNvcmUgbW9kdWxlIHNlbGVjdGlvbiBvcHRpb25zIG9yIGZlYXR1cmUgZGVmaW5pdGlvbnMgcmVzaWRlLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBmdW5kYW1lbnRhbCBrbm9icyBhbmQgbGV2ZXJzIHRoYXQgY29udHJvbCB0aGUgY29tcGlsYXRpb24gYW5kIGluY2x1c2lvbiBvZiB0aGUgYG13aWZpZXhgIGRyaXZlciB3aXRoaW4gYSBMaW51eCBrZXJuZWwgYnVpbGQuIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgYmUgYWJsZSB0byBxdWlja2x5IHplcm8gaW4gb24gb3B0aW9ucyByZWxhdGVkIHRvIGhhcmR3YXJlIHN1cHBvcnQsIGNyaXRpY2FsIGZlYXR1cmUgZW5hYmxlcyBvciBkaXNhYmxlcyAobGlrZSBwb3dlciBtYW5hZ2VtZW50IG9yIHNlY3VyaXR5IHByb3RvY29scyksIG9yIHBvc3NpYmx5IGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBjb25maWd1cmF0aW9uLiBTZWVpbmcgdGhlIHN0cnVjdHVyZSBvZiB0aGUgS2NvbmZpZyBmaWxlIHdpbGwgaW1tZWRpYXRlbHkgZ2l2ZSBtZSBjb250ZXh0LCBzbyBJIGNhbiBzdGFydCB0byByZWFzb24gYWJvdXQgZGVwZW5kZW5jaWVzLCByZWxhdGlvbnNoaXBzLCBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoaW4gdGhlIGRyaXZlciYjMzk7cyBjb25maWd1cmF0aW9uLiBUaGlzIGluaXRpYWwgZXhhbWluYXRpb24gd2lsbCBoZWxwIGluZm9ybSBhbnkgZnVydGhlciBpbnZlc3RpZ2F0aW9uIEkgbmVlZCB0byBkby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAzMDpcdFx0aGVscFxuICAzMTpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxuICAzMjpcdFx0ICA4NzY2Lzg4OTcvODk5NyBjaGlwc2V0cyB3aXRoIFBDSWUgaW50ZXJmYWNlLlxuICAzMzpcdFxuICAzNDpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuICAzNTpcdFx0ICBtd2lmaWV4X3BjaWUuXG4gIDM2Olx0XG4gIDM3Olx0Y29uZmlnIE1XSUZJRVhfVVNCXG4gIDM4Olx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1wmIzM0O1xuICAzOTpcdFx0ZGVwZW5kcyBvbiBNV0lGSUVYIFx1MDAyNlx1MDAyNiBVU0JcbiAgNDA6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgNDE6XHRcdGhlbHBcbiAgNDI6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE1hcnZlbGxcbiAgNDM6XHRcdCAgODc5Ny84OTk3IGNoaXBzZXQgd2l0aCBVU0IgaW50ZXJmYWNlLlxuICA0NDpcdFxuICA0NTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuICA0NjpcdFx0ICBtd2lmaWV4X3VzYi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTQ5CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBkZXBlbmRlbmNpZXMsIHN1bW1hcml6ZWQgYXMgYSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRlcGVuZGVuY3kgRGVlcCBEaXZlKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgYE1XSUZJRVhfVVNCYCBpcyBidWlsdCBvbiB0b3Agb2YgYE1XSUZJRVhgIGFuZCBgVVNCYCDigJMgbWFrZXMgc2Vuc2UsIHRoZSAmIzM0O1VTQiYjMzQ7IHBhcnQgaXMgYSBkZWFkIGdpdmVhd2F5LCBidXQgSSBzdGlsbCBsaWtlIHRvIGJlIHRob3JvdWdoLiBOb3csIGBNV0lGSUVYYCBpdHNlbGYgcmVsaWVzIG9uIGBNQUM4MDIxMWAgYW5kIGBDRkc4MDIxMWAuIFRpbWUgdG8gZG91YmxlLWNoZWNrIHRob3NlIGBNV0lGSUVYYCBkZXBlbmRlbmNpZXMgaW4gZGV0YWlsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBzdGFjayB0byBlbnN1cmUgYSBzdGFibGUgYW5kIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbjsgdGhpcyBpbml0aWFsIG9ic2VydmF0aW9uIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBNV0lGSUVYXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIENGRzgwMjExXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXG4gICA3Olx0XHQgIDgwMi4xMW4vYWMgY2hpcHNldHMuXG4gICA4Olx0XG4gICA5Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDEwOlx0XHQgIG13aWZpZXguXG4gIDExOlx0XG4gIDEyOlx0Y29uZmlnIE1XSUZJRVhfU0RJT1xuICAxMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgU0Q4Nzg2L1NEODc4Ny9TRDg3OTcvU0Q4ODg3L1NEODg5Ny9TRDg5NzcvU0Q4OTc4L1NEODk4Ny9TRDg5OTdcJiMzNDtcbiAgMTQ6XHRcdGRlcGVuZHMgb24gTVdJRklFWCBcdTAwMjZcdTAwMjYgTU1DXG4gIDE1Olx0XHRzZWxlY3QgRldfTE9BREVSXG4gIDE2Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgMTc6XHRcdGhlbHBcbiAgMTg6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE1hcnZlbGxcbiAgMTk6XHRcdCAgODc4Ni84Nzg3Lzg3OTcvODg4Ny84ODk3Lzg5NzcvODk3OC84OTg3Lzg5OTcgY2hpcHNldHMgd2l0aFxuICAyMDpcdFx0ICBTRElPIGludGVyZmFjZS4gU0Q4OTc4IGlzIGFsc28ga25vd24gYXMgTlhQIElXNDE2LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzczCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNV0lGSUVYIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgTVdJRklFWGAgZHJpdmVyIGFuZCBpbW1lZGlhdGVseSBzZWUgaXRzIGRlcGVuZGVuY2Ugb24gYENGRzgwMjExYC4gVGhhdCYjMzk7cyBhIGtleSBzdGFydGluZyBwb2ludC4gVGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZWAgYW5kIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYCwgYW5kIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHdoZXRoZXIgdGhlc2UgZnVuY3Rpb25zIGFyZSBldmVuIHJlbGV2YW50IHdoZW4gY29uc2lkZXJpbmcgVVNCIG9wZXJhdGlvbi4gQXJlIHRoZXNlIHBhdGhzIGV2ZW4gdXNlZCB3aGVuIHRoZSBkZXZpY2UgaXMgY29ubmVjdGVkIHZpYSBVU0I/IEkgbmVlZCB0byBrbm93IGlmIHRoZXNlIGFyZSBldmVuIGNhbGxlZCBmcm9tIFVTQiwgb3IgaWYgdGhleSBhcmUganVzdCB1c2VkIGZvciB0aGUgUENJIGludGVyZmFjZS4KCkxldCYjMzk7cyBzdGFydCBieSBkaWdnaW5nIGludG8gd2hlcmUgYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGlzIGNhbGxlZC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgY29kZSBmbG93IGFuZCBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIHBvc3NpYmxlIGNvZGUgcGF0aHMgaGVyZSByZWxldmFudCB0byBVU0IgdXNhZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTUzOD1pbnQgbXdpZmlleF9maWxsX25ld19ic3NfZGVzYyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTU0MC1cdFx0XHQgICAgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjE1NDE6aW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTU0Mi1cdFx0XHRcdCAgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZW50cnkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTExMj1td2lmaWV4X3JldF84MDJfMTFfc2Nhbl9nZXRfdGx2X3B0cnMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTExODEtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjExODI6aW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTE4My1cdFx0XHRcdCAgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZW50cnkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTE0MT1pbnQgbXdpZmlleF9maWxsX25ld19ic3NfZGVzYyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0xOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6MTkyOlx0cmV0dXJuIG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUocHJpdi1cdTAwM2VhZGFwdGVyLCBic3NfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMTkzLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjU4MAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipUcmFjaW5nIHRoZSBCU1MgRGVzY3JpcHRpb24gUG9wdWxhdGlvbioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBob3cgdGhlc2UgQlNTIGRlc2NyaXB0b3JzIGFyZSBiZWluZyBwb3B1bGF0ZWQuIFRoZSBjb2RlIHNuaXBwZXQgbWVudGlvbnMgYG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2NgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGNoYWluLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29udGV4dC4gTGV0JiMzOTtzIHNlZS4uLndoZXJlICppcyogYG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2NgIGJlaW5nIGNhbGxlZCBmcm9tPyBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgZnVuY3Rpb24gdG8gZ2V0IGEgc2Vuc2Ugb2YgaG93IHRoZSBCU1MgZGVzY3JpcHRpb24gaW5mb3JtYXRpb24gaXMgZmxvd2luZy4gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIHRyaWdnZXIsIHRoZSBpbnB1dCBjb250ZXh0LCB0aGUgcG90ZW50aWFsIGVycm9ycywgdGhlIGludGVuZGVkIHVzZS4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzdGFjayB3aWxsIHByb3ZpZGUgYSBtdWNoIG1vcmUgY29tcGxldGUgcGljdHVyZSB0aGFuIHNpbXBseSBpbnNwZWN0aW5nIHRoaXMgb25lIGZ1bmN0aW9uIGluIGlzb2xhdGlvbi4gVGhlIGdvYWwgaXMgdG8gZnVsbHkgdW5kZXJzdGFuZCBpdHMgZnVuY3Rpb24gd2l0aGluIHRoZSBncmVhdGVyIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTUzNj1pbnQgbXdpZmlleF9nZXRfYnNzX2luZm8oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNTM3LVx0XHRcdCBzdHJ1Y3QgbXdpZmlleF9ic3NfaW5mbyAqKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTUzODppbnQgbXdpZmlleF9maWxsX25ld19ic3NfZGVzYyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNTM5LVx0XHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9ic3MgKmJzcyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE2NTU9c3RhdGljIGludCBtd2lmaWV4X3NhdmVfaGlkZGVuX3NzaWRfY2hhbm5lbHMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2NjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE2Njc6XHRyZXQgPSBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjKHByaXYsIGJzcywgYnNzX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNjY4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2OTEtXHQvKiBiZWFjb25faWUgYnVmZmVyIHdhcyBhbGxvY2F0ZWQgaW4gZnVuY3Rpb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTY5MjpcdCAqIG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2MoKS4gRnJlZSBpdCBub3cuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2OTMtXHQgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE2OTk9c3RhdGljIGludCBtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE3MDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE3MTA6XHRyZXQgPSBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjKHByaXYsIGJzcywgYnNzX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzExLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE3MzAtXHQvKiBiZWFjb25faWUgYnVmZmVyIHdhcyBhbGxvY2F0ZWQgaW4gZnVuY3Rpb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTczMTpcdCAqIG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2MoKS4gRnJlZSBpdCBub3cuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE3MzItXHQgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM9ODg9aW50IG13aWZpZXhfcmVxdWVzdF9zZXRfbXVsdGljYXN0X2xpc3Qoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMTQwLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jOjE0MTppbnQgbXdpZmlleF9maWxsX25ld19ic3NfZGVzYyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTE0Mi1cdFx0XHQgICAgICBzdHJ1Y3QgY2ZnODAyMTFfYnNzICpic3MsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTMzMj1pbnQgbXdpZmlleF9ic3Nfc3RhcnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgc3RydWN0IGNmZzgwMjExX2JzcyAqYnNzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0zNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6MzUxOlx0XHRyZXQgPSBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjKHByaXYsIGJzcywgYnNzX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTM1Mi1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtNDQ2LVx0LyogYmVhY29uX2llIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGluIGZ1bmN0aW9uXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6NDQ3Olx0ICogbXdpZmlleF9maWxsX25ld19ic3NfZGVzYygpLiBGcmVlIGl0IG5vdy5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy00NDgtXHQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzkzNAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDI1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciBgbXdpZmlleGAqKgoKT2theSwgc28gaXQgbG9va3MgbGlrZSBgbXdpZmlleF9maWxsX25ld19ic3NfZGVzY2AgZ2V0cyBjYWxsZWQgaW4gYSBmZXcga2V5IHBsYWNlczogYG13aWZpZXhfc2F2ZV9oaWRkZW5fc3NpZF9jaGFubmVsc2AsIGBtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXNgLCBhbmQgYG13aWZpZXhfYnNzX3N0YXJ0YC4gQWxsIG9mIHRoZXNlIGFyZSBjbGVhcmx5IGludm9sdmVkIGluIHNjYW5uaW5nIGZvciBhbmQgY29ubmVjdGluZyB0byBCYXNpYyBTZXJ2aWNlIFNldHMsIHdoaWNoIG1ha2VzIHNlbnNlIHNpbmNlIGBtd2lmaWV4YCBpcyBhIFdpRmkgZHJpdmVyLiBNeSBpbml0aWFsIGluc3RpbmN0IHdhcyB0byByZWFjaCBmb3IgYG1hYzgwMjExX2h3c2ltYCwgYnV0IHdhaXQuLi4gYG13aWZpZXhgIGlzIGEgKmZ1bGxtYWMqIGRyaXZlciwgbm90IGEgbWFjODAyMTEgZHJpdmVyLiBJIG5lZWQgdG8gYmUgc3VyZSBhYm91dCB0aGlzLCBzbyBsZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBLY29uZmlnLiBZZXAsIGNvbmZpcm1lZDsgaXQgZGVwZW5kcyBvbiBgQ0ZHODAyMTFgLCB3aGljaCBtZWFucyBpdCYjMzk7cyBmdWxsbWFjLgoKU28sIGNhbiB3ZSBhY3R1YWxseSBmdXp6IGEgZnVsbG1hYyBkcml2ZXI/IFRoYXQmIzM5O3MgdGhlIHF1ZXN0aW9uLiBBaGEhIElmIGl0IHVzZXMgYSBVU0IgaW50ZXJmYWNlLCB0aGVuIHdlIG1pZ2h0IGhhdmUgYSB2aWFibGUgcGF0aCB3aXRoIHN5emthbGxlci4gU3l6a2FsbGVyIGlzIGdyZWF0IHdpdGggZW11bGF0aW5nIFVTQiBkZXZpY2VzIHVzaW5nIHRoZSBgZHVtbXlfaGNkYCBpbnRlcmZhY2U7IGl0IGNhbiBzZW5kIHJlc3BvbnNlcyB0byBVUkJzISBUaGlzIGlzIGxvb2tpbmcgcHJvbWlzaW5nLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBjaGVjayBvdXQgYG13aWZpZXhfdXNiYC4gT2theSwgeWVzLCBgbXdpZmlleF91c2JgIGV4aXN0cywgaXQgbG9va3MgbGlrZSBpdCBjYW4gYmUgZnV6emVkIHZpYSBzeXprYWxsZXIhIE5vdywgbGV0JiMzOTtzIGFsc28gaGF2ZSBhIHF1aWNrIGxvb2sgYXQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgLCBiZWNhdXNlIHRoYXQgaXMgcHJvYmFibHkgaW50ZXJlc3RpbmcgdG9vLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3NldF9zdGFfaHRfY2FwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTE1OTA9dm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNTkxOm13aWZpZXhfc2V0X3N0YV9odF9jYXAoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgY29uc3QgdTggKmllcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTU5Mi1cdFx0ICAgICAgIGludCBpZXNfbGVuLCBzdHJ1Y3QgbXdpZmlleF9zdGFfbm9kZSAqbm9kZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jPTk0PWludCBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jLTEzOC1cdFx0XHRcdCAqIGV2ZW50IHdhcyBjb3BpZWQgaW50bzsgb3RoZXJ3aXNlIHRoZSBJRSB3YWxrXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmM6MTM5Olx0XHRcdFx0ICogaW4gbXdpZmlleF9zZXRfc3RhX2h0X2NhcCgpIHJlYWRzIHBhc3RcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy0xNDAtXHRcdFx0XHQgKiBldmVudF9ib2R5IGFuZCBvdXQgb2YgdGhlIGFkYXB0ZXIgc2xhYiBvYmplY3QuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jLTE2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYzoxNjk6XHRcdG13aWZpZXhfc2V0X3N0YV9odF9jYXAocHJpdiwgc2luZm8tXHUwMDNlYXNzb2NfcmVxX2llcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy0xNzAtXHRcdFx0XHQgICAgICAgc2luZm8tXHUwMDNlYXNzb2NfcmVxX2llc19sZW4sIG5vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM9NzEyPXZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM6NzEzOm13aWZpZXhfc2V0X3N0YV9odF9jYXAoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgY29uc3QgdTggKmllcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMtNzE0LVx0XHQgICAgICAgaW50IGllc19sZW4sIHN0cnVjdCBtd2lmaWV4X3N0YV9ub2RlICpub2RlKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDk4CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMzM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIGBtd2lmaWV4YCB3aXRoIFVTQioqCgpPa2F5LCBzbyBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAgaXMgdHJpZ2dlcmVkIGJ5IGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YC4gIEFuZCBzaW5jZSB0aGlzIGlzIFVTQiwgdGhlc2UgZXZlbnRzIGFyZSB1bHRpbWF0ZWx5IGNvbWluZyBmcm9tIFVTQiBVUkJzLCBzbyB3ZSYjMzk7cmUgZGVmaW5pdGVseSBsb29raW5nIGF0IGEgZnV6emFibGUgcGF0aCBoZXJlISBUaGF0IG1ha2VzIHRoaW5ncyBtdWNoIHNpbXBsZXIuCgpOb3csIGxldCYjMzk7cyB6ZXJvIGluIG9uIHRoZSBrZXkgc3ltYm9scy4gVGhpcyBwYXRjaCBoaXRzIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgLiAgUmlnaHQsIGxldCYjMzk7cyBzZWUsIGFyZSB0aGV5IHN0YXRpYz8gIEdvb2QsIG5laXRoZXIgYXJlIHN0YXRpYy4gYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGlzIGluIGBzY2FuLmNgIGFuZCBkZWNsYXJlZCBpbiBgbWFpbi5oYC4gYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIGlzIGluIGB1dGlsLmNgIGFuZCBkZWNsYXJlZCBpbiBgbWFpbi5oYC4KCkhtbSwgc2hvdWxkIEkgZXhwYW5kIHRoZSBmb2N1cz8gUGVyaGFwcyBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAgaXRzZWxmLCBvciBtYXliZSBgbXdpZmlleF9maWxsX25ld19ic3NfZGVzY2AgbWlnaHQgYmUgd29ydGggYSBsb29rLiBGb3Igbm93LCBsZXQmIzM5O3MganVzdCBzdGljayB3aXRoIHRoZSBtb2RpZmllZCBmdW5jdGlvbnM6IGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgLiBTaW1wbGljaXR5IGlzIGtleSB0byBnZXR0aW5nIHRoaXMgc2V0IHVwLgoKQWxyaWdodCwgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW0gSSBnb2luZyB0byBuZWVkIHRvIGJ1aWxkIGZvciB0aGlzPyBEZWZpbml0ZWx5IGBNV0lGSUVYYCwgYE1XSUZJRVhfVVNCYCwgYW5kIGBDRkc4MDIxMWAsIG9idmlvdXNseS4gIFNpbmNlIHdlJiMzOTtyZSBmb2N1c2luZyBvbiBVU0IsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIGBVU0JgIGVuYWJsZWQuIE5vIHN1cnByaXNlcyB0aGVyZS4gR29vZCwgSSYjMzk7bGwgZG91YmxlIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBNV0lGSUVYX1VTQmAganVzdCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNV0lGSUVYX1VTQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTI1PWNvbmZpZyBNV0lGSUVYX1BDSUVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM3OmNvbmZpZyBNV0lGSUVYX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDAwNgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDEzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbiwgYE1XSUZJRVhfVVNCYC4gV2UmIzM5O3ZlIGdvdCB0aGUgYmFzaWMgc3RydWN0dXJlIGhlcmUsIHNlZWluZyB0aGF0IGl0JiMzOTtzIGEgdHJpc3RhdGUgb3B0aW9uIGZvciB0aGUgTWFydmVsbCBXaUZpLUV4IERyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aG9zZSBVU0IgZGV2aWNlcy4gSXQmIzM5O3Mgb2J2aW91c2x5IGRlcGVuZGVudCBvbiBgTVdJRklFWGAgYW5kIGBVU0JgLCBubyBzdXJwcmlzZXMgdGhlcmUuIFRoYXQmIzM5O3MgYSBnaXZlbi4KCkkgbmVlZCB0byBtYWtlIHN1cmUgdGhvc2UgYXJlIGFsbCBzZXQuIFNvIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIGBNV0lGSUVYX1VTQmAsIGBNV0lGSUVYYCwgYFVTQmAgYXJlIG15IGNvcmUgZGVwZW5kZW5jaWVzLiBJIGFsc28gc2VlIGBDRkc4MDIxMWAgaXMgbmVlZGVkIGluIHRoaXMgY2hhaW4uIE5vdywgSSB0aG91Z2h0IGBNQUM4MDIxMWAgbWlnaHQgYmUgaW1wb3J0YW50IHRvbywgYnV0IGl0IHNlZW1zIHRoYXQgaXQmIzM5O3Mgbm90IHN0cmljdGx5ICpyZXF1aXJlZCogYnkgYE1XSUZJRVhgLCBhbmQgaXQmIzM5O3MgYENGRzgwMjExYCB0aGF0JiMzOTtzIHRoZSBrZXkgcmVxdWlyZW1lbnQgaGVyZS4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBDRkc4MDIxMWAganVzdCB0byBiZSBjb21wbGV0ZWx5IGNlcnRhaW4gdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0ZHODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZz0xND1jb25maWcgV0VYVF9QUklWXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzpjb25maWcgQ0ZHODAyMTFcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7Y2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnPTM4PWNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctNTEtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo1Mjpjb25maWcgQ0ZHODAyMTFfREVWRUxPUEVSX1dBUk5JTkdTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01My1cdGJvb2wgXCYjMzQ7ZW5hYmxlIGRldmVsb3BlciB3YXJuaW5nc1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTY3LVxubmV0L3dpcmVsZXNzL0tjb25maWc6Njg6Y29uZmlnIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xubmV0L3dpcmVsZXNzL0tjb25maWctNjktXHRib29sIFwmIzM0O2NmZzgwMjExIGNlcnRpZmljYXRpb24gb251c1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTg4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6ODk6Y29uZmlnIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05MC1cdGJvb2wgXCYjMzQ7cmVxdWlyZSByZWdkYiBzaWduYXR1cmVcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctOTgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo5OTpjb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDAtXHRib29sIFwmIzM0O2FsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTEwLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTExOmNvbmZpZyBDRkc4MDIxMV9FWFRSQV9SRUdEQl9LRVlESVJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMi1cdHN0cmluZyBcJiMzNDthZGRpdGlvbmFsIHJlZ2RiIGtleSBkaXJlY3RvcnlcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTIxLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTIyOmNvbmZpZyBDRkc4MDIxMV9SRUdfQ0VMTFVMQVJfSElOVFNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgcmVndWxhdG9yeSBzdXBwb3J0IGZvciBjZWxsdWxhciBiYXNlIHN0YXRpb24gaGludHNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzQtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzU6Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTM2LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTU4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTU5OmNvbmZpZyBDRkc4MDIxMV9ERUZBVUxUX1BTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjAtXHRib29sIFwmIzM0O2VuYWJsZSBwb3dlcnNhdmUgYnkgZGVmYXVsdFwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE2OTpjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzc6Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc4LVx0Ym9vbCBcJiMzNDtzdXBwb3J0IENSREFcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTg2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTg3OmNvbmZpZyBDRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O2NmZzgwMjExIHdpcmVsZXNzIGV4dGVuc2lvbnMgY29tcGF0aWJpbGl0eVwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5My1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5NDpjb25maWcgQ0ZHODAyMTFfS1VOSVRfVEVTVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTk1LVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIGNmZzgwMjExXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzMzEKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIFZ1bG5lcmFiaWxpdHkqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBgQ0ZHODAyMTFgIGlzIGluaGVyZW50bHkgZmluZSBzaW5jZSBpdHMgZGVwZW5kZW5jeSBvbiBgUkZLSUxMYCBpcyBhIGJpdCByZWR1bmRhbnQgLSB0aGUgYnVpbGQgc3lzdGVtIHdpbGwgcmVzb2x2ZSB0aGF0LiBUaGUgY3JpdGljYWwgY29uZmlndXJhdGlvbnMgaGVyZSBhcHBlYXIgdG8gYmUgY2VudGVyZWQgYXJvdW5kIHRoZSBNYXJ2ZWxsIFdpRmktRXggZHJpdmVyLCBzcGVjaWZpY2FsbHkgYE1XSUZJRVhgIGFuZCBgTVdJRklFWF9VU0JgLiBXaGlsZSBgVVNCYCBpcyB0eXBpY2FsbHkgZW5hYmxlZCBpbiB0aGUgc3l6a2FsbGVyIGNvbmZpZ3MsIGl0JiMzOTtzIHdvcnRoIGV4cGxpY2l0bHkgbGlzdGluZyBpdCBoZXJlIGZvciBjbGFyaXR5LiBUaGUgaW1wb3J0YW50IG9uZSBpcyBkZWZpbml0ZWx5IGBNV0lGSUVYX1VTQmAuCgpNeSBmb2N1cyBpcyB0aGUgY29yZSBpc3N1ZSwgYW5kIGl0JiMzOTtzIGxvb2tpbmcgbGlrZSB0aGlzIGNlbnRlcnMgYXJvdW5kIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgLiBCYXNlZCBvbiB0aGUgcGF0Y2gsIHRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgd2VyZSBtb2RpZmllZCB0byBpbmNsdWRlIGxlbmd0aCBjaGVja3MgZm9yIHZhcmlvdXMgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykuIFRoZSBnb2FsIGlzIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBvciB3cml0ZXMgd2l0aGluIHRoZXNlIHR3byBzcGVjaWZpYyBmdW5jdGlvbnMuIFRoZSBNYXJ2ZWxsIFdpRmktRXggZHJpdmVyIChgbXdpZmlleGApIGlzIHNwZWNpZmljYWxseSB0aGUgZHJpdmVyIHRoYXQgc3VwcG9ydHMgVVNCIGludGVyZmFjZXMgKGBNV0lGSUVYX1VTQmApLCBtYWtpbmcgaXQgcmVhZGlseSBmdXp6YWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2Ugc3l6a2FsbGVyLiBUaGUgdnVsbmVyYWJpbGl0eSYjMzk7cyBhdHRhY2sgdmVjdG9yIGlzIHRocm91Z2ggVVNCIFVSQiByZXNwb25zZXMgY29udGFpbmluZyBtYWxpY2lvdXMgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcyksIHdoaWNoIGFyZSBub3cgY2hlY2tlZC4KClRoZXJlZm9yZSwgdGhlIGNvbmZpZyBvcHRpb25zIEkgbmVlZCB0byBlbmFibGUgYXJlOiBgTVdJRklFWGAsIGBNV0lGSUVYX1VTQmAsIGBDRkc4MDIxMWAsIGFuZCBgVVNCYC4gQWxzbywgbGV0JiMzOTtzIHZlcmlmeSBpZiBgV0xBTmAgaXMgcmVxdWlyZWQgZm9yIGBNV0lGSUVYYCwgdGhhdCB1c3VhbGx5IGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVdJRklFWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyOmNvbmZpZyBNV0lGSUVYXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MTI6Y29uZmlnIE1XSUZJRVhfU0RJT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjU6Y29uZmlnIE1XSUZJRVhfUENJRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjYtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzozNzpjb25maWcgTVdJRklFWF9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM4LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI0OTAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBwcm92aWRlZCB0ZXh0OgoKKipEaXZpbmcgaW50byB0aGUgTWFydmVsbCBXaXJlbGVzcyBLY29uZmlnKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBjb25maWd1cmVkIGZvciBNYXJ2ZWxsIHdpcmVsZXNzIGRldmljZXMuIFRoYXQgbWVhbnMgZ29pbmcgc3RyYWlnaHQgdG8gdGhlIHNvdXJjZTogYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgYWxsIHRoZSBjb21waWxhdGlvbiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBkZWZhdWx0IHNldHRpbmdzIGFyZSBsaWtlbHkgZGVmaW5lZCBmb3IgdGhlIE1hcnZlbGwgd2lyZWxlc3MgZHJpdmVycyB3aXRoaW4gdGhlIGtlcm5lbC4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHRoZSBNYXJ2ZWxsLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gaW50ZXJhY3RzIHdpdGggdGhlIGJyb2FkZXIgd2lyZWxlc3Mgc3Vic3lzdGVtLiBJJiMzOTttIGhvcGluZyB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBvciBwbGF0Zm9ybS1zcGVjaWZpYyBjb25zaWRlcmF0aW9ucyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSBpdHMgYmVoYXZpb3IuIEZyb20gdGhlcmUsIEkmIzM5O2xsIGJlIGluIGEgYmV0dGVyIHBvc2l0aW9uIHRvIGFuYWx5emUgdGhlIHJlbGV2YW50IHNvdXJjZSBjb2RlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFdMQU5fVkVORE9SX01BUlZFTExcbiAgIDM6XHRcdGJvb2wgXCYjMzQ7TWFydmVsbCBkZXZpY2VzXCYjMzQ7XG4gICA0Olx0XHRkZWZhdWx0IHlcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgSWYgeW91IGhhdmUgYSB3aXJlbGVzcyBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cbiAgIDc6XHRcbiAgIDg6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gICA5Olx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXG4gIDEwOlx0XHQgIHF1ZXN0aW9ucyBhYm91dCB0aGVzZSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcbiAgMTE6XHRcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxuICAxMjpcdFxuICAxMzpcdGlmIFdMQU5fVkVORE9SX01BUlZFTExcbiAgMTQ6XHRcbiAgMTU6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhcy9LY29uZmlnXCYjMzQ7XG4gIDE2Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXNfdGYvS2NvbmZpZ1wmIzM0O1xuICAxNzpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1wmIzM0O1xuICAxODpcdFxuICAxOTpcdGNvbmZpZyBNV0w4S1xuICAyMDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCA4OFc4eHh4IFBDSS9QQ0llIFdpcmVsZXNzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMwMjgKCQkJCQkJCW91dHB1dDogMjI1CgkJCQkJCQl0aG91Z2h0czogMTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IG1lbnRhbCBydW5kb3duOgoKKipTZXR0aW5nIHVwIE1hcnZlbGwgV0xBTiBEcml2ZXJzKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuIE15IGN1cnJlbnQgb2JqZWN0aXZlIGlzIHRvIGNvbmZpZ3VyZSB0aGUgc3lzdGVtIGZvciBNYXJ2ZWxsIFdMQU4gc3VwcG9ydCwgYW5kIHRoZSBrZXkgaXMgdG8gZ2V0IHRoZSBuZWNlc3NhcnkgZGVwZW5kZW5jaWVzIHN0cmFpZ2h0LiBGaXJzdCwgSSByZW1lbWJlciBmcm9tIHdvcmtpbmcgd2l0aCB0aGUgS2NvbmZpZyBmaWxlcywgdGhhdCBgV0xBTl9WRU5ET1JfTUFSVkVMTGAgbmVlZHMgdG8gYmUgZGVmaW5lZC4gQWxzbywgaXQmIzM5O3MgY2xlYXIgYFdMQU5gIGlzIGEgcHJlcmVxdWlzaXRlIGZvciB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUsIHNvIHRoYXQgaGFzIHRvIGJlIGluIHRoZSBjb25maWd1cmF0aW9uLiBHb3QgaXQsIGxldCBtZSBhZGQgYFdMQU5fVkVORE9SX01BUlZFTExgIGFuZCBgV0xBTmAgdG8gdGhlIGFjdGl2ZSBjb25maWd1cmF0aW9uIGxpc3QuCgpNeSBjdXJyZW50IENvbmZpZyBsaXN0IGlzIGFzIGZvbGxvd3M6IGBXTEFOYCwgYFdMQU5fVkVORE9SX01BUlZFTExgLCBgQ0ZHODAyMTFgLCBgTVdJRklFWGAsIGBNV0lGSUVYX1VTQmAsIGFuZCBgVVNCYC4KCk5vdywgSSB3aWxsIHNldCB0aG9zZSBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUFSVkVMTCYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNV0lGSUVYJiMzNDssCiAgICAmIzM0O01XSUZJRVhfVVNCJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUmIzM0OywKICAgICYjMzQ7bXdpZmlleF9zZXRfc3RhX2h0X2NhcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgZm9yIHZhcmlvdXMgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgaW4gYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGFuZCBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzL3dyaXRlcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSBwYXJ0IG9mIHRoZSBNYXJ2ZWxsIFdpRmktRXggZHJpdmVyIChgbXdpZmlleGApLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBpbnRlcmZhY2VzIChgTVdJRklFWF9VU0JgKSwgd2hpY2ggY2FuIGJlIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgc3l6a2FsbGVyJiMzOTtzIFVTQiBkdW1teV9oY2QgZW11bGF0aW9uLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIHZpYSBVU0IgVVJCIHJlc3BvbnNlcyBjb250YWluaW5nIG1hbGljaW91cyBJRXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUFSVkVMTCYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNV0lGSUVYJiMzNDssCiAgICAmIzM0O01XSUZJRVhfVVNCJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUmIzM0OywKICAgICYjMzQ7bXdpZmlleF9zZXRfc3RhX2h0X2NhcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgZm9yIHZhcmlvdXMgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgaW4gYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGFuZCBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzL3dyaXRlcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSBwYXJ0IG9mIHRoZSBNYXJ2ZWxsIFdpRmktRXggZHJpdmVyIChgbXdpZmlleGApLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBpbnRlcmZhY2VzIChgTVdJRklFWF9VU0JgKSwgd2hpY2ggY2FuIGJlIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgc3l6a2FsbGVyJiMzOTtzIFVTQiBkdW1teV9oY2QgZW11bGF0aW9uLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIHZpYSBVU0IgVVJCIHJlc3BvbnNlcyBjb250YWluaW5nIG1hbGljaW91cyBJRXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDoxNzozOC41ODczMTI3MTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTQxODM3MjM1NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTUFSVkVMTFwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llXCIsXG4gICAgXCJtd2lmaWV4X3NldF9zdGFfaHRfY2FwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIGZvciB2YXJpb3VzIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIGluIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcGFydCBvZiB0aGUgTWFydmVsbCBXaUZpLUV4IGRyaXZlciAoYG13aWZpZXhgKS4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyAoYE1XSUZJRVhfVVNCYCksIHdoaWNoIGNhbiBiZSBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHN5emthbGxlcidzIFVTQiBkdW1teV9oY2QgZW11bGF0aW9uLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIHZpYSBVU0IgVVJCIHJlc3BvbnNlcyBjb250YWluaW5nIG1hbGljaW91cyBJRXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjE3OjM4LjU4NzMyMDczOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI3NzkwOTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNmJiNTYxMjc2NjRjZWNhOTI3YzYyYTFjZGMzM2Q4NmYzMTBlNGQxMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAyIDIwOjE3OjM3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXFxuaW5kZXggOTdjMGVjM2I4MjJlNy4uMjIwMzFmYWJhMDU3ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY1xcbkBAIC0xMzg0LDYgKzEzODQsOCBAQCBpbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRic3NfZW50cnktXFx1MDAzZWJlYWNvbl9idWYpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0Y2FzZSBXTEFOX0VJRF9IVF9DQVBBQklMSVRZOlxcbitcXHRcXHRcXHRpZiAoZWxlbWVudF9sZW4gXFx1MDAzYyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9odF9jYXApKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2ViY25faHRfY2FwID0gKHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwICopXFxuIFxcdFxcdFxcdFxcdFxcdChjdXJyZW50X3B0ciArXFxuIFxcdFxcdFxcdFxcdFxcdHNpemVvZihzdHJ1Y3QgaWVlZV90eXBlc19oZWFkZXIpKTtcXG5AQCAtMTM5Miw2ICsxMzk0LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0XFx0XFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2ViZWFjb25fYnVmKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgV0xBTl9FSURfSFRfT1BFUkFUSU9OOlxcbitcXHRcXHRcXHRpZiAoZWxlbWVudF9sZW4gXFx1MDAzYyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9odF9vcGVyYXRpb24pKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2ViY25faHRfb3BlciA9XFxuIFxcdFxcdFxcdFxcdChzdHJ1Y3QgaWVlZTgwMjExX2h0X29wZXJhdGlvbiAqKShjdXJyZW50X3B0ciArXFxuIFxcdFxcdFxcdFxcdFxcdHNpemVvZihzdHJ1Y3QgaWVlZV90eXBlc19oZWFkZXIpKTtcXG5AQCAtMTQwMCw2ICsxNDA0LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0XFx0XFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2ViZWFjb25fYnVmKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgV0xBTl9FSURfVkhUX0NBUEFCSUxJVFk6XFxuK1xcdFxcdFxcdGlmIChlbGVtZW50X2xlbiBcXHUwMDNjIHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXApKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2VkaXNhYmxlXzExYWMgPSBmYWxzZTtcXG4gXFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2ViY25fdmh0X2NhcCA9XFxuIFxcdFxcdFxcdFxcdCh2b2lkICopKGN1cnJlbnRfcHRyICtcXG5AQCAtMTQwOSw2ICsxNDE1LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgYnNzX2VudHJ5LVxcdTAwM2ViZWFjb25fYnVmKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgV0xBTl9FSURfVkhUX09QRVJBVElPTjpcXG4rXFx0XFx0XFx0aWYgKGVsZW1lbnRfbGVuIFxcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfdmh0X29wZXJhdGlvbikpXFxuK1xcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRcXHRcXHRic3NfZW50cnktXFx1MDAzZWJjbl92aHRfb3BlciA9XFxuIFxcdFxcdFxcdFxcdCh2b2lkICopKGN1cnJlbnRfcHRyICtcXG4gXFx0XFx0XFx0XFx0XFx0IHNpemVvZihzdHJ1Y3QgaWVlZV90eXBlc19oZWFkZXIpKTtcXG5AQCAtMTQxNyw2ICsxNDI1LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgYnNzX2VudHJ5LVxcdTAwM2ViZWFjb25fYnVmKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgV0xBTl9FSURfQlNTX0NPRVhfMjA0MDpcXG4rXFx0XFx0XFx0aWYgKCFlbGVtZW50X2xlbilcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdFxcdFxcdGJzc19lbnRyeS1cXHUwMDNlYmNuX2Jzc19jb18yMDQwID0gY3VycmVudF9wdHI7XFxuIFxcdFxcdFxcdGJzc19lbnRyeS1cXHUwMDNlYnNzX2NvXzIwNDBfb2Zmc2V0ID1cXG4gXFx0XFx0XFx0XFx0KHUxNikgKGN1cnJlbnRfcHRyIC0gYnNzX2VudHJ5LVxcdTAwM2ViZWFjb25fYnVmKTtcXG5AQCAtMTQyNyw2ICsxNDM3LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0XFx0XFx0XFx0KHUxNikgKGN1cnJlbnRfcHRyIC0gYnNzX2VudHJ5LVxcdTAwM2ViZWFjb25fYnVmKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgV0xBTl9FSURfT1BNT0RFX05PVElGOlxcbitcXHRcXHRcXHRpZiAoIWVsZW1lbnRfbGVuKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2VvcGVyX21vZGUgPSAodm9pZCAqKWN1cnJlbnRfcHRyO1xcbiBcXHRcXHRcXHRic3NfZW50cnktXFx1MDAzZW9wZXJfbW9kZV9vZmZzZXQgPVxcbiBcXHRcXHRcXHRcXHRcXHQodTE2KSgodTggKilic3NfZW50cnktXFx1MDAzZW9wZXJfbW9kZSAtXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jXFxuaW5kZXggN2QzNjMxZDIxMjIzNi4uODQ0MjIzYzA0ZTJlZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuY1xcbkBAIC03MjEsNyArNzIxLDcgQEAgbXdpZmlleF9zZXRfc3RhX2h0X2NhcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBjb25zdCB1OCAqaWVzLFxcbiBcXG4gXFx0aHRfY2FwX2llID0gKHZvaWQgKiljZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX0hUX0NBUEFCSUxJVFksIGllcyxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICBpZXNfbGVuKTtcXG4tXFx0aWYgKGh0X2NhcF9pZSkge1xcbitcXHRpZiAoaHRfY2FwX2llIFxcdTAwMjZcXHUwMDI2IGh0X2NhcF9pZS1cXHUwMDNlbGVuIFxcdTAwM2U9IHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCkpIHtcXG4gXFx0XFx0aHRfY2FwID0gKHZvaWQgKikoaHRfY2FwX2llICsgMSk7XFxuIFxcdFxcdG5vZGUtXFx1MDAzZWlzXzExbl9lbmFibGVkID0gMTtcXG4gXFx0XFx0bm9kZS1cXHUwMDNlbWF4X2Ftc2R1ID0gbGUxNl90b19jcHUoaHRfY2FwLVxcdTAwM2VjYXBfaW5mbykgXFx1MDAyNlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDoxNzozOS4zMTYxNzIwMjVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMTM0NTQ4NDg2NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTUFSVkVMTFwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llXCIsXG4gICAgXCJtd2lmaWV4X3NldF9zdGFfaHRfY2FwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIGZvciB2YXJpb3VzIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIGluIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcGFydCBvZiB0aGUgTWFydmVsbCBXaUZpLUV4IGRyaXZlciAoYG13aWZpZXhgKS4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyAoYE1XSUZJRVhfVVNCYCksIHdoaWNoIGNhbiBiZSBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHN5emthbGxlcidzIFVTQiBkdW1teV9oY2QgZW11bGF0aW9uLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIHZpYSBVU0IgVVJCIHJlc3BvbnNlcyBjb250YWluaW5nIG1hbGljaW91cyBJRXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDZiYjU2MTI3NjY0Y2VjYTkyN2M2MmExY2RjMzNkODZmMzEwZTRkMTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDIwOjE3OjM3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNcbmluZGV4IDk3YzBlYzNiODIyZTcuLjIyMDMxZmFiYTA1N2YgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXG5AQCAtMTM4NCw2ICsxMzg0LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0XHRcdFx0XHRcdGJzc19lbnRyeS1cdTAwM2ViZWFjb25fYnVmKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBXTEFOX0VJRF9IVF9DQVBBQklMSVRZOlxuK1x0XHRcdGlmIChlbGVtZW50X2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwKSlcbitcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2ViY25faHRfY2FwID0gKHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwICopXG4gXHRcdFx0XHRcdChjdXJyZW50X3B0ciArXG4gXHRcdFx0XHRcdHNpemVvZihzdHJ1Y3QgaWVlZV90eXBlc19oZWFkZXIpKTtcbkBAIC0xMzkyLDYgKzEzOTQsOCBAQCBpbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuIFx0XHRcdFx0XHRic3NfZW50cnktXHUwMDNlYmVhY29uX2J1Zik7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgV0xBTl9FSURfSFRfT1BFUkFUSU9OOlxuK1x0XHRcdGlmIChlbGVtZW50X2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfaHRfb3BlcmF0aW9uKSlcbitcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2ViY25faHRfb3BlciA9XG4gXHRcdFx0XHQoc3RydWN0IGllZWU4MDIxMV9odF9vcGVyYXRpb24gKikoY3VycmVudF9wdHIgK1xuIFx0XHRcdFx0XHRzaXplb2Yoc3RydWN0IGllZWVfdHlwZXNfaGVhZGVyKSk7XG5AQCAtMTQwMCw2ICsxNDA0LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0XHRcdFx0YnNzX2VudHJ5LVx1MDAzZWJlYWNvbl9idWYpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIFdMQU5fRUlEX1ZIVF9DQVBBQklMSVRZOlxuK1x0XHRcdGlmIChlbGVtZW50X2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCkpXG4rXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0XHRic3NfZW50cnktXHUwMDNlZGlzYWJsZV8xMWFjID0gZmFsc2U7XG4gXHRcdFx0YnNzX2VudHJ5LVx1MDAzZWJjbl92aHRfY2FwID1cbiBcdFx0XHRcdCh2b2lkICopKGN1cnJlbnRfcHRyICtcbkBAIC0xNDA5LDYgKzE0MTUsOCBAQCBpbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuIFx0XHRcdFx0XHQgICAgICBic3NfZW50cnktXHUwMDNlYmVhY29uX2J1Zik7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgV0xBTl9FSURfVkhUX09QRVJBVElPTjpcbitcdFx0XHRpZiAoZWxlbWVudF9sZW4gXHUwMDNjIHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX3ZodF9vcGVyYXRpb24pKVxuK1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdFx0YnNzX2VudHJ5LVx1MDAzZWJjbl92aHRfb3BlciA9XG4gXHRcdFx0XHQodm9pZCAqKShjdXJyZW50X3B0ciArXG4gXHRcdFx0XHRcdCBzaXplb2Yoc3RydWN0IGllZWVfdHlwZXNfaGVhZGVyKSk7XG5AQCAtMTQxNyw2ICsxNDI1LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0XHRcdFx0ICAgICAgYnNzX2VudHJ5LVx1MDAzZWJlYWNvbl9idWYpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIFdMQU5fRUlEX0JTU19DT0VYXzIwNDA6XG4rXHRcdFx0aWYgKCFlbGVtZW50X2xlbilcbitcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2ViY25fYnNzX2NvXzIwNDAgPSBjdXJyZW50X3B0cjtcbiBcdFx0XHRic3NfZW50cnktXHUwMDNlYnNzX2NvXzIwNDBfb2Zmc2V0ID1cbiBcdFx0XHRcdCh1MTYpIChjdXJyZW50X3B0ciAtIGJzc19lbnRyeS1cdTAwM2ViZWFjb25fYnVmKTtcbkBAIC0xNDI3LDYgKzE0MzcsOCBAQCBpbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuIFx0XHRcdFx0KHUxNikgKGN1cnJlbnRfcHRyIC0gYnNzX2VudHJ5LVx1MDAzZWJlYWNvbl9idWYpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIFdMQU5fRUlEX09QTU9ERV9OT1RJRjpcbitcdFx0XHRpZiAoIWVsZW1lbnRfbGVuKVxuK1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdFx0YnNzX2VudHJ5LVx1MDAzZW9wZXJfbW9kZSA9ICh2b2lkICopY3VycmVudF9wdHI7XG4gXHRcdFx0YnNzX2VudHJ5LVx1MDAzZW9wZXJfbW9kZV9vZmZzZXQgPVxuIFx0XHRcdFx0XHQodTE2KSgodTggKilic3NfZW50cnktXHUwMDNlb3Blcl9tb2RlIC1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuY1xuaW5kZXggN2QzNjMxZDIxMjIzNi4uODQ0MjIzYzA0ZTJlZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmNcbkBAIC03MjEsNyArNzIxLDcgQEAgbXdpZmlleF9zZXRfc3RhX2h0X2NhcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBjb25zdCB1OCAqaWVzLFxuIFxuIFx0aHRfY2FwX2llID0gKHZvaWQgKiljZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX0hUX0NBUEFCSUxJVFksIGllcyxcbiBcdFx0XHRcdFx0ICAgICBpZXNfbGVuKTtcbi1cdGlmIChodF9jYXBfaWUpIHtcbitcdGlmIChodF9jYXBfaWUgXHUwMDI2XHUwMDI2IGh0X2NhcF9pZS1cdTAwM2VsZW4gXHUwMDNlPSBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9odF9jYXApKSB7XG4gXHRcdGh0X2NhcCA9ICh2b2lkICopKGh0X2NhcF9pZSArIDEpO1xuIFx0XHRub2RlLVx1MDAzZWlzXzExbl9lbmFibGVkID0gMTtcbiBcdFx0bm9kZS1cdTAwM2VtYXhfYW1zZHUgPSBsZTE2X3RvX2NwdShodF9jYXAtXHUwMDNlY2FwX2luZm8pIFx1MDAyNlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjA6MTc6MzkuMzE2MTgzMjU0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM1OTA4Nzc5NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgV2lGaSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBtd2lmaWV4YCDigJMgc3BlY2lmaWNhbGx5LCBgc2Nhbi5jYCBhbmQgYHV0aWwuY2AuIFNlZW1zIGxpa2UgdGhleSdyZSBhZGRpbmcgc29tZSBsZW5ndGggY2hlY2tzIHRvIHRoZSBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBoYW5kbGluZyB3aXRoaW4gYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGFuZCBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAuIFNvdW5kcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGFpbWVkIGF0IHByZXZlbnRpbmcgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZHMgb3Igd3JpdGVzLCB3aGljaCBpcyBhbHdheXMgZ29vZCB0byBzZWUuIFRoZSBkcml2ZXIgaW4gcXVlc3Rpb24gaGVyZSBpcyB0aGUgTWFydmVsbCBXaUZpIGRyaXZlciwgYG13aWZpZXhgLlxuXG5NeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IGNhbiB0aGlzIGJlIHRlc3RlZCBpbiBhIHZpcnR1YWxpemVkIHNldHVwPyBXaUZpIGRyaXZlcnMgYXJlIG9mdGVuIGEgcGFpbiBiZWNhdXNlIHRoZXkgdXN1YWxseSBkZXBlbmQgb24gc3BlY2lmaWMgaGFyZHdhcmUsIGxpa2UgUENJZSwgU0RJTywgb3IgVVNCIGludGVyZmFjZXMuIEJ1dCB3YWl0IGEgbWludXRlLCBgbXdpZmlleGAgKmRvZXMqIHN1cHBvcnQgUENJZSwgU0RJTywgKmFuZCogVVNCLiBUaGF0IG9wZW5zIHVwIHNvbWUgcG9zc2liaWxpdGllcy5cblxuTGV0J3MgZGlnIGRlZXBlci4gSWRlYWxseSwgSSB3YW50IHRvIHNlZSBpZiB0aGVyZSdzIGEgVVNCIGRyaXZlciBjb21wb25lbnQgd2l0aGluIGBtd2lmaWV4YCB0aGF0IGNvdWxkIGJlIGZ1enplZC4gSWYgdGhlcmUncyBhIFVTQiBpbXBsZW1lbnRhdGlvbiwgd2UgbWlnaHQgYmUgYWJsZSB0byB1c2UgYSBVU0IgZ2FkZ2V0IHNldHVwIG9yIGEgZHVtbXkgSENEIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBTeXprYWxsZXIncyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMgKHVzaW5nIGBkdW1teV9oY2RgKSB3b3VsZCBiZSBwZXJmZWN0IGZvciB0aGlzIGtpbmQgb2YgdGVzdGluZy4gU28sIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZywgcHJvYmFibHkgdW5kZXIgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnYCwgdG8gc2VlIHdoYXQncyBlbmFibGVkIGFuZCB3aGF0J3Mgbm90LiBUaGF0IHNob3VsZCB0ZWxsIG1lIGlmIHdlIGhhdmUgYSB2aWFibGUgZnV6emluZyB0YXJnZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNjksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDoxODoxMi45MDcwOTE5NjJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYxOTgyMDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNV0lGSUVYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mjpjb25maWcgTVdJRklFWFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjU6Y29uZmlnIE1XSUZJRVhfUENJRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI2LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzc6Y29uZmlnIE1XSUZJRVhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDoxODoxMy40NjkwODE1MDhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjE2OTYzNTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gYXMgaWYgdGhleSB3ZXJlIG15IG93bjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQgYW5kIERlcGVuZGVuY3kgQ2hlY2sqKlxuXG5SaWdodCwgZXhjZWxsZW50LCB0aGUgYE1XSUZJRVhfVVNCYCBtb2R1bGUgaXMgcHJlc2VudCBhbmQgYWNjb3VudGVkIGZvci4gR29vZC4gTm93LCBiZWZvcmUgSSBnZXQgdG9vIGZhciBkb3duIHRoZSByb2FkLCBsZXQncyBqdXN0IHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIHVzdWFsIG1lbnRhbCBjaGVja2xpc3QuIExldCBtZSBzZWUuLi4gSSdsbCBuZWVkIHRvIGltbWVkaWF0ZWx5IHN0YXJ0IHRoaW5raW5nIGFib3V0IGl0cyBkZXBlbmRlbmNpZXMuICpXaGljaCogb3RoZXIga2VybmVsIG1vZHVsZXMgb3Igc3lzdGVtIGxpYnJhcmllcyBpcyBgTVdJRklFWF9VU0JgIGdvaW5nIHRvIHJlbHkgb24/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgdmVyc2lvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBbnkgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoIG90aGVyIGRyaXZlcnMgdGhhdCBJIGtub3cgZnJvbSBleHBlcmllbmNlIGNhbiBiZSBwcm9ibGVtYXRpYz8gR290dGEgbWFrZSBzdXJlIEknbSBub3Qgb3Zlcmxvb2tpbmcgc29tZSBvYnNjdXJlIHBpZWNlIG9mIHRoZSBwdXp6bGUgdGhhdCdsbCBiaXRlIG1lIGxhdGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjMzLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjA6MTg6MTguMDg2MDQ4Njg3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNDYyOTUwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVdJRklFWF9VU0JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc9MjU9Y29uZmlnIE1XSUZJRVhfUENJRVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzc6Y29uZmlnIE1XSUZJRVhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDoxODoxOC4zMTA2ODU2MjNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTI4NzQ4MTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgTWFydmVsbCBXaS1GaSBEcml2ZXIgS2NvbmZpZyoqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIE1hcnZlbGwgd2lyZWxlc3MgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIEknbSBnb2luZyB0byBuYXZpZ2F0ZSBkaXJlY3RseSB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWdgIGFyb3VuZCBsaW5lIDM3LiBUaGlzIGFyZWEgaXMgdHlwaWNhbGx5IHdoZXJlIHRoZSBjb3JlIG1vZHVsZSBzZWxlY3Rpb24gb3B0aW9ucyBvciBmZWF0dXJlIGRlZmluaXRpb25zIHJlc2lkZS4gSSBleHBlY3QgdG8gZmluZCB0aGUgZnVuZGFtZW50YWwga25vYnMgYW5kIGxldmVycyB0aGF0IGNvbnRyb2wgdGhlIGNvbXBpbGF0aW9uIGFuZCBpbmNsdXNpb24gb2YgdGhlIGBtd2lmaWV4YCBkcml2ZXIgd2l0aGluIGEgTGludXgga2VybmVsIGJ1aWxkLiBJJ20gdGhpbmtpbmcgSSdsbCBiZSBhYmxlIHRvIHF1aWNrbHkgemVybyBpbiBvbiBvcHRpb25zIHJlbGF0ZWQgdG8gaGFyZHdhcmUgc3VwcG9ydCwgY3JpdGljYWwgZmVhdHVyZSBlbmFibGVzIG9yIGRpc2FibGVzIChsaWtlIHBvd2VyIG1hbmFnZW1lbnQgb3Igc2VjdXJpdHkgcHJvdG9jb2xzKSwgb3IgcG9zc2libHkgYW55IHBsYXRmb3JtLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24uIFNlZWluZyB0aGUgc3RydWN0dXJlIG9mIHRoZSBLY29uZmlnIGZpbGUgd2lsbCBpbW1lZGlhdGVseSBnaXZlIG1lIGNvbnRleHQsIHNvIEkgY2FuIHN0YXJ0IHRvIHJlYXNvbiBhYm91dCBkZXBlbmRlbmNpZXMsIHJlbGF0aW9uc2hpcHMsIGFuZCBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGhpbiB0aGUgZHJpdmVyJ3MgY29uZmlndXJhdGlvbi4gVGhpcyBpbml0aWFsIGV4YW1pbmF0aW9uIHdpbGwgaGVscCBpbmZvcm0gYW55IGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBJIG5lZWQgdG8gZG8uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MDIsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDoxODoyNS4yMzk0NDEyMDJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjU2MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzA6XFx0XFx0aGVscFxcbiAgMzE6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgMzI6XFx0XFx0ICA4NzY2Lzg4OTcvODk5NyBjaGlwc2V0cyB3aXRoIFBDSWUgaW50ZXJmYWNlLlxcbiAgMzM6XFx0XFxuICAzNDpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAzNTpcXHRcXHQgIG13aWZpZXhfcGNpZS5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0Y29uZmlnIE1XSUZJRVhfVVNCXFxuICAzODpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcXFwiXFxuICAzOTpcXHRcXHRkZXBlbmRzIG9uIE1XSUZJRVggXFx1MDAyNlxcdTAwMjYgVVNCXFxuICA0MDpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICA0MTpcXHRcXHRoZWxwXFxuICA0MjpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXFxuICA0MzpcXHRcXHQgIDg3OTcvODk5NyBjaGlwc2V0IHdpdGggVVNCIGludGVyZmFjZS5cXG4gIDQ0OlxcdFxcbiAgNDU6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbiAgNDY6XFx0XFx0ICBtd2lmaWV4X3VzYi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjA6MTg6MjUuMjM5NTY5NzYyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE5Nzc1NzIxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgZGVwZW5kZW5jaWVzLCBzdW1tYXJpemVkIGFzIGEgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRlcGVuZGVuY3kgRGVlcCBEaXZlKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGBNV0lGSUVYX1VTQmAgaXMgYnVpbHQgb24gdG9wIG9mIGBNV0lGSUVYYCBhbmQgYFVTQmAg4oCTIG1ha2VzIHNlbnNlLCB0aGUgXCJVU0JcIiBwYXJ0IGlzIGEgZGVhZCBnaXZlYXdheSwgYnV0IEkgc3RpbGwgbGlrZSB0byBiZSB0aG9yb3VnaC4gTm93LCBgTVdJRklFWGAgaXRzZWxmIHJlbGllcyBvbiBgTUFDODAyMTFgIGFuZCBgQ0ZHODAyMTFgLiBUaW1lIHRvIGRvdWJsZS1jaGVjayB0aG9zZSBgTVdJRklFWGAgZGVwZW5kZW5jaWVzIGluIGRldGFpbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc3RhY2sgdG8gZW5zdXJlIGEgc3RhYmxlIGFuZCBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb247IHRoaXMgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxNDksIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjE4OjI4LjQzNzMzMDMyOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTcwMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBNV0lGSUVYXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlclxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTFcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE1hcnZlbGxcXG4gICA3OlxcdFxcdCAgODAyLjExbi9hYyBjaGlwc2V0cy5cXG4gICA4OlxcdFxcbiAgIDk6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbiAgMTA6XFx0XFx0ICBtd2lmaWV4LlxcbiAgMTE6XFx0XFxuICAxMjpcXHRjb25maWcgTVdJRklFWF9TRElPXFxuICAxMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgU0Q4Nzg2L1NEODc4Ny9TRDg3OTcvU0Q4ODg3L1NEODg5Ny9TRDg5NzcvU0Q4OTc4L1NEODk4Ny9TRDg5OTdcXFwiXFxuICAxNDpcXHRcXHRkZXBlbmRzIG9uIE1XSUZJRVggXFx1MDAyNlxcdTAwMjYgTU1DXFxuICAxNTpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICAxNjpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE1hcnZlbGxcXG4gIDE5OlxcdFxcdCAgODc4Ni84Nzg3Lzg3OTcvODg4Ny84ODk3Lzg5NzcvODk3OC84OTg3Lzg5OTcgY2hpcHNldHMgd2l0aFxcbiAgMjA6XFx0XFx0ICBTRElPIGludGVyZmFjZS4gU0Q4OTc4IGlzIGFsc28ga25vd24gYXMgTlhQIElXNDE2LlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDoxODoyOC40Mzc0NTEwMzhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk4ODAyNzYzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1XSUZJRVggRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgTVdJRklFWGAgZHJpdmVyIGFuZCBpbW1lZGlhdGVseSBzZWUgaXRzIGRlcGVuZGVuY2Ugb24gYENGRzgwMjExYC4gVGhhdCdzIGEga2V5IHN0YXJ0aW5nIHBvaW50LiBUaGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgLCBhbmQgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgd2hldGhlciB0aGVzZSBmdW5jdGlvbnMgYXJlIGV2ZW4gcmVsZXZhbnQgd2hlbiBjb25zaWRlcmluZyBVU0Igb3BlcmF0aW9uLiBBcmUgdGhlc2UgcGF0aHMgZXZlbiB1c2VkIHdoZW4gdGhlIGRldmljZSBpcyBjb25uZWN0ZWQgdmlhIFVTQj8gSSBuZWVkIHRvIGtub3cgaWYgdGhlc2UgYXJlIGV2ZW4gY2FsbGVkIGZyb20gVVNCLCBvciBpZiB0aGV5IGFyZSBqdXN0IHVzZWQgZm9yIHRoZSBQQ0kgaW50ZXJmYWNlLlxuXG5MZXQncyBzdGFydCBieSBkaWdnaW5nIGludG8gd2hlcmUgYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGlzIGNhbGxlZC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgY29kZSBmbG93IGFuZCBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIHBvc3NpYmxlIGNvZGUgcGF0aHMgaGVyZSByZWxldmFudCB0byBVU0IgdXNhZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3NzMsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjE4OjM1LjQyNTQ4MTg4M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQwMzE3ODA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTE1Mzg9aW50IG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTU0MC1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNTQxOmludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNTQyLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZW50cnkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xMTEyPW13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2dldF90bHZfcHRycyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xMTgxLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTE4MjppbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTE4My1cXHRcXHRcXHRcXHQgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2VudHJ5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTE0MT1pbnQgbXdpZmlleF9maWxsX25ld19ic3NfZGVzYyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTE5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6MTkyOlxcdHJldHVybiBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHByaXYtXFx1MDAzZWFkYXB0ZXIsIGJzc19kZXNjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMTkzLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjA6MTg6MzUuNjY1ODA2OTg4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1NjYyNDg4MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipUcmFjaW5nIHRoZSBCU1MgRGVzY3JpcHRpb24gUG9wdWxhdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSBkaWdnaW5nIGludG8gaG93IHRoZXNlIEJTUyBkZXNjcmlwdG9ycyBhcmUgYmVpbmcgcG9wdWxhdGVkLiBUaGUgY29kZSBzbmlwcGV0IG1lbnRpb25zIGBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBjaGFpbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbnRleHQuIExldCdzIHNlZS4uLndoZXJlICppcyogYG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2NgIGJlaW5nIGNhbGxlZCBmcm9tPyBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgZnVuY3Rpb24gdG8gZ2V0IGEgc2Vuc2Ugb2YgaG93IHRoZSBCU1MgZGVzY3JpcHRpb24gaW5mb3JtYXRpb24gaXMgZmxvd2luZy4gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIHRyaWdnZXIsIHRoZSBpbnB1dCBjb250ZXh0LCB0aGUgcG90ZW50aWFsIGVycm9ycywgdGhlIGludGVuZGVkIHVzZS4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzdGFjayB3aWxsIHByb3ZpZGUgYSBtdWNoIG1vcmUgY29tcGxldGUgcGljdHVyZSB0aGFuIHNpbXBseSBpbnNwZWN0aW5nIHRoaXMgb25lIGZ1bmN0aW9uIGluIGlzb2xhdGlvbi4gVGhlIGdvYWwgaXMgdG8gZnVsbHkgdW5kZXJzdGFuZCBpdHMgZnVuY3Rpb24gd2l0aGluIHRoZSBncmVhdGVyIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1ODAsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDoxODo0My4yMzIwNTkyMDhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjkzNjk0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xNTM2PWludCBtd2lmaWV4X2dldF9ic3NfaW5mbyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICosXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNTM3LVxcdFxcdFxcdCBzdHJ1Y3QgbXdpZmlleF9ic3NfaW5mbyAqKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjE1Mzg6aW50IG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE1MzktXFx0XFx0XFx0ICAgICAgc3RydWN0IGNmZzgwMjExX2JzcyAqYnNzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNjU1PXN0YXRpYyBpbnQgbXdpZmlleF9zYXZlX2hpZGRlbl9zc2lkX2NoYW5uZWxzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2NjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNjY3OlxcdHJldCA9IG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2MocHJpdiwgYnNzLCBic3NfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNjY4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2OTEtXFx0LyogYmVhY29uX2llIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGluIGZ1bmN0aW9uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNjkyOlxcdCAqIG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2MoKS4gRnJlZSBpdCBub3cuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNjkzLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNjk5PXN0YXRpYyBpbnQgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE3MDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNzEwOlxcdHJldCA9IG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2MocHJpdiwgYnNzLCBic3NfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzExLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE3MzAtXFx0LyogYmVhY29uX2llIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGluIGZ1bmN0aW9uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNzMxOlxcdCAqIG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2MoKS4gRnJlZSBpdCBub3cuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzMyLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTg4PWludCBtd2lmaWV4X3JlcXVlc3Rfc2V0X211bHRpY2FzdF9saXN0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMTQwLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzoxNDE6aW50IG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMTQyLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9ic3MgKmJzcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0zMzI9aW50IG13aWZpZXhfYnNzX3N0YXJ0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHN0cnVjdCBjZmc4MDIxMV9ic3MgKmJzcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0zNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jOjM1MTpcXHRcXHRyZXQgPSBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjKHByaXYsIGJzcywgYnNzX2Rlc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0zNTItXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy00NDYtXFx0LyogYmVhY29uX2llIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGluIGZ1bmN0aW9uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jOjQ0NzpcXHQgKiBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjKCkuIEZyZWUgaXQgbm93LlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy00NDgtXFx0ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjE4OjQzLjQyNTAwMTQ2NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Mjg0OTU2MDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIGBtd2lmaWV4YCoqXG5cbk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2NgIGdldHMgY2FsbGVkIGluIGEgZmV3IGtleSBwbGFjZXM6IGBtd2lmaWV4X3NhdmVfaGlkZGVuX3NzaWRfY2hhbm5lbHNgLCBgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zYCwgYW5kIGBtd2lmaWV4X2Jzc19zdGFydGAuIEFsbCBvZiB0aGVzZSBhcmUgY2xlYXJseSBpbnZvbHZlZCBpbiBzY2FubmluZyBmb3IgYW5kIGNvbm5lY3RpbmcgdG8gQmFzaWMgU2VydmljZSBTZXRzLCB3aGljaCBtYWtlcyBzZW5zZSBzaW5jZSBgbXdpZmlleGAgaXMgYSBXaUZpIGRyaXZlci4gTXkgaW5pdGlhbCBpbnN0aW5jdCB3YXMgdG8gcmVhY2ggZm9yIGBtYWM4MDIxMV9od3NpbWAsIGJ1dCB3YWl0Li4uIGBtd2lmaWV4YCBpcyBhICpmdWxsbWFjKiBkcml2ZXIsIG5vdCBhIG1hYzgwMjExIGRyaXZlci4gSSBuZWVkIHRvIGJlIHN1cmUgYWJvdXQgdGhpcywgc28gbGV0J3MgZG91YmxlLWNoZWNrIHRoZSBLY29uZmlnLiBZZXAsIGNvbmZpcm1lZDsgaXQgZGVwZW5kcyBvbiBgQ0ZHODAyMTFgLCB3aGljaCBtZWFucyBpdCdzIGZ1bGxtYWMuXG5cblNvLCBjYW4gd2UgYWN0dWFsbHkgZnV6eiBhIGZ1bGxtYWMgZHJpdmVyPyBUaGF0J3MgdGhlIHF1ZXN0aW9uLiBBaGEhIElmIGl0IHVzZXMgYSBVU0IgaW50ZXJmYWNlLCB0aGVuIHdlIG1pZ2h0IGhhdmUgYSB2aWFibGUgcGF0aCB3aXRoIHN5emthbGxlci4gU3l6a2FsbGVyIGlzIGdyZWF0IHdpdGggZW11bGF0aW5nIFVTQiBkZXZpY2VzIHVzaW5nIHRoZSBgZHVtbXlfaGNkYCBpbnRlcmZhY2U7IGl0IGNhbiBzZW5kIHJlc3BvbnNlcyB0byBVUkJzISBUaGlzIGlzIGxvb2tpbmcgcHJvbWlzaW5nLiBMZXQncyBkaWcgaW4gYW5kIGNoZWNrIG91dCBgbXdpZmlleF91c2JgLiBPa2F5LCB5ZXMsIGBtd2lmaWV4X3VzYmAgZXhpc3RzLCBpdCBsb29rcyBsaWtlIGl0IGNhbiBiZSBmdXp6ZWQgdmlhIHN5emthbGxlciEgTm93LCBsZXQncyBhbHNvIGhhdmUgYSBxdWljayBsb29rIGF0IGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYCwgYmVjYXVzZSB0aGF0IGlzIHByb2JhYmx5IGludGVyZXN0aW5nIHRvby5cblxuXG4iLCJJbnB1dFRva2VucyI6NzkzNCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDoxODo0OS43MDk5NjEyNDRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMzgyNTk0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3NldF9zdGFfaHRfY2FwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xNTkwPXZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjE1OTE6bXdpZmlleF9zZXRfc3RhX2h0X2NhcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBjb25zdCB1OCAqaWVzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTU5Mi1cXHRcXHQgICAgICAgaW50IGllc19sZW4sIHN0cnVjdCBtd2lmaWV4X3N0YV9ub2RlICpub2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYz05ND1pbnQgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jLTEzOC1cXHRcXHRcXHRcXHQgKiBldmVudCB3YXMgY29waWVkIGludG87IG90aGVyd2lzZSB0aGUgSUUgd2Fsa1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYzoxMzk6XFx0XFx0XFx0XFx0ICogaW4gbXdpZmlleF9zZXRfc3RhX2h0X2NhcCgpIHJlYWRzIHBhc3RcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmMtMTQwLVxcdFxcdFxcdFxcdCAqIGV2ZW50X2JvZHkgYW5kIG91dCBvZiB0aGUgYWRhcHRlciBzbGFiIG9iamVjdC5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy0xNjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jOjE2OTpcXHRcXHRtd2lmaWV4X3NldF9zdGFfaHRfY2FwKHByaXYsIHNpbmZvLVxcdTAwM2Vhc3NvY19yZXFfaWVzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy0xNzAtXFx0XFx0XFx0XFx0ICAgICAgIHNpbmZvLVxcdTAwM2Vhc3NvY19yZXFfaWVzX2xlbiwgbm9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jPTcxMj12b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYzo3MTM6bXdpZmlleF9zZXRfc3RhX2h0X2NhcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBjb25zdCB1OCAqaWVzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMtNzE0LVxcdFxcdCAgICAgICBpbnQgaWVzX2xlbiwgc3RydWN0IG13aWZpZXhfc3RhX25vZGUgKm5vZGUpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjE4OjQ5LjkyMzc5NTY3MVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODkyNzkxMzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIGBtd2lmaWV4YCB3aXRoIFVTQioqXG5cbk9rYXksIHNvIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYCBpcyB0cmlnZ2VyZWQgYnkgYG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRgLiAgQW5kIHNpbmNlIHRoaXMgaXMgVVNCLCB0aGVzZSBldmVudHMgYXJlIHVsdGltYXRlbHkgY29taW5nIGZyb20gVVNCIFVSQnMsIHNvIHdlJ3JlIGRlZmluaXRlbHkgbG9va2luZyBhdCBhIGZ1enphYmxlIHBhdGggaGVyZSEgVGhhdCBtYWtlcyB0aGluZ3MgbXVjaCBzaW1wbGVyLlxuXG5Ob3csIGxldCdzIHplcm8gaW4gb24gdGhlIGtleSBzeW1ib2xzLiBUaGlzIHBhdGNoIGhpdHMgYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGFuZCBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAuICBSaWdodCwgbGV0J3Mgc2VlLCBhcmUgdGhleSBzdGF0aWM/ICBHb29kLCBuZWl0aGVyIGFyZSBzdGF0aWMuIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBpcyBpbiBgc2Nhbi5jYCBhbmQgZGVjbGFyZWQgaW4gYG1haW4uaGAuIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYCBpcyBpbiBgdXRpbC5jYCBhbmQgZGVjbGFyZWQgaW4gYG1haW4uaGAuXG5cbkhtbSwgc2hvdWxkIEkgZXhwYW5kIHRoZSBmb2N1cz8gUGVyaGFwcyBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAgaXRzZWxmLCBvciBtYXliZSBgbXdpZmlleF9maWxsX25ld19ic3NfZGVzY2AgbWlnaHQgYmUgd29ydGggYSBsb29rLiBGb3Igbm93LCBsZXQncyBqdXN0IHN0aWNrIHdpdGggdGhlIG1vZGlmaWVkIGZ1bmN0aW9uczogYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGFuZCBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAuIFNpbXBsaWNpdHkgaXMga2V5IHRvIGdldHRpbmcgdGhpcyBzZXQgdXAuXG5cbkFscmlnaHQsIHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFtIEkgZ29pbmcgdG8gbmVlZCB0byBidWlsZCBmb3IgdGhpcz8gRGVmaW5pdGVseSBgTVdJRklFWGAsIGBNV0lGSUVYX1VTQmAsIGFuZCBgQ0ZHODAyMTFgLCBvYnZpb3VzbHkuICBTaW5jZSB3ZSdyZSBmb2N1c2luZyBvbiBVU0IsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIGBVU0JgIGVuYWJsZWQuIE5vIHN1cnByaXNlcyB0aGVyZS4gR29vZCwgSSdsbCBkb3VibGUgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBmb3IgYE1XSUZJRVhfVVNCYCBqdXN0IHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDk4LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjE4OjU1LjgxNjU5MDE5M1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyNTM2MjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNV0lGSUVYX1VTQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0yNT1jb25maWcgTVdJRklFWF9QQ0lFXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzozNzpjb25maWcgTVdJRklFWF9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zOC1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjE4OjU1Ljk2OTEzMzUyNFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODM3MzU1OTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWFydmVsbCBXaUZpLUV4IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbiwgYE1XSUZJRVhfVVNCYC4gV2UndmUgZ290IHRoZSBiYXNpYyBzdHJ1Y3R1cmUgaGVyZSwgc2VlaW5nIHRoYXQgaXQncyBhIHRyaXN0YXRlIG9wdGlvbiBmb3IgdGhlIE1hcnZlbGwgV2lGaS1FeCBEcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgdGhvc2UgVVNCIGRldmljZXMuIEl0J3Mgb2J2aW91c2x5IGRlcGVuZGVudCBvbiBgTVdJRklFWGAgYW5kIGBVU0JgLCBubyBzdXJwcmlzZXMgdGhlcmUuIFRoYXQncyBhIGdpdmVuLlxuXG5JIG5lZWQgdG8gbWFrZSBzdXJlIHRob3NlIGFyZSBhbGwgc2V0LiBTbyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBgTVdJRklFWF9VU0JgLCBgTVdJRklFWGAsIGBVU0JgIGFyZSBteSBjb3JlIGRlcGVuZGVuY2llcy4gSSBhbHNvIHNlZSBgQ0ZHODAyMTFgIGlzIG5lZWRlZCBpbiB0aGlzIGNoYWluLiBOb3csIEkgdGhvdWdodCBgTUFDODAyMTFgIG1pZ2h0IGJlIGltcG9ydGFudCB0b28sIGJ1dCBpdCBzZWVtcyB0aGF0IGl0J3Mgbm90IHN0cmljdGx5ICpyZXF1aXJlZCogYnkgYE1XSUZJRVhgLCBhbmQgaXQncyBgQ0ZHODAyMTFgIHRoYXQncyB0aGUga2V5IHJlcXVpcmVtZW50IGhlcmUuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiBgQ0ZHODAyMTFgIGp1c3QgdG8gYmUgY29tcGxldGVseSBjZXJ0YWluIHRoYXQgdGhlcmUgYXJlbid0IGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDAwNiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDoxOTowMC44MDY0OTI2MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE2MTIyMzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDRkc4MDIxMVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZz0xND1jb25maWcgV0VYVF9QUklWXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNi1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzpjb25maWcgQ0ZHODAyMTFcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiY2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnPTM4PWNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01MS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo1Mjpjb25maWcgQ0ZHODAyMTFfREVWRUxPUEVSX1dBUk5JTkdTXFxubmV0L3dpcmVsZXNzL0tjb25maWctNTMtXFx0Ym9vbCBcXFwiZW5hYmxlIGRldmVsb3BlciB3YXJuaW5nc1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY3LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjY4OmNvbmZpZyBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02OS1cXHRib29sIFxcXCJjZmc4MDIxMSBjZXJ0aWZpY2F0aW9uIG9udXNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy04OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo4OTpjb25maWcgQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05MC1cXHRib29sIFxcXCJyZXF1aXJlIHJlZ2RiIHNpZ25hdHVyZVxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo5OTpjb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTAwLVxcdGJvb2wgXFxcImFsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTEwLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjExMTpjb25maWcgQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVxcdHN0cmluZyBcXFwiYWRkaXRpb25hbCByZWdkYiBrZXkgZGlyZWN0b3J5XFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjI6Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cXHRib29sIFxcXCJjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzU6Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNi1cXHRib29sIFxcXCJjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTU4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE1OTpjb25maWcgQ0ZHODAyMTFfREVGQVVMVF9QU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2MC1cXHRib29sIFxcXCJlbmFibGUgcG93ZXJzYXZlIGJ5IGRlZmF1bHRcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTY5OmNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVxcdGJvb2wgXFxcImNmZzgwMjExIERlYnVnRlMgZW50cmllc1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Ni1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzc6Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3OC1cXHRib29sIFxcXCJzdXBwb3J0IENSREFcXFwiIGlmIEVYUEVSVFxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE4Nzpjb25maWcgQ0ZHODAyMTFfV0VYVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJjZmc4MDIxMSB3aXJlbGVzcyBleHRlbnNpb25zIGNvbXBhdGliaWxpdHlcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTMtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk0OmNvbmZpZyBDRkc4MDIxMV9LVU5JVF9URVNUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTk1LVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgY2ZnODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjA6MTk6MDEuMDIyNjk5NjM3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3NDg2OTkwMDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWFydmVsbCBXaUZpLUV4IERyaXZlciBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBgQ0ZHODAyMTFgIGlzIGluaGVyZW50bHkgZmluZSBzaW5jZSBpdHMgZGVwZW5kZW5jeSBvbiBgUkZLSUxMYCBpcyBhIGJpdCByZWR1bmRhbnQgLSB0aGUgYnVpbGQgc3lzdGVtIHdpbGwgcmVzb2x2ZSB0aGF0LiBUaGUgY3JpdGljYWwgY29uZmlndXJhdGlvbnMgaGVyZSBhcHBlYXIgdG8gYmUgY2VudGVyZWQgYXJvdW5kIHRoZSBNYXJ2ZWxsIFdpRmktRXggZHJpdmVyLCBzcGVjaWZpY2FsbHkgYE1XSUZJRVhgIGFuZCBgTVdJRklFWF9VU0JgLiBXaGlsZSBgVVNCYCBpcyB0eXBpY2FsbHkgZW5hYmxlZCBpbiB0aGUgc3l6a2FsbGVyIGNvbmZpZ3MsIGl0J3Mgd29ydGggZXhwbGljaXRseSBsaXN0aW5nIGl0IGhlcmUgZm9yIGNsYXJpdHkuIFRoZSBpbXBvcnRhbnQgb25lIGlzIGRlZmluaXRlbHkgYE1XSUZJRVhfVVNCYC5cblxuTXkgZm9jdXMgaXMgdGhlIGNvcmUgaXNzdWUsIGFuZCBpdCdzIGxvb2tpbmcgbGlrZSB0aGlzIGNlbnRlcnMgYXJvdW5kIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgLiBCYXNlZCBvbiB0aGUgcGF0Y2gsIHRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgd2VyZSBtb2RpZmllZCB0byBpbmNsdWRlIGxlbmd0aCBjaGVja3MgZm9yIHZhcmlvdXMgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykuIFRoZSBnb2FsIGlzIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBvciB3cml0ZXMgd2l0aGluIHRoZXNlIHR3byBzcGVjaWZpYyBmdW5jdGlvbnMuIFRoZSBNYXJ2ZWxsIFdpRmktRXggZHJpdmVyIChgbXdpZmlleGApIGlzIHNwZWNpZmljYWxseSB0aGUgZHJpdmVyIHRoYXQgc3VwcG9ydHMgVVNCIGludGVyZmFjZXMgKGBNV0lGSUVYX1VTQmApLCBtYWtpbmcgaXQgcmVhZGlseSBmdXp6YWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2Ugc3l6a2FsbGVyLiBUaGUgdnVsbmVyYWJpbGl0eSdzIGF0dGFjayB2ZWN0b3IgaXMgdGhyb3VnaCBVU0IgVVJCIHJlc3BvbnNlcyBjb250YWluaW5nIG1hbGljaW91cyBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSwgd2hpY2ggYXJlIG5vdyBjaGVja2VkLlxuXG5UaGVyZWZvcmUsIHRoZSBjb25maWcgb3B0aW9ucyBJIG5lZWQgdG8gZW5hYmxlIGFyZTogYE1XSUZJRVhgLCBgTVdJRklFWF9VU0JgLCBgQ0ZHODAyMTFgLCBhbmQgYFVTQmAuIEFsc28sIGxldCdzIHZlcmlmeSBpZiBgV0xBTmAgaXMgcmVxdWlyZWQgZm9yIGBNV0lGSUVYYCwgdGhhdCB1c3VhbGx5IGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTMzMSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDoxOToxOC41MDk2OTQyMjNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MzkwODE2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVdJRklFWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI6Y29uZmlnIE1XSUZJRVhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MTI6Y29uZmlnIE1XSUZJRVhfU0RJT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEzLVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI1OmNvbmZpZyBNV0lGSUVYX1BDSUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNi1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgUENJRSA4NzY2Lzg4OTcvODk5N1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM3OmNvbmZpZyBNV0lGSUVYX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM4LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjA6MTk6MTkuMDgzNjE0MTQ4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2MjQ1NzcxMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBwcm92aWRlZCB0ZXh0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNYXJ2ZWxsIFdpcmVsZXNzIEtjb25maWcqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBjb25maWd1cmVkIGZvciBNYXJ2ZWxsIHdpcmVsZXNzIGRldmljZXMuIFRoYXQgbWVhbnMgZ29pbmcgc3RyYWlnaHQgdG8gdGhlIHNvdXJjZTogYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgYWxsIHRoZSBjb21waWxhdGlvbiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBkZWZhdWx0IHNldHRpbmdzIGFyZSBsaWtlbHkgZGVmaW5lZCBmb3IgdGhlIE1hcnZlbGwgd2lyZWxlc3MgZHJpdmVycyB3aXRoaW4gdGhlIGtlcm5lbC4gSSdsbCBuZWVkIHRvIHNlZSBob3cgdGhlIE1hcnZlbGwtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgYnJvYWRlciB3aXJlbGVzcyBzdWJzeXN0ZW0uIEknbSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgYW55IHBvdGVudGlhbCBjb25mbGljdHMgb3IgcGxhdGZvcm0tc3BlY2lmaWMgY29uc2lkZXJhdGlvbnMgdGhhdCBtaWdodCBpbmZsdWVuY2UgaXRzIGJlaGF2aW9yLiBGcm9tIHRoZXJlLCBJJ2xsIGJlIGluIGEgYmV0dGVyIHBvc2l0aW9uIHRvIGFuYWx5emUgdGhlIHJlbGV2YW50IHNvdXJjZSBjb2RlLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI0OTAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDoxOToyNC43MDgxOTUzNzZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI4MTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFdMQU5fVkVORE9SX01BUlZFTExcXG4gICAzOlxcdFxcdGJvb2wgXFxcIk1hcnZlbGwgZGV2aWNlc1xcXCJcXG4gICA0OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGNhcmQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZLlxcbiAgIDc6XFx0XFxuICAgODpcXHRcXHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24ndCBkaXJlY3RseSBhZmZlY3QgdGhlXFxuICAgOTpcXHRcXHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXFxuICAxMDpcXHRcXHQgIHF1ZXN0aW9ucyBhYm91dCB0aGVzZSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcXG4gIDExOlxcdFxcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxcbiAgMTI6XFx0XFxuICAxMzpcXHRpZiBXTEFOX1ZFTkRPUl9NQVJWRUxMXFxuICAxNDpcXHRcXG4gIDE1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhcy9LY29uZmlnXFxcIlxcbiAgMTY6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzX3RmL0tjb25maWdcXFwiXFxuICAxNzpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnXFxcIlxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgTVdMOEtcXG4gIDIwOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIDg4Vzh4eHggUENJL1BDSWUgV2lyZWxlc3Mgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjA6MTk6MjQuNzA4MzI1ODU2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4Mzk4MjQ1OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBtZW50YWwgcnVuZG93bjpcblxuKipTZXR0aW5nIHVwIE1hcnZlbGwgV0xBTiBEcml2ZXJzKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLiBNeSBjdXJyZW50IG9iamVjdGl2ZSBpcyB0byBjb25maWd1cmUgdGhlIHN5c3RlbSBmb3IgTWFydmVsbCBXTEFOIHN1cHBvcnQsIGFuZCB0aGUga2V5IGlzIHRvIGdldCB0aGUgbmVjZXNzYXJ5IGRlcGVuZGVuY2llcyBzdHJhaWdodC4gRmlyc3QsIEkgcmVtZW1iZXIgZnJvbSB3b3JraW5nIHdpdGggdGhlIEtjb25maWcgZmlsZXMsIHRoYXQgYFdMQU5fVkVORE9SX01BUlZFTExgIG5lZWRzIHRvIGJlIGRlZmluZWQuIEFsc28sIGl0J3MgY2xlYXIgYFdMQU5gIGlzIGEgcHJlcmVxdWlzaXRlIGZvciB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUsIHNvIHRoYXQgaGFzIHRvIGJlIGluIHRoZSBjb25maWd1cmF0aW9uLiBHb3QgaXQsIGxldCBtZSBhZGQgYFdMQU5fVkVORE9SX01BUlZFTExgIGFuZCBgV0xBTmAgdG8gdGhlIGFjdGl2ZSBjb25maWd1cmF0aW9uIGxpc3QuXG5cbk15IGN1cnJlbnQgQ29uZmlnIGxpc3QgaXMgYXMgZm9sbG93czogYFdMQU5gLCBgV0xBTl9WRU5ET1JfTUFSVkVMTGAsIGBDRkc4MDIxMWAsIGBNV0lGSUVYYCwgYE1XSUZJRVhfVVNCYCwgYW5kIGBVU0JgLlxuXG5Ob3csIEkgd2lsbCBzZXQgdGhvc2UgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMDI4LCJPdXRwdXRUb2tlbnMiOjIyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjE5OjMyLjU0ODE1NTE4OVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjg2MTIyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTUFSVkVMTFwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llXCIsXG4gICAgXCJtd2lmaWV4X3NldF9zdGFfaHRfY2FwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIGZvciB2YXJpb3VzIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIGluIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcGFydCBvZiB0aGUgTWFydmVsbCBXaUZpLUV4IGRyaXZlciAoYG13aWZpZXhgKS4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyAoYE1XSUZJRVhfVVNCYCksIHdoaWNoIGNhbiBiZSBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHN5emthbGxlcidzIFVTQiBkdW1teV9oY2QgZW11bGF0aW9uLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIHZpYSBVU0IgVVJCIHJlc3BvbnNlcyBjb250YWluaW5nIG1hbGljaW91cyBJRXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTUFSVkVMTFwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llXCIsXG4gICAgXCJtd2lmaWV4X3NldF9zdGFfaHRfY2FwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIGZvciB2YXJpb3VzIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIGluIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcGFydCBvZiB0aGUgTWFydmVsbCBXaUZpLUV4IGRyaXZlciAoYG13aWZpZXhgKS4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyAoYE1XSUZJRVhfVVNCYCksIHdoaWNoIGNhbiBiZSBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHN5emthbGxlcidzIFVTQiBkdW1teV9oY2QgZW11bGF0aW9uLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIHZpYSBVU0IgVVJCIHJlc3BvbnNlcyBjb250YWluaW5nIG1hbGljaW91cyBJRXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdf297[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-02 19:32:20 +0000 UTC FinishedAt: 2026-08-02 20:19:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "4a0bd262df757b25fc4e2a53c947317c119ced4e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN", "WLAN_VENDOR_MARVELL", "CFG80211", "MWIFIEX", "MWIFIEX_USB", "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": "4a0bd262df757b25fc4e2a53c947317c119ced4e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN", "WLAN_VENDOR_MARVELL", "CFG80211", "MWIFIEX", "MWIFIEX_USB", "USB" ], "series_id": "fa025f7a-cc54-4236-8faf-54b156e9c62d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mwifiex_update_bss_desc_with_ie", "mwifiex_set_sta_ht_cap" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUFSVkVMTCYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNV0lGSUVYJiMzNDssCiAgICAmIzM0O01XSUZJRVhfVVNCJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUmIzM0OywKICAgICYjMzQ7bXdpZmlleF9zZXRfc3RhX2h0X2NhcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgZm9yIHZhcmlvdXMgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgaW4gYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGFuZCBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzL3dyaXRlcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSBwYXJ0IG9mIHRoZSBNYXJ2ZWxsIFdpRmktRXggZHJpdmVyIChgbXdpZmlleGApLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBpbnRlcmZhY2VzIChgTVdJRklFWF9VU0JgKSwgd2hpY2ggY2FuIGJlIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgc3l6a2FsbGVyJiMzOTtzIFVTQiBkdW1teV9oY2QgZW11bGF0aW9uLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIHZpYSBVU0IgVVJCIHJlc3BvbnNlcyBjb250YWluaW5nIG1hbGljaW91cyBJRXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6MTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2YmI1NjEyNzY2NGNlY2E5MjdjNjJhMWNkYzMzZDg2ZjMxMGU0ZDExXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAyMDoxNzozNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY1xuaW5kZXggOTdjMGVjM2I4MjJlNy4uMjIwMzFmYWJhMDU3ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNcbkBAIC0xMzg0LDYgJiM0MzsxMzg0LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0XHRcdFx0XHRcdGJzc19lbnRyeS1cdTAwM2ViZWFjb25fYnVmKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBXTEFOX0VJRF9IVF9DQVBBQklMSVRZOlxuJiM0MztcdFx0XHRpZiAoZWxlbWVudF9sZW4gXHUwMDNjIHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCkpXG4mIzQzO1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdFx0YnNzX2VudHJ5LVx1MDAzZWJjbl9odF9jYXAgPSAoc3RydWN0IGllZWU4MDIxMV9odF9jYXAgKilcbiBcdFx0XHRcdFx0KGN1cnJlbnRfcHRyICYjNDM7XG4gXHRcdFx0XHRcdHNpemVvZihzdHJ1Y3QgaWVlZV90eXBlc19oZWFkZXIpKTtcbkBAIC0xMzkyLDYgJiM0MzsxMzk0LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0XHRcdFx0YnNzX2VudHJ5LVx1MDAzZWJlYWNvbl9idWYpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIFdMQU5fRUlEX0hUX09QRVJBVElPTjpcbiYjNDM7XHRcdFx0aWYgKGVsZW1lbnRfbGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9odF9vcGVyYXRpb24pKVxuJiM0MztcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2ViY25faHRfb3BlciA9XG4gXHRcdFx0XHQoc3RydWN0IGllZWU4MDIxMV9odF9vcGVyYXRpb24gKikoY3VycmVudF9wdHIgJiM0MztcbiBcdFx0XHRcdFx0c2l6ZW9mKHN0cnVjdCBpZWVlX3R5cGVzX2hlYWRlcikpO1xuQEAgLTE0MDAsNiAmIzQzOzE0MDQsOCBAQCBpbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuIFx0XHRcdFx0XHRic3NfZW50cnktXHUwMDNlYmVhY29uX2J1Zik7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgV0xBTl9FSURfVkhUX0NBUEFCSUxJVFk6XG4mIzQzO1x0XHRcdGlmIChlbGVtZW50X2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCkpXG4mIzQzO1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdFx0YnNzX2VudHJ5LVx1MDAzZWRpc2FibGVfMTFhYyA9IGZhbHNlO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2ViY25fdmh0X2NhcCA9XG4gXHRcdFx0XHQodm9pZCAqKShjdXJyZW50X3B0ciAmIzQzO1xuQEAgLTE0MDksNiAmIzQzOzE0MTUsOCBAQCBpbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuIFx0XHRcdFx0XHQgICAgICBic3NfZW50cnktXHUwMDNlYmVhY29uX2J1Zik7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgV0xBTl9FSURfVkhUX09QRVJBVElPTjpcbiYjNDM7XHRcdFx0aWYgKGVsZW1lbnRfbGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV92aHRfb3BlcmF0aW9uKSlcbiYjNDM7XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0XHRic3NfZW50cnktXHUwMDNlYmNuX3ZodF9vcGVyID1cbiBcdFx0XHRcdCh2b2lkICopKGN1cnJlbnRfcHRyICYjNDM7XG4gXHRcdFx0XHRcdCBzaXplb2Yoc3RydWN0IGllZWVfdHlwZXNfaGVhZGVyKSk7XG5AQCAtMTQxNyw2ICYjNDM7MTQyNSw4IEBAIGludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4gXHRcdFx0XHRcdCAgICAgIGJzc19lbnRyeS1cdTAwM2ViZWFjb25fYnVmKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBXTEFOX0VJRF9CU1NfQ09FWF8yMDQwOlxuJiM0MztcdFx0XHRpZiAoIWVsZW1lbnRfbGVuKVxuJiM0MztcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2ViY25fYnNzX2NvXzIwNDAgPSBjdXJyZW50X3B0cjtcbiBcdFx0XHRic3NfZW50cnktXHUwMDNlYnNzX2NvXzIwNDBfb2Zmc2V0ID1cbiBcdFx0XHRcdCh1MTYpIChjdXJyZW50X3B0ciAtIGJzc19lbnRyeS1cdTAwM2ViZWFjb25fYnVmKTtcbkBAIC0xNDI3LDYgJiM0MzsxNDM3LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0XHRcdCh1MTYpIChjdXJyZW50X3B0ciAtIGJzc19lbnRyeS1cdTAwM2ViZWFjb25fYnVmKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBXTEFOX0VJRF9PUE1PREVfTk9USUY6XG4mIzQzO1x0XHRcdGlmICghZWxlbWVudF9sZW4pXG4mIzQzO1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdFx0YnNzX2VudHJ5LVx1MDAzZW9wZXJfbW9kZSA9ICh2b2lkICopY3VycmVudF9wdHI7XG4gXHRcdFx0YnNzX2VudHJ5LVx1MDAzZW9wZXJfbW9kZV9vZmZzZXQgPVxuIFx0XHRcdFx0XHQodTE2KSgodTggKilic3NfZW50cnktXHUwMDNlb3Blcl9tb2RlIC1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuY1xuaW5kZXggN2QzNjMxZDIxMjIzNi4uODQ0MjIzYzA0ZTJlZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmNcbkBAIC03MjEsNyAmIzQzOzcyMSw3IEBAIG13aWZpZXhfc2V0X3N0YV9odF9jYXAoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgY29uc3QgdTggKmllcyxcbiBcbiBcdGh0X2NhcF9pZSA9ICh2b2lkICopY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9IVF9DQVBBQklMSVRZLCBpZXMsXG4gXHRcdFx0XHRcdCAgICAgaWVzX2xlbik7XG4tXHRpZiAoaHRfY2FwX2llKSB7XG4mIzQzO1x0aWYgKGh0X2NhcF9pZSBcdTAwMjZcdTAwMjYgaHRfY2FwX2llLVx1MDAzZWxlbiBcdTAwM2U9IHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCkpIHtcbiBcdFx0aHRfY2FwID0gKHZvaWQgKikoaHRfY2FwX2llICYjNDM7IDEpO1xuIFx0XHRub2RlLVx1MDAzZWlzXzExbl9lbmFibGVkID0gMTtcbiBcdFx0bm9kZS1cdTAwM2VtYXhfYW1zZHUgPSBsZTE2X3RvX2NwdShodF9jYXAtXHUwMDNlY2FwX2luZm8pIFx1MDAyNlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjE3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtXTEFOJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX01BUlZFTEwmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llJiMzNDssCiAgICAmIzM0O213aWZpZXhfc2V0X3N0YV9odF9jYXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIGZvciB2YXJpb3VzIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIGluIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcGFydCBvZiB0aGUgTWFydmVsbCBXaUZpLUV4IGRyaXZlciAoYG13aWZpZXhgKS4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyAoYE1XSUZJRVhfVVNCYCksIHdoaWNoIGNhbiBiZSBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHN5emthbGxlciYjMzk7cyBVU0IgZHVtbXlfaGNkIGVtdWxhdGlvbi4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSB2aWEgVVNCIFVSQiByZXNwb25zZXMgY29udGFpbmluZyBtYWxpY2lvdXMgSUVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNmJiNTYxMjc2NjRjZWNhOTI3YzYyYTFjZGMzM2Q4NmYzMTBlNGQxMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDIgMjA6MTc6MzcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYwppbmRleCA5N2MwZWMzYjgyMmU3Li4yMjAzMWZhYmEwNTdmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMKQEAgLTEzODQsNiAmIzQzOzEzODQsOCBAQCBpbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLAogCQkJCQkJCWJzc19lbnRyeS0mZ3Q7YmVhY29uX2J1Zik7CiAJCQlicmVhazsKIAkJY2FzZSBXTEFOX0VJRF9IVF9DQVBBQklMSVRZOgomIzQzOwkJCWlmIChlbGVtZW50X2xlbiAmbHQ7IHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCkpCiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwogCQkJYnNzX2VudHJ5LSZndDtiY25faHRfY2FwID0gKHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwICopCiAJCQkJCShjdXJyZW50X3B0ciAmIzQzOwogCQkJCQlzaXplb2Yoc3RydWN0IGllZWVfdHlwZXNfaGVhZGVyKSk7CkBAIC0xMzkyLDYgJiM0MzsxMzk0LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwKIAkJCQkJYnNzX2VudHJ5LSZndDtiZWFjb25fYnVmKTsKIAkJCWJyZWFrOwogCQljYXNlIFdMQU5fRUlEX0hUX09QRVJBVElPTjoKJiM0MzsJCQlpZiAoZWxlbWVudF9sZW4gJmx0OyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9odF9vcGVyYXRpb24pKQomIzQzOwkJCQlyZXR1cm4gLUVJTlZBTDsKIAkJCWJzc19lbnRyeS0mZ3Q7YmNuX2h0X29wZXIgPQogCQkJCShzdHJ1Y3QgaWVlZTgwMjExX2h0X29wZXJhdGlvbiAqKShjdXJyZW50X3B0ciAmIzQzOwogCQkJCQlzaXplb2Yoc3RydWN0IGllZWVfdHlwZXNfaGVhZGVyKSk7CkBAIC0xNDAwLDYgJiM0MzsxNDA0LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwKIAkJCQkJYnNzX2VudHJ5LSZndDtiZWFjb25fYnVmKTsKIAkJCWJyZWFrOwogCQljYXNlIFdMQU5fRUlEX1ZIVF9DQVBBQklMSVRZOgomIzQzOwkJCWlmIChlbGVtZW50X2xlbiAmbHQ7IHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXApKQomIzQzOwkJCQlyZXR1cm4gLUVJTlZBTDsKIAkJCWJzc19lbnRyeS0mZ3Q7ZGlzYWJsZV8xMWFjID0gZmFsc2U7CiAJCQlic3NfZW50cnktJmd0O2Jjbl92aHRfY2FwID0KIAkJCQkodm9pZCAqKShjdXJyZW50X3B0ciAmIzQzOwpAQCAtMTQwOSw2ICYjNDM7MTQxNSw4IEBAIGludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsCiAJCQkJCSAgICAgIGJzc19lbnRyeS0mZ3Q7YmVhY29uX2J1Zik7CiAJCQlicmVhazsKIAkJY2FzZSBXTEFOX0VJRF9WSFRfT1BFUkFUSU9OOgomIzQzOwkJCWlmIChlbGVtZW50X2xlbiAmbHQ7IHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX3ZodF9vcGVyYXRpb24pKQomIzQzOwkJCQlyZXR1cm4gLUVJTlZBTDsKIAkJCWJzc19lbnRyeS0mZ3Q7YmNuX3ZodF9vcGVyID0KIAkJCQkodm9pZCAqKShjdXJyZW50X3B0ciAmIzQzOwogCQkJCQkgc2l6ZW9mKHN0cnVjdCBpZWVlX3R5cGVzX2hlYWRlcikpOwpAQCAtMTQxNyw2ICYjNDM7MTQyNSw4IEBAIGludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsCiAJCQkJCSAgICAgIGJzc19lbnRyeS0mZ3Q7YmVhY29uX2J1Zik7CiAJCQlicmVhazsKIAkJY2FzZSBXTEFOX0VJRF9CU1NfQ09FWF8yMDQwOgomIzQzOwkJCWlmICghZWxlbWVudF9sZW4pCiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwogCQkJYnNzX2VudHJ5LSZndDtiY25fYnNzX2NvXzIwNDAgPSBjdXJyZW50X3B0cjsKIAkJCWJzc19lbnRyeS0mZ3Q7YnNzX2NvXzIwNDBfb2Zmc2V0ID0KIAkJCQkodTE2KSAoY3VycmVudF9wdHIgLSBic3NfZW50cnktJmd0O2JlYWNvbl9idWYpOwpAQCAtMTQyNyw2ICYjNDM7MTQzNyw4IEBAIGludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsCiAJCQkJKHUxNikgKGN1cnJlbnRfcHRyIC0gYnNzX2VudHJ5LSZndDtiZWFjb25fYnVmKTsKIAkJCWJyZWFrOwogCQljYXNlIFdMQU5fRUlEX09QTU9ERV9OT1RJRjoKJiM0MzsJCQlpZiAoIWVsZW1lbnRfbGVuKQomIzQzOwkJCQlyZXR1cm4gLUVJTlZBTDsKIAkJCWJzc19lbnRyeS0mZ3Q7b3Blcl9tb2RlID0gKHZvaWQgKiljdXJyZW50X3B0cjsKIAkJCWJzc19lbnRyeS0mZ3Q7b3Blcl9tb2RlX29mZnNldCA9CiAJCQkJCSh1MTYpKCh1OCAqKWJzc19lbnRyeS0mZ3Q7b3Blcl9tb2RlIC0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jCmluZGV4IDdkMzYzMWQyMTIyMzYuLjg0NDIyM2MwNGUyZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYwpAQCAtNzIxLDcgJiM0Mzs3MjEsNyBAQCBtd2lmaWV4X3NldF9zdGFfaHRfY2FwKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIGNvbnN0IHU4ICppZXMsCiAKIAlodF9jYXBfaWUgPSAodm9pZCAqKWNmZzgwMjExX2ZpbmRfaWUoV0xBTl9FSURfSFRfQ0FQQUJJTElUWSwgaWVzLAogCQkJCQkgICAgIGllc19sZW4pOwotCWlmIChodF9jYXBfaWUpIHsKJiM0MzsJaWYgKGh0X2NhcF9pZSAmYW1wOyZhbXA7IGh0X2NhcF9pZS0mZ3Q7bGVuICZndDs9IHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCkpIHsKIAkJaHRfY2FwID0gKHZvaWQgKikoaHRfY2FwX2llICYjNDM7IDEpOwogCQlub2RlLSZndDtpc18xMW5fZW5hYmxlZCA9IDE7CiAJCW5vZGUtJmd0O21heF9hbXNkdSA9IGxlMTZfdG9fY3B1KGh0X2NhcC0mZ3Q7Y2FwX2luZm8pICZhbXA7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNjkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2lGaSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYG13aWZpZXhgIOKAkyBzcGVjaWZpY2FsbHksIGBzY2FuLmNgIGFuZCBgdXRpbC5jYC4gU2VlbXMgbGlrZSB0aGV5JiMzOTtyZSBhZGRpbmcgc29tZSBsZW5ndGggY2hlY2tzIHRvIHRoZSBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBoYW5kbGluZyB3aXRoaW4gYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGFuZCBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAuIFNvdW5kcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGFpbWVkIGF0IHByZXZlbnRpbmcgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZHMgb3Igd3JpdGVzLCB3aGljaCBpcyBhbHdheXMgZ29vZCB0byBzZWUuIFRoZSBkcml2ZXIgaW4gcXVlc3Rpb24gaGVyZSBpcyB0aGUgTWFydmVsbCBXaUZpIGRyaXZlciwgYG13aWZpZXhgLgoKTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBjYW4gdGhpcyBiZSB0ZXN0ZWQgaW4gYSB2aXJ0dWFsaXplZCBzZXR1cD8gV2lGaSBkcml2ZXJzIGFyZSBvZnRlbiBhIHBhaW4gYmVjYXVzZSB0aGV5IHVzdWFsbHkgZGVwZW5kIG9uIHNwZWNpZmljIGhhcmR3YXJlLCBsaWtlIFBDSWUsIFNESU8sIG9yIFVTQiBpbnRlcmZhY2VzLiBCdXQgd2FpdCBhIG1pbnV0ZSwgYG13aWZpZXhgICpkb2VzKiBzdXBwb3J0IFBDSWUsIFNESU8sICphbmQqIFVTQi4gVGhhdCBvcGVucyB1cCBzb21lIHBvc3NpYmlsaXRpZXMuCgpMZXQmIzM5O3MgZGlnIGRlZXBlci4gSWRlYWxseSwgSSB3YW50IHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhIFVTQiBkcml2ZXIgY29tcG9uZW50IHdpdGhpbiBgbXdpZmlleGAgdGhhdCBjb3VsZCBiZSBmdXp6ZWQuIElmIHRoZXJlJiMzOTtzIGEgVVNCIGltcGxlbWVudGF0aW9uLCB3ZSBtaWdodCBiZSBhYmxlIHRvIHVzZSBhIFVTQiBnYWRnZXQgc2V0dXAgb3IgYSBkdW1teSBIQ0Qgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMgKHVzaW5nIGBkdW1teV9oY2RgKSB3b3VsZCBiZSBwZXJmZWN0IGZvciB0aGlzIGtpbmQgb2YgdGVzdGluZy4gU28sIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZywgcHJvYmFibHkgdW5kZXIgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnYCwgdG8gc2VlIHdoYXQmIzM5O3MgZW5hYmxlZCBhbmQgd2hhdCYjMzk7cyBub3QuIFRoYXQgc2hvdWxkIHRlbGwgbWUgaWYgd2UgaGF2ZSBhIHZpYWJsZSBmdXp6aW5nIHRhcmdldC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVdJRklFWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyOmNvbmZpZyBNV0lGSUVYXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MTI6Y29uZmlnIE1XSUZJRVhfU0RJT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjU6Y29uZmlnIE1XSUZJRVhfUENJRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjYtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzozNzpjb25maWcgTVdJRklFWF9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM4LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjMzCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gYXMgaWYgdGhleSB3ZXJlIG15IG93bjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50IGFuZCBEZXBlbmRlbmN5IENoZWNrKioKClJpZ2h0LCBleGNlbGxlbnQsIHRoZSBgTVdJRklFWF9VU0JgIG1vZHVsZSBpcyBwcmVzZW50IGFuZCBhY2NvdW50ZWQgZm9yLiBHb29kLiBOb3csIGJlZm9yZSBJIGdldCB0b28gZmFyIGRvd24gdGhlIHJvYWQsIGxldCYjMzk7cyBqdXN0IHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIHVzdWFsIG1lbnRhbCBjaGVja2xpc3QuIExldCBtZSBzZWUuLi4gSSYjMzk7bGwgbmVlZCB0byBpbW1lZGlhdGVseSBzdGFydCB0aGlua2luZyBhYm91dCBpdHMgZGVwZW5kZW5jaWVzLiAqV2hpY2gqIG90aGVyIGtlcm5lbCBtb2R1bGVzIG9yIHN5c3RlbSBsaWJyYXJpZXMgaXMgYE1XSUZJRVhfVVNCYCBnb2luZyB0byByZWx5IG9uPyBBcmUgdGhlcmUgYW55IHNwZWNpZmljIHZlcnNpb25zIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gQW55IHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciBkcml2ZXJzIHRoYXQgSSBrbm93IGZyb20gZXhwZXJpZW5jZSBjYW4gYmUgcHJvYmxlbWF0aWM/IEdvdHRhIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBvdmVybG9va2luZyBzb21lIG9ic2N1cmUgcGllY2Ugb2YgdGhlIHB1enpsZSB0aGF0JiMzOTtsbCBiaXRlIG1lIGxhdGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNV0lGSUVYX1VTQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTI1PWNvbmZpZyBNV0lGSUVYX1BDSUVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM3OmNvbmZpZyBNV0lGSUVYX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2MDIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgTWFydmVsbCBXaS1GaSBEcml2ZXIgS2NvbmZpZyoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgc3BlY2lmaWNzIG9mIHRoZSBNYXJ2ZWxsIHdpcmVsZXNzIGRyaXZlciBjb25maWd1cmF0aW9uLiBJJiMzOTttIGdvaW5nIHRvIG5hdmlnYXRlIGRpcmVjdGx5IHRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ2AgYXJvdW5kIGxpbmUgMzcuIFRoaXMgYXJlYSBpcyB0eXBpY2FsbHkgd2hlcmUgdGhlIGNvcmUgbW9kdWxlIHNlbGVjdGlvbiBvcHRpb25zIG9yIGZlYXR1cmUgZGVmaW5pdGlvbnMgcmVzaWRlLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBmdW5kYW1lbnRhbCBrbm9icyBhbmQgbGV2ZXJzIHRoYXQgY29udHJvbCB0aGUgY29tcGlsYXRpb24gYW5kIGluY2x1c2lvbiBvZiB0aGUgYG13aWZpZXhgIGRyaXZlciB3aXRoaW4gYSBMaW51eCBrZXJuZWwgYnVpbGQuIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgYmUgYWJsZSB0byBxdWlja2x5IHplcm8gaW4gb24gb3B0aW9ucyByZWxhdGVkIHRvIGhhcmR3YXJlIHN1cHBvcnQsIGNyaXRpY2FsIGZlYXR1cmUgZW5hYmxlcyBvciBkaXNhYmxlcyAobGlrZSBwb3dlciBtYW5hZ2VtZW50IG9yIHNlY3VyaXR5IHByb3RvY29scyksIG9yIHBvc3NpYmx5IGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBjb25maWd1cmF0aW9uLiBTZWVpbmcgdGhlIHN0cnVjdHVyZSBvZiB0aGUgS2NvbmZpZyBmaWxlIHdpbGwgaW1tZWRpYXRlbHkgZ2l2ZSBtZSBjb250ZXh0LCBzbyBJIGNhbiBzdGFydCB0byByZWFzb24gYWJvdXQgZGVwZW5kZW5jaWVzLCByZWxhdGlvbnNoaXBzLCBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoaW4gdGhlIGRyaXZlciYjMzk7cyBjb25maWd1cmF0aW9uLiBUaGlzIGluaXRpYWwgZXhhbWluYXRpb24gd2lsbCBoZWxwIGluZm9ybSBhbnkgZnVydGhlciBpbnZlc3RpZ2F0aW9uIEkgbmVlZCB0byBkby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAzMDpcdFx0aGVscFxuICAzMTpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxuICAzMjpcdFx0ICA4NzY2Lzg4OTcvODk5NyBjaGlwc2V0cyB3aXRoIFBDSWUgaW50ZXJmYWNlLlxuICAzMzpcdFxuICAzNDpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuICAzNTpcdFx0ICBtd2lmaWV4X3BjaWUuXG4gIDM2Olx0XG4gIDM3Olx0Y29uZmlnIE1XSUZJRVhfVVNCXG4gIDM4Olx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1wmIzM0O1xuICAzOTpcdFx0ZGVwZW5kcyBvbiBNV0lGSUVYIFx1MDAyNlx1MDAyNiBVU0JcbiAgNDA6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgNDE6XHRcdGhlbHBcbiAgNDI6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE1hcnZlbGxcbiAgNDM6XHRcdCAgODc5Ny84OTk3IGNoaXBzZXQgd2l0aCBVU0IgaW50ZXJmYWNlLlxuICA0NDpcdFxuICA0NTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuICA0NjpcdFx0ICBtd2lmaWV4X3VzYi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTQ5CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBkZXBlbmRlbmNpZXMsIHN1bW1hcml6ZWQgYXMgYSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRlcGVuZGVuY3kgRGVlcCBEaXZlKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgYE1XSUZJRVhfVVNCYCBpcyBidWlsdCBvbiB0b3Agb2YgYE1XSUZJRVhgIGFuZCBgVVNCYCDigJMgbWFrZXMgc2Vuc2UsIHRoZSAmIzM0O1VTQiYjMzQ7IHBhcnQgaXMgYSBkZWFkIGdpdmVhd2F5LCBidXQgSSBzdGlsbCBsaWtlIHRvIGJlIHRob3JvdWdoLiBOb3csIGBNV0lGSUVYYCBpdHNlbGYgcmVsaWVzIG9uIGBNQUM4MDIxMWAgYW5kIGBDRkc4MDIxMWAuIFRpbWUgdG8gZG91YmxlLWNoZWNrIHRob3NlIGBNV0lGSUVYYCBkZXBlbmRlbmNpZXMgaW4gZGV0YWlsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBzdGFjayB0byBlbnN1cmUgYSBzdGFibGUgYW5kIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbjsgdGhpcyBpbml0aWFsIG9ic2VydmF0aW9uIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBNV0lGSUVYXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIENGRzgwMjExXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXG4gICA3Olx0XHQgIDgwMi4xMW4vYWMgY2hpcHNldHMuXG4gICA4Olx0XG4gICA5Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDEwOlx0XHQgIG13aWZpZXguXG4gIDExOlx0XG4gIDEyOlx0Y29uZmlnIE1XSUZJRVhfU0RJT1xuICAxMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgU0Q4Nzg2L1NEODc4Ny9TRDg3OTcvU0Q4ODg3L1NEODg5Ny9TRDg5NzcvU0Q4OTc4L1NEODk4Ny9TRDg5OTdcJiMzNDtcbiAgMTQ6XHRcdGRlcGVuZHMgb24gTVdJRklFWCBcdTAwMjZcdTAwMjYgTU1DXG4gIDE1Olx0XHRzZWxlY3QgRldfTE9BREVSXG4gIDE2Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgMTc6XHRcdGhlbHBcbiAgMTg6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE1hcnZlbGxcbiAgMTk6XHRcdCAgODc4Ni84Nzg3Lzg3OTcvODg4Ny84ODk3Lzg5NzcvODk3OC84OTg3Lzg5OTcgY2hpcHNldHMgd2l0aFxuICAyMDpcdFx0ICBTRElPIGludGVyZmFjZS4gU0Q4OTc4IGlzIGFsc28ga25vd24gYXMgTlhQIElXNDE2LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzczCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNV0lGSUVYIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgTVdJRklFWGAgZHJpdmVyIGFuZCBpbW1lZGlhdGVseSBzZWUgaXRzIGRlcGVuZGVuY2Ugb24gYENGRzgwMjExYC4gVGhhdCYjMzk7cyBhIGtleSBzdGFydGluZyBwb2ludC4gVGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZWAgYW5kIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYCwgYW5kIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHdoZXRoZXIgdGhlc2UgZnVuY3Rpb25zIGFyZSBldmVuIHJlbGV2YW50IHdoZW4gY29uc2lkZXJpbmcgVVNCIG9wZXJhdGlvbi4gQXJlIHRoZXNlIHBhdGhzIGV2ZW4gdXNlZCB3aGVuIHRoZSBkZXZpY2UgaXMgY29ubmVjdGVkIHZpYSBVU0I/IEkgbmVlZCB0byBrbm93IGlmIHRoZXNlIGFyZSBldmVuIGNhbGxlZCBmcm9tIFVTQiwgb3IgaWYgdGhleSBhcmUganVzdCB1c2VkIGZvciB0aGUgUENJIGludGVyZmFjZS4KCkxldCYjMzk7cyBzdGFydCBieSBkaWdnaW5nIGludG8gd2hlcmUgYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGlzIGNhbGxlZC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgY29kZSBmbG93IGFuZCBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIHBvc3NpYmxlIGNvZGUgcGF0aHMgaGVyZSByZWxldmFudCB0byBVU0IgdXNhZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTUzOD1pbnQgbXdpZmlleF9maWxsX25ld19ic3NfZGVzYyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTU0MC1cdFx0XHQgICAgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjE1NDE6aW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTU0Mi1cdFx0XHRcdCAgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZW50cnkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTExMj1td2lmaWV4X3JldF84MDJfMTFfc2Nhbl9nZXRfdGx2X3B0cnMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTExODEtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjExODI6aW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTE4My1cdFx0XHRcdCAgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZW50cnkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTE0MT1pbnQgbXdpZmlleF9maWxsX25ld19ic3NfZGVzYyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0xOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6MTkyOlx0cmV0dXJuIG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUocHJpdi1cdTAwM2VhZGFwdGVyLCBic3NfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMTkzLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjU4MAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipUcmFjaW5nIHRoZSBCU1MgRGVzY3JpcHRpb24gUG9wdWxhdGlvbioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBob3cgdGhlc2UgQlNTIGRlc2NyaXB0b3JzIGFyZSBiZWluZyBwb3B1bGF0ZWQuIFRoZSBjb2RlIHNuaXBwZXQgbWVudGlvbnMgYG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2NgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGNoYWluLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29udGV4dC4gTGV0JiMzOTtzIHNlZS4uLndoZXJlICppcyogYG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2NgIGJlaW5nIGNhbGxlZCBmcm9tPyBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgZnVuY3Rpb24gdG8gZ2V0IGEgc2Vuc2Ugb2YgaG93IHRoZSBCU1MgZGVzY3JpcHRpb24gaW5mb3JtYXRpb24gaXMgZmxvd2luZy4gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIHRyaWdnZXIsIHRoZSBpbnB1dCBjb250ZXh0LCB0aGUgcG90ZW50aWFsIGVycm9ycywgdGhlIGludGVuZGVkIHVzZS4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzdGFjayB3aWxsIHByb3ZpZGUgYSBtdWNoIG1vcmUgY29tcGxldGUgcGljdHVyZSB0aGFuIHNpbXBseSBpbnNwZWN0aW5nIHRoaXMgb25lIGZ1bmN0aW9uIGluIGlzb2xhdGlvbi4gVGhlIGdvYWwgaXMgdG8gZnVsbHkgdW5kZXJzdGFuZCBpdHMgZnVuY3Rpb24gd2l0aGluIHRoZSBncmVhdGVyIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTUzNj1pbnQgbXdpZmlleF9nZXRfYnNzX2luZm8oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNTM3LVx0XHRcdCBzdHJ1Y3QgbXdpZmlleF9ic3NfaW5mbyAqKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTUzODppbnQgbXdpZmlleF9maWxsX25ld19ic3NfZGVzYyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNTM5LVx0XHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9ic3MgKmJzcyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE2NTU9c3RhdGljIGludCBtd2lmaWV4X3NhdmVfaGlkZGVuX3NzaWRfY2hhbm5lbHMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2NjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE2Njc6XHRyZXQgPSBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjKHByaXYsIGJzcywgYnNzX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNjY4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2OTEtXHQvKiBiZWFjb25faWUgYnVmZmVyIHdhcyBhbGxvY2F0ZWQgaW4gZnVuY3Rpb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTY5MjpcdCAqIG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2MoKS4gRnJlZSBpdCBub3cuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2OTMtXHQgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE2OTk9c3RhdGljIGludCBtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE3MDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE3MTA6XHRyZXQgPSBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjKHByaXYsIGJzcywgYnNzX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzExLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE3MzAtXHQvKiBiZWFjb25faWUgYnVmZmVyIHdhcyBhbGxvY2F0ZWQgaW4gZnVuY3Rpb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTczMTpcdCAqIG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2MoKS4gRnJlZSBpdCBub3cuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE3MzItXHQgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM9ODg9aW50IG13aWZpZXhfcmVxdWVzdF9zZXRfbXVsdGljYXN0X2xpc3Qoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMTQwLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jOjE0MTppbnQgbXdpZmlleF9maWxsX25ld19ic3NfZGVzYyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTE0Mi1cdFx0XHQgICAgICBzdHJ1Y3QgY2ZnODAyMTFfYnNzICpic3MsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTMzMj1pbnQgbXdpZmlleF9ic3Nfc3RhcnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgc3RydWN0IGNmZzgwMjExX2JzcyAqYnNzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0zNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6MzUxOlx0XHRyZXQgPSBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjKHByaXYsIGJzcywgYnNzX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTM1Mi1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtNDQ2LVx0LyogYmVhY29uX2llIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGluIGZ1bmN0aW9uXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6NDQ3Olx0ICogbXdpZmlleF9maWxsX25ld19ic3NfZGVzYygpLiBGcmVlIGl0IG5vdy5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy00NDgtXHQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzkzNAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDI1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciBgbXdpZmlleGAqKgoKT2theSwgc28gaXQgbG9va3MgbGlrZSBgbXdpZmlleF9maWxsX25ld19ic3NfZGVzY2AgZ2V0cyBjYWxsZWQgaW4gYSBmZXcga2V5IHBsYWNlczogYG13aWZpZXhfc2F2ZV9oaWRkZW5fc3NpZF9jaGFubmVsc2AsIGBtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXNgLCBhbmQgYG13aWZpZXhfYnNzX3N0YXJ0YC4gQWxsIG9mIHRoZXNlIGFyZSBjbGVhcmx5IGludm9sdmVkIGluIHNjYW5uaW5nIGZvciBhbmQgY29ubmVjdGluZyB0byBCYXNpYyBTZXJ2aWNlIFNldHMsIHdoaWNoIG1ha2VzIHNlbnNlIHNpbmNlIGBtd2lmaWV4YCBpcyBhIFdpRmkgZHJpdmVyLiBNeSBpbml0aWFsIGluc3RpbmN0IHdhcyB0byByZWFjaCBmb3IgYG1hYzgwMjExX2h3c2ltYCwgYnV0IHdhaXQuLi4gYG13aWZpZXhgIGlzIGEgKmZ1bGxtYWMqIGRyaXZlciwgbm90IGEgbWFjODAyMTEgZHJpdmVyLiBJIG5lZWQgdG8gYmUgc3VyZSBhYm91dCB0aGlzLCBzbyBsZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBLY29uZmlnLiBZZXAsIGNvbmZpcm1lZDsgaXQgZGVwZW5kcyBvbiBgQ0ZHODAyMTFgLCB3aGljaCBtZWFucyBpdCYjMzk7cyBmdWxsbWFjLgoKU28sIGNhbiB3ZSBhY3R1YWxseSBmdXp6IGEgZnVsbG1hYyBkcml2ZXI/IFRoYXQmIzM5O3MgdGhlIHF1ZXN0aW9uLiBBaGEhIElmIGl0IHVzZXMgYSBVU0IgaW50ZXJmYWNlLCB0aGVuIHdlIG1pZ2h0IGhhdmUgYSB2aWFibGUgcGF0aCB3aXRoIHN5emthbGxlci4gU3l6a2FsbGVyIGlzIGdyZWF0IHdpdGggZW11bGF0aW5nIFVTQiBkZXZpY2VzIHVzaW5nIHRoZSBgZHVtbXlfaGNkYCBpbnRlcmZhY2U7IGl0IGNhbiBzZW5kIHJlc3BvbnNlcyB0byBVUkJzISBUaGlzIGlzIGxvb2tpbmcgcHJvbWlzaW5nLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBjaGVjayBvdXQgYG13aWZpZXhfdXNiYC4gT2theSwgeWVzLCBgbXdpZmlleF91c2JgIGV4aXN0cywgaXQgbG9va3MgbGlrZSBpdCBjYW4gYmUgZnV6emVkIHZpYSBzeXprYWxsZXIhIE5vdywgbGV0JiMzOTtzIGFsc28gaGF2ZSBhIHF1aWNrIGxvb2sgYXQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgLCBiZWNhdXNlIHRoYXQgaXMgcHJvYmFibHkgaW50ZXJlc3RpbmcgdG9vLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3NldF9zdGFfaHRfY2FwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTE1OTA9dm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNTkxOm13aWZpZXhfc2V0X3N0YV9odF9jYXAoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgY29uc3QgdTggKmllcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTU5Mi1cdFx0ICAgICAgIGludCBpZXNfbGVuLCBzdHJ1Y3QgbXdpZmlleF9zdGFfbm9kZSAqbm9kZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jPTk0PWludCBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jLTEzOC1cdFx0XHRcdCAqIGV2ZW50IHdhcyBjb3BpZWQgaW50bzsgb3RoZXJ3aXNlIHRoZSBJRSB3YWxrXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmM6MTM5Olx0XHRcdFx0ICogaW4gbXdpZmlleF9zZXRfc3RhX2h0X2NhcCgpIHJlYWRzIHBhc3RcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy0xNDAtXHRcdFx0XHQgKiBldmVudF9ib2R5IGFuZCBvdXQgb2YgdGhlIGFkYXB0ZXIgc2xhYiBvYmplY3QuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jLTE2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYzoxNjk6XHRcdG13aWZpZXhfc2V0X3N0YV9odF9jYXAocHJpdiwgc2luZm8tXHUwMDNlYXNzb2NfcmVxX2llcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy0xNzAtXHRcdFx0XHQgICAgICAgc2luZm8tXHUwMDNlYXNzb2NfcmVxX2llc19sZW4sIG5vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM9NzEyPXZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM6NzEzOm13aWZpZXhfc2V0X3N0YV9odF9jYXAoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgY29uc3QgdTggKmllcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMtNzE0LVx0XHQgICAgICAgaW50IGllc19sZW4sIHN0cnVjdCBtd2lmaWV4X3N0YV9ub2RlICpub2RlKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDk4CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMzM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIGBtd2lmaWV4YCB3aXRoIFVTQioqCgpPa2F5LCBzbyBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAgaXMgdHJpZ2dlcmVkIGJ5IGBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50YC4gIEFuZCBzaW5jZSB0aGlzIGlzIFVTQiwgdGhlc2UgZXZlbnRzIGFyZSB1bHRpbWF0ZWx5IGNvbWluZyBmcm9tIFVTQiBVUkJzLCBzbyB3ZSYjMzk7cmUgZGVmaW5pdGVseSBsb29raW5nIGF0IGEgZnV6emFibGUgcGF0aCBoZXJlISBUaGF0IG1ha2VzIHRoaW5ncyBtdWNoIHNpbXBsZXIuCgpOb3csIGxldCYjMzk7cyB6ZXJvIGluIG9uIHRoZSBrZXkgc3ltYm9scy4gVGhpcyBwYXRjaCBoaXRzIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgLiAgUmlnaHQsIGxldCYjMzk7cyBzZWUsIGFyZSB0aGV5IHN0YXRpYz8gIEdvb2QsIG5laXRoZXIgYXJlIHN0YXRpYy4gYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGlzIGluIGBzY2FuLmNgIGFuZCBkZWNsYXJlZCBpbiBgbWFpbi5oYC4gYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIGlzIGluIGB1dGlsLmNgIGFuZCBkZWNsYXJlZCBpbiBgbWFpbi5oYC4KCkhtbSwgc2hvdWxkIEkgZXhwYW5kIHRoZSBmb2N1cz8gUGVyaGFwcyBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAgaXRzZWxmLCBvciBtYXliZSBgbXdpZmlleF9maWxsX25ld19ic3NfZGVzY2AgbWlnaHQgYmUgd29ydGggYSBsb29rLiBGb3Igbm93LCBsZXQmIzM5O3MganVzdCBzdGljayB3aXRoIHRoZSBtb2RpZmllZCBmdW5jdGlvbnM6IGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgLiBTaW1wbGljaXR5IGlzIGtleSB0byBnZXR0aW5nIHRoaXMgc2V0IHVwLgoKQWxyaWdodCwgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW0gSSBnb2luZyB0byBuZWVkIHRvIGJ1aWxkIGZvciB0aGlzPyBEZWZpbml0ZWx5IGBNV0lGSUVYYCwgYE1XSUZJRVhfVVNCYCwgYW5kIGBDRkc4MDIxMWAsIG9idmlvdXNseS4gIFNpbmNlIHdlJiMzOTtyZSBmb2N1c2luZyBvbiBVU0IsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIGBVU0JgIGVuYWJsZWQuIE5vIHN1cnByaXNlcyB0aGVyZS4gR29vZCwgSSYjMzk7bGwgZG91YmxlIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBNV0lGSUVYX1VTQmAganVzdCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNV0lGSUVYX1VTQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTI1PWNvbmZpZyBNV0lGSUVYX1BDSUVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM3OmNvbmZpZyBNV0lGSUVYX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDAwNgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDEzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbiwgYE1XSUZJRVhfVVNCYC4gV2UmIzM5O3ZlIGdvdCB0aGUgYmFzaWMgc3RydWN0dXJlIGhlcmUsIHNlZWluZyB0aGF0IGl0JiMzOTtzIGEgdHJpc3RhdGUgb3B0aW9uIGZvciB0aGUgTWFydmVsbCBXaUZpLUV4IERyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aG9zZSBVU0IgZGV2aWNlcy4gSXQmIzM5O3Mgb2J2aW91c2x5IGRlcGVuZGVudCBvbiBgTVdJRklFWGAgYW5kIGBVU0JgLCBubyBzdXJwcmlzZXMgdGhlcmUuIFRoYXQmIzM5O3MgYSBnaXZlbi4KCkkgbmVlZCB0byBtYWtlIHN1cmUgdGhvc2UgYXJlIGFsbCBzZXQuIFNvIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIGBNV0lGSUVYX1VTQmAsIGBNV0lGSUVYYCwgYFVTQmAgYXJlIG15IGNvcmUgZGVwZW5kZW5jaWVzLiBJIGFsc28gc2VlIGBDRkc4MDIxMWAgaXMgbmVlZGVkIGluIHRoaXMgY2hhaW4uIE5vdywgSSB0aG91Z2h0IGBNQUM4MDIxMWAgbWlnaHQgYmUgaW1wb3J0YW50IHRvbywgYnV0IGl0IHNlZW1zIHRoYXQgaXQmIzM5O3Mgbm90IHN0cmljdGx5ICpyZXF1aXJlZCogYnkgYE1XSUZJRVhgLCBhbmQgaXQmIzM5O3MgYENGRzgwMjExYCB0aGF0JiMzOTtzIHRoZSBrZXkgcmVxdWlyZW1lbnQgaGVyZS4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBDRkc4MDIxMWAganVzdCB0byBiZSBjb21wbGV0ZWx5IGNlcnRhaW4gdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0ZHODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZz0xND1jb25maWcgV0VYVF9QUklWXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzpjb25maWcgQ0ZHODAyMTFcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7Y2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnPTM4PWNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctNTEtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo1Mjpjb25maWcgQ0ZHODAyMTFfREVWRUxPUEVSX1dBUk5JTkdTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01My1cdGJvb2wgXCYjMzQ7ZW5hYmxlIGRldmVsb3BlciB3YXJuaW5nc1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTY3LVxubmV0L3dpcmVsZXNzL0tjb25maWc6Njg6Y29uZmlnIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xubmV0L3dpcmVsZXNzL0tjb25maWctNjktXHRib29sIFwmIzM0O2NmZzgwMjExIGNlcnRpZmljYXRpb24gb251c1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTg4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6ODk6Y29uZmlnIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05MC1cdGJvb2wgXCYjMzQ7cmVxdWlyZSByZWdkYiBzaWduYXR1cmVcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctOTgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo5OTpjb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDAtXHRib29sIFwmIzM0O2FsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTEwLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTExOmNvbmZpZyBDRkc4MDIxMV9FWFRSQV9SRUdEQl9LRVlESVJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMi1cdHN0cmluZyBcJiMzNDthZGRpdGlvbmFsIHJlZ2RiIGtleSBkaXJlY3RvcnlcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTIxLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTIyOmNvbmZpZyBDRkc4MDIxMV9SRUdfQ0VMTFVMQVJfSElOVFNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgcmVndWxhdG9yeSBzdXBwb3J0IGZvciBjZWxsdWxhciBiYXNlIHN0YXRpb24gaGludHNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzQtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzU6Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTM2LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTU4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTU5OmNvbmZpZyBDRkc4MDIxMV9ERUZBVUxUX1BTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjAtXHRib29sIFwmIzM0O2VuYWJsZSBwb3dlcnNhdmUgYnkgZGVmYXVsdFwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE2OTpjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzc6Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc4LVx0Ym9vbCBcJiMzNDtzdXBwb3J0IENSREFcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTg2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTg3OmNvbmZpZyBDRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O2NmZzgwMjExIHdpcmVsZXNzIGV4dGVuc2lvbnMgY29tcGF0aWJpbGl0eVwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5My1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5NDpjb25maWcgQ0ZHODAyMTFfS1VOSVRfVEVTVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTk1LVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIGNmZzgwMjExXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzMzEKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIFZ1bG5lcmFiaWxpdHkqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBgQ0ZHODAyMTFgIGlzIGluaGVyZW50bHkgZmluZSBzaW5jZSBpdHMgZGVwZW5kZW5jeSBvbiBgUkZLSUxMYCBpcyBhIGJpdCByZWR1bmRhbnQgLSB0aGUgYnVpbGQgc3lzdGVtIHdpbGwgcmVzb2x2ZSB0aGF0LiBUaGUgY3JpdGljYWwgY29uZmlndXJhdGlvbnMgaGVyZSBhcHBlYXIgdG8gYmUgY2VudGVyZWQgYXJvdW5kIHRoZSBNYXJ2ZWxsIFdpRmktRXggZHJpdmVyLCBzcGVjaWZpY2FsbHkgYE1XSUZJRVhgIGFuZCBgTVdJRklFWF9VU0JgLiBXaGlsZSBgVVNCYCBpcyB0eXBpY2FsbHkgZW5hYmxlZCBpbiB0aGUgc3l6a2FsbGVyIGNvbmZpZ3MsIGl0JiMzOTtzIHdvcnRoIGV4cGxpY2l0bHkgbGlzdGluZyBpdCBoZXJlIGZvciBjbGFyaXR5LiBUaGUgaW1wb3J0YW50IG9uZSBpcyBkZWZpbml0ZWx5IGBNV0lGSUVYX1VTQmAuCgpNeSBmb2N1cyBpcyB0aGUgY29yZSBpc3N1ZSwgYW5kIGl0JiMzOTtzIGxvb2tpbmcgbGlrZSB0aGlzIGNlbnRlcnMgYXJvdW5kIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgLiBCYXNlZCBvbiB0aGUgcGF0Y2gsIHRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgd2VyZSBtb2RpZmllZCB0byBpbmNsdWRlIGxlbmd0aCBjaGVja3MgZm9yIHZhcmlvdXMgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykuIFRoZSBnb2FsIGlzIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBvciB3cml0ZXMgd2l0aGluIHRoZXNlIHR3byBzcGVjaWZpYyBmdW5jdGlvbnMuIFRoZSBNYXJ2ZWxsIFdpRmktRXggZHJpdmVyIChgbXdpZmlleGApIGlzIHNwZWNpZmljYWxseSB0aGUgZHJpdmVyIHRoYXQgc3VwcG9ydHMgVVNCIGludGVyZmFjZXMgKGBNV0lGSUVYX1VTQmApLCBtYWtpbmcgaXQgcmVhZGlseSBmdXp6YWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2Ugc3l6a2FsbGVyLiBUaGUgdnVsbmVyYWJpbGl0eSYjMzk7cyBhdHRhY2sgdmVjdG9yIGlzIHRocm91Z2ggVVNCIFVSQiByZXNwb25zZXMgY29udGFpbmluZyBtYWxpY2lvdXMgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcyksIHdoaWNoIGFyZSBub3cgY2hlY2tlZC4KClRoZXJlZm9yZSwgdGhlIGNvbmZpZyBvcHRpb25zIEkgbmVlZCB0byBlbmFibGUgYXJlOiBgTVdJRklFWGAsIGBNV0lGSUVYX1VTQmAsIGBDRkc4MDIxMWAsIGFuZCBgVVNCYC4gQWxzbywgbGV0JiMzOTtzIHZlcmlmeSBpZiBgV0xBTmAgaXMgcmVxdWlyZWQgZm9yIGBNV0lGSUVYYCwgdGhhdCB1c3VhbGx5IGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAyMDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVdJRklFWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyOmNvbmZpZyBNV0lGSUVYXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MTI6Y29uZmlnIE1XSUZJRVhfU0RJT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjU6Y29uZmlnIE1XSUZJRVhfUENJRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjYtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzozNzpjb25maWcgTVdJRklFWF9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM4LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI0OTAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBwcm92aWRlZCB0ZXh0OgoKKipEaXZpbmcgaW50byB0aGUgTWFydmVsbCBXaXJlbGVzcyBLY29uZmlnKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBjb25maWd1cmVkIGZvciBNYXJ2ZWxsIHdpcmVsZXNzIGRldmljZXMuIFRoYXQgbWVhbnMgZ29pbmcgc3RyYWlnaHQgdG8gdGhlIHNvdXJjZTogYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgYWxsIHRoZSBjb21waWxhdGlvbiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBkZWZhdWx0IHNldHRpbmdzIGFyZSBsaWtlbHkgZGVmaW5lZCBmb3IgdGhlIE1hcnZlbGwgd2lyZWxlc3MgZHJpdmVycyB3aXRoaW4gdGhlIGtlcm5lbC4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHRoZSBNYXJ2ZWxsLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gaW50ZXJhY3RzIHdpdGggdGhlIGJyb2FkZXIgd2lyZWxlc3Mgc3Vic3lzdGVtLiBJJiMzOTttIGhvcGluZyB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBvciBwbGF0Zm9ybS1zcGVjaWZpYyBjb25zaWRlcmF0aW9ucyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSBpdHMgYmVoYXZpb3IuIEZyb20gdGhlcmUsIEkmIzM5O2xsIGJlIGluIGEgYmV0dGVyIHBvc2l0aW9uIHRvIGFuYWx5emUgdGhlIHJlbGV2YW50IHNvdXJjZSBjb2RlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDIwOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFdMQU5fVkVORE9SX01BUlZFTExcbiAgIDM6XHRcdGJvb2wgXCYjMzQ7TWFydmVsbCBkZXZpY2VzXCYjMzQ7XG4gICA0Olx0XHRkZWZhdWx0IHlcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgSWYgeW91IGhhdmUgYSB3aXJlbGVzcyBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cbiAgIDc6XHRcbiAgIDg6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gICA5Olx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXG4gIDEwOlx0XHQgIHF1ZXN0aW9ucyBhYm91dCB0aGVzZSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcbiAgMTE6XHRcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxuICAxMjpcdFxuICAxMzpcdGlmIFdMQU5fVkVORE9SX01BUlZFTExcbiAgMTQ6XHRcbiAgMTU6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhcy9LY29uZmlnXCYjMzQ7XG4gIDE2Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXNfdGYvS2NvbmZpZ1wmIzM0O1xuICAxNzpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1wmIzM0O1xuICAxODpcdFxuICAxOTpcdGNvbmZpZyBNV0w4S1xuICAyMDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCA4OFc4eHh4IFBDSS9QQ0llIFdpcmVsZXNzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMwMjgKCQkJCQkJCW91dHB1dDogMjI1CgkJCQkJCQl0aG91Z2h0czogMTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IG1lbnRhbCBydW5kb3duOgoKKipTZXR0aW5nIHVwIE1hcnZlbGwgV0xBTiBEcml2ZXJzKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuIE15IGN1cnJlbnQgb2JqZWN0aXZlIGlzIHRvIGNvbmZpZ3VyZSB0aGUgc3lzdGVtIGZvciBNYXJ2ZWxsIFdMQU4gc3VwcG9ydCwgYW5kIHRoZSBrZXkgaXMgdG8gZ2V0IHRoZSBuZWNlc3NhcnkgZGVwZW5kZW5jaWVzIHN0cmFpZ2h0LiBGaXJzdCwgSSByZW1lbWJlciBmcm9tIHdvcmtpbmcgd2l0aCB0aGUgS2NvbmZpZyBmaWxlcywgdGhhdCBgV0xBTl9WRU5ET1JfTUFSVkVMTGAgbmVlZHMgdG8gYmUgZGVmaW5lZC4gQWxzbywgaXQmIzM5O3MgY2xlYXIgYFdMQU5gIGlzIGEgcHJlcmVxdWlzaXRlIGZvciB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUsIHNvIHRoYXQgaGFzIHRvIGJlIGluIHRoZSBjb25maWd1cmF0aW9uLiBHb3QgaXQsIGxldCBtZSBhZGQgYFdMQU5fVkVORE9SX01BUlZFTExgIGFuZCBgV0xBTmAgdG8gdGhlIGFjdGl2ZSBjb25maWd1cmF0aW9uIGxpc3QuCgpNeSBjdXJyZW50IENvbmZpZyBsaXN0IGlzIGFzIGZvbGxvd3M6IGBXTEFOYCwgYFdMQU5fVkVORE9SX01BUlZFTExgLCBgQ0ZHODAyMTFgLCBgTVdJRklFWGAsIGBNV0lGSUVYX1VTQmAsIGFuZCBgVVNCYC4KCk5vdywgSSB3aWxsIHNldCB0aG9zZSBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMjA6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUFSVkVMTCYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNV0lGSUVYJiMzNDssCiAgICAmIzM0O01XSUZJRVhfVVNCJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUmIzM0OywKICAgICYjMzQ7bXdpZmlleF9zZXRfc3RhX2h0X2NhcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgZm9yIHZhcmlvdXMgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgaW4gYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGFuZCBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzL3dyaXRlcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSBwYXJ0IG9mIHRoZSBNYXJ2ZWxsIFdpRmktRXggZHJpdmVyIChgbXdpZmlleGApLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBpbnRlcmZhY2VzIChgTVdJRklFWF9VU0JgKSwgd2hpY2ggY2FuIGJlIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgc3l6a2FsbGVyJiMzOTtzIFVTQiBkdW1teV9oY2QgZW11bGF0aW9uLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIHZpYSBVU0IgVVJCIHJlc3BvbnNlcyBjb250YWluaW5nIG1hbGljaW91cyBJRXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUFSVkVMTCYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNV0lGSUVYJiMzNDssCiAgICAmIzM0O01XSUZJRVhfVVNCJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUmIzM0OywKICAgICYjMzQ7bXdpZmlleF9zZXRfc3RhX2h0X2NhcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgZm9yIHZhcmlvdXMgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgaW4gYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGFuZCBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzL3dyaXRlcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSBwYXJ0IG9mIHRoZSBNYXJ2ZWxsIFdpRmktRXggZHJpdmVyIChgbXdpZmlleGApLiBUaGUgZHJpdmVyIHN1cHBvcnRzIFVTQiBpbnRlcmZhY2VzIChgTVdJRklFWF9VU0JgKSwgd2hpY2ggY2FuIGJlIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgc3l6a2FsbGVyJiMzOTtzIFVTQiBkdW1teV9oY2QgZW11bGF0aW9uLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIHZpYSBVU0IgVVJCIHJlc3BvbnNlcyBjb250YWluaW5nIG1hbGljaW91cyBJRXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDoxNzozOC41ODczMTI3MTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTQxODM3MjM1NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTUFSVkVMTFwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llXCIsXG4gICAgXCJtd2lmaWV4X3NldF9zdGFfaHRfY2FwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIGZvciB2YXJpb3VzIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIGluIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcGFydCBvZiB0aGUgTWFydmVsbCBXaUZpLUV4IGRyaXZlciAoYG13aWZpZXhgKS4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyAoYE1XSUZJRVhfVVNCYCksIHdoaWNoIGNhbiBiZSBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHN5emthbGxlcidzIFVTQiBkdW1teV9oY2QgZW11bGF0aW9uLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIHZpYSBVU0IgVVJCIHJlc3BvbnNlcyBjb250YWluaW5nIG1hbGljaW91cyBJRXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjE3OjM4LjU4NzMyMDczOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI3NzkwOTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNmJiNTYxMjc2NjRjZWNhOTI3YzYyYTFjZGMzM2Q4NmYzMTBlNGQxMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAyIDIwOjE3OjM3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXFxuaW5kZXggOTdjMGVjM2I4MjJlNy4uMjIwMzFmYWJhMDU3ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY1xcbkBAIC0xMzg0LDYgKzEzODQsOCBAQCBpbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRic3NfZW50cnktXFx1MDAzZWJlYWNvbl9idWYpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0Y2FzZSBXTEFOX0VJRF9IVF9DQVBBQklMSVRZOlxcbitcXHRcXHRcXHRpZiAoZWxlbWVudF9sZW4gXFx1MDAzYyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9odF9jYXApKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2ViY25faHRfY2FwID0gKHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwICopXFxuIFxcdFxcdFxcdFxcdFxcdChjdXJyZW50X3B0ciArXFxuIFxcdFxcdFxcdFxcdFxcdHNpemVvZihzdHJ1Y3QgaWVlZV90eXBlc19oZWFkZXIpKTtcXG5AQCAtMTM5Miw2ICsxMzk0LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0XFx0XFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2ViZWFjb25fYnVmKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgV0xBTl9FSURfSFRfT1BFUkFUSU9OOlxcbitcXHRcXHRcXHRpZiAoZWxlbWVudF9sZW4gXFx1MDAzYyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9odF9vcGVyYXRpb24pKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2ViY25faHRfb3BlciA9XFxuIFxcdFxcdFxcdFxcdChzdHJ1Y3QgaWVlZTgwMjExX2h0X29wZXJhdGlvbiAqKShjdXJyZW50X3B0ciArXFxuIFxcdFxcdFxcdFxcdFxcdHNpemVvZihzdHJ1Y3QgaWVlZV90eXBlc19oZWFkZXIpKTtcXG5AQCAtMTQwMCw2ICsxNDA0LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0XFx0XFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2ViZWFjb25fYnVmKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgV0xBTl9FSURfVkhUX0NBUEFCSUxJVFk6XFxuK1xcdFxcdFxcdGlmIChlbGVtZW50X2xlbiBcXHUwMDNjIHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXApKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2VkaXNhYmxlXzExYWMgPSBmYWxzZTtcXG4gXFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2ViY25fdmh0X2NhcCA9XFxuIFxcdFxcdFxcdFxcdCh2b2lkICopKGN1cnJlbnRfcHRyICtcXG5AQCAtMTQwOSw2ICsxNDE1LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgYnNzX2VudHJ5LVxcdTAwM2ViZWFjb25fYnVmKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgV0xBTl9FSURfVkhUX09QRVJBVElPTjpcXG4rXFx0XFx0XFx0aWYgKGVsZW1lbnRfbGVuIFxcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfdmh0X29wZXJhdGlvbikpXFxuK1xcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRcXHRcXHRic3NfZW50cnktXFx1MDAzZWJjbl92aHRfb3BlciA9XFxuIFxcdFxcdFxcdFxcdCh2b2lkICopKGN1cnJlbnRfcHRyICtcXG4gXFx0XFx0XFx0XFx0XFx0IHNpemVvZihzdHJ1Y3QgaWVlZV90eXBlc19oZWFkZXIpKTtcXG5AQCAtMTQxNyw2ICsxNDI1LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgYnNzX2VudHJ5LVxcdTAwM2ViZWFjb25fYnVmKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgV0xBTl9FSURfQlNTX0NPRVhfMjA0MDpcXG4rXFx0XFx0XFx0aWYgKCFlbGVtZW50X2xlbilcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdFxcdFxcdGJzc19lbnRyeS1cXHUwMDNlYmNuX2Jzc19jb18yMDQwID0gY3VycmVudF9wdHI7XFxuIFxcdFxcdFxcdGJzc19lbnRyeS1cXHUwMDNlYnNzX2NvXzIwNDBfb2Zmc2V0ID1cXG4gXFx0XFx0XFx0XFx0KHUxNikgKGN1cnJlbnRfcHRyIC0gYnNzX2VudHJ5LVxcdTAwM2ViZWFjb25fYnVmKTtcXG5AQCAtMTQyNyw2ICsxNDM3LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0XFx0XFx0XFx0KHUxNikgKGN1cnJlbnRfcHRyIC0gYnNzX2VudHJ5LVxcdTAwM2ViZWFjb25fYnVmKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgV0xBTl9FSURfT1BNT0RFX05PVElGOlxcbitcXHRcXHRcXHRpZiAoIWVsZW1lbnRfbGVuKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2VvcGVyX21vZGUgPSAodm9pZCAqKWN1cnJlbnRfcHRyO1xcbiBcXHRcXHRcXHRic3NfZW50cnktXFx1MDAzZW9wZXJfbW9kZV9vZmZzZXQgPVxcbiBcXHRcXHRcXHRcXHRcXHQodTE2KSgodTggKilic3NfZW50cnktXFx1MDAzZW9wZXJfbW9kZSAtXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jXFxuaW5kZXggN2QzNjMxZDIxMjIzNi4uODQ0MjIzYzA0ZTJlZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuY1xcbkBAIC03MjEsNyArNzIxLDcgQEAgbXdpZmlleF9zZXRfc3RhX2h0X2NhcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBjb25zdCB1OCAqaWVzLFxcbiBcXG4gXFx0aHRfY2FwX2llID0gKHZvaWQgKiljZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX0hUX0NBUEFCSUxJVFksIGllcyxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICBpZXNfbGVuKTtcXG4tXFx0aWYgKGh0X2NhcF9pZSkge1xcbitcXHRpZiAoaHRfY2FwX2llIFxcdTAwMjZcXHUwMDI2IGh0X2NhcF9pZS1cXHUwMDNlbGVuIFxcdTAwM2U9IHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCkpIHtcXG4gXFx0XFx0aHRfY2FwID0gKHZvaWQgKikoaHRfY2FwX2llICsgMSk7XFxuIFxcdFxcdG5vZGUtXFx1MDAzZWlzXzExbl9lbmFibGVkID0gMTtcXG4gXFx0XFx0bm9kZS1cXHUwMDNlbWF4X2Ftc2R1ID0gbGUxNl90b19jcHUoaHRfY2FwLVxcdTAwM2VjYXBfaW5mbykgXFx1MDAyNlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDoxNzozOS4zMTYxNzIwMjVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMTM0NTQ4NDg2NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTUFSVkVMTFwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llXCIsXG4gICAgXCJtd2lmaWV4X3NldF9zdGFfaHRfY2FwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIGZvciB2YXJpb3VzIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIGluIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcGFydCBvZiB0aGUgTWFydmVsbCBXaUZpLUV4IGRyaXZlciAoYG13aWZpZXhgKS4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyAoYE1XSUZJRVhfVVNCYCksIHdoaWNoIGNhbiBiZSBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHN5emthbGxlcidzIFVTQiBkdW1teV9oY2QgZW11bGF0aW9uLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIHZpYSBVU0IgVVJCIHJlc3BvbnNlcyBjb250YWluaW5nIG1hbGljaW91cyBJRXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDZiYjU2MTI3NjY0Y2VjYTkyN2M2MmExY2RjMzNkODZmMzEwZTRkMTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDIwOjE3OjM3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNcbmluZGV4IDk3YzBlYzNiODIyZTcuLjIyMDMxZmFiYTA1N2YgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXG5AQCAtMTM4NCw2ICsxMzg0LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0XHRcdFx0XHRcdGJzc19lbnRyeS1cdTAwM2ViZWFjb25fYnVmKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBXTEFOX0VJRF9IVF9DQVBBQklMSVRZOlxuK1x0XHRcdGlmIChlbGVtZW50X2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwKSlcbitcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2ViY25faHRfY2FwID0gKHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwICopXG4gXHRcdFx0XHRcdChjdXJyZW50X3B0ciArXG4gXHRcdFx0XHRcdHNpemVvZihzdHJ1Y3QgaWVlZV90eXBlc19oZWFkZXIpKTtcbkBAIC0xMzkyLDYgKzEzOTQsOCBAQCBpbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuIFx0XHRcdFx0XHRic3NfZW50cnktXHUwMDNlYmVhY29uX2J1Zik7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgV0xBTl9FSURfSFRfT1BFUkFUSU9OOlxuK1x0XHRcdGlmIChlbGVtZW50X2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfaHRfb3BlcmF0aW9uKSlcbitcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2ViY25faHRfb3BlciA9XG4gXHRcdFx0XHQoc3RydWN0IGllZWU4MDIxMV9odF9vcGVyYXRpb24gKikoY3VycmVudF9wdHIgK1xuIFx0XHRcdFx0XHRzaXplb2Yoc3RydWN0IGllZWVfdHlwZXNfaGVhZGVyKSk7XG5AQCAtMTQwMCw2ICsxNDA0LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0XHRcdFx0YnNzX2VudHJ5LVx1MDAzZWJlYWNvbl9idWYpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIFdMQU5fRUlEX1ZIVF9DQVBBQklMSVRZOlxuK1x0XHRcdGlmIChlbGVtZW50X2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCkpXG4rXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0XHRic3NfZW50cnktXHUwMDNlZGlzYWJsZV8xMWFjID0gZmFsc2U7XG4gXHRcdFx0YnNzX2VudHJ5LVx1MDAzZWJjbl92aHRfY2FwID1cbiBcdFx0XHRcdCh2b2lkICopKGN1cnJlbnRfcHRyICtcbkBAIC0xNDA5LDYgKzE0MTUsOCBAQCBpbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuIFx0XHRcdFx0XHQgICAgICBic3NfZW50cnktXHUwMDNlYmVhY29uX2J1Zik7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgV0xBTl9FSURfVkhUX09QRVJBVElPTjpcbitcdFx0XHRpZiAoZWxlbWVudF9sZW4gXHUwMDNjIHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX3ZodF9vcGVyYXRpb24pKVxuK1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdFx0YnNzX2VudHJ5LVx1MDAzZWJjbl92aHRfb3BlciA9XG4gXHRcdFx0XHQodm9pZCAqKShjdXJyZW50X3B0ciArXG4gXHRcdFx0XHRcdCBzaXplb2Yoc3RydWN0IGllZWVfdHlwZXNfaGVhZGVyKSk7XG5AQCAtMTQxNyw2ICsxNDI1LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0XHRcdFx0ICAgICAgYnNzX2VudHJ5LVx1MDAzZWJlYWNvbl9idWYpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIFdMQU5fRUlEX0JTU19DT0VYXzIwNDA6XG4rXHRcdFx0aWYgKCFlbGVtZW50X2xlbilcbitcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2ViY25fYnNzX2NvXzIwNDAgPSBjdXJyZW50X3B0cjtcbiBcdFx0XHRic3NfZW50cnktXHUwMDNlYnNzX2NvXzIwNDBfb2Zmc2V0ID1cbiBcdFx0XHRcdCh1MTYpIChjdXJyZW50X3B0ciAtIGJzc19lbnRyeS1cdTAwM2ViZWFjb25fYnVmKTtcbkBAIC0xNDI3LDYgKzE0MzcsOCBAQCBpbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuIFx0XHRcdFx0KHUxNikgKGN1cnJlbnRfcHRyIC0gYnNzX2VudHJ5LVx1MDAzZWJlYWNvbl9idWYpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIFdMQU5fRUlEX09QTU9ERV9OT1RJRjpcbitcdFx0XHRpZiAoIWVsZW1lbnRfbGVuKVxuK1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdFx0YnNzX2VudHJ5LVx1MDAzZW9wZXJfbW9kZSA9ICh2b2lkICopY3VycmVudF9wdHI7XG4gXHRcdFx0YnNzX2VudHJ5LVx1MDAzZW9wZXJfbW9kZV9vZmZzZXQgPVxuIFx0XHRcdFx0XHQodTE2KSgodTggKilic3NfZW50cnktXHUwMDNlb3Blcl9tb2RlIC1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuY1xuaW5kZXggN2QzNjMxZDIxMjIzNi4uODQ0MjIzYzA0ZTJlZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmNcbkBAIC03MjEsNyArNzIxLDcgQEAgbXdpZmlleF9zZXRfc3RhX2h0X2NhcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBjb25zdCB1OCAqaWVzLFxuIFxuIFx0aHRfY2FwX2llID0gKHZvaWQgKiljZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX0hUX0NBUEFCSUxJVFksIGllcyxcbiBcdFx0XHRcdFx0ICAgICBpZXNfbGVuKTtcbi1cdGlmIChodF9jYXBfaWUpIHtcbitcdGlmIChodF9jYXBfaWUgXHUwMDI2XHUwMDI2IGh0X2NhcF9pZS1cdTAwM2VsZW4gXHUwMDNlPSBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9odF9jYXApKSB7XG4gXHRcdGh0X2NhcCA9ICh2b2lkICopKGh0X2NhcF9pZSArIDEpO1xuIFx0XHRub2RlLVx1MDAzZWlzXzExbl9lbmFibGVkID0gMTtcbiBcdFx0bm9kZS1cdTAwM2VtYXhfYW1zZHUgPSBsZTE2X3RvX2NwdShodF9jYXAtXHUwMDNlY2FwX2luZm8pIFx1MDAyNlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjA6MTc6MzkuMzE2MTgzMjU0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM1OTA4Nzc5NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgV2lGaSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBtd2lmaWV4YCDigJMgc3BlY2lmaWNhbGx5LCBgc2Nhbi5jYCBhbmQgYHV0aWwuY2AuIFNlZW1zIGxpa2UgdGhleSdyZSBhZGRpbmcgc29tZSBsZW5ndGggY2hlY2tzIHRvIHRoZSBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBoYW5kbGluZyB3aXRoaW4gYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGFuZCBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAuIFNvdW5kcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGFpbWVkIGF0IHByZXZlbnRpbmcgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZHMgb3Igd3JpdGVzLCB3aGljaCBpcyBhbHdheXMgZ29vZCB0byBzZWUuIFRoZSBkcml2ZXIgaW4gcXVlc3Rpb24gaGVyZSBpcyB0aGUgTWFydmVsbCBXaUZpIGRyaXZlciwgYG13aWZpZXhgLlxuXG5NeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IGNhbiB0aGlzIGJlIHRlc3RlZCBpbiBhIHZpcnR1YWxpemVkIHNldHVwPyBXaUZpIGRyaXZlcnMgYXJlIG9mdGVuIGEgcGFpbiBiZWNhdXNlIHRoZXkgdXN1YWxseSBkZXBlbmQgb24gc3BlY2lmaWMgaGFyZHdhcmUsIGxpa2UgUENJZSwgU0RJTywgb3IgVVNCIGludGVyZmFjZXMuIEJ1dCB3YWl0IGEgbWludXRlLCBgbXdpZmlleGAgKmRvZXMqIHN1cHBvcnQgUENJZSwgU0RJTywgKmFuZCogVVNCLiBUaGF0IG9wZW5zIHVwIHNvbWUgcG9zc2liaWxpdGllcy5cblxuTGV0J3MgZGlnIGRlZXBlci4gSWRlYWxseSwgSSB3YW50IHRvIHNlZSBpZiB0aGVyZSdzIGEgVVNCIGRyaXZlciBjb21wb25lbnQgd2l0aGluIGBtd2lmaWV4YCB0aGF0IGNvdWxkIGJlIGZ1enplZC4gSWYgdGhlcmUncyBhIFVTQiBpbXBsZW1lbnRhdGlvbiwgd2UgbWlnaHQgYmUgYWJsZSB0byB1c2UgYSBVU0IgZ2FkZ2V0IHNldHVwIG9yIGEgZHVtbXkgSENEIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBTeXprYWxsZXIncyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMgKHVzaW5nIGBkdW1teV9oY2RgKSB3b3VsZCBiZSBwZXJmZWN0IGZvciB0aGlzIGtpbmQgb2YgdGVzdGluZy4gU28sIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZywgcHJvYmFibHkgdW5kZXIgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnYCwgdG8gc2VlIHdoYXQncyBlbmFibGVkIGFuZCB3aGF0J3Mgbm90LiBUaGF0IHNob3VsZCB0ZWxsIG1lIGlmIHdlIGhhdmUgYSB2aWFibGUgZnV6emluZyB0YXJnZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNjksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDoxODoxMi45MDcwOTE5NjJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYxOTgyMDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNV0lGSUVYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mjpjb25maWcgTVdJRklFWFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjU6Y29uZmlnIE1XSUZJRVhfUENJRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI2LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzc6Y29uZmlnIE1XSUZJRVhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDoxODoxMy40NjkwODE1MDhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjE2OTYzNTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gYXMgaWYgdGhleSB3ZXJlIG15IG93bjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQgYW5kIERlcGVuZGVuY3kgQ2hlY2sqKlxuXG5SaWdodCwgZXhjZWxsZW50LCB0aGUgYE1XSUZJRVhfVVNCYCBtb2R1bGUgaXMgcHJlc2VudCBhbmQgYWNjb3VudGVkIGZvci4gR29vZC4gTm93LCBiZWZvcmUgSSBnZXQgdG9vIGZhciBkb3duIHRoZSByb2FkLCBsZXQncyBqdXN0IHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIHVzdWFsIG1lbnRhbCBjaGVja2xpc3QuIExldCBtZSBzZWUuLi4gSSdsbCBuZWVkIHRvIGltbWVkaWF0ZWx5IHN0YXJ0IHRoaW5raW5nIGFib3V0IGl0cyBkZXBlbmRlbmNpZXMuICpXaGljaCogb3RoZXIga2VybmVsIG1vZHVsZXMgb3Igc3lzdGVtIGxpYnJhcmllcyBpcyBgTVdJRklFWF9VU0JgIGdvaW5nIHRvIHJlbHkgb24/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgdmVyc2lvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBbnkgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoIG90aGVyIGRyaXZlcnMgdGhhdCBJIGtub3cgZnJvbSBleHBlcmllbmNlIGNhbiBiZSBwcm9ibGVtYXRpYz8gR290dGEgbWFrZSBzdXJlIEknbSBub3Qgb3Zlcmxvb2tpbmcgc29tZSBvYnNjdXJlIHBpZWNlIG9mIHRoZSBwdXp6bGUgdGhhdCdsbCBiaXRlIG1lIGxhdGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjMzLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjA6MTg6MTguMDg2MDQ4Njg3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNDYyOTUwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVdJRklFWF9VU0JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc9MjU9Y29uZmlnIE1XSUZJRVhfUENJRVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzc6Y29uZmlnIE1XSUZJRVhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDoxODoxOC4zMTA2ODU2MjNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTI4NzQ4MTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgTWFydmVsbCBXaS1GaSBEcml2ZXIgS2NvbmZpZyoqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIE1hcnZlbGwgd2lyZWxlc3MgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIEknbSBnb2luZyB0byBuYXZpZ2F0ZSBkaXJlY3RseSB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWdgIGFyb3VuZCBsaW5lIDM3LiBUaGlzIGFyZWEgaXMgdHlwaWNhbGx5IHdoZXJlIHRoZSBjb3JlIG1vZHVsZSBzZWxlY3Rpb24gb3B0aW9ucyBvciBmZWF0dXJlIGRlZmluaXRpb25zIHJlc2lkZS4gSSBleHBlY3QgdG8gZmluZCB0aGUgZnVuZGFtZW50YWwga25vYnMgYW5kIGxldmVycyB0aGF0IGNvbnRyb2wgdGhlIGNvbXBpbGF0aW9uIGFuZCBpbmNsdXNpb24gb2YgdGhlIGBtd2lmaWV4YCBkcml2ZXIgd2l0aGluIGEgTGludXgga2VybmVsIGJ1aWxkLiBJJ20gdGhpbmtpbmcgSSdsbCBiZSBhYmxlIHRvIHF1aWNrbHkgemVybyBpbiBvbiBvcHRpb25zIHJlbGF0ZWQgdG8gaGFyZHdhcmUgc3VwcG9ydCwgY3JpdGljYWwgZmVhdHVyZSBlbmFibGVzIG9yIGRpc2FibGVzIChsaWtlIHBvd2VyIG1hbmFnZW1lbnQgb3Igc2VjdXJpdHkgcHJvdG9jb2xzKSwgb3IgcG9zc2libHkgYW55IHBsYXRmb3JtLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24uIFNlZWluZyB0aGUgc3RydWN0dXJlIG9mIHRoZSBLY29uZmlnIGZpbGUgd2lsbCBpbW1lZGlhdGVseSBnaXZlIG1lIGNvbnRleHQsIHNvIEkgY2FuIHN0YXJ0IHRvIHJlYXNvbiBhYm91dCBkZXBlbmRlbmNpZXMsIHJlbGF0aW9uc2hpcHMsIGFuZCBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGhpbiB0aGUgZHJpdmVyJ3MgY29uZmlndXJhdGlvbi4gVGhpcyBpbml0aWFsIGV4YW1pbmF0aW9uIHdpbGwgaGVscCBpbmZvcm0gYW55IGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBJIG5lZWQgdG8gZG8uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MDIsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDoxODoyNS4yMzk0NDEyMDJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjU2MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzA6XFx0XFx0aGVscFxcbiAgMzE6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgMzI6XFx0XFx0ICA4NzY2Lzg4OTcvODk5NyBjaGlwc2V0cyB3aXRoIFBDSWUgaW50ZXJmYWNlLlxcbiAgMzM6XFx0XFxuICAzNDpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAzNTpcXHRcXHQgIG13aWZpZXhfcGNpZS5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0Y29uZmlnIE1XSUZJRVhfVVNCXFxuICAzODpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcXFwiXFxuICAzOTpcXHRcXHRkZXBlbmRzIG9uIE1XSUZJRVggXFx1MDAyNlxcdTAwMjYgVVNCXFxuICA0MDpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICA0MTpcXHRcXHRoZWxwXFxuICA0MjpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXFxuICA0MzpcXHRcXHQgIDg3OTcvODk5NyBjaGlwc2V0IHdpdGggVVNCIGludGVyZmFjZS5cXG4gIDQ0OlxcdFxcbiAgNDU6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbiAgNDY6XFx0XFx0ICBtd2lmaWV4X3VzYi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjA6MTg6MjUuMjM5NTY5NzYyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE5Nzc1NzIxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgZGVwZW5kZW5jaWVzLCBzdW1tYXJpemVkIGFzIGEgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRlcGVuZGVuY3kgRGVlcCBEaXZlKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGBNV0lGSUVYX1VTQmAgaXMgYnVpbHQgb24gdG9wIG9mIGBNV0lGSUVYYCBhbmQgYFVTQmAg4oCTIG1ha2VzIHNlbnNlLCB0aGUgXCJVU0JcIiBwYXJ0IGlzIGEgZGVhZCBnaXZlYXdheSwgYnV0IEkgc3RpbGwgbGlrZSB0byBiZSB0aG9yb3VnaC4gTm93LCBgTVdJRklFWGAgaXRzZWxmIHJlbGllcyBvbiBgTUFDODAyMTFgIGFuZCBgQ0ZHODAyMTFgLiBUaW1lIHRvIGRvdWJsZS1jaGVjayB0aG9zZSBgTVdJRklFWGAgZGVwZW5kZW5jaWVzIGluIGRldGFpbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc3RhY2sgdG8gZW5zdXJlIGEgc3RhYmxlIGFuZCBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb247IHRoaXMgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxNDksIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjE4OjI4LjQzNzMzMDMyOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTcwMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBNV0lGSUVYXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlclxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTFcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE1hcnZlbGxcXG4gICA3OlxcdFxcdCAgODAyLjExbi9hYyBjaGlwc2V0cy5cXG4gICA4OlxcdFxcbiAgIDk6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbiAgMTA6XFx0XFx0ICBtd2lmaWV4LlxcbiAgMTE6XFx0XFxuICAxMjpcXHRjb25maWcgTVdJRklFWF9TRElPXFxuICAxMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgU0Q4Nzg2L1NEODc4Ny9TRDg3OTcvU0Q4ODg3L1NEODg5Ny9TRDg5NzcvU0Q4OTc4L1NEODk4Ny9TRDg5OTdcXFwiXFxuICAxNDpcXHRcXHRkZXBlbmRzIG9uIE1XSUZJRVggXFx1MDAyNlxcdTAwMjYgTU1DXFxuICAxNTpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICAxNjpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE1hcnZlbGxcXG4gIDE5OlxcdFxcdCAgODc4Ni84Nzg3Lzg3OTcvODg4Ny84ODk3Lzg5NzcvODk3OC84OTg3Lzg5OTcgY2hpcHNldHMgd2l0aFxcbiAgMjA6XFx0XFx0ICBTRElPIGludGVyZmFjZS4gU0Q4OTc4IGlzIGFsc28ga25vd24gYXMgTlhQIElXNDE2LlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDoxODoyOC40Mzc0NTEwMzhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk4ODAyNzYzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1XSUZJRVggRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgTVdJRklFWGAgZHJpdmVyIGFuZCBpbW1lZGlhdGVseSBzZWUgaXRzIGRlcGVuZGVuY2Ugb24gYENGRzgwMjExYC4gVGhhdCdzIGEga2V5IHN0YXJ0aW5nIHBvaW50LiBUaGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgLCBhbmQgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgd2hldGhlciB0aGVzZSBmdW5jdGlvbnMgYXJlIGV2ZW4gcmVsZXZhbnQgd2hlbiBjb25zaWRlcmluZyBVU0Igb3BlcmF0aW9uLiBBcmUgdGhlc2UgcGF0aHMgZXZlbiB1c2VkIHdoZW4gdGhlIGRldmljZSBpcyBjb25uZWN0ZWQgdmlhIFVTQj8gSSBuZWVkIHRvIGtub3cgaWYgdGhlc2UgYXJlIGV2ZW4gY2FsbGVkIGZyb20gVVNCLCBvciBpZiB0aGV5IGFyZSBqdXN0IHVzZWQgZm9yIHRoZSBQQ0kgaW50ZXJmYWNlLlxuXG5MZXQncyBzdGFydCBieSBkaWdnaW5nIGludG8gd2hlcmUgYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGlzIGNhbGxlZC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgY29kZSBmbG93IGFuZCBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIHBvc3NpYmxlIGNvZGUgcGF0aHMgaGVyZSByZWxldmFudCB0byBVU0IgdXNhZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3NzMsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjE4OjM1LjQyNTQ4MTg4M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQwMzE3ODA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTE1Mzg9aW50IG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTU0MC1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNTQxOmludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNTQyLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZW50cnkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xMTEyPW13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2dldF90bHZfcHRycyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xMTgxLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTE4MjppbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTE4My1cXHRcXHRcXHRcXHQgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2VudHJ5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTE0MT1pbnQgbXdpZmlleF9maWxsX25ld19ic3NfZGVzYyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTE5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6MTkyOlxcdHJldHVybiBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHByaXYtXFx1MDAzZWFkYXB0ZXIsIGJzc19kZXNjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMTkzLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjA6MTg6MzUuNjY1ODA2OTg4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1NjYyNDg4MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipUcmFjaW5nIHRoZSBCU1MgRGVzY3JpcHRpb24gUG9wdWxhdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSBkaWdnaW5nIGludG8gaG93IHRoZXNlIEJTUyBkZXNjcmlwdG9ycyBhcmUgYmVpbmcgcG9wdWxhdGVkLiBUaGUgY29kZSBzbmlwcGV0IG1lbnRpb25zIGBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBjaGFpbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbnRleHQuIExldCdzIHNlZS4uLndoZXJlICppcyogYG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2NgIGJlaW5nIGNhbGxlZCBmcm9tPyBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgZnVuY3Rpb24gdG8gZ2V0IGEgc2Vuc2Ugb2YgaG93IHRoZSBCU1MgZGVzY3JpcHRpb24gaW5mb3JtYXRpb24gaXMgZmxvd2luZy4gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIHRyaWdnZXIsIHRoZSBpbnB1dCBjb250ZXh0LCB0aGUgcG90ZW50aWFsIGVycm9ycywgdGhlIGludGVuZGVkIHVzZS4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzdGFjayB3aWxsIHByb3ZpZGUgYSBtdWNoIG1vcmUgY29tcGxldGUgcGljdHVyZSB0aGFuIHNpbXBseSBpbnNwZWN0aW5nIHRoaXMgb25lIGZ1bmN0aW9uIGluIGlzb2xhdGlvbi4gVGhlIGdvYWwgaXMgdG8gZnVsbHkgdW5kZXJzdGFuZCBpdHMgZnVuY3Rpb24gd2l0aGluIHRoZSBncmVhdGVyIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1ODAsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDoxODo0My4yMzIwNTkyMDhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjkzNjk0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xNTM2PWludCBtd2lmaWV4X2dldF9ic3NfaW5mbyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICosXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNTM3LVxcdFxcdFxcdCBzdHJ1Y3QgbXdpZmlleF9ic3NfaW5mbyAqKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjE1Mzg6aW50IG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE1MzktXFx0XFx0XFx0ICAgICAgc3RydWN0IGNmZzgwMjExX2JzcyAqYnNzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNjU1PXN0YXRpYyBpbnQgbXdpZmlleF9zYXZlX2hpZGRlbl9zc2lkX2NoYW5uZWxzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2NjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNjY3OlxcdHJldCA9IG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2MocHJpdiwgYnNzLCBic3NfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNjY4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2OTEtXFx0LyogYmVhY29uX2llIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGluIGZ1bmN0aW9uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNjkyOlxcdCAqIG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2MoKS4gRnJlZSBpdCBub3cuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNjkzLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNjk5PXN0YXRpYyBpbnQgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE3MDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNzEwOlxcdHJldCA9IG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2MocHJpdiwgYnNzLCBic3NfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzExLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE3MzAtXFx0LyogYmVhY29uX2llIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGluIGZ1bmN0aW9uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNzMxOlxcdCAqIG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2MoKS4gRnJlZSBpdCBub3cuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzMyLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTg4PWludCBtd2lmaWV4X3JlcXVlc3Rfc2V0X211bHRpY2FzdF9saXN0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMTQwLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzoxNDE6aW50IG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMTQyLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9ic3MgKmJzcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0zMzI9aW50IG13aWZpZXhfYnNzX3N0YXJ0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHN0cnVjdCBjZmc4MDIxMV9ic3MgKmJzcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0zNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jOjM1MTpcXHRcXHRyZXQgPSBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjKHByaXYsIGJzcywgYnNzX2Rlc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0zNTItXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy00NDYtXFx0LyogYmVhY29uX2llIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGluIGZ1bmN0aW9uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jOjQ0NzpcXHQgKiBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjKCkuIEZyZWUgaXQgbm93LlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy00NDgtXFx0ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjE4OjQzLjQyNTAwMTQ2NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Mjg0OTU2MDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIGBtd2lmaWV4YCoqXG5cbk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2NgIGdldHMgY2FsbGVkIGluIGEgZmV3IGtleSBwbGFjZXM6IGBtd2lmaWV4X3NhdmVfaGlkZGVuX3NzaWRfY2hhbm5lbHNgLCBgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zYCwgYW5kIGBtd2lmaWV4X2Jzc19zdGFydGAuIEFsbCBvZiB0aGVzZSBhcmUgY2xlYXJseSBpbnZvbHZlZCBpbiBzY2FubmluZyBmb3IgYW5kIGNvbm5lY3RpbmcgdG8gQmFzaWMgU2VydmljZSBTZXRzLCB3aGljaCBtYWtlcyBzZW5zZSBzaW5jZSBgbXdpZmlleGAgaXMgYSBXaUZpIGRyaXZlci4gTXkgaW5pdGlhbCBpbnN0aW5jdCB3YXMgdG8gcmVhY2ggZm9yIGBtYWM4MDIxMV9od3NpbWAsIGJ1dCB3YWl0Li4uIGBtd2lmaWV4YCBpcyBhICpmdWxsbWFjKiBkcml2ZXIsIG5vdCBhIG1hYzgwMjExIGRyaXZlci4gSSBuZWVkIHRvIGJlIHN1cmUgYWJvdXQgdGhpcywgc28gbGV0J3MgZG91YmxlLWNoZWNrIHRoZSBLY29uZmlnLiBZZXAsIGNvbmZpcm1lZDsgaXQgZGVwZW5kcyBvbiBgQ0ZHODAyMTFgLCB3aGljaCBtZWFucyBpdCdzIGZ1bGxtYWMuXG5cblNvLCBjYW4gd2UgYWN0dWFsbHkgZnV6eiBhIGZ1bGxtYWMgZHJpdmVyPyBUaGF0J3MgdGhlIHF1ZXN0aW9uLiBBaGEhIElmIGl0IHVzZXMgYSBVU0IgaW50ZXJmYWNlLCB0aGVuIHdlIG1pZ2h0IGhhdmUgYSB2aWFibGUgcGF0aCB3aXRoIHN5emthbGxlci4gU3l6a2FsbGVyIGlzIGdyZWF0IHdpdGggZW11bGF0aW5nIFVTQiBkZXZpY2VzIHVzaW5nIHRoZSBgZHVtbXlfaGNkYCBpbnRlcmZhY2U7IGl0IGNhbiBzZW5kIHJlc3BvbnNlcyB0byBVUkJzISBUaGlzIGlzIGxvb2tpbmcgcHJvbWlzaW5nLiBMZXQncyBkaWcgaW4gYW5kIGNoZWNrIG91dCBgbXdpZmlleF91c2JgLiBPa2F5LCB5ZXMsIGBtd2lmaWV4X3VzYmAgZXhpc3RzLCBpdCBsb29rcyBsaWtlIGl0IGNhbiBiZSBmdXp6ZWQgdmlhIHN5emthbGxlciEgTm93LCBsZXQncyBhbHNvIGhhdmUgYSBxdWljayBsb29rIGF0IGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYCwgYmVjYXVzZSB0aGF0IGlzIHByb2JhYmx5IGludGVyZXN0aW5nIHRvby5cblxuXG4iLCJJbnB1dFRva2VucyI6NzkzNCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDoxODo0OS43MDk5NjEyNDRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMzgyNTk0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3NldF9zdGFfaHRfY2FwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xNTkwPXZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjE1OTE6bXdpZmlleF9zZXRfc3RhX2h0X2NhcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBjb25zdCB1OCAqaWVzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTU5Mi1cXHRcXHQgICAgICAgaW50IGllc19sZW4sIHN0cnVjdCBtd2lmaWV4X3N0YV9ub2RlICpub2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYz05ND1pbnQgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jLTEzOC1cXHRcXHRcXHRcXHQgKiBldmVudCB3YXMgY29waWVkIGludG87IG90aGVyd2lzZSB0aGUgSUUgd2Fsa1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYzoxMzk6XFx0XFx0XFx0XFx0ICogaW4gbXdpZmlleF9zZXRfc3RhX2h0X2NhcCgpIHJlYWRzIHBhc3RcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmMtMTQwLVxcdFxcdFxcdFxcdCAqIGV2ZW50X2JvZHkgYW5kIG91dCBvZiB0aGUgYWRhcHRlciBzbGFiIG9iamVjdC5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy0xNjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jOjE2OTpcXHRcXHRtd2lmaWV4X3NldF9zdGFfaHRfY2FwKHByaXYsIHNpbmZvLVxcdTAwM2Vhc3NvY19yZXFfaWVzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy0xNzAtXFx0XFx0XFx0XFx0ICAgICAgIHNpbmZvLVxcdTAwM2Vhc3NvY19yZXFfaWVzX2xlbiwgbm9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jPTcxMj12b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYzo3MTM6bXdpZmlleF9zZXRfc3RhX2h0X2NhcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBjb25zdCB1OCAqaWVzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMtNzE0LVxcdFxcdCAgICAgICBpbnQgaWVzX2xlbiwgc3RydWN0IG13aWZpZXhfc3RhX25vZGUgKm5vZGUpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjE4OjQ5LjkyMzc5NTY3MVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODkyNzkxMzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIGBtd2lmaWV4YCB3aXRoIFVTQioqXG5cbk9rYXksIHNvIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYCBpcyB0cmlnZ2VyZWQgYnkgYG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRgLiAgQW5kIHNpbmNlIHRoaXMgaXMgVVNCLCB0aGVzZSBldmVudHMgYXJlIHVsdGltYXRlbHkgY29taW5nIGZyb20gVVNCIFVSQnMsIHNvIHdlJ3JlIGRlZmluaXRlbHkgbG9va2luZyBhdCBhIGZ1enphYmxlIHBhdGggaGVyZSEgVGhhdCBtYWtlcyB0aGluZ3MgbXVjaCBzaW1wbGVyLlxuXG5Ob3csIGxldCdzIHplcm8gaW4gb24gdGhlIGtleSBzeW1ib2xzLiBUaGlzIHBhdGNoIGhpdHMgYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGFuZCBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAuICBSaWdodCwgbGV0J3Mgc2VlLCBhcmUgdGhleSBzdGF0aWM/ICBHb29kLCBuZWl0aGVyIGFyZSBzdGF0aWMuIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBpcyBpbiBgc2Nhbi5jYCBhbmQgZGVjbGFyZWQgaW4gYG1haW4uaGAuIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYCBpcyBpbiBgdXRpbC5jYCBhbmQgZGVjbGFyZWQgaW4gYG1haW4uaGAuXG5cbkhtbSwgc2hvdWxkIEkgZXhwYW5kIHRoZSBmb2N1cz8gUGVyaGFwcyBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAgaXRzZWxmLCBvciBtYXliZSBgbXdpZmlleF9maWxsX25ld19ic3NfZGVzY2AgbWlnaHQgYmUgd29ydGggYSBsb29rLiBGb3Igbm93LCBsZXQncyBqdXN0IHN0aWNrIHdpdGggdGhlIG1vZGlmaWVkIGZ1bmN0aW9uczogYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGFuZCBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAuIFNpbXBsaWNpdHkgaXMga2V5IHRvIGdldHRpbmcgdGhpcyBzZXQgdXAuXG5cbkFscmlnaHQsIHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFtIEkgZ29pbmcgdG8gbmVlZCB0byBidWlsZCBmb3IgdGhpcz8gRGVmaW5pdGVseSBgTVdJRklFWGAsIGBNV0lGSUVYX1VTQmAsIGFuZCBgQ0ZHODAyMTFgLCBvYnZpb3VzbHkuICBTaW5jZSB3ZSdyZSBmb2N1c2luZyBvbiBVU0IsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIGBVU0JgIGVuYWJsZWQuIE5vIHN1cnByaXNlcyB0aGVyZS4gR29vZCwgSSdsbCBkb3VibGUgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBmb3IgYE1XSUZJRVhfVVNCYCBqdXN0IHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDk4LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjE4OjU1LjgxNjU5MDE5M1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyNTM2MjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNV0lGSUVYX1VTQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0yNT1jb25maWcgTVdJRklFWF9QQ0lFXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzozNzpjb25maWcgTVdJRklFWF9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zOC1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjE4OjU1Ljk2OTEzMzUyNFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODM3MzU1OTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWFydmVsbCBXaUZpLUV4IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbiwgYE1XSUZJRVhfVVNCYC4gV2UndmUgZ290IHRoZSBiYXNpYyBzdHJ1Y3R1cmUgaGVyZSwgc2VlaW5nIHRoYXQgaXQncyBhIHRyaXN0YXRlIG9wdGlvbiBmb3IgdGhlIE1hcnZlbGwgV2lGaS1FeCBEcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgdGhvc2UgVVNCIGRldmljZXMuIEl0J3Mgb2J2aW91c2x5IGRlcGVuZGVudCBvbiBgTVdJRklFWGAgYW5kIGBVU0JgLCBubyBzdXJwcmlzZXMgdGhlcmUuIFRoYXQncyBhIGdpdmVuLlxuXG5JIG5lZWQgdG8gbWFrZSBzdXJlIHRob3NlIGFyZSBhbGwgc2V0LiBTbyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBgTVdJRklFWF9VU0JgLCBgTVdJRklFWGAsIGBVU0JgIGFyZSBteSBjb3JlIGRlcGVuZGVuY2llcy4gSSBhbHNvIHNlZSBgQ0ZHODAyMTFgIGlzIG5lZWRlZCBpbiB0aGlzIGNoYWluLiBOb3csIEkgdGhvdWdodCBgTUFDODAyMTFgIG1pZ2h0IGJlIGltcG9ydGFudCB0b28sIGJ1dCBpdCBzZWVtcyB0aGF0IGl0J3Mgbm90IHN0cmljdGx5ICpyZXF1aXJlZCogYnkgYE1XSUZJRVhgLCBhbmQgaXQncyBgQ0ZHODAyMTFgIHRoYXQncyB0aGUga2V5IHJlcXVpcmVtZW50IGhlcmUuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiBgQ0ZHODAyMTFgIGp1c3QgdG8gYmUgY29tcGxldGVseSBjZXJ0YWluIHRoYXQgdGhlcmUgYXJlbid0IGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDAwNiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDoxOTowMC44MDY0OTI2MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE2MTIyMzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDRkc4MDIxMVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZz0xND1jb25maWcgV0VYVF9QUklWXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNi1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzpjb25maWcgQ0ZHODAyMTFcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiY2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnPTM4PWNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01MS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo1Mjpjb25maWcgQ0ZHODAyMTFfREVWRUxPUEVSX1dBUk5JTkdTXFxubmV0L3dpcmVsZXNzL0tjb25maWctNTMtXFx0Ym9vbCBcXFwiZW5hYmxlIGRldmVsb3BlciB3YXJuaW5nc1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY3LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjY4OmNvbmZpZyBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02OS1cXHRib29sIFxcXCJjZmc4MDIxMSBjZXJ0aWZpY2F0aW9uIG9udXNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy04OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo4OTpjb25maWcgQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05MC1cXHRib29sIFxcXCJyZXF1aXJlIHJlZ2RiIHNpZ25hdHVyZVxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo5OTpjb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTAwLVxcdGJvb2wgXFxcImFsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTEwLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjExMTpjb25maWcgQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVxcdHN0cmluZyBcXFwiYWRkaXRpb25hbCByZWdkYiBrZXkgZGlyZWN0b3J5XFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjI6Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cXHRib29sIFxcXCJjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzU6Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNi1cXHRib29sIFxcXCJjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTU4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE1OTpjb25maWcgQ0ZHODAyMTFfREVGQVVMVF9QU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2MC1cXHRib29sIFxcXCJlbmFibGUgcG93ZXJzYXZlIGJ5IGRlZmF1bHRcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTY5OmNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVxcdGJvb2wgXFxcImNmZzgwMjExIERlYnVnRlMgZW50cmllc1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Ni1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzc6Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3OC1cXHRib29sIFxcXCJzdXBwb3J0IENSREFcXFwiIGlmIEVYUEVSVFxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE4Nzpjb25maWcgQ0ZHODAyMTFfV0VYVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJjZmc4MDIxMSB3aXJlbGVzcyBleHRlbnNpb25zIGNvbXBhdGliaWxpdHlcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTMtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk0OmNvbmZpZyBDRkc4MDIxMV9LVU5JVF9URVNUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTk1LVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgY2ZnODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjA6MTk6MDEuMDIyNjk5NjM3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3NDg2OTkwMDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWFydmVsbCBXaUZpLUV4IERyaXZlciBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBgQ0ZHODAyMTFgIGlzIGluaGVyZW50bHkgZmluZSBzaW5jZSBpdHMgZGVwZW5kZW5jeSBvbiBgUkZLSUxMYCBpcyBhIGJpdCByZWR1bmRhbnQgLSB0aGUgYnVpbGQgc3lzdGVtIHdpbGwgcmVzb2x2ZSB0aGF0LiBUaGUgY3JpdGljYWwgY29uZmlndXJhdGlvbnMgaGVyZSBhcHBlYXIgdG8gYmUgY2VudGVyZWQgYXJvdW5kIHRoZSBNYXJ2ZWxsIFdpRmktRXggZHJpdmVyLCBzcGVjaWZpY2FsbHkgYE1XSUZJRVhgIGFuZCBgTVdJRklFWF9VU0JgLiBXaGlsZSBgVVNCYCBpcyB0eXBpY2FsbHkgZW5hYmxlZCBpbiB0aGUgc3l6a2FsbGVyIGNvbmZpZ3MsIGl0J3Mgd29ydGggZXhwbGljaXRseSBsaXN0aW5nIGl0IGhlcmUgZm9yIGNsYXJpdHkuIFRoZSBpbXBvcnRhbnQgb25lIGlzIGRlZmluaXRlbHkgYE1XSUZJRVhfVVNCYC5cblxuTXkgZm9jdXMgaXMgdGhlIGNvcmUgaXNzdWUsIGFuZCBpdCdzIGxvb2tpbmcgbGlrZSB0aGlzIGNlbnRlcnMgYXJvdW5kIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgLiBCYXNlZCBvbiB0aGUgcGF0Y2gsIHRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgd2VyZSBtb2RpZmllZCB0byBpbmNsdWRlIGxlbmd0aCBjaGVja3MgZm9yIHZhcmlvdXMgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykuIFRoZSBnb2FsIGlzIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBvciB3cml0ZXMgd2l0aGluIHRoZXNlIHR3byBzcGVjaWZpYyBmdW5jdGlvbnMuIFRoZSBNYXJ2ZWxsIFdpRmktRXggZHJpdmVyIChgbXdpZmlleGApIGlzIHNwZWNpZmljYWxseSB0aGUgZHJpdmVyIHRoYXQgc3VwcG9ydHMgVVNCIGludGVyZmFjZXMgKGBNV0lGSUVYX1VTQmApLCBtYWtpbmcgaXQgcmVhZGlseSBmdXp6YWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2Ugc3l6a2FsbGVyLiBUaGUgdnVsbmVyYWJpbGl0eSdzIGF0dGFjayB2ZWN0b3IgaXMgdGhyb3VnaCBVU0IgVVJCIHJlc3BvbnNlcyBjb250YWluaW5nIG1hbGljaW91cyBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSwgd2hpY2ggYXJlIG5vdyBjaGVja2VkLlxuXG5UaGVyZWZvcmUsIHRoZSBjb25maWcgb3B0aW9ucyBJIG5lZWQgdG8gZW5hYmxlIGFyZTogYE1XSUZJRVhgLCBgTVdJRklFWF9VU0JgLCBgQ0ZHODAyMTFgLCBhbmQgYFVTQmAuIEFsc28sIGxldCdzIHZlcmlmeSBpZiBgV0xBTmAgaXMgcmVxdWlyZWQgZm9yIGBNV0lGSUVYYCwgdGhhdCB1c3VhbGx5IGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTMzMSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDoxOToxOC41MDk2OTQyMjNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MzkwODE2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVdJRklFWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI6Y29uZmlnIE1XSUZJRVhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MTI6Y29uZmlnIE1XSUZJRVhfU0RJT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEzLVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI1OmNvbmZpZyBNV0lGSUVYX1BDSUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNi1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgUENJRSA4NzY2Lzg4OTcvODk5N1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM3OmNvbmZpZyBNV0lGSUVYX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM4LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjA6MTk6MTkuMDgzNjE0MTQ4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2MjQ1NzcxMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBwcm92aWRlZCB0ZXh0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNYXJ2ZWxsIFdpcmVsZXNzIEtjb25maWcqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBjb25maWd1cmVkIGZvciBNYXJ2ZWxsIHdpcmVsZXNzIGRldmljZXMuIFRoYXQgbWVhbnMgZ29pbmcgc3RyYWlnaHQgdG8gdGhlIHNvdXJjZTogYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgYWxsIHRoZSBjb21waWxhdGlvbiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBkZWZhdWx0IHNldHRpbmdzIGFyZSBsaWtlbHkgZGVmaW5lZCBmb3IgdGhlIE1hcnZlbGwgd2lyZWxlc3MgZHJpdmVycyB3aXRoaW4gdGhlIGtlcm5lbC4gSSdsbCBuZWVkIHRvIHNlZSBob3cgdGhlIE1hcnZlbGwtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgYnJvYWRlciB3aXJlbGVzcyBzdWJzeXN0ZW0uIEknbSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgYW55IHBvdGVudGlhbCBjb25mbGljdHMgb3IgcGxhdGZvcm0tc3BlY2lmaWMgY29uc2lkZXJhdGlvbnMgdGhhdCBtaWdodCBpbmZsdWVuY2UgaXRzIGJlaGF2aW9yLiBGcm9tIHRoZXJlLCBJJ2xsIGJlIGluIGEgYmV0dGVyIHBvc2l0aW9uIHRvIGFuYWx5emUgdGhlIHJlbGV2YW50IHNvdXJjZSBjb2RlLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI0OTAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQyMDoxOToyNC43MDgxOTUzNzZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI4MTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFdMQU5fVkVORE9SX01BUlZFTExcXG4gICAzOlxcdFxcdGJvb2wgXFxcIk1hcnZlbGwgZGV2aWNlc1xcXCJcXG4gICA0OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGNhcmQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZLlxcbiAgIDc6XFx0XFxuICAgODpcXHRcXHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24ndCBkaXJlY3RseSBhZmZlY3QgdGhlXFxuICAgOTpcXHRcXHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXFxuICAxMDpcXHRcXHQgIHF1ZXN0aW9ucyBhYm91dCB0aGVzZSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcXG4gIDExOlxcdFxcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxcbiAgMTI6XFx0XFxuICAxMzpcXHRpZiBXTEFOX1ZFTkRPUl9NQVJWRUxMXFxuICAxNDpcXHRcXG4gIDE1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhcy9LY29uZmlnXFxcIlxcbiAgMTY6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzX3RmL0tjb25maWdcXFwiXFxuICAxNzpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnXFxcIlxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgTVdMOEtcXG4gIDIwOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIDg4Vzh4eHggUENJL1BDSWUgV2lyZWxlc3Mgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMjA6MTk6MjQuNzA4MzI1ODU2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4Mzk4MjQ1OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBtZW50YWwgcnVuZG93bjpcblxuKipTZXR0aW5nIHVwIE1hcnZlbGwgV0xBTiBEcml2ZXJzKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLiBNeSBjdXJyZW50IG9iamVjdGl2ZSBpcyB0byBjb25maWd1cmUgdGhlIHN5c3RlbSBmb3IgTWFydmVsbCBXTEFOIHN1cHBvcnQsIGFuZCB0aGUga2V5IGlzIHRvIGdldCB0aGUgbmVjZXNzYXJ5IGRlcGVuZGVuY2llcyBzdHJhaWdodC4gRmlyc3QsIEkgcmVtZW1iZXIgZnJvbSB3b3JraW5nIHdpdGggdGhlIEtjb25maWcgZmlsZXMsIHRoYXQgYFdMQU5fVkVORE9SX01BUlZFTExgIG5lZWRzIHRvIGJlIGRlZmluZWQuIEFsc28sIGl0J3MgY2xlYXIgYFdMQU5gIGlzIGEgcHJlcmVxdWlzaXRlIGZvciB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUsIHNvIHRoYXQgaGFzIHRvIGJlIGluIHRoZSBjb25maWd1cmF0aW9uLiBHb3QgaXQsIGxldCBtZSBhZGQgYFdMQU5fVkVORE9SX01BUlZFTExgIGFuZCBgV0xBTmAgdG8gdGhlIGFjdGl2ZSBjb25maWd1cmF0aW9uIGxpc3QuXG5cbk15IGN1cnJlbnQgQ29uZmlnIGxpc3QgaXMgYXMgZm9sbG93czogYFdMQU5gLCBgV0xBTl9WRU5ET1JfTUFSVkVMTGAsIGBDRkc4MDIxMWAsIGBNV0lGSUVYYCwgYE1XSUZJRVhfVVNCYCwgYW5kIGBVU0JgLlxuXG5Ob3csIEkgd2lsbCBzZXQgdGhvc2UgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMDI4LCJPdXRwdXRUb2tlbnMiOjIyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDIwOjE5OjMyLjU0ODE1NTE4OVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjg2MTIyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTUFSVkVMTFwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llXCIsXG4gICAgXCJtd2lmaWV4X3NldF9zdGFfaHRfY2FwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIGZvciB2YXJpb3VzIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIGluIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcGFydCBvZiB0aGUgTWFydmVsbCBXaUZpLUV4IGRyaXZlciAoYG13aWZpZXhgKS4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyAoYE1XSUZJRVhfVVNCYCksIHdoaWNoIGNhbiBiZSBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHN5emthbGxlcidzIFVTQiBkdW1teV9oY2QgZW11bGF0aW9uLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIHZpYSBVU0IgVVJCIHJlc3BvbnNlcyBjb250YWluaW5nIG1hbGljaW91cyBJRXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTUFSVkVMTFwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llXCIsXG4gICAgXCJtd2lmaWV4X3NldF9zdGFfaHRfY2FwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIGZvciB2YXJpb3VzIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIGluIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcGFydCBvZiB0aGUgTWFydmVsbCBXaUZpLUV4IGRyaXZlciAoYG13aWZpZXhgKS4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyAoYE1XSUZJRVhfVVNCYCksIHdoaWNoIGNhbiBiZSBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHN5emthbGxlcidzIFVTQiBkdW1teV9oY2QgZW11bGF0aW9uLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIHZpYSBVU0IgVVJCIHJlc3BvbnNlcyBjb250YWluaW5nIG1hbGljaW91cyBJRXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdf297[1] Phase: Succeeded StartedAt: 2026-08-02 20:19:45 +0000 UTC FinishedAt: 2026-08-02 20:19:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdf297[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-02 20:19:45 +0000 UTC FinishedAt: 2026-08-02 20:19:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdf297[2] Phase: Succeeded StartedAt: 2026-08-02 20:19:45 +0000 UTC FinishedAt: 2026-08-02 20:20:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdf297[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","CFG80211","MWIFIEX","MWIFIEX_USB","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":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","CFG80211","MWIFIEX","MWIFIEX_USB","USB"],"series_id":"fa025f7a-cc54-4236-8faf-54b156e9c62d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-08-02 20:19:46 +0000 UTC FinishedAt: 2026-08-02 20:20:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","CFG80211","MWIFIEX","MWIFIEX_USB","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":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","CFG80211","MWIFIEX","MWIFIEX_USB","USB"],"series_id":"fa025f7a-cc54-4236-8faf-54b156e9c62d","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-workflowdf297[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","CFG80211","MWIFIEX","MWIFIEX_USB","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":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","CFG80211","MWIFIEX","MWIFIEX_USB","USB"],"series_id":"fa025f7a-cc54-4236-8faf-54b156e9c62d","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-08-02 20:19:46 +0000 UTC FinishedAt: 2026-08-02 20:20:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdf297[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","CFG80211","MWIFIEX","MWIFIEX_USB","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":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","CFG80211","MWIFIEX","MWIFIEX_USB","USB"],"series_id":"fa025f7a-cc54-4236-8faf-54b156e9c62d","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-08-02 20:19:46 +0000 UTC FinishedAt: 2026-08-02 20:20:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","CFG80211","MWIFIEX","MWIFIEX_USB","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{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdf297[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","CFG80211","MWIFIEX","MWIFIEX_USB","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":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MARVELL","CFG80211","MWIFIEX","MWIFIEX_USB","USB"],"series_id":"fa025f7a-cc54-4236-8faf-54b156e9c62d","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: Error StartedAt: 2026-08-02 20:20:43 +0000 UTC FinishedAt: 2026-08-02 20:20:43 +0000 UTC Input: nil Output: nil