Name: series-workflowffrn2 Phase: Succeeded StartedAt: 2026-07-30 06:57:48 +0000 UTC FinishedAt: 2026-07-30 11:06:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowffrn2[0] Phase: Succeeded StartedAt: 2026-07-30 06:57:48 +0000 UTC FinishedAt: 2026-07-30 07:17:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowffrn2[0].run-triage Phase: Succeeded StartedAt: 2026-07-30 06:57:48 +0000 UTC FinishedAt: 2026-07-30 07:17:48 +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": "04026c998c24ac47eb76886b9790c5710b603eb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "CFG80211_WEXT", "MAC80211", "MAC80211_HWSIM" ], "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": "04026c998c24ac47eb76886b9790c5710b603eb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "CFG80211_WEXT", "MAC80211", "MAC80211_HWSIM" ], "series_id": "e890ed1e-3b6d-4a84-b859-484bd636179d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "cfg80211_validate_ies", "validate_beacon_head", "validate_ie_attr", "cfg80211_wext_siwgenie" ], "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+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExX1dFWFQmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjZmc4MDIxMV92YWxpZGF0ZV9pZXMmIzM0OywKICAgICYjMzQ7dmFsaWRhdGVfYmVhY29uX2hlYWQmIzM0OywKICAgICYjMzQ7dmFsaWRhdGVfaWVfYXR0ciYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV93ZXh0X3Npd2dlbmllJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyBJbmZvcm1hdGlvbiBFbGVtZW50IChJRSkgdmFsaWRhdGlvbiBpbnRvIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYCBhbmQgYWRkcyB0aGlzIHZhbGlkYXRpb24gdG8gdGhlIFdFWFQgYFNJT0NTSVdHRU5JRWAgaW9jdGwgaGFuZGxlciAoYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgKSB0byBwcmV2ZW50IG1hbGZvcm1lZCBJRXMgZnJvbSBiZWluZyBwcm9jZXNzZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSSB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAobmw4MDIxMSkgYW5kIGlvY3RsICh3ZXh0KS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG5ldyB2YWxpZGF0aW9uIGhlbHBlciBhbmQgdGhlIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhYjZlMDU3ODBmNzI2MGJlNWEyZjM3OTAxZjM3NWVjNTI0YTQ2MThhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMDc6MTU6MzkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL25sODAyMTEuYyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmNcbmluZGV4IDVhZGNiNmJkMGZjNTYuLjI3YmJhZjkxNjU3NDIgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG5AQCAtMjI4LDcgJiM0MzsyMjgsNiBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2JlYWNvbl9oZWFkKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXG4ge1xuIFx0Y29uc3QgdTggKmRhdGEgPSBubGFfZGF0YShhdHRyKTtcbiBcdHVuc2lnbmVkIGludCBsZW4gPSBubGFfbGVuKGF0dHIpO1xuLVx0Y29uc3Qgc3RydWN0IGVsZW1lbnQgKmVsZW07XG4gXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKWRhdGE7XG4gXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2V4dCAqZXh0O1xuIFx0dW5zaWduZWQgaW50IGZpeGVkbGVuLCBoZHJsZW47XG5AQCAtMjU5LDEzICYjNDM7MjU4LDggQEAgc3RhdGljIGludCB2YWxpZGF0ZV9iZWFjb25faGVhZChjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxuIFx0ZGF0YSAmIzQzOz0gZml4ZWRsZW47XG4gXHRsZW4gLT0gZml4ZWRsZW47XG4gXG4tXHRmb3JfZWFjaF9lbGVtZW50KGVsZW0sIGRhdGEsIGxlbikge1xuLVx0XHQvKiBub3RoaW5nICovXG4tXHR9XG4tXG4tXHRpZiAoZm9yX2VhY2hfZWxlbWVudF9jb21wbGV0ZWQoZWxlbSwgZGF0YSwgbGVuKSlcbiYjNDM7XHRpZiAoY2ZnODAyMTFfdmFsaWRhdGVfaWVzKGRhdGEsIGxlbikpXG4gXHRcdHJldHVybiAwO1xuLVxuIGVycjpcbiBcdE5MX1NFVF9FUlJfTVNHX0FUVFIoZXh0YWNrLCBhdHRyLCBcJiMzNDttYWxmb3JtZWQgYmVhY29uIGhlYWRcJiMzNDspO1xuIFx0cmV0dXJuIC1FSU5WQUw7XG5AQCAtMjc2LDEzICYjNDM7MjcwLDggQEAgc3RhdGljIGludCB2YWxpZGF0ZV9pZV9hdHRyKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXG4ge1xuIFx0Y29uc3QgdTggKmRhdGEgPSBubGFfZGF0YShhdHRyKTtcbiBcdHVuc2lnbmVkIGludCBsZW4gPSBubGFfbGVuKGF0dHIpO1xuLVx0Y29uc3Qgc3RydWN0IGVsZW1lbnQgKmVsZW07XG4tXG4tXHRmb3JfZWFjaF9lbGVtZW50KGVsZW0sIGRhdGEsIGxlbikge1xuLVx0XHQvKiBub3RoaW5nICovXG4tXHR9XG4gXG4tXHRpZiAoZm9yX2VhY2hfZWxlbWVudF9jb21wbGV0ZWQoZWxlbSwgZGF0YSwgbGVuKSlcbiYjNDM7XHRpZiAoY2ZnODAyMTFfdmFsaWRhdGVfaWVzKGRhdGEsIGxlbikpXG4gXHRcdHJldHVybiAwO1xuIFxuIFx0TkxfU0VUX0VSUl9NU0dfQVRUUihleHRhY2ssIGF0dHIsIFwmIzM0O21hbGZvcm1lZCBpbmZvcm1hdGlvbiBlbGVtZW50c1wmIzM0Oyk7XG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL25sODAyMTEuaCBiL25ldC93aXJlbGVzcy9ubDgwMjExLmhcbmluZGV4IGJkYjA2NWQxNDA1NDkuLjgzMjJjZWQ2YjU1MWQgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5oXG5AQCAtMTI5LDQgJiM0MzsxMjksNiBAQCBpbnQgbmw4MDIxMV9wbXNyX3N0YXJ0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xuIHZvaWQgbmw4MDIxMV9tbG9fcmVjb25mX2FkZF9kb25lKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0XHQgc3RydWN0IGNmZzgwMjExX21sb19yZWNvbmZfZG9uZV9kYXRhICpkYXRhKTtcbiBcbiYjNDM7Ym9vbCBjZmc4MDIxMV92YWxpZGF0ZV9pZXMoY29uc3QgdTggKmRhdGEsIGludCBsZW4pO1xuJiM0MztcbiAjZW5kaWYgLyogX19ORVRfV0lSRUxFU1NfTkw4MDIxMV9IICovXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL3V0aWwuYyBiL25ldC93aXJlbGVzcy91dGlsLmNcbmluZGV4IDI0NTI3YmYzMjFiMmEuLmRjYWE1OTAzYmNkMmMgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3MvdXRpbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3MvdXRpbC5jXG5AQCAtMzA4MywzICYjNDM7MzA4MywxNCBAQCBib29sIGNmZzgwMjExX3dkZXZfY2hhbm5lbF9hbGxvd2VkKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRyZXR1cm4gZmFsc2U7XG4gfVxuIEVYUE9SVF9TWU1CT0woY2ZnODAyMTFfd2Rldl9jaGFubmVsX2FsbG93ZWQpO1xuJiM0MztcbiYjNDM7Ym9vbCBjZmc4MDIxMV92YWxpZGF0ZV9pZXMoY29uc3QgdTggKmRhdGEsIGludCBsZW4pXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgZWxlbWVudCAqZWxlbTtcbiYjNDM7XG4mIzQzO1x0Zm9yX2VhY2hfZWxlbWVudChlbGVtLCBkYXRhLCBsZW4pIHtcbiYjNDM7XHRcdC8qIG5vdGhpbmcgKi9cbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBmb3JfZWFjaF9lbGVtZW50X2NvbXBsZXRlZChlbGVtLCBkYXRhLCBsZW4pO1xuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL3dleHQtc21lLmMgYi9uZXQvd2lyZWxlc3Mvd2V4dC1zbWUuY1xuaW5kZXggNTczYjZiMTVhNDQ2ZS4uMTQ3NmQ5MzNjN2U3MiAxMDA2NDRcbi0tLSBhL25ldC93aXJlbGVzcy93ZXh0LXNtZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3Mvd2V4dC1zbWUuY1xuQEAgLTMxOSw2ICYjNDM7MzE5LDkgQEAgaW50IGNmZzgwMjExX3dleHRfc2l3Z2VuaWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0cmV0dXJuIDA7XG4gXG4gXHRpZiAoaWVfbGVuKSB7XG4mIzQzO1x0XHRpZiAoIWNmZzgwMjExX3ZhbGlkYXRlX2llcyhleHRyYSwgaWVfbGVuKSlcbiYjNDM7XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuIFx0XHRpZSA9IGttZW1kdXAoZXh0cmEsIGllX2xlbiwgR0ZQX0tFUk5FTCk7XG4gXHRcdGlmICghaWUpXG4gXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExX1dFWFQmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjZmc4MDIxMV92YWxpZGF0ZV9pZXMmIzM0OywKICAgICYjMzQ7dmFsaWRhdGVfYmVhY29uX2hlYWQmIzM0OywKICAgICYjMzQ7dmFsaWRhdGVfaWVfYXR0ciYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV93ZXh0X3Npd2dlbmllJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyBJbmZvcm1hdGlvbiBFbGVtZW50IChJRSkgdmFsaWRhdGlvbiBpbnRvIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYCBhbmQgYWRkcyB0aGlzIHZhbGlkYXRpb24gdG8gdGhlIFdFWFQgYFNJT0NTSVdHRU5JRWAgaW9jdGwgaGFuZGxlciAoYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgKSB0byBwcmV2ZW50IG1hbGZvcm1lZCBJRXMgZnJvbSBiZWluZyBwcm9jZXNzZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSSB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAobmw4MDIxMSkgYW5kIGlvY3RsICh3ZXh0KS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG5ldyB2YWxpZGF0aW9uIGhlbHBlciBhbmQgdGhlIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhYjZlMDU3ODBmNzI2MGJlNWEyZjM3OTAxZjM3NWVjNTI0YTQ2MThhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMzAgMDc6MTU6MzkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jIGIvbmV0L3dpcmVsZXNzL25sODAyMTEuYwppbmRleCA1YWRjYjZiZDBmYzU2Li4yN2JiYWY5MTY1NzQyIDEwMDY0NAotLS0gYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmMKQEAgLTIyOCw3ICYjNDM7MjI4LDYgQEAgc3RhdGljIGludCB2YWxpZGF0ZV9iZWFjb25faGVhZChjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLAogewogCWNvbnN0IHU4ICpkYXRhID0gbmxhX2RhdGEoYXR0cik7CiAJdW5zaWduZWQgaW50IGxlbiA9IG5sYV9sZW4oYXR0cik7Ci0JY29uc3Qgc3RydWN0IGVsZW1lbnQgKmVsZW07CiAJY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHZvaWQgKilkYXRhOwogCWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfZXh0ICpleHQ7CiAJdW5zaWduZWQgaW50IGZpeGVkbGVuLCBoZHJsZW47CkBAIC0yNTksMTMgJiM0MzsyNTgsOCBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2JlYWNvbl9oZWFkKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsCiAJZGF0YSAmIzQzOz0gZml4ZWRsZW47CiAJbGVuIC09IGZpeGVkbGVuOwogCi0JZm9yX2VhY2hfZWxlbWVudChlbGVtLCBkYXRhLCBsZW4pIHsKLQkJLyogbm90aGluZyAqLwotCX0KLQotCWlmIChmb3JfZWFjaF9lbGVtZW50X2NvbXBsZXRlZChlbGVtLCBkYXRhLCBsZW4pKQomIzQzOwlpZiAoY2ZnODAyMTFfdmFsaWRhdGVfaWVzKGRhdGEsIGxlbikpCiAJCXJldHVybiAwOwotCiBlcnI6CiAJTkxfU0VUX0VSUl9NU0dfQVRUUihleHRhY2ssIGF0dHIsICYjMzQ7bWFsZm9ybWVkIGJlYWNvbiBoZWFkJiMzNDspOwogCXJldHVybiAtRUlOVkFMOwpAQCAtMjc2LDEzICYjNDM7MjcwLDggQEAgc3RhdGljIGludCB2YWxpZGF0ZV9pZV9hdHRyKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsCiB7CiAJY29uc3QgdTggKmRhdGEgPSBubGFfZGF0YShhdHRyKTsKIAl1bnNpZ25lZCBpbnQgbGVuID0gbmxhX2xlbihhdHRyKTsKLQljb25zdCBzdHJ1Y3QgZWxlbWVudCAqZWxlbTsKLQotCWZvcl9lYWNoX2VsZW1lbnQoZWxlbSwgZGF0YSwgbGVuKSB7Ci0JCS8qIG5vdGhpbmcgKi8KLQl9CiAKLQlpZiAoZm9yX2VhY2hfZWxlbWVudF9jb21wbGV0ZWQoZWxlbSwgZGF0YSwgbGVuKSkKJiM0MzsJaWYgKGNmZzgwMjExX3ZhbGlkYXRlX2llcyhkYXRhLCBsZW4pKQogCQlyZXR1cm4gMDsKIAogCU5MX1NFVF9FUlJfTVNHX0FUVFIoZXh0YWNrLCBhdHRyLCAmIzM0O21hbGZvcm1lZCBpbmZvcm1hdGlvbiBlbGVtZW50cyYjMzQ7KTsKZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9ubDgwMjExLmggYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5oCmluZGV4IGJkYjA2NWQxNDA1NDkuLjgzMjJjZWQ2YjU1MWQgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy9ubDgwMjExLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL25sODAyMTEuaApAQCAtMTI5LDQgJiM0MzsxMjksNiBAQCBpbnQgbmw4MDIxMV9wbXNyX3N0YXJ0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pOwogdm9pZCBubDgwMjExX21sb19yZWNvbmZfYWRkX2RvbmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCQkgc3RydWN0IGNmZzgwMjExX21sb19yZWNvbmZfZG9uZV9kYXRhICpkYXRhKTsKIAomIzQzO2Jvb2wgY2ZnODAyMTFfdmFsaWRhdGVfaWVzKGNvbnN0IHU4ICpkYXRhLCBpbnQgbGVuKTsKJiM0MzsKICNlbmRpZiAvKiBfX05FVF9XSVJFTEVTU19OTDgwMjExX0ggKi8KZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy91dGlsLmMgYi9uZXQvd2lyZWxlc3MvdXRpbC5jCmluZGV4IDI0NTI3YmYzMjFiMmEuLmRjYWE1OTAzYmNkMmMgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy91dGlsLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL3V0aWwuYwpAQCAtMzA4MywzICYjNDM7MzA4MywxNCBAQCBib29sIGNmZzgwMjExX3dkZXZfY2hhbm5lbF9hbGxvd2VkKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJcmV0dXJuIGZhbHNlOwogfQogRVhQT1JUX1NZTUJPTChjZmc4MDIxMV93ZGV2X2NoYW5uZWxfYWxsb3dlZCk7CiYjNDM7CiYjNDM7Ym9vbCBjZmc4MDIxMV92YWxpZGF0ZV9pZXMoY29uc3QgdTggKmRhdGEsIGludCBsZW4pCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgZWxlbWVudCAqZWxlbTsKJiM0MzsKJiM0MzsJZm9yX2VhY2hfZWxlbWVudChlbGVtLCBkYXRhLCBsZW4pIHsKJiM0MzsJCS8qIG5vdGhpbmcgKi8KJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gZm9yX2VhY2hfZWxlbWVudF9jb21wbGV0ZWQoZWxlbSwgZGF0YSwgbGVuKTsKJiM0Mzt9CmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvd2V4dC1zbWUuYyBiL25ldC93aXJlbGVzcy93ZXh0LXNtZS5jCmluZGV4IDU3M2I2YjE1YTQ0NmUuLjE0NzZkOTMzYzdlNzIgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy93ZXh0LXNtZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC93aXJlbGVzcy93ZXh0LXNtZS5jCkBAIC0zMTksNiAmIzQzOzMxOSw5IEBAIGludCBjZmc4MDIxMV93ZXh0X3Npd2dlbmllKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCXJldHVybiAwOwogCiAJaWYgKGllX2xlbikgewomIzQzOwkJaWYgKCFjZmc4MDIxMV92YWxpZGF0ZV9pZXMoZXh0cmEsIGllX2xlbikpCiYjNDM7CQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJCWllID0ga21lbWR1cChleHRyYSwgaWVfbGVuLCBHRlBfS0VSTkVMKTsKIAkJaWYgKCFpZSkKIAkJCXJldHVybiAtRU5PTUVNOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDc5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFdpRmkgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBzZWVtcyBsaWtlIGl0JiMzOTtzIHRvdWNoaW5nIHNldmVyYWwgY29yZSBmaWxlcyB3aXRoaW4gdGhlIGBuZXQvd2lyZWxlc3NgIHN1YnN5c3RlbS4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBtb2RpZnlpbmcgYG5sODAyMTEuY2AsIGBubDgwMjExLmhgLCBgdXRpbC5jYCwgYW5kIGB3ZXh0LXNtZS5jYC4gVGhhdCYjMzk7cyBhIGRlY2VudCBzcHJlYWQsIGluZGljYXRpbmcgYSBwb3RlbnRpYWxseSBzaWduaWZpY2FudCBjaGFuZ2UgaW4gaG93IHdlIGhhbmRsZSB3aXJlbGVzcyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gb3IgY2FwYWJpbGl0aWVzLgoKVGhlIGtleSB0aGluZyBJJiMzOTttIHNlZWluZyBpcyB0aGlzIG5ldyBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYCBmdW5jdGlvbi4gSXRzIHByZXNlbmNlIGluIGB1dGlsLmNgIHN1Z2dlc3RzIGl0JiMzOTtzIGEgdXRpbGl0eSBmdW5jdGlvbiBkZXNpZ25lZCB0byBoYW5kbGUgSW5mb3JtYXRpb24gRWxlbWVudCAoSUUpIHZhbGlkYXRpb24sIHdoaWNoIGlzIGNvbW1vbiBpbiA4MDIuMTEgbWFuYWdlbWVudCBmcmFtZXMuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgYmVpbmcgKnVzZWQqIHdpdGhpbiBgdmFsaWRhdGVfYmVhY29uX2hlYWRgIGFuZCBgdmFsaWRhdGVfaWVfYXR0cmAgaW4gYG5sODAyMTEuY2AsIGFuZCBhbHNvIGluIGBjZmc4MDIxMV93ZXh0X3Npd2dlbmllYCB3aXRoaW4gYHdleHQtc21lLmNgIGlzIGltcG9ydGFudCB0b28uIFRoYXQgdGVsbHMgbWUgdGhpcyB2YWxpZGF0aW9uIGlzIGdvaW5nIHRvIHRvdWNoIGJvdGggdGhlIG5sODAyMTEgbmV0bGluayBpbnRlcmZhY2UgYW5kIHRoZSB3ZXh0LWJhc2VkIGludGVyZmFjZXMuIFZhbGlkYXRpb24gb2YgSUVzIHN1Z2dlc3RzIGNoYW5nZXMgdG8gd2hhdCB3ZSB2YWxpZGF0ZSBpbiBJRXMsIHdoaWNoIGNhbiBhZmZlY3QgdGhpbmdzIGxpa2UgYmVhY29uIHBhcnNpbmcsIGFuZCB2YXJpb3VzIGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9ucy4KClRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZW5hYmxlZCBmb3IgYG5ldC93aXJlbGVzcy9gLiBJJiMzOTttIGd1ZXNzaW5nIGBDRkc4MDIxMWAgYW5kIGBDRkc4MDIxMV9XRVhUYCBhcmUgdGhlIGtleSBjb250ZW5kZXJzIGhlcmUsIHNvIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGBuZXQvd2lyZWxlc3MvS2NvbmZpZ2AgZmlsZSB0byBjb25maXJtIGhvdyB0aGlzIG5ldyBmdW5jdGlvbmFsaXR5IGlzIGNvbnRyb2xsZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXRoZXIgdGhpcyBpcyBhIGNvcmUgZmVhdHVyZSBvciBzb21ldGhpbmcgdGhhdCBjYW4gYmUgZGlzYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENGRzgwMjExJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL0tjb25maWc9MTQ9Y29uZmlnIFdFWFRfUFJJVlxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc6Y29uZmlnIENGRzgwMjExXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O2NmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0zOD1jb25maWcgTkw4MDIxMV9URVNUTU9ERVxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTUxLVxubmV0L3dpcmVsZXNzL0tjb25maWc6NTI6Y29uZmlnIENGRzgwMjExX0RFVkVMT1BFUl9XQVJOSU5HU1xubmV0L3dpcmVsZXNzL0tjb25maWctNTMtXHRib29sIFwmIzM0O2VuYWJsZSBkZXZlbG9wZXIgd2FybmluZ3NcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02Ny1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjY4OmNvbmZpZyBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY5LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBjZXJ0aWZpY2F0aW9uIG9udXNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy04OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjg5OmNvbmZpZyBDRkc4MDIxMV9SRVFVSVJFX1NJR05FRF9SRUdEQlxubmV0L3dpcmVsZXNzL0tjb25maWctOTAtXHRib29sIFwmIzM0O3JlcXVpcmUgcmVnZGIgc2lnbmF0dXJlXCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTk4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6OTk6Y29uZmlnIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTAwLVx0Ym9vbCBcJiMzNDthbGxvdyByZWdkYiBrZXlzIHNoaXBwZWQgd2l0aCB0aGUga2VybmVsXCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjExMTpjb25maWcgQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTItXHRzdHJpbmcgXCYjMzQ7YWRkaXRpb25hbCByZWdkYiBrZXkgZGlyZWN0b3J5XCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMS1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjEyMjpjb25maWcgQ0ZHODAyMTFfUkVHX0NFTExVTEFSX0hJTlRTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjMtXHRib29sIFwmIzM0O2NmZzgwMjExIHJlZ3VsYXRvcnkgc3VwcG9ydCBmb3IgY2VsbHVsYXIgYmFzZSBzdGF0aW9uIGhpbnRzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTM0LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTM1OmNvbmZpZyBDRkc4MDIxMV9SRUdfUkVMQVhfTk9fSVJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNi1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgc3VwcG9ydCBmb3IgTk9fSVIgcmVsYXhhdGlvblwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE1OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE1OTpjb25maWcgQ0ZHODAyMTFfREVGQVVMVF9QU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTYwLVx0Ym9vbCBcJiMzNDtlbmFibGUgcG93ZXJzYXZlIGJ5IGRlZmF1bHRcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNjk6Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgRGVidWdGUyBlbnRyaWVzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTc2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc3OmNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3OC1cdGJvb2wgXCYjMzQ7c3VwcG9ydCBDUkRBXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4Ni1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE4Nzpjb25maWcgQ0ZHODAyMTFfV0VYVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSB3aXJlbGVzcyBleHRlbnNpb25zIGNvbXBhdGliaWxpdHlcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTMtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTQ6Y29uZmlnIENGRzgwMjExX0tVTklUX1RFU1Rcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5NS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBjZmc4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYxNwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGEgYGNmZzgwMjExYCBXRVhUIE1vZGlmaWNhdGlvbioqCgpBbHJpZ2h0LCBzbyB0aGUgcGF0Y2ggaXMgdHdlYWtpbmcgYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgLCBhbmQgaXQgbG9va3MgbGlrZSB0aGF0IGZ1bmN0aW9uIGxpdmVzIGluIGB3ZXh0LXNtZS5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgbGV0JiMzOTtzIHNlZSBpZiB0aGlzIGNvZGUgZXZlbiBnZXRzIGNvbXBpbGVkIGluIG15IGN1cnJlbnQgY29uZmlndXJhdGlvbi4mIzM0OyBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBDRkc4MDIxMV9XRVhUYCBpcyBhY3R1YWxseSBkZWZpbmVkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2VzcywgcmlnaHQ/IElmIHRoYXQmIzM5O3Mgbm90IHNldCwgdGhlbiB0aGUgY2hhbmdlcyB0byBgd2V4dC1zbWUuY2AgYXJlIGVmZmVjdGl2ZWx5IGRlYWQgY29kZSwgYW5kIHRoaXMgcGF0Y2ggaXNuJiMzOTt0IHJlbGV2YW50IHRvIG15IHNwZWNpZmljIHNldHVwLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGJ1aWxkIHN5c3RlbSB0byBjb25maXJtIHdoZXRoZXIgYENGRzgwMjExX1dFWFRgIGlzIGVuYWJsZWQuIElmIGl0IGlzbiYjMzk7dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IGFuZCB3aGV0aGVyIHRoaXMgcGF0Y2ggcmVxdWlyZXMgc29tZSByZS1ldmFsdWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3dleHQtc21lXFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvTWFrZWZpbGU9MTM9Y2ZnODAyMTEtJChDT05GSUdfQ0ZHODAyMTFfREVCVUdGUykgJiM0Mzs9IGRlYnVnZnMub1xubmV0L3dpcmVsZXNzL01ha2VmaWxlOjE0OmNmZzgwMjExLSQoQ09ORklHX0NGRzgwMjExX1dFWFQpICYjNDM7PSB3ZXh0LWNvbXBhdC5vIHdleHQtc21lLm9cbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0xNS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDIzCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIHRoZXkgd2VyZSBteSBvd246CgoqKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgYnVpbGQgc3lzdGVtIGFuZCBob3cgdGhlc2UgbW9kdWxlcyByZWxhdGUgdG8gZWFjaCBvdGhlci4gVGhlIGluY2x1c2lvbiBvZiBgQ0ZHODAyMTFfV0VYVGAgaW4gdGhpcyBjb250ZXh0IG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IGl0JiMzOTtzIGRlZmluaXRlbHkgcmVxdWlyZWQgYnkgYHdleHQtc21lLmNgLiBJJiMzOTt2ZSBnb3QgdG8gbWFrZSBhIG1lbnRhbCBub3RlIG9mIHRoYXQgcmVsYXRpb25zaGlwLgoKVGhlbiBJIG1vdmUgb24gdG8gdGhpbmtpbmcgYWJvdXQgYG5sODAyMTEuY2AgYW5kIGB1dGlsLmNgLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhleSYjMzk7cmUgYm90aCBnZXR0aW5nIGNvbXBpbGVkIHVuZGVyIHRoZSBgQ0ZHODAyMTFgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBDRkc4MDIxMWAgaXRzZWxmIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gc3VycHJpc2VzIG9yIGhpZGRlbiBpbXBsaWNhdGlvbnMgZG93biB0aGUgbGluZS4gSSBhbHdheXMgbmVlZCB0byBiZSBhd2FyZSBvZiB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgdGhlIGNvbmZpZyBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZz01PWNvbmZpZyBXRVhUX0NPUkVcbm5ldC93aXJlbGVzcy9LY29uZmlnLTYtXHRkZWZfYm9vbCB5XG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo3Olx0ZGVwZW5kcyBvbiBDRkc4MDIxMV9XRVhUIHx8IFdJUkVMRVNTX0VYVFxubmV0L3dpcmVsZXNzL0tjb25maWctOC1cbm5ldC93aXJlbGVzcy9LY29uZmlnPTk9Y29uZmlnIFdFWFRfUFJPQ1xubmV0L3dpcmVsZXNzL0tjb25maWctMTAtXHRkZWZfYm9vbCB5XG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTpcdGRlcGVuZHMgb24gUFJPQ19GU1xubmV0L3dpcmVsZXNzL0tjb25maWc6MTI6XHRkZXBlbmRzIG9uIFdFWFRfQ09SRVxubmV0L3dpcmVsZXNzL0tjb25maWctMTMtXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWc9MTc9Y29uZmlnIENGRzgwMjExXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O2NmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcJiMzNDtcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5Olx0ZGVwZW5kcyBvbiBSRktJTEwgfHwgIVJGS0lMTFxubmV0L3dpcmVsZXNzL0tjb25maWctMjAtXHRzZWxlY3QgRldfTE9BREVSXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWc9Njg9Y29uZmlnIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xubmV0L3dpcmVsZXNzL0tjb25maWctNjktXHRib29sIFwmIzM0O2NmZzgwMjExIGNlcnRpZmljYXRpb24gb251c1wmIzM0O1xubmV0L3dpcmVsZXNzL0tjb25maWc6NzA6XHRkZXBlbmRzIG9uIEVYUEVSVFxubmV0L3dpcmVsZXNzL0tjb25maWctNzEtXHRkZWZhdWx0IG5cbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz05OT1jb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTAxLVx0ZGVmYXVsdCB5XG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMDI6XHRkZXBlbmRzIG9uIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDMtXHRoZWxwXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWc9MTExPWNvbmZpZyBDRkc4MDIxMV9FWFRSQV9SRUdEQl9LRVlESVJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMi1cdHN0cmluZyBcJiMzNDthZGRpdGlvbmFsIHJlZ2RiIGtleSBkaXJlY3RvcnlcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTM6XHRkZXBlbmRzIG9uIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTQtXHRoZWxwXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWc9MTIyPWNvbmZpZyBDRkc4MDIxMV9SRUdfQ0VMTFVMQVJfSElOVFNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgcmVndWxhdG9yeSBzdXBwb3J0IGZvciBjZWxsdWxhciBiYXNlIHN0YXRpb24gaGludHNcJiMzNDtcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEyNDpcdGRlcGVuZHMgb24gQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjUtXHRoZWxwXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWc9MTM1PWNvbmZpZyBDRkc4MDIxMV9SRUdfUkVMQVhfTk9fSVJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNi1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgc3VwcG9ydCBmb3IgTk9fSVIgcmVsYXhhdGlvblwmIzM0O1xubmV0L3dpcmVsZXNzL0tjb25maWc6MTM3Olx0ZGVwZW5kcyBvbiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzOC1cdGhlbHBcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0xNjk9Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgRGVidWdGUyBlbnRyaWVzXCYjMzQ7XG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzE6XHRkZXBlbmRzIG9uIERFQlVHX0ZTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzItXHRoZWxwXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWc9MTk0PWNvbmZpZyBDRkc4MDIxMV9LVU5JVF9URVNUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTUtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgY2ZnODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xubmV0L3dpcmVsZXNzL0tjb25maWc6MTk2Olx0ZGVwZW5kcyBvbiBLVU5JVFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk3Olx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxubmV0L3dpcmVsZXNzL0tjb25maWctMTk4LVx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjU2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgQ0ZHODAyMTEmIzM5O3MgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJiMzOTttIHNlZWluZywgYENGRzgwMjExYCBpcyBwcmV0dHkgY2xldmVyIGluIGhvdyBpdCBoYW5kbGVzIGl0cyBkZXBlbmRlbmNpZXMsIGVzcGVjaWFsbHkgd2hlbiB0aGlua2luZyBhYm91dCBmdXp6aW5nLiBUaGUga2V5IHRha2Vhd2F5IGlzIHRoZSBjb25kaXRpb25hbCBkZXBlbmRlbmN5IG9uIGBSRktJTExgLiBJdCYjMzk7cyBlaXRoZXIgZGVwZW5kZW50IG9uIGBSRktJTExgIGJlaW5nIGVuYWJsZWQgKm9yKiBpZiBgUkZLSUxMYCBpcyBkaXNhYmxlZCAtIHRoZSBpbXBsaWNhdGlvbiBiZWluZyB0aGF0IGl0IGNhbiBmdW5jdGlvbiBpbiBlaXRoZXIgc2NlbmFyaW8sIG1ha2luZyBpdCB2ZXJzYXRpbGUuCgpOb3csIGZvciBhbnkgcmVhbCB1c2UgaW4gZnV6emluZywgYW5kIEkgbWVhbiAqcmVhbCogZnV6emluZyB0aGF0IGNhbiBhY3R1YWxseSBnZW5lcmF0ZSBzb21lIG1lYW5pbmdmdWwgaW5wdXQsIGBDRkc4MDIxMWAgaGluZ2VzIG9uIGVpdGhlciBgTUFDODAyMTFgIG9yIGBNQUM4MDIxMV9IV1NJTWAuIFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZTsgYENGRzgwMjExYCBpcyBhIGNvbmZpZ3VyYXRpb24gbGF5ZXIsIGFuZCBpdCBuZWVkcyBhIE1BQyBsYXllciB1bmRlcm5lYXRoIHRvIGRvIGFueXRoaW5nIGludGVyZXN0aW5nLiBTaW5jZSBteSBnb2FsIGlzIGZ1enppbmcsIEkmIzM5O20gZ29pbmcgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGBNQUM4MDIxMWAgYW5kIGNvbnNpZGVyIGl0cyBhcmNoaXRlY3R1cmUgaW4gcmVsYXRpb24gdG8gaG93IGl0IGFmZmVjdHMgYENGRzgwMjExYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQzgwMjExJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI6Y29uZmlnIE1BQzgwMjExXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xOT1pZiBNQUM4MDIxMSAhPSBuXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyLVx0Ym9vbFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDpjb25maWcgTUFDODAyMTFfUkNfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2Vcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQxOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00OD1lbmRjaG9pY2Vcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTUxLVx0c3RyaW5nXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NTc9Y29tbWVudCBcJiMzNDtTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBtYWM4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNjktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MDpjb25maWcgTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXHRib29sIFwmIzM0O0VuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTc4LVxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVx0Ym9vbCBcJiMzNDtFbmFibGUgTEVEIHRyaWdnZXJzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctODctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL0tjb25maWctODktXHRib29sIFwmIzM0O0V4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxubmV0L21hYzgwMjExL0tjb25maWc6OTc6Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xubmV0L21hYzgwMjExL0tjb25maWctOTgtXHRib29sIFwmIzM0O1RyYWNlIGFsbCBtYWM4MDIxMSBkZWJ1ZyBtZXNzYWdlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwOS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cdGJvb2wgXCYjMzQ7U2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cdGJvb2wgXCYjMzQ7RG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzMjpjb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTMzLVx0Ym9vbCBcJiMzNDtWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2Mzpjb25maWcgTUFDODAyMTFfSFRfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBIVCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzQtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTc2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5Nzpjb25maWcgTUFDODAyMTFfUFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjEwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxubmV0L21hYzgwMjExL0tjb25maWc6MjM1OmNvbmZpZyBNQUM4MDIxMV9NSFdNUF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjM2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggSFdNUCByb3V0aW5nIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjYwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjgwLVxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXHRib29sIFwmIzM0O1ZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXHRib29sIFwmIzM0O0V4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjMwODpjb25maWcgTUFDODAyMTFfU1RBX0hBU0hfTUFYX1NJWkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cdGludCBcJiMzNDtTdGF0aW9uIGhhc2ggdGFibGUgbWF4aW11bSBzaXplXCYjMzQ7IGlmIE1BQzgwMjExX0RFQlVHX01FTlVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODc4MgoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIHRoZSBNQUM4MDIxMSBFY29zeXN0ZW0qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gdGhlIG5ldHdvcmtpbmcgc3RhY2sgaGVyZSwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBJRUVFIDgwMi4xMSBpbXBsZW1lbnRhdGlvbi4gSSYjMzk7bSByZWNhbGxpbmcgdGhhdCBgTUFDODAyMTFgIGlzIHRoZSBjb3JlLCBnZW5lcmljIGZyYW1ld29yayBmb3IgODAyLjExIGZ1bmN0aW9uYWxpdHkuIE5vdywgSSBuZWVkIHRvIGNoZWNrIG91dCBhIHNwZWNpZmljIGNvbXBvbmVudCwgYW5kIHRoYXQgd291bGQgYmUgYE1BQzgwMjExX0hXU0lNYC4gSSBiZWxpZXZlIHRoaXMgaXMgdGhhdCBzb2Z0d2FyZSBzaW11bGF0b3IgZm9yIGVtdWxhdGluZyB0aGUgYmVoYXZpb3Igb2YgODAyLjExIHJhZGlvcywgc28gSSYjMzk7bGwgc2VlIHdoYXQgaXQmIzM5O3MgYWxsIGFib3V0LiBMZXQmIzM5O3MgZGVsdmUgaW4gYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQzgwMjExX0hXU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFjODAyMTFfaHdzaW0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwNTUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgV2lyZWxlc3MgRHJpdmVyIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmluZCB0aGUgcmVsZXZhbnQgY29kZSwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gYE1BQzgwMjExX0hXU0lNYC4gSSBrbm93IGl0JiMzOTtzIGEgd2lyZWxlc3MgZHJpdmVyIHNpbXVsYXRpb24sIHdoaWNoIG1lYW5zIGl0IGxpa2VseSByZXNpZGVzIHdpdGhpbiB0aGUgYnJvYWRlciB3aXJlbGVzcyBkcml2ZXIgZnJhbWV3b3JrLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGNoZWNrIHRoZSB0eXBpY2FsIGxvY2F0aW9ucyBmb3Igd2lyZWxlc3MgZHJpdmVycy4gSSYjMzk7ZCBzdGFydCBieSBsb29raW5nIGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFjODAyMTFfaHdzaW0vYCBkaXJlY3RvcnkuIFRoaXMgc2VlbXMgbGlrZSBhIGxpa2VseSBjYW5kaWRhdGUgZ2l2ZW4gdGhlIHNwZWNpZmljIG5hbWluZyBjb252ZW50aW9uIHRoYXQgaW5jbHVkZXMgYGh3c2ltYC4gSG93ZXZlciwgSSYjMzk7bSBhbHNvIGdvaW5nIHRvIGNhc3QgYSB3aWRlciBuZXQgYW5kIGNvbnNpZGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9gIG1vcmUgZ2VuZXJhbGx5LiBJdCYjMzk7cyBwb3NzaWJsZSB0aGUgc2ltdWxhdGlvbiBjb2RlIGlzIG9yZ2FuaXplZCBkaWZmZXJlbnRseSBvciBwZXJoYXBzIGEgbW9yZSBnZW5lcmFsIGRyaXZlciBjb250YWlucyB0aGUgc2ltdWxhdGlvbiBmdW5jdGlvbmFsaXR5LiBUaGUgYnJvYWRlciBwYXRoIHdpbGwgaGVscCBlbnN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYSBwb3RlbnRpYWxseSBtb3JlIGVuY29tcGFzc2luZyBpbXBsZW1lbnRhdGlvbi4gRXNzZW50aWFsbHksIEkgd2FudCB0byBiZSB0aG9yb3VnaCBpbiBteSBpbml0aWFsIHNlYXJjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQzgwMjExX0hXU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZzoxOmNvbmZpZyBNQUM4MDIxMV9IV1NJTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxMVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDA5CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgcHJvdmlkZWQgdGV4dDoKCioqSW52ZXN0aWdhdGluZyB0aGUgS2NvbmZpZyBGaWxlIGZvciBWaXJ0dWFsIFdpcmVsZXNzIERyaXZlcnMqKgoKT2theSwgc28gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwmIzM5O3Mgd2lyZWxlc3MgbmV0d29ya2luZyBzZXR1cC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB2aXJ0dWFsIGRyaXZlcnMuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkga25vdyB0aGF0IGBLY29uZmlnYCBmaWxlcyBhcmUgdGhlIGJhY2tib25lIG9mIHRoZSBrZXJuZWwmIzM5O3MgYnVpbGQgc3lzdGVtLCBkZWZpbmluZyBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoZXJlZm9yZSwgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWdgIGZpbGUuIFRoaXMgaXMgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCB0aGUgc2V0dGluZ3MgdGhhdCBnb3Zlcm4gdGhlIGNvbXBpbGF0aW9uIGFuZCBpbmNsdXNpb24gb2YgdGhlc2UgdmlydHVhbCB3aXJlbGVzcyBjb21wb25lbnRzLiBJdCBzaG91bGQgY29udGFpbiB0aGluZ3MgbGlrZToKCiogICBUaGUgbWFpbiAmIzM0O1ZpcnR1YWwgV2lyZWxlc3MmIzM0OyBvcHRpb24gaXRzZWxmLgoqICAgU3BlY2lmaWMgb3B0aW9ucyBmb3IgdmFyaW91cyB2aXJ0dWFsIGRyaXZlciBmZWF0dXJlcy4KKiAgIERlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcyBvciBoYXJkd2FyZS4KKiAgIEhlbHAgdGV4dCB0byBndWlkZSB1c2VycyBpbiBtYWtpbmcgdGhlIHJpZ2h0IGNob2ljZXMuCgpCeSBleGFtaW5pbmcgdGhpcyBLY29uZmlnLCBJIGNhbiBxdWlja2x5IGdldCBhIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGF2YWlsYWJsZSwgaG93IGl0JiMzOTtzIGVuYWJsZWQsIGFuZCBhbnkgcHJlcmVxdWlzaXRlcy4gSXQgc2hvdWxkIGJlIGEgcHJldHR5IGRpcmVjdCByb3V0ZSB0byB1bmRlcnN0YW5kIGhvdyB0byBlbmFibGUgYW5kIGNvbmZpZ3VyZSB0aGVzZSB2aXJ0dWFsIGRyaXZlcnMuIFRpbWUgdG8gdGFrZSBhIGxvb2shCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnPTE9Y29uZmlnIE1BQzgwMjExX0hXU0lNXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MzpcdGRlcGVuZHMgb24gTUFDODAyMTFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZy00LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZz0xND1jb25maWcgVklSVF9XSUZJXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMTUtXHR0cmlzdGF0ZSBcJiMzNDtXaWZpIHdyYXBwZXIgZm9yIGV0aGVybmV0IGRyaXZlcnNcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZzoxNjpcdGRlcGVuZHMgb24gQ0ZHODAyMTFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZy0xNy1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTg5OAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlcGVuZGVuY3kgQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBNQUM4MDIxMV9IV1NJTWAgYW5kIGl0JiMzOTtzIHByZXR0eSBjbGVhciwgYXQgYSBnbGFuY2UsIHRoYXQgaXQmIzM5O3MgYnVpbHQgb24gdG9wIG9mIGBNQUM4MDIxMWAuIFRoYXQgbWFrZXMgc2Vuc2U7IGhhcmR3YXJlIHNpbXVsYXRpb24gdXN1YWxseSBpbnZvbHZlcyBpbnRlcmFjdGluZyB3aXRoIGEgTUFDIGxheWVyLiBOb3csIGBNQUM4MDIxMWAgaXRzZWxmLi4uIGFoLCBpdCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAuIFRoYXQmIzM5O3Mgbm8gc3VycHJpc2UgZWl0aGVyLCBnaXZlbiB0aGF0IGBDRkc4MDIxMWAgaGFuZGxlcyB0aGUgY29uZmlndXJhdGlvbiBpbnRlcmZhY2UgZm9yIHdpcmVsZXNzIGRldmljZXMuIE5vdyB0aGF0IEkga25vdyB0aGVzZSByZWxhdGlvbnNoaXBzLCBsZXQgbWUganVzdCBkaXZlIGRlZXBlciBpbnRvIHRoZSBgTUFDODAyMTFgIGRlcGVuZGVuY2llcyB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIHN1cnByaXNlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyB3aG9sZSBzdGFjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnPTI9Y29uZmlnIE1BQzgwMjExXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQ6XHRkZXBlbmRzIG9uIENGRzgwMjExXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01LVx0c2VsZWN0IENSWVBUT1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE2PWNvbW1lbnQgXCYjMzQ7Q0ZHODAyMTEgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgTUFDODAyMTFcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3Olx0ZGVwZW5kcyBvbiBDRkc4MDIxMT1uXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOC1cbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2Vcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMyLVx0cHJvbXB0IFwmIzM0O0RlZmF1bHQgcmF0ZSBjb250cm9sIGFsZ29yaXRobVwmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MzM6XHRkZXBlbmRzIG9uIE1BQzgwMjExX0hBU19SQ1xubmV0L21hYzgwMjExL0tjb25maWctMzQtXHRkZWZhdWx0IE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00MT1jb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctNDItXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7XG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MzpcdGRlcGVuZHMgb24gTUFDODAyMTFfUkNfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ0LVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXCYjMzQ7U29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXCYjMzQ7XG5uZXQvbWFjODAyMTEvS2NvbmZpZzo1ODpcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IE1BQzgwMjExX0hBU19SQz1uXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTYwPWNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBtYWM4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MjpcdGRlcGVuZHMgb24gS1VOSVRcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYzOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctNjQtXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTcwPWNvbmZpZyBNQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03MS1cdGJvb2wgXCYjMzQ7RW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XCYjMzQ7XG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MjpcdGRlcGVuZHMgb24gTUFDODAyMTFcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTczLVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTc5PWNvbmZpZyBNQUM4MDIxMV9MRURTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7RW5hYmxlIExFRCB0cmlnZ2Vyc1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6ODE6XHRkZXBlbmRzIG9uIE1BQzgwMjExXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4MjpcdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgzLVx0c2VsZWN0IExFRFNfVFJJR0dFUlNcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz04OD1jb25maWcgTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL0tjb25maWctODktXHRib29sIFwmIzM0O0V4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6OTA6XHRkZXBlbmRzIG9uIE1BQzgwMjExIFx1MDAyNlx1MDAyNiBDRkc4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05MS1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz05Nz1jb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05OC1cdGJvb2wgXCYjMzQ7VHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXCYjMzQ7XG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5OTpcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IFRSQUNJTkdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwMC1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xMTA9bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXHRib29sIFwmIzM0O1NlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMjpcdGRlcGVuZHMgb24gTUFDODAyMTFcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMy1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xMTY9Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0RvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExODpcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWctMTE5LVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTEzMj1jb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTMzLVx0Ym9vbCBcJiMzNDtWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzNDpcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWctMTM1LVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE0Mz1jb25maWcgTUFDODAyMTFfTUxNRV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTQ0LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1hbmFnZWQgTUxNRSBvdXRwdXRcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE0NTpcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWctMTQ2LVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE1ND1jb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXHRib29sIFwmIzM0O1ZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NjpcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWctMTU3LVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE2Mz1jb25maWcgTUFDODAyMTFfSFRfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBIVCBkZWJ1Z2dpbmdcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2NTpcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWctMTY2LVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE3NT1jb25maWcgTUFDODAyMTFfT0NCX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzYtXHRib29sIFwmIzM0O1ZlcmJvc2UgT0NCIGRlYnVnZ2luZ1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MTc3Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzgtXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MTg2PWNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXHRib29sIFwmIzM0O1ZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE4ODpcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWctMTg5LVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5Nz1jb25maWcgTUFDODAyMTFfUFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5OTpcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWctMjAwLVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTIwOT1jb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMTAtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwZWVyIGxpbmsgZGVidWdnaW5nXCYjMzQ7XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTE6XHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxMjpcdGRlcGVuZHMgb24gTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL0tjb25maWctMjEzLVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTIyMj1jb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXCYjMzQ7XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjQ6XHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyNTpcdGRlcGVuZHMgb24gTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL0tjb25maWctMjI2LVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTIzNT1jb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNzpcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWc6MjM4Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzktXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MjQ4PWNvbmZpZyBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0OS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHN5bmNocm9uaXphdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1MDpcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWc6MjUxOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTItXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MjU5PWNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjYwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXCYjMzQ7XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNjE6XHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI2MjpcdGRlcGVuZHMgb24gTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL0tjb25maWctMjYzLVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTI3MD1jb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjcxLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MjcyOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzM6XHRkZXBlbmRzIG9uIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3NC1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0yODE9Y29uZmlnIE1BQzgwMjExX1RETFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4Mi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBURExTIGRlYnVnZ2luZ1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MjgzOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODQtXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MjkzPWNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xubmV0L21hYzgwMjExL0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5NTpcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWc6Mjk2Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTctXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMjI2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2gmIzM5O3MgSW1wYWN0KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSBzZWUgaXQmIzM5O3MgdGllZCB0byBgTUFDODAyMTFfSFdTSU1gLCB3aGljaCwgb2YgY291cnNlLCByZWxpZXMgb24gYE1BQzgwMjExYCwgYW5kIHRodXMsIGBDRkc4MDIxMWAuIFRoYXQmIzM5O3MgdGhlIGNvcmUuIFRoZSBwYXRjaCBmb2N1c2VzIG9uIG1vZGlmeWluZyBgbmw4MDIxMS5jYCBhbmQgYHdleHQtc21lLmNgLCBib3RoIGNydWNpYWwgY29tcG9uZW50cyBvZiBgQ0ZHODAyMTFgLCBlc3BlY2lhbGx5IHNpbmNlIGB3ZXh0LXNtZS5jYCBhbHNvIGhhcyBhIGRlcGVuZGVuY3kgb24gYENGRzgwMjExX1dFWFRgLgoKVGhlIHJlYWwgbWVhdCBvZiB0aGUgY2hhbmdlcyBpbnZvbHZlcyBhZGRpbmcgYSBuZXcgZnVuY3Rpb24sIGBjZmc4MDIxMV92YWxpZGF0ZV9pZXNgLiBJdCBsb29rcyBsaWtlIHRoaXMgbmV3IHZhbGlkYXRpb24gZnVuY3Rpb24gaXMgYmVpbmcgaW50ZWdyYXRlZCBpbnRvIHNldmVyYWwga2V5IGFyZWFzOiBgdmFsaWRhdGVfYmVhY29uX2hlYWRgIGFuZCBgdmFsaWRhdGVfaWVfYXR0cmAgd2l0aGluIGBubDgwMjExLmNgLCBhbmQgYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgIHdpdGhpbiBgd2V4dC1zbWUuY2AuIFRoZXNlIGFyZSBpbXBvcnRhbnQgYmVjYXVzZSB0aGV5IGFyZSB0aGUgdXNlci1zcGFjZSBpbnRlcmZhY2VzOiB0aGUgbmV0bGluayAobmw4MDIxMSkgcGF0aCBhbmQgdGhlIGlvY3RsICh3ZXh0KSBwYXRoLCByZXNwZWN0aXZlbHkuCgpSaWdodCBub3csIG15IGZvY3VzIGlzIG9uIGB2YWxpZGF0ZV9iZWFjb25faGVhZGAgYW5kIGB2YWxpZGF0ZV9pZV9hdHRyYCB3aXRoaW4gYG5sODAyMTEuY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9uIGlzIGJlaW5nIHVzZWQgaW4gdGhvc2UgY29udGV4dHMuIExldCYjMzk7cyBkaWcgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZhbGlkYXRlX2JlYWNvbl9oZWFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL25sODAyMTEuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTIyMT1jZmc4MDIxMV9nZXRfZGV2X2Zyb21faW5mbyhzdHJ1Y3QgbmV0ICpuZXRucywgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyNS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjI2OnN0YXRpYyBpbnQgdmFsaWRhdGVfYmVhY29uX2hlYWQoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjI3LVx0XHRcdFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9NjM0PW5sODAyMTFfczFnX3Nob3J0X2JlYWNvbltOTDgwMjExX1MxR19TSE9SVF9CRUFDT05fQVRUUl9NQVggJiM0MzsgMV0gPSB7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTYzNS1cdFtOTDgwMjExX1MxR19TSE9SVF9CRUFDT05fQVRUUl9IRUFEXSA9XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjYzNjpcdFx0TkxBX1BPTElDWV9WQUxJREFURV9GTihOTEFfQklOQVJZLCB2YWxpZGF0ZV9iZWFjb25faGVhZCxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNjM3LVx0XHRcdFx0ICAgICAgIElFRUU4MDIxMV9NQVhfREFUQV9MRU4pLFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9Njg5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBubDgwMjExX3BvbGljeVtOVU1fTkw4MDIxMV9BVFRSXSA9IHtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTczNi1cdFtOTDgwMjExX0FUVFJfQkVBQ09OX0hFQURdID1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NzM3Olx0XHROTEFfUE9MSUNZX1ZBTElEQVRFX0ZOKE5MQV9CSU5BUlksIHZhbGlkYXRlX2JlYWNvbl9oZWFkLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy03MzgtXHRcdFx0XHQgICAgICAgSUVFRTgwMjExX01BWF9EQVRBX0xFTiksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0Mjg3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgTmV0bGluayBBdHRyaWJ1dGUgVmFsaWRhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGZsYWdzIGB2YWxpZGF0ZV9iZWFjb25faGVhZGAgYW5kIGB2YWxpZGF0ZV9pZV9hdHRyYCBhcyBzcGVjaWZpYyB2YWxpZGF0aW9uIGZ1bmN0aW9ucyB3aXRoaW4gYSBuZXRsaW5rIGNvbnRleHQuIFRoZSB1c2Ugb2YgJiMzNDt2YWxpZGF0ZSYjMzQ7IHNjcmVhbXMgdGhhdCB0aGVzZSBhcmUgZGVzaWduZWQgdG8gZW5mb3JjZSBzcGVjaWZpYyBydWxlcyBvciBjb25zdHJhaW50cyBvbiBpbmNvbWluZyBuZXRsaW5rIGF0dHJpYnV0ZXMuIEnigJltIGd1ZXNzaW5nLCBnaXZlbiB0aGUgbmFtZXMsIHRoYXQgYHZhbGlkYXRlX2JlYWNvbl9oZWFkYCBwcm9iYWJseSBmb2N1c2VzIG9uIHZhbGlkYXRpbmcgdGhlIGhlYWRlciBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIGJlYWNvbiBmcmFtZXMsIHBlcmhhcHMgZW5zdXJpbmcgY29ycmVjdCBmaWVsZCBsZW5ndGhzLCBtYWdpYyBudW1iZXJzLCBvciBmbGFnIHNldHRpbmdzLiBXZSYjMzk7cmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBjcml0aWNhbCBjb250cm9sIGluZm9ybWF0aW9uIGhlcmUsIGdpdmVuIHRoZSBpbXBvcnRhbmNlIG9mIGEgYmVhY29uJiMzOTtzIHN0cnVjdHVyZS4KCmB2YWxpZGF0ZV9pZV9hdHRyYC4uLiB3ZWxsLCB0aGF04oCZcyB3aGVyZSB0aGluZ3MgY2FuIGdldCBpbnRlcmVzdGluZy4gJiMzNDtJRSYjMzQ7IG9mIGNvdXJzZSBzdGFuZHMgZm9yIEluZm9ybWF0aW9uIEVsZW1lbnQuIFRoaXMgZnVuY3Rpb24gaXMgdGFza2VkIHdpdGggZW5zdXJpbmcgdGhlc2UgaW5mb3JtYXRpb24gZWxlbWVudHMgY29udGFpbmVkIGluIGEgbmV0bGluayBtZXNzYWdlIGFkaGVyZSB0byB0aGUgZGVmaW5lZCBzdGFuZGFyZHMsIG9yIHBlcmhhcHMgYXBwbGljYXRpb24tc3BlY2lmaWMgY29uc3RyYWludHMuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyBtb3JlIGFib3V0IHRoZSBuZXRsaW5rIGF0dHJpYnV0ZXMgaW52b2x2ZWQsIG9mIGNvdXJzZSwgYnV0IGJhc2VkIHNvbGVseSBvbiBuYW1pbmcsIHRoaXMgY291bGQgYmUgYW55dGhpbmcgZnJvbSBwYXJzaW5nIGFuZCB2YWxpZGF0aW5nIGEgc3BlY2lmaWMgSUUgdHlwZSBsaWtlIHRoZSBTU0lEIG9yIFN1cHBvcnRlZCBSYXRlcywgb3Igc29tZXRoaW5nIGZhciBtb3JlIGNvbXBsZXgsIHBvdGVudGlhbGx5IGludm9sdmluZyB2ZW5kb3Itc3BlY2lmaWMgSUVzLgoKTXkgYXNzdW1wdGlvbiBpcyB0aGF0IGJvdGggZnVuY3Rpb25zIGFyZSBsaWtlbHkgcGFydCBvZiBhIGxhcmdlciBuZXRsaW5rIG1lc3NhZ2UgcHJvY2Vzc2luZyBwaXBlbGluZSwgd2hlcmUgZWFjaCBhdHRyaWJ1dGUgKG9yIGdyb3VwIG9mIGF0dHJpYnV0ZXMpIHVuZGVyZ29lcyBzcGVjaWZpYyB2YWxpZGF0aW9uIHN0ZXBzIHRvIGVuc3VyZSBkYXRhIGludGVncml0eSBhbmQgcHJldmVudCBwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIG9yIHN5c3RlbSBpbnN0YWJpbGl0eS4gV2l0aG91dCBtb3JlIGNvbnRleHQsIEkmIzM5O2QgaW1hZ2luZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGVpdGhlciBkcml2ZXItbGV2ZWwgZnVuY3Rpb25hbGl0eSBvciBtYXliZSBzb21ldGhpbmcgZGVlcGVyIHdpdGhpbiBhIG5ldHdvcmsgbWFuYWdlbWVudCBzdGFjay4gVGhlIGRldmlsLCBhcyBhbHdheXMsIGlzIGluIHRoZSBkZXRhaWxzLCBzbyBJJiMzOTtkIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlYmFzZSBhbmQgYW5hbHl6ZSBleGFjdGx5IHdoYXQgdGhleSBhcmUgY2hlY2tpbmcgYW5kIGhvdyB0aGV5IGFyZSBsZXZlcmFnZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZhbGlkYXRlX2llX2F0dHImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9ubDgwMjExLmM9MjI2PXN0YXRpYyBpbnQgdmFsaWRhdGVfYmVhY29uX2hlYWQoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2Ny1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjY4OnN0YXRpYyBpbnQgdmFsaWRhdGVfaWVfYXR0cihjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjktXHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTYzND1ubDgwMjExX3MxZ19zaG9ydF9iZWFjb25bTkw4MDIxMV9TMUdfU0hPUlRfQkVBQ09OX0FUVFJfTUFYICYjNDM7IDFdID0ge1xuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNjM4LVx0W05MODAyMTFfUzFHX1NIT1JUX0JFQUNPTl9BVFRSX1RBSUxdID1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NjM5Olx0XHROTEFfUE9MSUNZX1ZBTElEQVRFX0ZOKE5MQV9CSU5BUlksIHZhbGlkYXRlX2llX2F0dHIsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTY0MC1cdFx0XHRcdCAgICAgICBJRUVFODAyMTFfTUFYX0RBVEFfTEVOKSxcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTY2Mj1ubDgwMjExX25hbl9jb25mX3BvbGljeVtOTDgwMjExX05BTl9DT05GX0FUVFJfTUFYICYjNDM7IDFdID0ge1xuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNjY4LVx0W05MODAyMTFfTkFOX0NPTkZfVkVORE9SX0VMRU1TXSA9XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjY2OTpcdFx0TkxBX1BPTElDWV9WQUxJREFURV9GTihOTEFfQklOQVJZLCB2YWxpZGF0ZV9pZV9hdHRyLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy02NzAtXHRcdFx0XHQgICAgICAgSUVFRTgwMjExX01BWF9EQVRBX0xFTiksXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz02ODk9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IG5sODAyMTFfcG9saWN5W05VTV9OTDgwMjExX0FUVFJdID0ge1xuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNzM5LVx0W05MODAyMTFfQVRUUl9CRUFDT05fVEFJTF0gPVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo3NDA6XHRcdE5MQV9QT0xJQ1lfVkFMSURBVEVfRk4oTkxBX0JJTkFSWSwgdmFsaWRhdGVfaWVfYXR0cixcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNzQxLVx0XHRcdFx0ICAgICAgIElFRUU4MDIxMV9NQVhfREFUQV9MRU4pLFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNzc4LVx0W05MODAyMTFfQVRUUl9JRV0gPSBOTEFfUE9MSUNZX1ZBTElEQVRFX0ZOKE5MQV9CSU5BUlksXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjc3OTpcdFx0XHRcdFx0XHQgICB2YWxpZGF0ZV9pZV9hdHRyLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy03ODAtXHRcdFx0XHRcdFx0ICAgSUVFRTgwMjExX01BWF9EQVRBX0xFTiksXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy04NDQtXHRbTkw4MDIxMV9BVFRSX0lFX1BST0JFX1JFU1BdID1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6ODQ1Olx0XHROTEFfUE9MSUNZX1ZBTElEQVRFX0ZOKE5MQV9CSU5BUlksIHZhbGlkYXRlX2llX2F0dHIsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTg0Ni1cdFx0XHRcdCAgICAgICBJRUVFODAyMTFfTUFYX0RBVEFfTEVOKSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtODQ3LVx0W05MODAyMTFfQVRUUl9JRV9BU1NPQ19SRVNQXSA9XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjg0ODpcdFx0TkxBX1BPTElDWV9WQUxJREFURV9GTihOTEFfQklOQVJZLCB2YWxpZGF0ZV9pZV9hdHRyLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy04NDktXHRcdFx0XHQgICAgICAgSUVFRTgwMjExX01BWF9EQVRBX0xFTiksXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz02NTA0PW5sODAyMTFfcGFyc2VfbWJzc2lkX2VsZW1zKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBubGF0dHIgKmF0dHJzLFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNjUxNy1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NjUxODpcdFx0cmV0ID0gdmFsaWRhdGVfaWVfYXR0cihubF9lbGVtcywgZXh0YWNrKTtcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNjUxOS1cdFx0aWYgKHJldClcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTY1NDE9bmw4MDIxMV9wYXJzZV9ybnJfZWxlbXMoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5sYXR0ciAqYXR0cnMsXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy02NTUxLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo2NTUyOlx0XHRyZXQgPSB2YWxpZGF0ZV9pZV9hdHRyKG5sX2VsZW1zLCBleHRhY2spO1xubmV0L3dpcmVsZXNzL25sODAyMTEuYy02NTUzLVx0XHRpZiAocmV0KVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTAyMTY9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5XG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xMDIyNC1cdFtOTDgwMjExX01FU0hfU0VUVVBfSUVdID1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTAyMjU6XHRcdE5MQV9QT0xJQ1lfVkFMSURBVEVfRk4oTkxBX0JJTkFSWSwgdmFsaWRhdGVfaWVfYXR0cixcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTAyMjYtXHRcdFx0XHQgICAgICAgSUVFRTgwMjExX01BWF9EQVRBX0xFTiksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MDkyCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29kZSBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBvdmVyIHRoZXNlIGNoYW5nZXMsIGFuZCBteSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGUgZnVuY3Rpb25zIGludm9sdmVkIGFyZSBkZWZpbml0ZWx5IHdvcmtpbmcgYXMgZXhwZWN0ZWQ7IHRoZXkgYXJlIHJlYWNoYWJsZSBhbmQgYXBwZWFyIHRvIGZ1bmN0aW9uIHByb3Blcmx5LiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIHJlZmFjdG9yaW5nIHRoZSBJRSAoSW5mb3JtYXRpb24gRWxlbWVudCkgdmFsaWRhdGlvbiBsb2dpYyBmb3IgdGhlIElFIHZhbGlkYXRpb24gaW50byBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYC4gVGhlbiwgaXQmIzM5O3MgaW50ZWdyYXRlZCB0aGlzIHJlZmFjdG9yZWQgdmFsaWRhdGlvbiBmdW5jdGlvbiBpbnRvIGBjZmc4MDIxMV93ZXh0X3Npd2dlbmllYCB3aXRoaW4gYHdleHQtc21lLmNgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGFpbWVkIGF0IGFkZGluZyB2YWxpZGF0aW9uIHRvIGBjZmc4MDIxMV93ZXh0X3Npd2dlbmllYCwgc3BlY2lmaWNhbGx5LiBJIHNob3VsZCB0YWtlIGEgbG9vayBhdCB0aGUgYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgIGZ1bmN0aW9uIGRpcmVjdGx5LiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIGludGVncmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZmc4MDIxMV93ZXh0X3Npd2dlbmllJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL3dleHQtc21lLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL3dleHQtc21lLmM9MjczPWludCBjZmc4MDIxMV9tZ2Rfd2V4dF9naXdhcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jLTI5Ny1cbm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jOjI5ODppbnQgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L3dpcmVsZXNzL3dleHQtc21lLmMtMjk5LVx0XHRcdCAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NTYzCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gdGhlIHF1ZXN0aW9uIGlzOiBpcyBgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZWAgYWN0dWFsbHkgZXhwb3J0ZWQgZm9yIHVzZSBleHRlcm5hbGx5LCBvciBpcyBpdCBtZXJlbHkgbHVya2luZyBpbnNpZGUgYSBzdHJ1Y3Qgc29tZXdoZXJlPyBUaGF0JiMzOTtzIHRoZSBjcnV4IG9mIGl0LiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgb2YgaXRzIGFjY2Vzc2liaWxpdHkuIElzIGl0IGEgcHVibGljLWZhY2luZyBBUEkgZnVuY3Rpb24sIG9yIGlzIGl0IG1vcmUgb2YgYSBoZWxwZXIsIGludGVybmFsIHRvIGEgcGFydGljdWxhciBtb2R1bGUgb3Igc3RydWN0dXJlIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIHdpcmVsZXNzIHN1YnN5c3RlbT8gS25vd2luZyB0aGlzIGZ1bmRhbWVudGFsbHkgaW1wYWN0cyBob3cgSSB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgaW1wYWN0IG9uIG90aGVyIGNvbXBvbmVudHMgYW5kIGZ1dHVyZSBrZXJuZWwgZGV2ZWxvcG1lbnQuIEkgbmVlZCB0byBjaGVjayB0aGUgc3ltYm9sIHRhYmxlLCB0aGUgcmVsZXZhbnQgaGVhZGVyIGZpbGVzLCBhbmQgcG9zc2libHkgdHJhY2UgaXRzIHVzYWdlIHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZSB0byBnZXQgYSBjbGVhciBwaWN0dXJlLiBUaGUgaW1wbGljYXRpb25zIGZvciB0aGUgZGVzaWduIGFuZCBtYWludGFpbmFiaWxpdHkgb2YgdGhlIHdpcmVsZXNzIHN0YWNrLCBhbmQgcGFydGljdWxhcmx5IHRoZSB3ZXh0IGNvbXBhdGliaWxpdHkgbGF5ZXIsIGRlcGVuZCBvbiB0aGUgYW5zd2VyLiBJZiBpdCYjMzk7cyBpbnRlcm5hbCwgcmVmYWN0b3Jpbmcgb3IgcmVwbGFjaW5nIGl0IGJlY29tZXMgYSBsZXNzIHNlbnNpdGl2ZSBpc3N1ZSwgdmVyc3VzIGFuIGV4dGVybmFsbHktZmFjaW5nIGZ1bmN0aW9uIHRoYXQgbWlnaHQgYnJlYWsgdXNlcnNwYWNlIGJpbmFyaWVzLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBkZWVwZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NmZzgwMjExX3dleHRfc2l3Z2VuaWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy93ZXh0LWNvbXBhdC5jPTE0ODQ9c3RhdGljIGNvbnN0IGl3X2hhbmRsZXIgY2ZnODAyMTFfaGFuZGxlcnNbXSA9IHtcbi0tXG5uZXQvd2lyZWxlc3Mvd2V4dC1jb21wYXQuYy0xNTExLVx0SVdfSEFORExFUihTSU9DR0lXUE9XRVIsXHRjZmc4MDIxMV93ZXh0X2dpd3Bvd2VyKSxcbm5ldC93aXJlbGVzcy93ZXh0LWNvbXBhdC5jOjE1MTI6XHRJV19IQU5ETEVSKFNJT0NTSVdHRU5JRSxcdGNmZzgwMjExX3dleHRfc2l3Z2VuaWUpLFxubmV0L3dpcmVsZXNzL3dleHQtY29tcGF0LmMtMTUxMy1cdElXX0hBTkRMRVIoU0lPQ1NJV0FVVEgsXHRcdGNmZzgwMjExX3dleHRfc2l3YXV0aCksXG4tLVxubmV0L3dpcmVsZXNzL3dleHQtY29tcGF0Lmg9NDY9aW50IGNmZzgwMjExX3dleHRfc2l3bWxtZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC93aXJlbGVzcy93ZXh0LWNvbXBhdC5oLTQ4LVx0XHRcdCAgdW5pb24gaXdyZXFfZGF0YSAqd3JxdSwgY2hhciAqZXh0cmEpO1xubmV0L3dpcmVsZXNzL3dleHQtY29tcGF0Lmg6NDk6aW50IGNmZzgwMjExX3dleHRfc2l3Z2VuaWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC93aXJlbGVzcy93ZXh0LWNvbXBhdC5oLTUwLVx0XHRcdCAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sXG4tLVxubmV0L3dpcmVsZXNzL3dleHQtc21lLmM9MjczPWludCBjZmc4MDIxMV9tZ2Rfd2V4dF9naXdhcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jLTI5Ny1cbm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jOjI5ODppbnQgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L3dpcmVsZXNzL3dleHQtc21lLmMtMjk5LVx0XHRcdCAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MzE5CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIFNJT0NTSVdHRU5JRSBpb2N0bCBIYW5kbGVyKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IGZpeGluZyBhIHByb2JsZW0gd2l0aCBgU0lPQ1NJV0dFTklFYC4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIHRoZXJlJiMzOTtzIGEgYnVnIHRoYXQgYWxsb3dzIGl0IHRvIGFjY2VwdCBpbnZhbGlkIElFcywgd2hpY2ggaXMgYSBiaWcgZGVhbC4gRGVmaW5pdGVseSB3b3J0aCBhIGZ1enppbmcgY2FtcGFpZ24gdG8gaWRlbnRpZnkgYW55IHZ1bG5lcmFiaWxpdGllcy4KClRoZSBrZXkgc3ltYm9scyBJIG5lZWQgdG8gZm9jdXMgb24gZm9yIHRoaXMgYXJlIGBjZmc4MDIxMV92YWxpZGF0ZV9pZXNgLCBgdmFsaWRhdGVfYmVhY29uX2hlYWRgLCBgdmFsaWRhdGVfaWVfYXR0cmAsIGFuZCBhbHNvLCBvYnZpb3VzbHksIGBjZmc4MDIxMV93ZXh0X3Npd2dlbmllYC4gVGhvc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMgYW5kIHZhbGlkYXRpb24gZnVuY3Rpb25zIEkmIzM5O2xsIG5lZWQgdG8gaGl0LgoKRm9yIHRoZSBrZXJuZWwgY29uZmlncywgSSYjMzk7bGwgbmVlZCBgQ0ZHODAyMTFgLCBgQ0ZHODAyMTFfV0VYVGAsIGBNQUM4MDIxMWAsIGFuZCBgTUFDODAyMTFfSFdTSU1gLiBJIHdhcyBicmllZmx5IHNlY29uZC1ndWVzc2luZyBgTUFDODAyMTFfSFdTSU1gLCB0aGlua2luZyBtYXliZSBpdCB3YXNuJiMzOTt0IHN0cmljdGx5ICpyZXF1aXJlZCogZm9yIG5ldGxpbmsvaW9jdGwgZnV6emluZyBvZiBgQ0ZHODAyMTFgLCBidXQgaXQmIzM5O3MgcmVhbGx5IHRoZSBlYXNpZXN0IHdheSB0byBzcGluIHVwIHNvbWUgd2lyZWxlc3MgZGV2aWNlcy4KCkxldCYjMzk7cyBxdWlja2x5IGNvbmZpcm0sIHllcywgYE1BQzgwMjExX0hXU0lNYCBpcyBzdGlsbCB0aGUgYmVzdCBhcHByb2FjaC4gSXQgcHJvdmlkZXMgdGhvc2UgY29udmVuaWVudCBmYWtlIHdpcmVsZXNzIGRldmljZXMgdGhhdCBJIGNhbiBpbnRlcmFjdCB3aXRoIHVzaW5nIGJvdGggYG5sODAyMTFgIGFuZCBgd2V4dGAsIHdoaWNoIGlzIHBlcmZlY3QgZm9yIHRoaXMuCgpBbmQsIHJpZ2h0LCBJJiMzOTtsbCBkZWZpbml0ZWx5IG5lZWQgYENGRzgwMjExX1dFWFRgIGVuYWJsZWQuIEkgY2FuJiMzOTt0IGZvcmdldCB0aGF0IGl0JiMzOTtzIG5lZWRlZCBmb3IgdGhlIGB3ZXh0LXNtZS5jYCBjb21wb25lbnQuIEFuZCB0aGF0IG1lYW5zIGBXRVhUX0NPUkVgIGlzIGFsc28gZ29pbmcgdG8gYmUgcHVsbGVkIGluIGJlY2F1c2UgaXQmIzM5O3Mgc2VsZWN0ZWQgYnkgYENGRzgwMjExX1dFWFRgLCBzbyB0aGF0IGlzIGFsc28gZ29vZCB0byBnby4gTGV0JiMzOTtzIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYENGRzgwMjExX1dFWFRgIGlzIGNvcnJlY3QgaW4gdGhlIGBuZXQvd2lyZWxlc3MvS2NvbmZpZ2AgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENGRzgwMjExX1dFWFQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZz0xNzc9Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4Ni1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE4Nzpjb25maWcgQ0ZHODAyMTFfV0VYVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSB3aXJlbGVzcyBleHRlbnNpb25zIGNvbXBhdGliaWxpdHlcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgyNDYKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ29uZmlndXJhdGlvbiBDb251bmRydW0qKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gd3JhcCBteSBoZWFkIGFyb3VuZCB0aGVzZSBjb25maWd1cmF0aW9ucy4gRmlyc3QsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7dmUgZ290IHRoaXMgc3RyYWlnaHQuIFdhaXQgYSBtaW51dGUsIGBDRkc4MDIxMV9XRVhUYCBpcyBhY3R1YWxseSBhIGBib29sYCwgbm90IGEgdHJpc3RhdGUuIEdvb2QgdG8ga2VlcCBpbiBtaW5kLCBJIG5lZWQgdG8gYmUgZXhhY3QgaGVyZS4KCk5vdywgbGV0JiMzOTtzIHNlZSwgYE1BQzgwMjExX0hXU0lNYC4uLiB0aGF0IG9uZSAqaXMqIGEgYHRyaXN0YXRlYCwgcmlnaHQ/IFllcywgY29uZmlybWVkLiBPa2F5LCBncmVhdC4gVGhhdCBtZWFucyB0byBlbmFibGUgdGhpcyBzZXR1cCwgSSBuZWVkIHRvIGNvbmZpZ3VyZSB0aGUgZm9sbG93aW5nOiBgQ0ZHODAyMTFgLCBgQ0ZHODAyMTFfV0VYVGAsIGBNQUM4MDIxMWAsIGFuZCBgTUFDODAyMTFfSFdTSU1gLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhlIGRlcGVuZGVuY2llcyBmb3IgYENGRzgwMjExX1dFWFRgIGRvbiYjMzk7dCBpbnRyb2R1Y2UgYW55IGhpZGRlbiBnb3RjaGFzLiBJdCB3b3VsZCBiZSBhIG5pZ2h0bWFyZSB0byBkZWJ1ZyBsYXRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnPTU9Y29uZmlnIFdFWFRfQ09SRVxubmV0L3dpcmVsZXNzL0tjb25maWctNi1cdGRlZl9ib29sIHlcbm5ldC93aXJlbGVzcy9LY29uZmlnOjc6XHRkZXBlbmRzIG9uIENGRzgwMjExX1dFWFQgfHwgV0lSRUxFU1NfRVhUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy04LVxubmV0L3dpcmVsZXNzL0tjb25maWc9OT1jb25maWcgV0VYVF9QUk9DXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMC1cdGRlZl9ib29sIHlcbm5ldC93aXJlbGVzcy9LY29uZmlnOjExOlx0ZGVwZW5kcyBvbiBQUk9DX0ZTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjpcdGRlcGVuZHMgb24gV0VYVF9DT1JFXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMy1cbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0xNz1jb25maWcgQ0ZHODAyMTFcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7Y2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVwmIzM0O1xubmV0L3dpcmVsZXNzL0tjb25maWc6MTk6XHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0yMC1cdHNlbGVjdCBGV19MT0FERVJcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz02OD1jb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXCYjMzQ7XG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo3MDpcdGRlcGVuZHMgb24gRVhQRVJUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy03MS1cdGRlZmF1bHQgblxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnPTk5PWNvbmZpZyBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDEtXHRkZWZhdWx0IHlcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEwMjpcdGRlcGVuZHMgb24gQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMy1cdGhlbHBcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0xMTE9Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVx0c3RyaW5nIFwmIzM0O2FkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbm5ldC93aXJlbGVzcy9LY29uZmlnOjExMzpcdGRlcGVuZHMgb24gQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExNC1cdGhlbHBcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0xMjI9Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTIzLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1wmIzM0O1xubmV0L3dpcmVsZXNzL0tjb25maWc6MTI0Olx0ZGVwZW5kcyBvbiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyNS1cdGhlbHBcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0xMzU9Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTM2LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXCYjMzQ7XG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzc6XHRkZXBlbmRzIG9uIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTM4LVx0aGVscFxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnPTE2OT1jb25maWcgQ0ZHODAyMTFfREVCVUdGU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcJiMzNDtcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3MTpcdGRlcGVuZHMgb24gREVCVUdfRlNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Mi1cdGhlbHBcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0xOTQ9Y29uZmlnIENGRzgwMjExX0tVTklUX1RFU1Rcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5NS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBjZmc4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTY6XHRkZXBlbmRzIG9uIEtVTklUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTc6XHRkZXBlbmRzIG9uIENGRzgwMjExXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTgtXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTU1NgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBDRkc4MDIxMV9XRVhUYCBtb2R1bGUgYW5kIGl0JiMzOTtzIGltbWVkaWF0ZWx5IGFwcGFyZW50IHRoYXQgaXRzIGluY2x1c2lvbiBpcyBjb25kaXRpb25hbC4gVGhlIGNvZGUgc3RydWN0dXJlIHRlbGxzIG1lIGl0JiMzOTtzIG5lc3RsZWQgd2l0aGluIGFuIGBpZiBDRkc4MDIxMWAgYmxvY2suIFRoaXMgbWVhbnMgYENGRzgwMjExX1dFWFRgIGlzIGRlcGVuZGVudCBvbiB0aGUgYENGRzgwMjExYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gTm93LCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgYW5kIHRyYWNlIHRoaXMgZGVwZW5kZW5jeSBwcm9wZXJseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGBpZiBDRkc4MDIxMWAgaW4gdGhlIGtlcm5lbCYjMzk7cyBLY29uZmlnIGZpbGVzLiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIGhlYWQgb3ZlciB0byBgbmV0L3dpcmVsZXNzL0tjb25maWdgIHRvIGNvbmZpcm0gdGhpcyBkZXBlbmRlbmN5IGFuZCB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IGl0JiMzOTtzIGNvbmZpZ3VyZWQuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZiBDRkc4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnPTE3PWNvbmZpZyBDRkc4MDIxMVxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTI0LVx0IyAodGhpcyBpcyBoZXJlIHJhdGhlciB0aGFuIGJlbG93IHRvIGFsbG93IGl0IHRvIGJlIGEgbW9kdWxlKVxubmV0L3dpcmVsZXNzL0tjb25maWc6MjU6XHRzZWxlY3QgQ1JZUFRPX1NIQTI1NiBpZiBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTI2LVx0aGVscFxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTM1LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MzY6aWYgQ0ZHODAyMTFcbm5ldC93aXJlbGVzcy9LY29uZmlnLTM3LVxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnPTg5PWNvbmZpZyBDRkc4MDIxMV9SRVFVSVJFX1NJR05FRF9SRUdEQlxubmV0L3dpcmVsZXNzL0tjb25maWc6OTA6XHRib29sIFwmIzM0O3JlcXVpcmUgcmVnZGIgc2lnbmF0dXJlXCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xubmV0L3dpcmVsZXNzL0tjb25maWctOTEtXHRkZWZhdWx0IHlcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz05OT1jb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMDA6XHRib29sIFwmIzM0O2FsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDEtXHRkZWZhdWx0IHlcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0xMTE9Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxubmV0L3dpcmVsZXNzL0tjb25maWc6MTEyOlx0c3RyaW5nIFwmIzM0O2FkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMy1cdGRlcGVuZHMgb24gQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAyMzMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA2MzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaDogV2lyZWxlc3MgSUVTIFZhbGlkYXRpb24qKgoKT2theSwgc28gYENGRzgwMjExX1dFWFRgIGlzIGRlZmluaXRlbHkgZW5hYmxlZCwgc28gdGhhdCYjMzk7cyBub3QgYSBjb25jZXJuLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGNmZzgwMjExX3ZhbGlkYXRlX2llc2Agd2l0aGluIGBuZXQvd2lyZWxlc3MvdXRpbC5jYC4gUmlnaHQsIGFuZCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHNldmVyYWwgcGxhY2VzOiBgdmFsaWRhdGVfYmVhY29uX2hlYWRgIGFuZCBgdmFsaWRhdGVfaWVfYXR0cmAgaW4gYG5sODAyMTEuY2AsIGFuZCBhbHNvIGBjZmc4MDIxMV93ZXh0X3Npd2dlbmllYCBpbiBgd2V4dC1zbWUuY2AuIFRob3NlIGFsbCBsb29rIGxpa2UgcmVhc29uYWJsZSBlbnRyeSBwb2ludHMgZm9yIHRlc3RpbmcsIGdpdmVuIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlLiBTbywgdGhlIGtleSBzeW1ib2xzIEkgbmVlZCB0byBmb2N1cyBvbiBhcmUgYGNmZzgwMjExX3ZhbGlkYXRlX2llc2AsIGB2YWxpZGF0ZV9iZWFjb25faGVhZGAsIGB2YWxpZGF0ZV9pZV9hdHRyYCwgYW5kIGBjZmc4MDIxMV93ZXh0X3Npd2dlbmllYC4KCk5vdywgdGhlIHF1ZXN0aW9uIGlzLCBpcyBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYCBhY3R1YWxseSBleHBvcnRlZD8gSW5pdGlhbGx5LCBJIHRob3VnaHQgbm90LCBiZWNhdXNlIHRoZSBwYXRjaCBkb2VzbiYjMzk7dCBleHBsaWNpdGx5IGBFWFBPUlRfU1lNQk9MYCBpdC4gTGV0IG1lIGxvb2sgYXQgdGhlIGNvZGU6CgpgYGBjCiYjNDM7Ym9vbCBjZmc4MDIxMV92YWxpZGF0ZV9pZXMoY29uc3QgdTggKmRhdGEsIGludCBsZW4pCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgZWxlbWVudCAqZWxlbTsKJiM0MzsKJiM0MzsJZm9yX2VhY2hfZWxlbWVudChlbGVtLCBkYXRhLCBsZW4pIHsKJiM0MzsJCS8qIG5vdGhpbmcgKi8KJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gZm9yX2VhY2hfZWxlbWVudF9jb21wbGV0ZWQoZWxlbSwgZGF0YSwgbGVuKTsKJiM0Mzt9CmBgYAoKT2theSwgaXQmIzM5O3Mgbm90IGV4cG9ydGVkIGluIHRoZSB0cmFkaXRpb25hbCB3YXksIGJ1dCB3YWl0LCBsb29raW5nIGNsb3Nlci4uLiB0aGUgZGlmZiAqZG9lcyogYWRkIGl0IHRvIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5oYC4gQWhhIQoKYGBgYwotLS0gYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmgKQEAgLTEyOSw0ICYjNDM7MTI5LDYgQEAgaW50IG5sODAyMTFfcG1zcl9zdGFydChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKTsKIHZvaWQgbmw4MDIxMV9tbG9fcmVjb25mX2FkZF9kb25lKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkJIHN0cnVjdCBjZmc4MDIxMV9tbG9fcmVjb25mX2RvbmVfZGF0YSAqZGF0YSk7CiAKJiM0Mztib29sIGNmZzgwMjExX3ZhbGlkYXRlX2llcyhjb25zdCB1OCAqZGF0YSwgaW50IGxlbik7CiYjNDM7CiAjZW5kaWYgLyogX19ORVRfV0lSRUxFU1NfTkw4MDIxMV9IICovCmBgYAoKU28sIGl0JiMzOTtzIGRlY2xhcmVkIGluIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5oYCAqYW5kKiBgbmV0L3dpcmVsZXNzL3dleHQtY29tcGF0LmhgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCYjMzk7cyBiZWluZyB1c2VkIGJ5IGB3ZXh0LXNtZS5jYCwgc28gaXQgc2hvdWxkIGJlIGF2YWlsYWJsZS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBgd2V4dC1zbWUuY2AgYWN0dWFsbHkgaW5jbHVkZXMgYG5sODAyMTEuaGAuIEkmIzM5O2xsIGhhdmUgdG8gY2hlY2sgdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmw4MDIxMVxcLmgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvd2V4dC1zbWUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvd2V4dC1zbWUuYy0xNS0jaW5jbHVkZSBcJiMzNDt3ZXh0LWNvbXBhdC5oXCYjMzQ7XG5uZXQvd2lyZWxlc3Mvd2V4dC1zbWUuYzoxNjojaW5jbHVkZSBcJiMzNDtubDgwMjExLmhcJiMzNDtcbm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jLTE3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTY0NgoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDIxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRnVuY3Rpb24gVXNhZ2UgZm9yIFBvdGVudGlhbCBGb2N1cyBTeW1ib2xzKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIGlkZW50aWZ5IHNvbWUgZ29vZCBjYW5kaWRhdGVzIGZvciBmb2N1cyBzeW1ib2xzLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBpbnN0cnVjdGlvbnMgYXJlIGNsZWFyOiB3ZSB3YW50IG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBUaGF0IG1ha2VzIHNlbnNlLCB0aG9zZSBhcmUgZWFzaWVyIHRvIHRyYWNlIGFuZCBhbmFseXplLgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYC4gVGhhdCYjMzk7cyAqZGVmaW5pdGVseSogbm9uLXN0YXRpYywgc28gdGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdywgSSBzZWUgYHZhbGlkYXRlX2JlYWNvbl9oZWFkYCBhbmQgYHZhbGlkYXRlX2llX2F0dHJgLiBUaG9zZSBhcmUgc3RhdGljLCBpbiBgbmw4MDIxMS5jYC4gQnV0Li4uIGhhbmcgb24uIFRob3NlIGFyZSBiZWluZyBwYXNzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMgdG8gYE5MQV9QT0xJQ1lfVkFMSURBVEVfRk5gLiBUaGF0IG1lYW5zIHRoZXkmIzM5O3JlIG5vdCBpbmxpbmVkISBUaGVpciBhZGRyZXNzZXMgYXJlIGRpc3RpbmN0IHN5bWJvbHMhIEJpbmdvISBUaGF0IG1ha2VzIHRoZW0gc3Ryb25nIGNhbmRpZGF0ZXMuIFRoZXkgYXJlICpub3QqIHRoZSB0eXBpY2FsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb24uCgpMZXQmIzM5O3Mgc2VlLCB3aGF0IGVsc2UgZG8gd2UgaGF2ZT8gT2theSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZWAuLi4gSSBiZWxpZXZlIHRoYXQgb25lIGlzICphbHNvKiBub24tc3RhdGljLCBhdCBsZWFzdCBpdCYjMzk7cyB1c2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciBpbiBgd2V4dC1jb21wYXQuY2AuIFNvIHRoYXQgaXMgYW5vdGhlciBvbmUgdG8gYWRkIHRvIHRoZSBsaXN0IG9mIGdvb2QgcG90ZW50aWFsIGZvY3VzIHN5bWJvbHMsIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZmc4MDIxMV93ZXh0X3Npd2dlbmllJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL3dleHQtc21lLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL3dleHQtc21lLmM9MjczPWludCBjZmc4MDIxMV9tZ2Rfd2V4dF9naXdhcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jLTI5Ny1cbm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jOjI5ODppbnQgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L3dpcmVsZXNzL3dleHQtc21lLmMtMjk5LVx0XHRcdCAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMzQ2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gdGhpcyBpcyBkZWZpbml0ZWx5IG5vdCBhIHN0YXRpYyBzaXR1YXRpb247IGl04oCZcyBnb2luZyB0byBpbnZvbHZlIHNvbWUgcmVsYXRpb25zaGlwcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGRpZmZlcmVudCBwYXJ0cyBpbnRlcmFjdC4gTXkgZm9jdXMgaXMgb24gdGhlc2Ugc3ltYm9sczogYGNmZzgwMjExX3ZhbGlkYXRlX2llc2AsIGB2YWxpZGF0ZV9iZWFjb25faGVhZGAsIGB2YWxpZGF0ZV9pZV9hdHRyYCwgYW5kIGBjZmc4MDIxMV93ZXh0X3Npd2dlbmllYC4gVGhvc2UgYXJlIHRoZSBjb3JlIGZ1bmN0aW9ucyBJJiMzOTttIGludGVyZXN0ZWQgaW4gcmlnaHQgbm93LgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgQ0ZHODAyMTFgLCBgQ0ZHODAyMTFfV0VYVGAsIGBNQUM4MDIxMWAsIGFuZCBgTUFDODAyMTFfSFdTSU1gLiBJJiMzOTttIHN0YXJ0aW5nIHdpdGggYE1BQzgwMjExX0hXU0lNYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQgaGFzIGFueSBhZGRpdGlvbmFsIGRlcGVuZGVuY2llcyBiZXlvbmQgd2hhdCYjMzk7cyBpbW1lZGlhdGVseSBvYnZpb3VzLgoKUmlnaHQsIGBNQUM4MDIxMV9IV1NJTWAgZGVwZW5kcyBvbiBgTUFDODAyMTFgLiBBbmQgYE1BQzgwMjExYCByZWxpZXMgb24gYENGRzgwMjExYCwgd2hpY2ggaW4gdHVybiBkZXBlbmRzIG9uIGBSRktJTEwgfHwgIVJGS0lMTGAuIFRoYXQgbWVhbnMgYFJGS0lMTGAgKm1pZ2h0KiBiZSByZWxldmFudC4gSSBjYW4gdXN1YWxseSBhc3N1bWUgYFJGS0lMTGAgaXMgZWl0aGVyIGVuYWJsZWQgb3IgZG9lc24mIzM5O3QgY2F1c2UgYSBwcm9ibGVtLiBVbmxlc3MgaXQmIzM5O3MgYSBoYXJkIGRlcGVuZGVuY3kgdGhhdCYjMzk7cyBkaXNhYmxlZCBieSBkZWZhdWx0LCBJIGRvbiYjMzk7dCB0aGluayBJIG5lZWQgdG8gZXhwbGljaXRseSBsaXN0IGl0LiBCdXQgbGV0JiMzOTtzIHZlcmlmeSB0aGF0IHF1aWNrbHksIGp1c3QgdG8gYmUgc3VyZS4gSXQmIzM5O3MgZ29vZCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJGS0lMTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9yZmtpbGwvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcmZraWxsL0tjb25maWctNC0jXG5uZXQvcmZraWxsL0tjb25maWc6NTptZW51Y29uZmlnIFJGS0lMTFxubmV0L3Jma2lsbC9LY29uZmlnLTYtXHR0cmlzdGF0ZSBcJiMzNDtSRiBzd2l0Y2ggc3Vic3lzdGVtIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvcmZraWxsL0tjb25maWctMTQtIyBMRUQgdHJpZ2dlciBzdXBwb3J0XG5uZXQvcmZraWxsL0tjb25maWc6MTU6Y29uZmlnIFJGS0lMTF9MRURTXG5uZXQvcmZraWxsL0tjb25maWctMTYtXHRib29sXG4tLVxubmV0L3Jma2lsbC9LY29uZmlnLTIwLVxubmV0L3Jma2lsbC9LY29uZmlnOjIxOmNvbmZpZyBSRktJTExfSU5QVVRcbm5ldC9yZmtpbGwvS2NvbmZpZy0yMi1cdGJvb2wgXCYjMzQ7UkYgc3dpdGNoIGlucHV0IHN1cHBvcnRcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L3Jma2lsbC9LY29uZmlnLTI2LVxubmV0L3Jma2lsbC9LY29uZmlnOjI3OmNvbmZpZyBSRktJTExfR1BJT1xubmV0L3Jma2lsbC9LY29uZmlnLTI4LVx0dHJpc3RhdGUgXCYjMzQ7R1BJTyBSRktJTEwgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMTYxCgkJCQkJCQlvdXRwdXQ6IDI0NAoJCQkJCQkJdGhvdWdodHM6IDEwNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBXaXJlbGVzcyBDb25maWd1cmF0aW9uIGFuZCBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgdGhhdCBgUkZLSUxMYCBpcyBhIHRyaXN0YXRlLCBhbmQgYENGRzgwMjExYCYjMzk7cyBjb25maWd1cmF0aW9uIGRlcGVuZHMgb24gaXQuIFNwZWNpZmljYWxseSwgdGhlIGNvbmZpZ3VyYXRpb24gbG9naWMgYWxsb3dzIGBDRkc4MDIxMWAgdG8gYmUgbW9kdWxhciAoYG1gKSByZWdhcmRsZXNzIG9mIGBSRktJTExgJiMzOTtzIHN0YXRlIChlaXRoZXIgYG1gLCBgeWAsIG9yIGBuYCkuIFNvLCBlbmFibGluZyBgUkZLSUxMYCBpc24mIzM5O3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGZvciBgQ0ZHODAyMTFgJiMzOTtzIGZ1bmN0aW9uYWxpdHksIHdoaWNoIGlzIGludGVyZXN0aW5nLgoKTm93LCBsZXQmIzM5O3MgY29uc2lkZXIgb3RoZXIgY29uZmlndXJhdGlvbnMuIEl0IGxvb2tzIGxpa2UgYFdFWFRfQ09SRWAgaXMgc2VsZWN0ZWQgYnkgYENGRzgwMjExX1dFWFRgIG9yIGBXSVJFTEVTU19FWFRgLiBUaGF0JiMzOTtzIGdvb2QsIG1lYW5pbmcgd2UgZG9uJiMzOTt0IG5lZWQgdG8gZXhwbGljaXRseSBlbmFibGUgYFdFWFRfQ09SRWAuCgpNb3Zpbmcgb24gdG8gdGhlIHBhdGNoIGl0c2VsZiwgaXQgbG9va3MgbGlrZSB0aGVyZSBpcyByZWZhY3RvcmluZyBoYXBwZW5pbmcgaGVyZS4gVGhlIHZhbGlkYXRpb24gbG9naWMgZm9yIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIGlzIGJlaW5nIGNlbnRyYWxpemVkIGludG8gYGNmZzgwMjExX3ZhbGlkYXRlX2llc2AuIFRoaXMgZnVuY3Rpb24gaXMgdGhlbiB1c2VkIGluIGB2YWxpZGF0ZV9iZWFjb25faGVhZGAsIGB2YWxpZGF0ZV9pZV9hdHRyYCwgYW5kIGFsc28gYWRkZWQgaW4gYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgLiBTbywgd2UmIzM5O3JlIGNvbnNvbGlkYXRpbmcgdGhlIElFIHZhbGlkYXRpb24gYWNyb3NzIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgd2lyZWxlc3Mgc3RhY2suIFRoZSBrZXkgdGFrZWF3YXkgaXMgdGhpcyBpcyBhIHJlZmFjdG9yaW5nIGVmZm9ydCB3aXRoIGZ1bmN0aW9uYWwgaW1wYWN0LgoKVGhpcyBtYWtlcyBzdXJlIHRoYXQgdGhlIHdpcmVsZXNzIGludGVyZmFjZXMgdmFsaWRhdGUgSUVzIGFuZCBkbyBub3QgY3Jhc2ggb24gbWFsZm9ybWVkIG9uZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhlIHBhdGNoIGFsc28gcHJldmVudHMgbWFsZm9ybWVkIElFcyBmcm9tIGJlaW5nIHByb2Nlc3NlZCBpbiBgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZWAuIFRoaXMgaXMgZ29vZCwgYW5kIGl0JiMzOTtzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBzZWUgaWYgYW55IHZ1bG5lcmFiaWxpdGllcyBhcmUgZXhwb3NlZC4KClNvLCB0aGUga2V5IGZ1bmN0aW9ucyB0aGF0IG5lZWQgZm9jdXMgZHVyaW5nIGZ1enppbmcgYXJlIGBjZmc4MDIxMV92YWxpZGF0ZV9pZXNgLCBgdmFsaWRhdGVfYmVhY29uX2hlYWRgLCBgdmFsaWRhdGVfaWVfYXR0cmAsIGFuZCBgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZWAuCgpUaGUgaW1wb3J0YW50IGNvbmZpZ3VyYXRpb25zIGZvciB0aGlzIHBhdGNoIGFyZSBgQ0ZHODAyMTFgLCBgQ0ZHODAyMTFfV0VYVGAsIGBNQUM4MDIxMWAsIGFuZCBgTUFDODAyMTFfSFdTSU1gLiBUaW1lIHRvIGNoZWNrIGl0IHdpdGggYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExX1dFWFQmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjZmc4MDIxMV92YWxpZGF0ZV9pZXMmIzM0OywKICAgICYjMzQ7dmFsaWRhdGVfYmVhY29uX2hlYWQmIzM0OywKICAgICYjMzQ7dmFsaWRhdGVfaWVfYXR0ciYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV93ZXh0X3Npd2dlbmllJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyBJbmZvcm1hdGlvbiBFbGVtZW50IChJRSkgdmFsaWRhdGlvbiBpbnRvIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYCBhbmQgYWRkcyB0aGlzIHZhbGlkYXRpb24gdG8gdGhlIFdFWFQgYFNJT0NTSVdHRU5JRWAgaW9jdGwgaGFuZGxlciAoYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgKSB0byBwcmV2ZW50IG1hbGZvcm1lZCBJRXMgZnJvbSBiZWluZyBwcm9jZXNzZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSSB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAobmw4MDIxMSkgYW5kIGlvY3RsICh3ZXh0KS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG5ldyB2YWxpZGF0aW9uIGhlbHBlciBhbmQgdGhlIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExX1dFWFQmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjZmc4MDIxMV92YWxpZGF0ZV9pZXMmIzM0OywKICAgICYjMzQ7dmFsaWRhdGVfYmVhY29uX2hlYWQmIzM0OywKICAgICYjMzQ7dmFsaWRhdGVfaWVfYXR0ciYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV93ZXh0X3Npd2dlbmllJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyBJbmZvcm1hdGlvbiBFbGVtZW50IChJRSkgdmFsaWRhdGlvbiBpbnRvIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYCBhbmQgYWRkcyB0aGlzIHZhbGlkYXRpb24gdG8gdGhlIFdFWFQgYFNJT0NTSVdHRU5JRWAgaW9jdGwgaGFuZGxlciAoYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgKSB0byBwcmV2ZW50IG1hbGZvcm1lZCBJRXMgZnJvbSBiZWluZyBwcm9jZXNzZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSSB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAobmw4MDIxMSkgYW5kIGlvY3RsICh3ZXh0KS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG5ldyB2YWxpZGF0aW9uIGhlbHBlciBhbmQgdGhlIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzoxNTo0MC40MjIwNDQ5MzJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTcyMTM0Mjg5NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIkNGRzgwMjExX1dFWFRcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNmZzgwMjExX3ZhbGlkYXRlX2llc1wiLFxuICAgIFwidmFsaWRhdGVfYmVhY29uX2hlYWRcIixcbiAgICBcInZhbGlkYXRlX2llX2F0dHJcIixcbiAgICBcImNmZzgwMjExX3dleHRfc2l3Z2VuaWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgSW5mb3JtYXRpb24gRWxlbWVudCAoSUUpIHZhbGlkYXRpb24gaW50byBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gYGNmZzgwMjExX3ZhbGlkYXRlX2llc2AgYW5kIGFkZHMgdGhpcyB2YWxpZGF0aW9uIHRvIHRoZSBXRVhUIGBTSU9DU0lXR0VOSUVgIGlvY3RsIGhhbmRsZXIgKGBjZmc4MDIxMV93ZXh0X3Npd2dlbmllYCkgdG8gcHJldmVudCBtYWxmb3JtZWQgSUVzIGZyb20gYmVpbmcgcHJvY2Vzc2VkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUEkgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKG5sODAyMTEpIGFuZCBpb2N0bCAod2V4dCkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBuZXcgdmFsaWRhdGlvbiBoZWxwZXIgYW5kIHRoZSBmdW5jdGlvbnMgdGhhdCBjYWxsIGl0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzoxNTo0MC40MjIwNDk5MzJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNTM1Njk1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGFiNmUwNTc4MGY3MjYwYmU1YTJmMzc5MDFmMzc1ZWM1MjRhNDYxOGFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMzAgMDc6MTU6MzkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL25sODAyMTEuYyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmNcXG5pbmRleCA1YWRjYjZiZDBmYzU2Li4yN2JiYWY5MTY1NzQyIDEwMDY0NFxcbi0tLSBhL25ldC93aXJlbGVzcy9ubDgwMjExLmNcXG4rKysgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXFxuQEAgLTIyOCw3ICsyMjgsNiBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2JlYWNvbl9oZWFkKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXFxuIHtcXG4gXFx0Y29uc3QgdTggKmRhdGEgPSBubGFfZGF0YShhdHRyKTtcXG4gXFx0dW5zaWduZWQgaW50IGxlbiA9IG5sYV9sZW4oYXR0cik7XFxuLVxcdGNvbnN0IHN0cnVjdCBlbGVtZW50ICplbGVtO1xcbiBcXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKWRhdGE7XFxuIFxcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfZXh0ICpleHQ7XFxuIFxcdHVuc2lnbmVkIGludCBmaXhlZGxlbiwgaGRybGVuO1xcbkBAIC0yNTksMTMgKzI1OCw4IEBAIHN0YXRpYyBpbnQgdmFsaWRhdGVfYmVhY29uX2hlYWQoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcXG4gXFx0ZGF0YSArPSBmaXhlZGxlbjtcXG4gXFx0bGVuIC09IGZpeGVkbGVuO1xcbiBcXG4tXFx0Zm9yX2VhY2hfZWxlbWVudChlbGVtLCBkYXRhLCBsZW4pIHtcXG4tXFx0XFx0Lyogbm90aGluZyAqL1xcbi1cXHR9XFxuLVxcbi1cXHRpZiAoZm9yX2VhY2hfZWxlbWVudF9jb21wbGV0ZWQoZWxlbSwgZGF0YSwgbGVuKSlcXG4rXFx0aWYgKGNmZzgwMjExX3ZhbGlkYXRlX2llcyhkYXRhLCBsZW4pKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4tXFxuIGVycjpcXG4gXFx0TkxfU0VUX0VSUl9NU0dfQVRUUihleHRhY2ssIGF0dHIsIFxcXCJtYWxmb3JtZWQgYmVhY29uIGhlYWRcXFwiKTtcXG4gXFx0cmV0dXJuIC1FSU5WQUw7XFxuQEAgLTI3NiwxMyArMjcwLDggQEAgc3RhdGljIGludCB2YWxpZGF0ZV9pZV9hdHRyKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXFxuIHtcXG4gXFx0Y29uc3QgdTggKmRhdGEgPSBubGFfZGF0YShhdHRyKTtcXG4gXFx0dW5zaWduZWQgaW50IGxlbiA9IG5sYV9sZW4oYXR0cik7XFxuLVxcdGNvbnN0IHN0cnVjdCBlbGVtZW50ICplbGVtO1xcbi1cXG4tXFx0Zm9yX2VhY2hfZWxlbWVudChlbGVtLCBkYXRhLCBsZW4pIHtcXG4tXFx0XFx0Lyogbm90aGluZyAqL1xcbi1cXHR9XFxuIFxcbi1cXHRpZiAoZm9yX2VhY2hfZWxlbWVudF9jb21wbGV0ZWQoZWxlbSwgZGF0YSwgbGVuKSlcXG4rXFx0aWYgKGNmZzgwMjExX3ZhbGlkYXRlX2llcyhkYXRhLCBsZW4pKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuIFxcdE5MX1NFVF9FUlJfTVNHX0FUVFIoZXh0YWNrLCBhdHRyLCBcXFwibWFsZm9ybWVkIGluZm9ybWF0aW9uIGVsZW1lbnRzXFxcIik7XFxuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9ubDgwMjExLmggYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5oXFxuaW5kZXggYmRiMDY1ZDE0MDU0OS4uODMyMmNlZDZiNTUxZCAxMDA2NDRcXG4tLS0gYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5oXFxuKysrIGIvbmV0L3dpcmVsZXNzL25sODAyMTEuaFxcbkBAIC0xMjksNCArMTI5LDYgQEAgaW50IG5sODAyMTFfcG1zcl9zdGFydChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKTtcXG4gdm9pZCBubDgwMjExX21sb19yZWNvbmZfYWRkX2RvbmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0XFx0IHN0cnVjdCBjZmc4MDIxMV9tbG9fcmVjb25mX2RvbmVfZGF0YSAqZGF0YSk7XFxuIFxcbitib29sIGNmZzgwMjExX3ZhbGlkYXRlX2llcyhjb25zdCB1OCAqZGF0YSwgaW50IGxlbik7XFxuK1xcbiAjZW5kaWYgLyogX19ORVRfV0lSRUxFU1NfTkw4MDIxMV9IICovXFxuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy91dGlsLmMgYi9uZXQvd2lyZWxlc3MvdXRpbC5jXFxuaW5kZXggMjQ1MjdiZjMyMWIyYS4uZGNhYTU5MDNiY2QyYyAxMDA2NDRcXG4tLS0gYS9uZXQvd2lyZWxlc3MvdXRpbC5jXFxuKysrIGIvbmV0L3dpcmVsZXNzL3V0aWwuY1xcbkBAIC0zMDgzLDMgKzMwODMsMTQgQEAgYm9vbCBjZmc4MDIxMV93ZGV2X2NoYW5uZWxfYWxsb3dlZChzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRyZXR1cm4gZmFsc2U7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTChjZmc4MDIxMV93ZGV2X2NoYW5uZWxfYWxsb3dlZCk7XFxuK1xcbitib29sIGNmZzgwMjExX3ZhbGlkYXRlX2llcyhjb25zdCB1OCAqZGF0YSwgaW50IGxlbilcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3QgZWxlbWVudCAqZWxlbTtcXG4rXFxuK1xcdGZvcl9lYWNoX2VsZW1lbnQoZWxlbSwgZGF0YSwgbGVuKSB7XFxuK1xcdFxcdC8qIG5vdGhpbmcgKi9cXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIGZvcl9lYWNoX2VsZW1lbnRfY29tcGxldGVkKGVsZW0sIGRhdGEsIGxlbik7XFxuK31cXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL3dleHQtc21lLmMgYi9uZXQvd2lyZWxlc3Mvd2V4dC1zbWUuY1xcbmluZGV4IDU3M2I2YjE1YTQ0NmUuLjE0NzZkOTMzYzdlNzIgMTAwNjQ0XFxuLS0tIGEvbmV0L3dpcmVsZXNzL3dleHQtc21lLmNcXG4rKysgYi9uZXQvd2lyZWxlc3Mvd2V4dC1zbWUuY1xcbkBAIC0zMTksNiArMzE5LDkgQEAgaW50IGNmZzgwMjExX3dleHRfc2l3Z2VuaWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbiBcXHRpZiAoaWVfbGVuKSB7XFxuK1xcdFxcdGlmICghY2ZnODAyMTFfdmFsaWRhdGVfaWVzKGV4dHJhLCBpZV9sZW4pKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuIFxcdFxcdGllID0ga21lbWR1cChleHRyYSwgaWVfbGVuLCBHRlBfS0VSTkVMKTtcXG4gXFx0XFx0aWYgKCFpZSlcXG4gXFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE1OjQwLjkyNzk3MDU3MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjExNjcwNzQ5NTg3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiQ0ZHODAyMTFfV0VYVFwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2ZnODAyMTFfdmFsaWRhdGVfaWVzXCIsXG4gICAgXCJ2YWxpZGF0ZV9iZWFjb25faGVhZFwiLFxuICAgIFwidmFsaWRhdGVfaWVfYXR0clwiLFxuICAgIFwiY2ZnODAyMTFfd2V4dF9zaXdnZW5pZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyBJbmZvcm1hdGlvbiBFbGVtZW50IChJRSkgdmFsaWRhdGlvbiBpbnRvIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYCBhbmQgYWRkcyB0aGlzIHZhbGlkYXRpb24gdG8gdGhlIFdFWFQgYFNJT0NTSVdHRU5JRWAgaW9jdGwgaGFuZGxlciAoYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgKSB0byBwcmV2ZW50IG1hbGZvcm1lZCBJRXMgZnJvbSBiZWluZyBwcm9jZXNzZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSSB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAobmw4MDIxMSkgYW5kIGlvY3RsICh3ZXh0KS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG5ldyB2YWxpZGF0aW9uIGhlbHBlciBhbmQgdGhlIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGFiNmUwNTc4MGY3MjYwYmU1YTJmMzc5MDFmMzc1ZWM1MjRhNDYxOGFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAzMCAwNzoxNTozOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG5pbmRleCA1YWRjYjZiZDBmYzU2Li4yN2JiYWY5MTY1NzQyIDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xuKysrIGIvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xuQEAgLTIyOCw3ICsyMjgsNiBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2JlYWNvbl9oZWFkKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXG4ge1xuIFx0Y29uc3QgdTggKmRhdGEgPSBubGFfZGF0YShhdHRyKTtcbiBcdHVuc2lnbmVkIGludCBsZW4gPSBubGFfbGVuKGF0dHIpO1xuLVx0Y29uc3Qgc3RydWN0IGVsZW1lbnQgKmVsZW07XG4gXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKWRhdGE7XG4gXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2V4dCAqZXh0O1xuIFx0dW5zaWduZWQgaW50IGZpeGVkbGVuLCBoZHJsZW47XG5AQCAtMjU5LDEzICsyNTgsOCBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2JlYWNvbl9oZWFkKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXG4gXHRkYXRhICs9IGZpeGVkbGVuO1xuIFx0bGVuIC09IGZpeGVkbGVuO1xuIFxuLVx0Zm9yX2VhY2hfZWxlbWVudChlbGVtLCBkYXRhLCBsZW4pIHtcbi1cdFx0Lyogbm90aGluZyAqL1xuLVx0fVxuLVxuLVx0aWYgKGZvcl9lYWNoX2VsZW1lbnRfY29tcGxldGVkKGVsZW0sIGRhdGEsIGxlbikpXG4rXHRpZiAoY2ZnODAyMTFfdmFsaWRhdGVfaWVzKGRhdGEsIGxlbikpXG4gXHRcdHJldHVybiAwO1xuLVxuIGVycjpcbiBcdE5MX1NFVF9FUlJfTVNHX0FUVFIoZXh0YWNrLCBhdHRyLCBcIm1hbGZvcm1lZCBiZWFjb24gaGVhZFwiKTtcbiBcdHJldHVybiAtRUlOVkFMO1xuQEAgLTI3NiwxMyArMjcwLDggQEAgc3RhdGljIGludCB2YWxpZGF0ZV9pZV9hdHRyKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXG4ge1xuIFx0Y29uc3QgdTggKmRhdGEgPSBubGFfZGF0YShhdHRyKTtcbiBcdHVuc2lnbmVkIGludCBsZW4gPSBubGFfbGVuKGF0dHIpO1xuLVx0Y29uc3Qgc3RydWN0IGVsZW1lbnQgKmVsZW07XG4tXG4tXHRmb3JfZWFjaF9lbGVtZW50KGVsZW0sIGRhdGEsIGxlbikge1xuLVx0XHQvKiBub3RoaW5nICovXG4tXHR9XG4gXG4tXHRpZiAoZm9yX2VhY2hfZWxlbWVudF9jb21wbGV0ZWQoZWxlbSwgZGF0YSwgbGVuKSlcbitcdGlmIChjZmc4MDIxMV92YWxpZGF0ZV9pZXMoZGF0YSwgbGVuKSlcbiBcdFx0cmV0dXJuIDA7XG4gXG4gXHROTF9TRVRfRVJSX01TR19BVFRSKGV4dGFjaywgYXR0ciwgXCJtYWxmb3JtZWQgaW5mb3JtYXRpb24gZWxlbWVudHNcIik7XG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL25sODAyMTEuaCBiL25ldC93aXJlbGVzcy9ubDgwMjExLmhcbmluZGV4IGJkYjA2NWQxNDA1NDkuLjgzMjJjZWQ2YjU1MWQgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5oXG4rKysgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5oXG5AQCAtMTI5LDQgKzEyOSw2IEBAIGludCBubDgwMjExX3Btc3Jfc3RhcnQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XG4gdm9pZCBubDgwMjExX21sb19yZWNvbmZfYWRkX2RvbmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCBzdHJ1Y3QgY2ZnODAyMTFfbWxvX3JlY29uZl9kb25lX2RhdGEgKmRhdGEpO1xuIFxuK2Jvb2wgY2ZnODAyMTFfdmFsaWRhdGVfaWVzKGNvbnN0IHU4ICpkYXRhLCBpbnQgbGVuKTtcbitcbiAjZW5kaWYgLyogX19ORVRfV0lSRUxFU1NfTkw4MDIxMV9IICovXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL3V0aWwuYyBiL25ldC93aXJlbGVzcy91dGlsLmNcbmluZGV4IDI0NTI3YmYzMjFiMmEuLmRjYWE1OTAzYmNkMmMgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3MvdXRpbC5jXG4rKysgYi9uZXQvd2lyZWxlc3MvdXRpbC5jXG5AQCAtMzA4MywzICszMDgzLDE0IEBAIGJvb2wgY2ZnODAyMTFfd2Rldl9jaGFubmVsX2FsbG93ZWQoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdHJldHVybiBmYWxzZTtcbiB9XG4gRVhQT1JUX1NZTUJPTChjZmc4MDIxMV93ZGV2X2NoYW5uZWxfYWxsb3dlZCk7XG4rXG4rYm9vbCBjZmc4MDIxMV92YWxpZGF0ZV9pZXMoY29uc3QgdTggKmRhdGEsIGludCBsZW4pXG4re1xuK1x0Y29uc3Qgc3RydWN0IGVsZW1lbnQgKmVsZW07XG4rXG4rXHRmb3JfZWFjaF9lbGVtZW50KGVsZW0sIGRhdGEsIGxlbikge1xuK1x0XHQvKiBub3RoaW5nICovXG4rXHR9XG4rXG4rXHRyZXR1cm4gZm9yX2VhY2hfZWxlbWVudF9jb21wbGV0ZWQoZWxlbSwgZGF0YSwgbGVuKTtcbit9XG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL3dleHQtc21lLmMgYi9uZXQvd2lyZWxlc3Mvd2V4dC1zbWUuY1xuaW5kZXggNTczYjZiMTVhNDQ2ZS4uMTQ3NmQ5MzNjN2U3MiAxMDA2NDRcbi0tLSBhL25ldC93aXJlbGVzcy93ZXh0LXNtZS5jXG4rKysgYi9uZXQvd2lyZWxlc3Mvd2V4dC1zbWUuY1xuQEAgLTMxOSw2ICszMTksOSBAQCBpbnQgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRyZXR1cm4gMDtcbiBcbiBcdGlmIChpZV9sZW4pIHtcbitcdFx0aWYgKCFjZmc4MDIxMV92YWxpZGF0ZV9pZXMoZXh0cmEsIGllX2xlbikpXG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4gXHRcdGllID0ga21lbWR1cChleHRyYSwgaWVfbGVuLCBHRlBfS0VSTkVMKTtcbiBcdFx0aWYgKCFpZSlcbiBcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE1OjQwLjkyNzk3MTcxMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MDA1MDg2MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgV2lGaSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBzZWVtcyBsaWtlIGl0J3MgdG91Y2hpbmcgc2V2ZXJhbCBjb3JlIGZpbGVzIHdpdGhpbiB0aGUgYG5ldC93aXJlbGVzc2Agc3Vic3lzdGVtLiBTcGVjaWZpY2FsbHksIGl0J3MgbW9kaWZ5aW5nIGBubDgwMjExLmNgLCBgbmw4MDIxMS5oYCwgYHV0aWwuY2AsIGFuZCBgd2V4dC1zbWUuY2AuIFRoYXQncyBhIGRlY2VudCBzcHJlYWQsIGluZGljYXRpbmcgYSBwb3RlbnRpYWxseSBzaWduaWZpY2FudCBjaGFuZ2UgaW4gaG93IHdlIGhhbmRsZSB3aXJlbGVzcyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gb3IgY2FwYWJpbGl0aWVzLlxuXG5UaGUga2V5IHRoaW5nIEknbSBzZWVpbmcgaXMgdGhpcyBuZXcgYGNmZzgwMjExX3ZhbGlkYXRlX2llc2AgZnVuY3Rpb24uIEl0cyBwcmVzZW5jZSBpbiBgdXRpbC5jYCBzdWdnZXN0cyBpdCdzIGEgdXRpbGl0eSBmdW5jdGlvbiBkZXNpZ25lZCB0byBoYW5kbGUgSW5mb3JtYXRpb24gRWxlbWVudCAoSUUpIHZhbGlkYXRpb24sIHdoaWNoIGlzIGNvbW1vbiBpbiA4MDIuMTEgbWFuYWdlbWVudCBmcmFtZXMuIFRoZSBmYWN0IHRoYXQgaXQncyBiZWluZyAqdXNlZCogd2l0aGluIGB2YWxpZGF0ZV9iZWFjb25faGVhZGAgYW5kIGB2YWxpZGF0ZV9pZV9hdHRyYCBpbiBgbmw4MDIxMS5jYCwgYW5kIGFsc28gaW4gYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgIHdpdGhpbiBgd2V4dC1zbWUuY2AgaXMgaW1wb3J0YW50IHRvby4gVGhhdCB0ZWxscyBtZSB0aGlzIHZhbGlkYXRpb24gaXMgZ29pbmcgdG8gdG91Y2ggYm90aCB0aGUgbmw4MDIxMSBuZXRsaW5rIGludGVyZmFjZSBhbmQgdGhlIHdleHQtYmFzZWQgaW50ZXJmYWNlcy4gVmFsaWRhdGlvbiBvZiBJRXMgc3VnZ2VzdHMgY2hhbmdlcyB0byB3aGF0IHdlIHZhbGlkYXRlIGluIElFcywgd2hpY2ggY2FuIGFmZmVjdCB0aGluZ3MgbGlrZSBiZWFjb24gcGFyc2luZywgYW5kIHZhcmlvdXMgY29uZmlndXJhdGlvbiBvcGVyYXRpb25zLlxuXG5UbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUsIEkgbmVlZCB0byBjb25maXJtIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGVuYWJsZWQgZm9yIGBuZXQvd2lyZWxlc3MvYC4gSSdtIGd1ZXNzaW5nIGBDRkc4MDIxMWAgYW5kIGBDRkc4MDIxMV9XRVhUYCBhcmUgdGhlIGtleSBjb250ZW5kZXJzIGhlcmUsIHNvIEknbGwgbmVlZCB0byBjaGVjayB0aGUgYG5ldC93aXJlbGVzcy9LY29uZmlnYCBmaWxlIHRvIGNvbmZpcm0gaG93IHRoaXMgbmV3IGZ1bmN0aW9uYWxpdHkgaXMgY29udHJvbGxlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hldGhlciB0aGlzIGlzIGEgY29yZSBmZWF0dXJlIG9yIHNvbWV0aGluZyB0aGF0IGNhbiBiZSBkaXNhYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA3OSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE1OjQ2LjMyODQ4MjExNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzAyODg0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQ0ZHODAyMTFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3dpcmVsZXNzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL0tjb25maWc9MTQ9Y29uZmlnIFdFWFRfUFJJVlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc6Y29uZmlnIENGRzgwMjExXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcImNmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0zOD1jb25maWcgTkw4MDIxMV9URVNUTU9ERVxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctNTEtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6NTI6Y29uZmlnIENGRzgwMjExX0RFVkVMT1BFUl9XQVJOSU5HU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTUzLVxcdGJvb2wgXFxcImVuYWJsZSBkZXZlbG9wZXIgd2FybmluZ3NcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02Ny1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo2ODpjb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxubmV0L3dpcmVsZXNzL0tjb25maWctNjktXFx0Ym9vbCBcXFwiY2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctODgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6ODk6Y29uZmlnIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXFxubmV0L3dpcmVsZXNzL0tjb25maWctOTAtXFx0Ym9vbCBcXFwicmVxdWlyZSByZWdkYiBzaWduYXR1cmVcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctOTgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6OTk6Y29uZmlnIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMC1cXHRib29sIFxcXCJhbGxvdyByZWdkYiBrZXlzIHNoaXBwZWQgd2l0aCB0aGUga2VybmVsXFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTE6Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMi1cXHRzdHJpbmcgXFxcImFkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjEtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTIyOmNvbmZpZyBDRkc4MDIxMV9SRUdfQ0VMTFVMQVJfSElOVFNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjMtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgcmVndWxhdG9yeSBzdXBwb3J0IGZvciBjZWxsdWxhciBiYXNlIHN0YXRpb24gaGludHNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzQtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTM1OmNvbmZpZyBDRkc4MDIxMV9SRUdfUkVMQVhfTk9fSVJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzYtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgc3VwcG9ydCBmb3IgTk9fSVIgcmVsYXhhdGlvblxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE1OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNTk6Y29uZmlnIENGRzgwMjExX0RFRkFVTFRfUFNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjAtXFx0Ym9vbCBcXFwiZW5hYmxlIHBvd2Vyc2F2ZSBieSBkZWZhdWx0XFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTY4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE2OTpjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cXHRib29sIFxcXCJjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc3OmNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzgtXFx0Ym9vbCBcXFwic3VwcG9ydCBDUkRBXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4Ni1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxODc6Y29uZmlnIENGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODgtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBjb21wYXRpYmlsaXR5XFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTkzLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5NDpjb25maWcgQ0ZHODAyMTFfS1VOSVRfVEVTVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5NS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIGNmZzgwMjExXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE1OjQ2LjM3NTUxMzQ5NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNjM3OTUxNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYSBgY2ZnODAyMTFgIFdFWFQgTW9kaWZpY2F0aW9uKipcblxuQWxyaWdodCwgc28gdGhlIHBhdGNoIGlzIHR3ZWFraW5nIGBjZmc4MDIxMV93ZXh0X3Npd2dlbmllYCwgYW5kIGl0IGxvb2tzIGxpa2UgdGhhdCBmdW5jdGlvbiBsaXZlcyBpbiBgd2V4dC1zbWUuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIGxldCdzIHNlZSBpZiB0aGlzIGNvZGUgZXZlbiBnZXRzIGNvbXBpbGVkIGluIG15IGN1cnJlbnQgY29uZmlndXJhdGlvbi5cIiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBDRkc4MDIxMV9XRVhUYCBpcyBhY3R1YWxseSBkZWZpbmVkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2VzcywgcmlnaHQ/IElmIHRoYXQncyBub3Qgc2V0LCB0aGVuIHRoZSBjaGFuZ2VzIHRvIGB3ZXh0LXNtZS5jYCBhcmUgZWZmZWN0aXZlbHkgZGVhZCBjb2RlLCBhbmQgdGhpcyBwYXRjaCBpc24ndCByZWxldmFudCB0byBteSBzcGVjaWZpYyBzZXR1cC4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBidWlsZCBzeXN0ZW0gdG8gY29uZmlybSB3aGV0aGVyIGBDRkc4MDIxMV9XRVhUYCBpcyBlbmFibGVkLiBJZiBpdCBpc24ndCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IGFuZCB3aGV0aGVyIHRoaXMgcGF0Y2ggcmVxdWlyZXMgc29tZSByZS1ldmFsdWF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjE3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6MTU6NTEuNjM5MzEwMjI5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNTA0MTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndleHQtc21lXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3MvTWFrZWZpbGU9MTM9Y2ZnODAyMTEtJChDT05GSUdfQ0ZHODAyMTFfREVCVUdGUykgKz0gZGVidWdmcy5vXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlOjE0OmNmZzgwMjExLSQoQ09ORklHX0NGRzgwMjExX1dFWFQpICs9IHdleHQtY29tcGF0Lm8gd2V4dC1zbWUub1xcbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0xNS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6MTU6NTEuNjgxODE3NjhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDg5NTc3NjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIHRoZXkgd2VyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgYnVpbGQgc3lzdGVtIGFuZCBob3cgdGhlc2UgbW9kdWxlcyByZWxhdGUgdG8gZWFjaCBvdGhlci4gVGhlIGluY2x1c2lvbiBvZiBgQ0ZHODAyMTFfV0VYVGAgaW4gdGhpcyBjb250ZXh0IG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IGl0J3MgZGVmaW5pdGVseSByZXF1aXJlZCBieSBgd2V4dC1zbWUuY2AuIEkndmUgZ290IHRvIG1ha2UgYSBtZW50YWwgbm90ZSBvZiB0aGF0IHJlbGF0aW9uc2hpcC5cblxuVGhlbiBJIG1vdmUgb24gdG8gdGhpbmtpbmcgYWJvdXQgYG5sODAyMTEuY2AgYW5kIGB1dGlsLmNgLiBJdCdzIHByZXR0eSBjbGVhciB0aGV5J3JlIGJvdGggZ2V0dGluZyBjb21waWxlZCB1bmRlciB0aGUgYENGRzgwMjExYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiBgQ0ZHODAyMTFgIGl0c2VsZiB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIHN1cnByaXNlcyBvciBoaWRkZW4gaW1wbGljYXRpb25zIGRvd24gdGhlIGxpbmUuIEkgYWx3YXlzIG5lZWQgdG8gYmUgYXdhcmUgb2YgdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHRoZSBjb25maWcgb3B0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAyMywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE1OjU1LjE3MTM5Nzk5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMTQ5MjkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3dpcmVsZXNzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL0tjb25maWc9NT1jb25maWcgV0VYVF9DT1JFXFxubmV0L3dpcmVsZXNzL0tjb25maWctNi1cXHRkZWZfYm9vbCB5XFxubmV0L3dpcmVsZXNzL0tjb25maWc6NzpcXHRkZXBlbmRzIG9uIENGRzgwMjExX1dFWFQgfHwgV0lSRUxFU1NfRVhUXFxubmV0L3dpcmVsZXNzL0tjb25maWctOC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz05PWNvbmZpZyBXRVhUX1BST0NcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMC1cXHRkZWZfYm9vbCB5XFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTE6XFx0ZGVwZW5kcyBvbiBQUk9DX0ZTXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTI6XFx0ZGVwZW5kcyBvbiBXRVhUX0NPUkVcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMy1cXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnPTE3PWNvbmZpZyBDRkc4MDIxMVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXFxcIlxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5OlxcdGRlcGVuZHMgb24gUkZLSUxMIHx8ICFSRktJTExcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0yMC1cXHRzZWxlY3QgRldfTE9BREVSXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz02OD1jb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxubmV0L3dpcmVsZXNzL0tjb25maWctNjktXFx0Ym9vbCBcXFwiY2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXFxcIlxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjcwOlxcdGRlcGVuZHMgb24gRVhQRVJUXFxubmV0L3dpcmVsZXNzL0tjb25maWctNzEtXFx0ZGVmYXVsdCBuXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz05OT1jb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDEtXFx0ZGVmYXVsdCB5XFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTAyOlxcdGRlcGVuZHMgb24gQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDMtXFx0aGVscFxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWc9MTExPWNvbmZpZyBDRkc4MDIxMV9FWFRSQV9SRUdEQl9LRVlESVJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTItXFx0c3RyaW5nIFxcXCJhZGRpdGlvbmFsIHJlZ2RiIGtleSBkaXJlY3RvcnlcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnOjExMzpcXHRkZXBlbmRzIG9uIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTE0LVxcdGhlbHBcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnPTEyMj1jb25maWcgQ0ZHODAyMTFfUkVHX0NFTExVTEFSX0hJTlRTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTIzLVxcdGJvb2wgXFxcImNmZzgwMjExIHJlZ3VsYXRvcnkgc3VwcG9ydCBmb3IgY2VsbHVsYXIgYmFzZSBzdGF0aW9uIGhpbnRzXFxcIlxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEyNDpcXHRkZXBlbmRzIG9uIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyNS1cXHRoZWxwXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0xMzU9Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNi1cXHRib29sIFxcXCJjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXFxcIlxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEzNzpcXHRkZXBlbmRzIG9uIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzOC1cXHRoZWxwXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0xNjk9Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzAtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgRGVidWdGUyBlbnRyaWVzXFxcIlxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3MTpcXHRkZXBlbmRzIG9uIERFQlVHX0ZTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTcyLVxcdGhlbHBcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnPTE5ND1jb25maWcgQ0ZHODAyMTFfS1VOSVRfVEVTVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5NS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIGNmZzgwMjExXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk2OlxcdGRlcGVuZHMgb24gS1VOSVRcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTc6XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5OC1cXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzoxNTo1NS4yMTI1NDk4NDFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDE0NjM1ODM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIENGRzgwMjExJ3MgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSdtIHNlZWluZywgYENGRzgwMjExYCBpcyBwcmV0dHkgY2xldmVyIGluIGhvdyBpdCBoYW5kbGVzIGl0cyBkZXBlbmRlbmNpZXMsIGVzcGVjaWFsbHkgd2hlbiB0aGlua2luZyBhYm91dCBmdXp6aW5nLiBUaGUga2V5IHRha2Vhd2F5IGlzIHRoZSBjb25kaXRpb25hbCBkZXBlbmRlbmN5IG9uIGBSRktJTExgLiBJdCdzIGVpdGhlciBkZXBlbmRlbnQgb24gYFJGS0lMTGAgYmVpbmcgZW5hYmxlZCAqb3IqIGlmIGBSRktJTExgIGlzIGRpc2FibGVkIC0gdGhlIGltcGxpY2F0aW9uIGJlaW5nIHRoYXQgaXQgY2FuIGZ1bmN0aW9uIGluIGVpdGhlciBzY2VuYXJpbywgbWFraW5nIGl0IHZlcnNhdGlsZS5cblxuTm93LCBmb3IgYW55IHJlYWwgdXNlIGluIGZ1enppbmcsIGFuZCBJIG1lYW4gKnJlYWwqIGZ1enppbmcgdGhhdCBjYW4gYWN0dWFsbHkgZ2VuZXJhdGUgc29tZSBtZWFuaW5nZnVsIGlucHV0LCBgQ0ZHODAyMTFgIGhpbmdlcyBvbiBlaXRoZXIgYE1BQzgwMjExYCBvciBgTUFDODAyMTFfSFdTSU1gLiBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IGBDRkc4MDIxMWAgaXMgYSBjb25maWd1cmF0aW9uIGxheWVyLCBhbmQgaXQgbmVlZHMgYSBNQUMgbGF5ZXIgdW5kZXJuZWF0aCB0byBkbyBhbnl0aGluZyBpbnRlcmVzdGluZy4gU2luY2UgbXkgZ29hbCBpcyBmdXp6aW5nLCBJJ20gZ29pbmcgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGBNQUM4MDIxMWAgYW5kIGNvbnNpZGVyIGl0cyBhcmNoaXRlY3R1cmUgaW4gcmVsYXRpb24gdG8gaG93IGl0IGFmZmVjdHMgYENGRzgwMjExYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjI1NiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE1OjU5LjIyNzE4ODYzN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE1MTcwNTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXFxubmV0L21hYzgwMjExL0tjb25maWctMjItXFx0Ym9vbFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNDAtXFxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXFx0c3RyaW5nXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFxcXCJTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNzgtXFxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cXHRib29sIFxcXCJFbmFibGUgTEVEIHRyaWdnZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctODctXFxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cXHRib29sIFxcXCJFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXFxubmV0L21hYzgwMjExL0tjb25maWctOTgtXFx0Ym9vbCBcXFwiVHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXFx0Ym9vbCBcXFwiU2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXFxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVxcdGJvb2wgXFxcIkRvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTMzLVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTU1LVxcdGJvb2wgXFxcIlZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cXHRib29sIFxcXCJWZXJib3NlIEhUIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cXHRib29sIFxcXCJWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTg3LVxcdGJvb2wgXFxcIlZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cXHRib29sIFxcXCJWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjIzLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjM2LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjgyLVxcdGJvb2wgXFxcIlZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXFxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cXHRib29sIFxcXCJFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cXHRpbnQgXFxcIlN0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcXFwiIGlmIE1BQzgwMjExX0RFQlVHX01FTlVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6MTU6NTkuMjY4NzA3OTI4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MzcxOTY0MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGl2aW5nIGludG8gdGhlIE1BQzgwMjExIEVjb3N5c3RlbSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gdGhlIG5ldHdvcmtpbmcgc3RhY2sgaGVyZSwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBJRUVFIDgwMi4xMSBpbXBsZW1lbnRhdGlvbi4gSSdtIHJlY2FsbGluZyB0aGF0IGBNQUM4MDIxMWAgaXMgdGhlIGNvcmUsIGdlbmVyaWMgZnJhbWV3b3JrIGZvciA4MDIuMTEgZnVuY3Rpb25hbGl0eS4gTm93LCBJIG5lZWQgdG8gY2hlY2sgb3V0IGEgc3BlY2lmaWMgY29tcG9uZW50LCBhbmQgdGhhdCB3b3VsZCBiZSBgTUFDODAyMTFfSFdTSU1gLiBJIGJlbGlldmUgdGhpcyBpcyB0aGF0IHNvZnR3YXJlIHNpbXVsYXRvciBmb3IgZW11bGF0aW5nIHRoZSBiZWhhdmlvciBvZiA4MDIuMTEgcmFkaW9zLCBzbyBJJ2xsIHNlZSB3aGF0IGl0J3MgYWxsIGFib3V0LiBMZXQncyBkZWx2ZSBpbiBhbmQgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzgyLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6MTY6MDIuOTA1OTA2MjI2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjkwMDQ1MSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExX0hXU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hYzgwMjExX2h3c2ltL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE2OjAyLjk0ODgxMTA3NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDg4NjU2NjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgV2lyZWxlc3MgRHJpdmVyIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaW5kIHRoZSByZWxldmFudCBjb2RlLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBgTUFDODAyMTFfSFdTSU1gLiBJIGtub3cgaXQncyBhIHdpcmVsZXNzIGRyaXZlciBzaW11bGF0aW9uLCB3aGljaCBtZWFucyBpdCBsaWtlbHkgcmVzaWRlcyB3aXRoaW4gdGhlIGJyb2FkZXIgd2lyZWxlc3MgZHJpdmVyIGZyYW1ld29yay4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgdHlwaWNhbCBsb2NhdGlvbnMgZm9yIHdpcmVsZXNzIGRyaXZlcnMuIEknZCBzdGFydCBieSBsb29raW5nIGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFjODAyMTFfaHdzaW0vYCBkaXJlY3RvcnkuIFRoaXMgc2VlbXMgbGlrZSBhIGxpa2VseSBjYW5kaWRhdGUgZ2l2ZW4gdGhlIHNwZWNpZmljIG5hbWluZyBjb252ZW50aW9uIHRoYXQgaW5jbHVkZXMgYGh3c2ltYC4gSG93ZXZlciwgSSdtIGFsc28gZ29pbmcgdG8gY2FzdCBhIHdpZGVyIG5ldCBhbmQgY29uc2lkZXIgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2AgbW9yZSBnZW5lcmFsbHkuIEl0J3MgcG9zc2libGUgdGhlIHNpbXVsYXRpb24gY29kZSBpcyBvcmdhbml6ZWQgZGlmZmVyZW50bHkgb3IgcGVyaGFwcyBhIG1vcmUgZ2VuZXJhbCBkcml2ZXIgY29udGFpbnMgdGhlIHNpbXVsYXRpb24gZnVuY3Rpb25hbGl0eS4gVGhlIGJyb2FkZXIgcGF0aCB3aWxsIGhlbHAgZW5zdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYSBwb3RlbnRpYWxseSBtb3JlIGVuY29tcGFzc2luZyBpbXBsZW1lbnRhdGlvbi4gRXNzZW50aWFsbHksIEkgd2FudCB0byBiZSB0aG9yb3VnaCBpbiBteSBpbml0aWFsIHNlYXJjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTA1NSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE2OjA4LjAzNzQ2OTY1OFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njk3OTM3NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExX0hXU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE2OjA4LjEwNzI2NzU0M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDM3ODI2MDg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgcHJvdmlkZWQgdGV4dDpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBLY29uZmlnIEZpbGUgZm9yIFZpcnR1YWwgV2lyZWxlc3MgRHJpdmVycyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGUga2VybmVsJ3Mgd2lyZWxlc3MgbmV0d29ya2luZyBzZXR1cC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB2aXJ0dWFsIGRyaXZlcnMuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkga25vdyB0aGF0IGBLY29uZmlnYCBmaWxlcyBhcmUgdGhlIGJhY2tib25lIG9mIHRoZSBrZXJuZWwncyBidWlsZCBzeXN0ZW0sIGRlZmluaW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhlcmVmb3JlLCB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBpcyB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZ2AgZmlsZS4gVGhpcyBpcyB3aGVyZSBJJ2QgZXhwZWN0IHRvIGZpbmQgdGhlIHNldHRpbmdzIHRoYXQgZ292ZXJuIHRoZSBjb21waWxhdGlvbiBhbmQgaW5jbHVzaW9uIG9mIHRoZXNlIHZpcnR1YWwgd2lyZWxlc3MgY29tcG9uZW50cy4gSXQgc2hvdWxkIGNvbnRhaW4gdGhpbmdzIGxpa2U6XG5cbiogICBUaGUgbWFpbiBcIlZpcnR1YWwgV2lyZWxlc3NcIiBvcHRpb24gaXRzZWxmLlxuKiAgIFNwZWNpZmljIG9wdGlvbnMgZm9yIHZhcmlvdXMgdmlydHVhbCBkcml2ZXIgZmVhdHVyZXMuXG4qICAgRGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zIG9yIGhhcmR3YXJlLlxuKiAgIEhlbHAgdGV4dCB0byBndWlkZSB1c2VycyBpbiBtYWtpbmcgdGhlIHJpZ2h0IGNob2ljZXMuXG5cbkJ5IGV4YW1pbmluZyB0aGlzIEtjb25maWcsIEkgY2FuIHF1aWNrbHkgZ2V0IGEgaGFuZGxlIG9uIHdoYXQncyBhdmFpbGFibGUsIGhvdyBpdCdzIGVuYWJsZWQsIGFuZCBhbnkgcHJlcmVxdWlzaXRlcy4gSXQgc2hvdWxkIGJlIGEgcHJldHR5IGRpcmVjdCByb3V0ZSB0byB1bmRlcnN0YW5kIGhvdyB0byBlbmFibGUgYW5kIGNvbmZpZ3VyZSB0aGVzZSB2aXJ0dWFsIGRyaXZlcnMuIFRpbWUgdG8gdGFrZSBhIGxvb2shXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0MDksIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzoxNjoxMi41NDUwOTU3NzdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNTk5NTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZz0xPWNvbmZpZyBNQUM4MDIxMV9IV1NJTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZy0yLVxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxMVxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MzpcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnPTE0PWNvbmZpZyBWSVJUX1dJRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMTUtXFx0dHJpc3RhdGUgXFxcIldpZmkgd3JhcHBlciBmb3IgZXRoZXJuZXQgZHJpdmVyc1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTY6XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZy0xNy1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE2OjEyLjU4NjY5OTcxOFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjU3MjEwNTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlcGVuZGVuY3kgQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgTUFDODAyMTFfSFdTSU1gIGFuZCBpdCdzIHByZXR0eSBjbGVhciwgYXQgYSBnbGFuY2UsIHRoYXQgaXQncyBidWlsdCBvbiB0b3Agb2YgYE1BQzgwMjExYC4gVGhhdCBtYWtlcyBzZW5zZTsgaGFyZHdhcmUgc2ltdWxhdGlvbiB1c3VhbGx5IGludm9sdmVzIGludGVyYWN0aW5nIHdpdGggYSBNQUMgbGF5ZXIuIE5vdywgYE1BQzgwMjExYCBpdHNlbGYuLi4gYWgsIGl0IGRlcGVuZHMgb24gYENGRzgwMjExYC4gVGhhdCdzIG5vIHN1cnByaXNlIGVpdGhlciwgZ2l2ZW4gdGhhdCBgQ0ZHODAyMTFgIGhhbmRsZXMgdGhlIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlIGZvciB3aXJlbGVzcyBkZXZpY2VzLiBOb3cgdGhhdCBJIGtub3cgdGhlc2UgcmVsYXRpb25zaGlwcywgbGV0IG1lIGp1c3QgZGl2ZSBkZWVwZXIgaW50byB0aGUgYE1BQzgwMjExYCBkZXBlbmRlbmNpZXMgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciBzdXJwcmlzZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgd2hvbGUgc3RhY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4OTgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzoxNjoxNi4yNDM5MTI0NTJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMDE4NjMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL0tjb25maWc9Mj1jb25maWcgTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVxcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0OlxcdGRlcGVuZHMgb24gQ0ZHODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01LVxcdHNlbGVjdCBDUllQVE9cXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE2PWNvbW1lbnQgXFxcIkNGRzgwMjExIG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIE1BQzgwMjExXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3OlxcdGRlcGVuZHMgb24gQ0ZHODAyMTE9blxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4LVxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXFxubmV0L21hYzgwMjExL0tjb25maWctMzItXFx0cHJvbXB0IFxcXCJEZWZhdWx0IHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6MzM6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9IQVNfUkNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zNC1cXHRkZWZhdWx0IE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQxPWNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctNDItXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6NDM6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ0LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXFxcIlNvbWUgd2lyZWxlc3MgZHJpdmVycyByZXF1aXJlIGEgcmF0ZSBjb250cm9sIGFsZ29yaXRobVxcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo1ODpcXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IE1BQzgwMjExX0hBU19SQz1uXFxubmV0L21hYzgwMjExL0tjb25maWctNTktXFxubmV0L21hYzgwMjExL0tjb25maWc9NjA9Y29uZmlnIE1BQzgwMjExX0tVTklUX1RFU1RcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIG1hYzgwMjExXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxubmV0L21hYzgwMjExL0tjb25maWc6NjI6XFx0ZGVwZW5kcyBvbiBLVU5JVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYzOlxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02NC1cXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9NzA9Y29uZmlnIE1BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03MS1cXHRib29sIFxcXCJFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6NzI6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTczLVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTc5PWNvbmZpZyBNQUM4MDIxMV9MRURTXFxubmV0L21hYzgwMjExL0tjb25maWctODAtXFx0Ym9vbCBcXFwiRW5hYmxlIExFRCB0cmlnZ2Vyc1xcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4MTpcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxubmV0L21hYzgwMjExL0tjb25maWc6ODI6XFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgzLVxcdHNlbGVjdCBMRURTX1RSSUdHRVJTXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz04OD1jb25maWcgTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkV4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1xcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5MDpcXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IENGRzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05MS1cXHRoZWxwXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz05Nz1jb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXFxubmV0L21hYzgwMjExL0tjb25maWctOTgtXFx0Ym9vbCBcXFwiVHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk5OlxcdGRlcGVuZHMgb24gTUFDODAyMTEgXFx1MDAyNlxcdTAwMjYgVFJBQ0lOR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwMC1cXHRoZWxwXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xMTA9bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWctMTExLVxcdGJvb2wgXFxcIlNlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6MTEyOlxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTMtXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MTE2PWNvbmZpZyBNQUM4MDIxMV9OT0lOTElORVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cXHRib29sIFxcXCJEbyBub3QgaW5saW5lIFRYL1JYIGhhbmRsZXJzXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExODpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTktXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MTMyPWNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTMzLVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFxcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzQ6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWctMTM1LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE0Mz1jb25maWcgTUFDODAyMTFfTUxNRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cXHRib29sIFxcXCJWZXJib3NlIG1hbmFnZWQgTUxNRSBvdXRwdXRcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6MTQ1OlxcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Ni1cXHRoZWxwXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xNTQ9Y29uZmlnIE1BQzgwMjExX1NUQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cXHRib29sIFxcXCJWZXJib3NlIHN0YXRpb24gZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NjpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTctXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MTYzPWNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cXHRib29sIFxcXCJWZXJib3NlIEhUIGRlYnVnZ2luZ1xcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjU6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWctMTY2LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE3NT1jb25maWcgTUFDODAyMTFfT0NCX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTc2LVxcdGJvb2wgXFxcIlZlcmJvc2UgT0NCIGRlYnVnZ2luZ1xcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzc6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWctMTc4LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE4Nj1jb25maWcgTUFDODAyMTFfSUJTU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cXHRib29sIFxcXCJWZXJib3NlIElCU1MgZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE4ODpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODktXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MTk3PWNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cXHRib29sIFxcXCJWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1xcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTk6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWctMjAwLVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTIwOT1jb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjEwLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwZWVyIGxpbmsgZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxMTpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTI6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctMjEzLVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTIyMj1jb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyNDpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjU6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctMjI2LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTIzNT1jb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6MjM3OlxcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzODpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzktXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MjQ4PWNvbmZpZyBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHN5bmNocm9uaXphdGlvbiBkZWJ1Z2dpbmdcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6MjUwOlxcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1MTpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTItXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MjU5PWNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI2MTpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNjI6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctMjYzLVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTI3MD1jb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3MS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1xcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzI6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWc6MjczOlxcdGRlcGVuZHMgb24gTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3NC1cXHRoZWxwXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0yODE9Y29uZmlnIE1BQzgwMjExX1RETFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXFx0Ym9vbCBcXFwiVmVyYm9zZSBURExTIGRlYnVnZ2luZ1xcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyODM6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWctMjg0LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTI5Mz1jb25maWcgTUFDODAyMTFfREVCVUdfQ09VTlRFUlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXFx0Ym9vbCBcXFwiRXh0cmEgc3RhdGlzdGljcyBmb3IgVFgvUlggZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5NTpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTY6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL0tjb25maWctMjk3LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6MTY6MTYuMjg1OTM0MzIzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1MjE0NjIyMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCdzIEltcGFjdCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IHNlZSBpdCdzIHRpZWQgdG8gYE1BQzgwMjExX0hXU0lNYCwgd2hpY2gsIG9mIGNvdXJzZSwgcmVsaWVzIG9uIGBNQUM4MDIxMWAsIGFuZCB0aHVzLCBgQ0ZHODAyMTFgLiBUaGF0J3MgdGhlIGNvcmUuIFRoZSBwYXRjaCBmb2N1c2VzIG9uIG1vZGlmeWluZyBgbmw4MDIxMS5jYCBhbmQgYHdleHQtc21lLmNgLCBib3RoIGNydWNpYWwgY29tcG9uZW50cyBvZiBgQ0ZHODAyMTFgLCBlc3BlY2lhbGx5IHNpbmNlIGB3ZXh0LXNtZS5jYCBhbHNvIGhhcyBhIGRlcGVuZGVuY3kgb24gYENGRzgwMjExX1dFWFRgLlxuXG5UaGUgcmVhbCBtZWF0IG9mIHRoZSBjaGFuZ2VzIGludm9sdmVzIGFkZGluZyBhIG5ldyBmdW5jdGlvbiwgYGNmZzgwMjExX3ZhbGlkYXRlX2llc2AuIEl0IGxvb2tzIGxpa2UgdGhpcyBuZXcgdmFsaWRhdGlvbiBmdW5jdGlvbiBpcyBiZWluZyBpbnRlZ3JhdGVkIGludG8gc2V2ZXJhbCBrZXkgYXJlYXM6IGB2YWxpZGF0ZV9iZWFjb25faGVhZGAgYW5kIGB2YWxpZGF0ZV9pZV9hdHRyYCB3aXRoaW4gYG5sODAyMTEuY2AsIGFuZCBgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZWAgd2l0aGluIGB3ZXh0LXNtZS5jYC4gVGhlc2UgYXJlIGltcG9ydGFudCBiZWNhdXNlIHRoZXkgYXJlIHRoZSB1c2VyLXNwYWNlIGludGVyZmFjZXM6IHRoZSBuZXRsaW5rIChubDgwMjExKSBwYXRoIGFuZCB0aGUgaW9jdGwgKHdleHQpIHBhdGgsIHJlc3BlY3RpdmVseS5cblxuUmlnaHQgbm93LCBteSBmb2N1cyBpcyBvbiBgdmFsaWRhdGVfYmVhY29uX2hlYWRgIGFuZCBgdmFsaWRhdGVfaWVfYXR0cmAgd2l0aGluIGBubDgwMjExLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGUgdmFsaWRhdGlvbiBmdW5jdGlvbiBpcyBiZWluZyB1c2VkIGluIHRob3NlIGNvbnRleHRzLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMjI2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE2OjIxLjgwNzM5ODg0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjIxMjI5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2YWxpZGF0ZV9iZWFjb25faGVhZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MjIxPWNmZzgwMjExX2dldF9kZXZfZnJvbV9pbmZvKHN0cnVjdCBuZXQgKm5ldG5zLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMjUtXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyMjY6c3RhdGljIGludCB2YWxpZGF0ZV9iZWFjb25faGVhZChjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjI3LVxcdFxcdFxcdFxcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9NjM0PW5sODAyMTFfczFnX3Nob3J0X2JlYWNvbltOTDgwMjExX1MxR19TSE9SVF9CRUFDT05fQVRUUl9NQVggKyAxXSA9IHtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTYzNS1cXHRbTkw4MDIxMV9TMUdfU0hPUlRfQkVBQ09OX0FUVFJfSEVBRF0gPVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NjM2OlxcdFxcdE5MQV9QT0xJQ1lfVkFMSURBVEVfRk4oTkxBX0JJTkFSWSwgdmFsaWRhdGVfYmVhY29uX2hlYWQsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy02MzctXFx0XFx0XFx0XFx0ICAgICAgIElFRUU4MDIxMV9NQVhfREFUQV9MRU4pLFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz02ODk9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IG5sODAyMTFfcG9saWN5W05VTV9OTDgwMjExX0FUVFJdID0ge1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy03MzYtXFx0W05MODAyMTFfQVRUUl9CRUFDT05fSEVBRF0gPVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NzM3OlxcdFxcdE5MQV9QT0xJQ1lfVkFMSURBVEVfRk4oTkxBX0JJTkFSWSwgdmFsaWRhdGVfYmVhY29uX2hlYWQsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy03MzgtXFx0XFx0XFx0XFx0ICAgICAgIElFRUU4MDIxMV9NQVhfREFUQV9MRU4pLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzoxNjoyMS44NDk2MTM3MDFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI0NjY5NzI2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgTmV0bGluayBBdHRyaWJ1dGUgVmFsaWRhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgbWluZCBpbW1lZGlhdGVseSBmbGFncyBgdmFsaWRhdGVfYmVhY29uX2hlYWRgIGFuZCBgdmFsaWRhdGVfaWVfYXR0cmAgYXMgc3BlY2lmaWMgdmFsaWRhdGlvbiBmdW5jdGlvbnMgd2l0aGluIGEgbmV0bGluayBjb250ZXh0LiBUaGUgdXNlIG9mIFwidmFsaWRhdGVcIiBzY3JlYW1zIHRoYXQgdGhlc2UgYXJlIGRlc2lnbmVkIHRvIGVuZm9yY2Ugc3BlY2lmaWMgcnVsZXMgb3IgY29uc3RyYWludHMgb24gaW5jb21pbmcgbmV0bGluayBhdHRyaWJ1dGVzLiBJ4oCZbSBndWVzc2luZywgZ2l2ZW4gdGhlIG5hbWVzLCB0aGF0IGB2YWxpZGF0ZV9iZWFjb25faGVhZGAgcHJvYmFibHkgZm9jdXNlcyBvbiB2YWxpZGF0aW5nIHRoZSBoZWFkZXIgaW5mb3JtYXRpb24gcmVsYXRlZCB0byBiZWFjb24gZnJhbWVzLCBwZXJoYXBzIGVuc3VyaW5nIGNvcnJlY3QgZmllbGQgbGVuZ3RocywgbWFnaWMgbnVtYmVycywgb3IgZmxhZyBzZXR0aW5ncy4gV2UncmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBjcml0aWNhbCBjb250cm9sIGluZm9ybWF0aW9uIGhlcmUsIGdpdmVuIHRoZSBpbXBvcnRhbmNlIG9mIGEgYmVhY29uJ3Mgc3RydWN0dXJlLlxuXG5gdmFsaWRhdGVfaWVfYXR0cmAuLi4gd2VsbCwgdGhhdOKAmXMgd2hlcmUgdGhpbmdzIGNhbiBnZXQgaW50ZXJlc3RpbmcuIFwiSUVcIiBvZiBjb3Vyc2Ugc3RhbmRzIGZvciBJbmZvcm1hdGlvbiBFbGVtZW50LiBUaGlzIGZ1bmN0aW9uIGlzIHRhc2tlZCB3aXRoIGVuc3VyaW5nIHRoZXNlIGluZm9ybWF0aW9uIGVsZW1lbnRzIGNvbnRhaW5lZCBpbiBhIG5ldGxpbmsgbWVzc2FnZSBhZGhlcmUgdG8gdGhlIGRlZmluZWQgc3RhbmRhcmRzLCBvciBwZXJoYXBzIGFwcGxpY2F0aW9uLXNwZWNpZmljIGNvbnN0cmFpbnRzLiBJJ2xsIG5lZWQgdG8ga25vdyBtb3JlIGFib3V0IHRoZSBuZXRsaW5rIGF0dHJpYnV0ZXMgaW52b2x2ZWQsIG9mIGNvdXJzZSwgYnV0IGJhc2VkIHNvbGVseSBvbiBuYW1pbmcsIHRoaXMgY291bGQgYmUgYW55dGhpbmcgZnJvbSBwYXJzaW5nIGFuZCB2YWxpZGF0aW5nIGEgc3BlY2lmaWMgSUUgdHlwZSBsaWtlIHRoZSBTU0lEIG9yIFN1cHBvcnRlZCBSYXRlcywgb3Igc29tZXRoaW5nIGZhciBtb3JlIGNvbXBsZXgsIHBvdGVudGlhbGx5IGludm9sdmluZyB2ZW5kb3Itc3BlY2lmaWMgSUVzLlxuXG5NeSBhc3N1bXB0aW9uIGlzIHRoYXQgYm90aCBmdW5jdGlvbnMgYXJlIGxpa2VseSBwYXJ0IG9mIGEgbGFyZ2VyIG5ldGxpbmsgbWVzc2FnZSBwcm9jZXNzaW5nIHBpcGVsaW5lLCB3aGVyZSBlYWNoIGF0dHJpYnV0ZSAob3IgZ3JvdXAgb2YgYXR0cmlidXRlcykgdW5kZXJnb2VzIHNwZWNpZmljIHZhbGlkYXRpb24gc3RlcHMgdG8gZW5zdXJlIGRhdGEgaW50ZWdyaXR5IGFuZCBwcmV2ZW50IHBvdGVudGlhbCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMgb3Igc3lzdGVtIGluc3RhYmlsaXR5LiBXaXRob3V0IG1vcmUgY29udGV4dCwgSSdkIGltYWdpbmUgd2UncmUgZGVhbGluZyB3aXRoIGVpdGhlciBkcml2ZXItbGV2ZWwgZnVuY3Rpb25hbGl0eSBvciBtYXliZSBzb21ldGhpbmcgZGVlcGVyIHdpdGhpbiBhIG5ldHdvcmsgbWFuYWdlbWVudCBzdGFjay4gVGhlIGRldmlsLCBhcyBhbHdheXMsIGlzIGluIHRoZSBkZXRhaWxzLCBzbyBJJ2QgbmVlZCB0byBkaXZlIGludG8gdGhlIGNvZGViYXNlIGFuZCBhbmFseXplIGV4YWN0bHkgd2hhdCB0aGV5IGFyZSBjaGVja2luZyBhbmQgaG93IHRoZXkgYXJlIGxldmVyYWdlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQyODcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzoxNjoyNy4wOTYzMTI4OThaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxODk0MzAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZhbGlkYXRlX2llX2F0dHJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3dpcmVsZXNzL25sODAyMTEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTIyNj1zdGF0aWMgaW50IHZhbGlkYXRlX2JlYWNvbl9oZWFkKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2Ny1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI2ODpzdGF0aWMgaW50IHZhbGlkYXRlX2llX2F0dHIoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2OS1cXHRcXHRcXHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz02MzQ9bmw4MDIxMV9zMWdfc2hvcnRfYmVhY29uW05MODAyMTFfUzFHX1NIT1JUX0JFQUNPTl9BVFRSX01BWCArIDFdID0ge1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy02MzgtXFx0W05MODAyMTFfUzFHX1NIT1JUX0JFQUNPTl9BVFRSX1RBSUxdID1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjYzOTpcXHRcXHROTEFfUE9MSUNZX1ZBTElEQVRFX0ZOKE5MQV9CSU5BUlksIHZhbGlkYXRlX2llX2F0dHIsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy02NDAtXFx0XFx0XFx0XFx0ICAgICAgIElFRUU4MDIxMV9NQVhfREFUQV9MRU4pLFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz02NjI9bmw4MDIxMV9uYW5fY29uZl9wb2xpY3lbTkw4MDIxMV9OQU5fQ09ORl9BVFRSX01BWCArIDFdID0ge1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy02NjgtXFx0W05MODAyMTFfTkFOX0NPTkZfVkVORE9SX0VMRU1TXSA9XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo2Njk6XFx0XFx0TkxBX1BPTElDWV9WQUxJREFURV9GTihOTEFfQklOQVJZLCB2YWxpZGF0ZV9pZV9hdHRyLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNjcwLVxcdFxcdFxcdFxcdCAgICAgICBJRUVFODAyMTFfTUFYX0RBVEFfTEVOKSxcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9Njg5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBubDgwMjExX3BvbGljeVtOVU1fTkw4MDIxMV9BVFRSXSA9IHtcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNzM5LVxcdFtOTDgwMjExX0FUVFJfQkVBQ09OX1RBSUxdID1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjc0MDpcXHRcXHROTEFfUE9MSUNZX1ZBTElEQVRFX0ZOKE5MQV9CSU5BUlksIHZhbGlkYXRlX2llX2F0dHIsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy03NDEtXFx0XFx0XFx0XFx0ICAgICAgIElFRUU4MDIxMV9NQVhfREFUQV9MRU4pLFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy03NzgtXFx0W05MODAyMTFfQVRUUl9JRV0gPSBOTEFfUE9MSUNZX1ZBTElEQVRFX0ZOKE5MQV9CSU5BUlksXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo3Nzk6XFx0XFx0XFx0XFx0XFx0XFx0ICAgdmFsaWRhdGVfaWVfYXR0cixcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTc4MC1cXHRcXHRcXHRcXHRcXHRcXHQgICBJRUVFODAyMTFfTUFYX0RBVEFfTEVOKSxcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtODQ0LVxcdFtOTDgwMjExX0FUVFJfSUVfUFJPQkVfUkVTUF0gPVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6ODQ1OlxcdFxcdE5MQV9QT0xJQ1lfVkFMSURBVEVfRk4oTkxBX0JJTkFSWSwgdmFsaWRhdGVfaWVfYXR0cixcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTg0Ni1cXHRcXHRcXHRcXHQgICAgICAgSUVFRTgwMjExX01BWF9EQVRBX0xFTiksXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy04NDctXFx0W05MODAyMTFfQVRUUl9JRV9BU1NPQ19SRVNQXSA9XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo4NDg6XFx0XFx0TkxBX1BPTElDWV9WQUxJREFURV9GTihOTEFfQklOQVJZLCB2YWxpZGF0ZV9pZV9hdHRyLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtODQ5LVxcdFxcdFxcdFxcdCAgICAgICBJRUVFODAyMTFfTUFYX0RBVEFfTEVOKSxcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9NjUwND1ubDgwMjExX3BhcnNlX21ic3NpZF9lbGVtcyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmxhdHRyICphdHRycyxcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNjUxNy1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjY1MTg6XFx0XFx0cmV0ID0gdmFsaWRhdGVfaWVfYXR0cihubF9lbGVtcywgZXh0YWNrKTtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTY1MTktXFx0XFx0aWYgKHJldClcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9NjU0MT1ubDgwMjExX3BhcnNlX3Jucl9lbGVtcyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmxhdHRyICphdHRycyxcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNjU1MS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjY1NTI6XFx0XFx0cmV0ID0gdmFsaWRhdGVfaWVfYXR0cihubF9lbGVtcywgZXh0YWNrKTtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTY1NTMtXFx0XFx0aWYgKHJldClcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTAyMTY9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTEwMjI0LVxcdFtOTDgwMjExX01FU0hfU0VUVVBfSUVdID1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjEwMjI1OlxcdFxcdE5MQV9QT0xJQ1lfVkFMSURBVEVfRk4oTkxBX0JJTkFSWSwgdmFsaWRhdGVfaWVfYXR0cixcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTEwMjI2LVxcdFxcdFxcdFxcdCAgICAgICBJRUVFODAyMTFfTUFYX0RBVEFfTEVOKSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6MTY6MjcuMTM4MjEyNjI5WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MDkyNTM0ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb2RlIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBvdmVyIHRoZXNlIGNoYW5nZXMsIGFuZCBteSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGUgZnVuY3Rpb25zIGludm9sdmVkIGFyZSBkZWZpbml0ZWx5IHdvcmtpbmcgYXMgZXhwZWN0ZWQ7IHRoZXkgYXJlIHJlYWNoYWJsZSBhbmQgYXBwZWFyIHRvIGZ1bmN0aW9uIHByb3Blcmx5LiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIHJlZmFjdG9yaW5nIHRoZSBJRSAoSW5mb3JtYXRpb24gRWxlbWVudCkgdmFsaWRhdGlvbiBsb2dpYyBmb3IgdGhlIElFIHZhbGlkYXRpb24gaW50byBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYC4gVGhlbiwgaXQncyBpbnRlZ3JhdGVkIHRoaXMgcmVmYWN0b3JlZCB2YWxpZGF0aW9uIGZ1bmN0aW9uIGludG8gYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgIHdpdGhpbiBgd2V4dC1zbWUuY2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYWltZWQgYXQgYWRkaW5nIHZhbGlkYXRpb24gdG8gYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgLCBzcGVjaWZpY2FsbHkuIEkgc2hvdWxkIHRha2UgYSBsb29rIGF0IHRoZSBgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZWAgZnVuY3Rpb24gZGlyZWN0bHkuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgaW50ZWdyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MDkyLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE2OjMxLjU0NzQ2ODA1OVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIxMzIzNDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2ZnODAyMTFfd2V4dF9zaXdnZW5pZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3Mvd2V4dC1zbWUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3Mvd2V4dC1zbWUuYz0yNzM9aW50IGNmZzgwMjExX21nZF93ZXh0X2dpd2FwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvd2V4dC1zbWUuYy0yOTctXFxubmV0L3dpcmVsZXNzL3dleHQtc21lLmM6Mjk4OmludCBjZmc4MDIxMV93ZXh0X3Npd2dlbmllKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L3dpcmVsZXNzL3dleHQtc21lLmMtMjk5LVxcdFxcdFxcdCAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE2OjMxLjU4OTYwMjQyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3OTIwNjU2MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLi4uIHRoZSBxdWVzdGlvbiBpczogaXMgYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgIGFjdHVhbGx5IGV4cG9ydGVkIGZvciB1c2UgZXh0ZXJuYWxseSwgb3IgaXMgaXQgbWVyZWx5IGx1cmtpbmcgaW5zaWRlIGEgc3RydWN0IHNvbWV3aGVyZT8gVGhhdCdzIHRoZSBjcnV4IG9mIGl0LiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgb2YgaXRzIGFjY2Vzc2liaWxpdHkuIElzIGl0IGEgcHVibGljLWZhY2luZyBBUEkgZnVuY3Rpb24sIG9yIGlzIGl0IG1vcmUgb2YgYSBoZWxwZXIsIGludGVybmFsIHRvIGEgcGFydGljdWxhciBtb2R1bGUgb3Igc3RydWN0dXJlIHdpdGhpbiB0aGUga2VybmVsJ3Mgd2lyZWxlc3Mgc3Vic3lzdGVtPyBLbm93aW5nIHRoaXMgZnVuZGFtZW50YWxseSBpbXBhY3RzIGhvdyBJIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UgYW5kIHBvdGVudGlhbCBpbXBhY3Qgb24gb3RoZXIgY29tcG9uZW50cyBhbmQgZnV0dXJlIGtlcm5lbCBkZXZlbG9wbWVudC4gSSBuZWVkIHRvIGNoZWNrIHRoZSBzeW1ib2wgdGFibGUsIHRoZSByZWxldmFudCBoZWFkZXIgZmlsZXMsIGFuZCBwb3NzaWJseSB0cmFjZSBpdHMgdXNhZ2Ugd2l0aGluIHRoZSBrZXJuZWwgc291cmNlIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUuIFRoZSBpbXBsaWNhdGlvbnMgZm9yIHRoZSBkZXNpZ24gYW5kIG1haW50YWluYWJpbGl0eSBvZiB0aGUgd2lyZWxlc3Mgc3RhY2ssIGFuZCBwYXJ0aWN1bGFybHkgdGhlIHdleHQgY29tcGF0aWJpbGl0eSBsYXllciwgZGVwZW5kIG9uIHRoZSBhbnN3ZXIuIElmIGl0J3MgaW50ZXJuYWwsIHJlZmFjdG9yaW5nIG9yIHJlcGxhY2luZyBpdCBiZWNvbWVzIGEgbGVzcyBzZW5zaXRpdmUgaXNzdWUsIHZlcnN1cyBhbiBleHRlcm5hbGx5LWZhY2luZyBmdW5jdGlvbiB0aGF0IG1pZ2h0IGJyZWFrIHVzZXJzcGFjZSBiaW5hcmllcy4gSSdsbCBuZWVkIHRvIGRpZyBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NTYzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6MTY6MzUuMzgxNjcwOTE0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzA5MDE2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZmc4MDIxMV93ZXh0X3Npd2dlbmllXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL3dleHQtY29tcGF0LmM9MTQ4ND1zdGF0aWMgY29uc3QgaXdfaGFuZGxlciBjZmc4MDIxMV9oYW5kbGVyc1tdID0ge1xcbi0tXFxubmV0L3dpcmVsZXNzL3dleHQtY29tcGF0LmMtMTUxMS1cXHRJV19IQU5ETEVSKFNJT0NHSVdQT1dFUixcXHRjZmc4MDIxMV93ZXh0X2dpd3Bvd2VyKSxcXG5uZXQvd2lyZWxlc3Mvd2V4dC1jb21wYXQuYzoxNTEyOlxcdElXX0hBTkRMRVIoU0lPQ1NJV0dFTklFLFxcdGNmZzgwMjExX3dleHRfc2l3Z2VuaWUpLFxcbm5ldC93aXJlbGVzcy93ZXh0LWNvbXBhdC5jLTE1MTMtXFx0SVdfSEFORExFUihTSU9DU0lXQVVUSCxcXHRcXHRjZmc4MDIxMV93ZXh0X3Npd2F1dGgpLFxcbi0tXFxubmV0L3dpcmVsZXNzL3dleHQtY29tcGF0Lmg9NDY9aW50IGNmZzgwMjExX3dleHRfc2l3bWxtZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL3dleHQtY29tcGF0LmgtNDgtXFx0XFx0XFx0ICB1bmlvbiBpd3JlcV9kYXRhICp3cnF1LCBjaGFyICpleHRyYSk7XFxubmV0L3dpcmVsZXNzL3dleHQtY29tcGF0Lmg6NDk6aW50IGNmZzgwMjExX3dleHRfc2l3Z2VuaWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvd2lyZWxlc3Mvd2V4dC1jb21wYXQuaC01MC1cXHRcXHRcXHQgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLFxcbi0tXFxubmV0L3dpcmVsZXNzL3dleHQtc21lLmM9MjczPWludCBjZmc4MDIxMV9tZ2Rfd2V4dF9naXdhcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL3dleHQtc21lLmMtMjk3LVxcbm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jOjI5ODppbnQgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jLTI5OS1cXHRcXHRcXHQgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzoxNjozNS40MjQ3NjYyMzVaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODcxMjYzMDkxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBTSU9DU0lXR0VOSUUgaW9jdGwgSGFuZGxlcioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IGZpeGluZyBhIHByb2JsZW0gd2l0aCBgU0lPQ1NJV0dFTklFYC4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIHRoZXJlJ3MgYSBidWcgdGhhdCBhbGxvd3MgaXQgdG8gYWNjZXB0IGludmFsaWQgSUVzLCB3aGljaCBpcyBhIGJpZyBkZWFsLiBEZWZpbml0ZWx5IHdvcnRoIGEgZnV6emluZyBjYW1wYWlnbiB0byBpZGVudGlmeSBhbnkgdnVsbmVyYWJpbGl0aWVzLlxuXG5UaGUga2V5IHN5bWJvbHMgSSBuZWVkIHRvIGZvY3VzIG9uIGZvciB0aGlzIGFyZSBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYCwgYHZhbGlkYXRlX2JlYWNvbl9oZWFkYCwgYHZhbGlkYXRlX2llX2F0dHJgLCBhbmQgYWxzbywgb2J2aW91c2x5LCBgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZWAuIFRob3NlIGFyZSB0aGUgZW50cnkgcG9pbnRzIGFuZCB2YWxpZGF0aW9uIGZ1bmN0aW9ucyBJJ2xsIG5lZWQgdG8gaGl0LlxuXG5Gb3IgdGhlIGtlcm5lbCBjb25maWdzLCBJJ2xsIG5lZWQgYENGRzgwMjExYCwgYENGRzgwMjExX1dFWFRgLCBgTUFDODAyMTFgLCBhbmQgYE1BQzgwMjExX0hXU0lNYC4gSSB3YXMgYnJpZWZseSBzZWNvbmQtZ3Vlc3NpbmcgYE1BQzgwMjExX0hXU0lNYCwgdGhpbmtpbmcgbWF5YmUgaXQgd2Fzbid0IHN0cmljdGx5ICpyZXF1aXJlZCogZm9yIG5ldGxpbmsvaW9jdGwgZnV6emluZyBvZiBgQ0ZHODAyMTFgLCBidXQgaXQncyByZWFsbHkgdGhlIGVhc2llc3Qgd2F5IHRvIHNwaW4gdXAgc29tZSB3aXJlbGVzcyBkZXZpY2VzLlxuXG5MZXQncyBxdWlja2x5IGNvbmZpcm0sIHllcywgYE1BQzgwMjExX0hXU0lNYCBpcyBzdGlsbCB0aGUgYmVzdCBhcHByb2FjaC4gSXQgcHJvdmlkZXMgdGhvc2UgY29udmVuaWVudCBmYWtlIHdpcmVsZXNzIGRldmljZXMgdGhhdCBJIGNhbiBpbnRlcmFjdCB3aXRoIHVzaW5nIGJvdGggYG5sODAyMTFgIGFuZCBgd2V4dGAsIHdoaWNoIGlzIHBlcmZlY3QgZm9yIHRoaXMuXG5cbkFuZCwgcmlnaHQsIEknbGwgZGVmaW5pdGVseSBuZWVkIGBDRkc4MDIxMV9XRVhUYCBlbmFibGVkLiBJIGNhbid0IGZvcmdldCB0aGF0IGl0J3MgbmVlZGVkIGZvciB0aGUgYHdleHQtc21lLmNgIGNvbXBvbmVudC4gQW5kIHRoYXQgbWVhbnMgYFdFWFRfQ09SRWAgaXMgYWxzbyBnb2luZyB0byBiZSBwdWxsZWQgaW4gYmVjYXVzZSBpdCdzIHNlbGVjdGVkIGJ5IGBDRkc4MDIxMV9XRVhUYCwgc28gdGhhdCBpcyBhbHNvIGdvb2QgdG8gZ28uIExldCdzIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYENGRzgwMjExX1dFWFRgIGlzIGNvcnJlY3QgaW4gdGhlIGBuZXQvd2lyZWxlc3MvS2NvbmZpZ2AgZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTczMTksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6MTY6NDQuMTM3Mzk5MzE4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTMwNTUxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQ0ZHODAyMTFfV0VYVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZz0xNzc9Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE4Nzpjb25maWcgQ0ZHODAyMTFfV0VYVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJjZmc4MDIxMSB3aXJlbGVzcyBleHRlbnNpb25zIGNvbXBhdGliaWxpdHlcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE2OjQ0LjE3ODcwNjQxOVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTg4MzczODUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvbmZpZ3VyYXRpb24gQ29udW5kcnVtKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byB3cmFwIG15IGhlYWQgYXJvdW5kIHRoZXNlIGNvbmZpZ3VyYXRpb25zLiBGaXJzdCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ3ZlIGdvdCB0aGlzIHN0cmFpZ2h0LiBXYWl0IGEgbWludXRlLCBgQ0ZHODAyMTFfV0VYVGAgaXMgYWN0dWFsbHkgYSBgYm9vbGAsIG5vdCBhIHRyaXN0YXRlLiBHb29kIHRvIGtlZXAgaW4gbWluZCwgSSBuZWVkIHRvIGJlIGV4YWN0IGhlcmUuXG5cbk5vdywgbGV0J3Mgc2VlLCBgTUFDODAyMTFfSFdTSU1gLi4uIHRoYXQgb25lICppcyogYSBgdHJpc3RhdGVgLCByaWdodD8gWWVzLCBjb25maXJtZWQuIE9rYXksIGdyZWF0LiBUaGF0IG1lYW5zIHRvIGVuYWJsZSB0aGlzIHNldHVwLCBJIG5lZWQgdG8gY29uZmlndXJlIHRoZSBmb2xsb3dpbmc6IGBDRkc4MDIxMWAsIGBDRkc4MDIxMV9XRVhUYCwgYE1BQzgwMjExYCwgYW5kIGBNQUM4MDIxMV9IV1NJTWAuIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCB0aGUgZGVwZW5kZW5jaWVzIGZvciBgQ0ZHODAyMTFfV0VYVGAgZG9uJ3QgaW50cm9kdWNlIGFueSBoaWRkZW4gZ290Y2hhcy4gSXQgd291bGQgYmUgYSBuaWdodG1hcmUgdG8gZGVidWcgbGF0ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MjQ2LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE2OjQ4Ljc2NzA4MjM2WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDg4NzgwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnPTU9Y29uZmlnIFdFWFRfQ09SRVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTYtXFx0ZGVmX2Jvb2wgeVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjc6XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMV9XRVhUIHx8IFdJUkVMRVNTX0VYVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc9OT1jb25maWcgV0VYVF9QUk9DXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTAtXFx0ZGVmX2Jvb2wgeVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjExOlxcdGRlcGVuZHMgb24gUFJPQ19GU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEyOlxcdGRlcGVuZHMgb24gV0VYVF9DT1JFXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTMtXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0xNz1jb25maWcgQ0ZHODAyMTFcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiY2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVxcXCJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTpcXHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXFxubmV0L3dpcmVsZXNzL0tjb25maWctMjAtXFx0c2VsZWN0IEZXX0xPQURFUlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWc9Njg9Y29uZmlnIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY5LVxcdGJvb2wgXFxcImNmZzgwMjExIGNlcnRpZmljYXRpb24gb251c1xcXCJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo3MDpcXHRkZXBlbmRzIG9uIEVYUEVSVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTcxLVxcdGRlZmF1bHQgblxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWc9OTk9Y29uZmlnIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTAxLVxcdGRlZmF1bHQgeVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEwMjpcXHRkZXBlbmRzIG9uIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTAzLVxcdGhlbHBcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnPTExMT1jb25maWcgQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVxcdHN0cmluZyBcXFwiYWRkaXRpb25hbCByZWdkYiBrZXkgZGlyZWN0b3J5XFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTM6XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMV9SRVFVSVJFX1NJR05FRF9SRUdEQlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExNC1cXHRoZWxwXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0xMjI9Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cXHRib29sIFxcXCJjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1xcXCJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjQ6XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjUtXFx0aGVscFxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWc9MTM1PWNvbmZpZyBDRkc4MDIxMV9SRUdfUkVMQVhfTk9fSVJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzYtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgc3VwcG9ydCBmb3IgTk9fSVIgcmVsYXhhdGlvblxcXCJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzc6XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzgtXFx0aGVscFxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWc9MTY5PWNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVxcdGJvb2wgXFxcImNmZzgwMjExIERlYnVnRlMgZW50cmllc1xcXCJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzE6XFx0ZGVwZW5kcyBvbiBERUJVR19GU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Mi1cXHRoZWxwXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0xOTQ9Y29uZmlnIENGRzgwMjExX0tVTklUX1RFU1RcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTUtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBjZmc4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5NjpcXHRkZXBlbmRzIG9uIEtVTklUXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk3OlxcdGRlcGVuZHMgb24gQ0ZHODAyMTFcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTgtXFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6MTY6NDguODExOTczODhaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcxODgxMjUwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYENGRzgwMjExX1dFWFRgIG1vZHVsZSBhbmQgaXQncyBpbW1lZGlhdGVseSBhcHBhcmVudCB0aGF0IGl0cyBpbmNsdXNpb24gaXMgY29uZGl0aW9uYWwuIFRoZSBjb2RlIHN0cnVjdHVyZSB0ZWxscyBtZSBpdCdzIG5lc3RsZWQgd2l0aGluIGFuIGBpZiBDRkc4MDIxMWAgYmxvY2suIFRoaXMgbWVhbnMgYENGRzgwMjExX1dFWFRgIGlzIGRlcGVuZGVudCBvbiB0aGUgYENGRzgwMjExYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gTm93LCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgYW5kIHRyYWNlIHRoaXMgZGVwZW5kZW5jeSBwcm9wZXJseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGBpZiBDRkc4MDIxMWAgaW4gdGhlIGtlcm5lbCdzIEtjb25maWcgZmlsZXMuIFNwZWNpZmljYWxseSwgSSdsbCBoZWFkIG92ZXIgdG8gYG5ldC93aXJlbGVzcy9LY29uZmlnYCB0byBjb25maXJtIHRoaXMgZGVwZW5kZW5jeSBhbmQgdW5kZXJzdGFuZCBleGFjdGx5IGhvdyBpdCdzIGNvbmZpZ3VyZWQuIFRoYXQncyB0aGUgbG9naWNhbCBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NTU2LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6MTY6NTIuNTMwNzg5NjRaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NjYzOTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlmIENGRzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnPTE3PWNvbmZpZyBDRkc4MDIxMVxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMjQtXFx0IyAodGhpcyBpcyBoZXJlIHJhdGhlciB0aGFuIGJlbG93IHRvIGFsbG93IGl0IHRvIGJlIGEgbW9kdWxlKVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjI1OlxcdHNlbGVjdCBDUllQVE9fU0hBMjU2IGlmIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTI2LVxcdGhlbHBcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTM1LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjM2OmlmIENGRzgwMjExXFxubmV0L3dpcmVsZXNzL0tjb25maWctMzctXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz04OT1jb25maWcgQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo5MDpcXHRib29sIFxcXCJyZXF1aXJlIHJlZ2RiIHNpZ25hdHVyZVxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxubmV0L3dpcmVsZXNzL0tjb25maWctOTEtXFx0ZGVmYXVsdCB5XFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz05OT1jb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTAwOlxcdGJvb2wgXFxcImFsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMS1cXHRkZWZhdWx0IHlcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnPTExMT1jb25maWcgQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTEyOlxcdHN0cmluZyBcXFwiYWRkaXRpb25hbCByZWdkYiBrZXkgZGlyZWN0b3J5XFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTMtXFx0ZGVwZW5kcyBvbiBDRkc4MDIxMV9SRVFVSVJFX1NJR05FRF9SRUdEQlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzoxNjo1Mi41Nzc0NTgxN1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NDg3NzI3NDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2g6IFdpcmVsZXNzIElFUyBWYWxpZGF0aW9uKipcblxuT2theSwgc28gYENGRzgwMjExX1dFWFRgIGlzIGRlZmluaXRlbHkgZW5hYmxlZCwgc28gdGhhdCdzIG5vdCBhIGNvbmNlcm4uIFRoZSBwYXRjaCBtb2RpZmllcyBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYCB3aXRoaW4gYG5ldC93aXJlbGVzcy91dGlsLmNgLiBSaWdodCwgYW5kIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gc2V2ZXJhbCBwbGFjZXM6IGB2YWxpZGF0ZV9iZWFjb25faGVhZGAgYW5kIGB2YWxpZGF0ZV9pZV9hdHRyYCBpbiBgbmw4MDIxMS5jYCwgYW5kIGFsc28gYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgIGluIGB3ZXh0LXNtZS5jYC4gVGhvc2UgYWxsIGxvb2sgbGlrZSByZWFzb25hYmxlIGVudHJ5IHBvaW50cyBmb3IgdGVzdGluZywgZ2l2ZW4gdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2UuIFNvLCB0aGUga2V5IHN5bWJvbHMgSSBuZWVkIHRvIGZvY3VzIG9uIGFyZSBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYCwgYHZhbGlkYXRlX2JlYWNvbl9oZWFkYCwgYHZhbGlkYXRlX2llX2F0dHJgLCBhbmQgYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgLlxuXG5Ob3csIHRoZSBxdWVzdGlvbiBpcywgaXMgYGNmZzgwMjExX3ZhbGlkYXRlX2llc2AgYWN0dWFsbHkgZXhwb3J0ZWQ/IEluaXRpYWxseSwgSSB0aG91Z2h0IG5vdCwgYmVjYXVzZSB0aGUgcGF0Y2ggZG9lc24ndCBleHBsaWNpdGx5IGBFWFBPUlRfU1lNQk9MYCBpdC4gTGV0IG1lIGxvb2sgYXQgdGhlIGNvZGU6XG5cbmBgYGNcbitib29sIGNmZzgwMjExX3ZhbGlkYXRlX2llcyhjb25zdCB1OCAqZGF0YSwgaW50IGxlbilcbit7XG4rXHRjb25zdCBzdHJ1Y3QgZWxlbWVudCAqZWxlbTtcbitcbitcdGZvcl9lYWNoX2VsZW1lbnQoZWxlbSwgZGF0YSwgbGVuKSB7XG4rXHRcdC8qIG5vdGhpbmcgKi9cbitcdH1cbitcbitcdHJldHVybiBmb3JfZWFjaF9lbGVtZW50X2NvbXBsZXRlZChlbGVtLCBkYXRhLCBsZW4pO1xuK31cbmBgYFxuXG5Pa2F5LCBpdCdzIG5vdCBleHBvcnRlZCBpbiB0aGUgdHJhZGl0aW9uYWwgd2F5LCBidXQgd2FpdCwgbG9va2luZyBjbG9zZXIuLi4gdGhlIGRpZmYgKmRvZXMqIGFkZCBpdCB0byBgbmV0L3dpcmVsZXNzL25sODAyMTEuaGAuIEFoYSFcblxuYGBgY1xuLS0tIGEvbmV0L3dpcmVsZXNzL25sODAyMTEuaFxuKysrIGIvbmV0L3dpcmVsZXNzL25sODAyMTEuaFxuQEAgLTEyOSw0ICsxMjksNiBAQCBpbnQgbmw4MDIxMV9wbXNyX3N0YXJ0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xuIHZvaWQgbmw4MDIxMV9tbG9fcmVjb25mX2FkZF9kb25lKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0XHQgc3RydWN0IGNmZzgwMjExX21sb19yZWNvbmZfZG9uZV9kYXRhICpkYXRhKTtcbiBcbitib29sIGNmZzgwMjExX3ZhbGlkYXRlX2llcyhjb25zdCB1OCAqZGF0YSwgaW50IGxlbik7XG4rXG4gI2VuZGlmIC8qIF9fTkVUX1dJUkVMRVNTX05MODAyMTFfSCAqL1xuYGBgXG5cblNvLCBpdCdzIGRlY2xhcmVkIGluIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5oYCAqYW5kKiBgbmV0L3dpcmVsZXNzL3dleHQtY29tcGF0LmhgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCdzIGJlaW5nIHVzZWQgYnkgYHdleHQtc21lLmNgLCBzbyBpdCBzaG91bGQgYmUgYXZhaWxhYmxlLiBMZXQncyBtYWtlIHN1cmUgYHdleHQtc21lLmNgIGFjdHVhbGx5IGluY2x1ZGVzIGBubDgwMjExLmhgLiBJJ2xsIGhhdmUgdG8gY2hlY2sgdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyMzMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6MTc6MDIuMDY1MTg4NTg0WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDY4NzI3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJubDgwMjExXFxcXC5oXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jLTE1LSNpbmNsdWRlIFxcXCJ3ZXh0LWNvbXBhdC5oXFxcIlxcbm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jOjE2OiNpbmNsdWRlIFxcXCJubDgwMjExLmhcXFwiXFxubmV0L3dpcmVsZXNzL3dleHQtc21lLmMtMTctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE3OjAyLjEwOTg4Mjg1NFoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDE5OTcwNzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBGdW5jdGlvbiBVc2FnZSBmb3IgUG90ZW50aWFsIEZvY3VzIFN5bWJvbHMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIGlkZW50aWZ5IHNvbWUgZ29vZCBjYW5kaWRhdGVzIGZvciBmb2N1cyBzeW1ib2xzLiBMZXQncyBzZWUuLi4gdGhlIGluc3RydWN0aW9ucyBhcmUgY2xlYXI6IHdlIHdhbnQgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIFRoYXQgbWFrZXMgc2Vuc2UsIHRob3NlIGFyZSBlYXNpZXIgdG8gdHJhY2UgYW5kIGFuYWx5emUuXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYC4gVGhhdCdzICpkZWZpbml0ZWx5KiBub24tc3RhdGljLCBzbyB0aGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3csIEkgc2VlIGB2YWxpZGF0ZV9iZWFjb25faGVhZGAgYW5kIGB2YWxpZGF0ZV9pZV9hdHRyYC4gVGhvc2UgYXJlIHN0YXRpYywgaW4gYG5sODAyMTEuY2AuIEJ1dC4uLiBoYW5nIG9uLiBUaG9zZSBhcmUgYmVpbmcgcGFzc2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzIHRvIGBOTEFfUE9MSUNZX1ZBTElEQVRFX0ZOYC4gVGhhdCBtZWFucyB0aGV5J3JlIG5vdCBpbmxpbmVkISBUaGVpciBhZGRyZXNzZXMgYXJlIGRpc3RpbmN0IHN5bWJvbHMhIEJpbmdvISBUaGF0IG1ha2VzIHRoZW0gc3Ryb25nIGNhbmRpZGF0ZXMuIFRoZXkgYXJlICpub3QqIHRoZSB0eXBpY2FsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb24uXG5cbkxldCdzIHNlZSwgd2hhdCBlbHNlIGRvIHdlIGhhdmU/IE9rYXksIEknbSB0aGlua2luZyBhYm91dCBgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZWAuLi4gSSBiZWxpZXZlIHRoYXQgb25lIGlzICphbHNvKiBub24tc3RhdGljLCBhdCBsZWFzdCBpdCdzIHVzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIGluIGB3ZXh0LWNvbXBhdC5jYC4gU28gdGhhdCBpcyBhbm90aGVyIG9uZSB0byBhZGQgdG8gdGhlIGxpc3Qgb2YgZ29vZCBwb3RlbnRpYWwgZm9jdXMgc3ltYm9scywgSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE2NDYsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6MTc6MDcuNTI5ODU2MDQ0WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTQyNDY4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZmc4MDIxMV93ZXh0X3Npd2dlbmllXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jPTI3Mz1pbnQgY2ZnODAyMTFfbWdkX3dleHRfZ2l3YXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jLTI5Ny1cXG5uZXQvd2lyZWxlc3Mvd2V4dC1zbWUuYzoyOTg6aW50IGNmZzgwMjExX3dleHRfc2l3Z2VuaWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvd2lyZWxlc3Mvd2V4dC1zbWUuYy0yOTktXFx0XFx0XFx0ICAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6MTc6MDcuNTcxMjgzODE1WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzMjQyNzUwNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIHRoaXMgaXMgZGVmaW5pdGVseSBub3QgYSBzdGF0aWMgc2l0dWF0aW9uOyBpdOKAmXMgZ29pbmcgdG8gaW52b2x2ZSBzb21lIHJlbGF0aW9uc2hpcHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBkaWZmZXJlbnQgcGFydHMgaW50ZXJhY3QuIE15IGZvY3VzIGlzIG9uIHRoZXNlIHN5bWJvbHM6IGBjZmc4MDIxMV92YWxpZGF0ZV9pZXNgLCBgdmFsaWRhdGVfYmVhY29uX2hlYWRgLCBgdmFsaWRhdGVfaWVfYXR0cmAsIGFuZCBgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZWAuIFRob3NlIGFyZSB0aGUgY29yZSBmdW5jdGlvbnMgSSdtIGludGVyZXN0ZWQgaW4gcmlnaHQgbm93LlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uczogYENGRzgwMjExYCwgYENGRzgwMjExX1dFWFRgLCBgTUFDODAyMTFgLCBhbmQgYE1BQzgwMjExX0hXU0lNYC4gSSdtIHN0YXJ0aW5nIHdpdGggYE1BQzgwMjExX0hXU0lNYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQgaGFzIGFueSBhZGRpdGlvbmFsIGRlcGVuZGVuY2llcyBiZXlvbmQgd2hhdCdzIGltbWVkaWF0ZWx5IG9idmlvdXMuXG5cblJpZ2h0LCBgTUFDODAyMTFfSFdTSU1gIGRlcGVuZHMgb24gYE1BQzgwMjExYC4gQW5kIGBNQUM4MDIxMWAgcmVsaWVzIG9uIGBDRkc4MDIxMWAsIHdoaWNoIGluIHR1cm4gZGVwZW5kcyBvbiBgUkZLSUxMIHx8ICFSRktJTExgLiBUaGF0IG1lYW5zIGBSRktJTExgICptaWdodCogYmUgcmVsZXZhbnQuIEkgY2FuIHVzdWFsbHkgYXNzdW1lIGBSRktJTExgIGlzIGVpdGhlciBlbmFibGVkIG9yIGRvZXNuJ3QgY2F1c2UgYSBwcm9ibGVtLiBVbmxlc3MgaXQncyBhIGhhcmQgZGVwZW5kZW5jeSB0aGF0J3MgZGlzYWJsZWQgYnkgZGVmYXVsdCwgSSBkb24ndCB0aGluayBJIG5lZWQgdG8gZXhwbGljaXRseSBsaXN0IGl0LiBCdXQgbGV0J3MgdmVyaWZ5IHRoYXQgcXVpY2tseSwganVzdCB0byBiZSBzdXJlLiBJdCdzIGdvb2QgdG8gYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMzQ2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE3OjEyLjg5NTU2MTk4NVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg4MzQ0MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJGS0lMTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvcmZraWxsL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3Jma2lsbC9LY29uZmlnLTQtI1xcbm5ldC9yZmtpbGwvS2NvbmZpZzo1Om1lbnVjb25maWcgUkZLSUxMXFxubmV0L3Jma2lsbC9LY29uZmlnLTYtXFx0dHJpc3RhdGUgXFxcIlJGIHN3aXRjaCBzdWJzeXN0ZW0gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9yZmtpbGwvS2NvbmZpZy0xNC0jIExFRCB0cmlnZ2VyIHN1cHBvcnRcXG5uZXQvcmZraWxsL0tjb25maWc6MTU6Y29uZmlnIFJGS0lMTF9MRURTXFxubmV0L3Jma2lsbC9LY29uZmlnLTE2LVxcdGJvb2xcXG4tLVxcbm5ldC9yZmtpbGwvS2NvbmZpZy0yMC1cXG5uZXQvcmZraWxsL0tjb25maWc6MjE6Y29uZmlnIFJGS0lMTF9JTlBVVFxcbm5ldC9yZmtpbGwvS2NvbmZpZy0yMi1cXHRib29sIFxcXCJSRiBzd2l0Y2ggaW5wdXQgc3VwcG9ydFxcXCIgaWYgRVhQRVJUXFxuLS1cXG5uZXQvcmZraWxsL0tjb25maWctMjYtXFxubmV0L3Jma2lsbC9LY29uZmlnOjI3OmNvbmZpZyBSRktJTExfR1BJT1xcbm5ldC9yZmtpbGwvS2NvbmZpZy0yOC1cXHR0cmlzdGF0ZSBcXFwiR1BJTyBSRktJTEwgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzoxNzoxMi45MzQzOTkxMTdaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjQ2MjAyMDE3MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBXaXJlbGVzcyBDb25maWd1cmF0aW9uIGFuZCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIHRoYXQgYFJGS0lMTGAgaXMgYSB0cmlzdGF0ZSwgYW5kIGBDRkc4MDIxMWAncyBjb25maWd1cmF0aW9uIGRlcGVuZHMgb24gaXQuIFNwZWNpZmljYWxseSwgdGhlIGNvbmZpZ3VyYXRpb24gbG9naWMgYWxsb3dzIGBDRkc4MDIxMWAgdG8gYmUgbW9kdWxhciAoYG1gKSByZWdhcmRsZXNzIG9mIGBSRktJTExgJ3Mgc3RhdGUgKGVpdGhlciBgbWAsIGB5YCwgb3IgYG5gKS4gU28sIGVuYWJsaW5nIGBSRktJTExgIGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSBmb3IgYENGRzgwMjExYCdzIGZ1bmN0aW9uYWxpdHksIHdoaWNoIGlzIGludGVyZXN0aW5nLlxuXG5Ob3csIGxldCdzIGNvbnNpZGVyIG90aGVyIGNvbmZpZ3VyYXRpb25zLiBJdCBsb29rcyBsaWtlIGBXRVhUX0NPUkVgIGlzIHNlbGVjdGVkIGJ5IGBDRkc4MDIxMV9XRVhUYCBvciBgV0lSRUxFU1NfRVhUYC4gVGhhdCdzIGdvb2QsIG1lYW5pbmcgd2UgZG9uJ3QgbmVlZCB0byBleHBsaWNpdGx5IGVuYWJsZSBgV0VYVF9DT1JFYC5cblxuTW92aW5nIG9uIHRvIHRoZSBwYXRjaCBpdHNlbGYsIGl0IGxvb2tzIGxpa2UgdGhlcmUgaXMgcmVmYWN0b3JpbmcgaGFwcGVuaW5nIGhlcmUuIFRoZSB2YWxpZGF0aW9uIGxvZ2ljIGZvciBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBpcyBiZWluZyBjZW50cmFsaXplZCBpbnRvIGBjZmc4MDIxMV92YWxpZGF0ZV9pZXNgLiBUaGlzIGZ1bmN0aW9uIGlzIHRoZW4gdXNlZCBpbiBgdmFsaWRhdGVfYmVhY29uX2hlYWRgLCBgdmFsaWRhdGVfaWVfYXR0cmAsIGFuZCBhbHNvIGFkZGVkIGluIGBjZmc4MDIxMV93ZXh0X3Npd2dlbmllYC4gU28sIHdlJ3JlIGNvbnNvbGlkYXRpbmcgdGhlIElFIHZhbGlkYXRpb24gYWNyb3NzIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgd2lyZWxlc3Mgc3RhY2suIFRoZSBrZXkgdGFrZWF3YXkgaXMgdGhpcyBpcyBhIHJlZmFjdG9yaW5nIGVmZm9ydCB3aXRoIGZ1bmN0aW9uYWwgaW1wYWN0LlxuXG5UaGlzIG1ha2VzIHN1cmUgdGhhdCB0aGUgd2lyZWxlc3MgaW50ZXJmYWNlcyB2YWxpZGF0ZSBJRXMgYW5kIGRvIG5vdCBjcmFzaCBvbiBtYWxmb3JtZWQgb25lcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBUaGUgcGF0Y2ggYWxzbyBwcmV2ZW50cyBtYWxmb3JtZWQgSUVzIGZyb20gYmVpbmcgcHJvY2Vzc2VkIGluIGBjZmc4MDIxMV93ZXh0X3Npd2dlbmllYC4gVGhpcyBpcyBnb29kLCBhbmQgaXQncyBkZWZpbml0ZWx5IHNvbWV0aGluZyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gc2VlIGlmIGFueSB2dWxuZXJhYmlsaXRpZXMgYXJlIGV4cG9zZWQuXG5cblNvLCB0aGUga2V5IGZ1bmN0aW9ucyB0aGF0IG5lZWQgZm9jdXMgZHVyaW5nIGZ1enppbmcgYXJlIGBjZmc4MDIxMV92YWxpZGF0ZV9pZXNgLCBgdmFsaWRhdGVfYmVhY29uX2hlYWRgLCBgdmFsaWRhdGVfaWVfYXR0cmAsIGFuZCBgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZWAuXG5cblRoZSBpbXBvcnRhbnQgY29uZmlndXJhdGlvbnMgZm9yIHRoaXMgcGF0Y2ggYXJlIGBDRkc4MDIxMWAsIGBDRkc4MDIxMV9XRVhUYCwgYE1BQzgwMjExYCwgYW5kIGBNQUM4MDIxMV9IV1NJTWAuIFRpbWUgdG8gY2hlY2sgaXQgd2l0aCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzE2MSwiT3V0cHV0VG9rZW5zIjoyNDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE3OjM3LjU1NDYwMjg4NloiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwODYwNzUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiQ0ZHODAyMTFfV0VYVFwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2ZnODAyMTFfdmFsaWRhdGVfaWVzXCIsXG4gICAgXCJ2YWxpZGF0ZV9iZWFjb25faGVhZFwiLFxuICAgIFwidmFsaWRhdGVfaWVfYXR0clwiLFxuICAgIFwiY2ZnODAyMTFfd2V4dF9zaXdnZW5pZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyBJbmZvcm1hdGlvbiBFbGVtZW50IChJRSkgdmFsaWRhdGlvbiBpbnRvIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYCBhbmQgYWRkcyB0aGlzIHZhbGlkYXRpb24gdG8gdGhlIFdFWFQgYFNJT0NTSVdHRU5JRWAgaW9jdGwgaGFuZGxlciAoYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgKSB0byBwcmV2ZW50IG1hbGZvcm1lZCBJRXMgZnJvbSBiZWluZyBwcm9jZXNzZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSSB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAobmw4MDIxMSkgYW5kIGlvY3RsICh3ZXh0KS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG5ldyB2YWxpZGF0aW9uIGhlbHBlciBhbmQgdGhlIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIkNGRzgwMjExX1dFWFRcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNmZzgwMjExX3ZhbGlkYXRlX2llc1wiLFxuICAgIFwidmFsaWRhdGVfYmVhY29uX2hlYWRcIixcbiAgICBcInZhbGlkYXRlX2llX2F0dHJcIixcbiAgICBcImNmZzgwMjExX3dleHRfc2l3Z2VuaWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgSW5mb3JtYXRpb24gRWxlbWVudCAoSUUpIHZhbGlkYXRpb24gaW50byBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gYGNmZzgwMjExX3ZhbGlkYXRlX2llc2AgYW5kIGFkZHMgdGhpcyB2YWxpZGF0aW9uIHRvIHRoZSBXRVhUIGBTSU9DU0lXR0VOSUVgIGlvY3RsIGhhbmRsZXIgKGBjZmc4MDIxMV93ZXh0X3Npd2dlbmllYCkgdG8gcHJldmVudCBtYWxmb3JtZWQgSUVzIGZyb20gYmVpbmcgcHJvY2Vzc2VkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUEkgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKG5sODAyMTEpIGFuZCBpb2N0bCAod2V4dCkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBuZXcgdmFsaWRhdGlvbiBoZWxwZXIgYW5kIHRoZSBmdW5jdGlvbnMgdGhhdCBjYWxsIGl0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowffrn2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-30 06:57:48 +0000 UTC FinishedAt: 2026-07-30 07:17:39 +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": "04026c998c24ac47eb76886b9790c5710b603eb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "CFG80211_WEXT", "MAC80211", "MAC80211_HWSIM" ], "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": "04026c998c24ac47eb76886b9790c5710b603eb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "CFG80211_WEXT", "MAC80211", "MAC80211_HWSIM" ], "series_id": "e890ed1e-3b6d-4a84-b859-484bd636179d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "cfg80211_validate_ies", "validate_beacon_head", "validate_ie_attr", "cfg80211_wext_siwgenie" ], "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+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExX1dFWFQmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjZmc4MDIxMV92YWxpZGF0ZV9pZXMmIzM0OywKICAgICYjMzQ7dmFsaWRhdGVfYmVhY29uX2hlYWQmIzM0OywKICAgICYjMzQ7dmFsaWRhdGVfaWVfYXR0ciYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV93ZXh0X3Npd2dlbmllJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyBJbmZvcm1hdGlvbiBFbGVtZW50IChJRSkgdmFsaWRhdGlvbiBpbnRvIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYCBhbmQgYWRkcyB0aGlzIHZhbGlkYXRpb24gdG8gdGhlIFdFWFQgYFNJT0NTSVdHRU5JRWAgaW9jdGwgaGFuZGxlciAoYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgKSB0byBwcmV2ZW50IG1hbGZvcm1lZCBJRXMgZnJvbSBiZWluZyBwcm9jZXNzZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSSB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAobmw4MDIxMSkgYW5kIGlvY3RsICh3ZXh0KS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG5ldyB2YWxpZGF0aW9uIGhlbHBlciBhbmQgdGhlIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhYjZlMDU3ODBmNzI2MGJlNWEyZjM3OTAxZjM3NWVjNTI0YTQ2MThhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMDc6MTU6MzkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL25sODAyMTEuYyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmNcbmluZGV4IDVhZGNiNmJkMGZjNTYuLjI3YmJhZjkxNjU3NDIgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG5AQCAtMjI4LDcgJiM0MzsyMjgsNiBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2JlYWNvbl9oZWFkKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXG4ge1xuIFx0Y29uc3QgdTggKmRhdGEgPSBubGFfZGF0YShhdHRyKTtcbiBcdHVuc2lnbmVkIGludCBsZW4gPSBubGFfbGVuKGF0dHIpO1xuLVx0Y29uc3Qgc3RydWN0IGVsZW1lbnQgKmVsZW07XG4gXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKWRhdGE7XG4gXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2V4dCAqZXh0O1xuIFx0dW5zaWduZWQgaW50IGZpeGVkbGVuLCBoZHJsZW47XG5AQCAtMjU5LDEzICYjNDM7MjU4LDggQEAgc3RhdGljIGludCB2YWxpZGF0ZV9iZWFjb25faGVhZChjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxuIFx0ZGF0YSAmIzQzOz0gZml4ZWRsZW47XG4gXHRsZW4gLT0gZml4ZWRsZW47XG4gXG4tXHRmb3JfZWFjaF9lbGVtZW50KGVsZW0sIGRhdGEsIGxlbikge1xuLVx0XHQvKiBub3RoaW5nICovXG4tXHR9XG4tXG4tXHRpZiAoZm9yX2VhY2hfZWxlbWVudF9jb21wbGV0ZWQoZWxlbSwgZGF0YSwgbGVuKSlcbiYjNDM7XHRpZiAoY2ZnODAyMTFfdmFsaWRhdGVfaWVzKGRhdGEsIGxlbikpXG4gXHRcdHJldHVybiAwO1xuLVxuIGVycjpcbiBcdE5MX1NFVF9FUlJfTVNHX0FUVFIoZXh0YWNrLCBhdHRyLCBcJiMzNDttYWxmb3JtZWQgYmVhY29uIGhlYWRcJiMzNDspO1xuIFx0cmV0dXJuIC1FSU5WQUw7XG5AQCAtMjc2LDEzICYjNDM7MjcwLDggQEAgc3RhdGljIGludCB2YWxpZGF0ZV9pZV9hdHRyKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXG4ge1xuIFx0Y29uc3QgdTggKmRhdGEgPSBubGFfZGF0YShhdHRyKTtcbiBcdHVuc2lnbmVkIGludCBsZW4gPSBubGFfbGVuKGF0dHIpO1xuLVx0Y29uc3Qgc3RydWN0IGVsZW1lbnQgKmVsZW07XG4tXG4tXHRmb3JfZWFjaF9lbGVtZW50KGVsZW0sIGRhdGEsIGxlbikge1xuLVx0XHQvKiBub3RoaW5nICovXG4tXHR9XG4gXG4tXHRpZiAoZm9yX2VhY2hfZWxlbWVudF9jb21wbGV0ZWQoZWxlbSwgZGF0YSwgbGVuKSlcbiYjNDM7XHRpZiAoY2ZnODAyMTFfdmFsaWRhdGVfaWVzKGRhdGEsIGxlbikpXG4gXHRcdHJldHVybiAwO1xuIFxuIFx0TkxfU0VUX0VSUl9NU0dfQVRUUihleHRhY2ssIGF0dHIsIFwmIzM0O21hbGZvcm1lZCBpbmZvcm1hdGlvbiBlbGVtZW50c1wmIzM0Oyk7XG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL25sODAyMTEuaCBiL25ldC93aXJlbGVzcy9ubDgwMjExLmhcbmluZGV4IGJkYjA2NWQxNDA1NDkuLjgzMjJjZWQ2YjU1MWQgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5oXG5AQCAtMTI5LDQgJiM0MzsxMjksNiBAQCBpbnQgbmw4MDIxMV9wbXNyX3N0YXJ0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xuIHZvaWQgbmw4MDIxMV9tbG9fcmVjb25mX2FkZF9kb25lKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0XHQgc3RydWN0IGNmZzgwMjExX21sb19yZWNvbmZfZG9uZV9kYXRhICpkYXRhKTtcbiBcbiYjNDM7Ym9vbCBjZmc4MDIxMV92YWxpZGF0ZV9pZXMoY29uc3QgdTggKmRhdGEsIGludCBsZW4pO1xuJiM0MztcbiAjZW5kaWYgLyogX19ORVRfV0lSRUxFU1NfTkw4MDIxMV9IICovXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL3V0aWwuYyBiL25ldC93aXJlbGVzcy91dGlsLmNcbmluZGV4IDI0NTI3YmYzMjFiMmEuLmRjYWE1OTAzYmNkMmMgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3MvdXRpbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3MvdXRpbC5jXG5AQCAtMzA4MywzICYjNDM7MzA4MywxNCBAQCBib29sIGNmZzgwMjExX3dkZXZfY2hhbm5lbF9hbGxvd2VkKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRyZXR1cm4gZmFsc2U7XG4gfVxuIEVYUE9SVF9TWU1CT0woY2ZnODAyMTFfd2Rldl9jaGFubmVsX2FsbG93ZWQpO1xuJiM0MztcbiYjNDM7Ym9vbCBjZmc4MDIxMV92YWxpZGF0ZV9pZXMoY29uc3QgdTggKmRhdGEsIGludCBsZW4pXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgZWxlbWVudCAqZWxlbTtcbiYjNDM7XG4mIzQzO1x0Zm9yX2VhY2hfZWxlbWVudChlbGVtLCBkYXRhLCBsZW4pIHtcbiYjNDM7XHRcdC8qIG5vdGhpbmcgKi9cbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBmb3JfZWFjaF9lbGVtZW50X2NvbXBsZXRlZChlbGVtLCBkYXRhLCBsZW4pO1xuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL3dleHQtc21lLmMgYi9uZXQvd2lyZWxlc3Mvd2V4dC1zbWUuY1xuaW5kZXggNTczYjZiMTVhNDQ2ZS4uMTQ3NmQ5MzNjN2U3MiAxMDA2NDRcbi0tLSBhL25ldC93aXJlbGVzcy93ZXh0LXNtZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3Mvd2V4dC1zbWUuY1xuQEAgLTMxOSw2ICYjNDM7MzE5LDkgQEAgaW50IGNmZzgwMjExX3dleHRfc2l3Z2VuaWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0cmV0dXJuIDA7XG4gXG4gXHRpZiAoaWVfbGVuKSB7XG4mIzQzO1x0XHRpZiAoIWNmZzgwMjExX3ZhbGlkYXRlX2llcyhleHRyYSwgaWVfbGVuKSlcbiYjNDM7XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuIFx0XHRpZSA9IGttZW1kdXAoZXh0cmEsIGllX2xlbiwgR0ZQX0tFUk5FTCk7XG4gXHRcdGlmICghaWUpXG4gXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExX1dFWFQmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjZmc4MDIxMV92YWxpZGF0ZV9pZXMmIzM0OywKICAgICYjMzQ7dmFsaWRhdGVfYmVhY29uX2hlYWQmIzM0OywKICAgICYjMzQ7dmFsaWRhdGVfaWVfYXR0ciYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV93ZXh0X3Npd2dlbmllJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyBJbmZvcm1hdGlvbiBFbGVtZW50IChJRSkgdmFsaWRhdGlvbiBpbnRvIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYCBhbmQgYWRkcyB0aGlzIHZhbGlkYXRpb24gdG8gdGhlIFdFWFQgYFNJT0NTSVdHRU5JRWAgaW9jdGwgaGFuZGxlciAoYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgKSB0byBwcmV2ZW50IG1hbGZvcm1lZCBJRXMgZnJvbSBiZWluZyBwcm9jZXNzZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSSB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAobmw4MDIxMSkgYW5kIGlvY3RsICh3ZXh0KS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG5ldyB2YWxpZGF0aW9uIGhlbHBlciBhbmQgdGhlIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhYjZlMDU3ODBmNzI2MGJlNWEyZjM3OTAxZjM3NWVjNTI0YTQ2MThhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMzAgMDc6MTU6MzkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jIGIvbmV0L3dpcmVsZXNzL25sODAyMTEuYwppbmRleCA1YWRjYjZiZDBmYzU2Li4yN2JiYWY5MTY1NzQyIDEwMDY0NAotLS0gYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmMKQEAgLTIyOCw3ICYjNDM7MjI4LDYgQEAgc3RhdGljIGludCB2YWxpZGF0ZV9iZWFjb25faGVhZChjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLAogewogCWNvbnN0IHU4ICpkYXRhID0gbmxhX2RhdGEoYXR0cik7CiAJdW5zaWduZWQgaW50IGxlbiA9IG5sYV9sZW4oYXR0cik7Ci0JY29uc3Qgc3RydWN0IGVsZW1lbnQgKmVsZW07CiAJY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHZvaWQgKilkYXRhOwogCWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfZXh0ICpleHQ7CiAJdW5zaWduZWQgaW50IGZpeGVkbGVuLCBoZHJsZW47CkBAIC0yNTksMTMgJiM0MzsyNTgsOCBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2JlYWNvbl9oZWFkKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsCiAJZGF0YSAmIzQzOz0gZml4ZWRsZW47CiAJbGVuIC09IGZpeGVkbGVuOwogCi0JZm9yX2VhY2hfZWxlbWVudChlbGVtLCBkYXRhLCBsZW4pIHsKLQkJLyogbm90aGluZyAqLwotCX0KLQotCWlmIChmb3JfZWFjaF9lbGVtZW50X2NvbXBsZXRlZChlbGVtLCBkYXRhLCBsZW4pKQomIzQzOwlpZiAoY2ZnODAyMTFfdmFsaWRhdGVfaWVzKGRhdGEsIGxlbikpCiAJCXJldHVybiAwOwotCiBlcnI6CiAJTkxfU0VUX0VSUl9NU0dfQVRUUihleHRhY2ssIGF0dHIsICYjMzQ7bWFsZm9ybWVkIGJlYWNvbiBoZWFkJiMzNDspOwogCXJldHVybiAtRUlOVkFMOwpAQCAtMjc2LDEzICYjNDM7MjcwLDggQEAgc3RhdGljIGludCB2YWxpZGF0ZV9pZV9hdHRyKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsCiB7CiAJY29uc3QgdTggKmRhdGEgPSBubGFfZGF0YShhdHRyKTsKIAl1bnNpZ25lZCBpbnQgbGVuID0gbmxhX2xlbihhdHRyKTsKLQljb25zdCBzdHJ1Y3QgZWxlbWVudCAqZWxlbTsKLQotCWZvcl9lYWNoX2VsZW1lbnQoZWxlbSwgZGF0YSwgbGVuKSB7Ci0JCS8qIG5vdGhpbmcgKi8KLQl9CiAKLQlpZiAoZm9yX2VhY2hfZWxlbWVudF9jb21wbGV0ZWQoZWxlbSwgZGF0YSwgbGVuKSkKJiM0MzsJaWYgKGNmZzgwMjExX3ZhbGlkYXRlX2llcyhkYXRhLCBsZW4pKQogCQlyZXR1cm4gMDsKIAogCU5MX1NFVF9FUlJfTVNHX0FUVFIoZXh0YWNrLCBhdHRyLCAmIzM0O21hbGZvcm1lZCBpbmZvcm1hdGlvbiBlbGVtZW50cyYjMzQ7KTsKZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9ubDgwMjExLmggYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5oCmluZGV4IGJkYjA2NWQxNDA1NDkuLjgzMjJjZWQ2YjU1MWQgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy9ubDgwMjExLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL25sODAyMTEuaApAQCAtMTI5LDQgJiM0MzsxMjksNiBAQCBpbnQgbmw4MDIxMV9wbXNyX3N0YXJ0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pOwogdm9pZCBubDgwMjExX21sb19yZWNvbmZfYWRkX2RvbmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCQkgc3RydWN0IGNmZzgwMjExX21sb19yZWNvbmZfZG9uZV9kYXRhICpkYXRhKTsKIAomIzQzO2Jvb2wgY2ZnODAyMTFfdmFsaWRhdGVfaWVzKGNvbnN0IHU4ICpkYXRhLCBpbnQgbGVuKTsKJiM0MzsKICNlbmRpZiAvKiBfX05FVF9XSVJFTEVTU19OTDgwMjExX0ggKi8KZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy91dGlsLmMgYi9uZXQvd2lyZWxlc3MvdXRpbC5jCmluZGV4IDI0NTI3YmYzMjFiMmEuLmRjYWE1OTAzYmNkMmMgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy91dGlsLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL3V0aWwuYwpAQCAtMzA4MywzICYjNDM7MzA4MywxNCBAQCBib29sIGNmZzgwMjExX3dkZXZfY2hhbm5lbF9hbGxvd2VkKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJcmV0dXJuIGZhbHNlOwogfQogRVhQT1JUX1NZTUJPTChjZmc4MDIxMV93ZGV2X2NoYW5uZWxfYWxsb3dlZCk7CiYjNDM7CiYjNDM7Ym9vbCBjZmc4MDIxMV92YWxpZGF0ZV9pZXMoY29uc3QgdTggKmRhdGEsIGludCBsZW4pCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgZWxlbWVudCAqZWxlbTsKJiM0MzsKJiM0MzsJZm9yX2VhY2hfZWxlbWVudChlbGVtLCBkYXRhLCBsZW4pIHsKJiM0MzsJCS8qIG5vdGhpbmcgKi8KJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gZm9yX2VhY2hfZWxlbWVudF9jb21wbGV0ZWQoZWxlbSwgZGF0YSwgbGVuKTsKJiM0Mzt9CmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvd2V4dC1zbWUuYyBiL25ldC93aXJlbGVzcy93ZXh0LXNtZS5jCmluZGV4IDU3M2I2YjE1YTQ0NmUuLjE0NzZkOTMzYzdlNzIgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy93ZXh0LXNtZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC93aXJlbGVzcy93ZXh0LXNtZS5jCkBAIC0zMTksNiAmIzQzOzMxOSw5IEBAIGludCBjZmc4MDIxMV93ZXh0X3Npd2dlbmllKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCXJldHVybiAwOwogCiAJaWYgKGllX2xlbikgewomIzQzOwkJaWYgKCFjZmc4MDIxMV92YWxpZGF0ZV9pZXMoZXh0cmEsIGllX2xlbikpCiYjNDM7CQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJCWllID0ga21lbWR1cChleHRyYSwgaWVfbGVuLCBHRlBfS0VSTkVMKTsKIAkJaWYgKCFpZSkKIAkJCXJldHVybiAtRU5PTUVNOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDc5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFdpRmkgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBzZWVtcyBsaWtlIGl0JiMzOTtzIHRvdWNoaW5nIHNldmVyYWwgY29yZSBmaWxlcyB3aXRoaW4gdGhlIGBuZXQvd2lyZWxlc3NgIHN1YnN5c3RlbS4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBtb2RpZnlpbmcgYG5sODAyMTEuY2AsIGBubDgwMjExLmhgLCBgdXRpbC5jYCwgYW5kIGB3ZXh0LXNtZS5jYC4gVGhhdCYjMzk7cyBhIGRlY2VudCBzcHJlYWQsIGluZGljYXRpbmcgYSBwb3RlbnRpYWxseSBzaWduaWZpY2FudCBjaGFuZ2UgaW4gaG93IHdlIGhhbmRsZSB3aXJlbGVzcyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gb3IgY2FwYWJpbGl0aWVzLgoKVGhlIGtleSB0aGluZyBJJiMzOTttIHNlZWluZyBpcyB0aGlzIG5ldyBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYCBmdW5jdGlvbi4gSXRzIHByZXNlbmNlIGluIGB1dGlsLmNgIHN1Z2dlc3RzIGl0JiMzOTtzIGEgdXRpbGl0eSBmdW5jdGlvbiBkZXNpZ25lZCB0byBoYW5kbGUgSW5mb3JtYXRpb24gRWxlbWVudCAoSUUpIHZhbGlkYXRpb24sIHdoaWNoIGlzIGNvbW1vbiBpbiA4MDIuMTEgbWFuYWdlbWVudCBmcmFtZXMuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgYmVpbmcgKnVzZWQqIHdpdGhpbiBgdmFsaWRhdGVfYmVhY29uX2hlYWRgIGFuZCBgdmFsaWRhdGVfaWVfYXR0cmAgaW4gYG5sODAyMTEuY2AsIGFuZCBhbHNvIGluIGBjZmc4MDIxMV93ZXh0X3Npd2dlbmllYCB3aXRoaW4gYHdleHQtc21lLmNgIGlzIGltcG9ydGFudCB0b28uIFRoYXQgdGVsbHMgbWUgdGhpcyB2YWxpZGF0aW9uIGlzIGdvaW5nIHRvIHRvdWNoIGJvdGggdGhlIG5sODAyMTEgbmV0bGluayBpbnRlcmZhY2UgYW5kIHRoZSB3ZXh0LWJhc2VkIGludGVyZmFjZXMuIFZhbGlkYXRpb24gb2YgSUVzIHN1Z2dlc3RzIGNoYW5nZXMgdG8gd2hhdCB3ZSB2YWxpZGF0ZSBpbiBJRXMsIHdoaWNoIGNhbiBhZmZlY3QgdGhpbmdzIGxpa2UgYmVhY29uIHBhcnNpbmcsIGFuZCB2YXJpb3VzIGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9ucy4KClRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZW5hYmxlZCBmb3IgYG5ldC93aXJlbGVzcy9gLiBJJiMzOTttIGd1ZXNzaW5nIGBDRkc4MDIxMWAgYW5kIGBDRkc4MDIxMV9XRVhUYCBhcmUgdGhlIGtleSBjb250ZW5kZXJzIGhlcmUsIHNvIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGBuZXQvd2lyZWxlc3MvS2NvbmZpZ2AgZmlsZSB0byBjb25maXJtIGhvdyB0aGlzIG5ldyBmdW5jdGlvbmFsaXR5IGlzIGNvbnRyb2xsZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXRoZXIgdGhpcyBpcyBhIGNvcmUgZmVhdHVyZSBvciBzb21ldGhpbmcgdGhhdCBjYW4gYmUgZGlzYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENGRzgwMjExJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL0tjb25maWc9MTQ9Y29uZmlnIFdFWFRfUFJJVlxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc6Y29uZmlnIENGRzgwMjExXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O2NmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0zOD1jb25maWcgTkw4MDIxMV9URVNUTU9ERVxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTUxLVxubmV0L3dpcmVsZXNzL0tjb25maWc6NTI6Y29uZmlnIENGRzgwMjExX0RFVkVMT1BFUl9XQVJOSU5HU1xubmV0L3dpcmVsZXNzL0tjb25maWctNTMtXHRib29sIFwmIzM0O2VuYWJsZSBkZXZlbG9wZXIgd2FybmluZ3NcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02Ny1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjY4OmNvbmZpZyBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY5LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBjZXJ0aWZpY2F0aW9uIG9udXNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy04OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjg5OmNvbmZpZyBDRkc4MDIxMV9SRVFVSVJFX1NJR05FRF9SRUdEQlxubmV0L3dpcmVsZXNzL0tjb25maWctOTAtXHRib29sIFwmIzM0O3JlcXVpcmUgcmVnZGIgc2lnbmF0dXJlXCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTk4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6OTk6Y29uZmlnIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTAwLVx0Ym9vbCBcJiMzNDthbGxvdyByZWdkYiBrZXlzIHNoaXBwZWQgd2l0aCB0aGUga2VybmVsXCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjExMTpjb25maWcgQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTItXHRzdHJpbmcgXCYjMzQ7YWRkaXRpb25hbCByZWdkYiBrZXkgZGlyZWN0b3J5XCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMS1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjEyMjpjb25maWcgQ0ZHODAyMTFfUkVHX0NFTExVTEFSX0hJTlRTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjMtXHRib29sIFwmIzM0O2NmZzgwMjExIHJlZ3VsYXRvcnkgc3VwcG9ydCBmb3IgY2VsbHVsYXIgYmFzZSBzdGF0aW9uIGhpbnRzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTM0LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTM1OmNvbmZpZyBDRkc4MDIxMV9SRUdfUkVMQVhfTk9fSVJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNi1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgc3VwcG9ydCBmb3IgTk9fSVIgcmVsYXhhdGlvblwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE1OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE1OTpjb25maWcgQ0ZHODAyMTFfREVGQVVMVF9QU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTYwLVx0Ym9vbCBcJiMzNDtlbmFibGUgcG93ZXJzYXZlIGJ5IGRlZmF1bHRcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNjk6Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgRGVidWdGUyBlbnRyaWVzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTc2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc3OmNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3OC1cdGJvb2wgXCYjMzQ7c3VwcG9ydCBDUkRBXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4Ni1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE4Nzpjb25maWcgQ0ZHODAyMTFfV0VYVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSB3aXJlbGVzcyBleHRlbnNpb25zIGNvbXBhdGliaWxpdHlcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTMtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTQ6Y29uZmlnIENGRzgwMjExX0tVTklUX1RFU1Rcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5NS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBjZmc4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYxNwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGEgYGNmZzgwMjExYCBXRVhUIE1vZGlmaWNhdGlvbioqCgpBbHJpZ2h0LCBzbyB0aGUgcGF0Y2ggaXMgdHdlYWtpbmcgYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgLCBhbmQgaXQgbG9va3MgbGlrZSB0aGF0IGZ1bmN0aW9uIGxpdmVzIGluIGB3ZXh0LXNtZS5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgbGV0JiMzOTtzIHNlZSBpZiB0aGlzIGNvZGUgZXZlbiBnZXRzIGNvbXBpbGVkIGluIG15IGN1cnJlbnQgY29uZmlndXJhdGlvbi4mIzM0OyBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBDRkc4MDIxMV9XRVhUYCBpcyBhY3R1YWxseSBkZWZpbmVkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2VzcywgcmlnaHQ/IElmIHRoYXQmIzM5O3Mgbm90IHNldCwgdGhlbiB0aGUgY2hhbmdlcyB0byBgd2V4dC1zbWUuY2AgYXJlIGVmZmVjdGl2ZWx5IGRlYWQgY29kZSwgYW5kIHRoaXMgcGF0Y2ggaXNuJiMzOTt0IHJlbGV2YW50IHRvIG15IHNwZWNpZmljIHNldHVwLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGJ1aWxkIHN5c3RlbSB0byBjb25maXJtIHdoZXRoZXIgYENGRzgwMjExX1dFWFRgIGlzIGVuYWJsZWQuIElmIGl0IGlzbiYjMzk7dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IGFuZCB3aGV0aGVyIHRoaXMgcGF0Y2ggcmVxdWlyZXMgc29tZSByZS1ldmFsdWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3dleHQtc21lXFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvTWFrZWZpbGU9MTM9Y2ZnODAyMTEtJChDT05GSUdfQ0ZHODAyMTFfREVCVUdGUykgJiM0Mzs9IGRlYnVnZnMub1xubmV0L3dpcmVsZXNzL01ha2VmaWxlOjE0OmNmZzgwMjExLSQoQ09ORklHX0NGRzgwMjExX1dFWFQpICYjNDM7PSB3ZXh0LWNvbXBhdC5vIHdleHQtc21lLm9cbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0xNS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDIzCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIHRoZXkgd2VyZSBteSBvd246CgoqKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgYnVpbGQgc3lzdGVtIGFuZCBob3cgdGhlc2UgbW9kdWxlcyByZWxhdGUgdG8gZWFjaCBvdGhlci4gVGhlIGluY2x1c2lvbiBvZiBgQ0ZHODAyMTFfV0VYVGAgaW4gdGhpcyBjb250ZXh0IG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IGl0JiMzOTtzIGRlZmluaXRlbHkgcmVxdWlyZWQgYnkgYHdleHQtc21lLmNgLiBJJiMzOTt2ZSBnb3QgdG8gbWFrZSBhIG1lbnRhbCBub3RlIG9mIHRoYXQgcmVsYXRpb25zaGlwLgoKVGhlbiBJIG1vdmUgb24gdG8gdGhpbmtpbmcgYWJvdXQgYG5sODAyMTEuY2AgYW5kIGB1dGlsLmNgLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhleSYjMzk7cmUgYm90aCBnZXR0aW5nIGNvbXBpbGVkIHVuZGVyIHRoZSBgQ0ZHODAyMTFgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBDRkc4MDIxMWAgaXRzZWxmIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gc3VycHJpc2VzIG9yIGhpZGRlbiBpbXBsaWNhdGlvbnMgZG93biB0aGUgbGluZS4gSSBhbHdheXMgbmVlZCB0byBiZSBhd2FyZSBvZiB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgdGhlIGNvbmZpZyBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZz01PWNvbmZpZyBXRVhUX0NPUkVcbm5ldC93aXJlbGVzcy9LY29uZmlnLTYtXHRkZWZfYm9vbCB5XG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo3Olx0ZGVwZW5kcyBvbiBDRkc4MDIxMV9XRVhUIHx8IFdJUkVMRVNTX0VYVFxubmV0L3dpcmVsZXNzL0tjb25maWctOC1cbm5ldC93aXJlbGVzcy9LY29uZmlnPTk9Y29uZmlnIFdFWFRfUFJPQ1xubmV0L3dpcmVsZXNzL0tjb25maWctMTAtXHRkZWZfYm9vbCB5XG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTpcdGRlcGVuZHMgb24gUFJPQ19GU1xubmV0L3dpcmVsZXNzL0tjb25maWc6MTI6XHRkZXBlbmRzIG9uIFdFWFRfQ09SRVxubmV0L3dpcmVsZXNzL0tjb25maWctMTMtXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWc9MTc9Y29uZmlnIENGRzgwMjExXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O2NmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcJiMzNDtcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5Olx0ZGVwZW5kcyBvbiBSRktJTEwgfHwgIVJGS0lMTFxubmV0L3dpcmVsZXNzL0tjb25maWctMjAtXHRzZWxlY3QgRldfTE9BREVSXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWc9Njg9Y29uZmlnIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xubmV0L3dpcmVsZXNzL0tjb25maWctNjktXHRib29sIFwmIzM0O2NmZzgwMjExIGNlcnRpZmljYXRpb24gb251c1wmIzM0O1xubmV0L3dpcmVsZXNzL0tjb25maWc6NzA6XHRkZXBlbmRzIG9uIEVYUEVSVFxubmV0L3dpcmVsZXNzL0tjb25maWctNzEtXHRkZWZhdWx0IG5cbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz05OT1jb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTAxLVx0ZGVmYXVsdCB5XG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMDI6XHRkZXBlbmRzIG9uIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDMtXHRoZWxwXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWc9MTExPWNvbmZpZyBDRkc4MDIxMV9FWFRSQV9SRUdEQl9LRVlESVJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMi1cdHN0cmluZyBcJiMzNDthZGRpdGlvbmFsIHJlZ2RiIGtleSBkaXJlY3RvcnlcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTM6XHRkZXBlbmRzIG9uIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTQtXHRoZWxwXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWc9MTIyPWNvbmZpZyBDRkc4MDIxMV9SRUdfQ0VMTFVMQVJfSElOVFNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgcmVndWxhdG9yeSBzdXBwb3J0IGZvciBjZWxsdWxhciBiYXNlIHN0YXRpb24gaGludHNcJiMzNDtcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEyNDpcdGRlcGVuZHMgb24gQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjUtXHRoZWxwXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWc9MTM1PWNvbmZpZyBDRkc4MDIxMV9SRUdfUkVMQVhfTk9fSVJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNi1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgc3VwcG9ydCBmb3IgTk9fSVIgcmVsYXhhdGlvblwmIzM0O1xubmV0L3dpcmVsZXNzL0tjb25maWc6MTM3Olx0ZGVwZW5kcyBvbiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzOC1cdGhlbHBcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0xNjk9Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgRGVidWdGUyBlbnRyaWVzXCYjMzQ7XG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzE6XHRkZXBlbmRzIG9uIERFQlVHX0ZTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzItXHRoZWxwXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWc9MTk0PWNvbmZpZyBDRkc4MDIxMV9LVU5JVF9URVNUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTUtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgY2ZnODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xubmV0L3dpcmVsZXNzL0tjb25maWc6MTk2Olx0ZGVwZW5kcyBvbiBLVU5JVFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk3Olx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxubmV0L3dpcmVsZXNzL0tjb25maWctMTk4LVx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjU2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgQ0ZHODAyMTEmIzM5O3MgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJiMzOTttIHNlZWluZywgYENGRzgwMjExYCBpcyBwcmV0dHkgY2xldmVyIGluIGhvdyBpdCBoYW5kbGVzIGl0cyBkZXBlbmRlbmNpZXMsIGVzcGVjaWFsbHkgd2hlbiB0aGlua2luZyBhYm91dCBmdXp6aW5nLiBUaGUga2V5IHRha2Vhd2F5IGlzIHRoZSBjb25kaXRpb25hbCBkZXBlbmRlbmN5IG9uIGBSRktJTExgLiBJdCYjMzk7cyBlaXRoZXIgZGVwZW5kZW50IG9uIGBSRktJTExgIGJlaW5nIGVuYWJsZWQgKm9yKiBpZiBgUkZLSUxMYCBpcyBkaXNhYmxlZCAtIHRoZSBpbXBsaWNhdGlvbiBiZWluZyB0aGF0IGl0IGNhbiBmdW5jdGlvbiBpbiBlaXRoZXIgc2NlbmFyaW8sIG1ha2luZyBpdCB2ZXJzYXRpbGUuCgpOb3csIGZvciBhbnkgcmVhbCB1c2UgaW4gZnV6emluZywgYW5kIEkgbWVhbiAqcmVhbCogZnV6emluZyB0aGF0IGNhbiBhY3R1YWxseSBnZW5lcmF0ZSBzb21lIG1lYW5pbmdmdWwgaW5wdXQsIGBDRkc4MDIxMWAgaGluZ2VzIG9uIGVpdGhlciBgTUFDODAyMTFgIG9yIGBNQUM4MDIxMV9IV1NJTWAuIFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZTsgYENGRzgwMjExYCBpcyBhIGNvbmZpZ3VyYXRpb24gbGF5ZXIsIGFuZCBpdCBuZWVkcyBhIE1BQyBsYXllciB1bmRlcm5lYXRoIHRvIGRvIGFueXRoaW5nIGludGVyZXN0aW5nLiBTaW5jZSBteSBnb2FsIGlzIGZ1enppbmcsIEkmIzM5O20gZ29pbmcgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGBNQUM4MDIxMWAgYW5kIGNvbnNpZGVyIGl0cyBhcmNoaXRlY3R1cmUgaW4gcmVsYXRpb24gdG8gaG93IGl0IGFmZmVjdHMgYENGRzgwMjExYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQzgwMjExJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI6Y29uZmlnIE1BQzgwMjExXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xOT1pZiBNQUM4MDIxMSAhPSBuXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyLVx0Ym9vbFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDpjb25maWcgTUFDODAyMTFfUkNfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2Vcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQxOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00OD1lbmRjaG9pY2Vcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTUxLVx0c3RyaW5nXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NTc9Y29tbWVudCBcJiMzNDtTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBtYWM4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNjktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MDpjb25maWcgTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXHRib29sIFwmIzM0O0VuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTc4LVxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVx0Ym9vbCBcJiMzNDtFbmFibGUgTEVEIHRyaWdnZXJzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctODctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL0tjb25maWctODktXHRib29sIFwmIzM0O0V4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxubmV0L21hYzgwMjExL0tjb25maWc6OTc6Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xubmV0L21hYzgwMjExL0tjb25maWctOTgtXHRib29sIFwmIzM0O1RyYWNlIGFsbCBtYWM4MDIxMSBkZWJ1ZyBtZXNzYWdlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwOS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cdGJvb2wgXCYjMzQ7U2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cdGJvb2wgXCYjMzQ7RG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzMjpjb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTMzLVx0Ym9vbCBcJiMzNDtWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2Mzpjb25maWcgTUFDODAyMTFfSFRfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBIVCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzQtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTc2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5Nzpjb25maWcgTUFDODAyMTFfUFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjEwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxubmV0L21hYzgwMjExL0tjb25maWc6MjM1OmNvbmZpZyBNQUM4MDIxMV9NSFdNUF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjM2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggSFdNUCByb3V0aW5nIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjYwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjgwLVxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXHRib29sIFwmIzM0O1ZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXHRib29sIFwmIzM0O0V4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjMwODpjb25maWcgTUFDODAyMTFfU1RBX0hBU0hfTUFYX1NJWkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cdGludCBcJiMzNDtTdGF0aW9uIGhhc2ggdGFibGUgbWF4aW11bSBzaXplXCYjMzQ7IGlmIE1BQzgwMjExX0RFQlVHX01FTlVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODc4MgoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIHRoZSBNQUM4MDIxMSBFY29zeXN0ZW0qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gdGhlIG5ldHdvcmtpbmcgc3RhY2sgaGVyZSwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBJRUVFIDgwMi4xMSBpbXBsZW1lbnRhdGlvbi4gSSYjMzk7bSByZWNhbGxpbmcgdGhhdCBgTUFDODAyMTFgIGlzIHRoZSBjb3JlLCBnZW5lcmljIGZyYW1ld29yayBmb3IgODAyLjExIGZ1bmN0aW9uYWxpdHkuIE5vdywgSSBuZWVkIHRvIGNoZWNrIG91dCBhIHNwZWNpZmljIGNvbXBvbmVudCwgYW5kIHRoYXQgd291bGQgYmUgYE1BQzgwMjExX0hXU0lNYC4gSSBiZWxpZXZlIHRoaXMgaXMgdGhhdCBzb2Z0d2FyZSBzaW11bGF0b3IgZm9yIGVtdWxhdGluZyB0aGUgYmVoYXZpb3Igb2YgODAyLjExIHJhZGlvcywgc28gSSYjMzk7bGwgc2VlIHdoYXQgaXQmIzM5O3MgYWxsIGFib3V0LiBMZXQmIzM5O3MgZGVsdmUgaW4gYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQzgwMjExX0hXU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFjODAyMTFfaHdzaW0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwNTUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgV2lyZWxlc3MgRHJpdmVyIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmluZCB0aGUgcmVsZXZhbnQgY29kZSwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gYE1BQzgwMjExX0hXU0lNYC4gSSBrbm93IGl0JiMzOTtzIGEgd2lyZWxlc3MgZHJpdmVyIHNpbXVsYXRpb24sIHdoaWNoIG1lYW5zIGl0IGxpa2VseSByZXNpZGVzIHdpdGhpbiB0aGUgYnJvYWRlciB3aXJlbGVzcyBkcml2ZXIgZnJhbWV3b3JrLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGNoZWNrIHRoZSB0eXBpY2FsIGxvY2F0aW9ucyBmb3Igd2lyZWxlc3MgZHJpdmVycy4gSSYjMzk7ZCBzdGFydCBieSBsb29raW5nIGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFjODAyMTFfaHdzaW0vYCBkaXJlY3RvcnkuIFRoaXMgc2VlbXMgbGlrZSBhIGxpa2VseSBjYW5kaWRhdGUgZ2l2ZW4gdGhlIHNwZWNpZmljIG5hbWluZyBjb252ZW50aW9uIHRoYXQgaW5jbHVkZXMgYGh3c2ltYC4gSG93ZXZlciwgSSYjMzk7bSBhbHNvIGdvaW5nIHRvIGNhc3QgYSB3aWRlciBuZXQgYW5kIGNvbnNpZGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9gIG1vcmUgZ2VuZXJhbGx5LiBJdCYjMzk7cyBwb3NzaWJsZSB0aGUgc2ltdWxhdGlvbiBjb2RlIGlzIG9yZ2FuaXplZCBkaWZmZXJlbnRseSBvciBwZXJoYXBzIGEgbW9yZSBnZW5lcmFsIGRyaXZlciBjb250YWlucyB0aGUgc2ltdWxhdGlvbiBmdW5jdGlvbmFsaXR5LiBUaGUgYnJvYWRlciBwYXRoIHdpbGwgaGVscCBlbnN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYSBwb3RlbnRpYWxseSBtb3JlIGVuY29tcGFzc2luZyBpbXBsZW1lbnRhdGlvbi4gRXNzZW50aWFsbHksIEkgd2FudCB0byBiZSB0aG9yb3VnaCBpbiBteSBpbml0aWFsIHNlYXJjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQzgwMjExX0hXU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZzoxOmNvbmZpZyBNQUM4MDIxMV9IV1NJTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxMVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDA5CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgcHJvdmlkZWQgdGV4dDoKCioqSW52ZXN0aWdhdGluZyB0aGUgS2NvbmZpZyBGaWxlIGZvciBWaXJ0dWFsIFdpcmVsZXNzIERyaXZlcnMqKgoKT2theSwgc28gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwmIzM5O3Mgd2lyZWxlc3MgbmV0d29ya2luZyBzZXR1cC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB2aXJ0dWFsIGRyaXZlcnMuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkga25vdyB0aGF0IGBLY29uZmlnYCBmaWxlcyBhcmUgdGhlIGJhY2tib25lIG9mIHRoZSBrZXJuZWwmIzM5O3MgYnVpbGQgc3lzdGVtLCBkZWZpbmluZyBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoZXJlZm9yZSwgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWdgIGZpbGUuIFRoaXMgaXMgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCB0aGUgc2V0dGluZ3MgdGhhdCBnb3Zlcm4gdGhlIGNvbXBpbGF0aW9uIGFuZCBpbmNsdXNpb24gb2YgdGhlc2UgdmlydHVhbCB3aXJlbGVzcyBjb21wb25lbnRzLiBJdCBzaG91bGQgY29udGFpbiB0aGluZ3MgbGlrZToKCiogICBUaGUgbWFpbiAmIzM0O1ZpcnR1YWwgV2lyZWxlc3MmIzM0OyBvcHRpb24gaXRzZWxmLgoqICAgU3BlY2lmaWMgb3B0aW9ucyBmb3IgdmFyaW91cyB2aXJ0dWFsIGRyaXZlciBmZWF0dXJlcy4KKiAgIERlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcyBvciBoYXJkd2FyZS4KKiAgIEhlbHAgdGV4dCB0byBndWlkZSB1c2VycyBpbiBtYWtpbmcgdGhlIHJpZ2h0IGNob2ljZXMuCgpCeSBleGFtaW5pbmcgdGhpcyBLY29uZmlnLCBJIGNhbiBxdWlja2x5IGdldCBhIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGF2YWlsYWJsZSwgaG93IGl0JiMzOTtzIGVuYWJsZWQsIGFuZCBhbnkgcHJlcmVxdWlzaXRlcy4gSXQgc2hvdWxkIGJlIGEgcHJldHR5IGRpcmVjdCByb3V0ZSB0byB1bmRlcnN0YW5kIGhvdyB0byBlbmFibGUgYW5kIGNvbmZpZ3VyZSB0aGVzZSB2aXJ0dWFsIGRyaXZlcnMuIFRpbWUgdG8gdGFrZSBhIGxvb2shCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnPTE9Y29uZmlnIE1BQzgwMjExX0hXU0lNXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MzpcdGRlcGVuZHMgb24gTUFDODAyMTFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZy00LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZz0xND1jb25maWcgVklSVF9XSUZJXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMTUtXHR0cmlzdGF0ZSBcJiMzNDtXaWZpIHdyYXBwZXIgZm9yIGV0aGVybmV0IGRyaXZlcnNcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZzoxNjpcdGRlcGVuZHMgb24gQ0ZHODAyMTFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZy0xNy1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTg5OAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlcGVuZGVuY3kgQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBNQUM4MDIxMV9IV1NJTWAgYW5kIGl0JiMzOTtzIHByZXR0eSBjbGVhciwgYXQgYSBnbGFuY2UsIHRoYXQgaXQmIzM5O3MgYnVpbHQgb24gdG9wIG9mIGBNQUM4MDIxMWAuIFRoYXQgbWFrZXMgc2Vuc2U7IGhhcmR3YXJlIHNpbXVsYXRpb24gdXN1YWxseSBpbnZvbHZlcyBpbnRlcmFjdGluZyB3aXRoIGEgTUFDIGxheWVyLiBOb3csIGBNQUM4MDIxMWAgaXRzZWxmLi4uIGFoLCBpdCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAuIFRoYXQmIzM5O3Mgbm8gc3VycHJpc2UgZWl0aGVyLCBnaXZlbiB0aGF0IGBDRkc4MDIxMWAgaGFuZGxlcyB0aGUgY29uZmlndXJhdGlvbiBpbnRlcmZhY2UgZm9yIHdpcmVsZXNzIGRldmljZXMuIE5vdyB0aGF0IEkga25vdyB0aGVzZSByZWxhdGlvbnNoaXBzLCBsZXQgbWUganVzdCBkaXZlIGRlZXBlciBpbnRvIHRoZSBgTUFDODAyMTFgIGRlcGVuZGVuY2llcyB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIHN1cnByaXNlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyB3aG9sZSBzdGFjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnPTI9Y29uZmlnIE1BQzgwMjExXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQ6XHRkZXBlbmRzIG9uIENGRzgwMjExXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01LVx0c2VsZWN0IENSWVBUT1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE2PWNvbW1lbnQgXCYjMzQ7Q0ZHODAyMTEgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgTUFDODAyMTFcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3Olx0ZGVwZW5kcyBvbiBDRkc4MDIxMT1uXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOC1cbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2Vcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMyLVx0cHJvbXB0IFwmIzM0O0RlZmF1bHQgcmF0ZSBjb250cm9sIGFsZ29yaXRobVwmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MzM6XHRkZXBlbmRzIG9uIE1BQzgwMjExX0hBU19SQ1xubmV0L21hYzgwMjExL0tjb25maWctMzQtXHRkZWZhdWx0IE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00MT1jb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctNDItXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7XG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MzpcdGRlcGVuZHMgb24gTUFDODAyMTFfUkNfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ0LVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXCYjMzQ7U29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXCYjMzQ7XG5uZXQvbWFjODAyMTEvS2NvbmZpZzo1ODpcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IE1BQzgwMjExX0hBU19SQz1uXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTYwPWNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBtYWM4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MjpcdGRlcGVuZHMgb24gS1VOSVRcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYzOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctNjQtXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTcwPWNvbmZpZyBNQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03MS1cdGJvb2wgXCYjMzQ7RW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XCYjMzQ7XG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MjpcdGRlcGVuZHMgb24gTUFDODAyMTFcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTczLVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTc5PWNvbmZpZyBNQUM4MDIxMV9MRURTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7RW5hYmxlIExFRCB0cmlnZ2Vyc1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6ODE6XHRkZXBlbmRzIG9uIE1BQzgwMjExXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4MjpcdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgzLVx0c2VsZWN0IExFRFNfVFJJR0dFUlNcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz04OD1jb25maWcgTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL0tjb25maWctODktXHRib29sIFwmIzM0O0V4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6OTA6XHRkZXBlbmRzIG9uIE1BQzgwMjExIFx1MDAyNlx1MDAyNiBDRkc4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05MS1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz05Nz1jb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05OC1cdGJvb2wgXCYjMzQ7VHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXCYjMzQ7XG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5OTpcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IFRSQUNJTkdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwMC1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xMTA9bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXHRib29sIFwmIzM0O1NlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMjpcdGRlcGVuZHMgb24gTUFDODAyMTFcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMy1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xMTY9Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0RvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExODpcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWctMTE5LVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTEzMj1jb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTMzLVx0Ym9vbCBcJiMzNDtWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzNDpcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWctMTM1LVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE0Mz1jb25maWcgTUFDODAyMTFfTUxNRV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTQ0LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1hbmFnZWQgTUxNRSBvdXRwdXRcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE0NTpcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWctMTQ2LVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE1ND1jb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXHRib29sIFwmIzM0O1ZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NjpcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWctMTU3LVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE2Mz1jb25maWcgTUFDODAyMTFfSFRfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBIVCBkZWJ1Z2dpbmdcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2NTpcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWctMTY2LVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE3NT1jb25maWcgTUFDODAyMTFfT0NCX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzYtXHRib29sIFwmIzM0O1ZlcmJvc2UgT0NCIGRlYnVnZ2luZ1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MTc3Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzgtXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MTg2PWNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXHRib29sIFwmIzM0O1ZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE4ODpcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWctMTg5LVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5Nz1jb25maWcgTUFDODAyMTFfUFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5OTpcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWctMjAwLVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTIwOT1jb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMTAtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwZWVyIGxpbmsgZGVidWdnaW5nXCYjMzQ7XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTE6XHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxMjpcdGRlcGVuZHMgb24gTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL0tjb25maWctMjEzLVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTIyMj1jb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXCYjMzQ7XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjQ6XHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyNTpcdGRlcGVuZHMgb24gTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL0tjb25maWctMjI2LVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTIzNT1jb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNzpcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWc6MjM4Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzktXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MjQ4PWNvbmZpZyBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0OS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHN5bmNocm9uaXphdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1MDpcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWc6MjUxOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTItXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MjU5PWNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjYwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXCYjMzQ7XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNjE6XHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI2MjpcdGRlcGVuZHMgb24gTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL0tjb25maWctMjYzLVx0aGVscFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTI3MD1jb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjcxLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MjcyOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzM6XHRkZXBlbmRzIG9uIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3NC1cdGhlbHBcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0yODE9Y29uZmlnIE1BQzgwMjExX1RETFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4Mi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBURExTIGRlYnVnZ2luZ1wmIzM0O1xubmV0L21hYzgwMjExL0tjb25maWc6MjgzOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODQtXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MjkzPWNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xubmV0L21hYzgwMjExL0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcJiMzNDtcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5NTpcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWc6Mjk2Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTctXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMjI2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2gmIzM5O3MgSW1wYWN0KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSBzZWUgaXQmIzM5O3MgdGllZCB0byBgTUFDODAyMTFfSFdTSU1gLCB3aGljaCwgb2YgY291cnNlLCByZWxpZXMgb24gYE1BQzgwMjExYCwgYW5kIHRodXMsIGBDRkc4MDIxMWAuIFRoYXQmIzM5O3MgdGhlIGNvcmUuIFRoZSBwYXRjaCBmb2N1c2VzIG9uIG1vZGlmeWluZyBgbmw4MDIxMS5jYCBhbmQgYHdleHQtc21lLmNgLCBib3RoIGNydWNpYWwgY29tcG9uZW50cyBvZiBgQ0ZHODAyMTFgLCBlc3BlY2lhbGx5IHNpbmNlIGB3ZXh0LXNtZS5jYCBhbHNvIGhhcyBhIGRlcGVuZGVuY3kgb24gYENGRzgwMjExX1dFWFRgLgoKVGhlIHJlYWwgbWVhdCBvZiB0aGUgY2hhbmdlcyBpbnZvbHZlcyBhZGRpbmcgYSBuZXcgZnVuY3Rpb24sIGBjZmc4MDIxMV92YWxpZGF0ZV9pZXNgLiBJdCBsb29rcyBsaWtlIHRoaXMgbmV3IHZhbGlkYXRpb24gZnVuY3Rpb24gaXMgYmVpbmcgaW50ZWdyYXRlZCBpbnRvIHNldmVyYWwga2V5IGFyZWFzOiBgdmFsaWRhdGVfYmVhY29uX2hlYWRgIGFuZCBgdmFsaWRhdGVfaWVfYXR0cmAgd2l0aGluIGBubDgwMjExLmNgLCBhbmQgYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgIHdpdGhpbiBgd2V4dC1zbWUuY2AuIFRoZXNlIGFyZSBpbXBvcnRhbnQgYmVjYXVzZSB0aGV5IGFyZSB0aGUgdXNlci1zcGFjZSBpbnRlcmZhY2VzOiB0aGUgbmV0bGluayAobmw4MDIxMSkgcGF0aCBhbmQgdGhlIGlvY3RsICh3ZXh0KSBwYXRoLCByZXNwZWN0aXZlbHkuCgpSaWdodCBub3csIG15IGZvY3VzIGlzIG9uIGB2YWxpZGF0ZV9iZWFjb25faGVhZGAgYW5kIGB2YWxpZGF0ZV9pZV9hdHRyYCB3aXRoaW4gYG5sODAyMTEuY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9uIGlzIGJlaW5nIHVzZWQgaW4gdGhvc2UgY29udGV4dHMuIExldCYjMzk7cyBkaWcgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZhbGlkYXRlX2JlYWNvbl9oZWFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL25sODAyMTEuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTIyMT1jZmc4MDIxMV9nZXRfZGV2X2Zyb21faW5mbyhzdHJ1Y3QgbmV0ICpuZXRucywgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIyNS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjI2OnN0YXRpYyBpbnQgdmFsaWRhdGVfYmVhY29uX2hlYWQoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjI3LVx0XHRcdFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9NjM0PW5sODAyMTFfczFnX3Nob3J0X2JlYWNvbltOTDgwMjExX1MxR19TSE9SVF9CRUFDT05fQVRUUl9NQVggJiM0MzsgMV0gPSB7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTYzNS1cdFtOTDgwMjExX1MxR19TSE9SVF9CRUFDT05fQVRUUl9IRUFEXSA9XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjYzNjpcdFx0TkxBX1BPTElDWV9WQUxJREFURV9GTihOTEFfQklOQVJZLCB2YWxpZGF0ZV9iZWFjb25faGVhZCxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNjM3LVx0XHRcdFx0ICAgICAgIElFRUU4MDIxMV9NQVhfREFUQV9MRU4pLFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9Njg5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBubDgwMjExX3BvbGljeVtOVU1fTkw4MDIxMV9BVFRSXSA9IHtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTczNi1cdFtOTDgwMjExX0FUVFJfQkVBQ09OX0hFQURdID1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NzM3Olx0XHROTEFfUE9MSUNZX1ZBTElEQVRFX0ZOKE5MQV9CSU5BUlksIHZhbGlkYXRlX2JlYWNvbl9oZWFkLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy03MzgtXHRcdFx0XHQgICAgICAgSUVFRTgwMjExX01BWF9EQVRBX0xFTiksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0Mjg3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgTmV0bGluayBBdHRyaWJ1dGUgVmFsaWRhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGZsYWdzIGB2YWxpZGF0ZV9iZWFjb25faGVhZGAgYW5kIGB2YWxpZGF0ZV9pZV9hdHRyYCBhcyBzcGVjaWZpYyB2YWxpZGF0aW9uIGZ1bmN0aW9ucyB3aXRoaW4gYSBuZXRsaW5rIGNvbnRleHQuIFRoZSB1c2Ugb2YgJiMzNDt2YWxpZGF0ZSYjMzQ7IHNjcmVhbXMgdGhhdCB0aGVzZSBhcmUgZGVzaWduZWQgdG8gZW5mb3JjZSBzcGVjaWZpYyBydWxlcyBvciBjb25zdHJhaW50cyBvbiBpbmNvbWluZyBuZXRsaW5rIGF0dHJpYnV0ZXMuIEnigJltIGd1ZXNzaW5nLCBnaXZlbiB0aGUgbmFtZXMsIHRoYXQgYHZhbGlkYXRlX2JlYWNvbl9oZWFkYCBwcm9iYWJseSBmb2N1c2VzIG9uIHZhbGlkYXRpbmcgdGhlIGhlYWRlciBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIGJlYWNvbiBmcmFtZXMsIHBlcmhhcHMgZW5zdXJpbmcgY29ycmVjdCBmaWVsZCBsZW5ndGhzLCBtYWdpYyBudW1iZXJzLCBvciBmbGFnIHNldHRpbmdzLiBXZSYjMzk7cmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBjcml0aWNhbCBjb250cm9sIGluZm9ybWF0aW9uIGhlcmUsIGdpdmVuIHRoZSBpbXBvcnRhbmNlIG9mIGEgYmVhY29uJiMzOTtzIHN0cnVjdHVyZS4KCmB2YWxpZGF0ZV9pZV9hdHRyYC4uLiB3ZWxsLCB0aGF04oCZcyB3aGVyZSB0aGluZ3MgY2FuIGdldCBpbnRlcmVzdGluZy4gJiMzNDtJRSYjMzQ7IG9mIGNvdXJzZSBzdGFuZHMgZm9yIEluZm9ybWF0aW9uIEVsZW1lbnQuIFRoaXMgZnVuY3Rpb24gaXMgdGFza2VkIHdpdGggZW5zdXJpbmcgdGhlc2UgaW5mb3JtYXRpb24gZWxlbWVudHMgY29udGFpbmVkIGluIGEgbmV0bGluayBtZXNzYWdlIGFkaGVyZSB0byB0aGUgZGVmaW5lZCBzdGFuZGFyZHMsIG9yIHBlcmhhcHMgYXBwbGljYXRpb24tc3BlY2lmaWMgY29uc3RyYWludHMuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyBtb3JlIGFib3V0IHRoZSBuZXRsaW5rIGF0dHJpYnV0ZXMgaW52b2x2ZWQsIG9mIGNvdXJzZSwgYnV0IGJhc2VkIHNvbGVseSBvbiBuYW1pbmcsIHRoaXMgY291bGQgYmUgYW55dGhpbmcgZnJvbSBwYXJzaW5nIGFuZCB2YWxpZGF0aW5nIGEgc3BlY2lmaWMgSUUgdHlwZSBsaWtlIHRoZSBTU0lEIG9yIFN1cHBvcnRlZCBSYXRlcywgb3Igc29tZXRoaW5nIGZhciBtb3JlIGNvbXBsZXgsIHBvdGVudGlhbGx5IGludm9sdmluZyB2ZW5kb3Itc3BlY2lmaWMgSUVzLgoKTXkgYXNzdW1wdGlvbiBpcyB0aGF0IGJvdGggZnVuY3Rpb25zIGFyZSBsaWtlbHkgcGFydCBvZiBhIGxhcmdlciBuZXRsaW5rIG1lc3NhZ2UgcHJvY2Vzc2luZyBwaXBlbGluZSwgd2hlcmUgZWFjaCBhdHRyaWJ1dGUgKG9yIGdyb3VwIG9mIGF0dHJpYnV0ZXMpIHVuZGVyZ29lcyBzcGVjaWZpYyB2YWxpZGF0aW9uIHN0ZXBzIHRvIGVuc3VyZSBkYXRhIGludGVncml0eSBhbmQgcHJldmVudCBwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIG9yIHN5c3RlbSBpbnN0YWJpbGl0eS4gV2l0aG91dCBtb3JlIGNvbnRleHQsIEkmIzM5O2QgaW1hZ2luZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGVpdGhlciBkcml2ZXItbGV2ZWwgZnVuY3Rpb25hbGl0eSBvciBtYXliZSBzb21ldGhpbmcgZGVlcGVyIHdpdGhpbiBhIG5ldHdvcmsgbWFuYWdlbWVudCBzdGFjay4gVGhlIGRldmlsLCBhcyBhbHdheXMsIGlzIGluIHRoZSBkZXRhaWxzLCBzbyBJJiMzOTtkIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlYmFzZSBhbmQgYW5hbHl6ZSBleGFjdGx5IHdoYXQgdGhleSBhcmUgY2hlY2tpbmcgYW5kIGhvdyB0aGV5IGFyZSBsZXZlcmFnZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZhbGlkYXRlX2llX2F0dHImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9ubDgwMjExLmM9MjI2PXN0YXRpYyBpbnQgdmFsaWRhdGVfYmVhY29uX2hlYWQoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2Ny1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjY4OnN0YXRpYyBpbnQgdmFsaWRhdGVfaWVfYXR0cihjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yNjktXHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTYzND1ubDgwMjExX3MxZ19zaG9ydF9iZWFjb25bTkw4MDIxMV9TMUdfU0hPUlRfQkVBQ09OX0FUVFJfTUFYICYjNDM7IDFdID0ge1xuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNjM4LVx0W05MODAyMTFfUzFHX1NIT1JUX0JFQUNPTl9BVFRSX1RBSUxdID1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NjM5Olx0XHROTEFfUE9MSUNZX1ZBTElEQVRFX0ZOKE5MQV9CSU5BUlksIHZhbGlkYXRlX2llX2F0dHIsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTY0MC1cdFx0XHRcdCAgICAgICBJRUVFODAyMTFfTUFYX0RBVEFfTEVOKSxcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTY2Mj1ubDgwMjExX25hbl9jb25mX3BvbGljeVtOTDgwMjExX05BTl9DT05GX0FUVFJfTUFYICYjNDM7IDFdID0ge1xuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNjY4LVx0W05MODAyMTFfTkFOX0NPTkZfVkVORE9SX0VMRU1TXSA9XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjY2OTpcdFx0TkxBX1BPTElDWV9WQUxJREFURV9GTihOTEFfQklOQVJZLCB2YWxpZGF0ZV9pZV9hdHRyLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy02NzAtXHRcdFx0XHQgICAgICAgSUVFRTgwMjExX01BWF9EQVRBX0xFTiksXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz02ODk9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IG5sODAyMTFfcG9saWN5W05VTV9OTDgwMjExX0FUVFJdID0ge1xuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNzM5LVx0W05MODAyMTFfQVRUUl9CRUFDT05fVEFJTF0gPVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo3NDA6XHRcdE5MQV9QT0xJQ1lfVkFMSURBVEVfRk4oTkxBX0JJTkFSWSwgdmFsaWRhdGVfaWVfYXR0cixcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNzQxLVx0XHRcdFx0ICAgICAgIElFRUU4MDIxMV9NQVhfREFUQV9MRU4pLFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNzc4LVx0W05MODAyMTFfQVRUUl9JRV0gPSBOTEFfUE9MSUNZX1ZBTElEQVRFX0ZOKE5MQV9CSU5BUlksXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjc3OTpcdFx0XHRcdFx0XHQgICB2YWxpZGF0ZV9pZV9hdHRyLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy03ODAtXHRcdFx0XHRcdFx0ICAgSUVFRTgwMjExX01BWF9EQVRBX0xFTiksXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy04NDQtXHRbTkw4MDIxMV9BVFRSX0lFX1BST0JFX1JFU1BdID1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6ODQ1Olx0XHROTEFfUE9MSUNZX1ZBTElEQVRFX0ZOKE5MQV9CSU5BUlksIHZhbGlkYXRlX2llX2F0dHIsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTg0Ni1cdFx0XHRcdCAgICAgICBJRUVFODAyMTFfTUFYX0RBVEFfTEVOKSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtODQ3LVx0W05MODAyMTFfQVRUUl9JRV9BU1NPQ19SRVNQXSA9XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjg0ODpcdFx0TkxBX1BPTElDWV9WQUxJREFURV9GTihOTEFfQklOQVJZLCB2YWxpZGF0ZV9pZV9hdHRyLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy04NDktXHRcdFx0XHQgICAgICAgSUVFRTgwMjExX01BWF9EQVRBX0xFTiksXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz02NTA0PW5sODAyMTFfcGFyc2VfbWJzc2lkX2VsZW1zKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBubGF0dHIgKmF0dHJzLFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNjUxNy1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NjUxODpcdFx0cmV0ID0gdmFsaWRhdGVfaWVfYXR0cihubF9lbGVtcywgZXh0YWNrKTtcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNjUxOS1cdFx0aWYgKHJldClcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTY1NDE9bmw4MDIxMV9wYXJzZV9ybnJfZWxlbXMoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5sYXR0ciAqYXR0cnMsXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy02NTUxLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo2NTUyOlx0XHRyZXQgPSB2YWxpZGF0ZV9pZV9hdHRyKG5sX2VsZW1zLCBleHRhY2spO1xubmV0L3dpcmVsZXNzL25sODAyMTEuYy02NTUzLVx0XHRpZiAocmV0KVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTAyMTY9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5XG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xMDIyNC1cdFtOTDgwMjExX01FU0hfU0VUVVBfSUVdID1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTAyMjU6XHRcdE5MQV9QT0xJQ1lfVkFMSURBVEVfRk4oTkxBX0JJTkFSWSwgdmFsaWRhdGVfaWVfYXR0cixcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTAyMjYtXHRcdFx0XHQgICAgICAgSUVFRTgwMjExX01BWF9EQVRBX0xFTiksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MDkyCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29kZSBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBvdmVyIHRoZXNlIGNoYW5nZXMsIGFuZCBteSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGUgZnVuY3Rpb25zIGludm9sdmVkIGFyZSBkZWZpbml0ZWx5IHdvcmtpbmcgYXMgZXhwZWN0ZWQ7IHRoZXkgYXJlIHJlYWNoYWJsZSBhbmQgYXBwZWFyIHRvIGZ1bmN0aW9uIHByb3Blcmx5LiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIHJlZmFjdG9yaW5nIHRoZSBJRSAoSW5mb3JtYXRpb24gRWxlbWVudCkgdmFsaWRhdGlvbiBsb2dpYyBmb3IgdGhlIElFIHZhbGlkYXRpb24gaW50byBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYC4gVGhlbiwgaXQmIzM5O3MgaW50ZWdyYXRlZCB0aGlzIHJlZmFjdG9yZWQgdmFsaWRhdGlvbiBmdW5jdGlvbiBpbnRvIGBjZmc4MDIxMV93ZXh0X3Npd2dlbmllYCB3aXRoaW4gYHdleHQtc21lLmNgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGFpbWVkIGF0IGFkZGluZyB2YWxpZGF0aW9uIHRvIGBjZmc4MDIxMV93ZXh0X3Npd2dlbmllYCwgc3BlY2lmaWNhbGx5LiBJIHNob3VsZCB0YWtlIGEgbG9vayBhdCB0aGUgYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgIGZ1bmN0aW9uIGRpcmVjdGx5LiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIGludGVncmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZmc4MDIxMV93ZXh0X3Npd2dlbmllJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL3dleHQtc21lLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL3dleHQtc21lLmM9MjczPWludCBjZmc4MDIxMV9tZ2Rfd2V4dF9naXdhcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jLTI5Ny1cbm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jOjI5ODppbnQgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L3dpcmVsZXNzL3dleHQtc21lLmMtMjk5LVx0XHRcdCAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NTYzCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gdGhlIHF1ZXN0aW9uIGlzOiBpcyBgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZWAgYWN0dWFsbHkgZXhwb3J0ZWQgZm9yIHVzZSBleHRlcm5hbGx5LCBvciBpcyBpdCBtZXJlbHkgbHVya2luZyBpbnNpZGUgYSBzdHJ1Y3Qgc29tZXdoZXJlPyBUaGF0JiMzOTtzIHRoZSBjcnV4IG9mIGl0LiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgb2YgaXRzIGFjY2Vzc2liaWxpdHkuIElzIGl0IGEgcHVibGljLWZhY2luZyBBUEkgZnVuY3Rpb24sIG9yIGlzIGl0IG1vcmUgb2YgYSBoZWxwZXIsIGludGVybmFsIHRvIGEgcGFydGljdWxhciBtb2R1bGUgb3Igc3RydWN0dXJlIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIHdpcmVsZXNzIHN1YnN5c3RlbT8gS25vd2luZyB0aGlzIGZ1bmRhbWVudGFsbHkgaW1wYWN0cyBob3cgSSB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgaW1wYWN0IG9uIG90aGVyIGNvbXBvbmVudHMgYW5kIGZ1dHVyZSBrZXJuZWwgZGV2ZWxvcG1lbnQuIEkgbmVlZCB0byBjaGVjayB0aGUgc3ltYm9sIHRhYmxlLCB0aGUgcmVsZXZhbnQgaGVhZGVyIGZpbGVzLCBhbmQgcG9zc2libHkgdHJhY2UgaXRzIHVzYWdlIHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZSB0byBnZXQgYSBjbGVhciBwaWN0dXJlLiBUaGUgaW1wbGljYXRpb25zIGZvciB0aGUgZGVzaWduIGFuZCBtYWludGFpbmFiaWxpdHkgb2YgdGhlIHdpcmVsZXNzIHN0YWNrLCBhbmQgcGFydGljdWxhcmx5IHRoZSB3ZXh0IGNvbXBhdGliaWxpdHkgbGF5ZXIsIGRlcGVuZCBvbiB0aGUgYW5zd2VyLiBJZiBpdCYjMzk7cyBpbnRlcm5hbCwgcmVmYWN0b3Jpbmcgb3IgcmVwbGFjaW5nIGl0IGJlY29tZXMgYSBsZXNzIHNlbnNpdGl2ZSBpc3N1ZSwgdmVyc3VzIGFuIGV4dGVybmFsbHktZmFjaW5nIGZ1bmN0aW9uIHRoYXQgbWlnaHQgYnJlYWsgdXNlcnNwYWNlIGJpbmFyaWVzLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBkZWVwZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NmZzgwMjExX3dleHRfc2l3Z2VuaWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy93ZXh0LWNvbXBhdC5jPTE0ODQ9c3RhdGljIGNvbnN0IGl3X2hhbmRsZXIgY2ZnODAyMTFfaGFuZGxlcnNbXSA9IHtcbi0tXG5uZXQvd2lyZWxlc3Mvd2V4dC1jb21wYXQuYy0xNTExLVx0SVdfSEFORExFUihTSU9DR0lXUE9XRVIsXHRjZmc4MDIxMV93ZXh0X2dpd3Bvd2VyKSxcbm5ldC93aXJlbGVzcy93ZXh0LWNvbXBhdC5jOjE1MTI6XHRJV19IQU5ETEVSKFNJT0NTSVdHRU5JRSxcdGNmZzgwMjExX3dleHRfc2l3Z2VuaWUpLFxubmV0L3dpcmVsZXNzL3dleHQtY29tcGF0LmMtMTUxMy1cdElXX0hBTkRMRVIoU0lPQ1NJV0FVVEgsXHRcdGNmZzgwMjExX3dleHRfc2l3YXV0aCksXG4tLVxubmV0L3dpcmVsZXNzL3dleHQtY29tcGF0Lmg9NDY9aW50IGNmZzgwMjExX3dleHRfc2l3bWxtZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC93aXJlbGVzcy93ZXh0LWNvbXBhdC5oLTQ4LVx0XHRcdCAgdW5pb24gaXdyZXFfZGF0YSAqd3JxdSwgY2hhciAqZXh0cmEpO1xubmV0L3dpcmVsZXNzL3dleHQtY29tcGF0Lmg6NDk6aW50IGNmZzgwMjExX3dleHRfc2l3Z2VuaWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC93aXJlbGVzcy93ZXh0LWNvbXBhdC5oLTUwLVx0XHRcdCAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sXG4tLVxubmV0L3dpcmVsZXNzL3dleHQtc21lLmM9MjczPWludCBjZmc4MDIxMV9tZ2Rfd2V4dF9naXdhcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jLTI5Ny1cbm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jOjI5ODppbnQgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L3dpcmVsZXNzL3dleHQtc21lLmMtMjk5LVx0XHRcdCAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MzE5CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIFNJT0NTSVdHRU5JRSBpb2N0bCBIYW5kbGVyKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IGZpeGluZyBhIHByb2JsZW0gd2l0aCBgU0lPQ1NJV0dFTklFYC4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIHRoZXJlJiMzOTtzIGEgYnVnIHRoYXQgYWxsb3dzIGl0IHRvIGFjY2VwdCBpbnZhbGlkIElFcywgd2hpY2ggaXMgYSBiaWcgZGVhbC4gRGVmaW5pdGVseSB3b3J0aCBhIGZ1enppbmcgY2FtcGFpZ24gdG8gaWRlbnRpZnkgYW55IHZ1bG5lcmFiaWxpdGllcy4KClRoZSBrZXkgc3ltYm9scyBJIG5lZWQgdG8gZm9jdXMgb24gZm9yIHRoaXMgYXJlIGBjZmc4MDIxMV92YWxpZGF0ZV9pZXNgLCBgdmFsaWRhdGVfYmVhY29uX2hlYWRgLCBgdmFsaWRhdGVfaWVfYXR0cmAsIGFuZCBhbHNvLCBvYnZpb3VzbHksIGBjZmc4MDIxMV93ZXh0X3Npd2dlbmllYC4gVGhvc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMgYW5kIHZhbGlkYXRpb24gZnVuY3Rpb25zIEkmIzM5O2xsIG5lZWQgdG8gaGl0LgoKRm9yIHRoZSBrZXJuZWwgY29uZmlncywgSSYjMzk7bGwgbmVlZCBgQ0ZHODAyMTFgLCBgQ0ZHODAyMTFfV0VYVGAsIGBNQUM4MDIxMWAsIGFuZCBgTUFDODAyMTFfSFdTSU1gLiBJIHdhcyBicmllZmx5IHNlY29uZC1ndWVzc2luZyBgTUFDODAyMTFfSFdTSU1gLCB0aGlua2luZyBtYXliZSBpdCB3YXNuJiMzOTt0IHN0cmljdGx5ICpyZXF1aXJlZCogZm9yIG5ldGxpbmsvaW9jdGwgZnV6emluZyBvZiBgQ0ZHODAyMTFgLCBidXQgaXQmIzM5O3MgcmVhbGx5IHRoZSBlYXNpZXN0IHdheSB0byBzcGluIHVwIHNvbWUgd2lyZWxlc3MgZGV2aWNlcy4KCkxldCYjMzk7cyBxdWlja2x5IGNvbmZpcm0sIHllcywgYE1BQzgwMjExX0hXU0lNYCBpcyBzdGlsbCB0aGUgYmVzdCBhcHByb2FjaC4gSXQgcHJvdmlkZXMgdGhvc2UgY29udmVuaWVudCBmYWtlIHdpcmVsZXNzIGRldmljZXMgdGhhdCBJIGNhbiBpbnRlcmFjdCB3aXRoIHVzaW5nIGJvdGggYG5sODAyMTFgIGFuZCBgd2V4dGAsIHdoaWNoIGlzIHBlcmZlY3QgZm9yIHRoaXMuCgpBbmQsIHJpZ2h0LCBJJiMzOTtsbCBkZWZpbml0ZWx5IG5lZWQgYENGRzgwMjExX1dFWFRgIGVuYWJsZWQuIEkgY2FuJiMzOTt0IGZvcmdldCB0aGF0IGl0JiMzOTtzIG5lZWRlZCBmb3IgdGhlIGB3ZXh0LXNtZS5jYCBjb21wb25lbnQuIEFuZCB0aGF0IG1lYW5zIGBXRVhUX0NPUkVgIGlzIGFsc28gZ29pbmcgdG8gYmUgcHVsbGVkIGluIGJlY2F1c2UgaXQmIzM5O3Mgc2VsZWN0ZWQgYnkgYENGRzgwMjExX1dFWFRgLCBzbyB0aGF0IGlzIGFsc28gZ29vZCB0byBnby4gTGV0JiMzOTtzIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYENGRzgwMjExX1dFWFRgIGlzIGNvcnJlY3QgaW4gdGhlIGBuZXQvd2lyZWxlc3MvS2NvbmZpZ2AgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENGRzgwMjExX1dFWFQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZz0xNzc9Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4Ni1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE4Nzpjb25maWcgQ0ZHODAyMTFfV0VYVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSB3aXJlbGVzcyBleHRlbnNpb25zIGNvbXBhdGliaWxpdHlcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgyNDYKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ29uZmlndXJhdGlvbiBDb251bmRydW0qKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gd3JhcCBteSBoZWFkIGFyb3VuZCB0aGVzZSBjb25maWd1cmF0aW9ucy4gRmlyc3QsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7dmUgZ290IHRoaXMgc3RyYWlnaHQuIFdhaXQgYSBtaW51dGUsIGBDRkc4MDIxMV9XRVhUYCBpcyBhY3R1YWxseSBhIGBib29sYCwgbm90IGEgdHJpc3RhdGUuIEdvb2QgdG8ga2VlcCBpbiBtaW5kLCBJIG5lZWQgdG8gYmUgZXhhY3QgaGVyZS4KCk5vdywgbGV0JiMzOTtzIHNlZSwgYE1BQzgwMjExX0hXU0lNYC4uLiB0aGF0IG9uZSAqaXMqIGEgYHRyaXN0YXRlYCwgcmlnaHQ/IFllcywgY29uZmlybWVkLiBPa2F5LCBncmVhdC4gVGhhdCBtZWFucyB0byBlbmFibGUgdGhpcyBzZXR1cCwgSSBuZWVkIHRvIGNvbmZpZ3VyZSB0aGUgZm9sbG93aW5nOiBgQ0ZHODAyMTFgLCBgQ0ZHODAyMTFfV0VYVGAsIGBNQUM4MDIxMWAsIGFuZCBgTUFDODAyMTFfSFdTSU1gLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhlIGRlcGVuZGVuY2llcyBmb3IgYENGRzgwMjExX1dFWFRgIGRvbiYjMzk7dCBpbnRyb2R1Y2UgYW55IGhpZGRlbiBnb3RjaGFzLiBJdCB3b3VsZCBiZSBhIG5pZ2h0bWFyZSB0byBkZWJ1ZyBsYXRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnPTU9Y29uZmlnIFdFWFRfQ09SRVxubmV0L3dpcmVsZXNzL0tjb25maWctNi1cdGRlZl9ib29sIHlcbm5ldC93aXJlbGVzcy9LY29uZmlnOjc6XHRkZXBlbmRzIG9uIENGRzgwMjExX1dFWFQgfHwgV0lSRUxFU1NfRVhUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy04LVxubmV0L3dpcmVsZXNzL0tjb25maWc9OT1jb25maWcgV0VYVF9QUk9DXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMC1cdGRlZl9ib29sIHlcbm5ldC93aXJlbGVzcy9LY29uZmlnOjExOlx0ZGVwZW5kcyBvbiBQUk9DX0ZTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjpcdGRlcGVuZHMgb24gV0VYVF9DT1JFXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMy1cbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0xNz1jb25maWcgQ0ZHODAyMTFcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7Y2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVwmIzM0O1xubmV0L3dpcmVsZXNzL0tjb25maWc6MTk6XHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0yMC1cdHNlbGVjdCBGV19MT0FERVJcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz02OD1jb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXCYjMzQ7XG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo3MDpcdGRlcGVuZHMgb24gRVhQRVJUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy03MS1cdGRlZmF1bHQgblxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnPTk5PWNvbmZpZyBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDEtXHRkZWZhdWx0IHlcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEwMjpcdGRlcGVuZHMgb24gQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMy1cdGhlbHBcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0xMTE9Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVx0c3RyaW5nIFwmIzM0O2FkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbm5ldC93aXJlbGVzcy9LY29uZmlnOjExMzpcdGRlcGVuZHMgb24gQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExNC1cdGhlbHBcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0xMjI9Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTIzLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1wmIzM0O1xubmV0L3dpcmVsZXNzL0tjb25maWc6MTI0Olx0ZGVwZW5kcyBvbiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyNS1cdGhlbHBcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0xMzU9Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTM2LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXCYjMzQ7XG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzc6XHRkZXBlbmRzIG9uIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTM4LVx0aGVscFxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnPTE2OT1jb25maWcgQ0ZHODAyMTFfREVCVUdGU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcJiMzNDtcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3MTpcdGRlcGVuZHMgb24gREVCVUdfRlNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Mi1cdGhlbHBcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0xOTQ9Y29uZmlnIENGRzgwMjExX0tVTklUX1RFU1Rcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5NS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBjZmc4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTY6XHRkZXBlbmRzIG9uIEtVTklUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTc6XHRkZXBlbmRzIG9uIENGRzgwMjExXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTgtXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTU1NgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBDRkc4MDIxMV9XRVhUYCBtb2R1bGUgYW5kIGl0JiMzOTtzIGltbWVkaWF0ZWx5IGFwcGFyZW50IHRoYXQgaXRzIGluY2x1c2lvbiBpcyBjb25kaXRpb25hbC4gVGhlIGNvZGUgc3RydWN0dXJlIHRlbGxzIG1lIGl0JiMzOTtzIG5lc3RsZWQgd2l0aGluIGFuIGBpZiBDRkc4MDIxMWAgYmxvY2suIFRoaXMgbWVhbnMgYENGRzgwMjExX1dFWFRgIGlzIGRlcGVuZGVudCBvbiB0aGUgYENGRzgwMjExYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gTm93LCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgYW5kIHRyYWNlIHRoaXMgZGVwZW5kZW5jeSBwcm9wZXJseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGBpZiBDRkc4MDIxMWAgaW4gdGhlIGtlcm5lbCYjMzk7cyBLY29uZmlnIGZpbGVzLiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIGhlYWQgb3ZlciB0byBgbmV0L3dpcmVsZXNzL0tjb25maWdgIHRvIGNvbmZpcm0gdGhpcyBkZXBlbmRlbmN5IGFuZCB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IGl0JiMzOTtzIGNvbmZpZ3VyZWQuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZiBDRkc4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnPTE3PWNvbmZpZyBDRkc4MDIxMVxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTI0LVx0IyAodGhpcyBpcyBoZXJlIHJhdGhlciB0aGFuIGJlbG93IHRvIGFsbG93IGl0IHRvIGJlIGEgbW9kdWxlKVxubmV0L3dpcmVsZXNzL0tjb25maWc6MjU6XHRzZWxlY3QgQ1JZUFRPX1NIQTI1NiBpZiBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTI2LVx0aGVscFxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTM1LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MzY6aWYgQ0ZHODAyMTFcbm5ldC93aXJlbGVzcy9LY29uZmlnLTM3LVxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnPTg5PWNvbmZpZyBDRkc4MDIxMV9SRVFVSVJFX1NJR05FRF9SRUdEQlxubmV0L3dpcmVsZXNzL0tjb25maWc6OTA6XHRib29sIFwmIzM0O3JlcXVpcmUgcmVnZGIgc2lnbmF0dXJlXCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xubmV0L3dpcmVsZXNzL0tjb25maWctOTEtXHRkZWZhdWx0IHlcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz05OT1jb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMDA6XHRib29sIFwmIzM0O2FsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDEtXHRkZWZhdWx0IHlcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0xMTE9Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxubmV0L3dpcmVsZXNzL0tjb25maWc6MTEyOlx0c3RyaW5nIFwmIzM0O2FkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMy1cdGRlcGVuZHMgb24gQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAyMzMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA2MzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaDogV2lyZWxlc3MgSUVTIFZhbGlkYXRpb24qKgoKT2theSwgc28gYENGRzgwMjExX1dFWFRgIGlzIGRlZmluaXRlbHkgZW5hYmxlZCwgc28gdGhhdCYjMzk7cyBub3QgYSBjb25jZXJuLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGNmZzgwMjExX3ZhbGlkYXRlX2llc2Agd2l0aGluIGBuZXQvd2lyZWxlc3MvdXRpbC5jYC4gUmlnaHQsIGFuZCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHNldmVyYWwgcGxhY2VzOiBgdmFsaWRhdGVfYmVhY29uX2hlYWRgIGFuZCBgdmFsaWRhdGVfaWVfYXR0cmAgaW4gYG5sODAyMTEuY2AsIGFuZCBhbHNvIGBjZmc4MDIxMV93ZXh0X3Npd2dlbmllYCBpbiBgd2V4dC1zbWUuY2AuIFRob3NlIGFsbCBsb29rIGxpa2UgcmVhc29uYWJsZSBlbnRyeSBwb2ludHMgZm9yIHRlc3RpbmcsIGdpdmVuIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlLiBTbywgdGhlIGtleSBzeW1ib2xzIEkgbmVlZCB0byBmb2N1cyBvbiBhcmUgYGNmZzgwMjExX3ZhbGlkYXRlX2llc2AsIGB2YWxpZGF0ZV9iZWFjb25faGVhZGAsIGB2YWxpZGF0ZV9pZV9hdHRyYCwgYW5kIGBjZmc4MDIxMV93ZXh0X3Npd2dlbmllYC4KCk5vdywgdGhlIHF1ZXN0aW9uIGlzLCBpcyBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYCBhY3R1YWxseSBleHBvcnRlZD8gSW5pdGlhbGx5LCBJIHRob3VnaHQgbm90LCBiZWNhdXNlIHRoZSBwYXRjaCBkb2VzbiYjMzk7dCBleHBsaWNpdGx5IGBFWFBPUlRfU1lNQk9MYCBpdC4gTGV0IG1lIGxvb2sgYXQgdGhlIGNvZGU6CgpgYGBjCiYjNDM7Ym9vbCBjZmc4MDIxMV92YWxpZGF0ZV9pZXMoY29uc3QgdTggKmRhdGEsIGludCBsZW4pCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgZWxlbWVudCAqZWxlbTsKJiM0MzsKJiM0MzsJZm9yX2VhY2hfZWxlbWVudChlbGVtLCBkYXRhLCBsZW4pIHsKJiM0MzsJCS8qIG5vdGhpbmcgKi8KJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gZm9yX2VhY2hfZWxlbWVudF9jb21wbGV0ZWQoZWxlbSwgZGF0YSwgbGVuKTsKJiM0Mzt9CmBgYAoKT2theSwgaXQmIzM5O3Mgbm90IGV4cG9ydGVkIGluIHRoZSB0cmFkaXRpb25hbCB3YXksIGJ1dCB3YWl0LCBsb29raW5nIGNsb3Nlci4uLiB0aGUgZGlmZiAqZG9lcyogYWRkIGl0IHRvIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5oYC4gQWhhIQoKYGBgYwotLS0gYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmgKQEAgLTEyOSw0ICYjNDM7MTI5LDYgQEAgaW50IG5sODAyMTFfcG1zcl9zdGFydChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKTsKIHZvaWQgbmw4MDIxMV9tbG9fcmVjb25mX2FkZF9kb25lKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkJIHN0cnVjdCBjZmc4MDIxMV9tbG9fcmVjb25mX2RvbmVfZGF0YSAqZGF0YSk7CiAKJiM0Mztib29sIGNmZzgwMjExX3ZhbGlkYXRlX2llcyhjb25zdCB1OCAqZGF0YSwgaW50IGxlbik7CiYjNDM7CiAjZW5kaWYgLyogX19ORVRfV0lSRUxFU1NfTkw4MDIxMV9IICovCmBgYAoKU28sIGl0JiMzOTtzIGRlY2xhcmVkIGluIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5oYCAqYW5kKiBgbmV0L3dpcmVsZXNzL3dleHQtY29tcGF0LmhgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCYjMzk7cyBiZWluZyB1c2VkIGJ5IGB3ZXh0LXNtZS5jYCwgc28gaXQgc2hvdWxkIGJlIGF2YWlsYWJsZS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBgd2V4dC1zbWUuY2AgYWN0dWFsbHkgaW5jbHVkZXMgYG5sODAyMTEuaGAuIEkmIzM5O2xsIGhhdmUgdG8gY2hlY2sgdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmw4MDIxMVxcLmgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvd2V4dC1zbWUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvd2V4dC1zbWUuYy0xNS0jaW5jbHVkZSBcJiMzNDt3ZXh0LWNvbXBhdC5oXCYjMzQ7XG5uZXQvd2lyZWxlc3Mvd2V4dC1zbWUuYzoxNjojaW5jbHVkZSBcJiMzNDtubDgwMjExLmhcJiMzNDtcbm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jLTE3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTY0NgoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDIxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRnVuY3Rpb24gVXNhZ2UgZm9yIFBvdGVudGlhbCBGb2N1cyBTeW1ib2xzKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIGlkZW50aWZ5IHNvbWUgZ29vZCBjYW5kaWRhdGVzIGZvciBmb2N1cyBzeW1ib2xzLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBpbnN0cnVjdGlvbnMgYXJlIGNsZWFyOiB3ZSB3YW50IG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBUaGF0IG1ha2VzIHNlbnNlLCB0aG9zZSBhcmUgZWFzaWVyIHRvIHRyYWNlIGFuZCBhbmFseXplLgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYC4gVGhhdCYjMzk7cyAqZGVmaW5pdGVseSogbm9uLXN0YXRpYywgc28gdGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdywgSSBzZWUgYHZhbGlkYXRlX2JlYWNvbl9oZWFkYCBhbmQgYHZhbGlkYXRlX2llX2F0dHJgLiBUaG9zZSBhcmUgc3RhdGljLCBpbiBgbmw4MDIxMS5jYC4gQnV0Li4uIGhhbmcgb24uIFRob3NlIGFyZSBiZWluZyBwYXNzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMgdG8gYE5MQV9QT0xJQ1lfVkFMSURBVEVfRk5gLiBUaGF0IG1lYW5zIHRoZXkmIzM5O3JlIG5vdCBpbmxpbmVkISBUaGVpciBhZGRyZXNzZXMgYXJlIGRpc3RpbmN0IHN5bWJvbHMhIEJpbmdvISBUaGF0IG1ha2VzIHRoZW0gc3Ryb25nIGNhbmRpZGF0ZXMuIFRoZXkgYXJlICpub3QqIHRoZSB0eXBpY2FsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb24uCgpMZXQmIzM5O3Mgc2VlLCB3aGF0IGVsc2UgZG8gd2UgaGF2ZT8gT2theSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZWAuLi4gSSBiZWxpZXZlIHRoYXQgb25lIGlzICphbHNvKiBub24tc3RhdGljLCBhdCBsZWFzdCBpdCYjMzk7cyB1c2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciBpbiBgd2V4dC1jb21wYXQuY2AuIFNvIHRoYXQgaXMgYW5vdGhlciBvbmUgdG8gYWRkIHRvIHRoZSBsaXN0IG9mIGdvb2QgcG90ZW50aWFsIGZvY3VzIHN5bWJvbHMsIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZmc4MDIxMV93ZXh0X3Npd2dlbmllJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL3dleHQtc21lLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL3dleHQtc21lLmM9MjczPWludCBjZmc4MDIxMV9tZ2Rfd2V4dF9naXdhcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jLTI5Ny1cbm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jOjI5ODppbnQgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L3dpcmVsZXNzL3dleHQtc21lLmMtMjk5LVx0XHRcdCAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMzQ2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gdGhpcyBpcyBkZWZpbml0ZWx5IG5vdCBhIHN0YXRpYyBzaXR1YXRpb247IGl04oCZcyBnb2luZyB0byBpbnZvbHZlIHNvbWUgcmVsYXRpb25zaGlwcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGRpZmZlcmVudCBwYXJ0cyBpbnRlcmFjdC4gTXkgZm9jdXMgaXMgb24gdGhlc2Ugc3ltYm9sczogYGNmZzgwMjExX3ZhbGlkYXRlX2llc2AsIGB2YWxpZGF0ZV9iZWFjb25faGVhZGAsIGB2YWxpZGF0ZV9pZV9hdHRyYCwgYW5kIGBjZmc4MDIxMV93ZXh0X3Npd2dlbmllYC4gVGhvc2UgYXJlIHRoZSBjb3JlIGZ1bmN0aW9ucyBJJiMzOTttIGludGVyZXN0ZWQgaW4gcmlnaHQgbm93LgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgQ0ZHODAyMTFgLCBgQ0ZHODAyMTFfV0VYVGAsIGBNQUM4MDIxMWAsIGFuZCBgTUFDODAyMTFfSFdTSU1gLiBJJiMzOTttIHN0YXJ0aW5nIHdpdGggYE1BQzgwMjExX0hXU0lNYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQgaGFzIGFueSBhZGRpdGlvbmFsIGRlcGVuZGVuY2llcyBiZXlvbmQgd2hhdCYjMzk7cyBpbW1lZGlhdGVseSBvYnZpb3VzLgoKUmlnaHQsIGBNQUM4MDIxMV9IV1NJTWAgZGVwZW5kcyBvbiBgTUFDODAyMTFgLiBBbmQgYE1BQzgwMjExYCByZWxpZXMgb24gYENGRzgwMjExYCwgd2hpY2ggaW4gdHVybiBkZXBlbmRzIG9uIGBSRktJTEwgfHwgIVJGS0lMTGAuIFRoYXQgbWVhbnMgYFJGS0lMTGAgKm1pZ2h0KiBiZSByZWxldmFudC4gSSBjYW4gdXN1YWxseSBhc3N1bWUgYFJGS0lMTGAgaXMgZWl0aGVyIGVuYWJsZWQgb3IgZG9lc24mIzM5O3QgY2F1c2UgYSBwcm9ibGVtLiBVbmxlc3MgaXQmIzM5O3MgYSBoYXJkIGRlcGVuZGVuY3kgdGhhdCYjMzk7cyBkaXNhYmxlZCBieSBkZWZhdWx0LCBJIGRvbiYjMzk7dCB0aGluayBJIG5lZWQgdG8gZXhwbGljaXRseSBsaXN0IGl0LiBCdXQgbGV0JiMzOTtzIHZlcmlmeSB0aGF0IHF1aWNrbHksIGp1c3QgdG8gYmUgc3VyZS4gSXQmIzM5O3MgZ29vZCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJGS0lMTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9yZmtpbGwvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcmZraWxsL0tjb25maWctNC0jXG5uZXQvcmZraWxsL0tjb25maWc6NTptZW51Y29uZmlnIFJGS0lMTFxubmV0L3Jma2lsbC9LY29uZmlnLTYtXHR0cmlzdGF0ZSBcJiMzNDtSRiBzd2l0Y2ggc3Vic3lzdGVtIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvcmZraWxsL0tjb25maWctMTQtIyBMRUQgdHJpZ2dlciBzdXBwb3J0XG5uZXQvcmZraWxsL0tjb25maWc6MTU6Y29uZmlnIFJGS0lMTF9MRURTXG5uZXQvcmZraWxsL0tjb25maWctMTYtXHRib29sXG4tLVxubmV0L3Jma2lsbC9LY29uZmlnLTIwLVxubmV0L3Jma2lsbC9LY29uZmlnOjIxOmNvbmZpZyBSRktJTExfSU5QVVRcbm5ldC9yZmtpbGwvS2NvbmZpZy0yMi1cdGJvb2wgXCYjMzQ7UkYgc3dpdGNoIGlucHV0IHN1cHBvcnRcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L3Jma2lsbC9LY29uZmlnLTI2LVxubmV0L3Jma2lsbC9LY29uZmlnOjI3OmNvbmZpZyBSRktJTExfR1BJT1xubmV0L3Jma2lsbC9LY29uZmlnLTI4LVx0dHJpc3RhdGUgXCYjMzQ7R1BJTyBSRktJTEwgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMTYxCgkJCQkJCQlvdXRwdXQ6IDI0NAoJCQkJCQkJdGhvdWdodHM6IDEwNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBXaXJlbGVzcyBDb25maWd1cmF0aW9uIGFuZCBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgdGhhdCBgUkZLSUxMYCBpcyBhIHRyaXN0YXRlLCBhbmQgYENGRzgwMjExYCYjMzk7cyBjb25maWd1cmF0aW9uIGRlcGVuZHMgb24gaXQuIFNwZWNpZmljYWxseSwgdGhlIGNvbmZpZ3VyYXRpb24gbG9naWMgYWxsb3dzIGBDRkc4MDIxMWAgdG8gYmUgbW9kdWxhciAoYG1gKSByZWdhcmRsZXNzIG9mIGBSRktJTExgJiMzOTtzIHN0YXRlIChlaXRoZXIgYG1gLCBgeWAsIG9yIGBuYCkuIFNvLCBlbmFibGluZyBgUkZLSUxMYCBpc24mIzM5O3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGZvciBgQ0ZHODAyMTFgJiMzOTtzIGZ1bmN0aW9uYWxpdHksIHdoaWNoIGlzIGludGVyZXN0aW5nLgoKTm93LCBsZXQmIzM5O3MgY29uc2lkZXIgb3RoZXIgY29uZmlndXJhdGlvbnMuIEl0IGxvb2tzIGxpa2UgYFdFWFRfQ09SRWAgaXMgc2VsZWN0ZWQgYnkgYENGRzgwMjExX1dFWFRgIG9yIGBXSVJFTEVTU19FWFRgLiBUaGF0JiMzOTtzIGdvb2QsIG1lYW5pbmcgd2UgZG9uJiMzOTt0IG5lZWQgdG8gZXhwbGljaXRseSBlbmFibGUgYFdFWFRfQ09SRWAuCgpNb3Zpbmcgb24gdG8gdGhlIHBhdGNoIGl0c2VsZiwgaXQgbG9va3MgbGlrZSB0aGVyZSBpcyByZWZhY3RvcmluZyBoYXBwZW5pbmcgaGVyZS4gVGhlIHZhbGlkYXRpb24gbG9naWMgZm9yIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIGlzIGJlaW5nIGNlbnRyYWxpemVkIGludG8gYGNmZzgwMjExX3ZhbGlkYXRlX2llc2AuIFRoaXMgZnVuY3Rpb24gaXMgdGhlbiB1c2VkIGluIGB2YWxpZGF0ZV9iZWFjb25faGVhZGAsIGB2YWxpZGF0ZV9pZV9hdHRyYCwgYW5kIGFsc28gYWRkZWQgaW4gYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgLiBTbywgd2UmIzM5O3JlIGNvbnNvbGlkYXRpbmcgdGhlIElFIHZhbGlkYXRpb24gYWNyb3NzIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgd2lyZWxlc3Mgc3RhY2suIFRoZSBrZXkgdGFrZWF3YXkgaXMgdGhpcyBpcyBhIHJlZmFjdG9yaW5nIGVmZm9ydCB3aXRoIGZ1bmN0aW9uYWwgaW1wYWN0LgoKVGhpcyBtYWtlcyBzdXJlIHRoYXQgdGhlIHdpcmVsZXNzIGludGVyZmFjZXMgdmFsaWRhdGUgSUVzIGFuZCBkbyBub3QgY3Jhc2ggb24gbWFsZm9ybWVkIG9uZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhlIHBhdGNoIGFsc28gcHJldmVudHMgbWFsZm9ybWVkIElFcyBmcm9tIGJlaW5nIHByb2Nlc3NlZCBpbiBgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZWAuIFRoaXMgaXMgZ29vZCwgYW5kIGl0JiMzOTtzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBzZWUgaWYgYW55IHZ1bG5lcmFiaWxpdGllcyBhcmUgZXhwb3NlZC4KClNvLCB0aGUga2V5IGZ1bmN0aW9ucyB0aGF0IG5lZWQgZm9jdXMgZHVyaW5nIGZ1enppbmcgYXJlIGBjZmc4MDIxMV92YWxpZGF0ZV9pZXNgLCBgdmFsaWRhdGVfYmVhY29uX2hlYWRgLCBgdmFsaWRhdGVfaWVfYXR0cmAsIGFuZCBgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZWAuCgpUaGUgaW1wb3J0YW50IGNvbmZpZ3VyYXRpb25zIGZvciB0aGlzIHBhdGNoIGFyZSBgQ0ZHODAyMTFgLCBgQ0ZHODAyMTFfV0VYVGAsIGBNQUM4MDIxMWAsIGFuZCBgTUFDODAyMTFfSFdTSU1gLiBUaW1lIHRvIGNoZWNrIGl0IHdpdGggYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExX1dFWFQmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjZmc4MDIxMV92YWxpZGF0ZV9pZXMmIzM0OywKICAgICYjMzQ7dmFsaWRhdGVfYmVhY29uX2hlYWQmIzM0OywKICAgICYjMzQ7dmFsaWRhdGVfaWVfYXR0ciYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV93ZXh0X3Npd2dlbmllJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyBJbmZvcm1hdGlvbiBFbGVtZW50IChJRSkgdmFsaWRhdGlvbiBpbnRvIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYCBhbmQgYWRkcyB0aGlzIHZhbGlkYXRpb24gdG8gdGhlIFdFWFQgYFNJT0NTSVdHRU5JRWAgaW9jdGwgaGFuZGxlciAoYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgKSB0byBwcmV2ZW50IG1hbGZvcm1lZCBJRXMgZnJvbSBiZWluZyBwcm9jZXNzZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSSB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAobmw4MDIxMSkgYW5kIGlvY3RsICh3ZXh0KS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG5ldyB2YWxpZGF0aW9uIGhlbHBlciBhbmQgdGhlIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExX1dFWFQmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjZmc4MDIxMV92YWxpZGF0ZV9pZXMmIzM0OywKICAgICYjMzQ7dmFsaWRhdGVfYmVhY29uX2hlYWQmIzM0OywKICAgICYjMzQ7dmFsaWRhdGVfaWVfYXR0ciYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV93ZXh0X3Npd2dlbmllJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyBJbmZvcm1hdGlvbiBFbGVtZW50IChJRSkgdmFsaWRhdGlvbiBpbnRvIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYCBhbmQgYWRkcyB0aGlzIHZhbGlkYXRpb24gdG8gdGhlIFdFWFQgYFNJT0NTSVdHRU5JRWAgaW9jdGwgaGFuZGxlciAoYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgKSB0byBwcmV2ZW50IG1hbGZvcm1lZCBJRXMgZnJvbSBiZWluZyBwcm9jZXNzZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSSB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAobmw4MDIxMSkgYW5kIGlvY3RsICh3ZXh0KS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG5ldyB2YWxpZGF0aW9uIGhlbHBlciBhbmQgdGhlIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzoxNTo0MC40MjIwNDQ5MzJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTcyMTM0Mjg5NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIkNGRzgwMjExX1dFWFRcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNmZzgwMjExX3ZhbGlkYXRlX2llc1wiLFxuICAgIFwidmFsaWRhdGVfYmVhY29uX2hlYWRcIixcbiAgICBcInZhbGlkYXRlX2llX2F0dHJcIixcbiAgICBcImNmZzgwMjExX3dleHRfc2l3Z2VuaWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgSW5mb3JtYXRpb24gRWxlbWVudCAoSUUpIHZhbGlkYXRpb24gaW50byBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gYGNmZzgwMjExX3ZhbGlkYXRlX2llc2AgYW5kIGFkZHMgdGhpcyB2YWxpZGF0aW9uIHRvIHRoZSBXRVhUIGBTSU9DU0lXR0VOSUVgIGlvY3RsIGhhbmRsZXIgKGBjZmc4MDIxMV93ZXh0X3Npd2dlbmllYCkgdG8gcHJldmVudCBtYWxmb3JtZWQgSUVzIGZyb20gYmVpbmcgcHJvY2Vzc2VkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUEkgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKG5sODAyMTEpIGFuZCBpb2N0bCAod2V4dCkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBuZXcgdmFsaWRhdGlvbiBoZWxwZXIgYW5kIHRoZSBmdW5jdGlvbnMgdGhhdCBjYWxsIGl0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzoxNTo0MC40MjIwNDk5MzJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNTM1Njk1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGFiNmUwNTc4MGY3MjYwYmU1YTJmMzc5MDFmMzc1ZWM1MjRhNDYxOGFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMzAgMDc6MTU6MzkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL25sODAyMTEuYyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmNcXG5pbmRleCA1YWRjYjZiZDBmYzU2Li4yN2JiYWY5MTY1NzQyIDEwMDY0NFxcbi0tLSBhL25ldC93aXJlbGVzcy9ubDgwMjExLmNcXG4rKysgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXFxuQEAgLTIyOCw3ICsyMjgsNiBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2JlYWNvbl9oZWFkKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXFxuIHtcXG4gXFx0Y29uc3QgdTggKmRhdGEgPSBubGFfZGF0YShhdHRyKTtcXG4gXFx0dW5zaWduZWQgaW50IGxlbiA9IG5sYV9sZW4oYXR0cik7XFxuLVxcdGNvbnN0IHN0cnVjdCBlbGVtZW50ICplbGVtO1xcbiBcXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKWRhdGE7XFxuIFxcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfZXh0ICpleHQ7XFxuIFxcdHVuc2lnbmVkIGludCBmaXhlZGxlbiwgaGRybGVuO1xcbkBAIC0yNTksMTMgKzI1OCw4IEBAIHN0YXRpYyBpbnQgdmFsaWRhdGVfYmVhY29uX2hlYWQoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcXG4gXFx0ZGF0YSArPSBmaXhlZGxlbjtcXG4gXFx0bGVuIC09IGZpeGVkbGVuO1xcbiBcXG4tXFx0Zm9yX2VhY2hfZWxlbWVudChlbGVtLCBkYXRhLCBsZW4pIHtcXG4tXFx0XFx0Lyogbm90aGluZyAqL1xcbi1cXHR9XFxuLVxcbi1cXHRpZiAoZm9yX2VhY2hfZWxlbWVudF9jb21wbGV0ZWQoZWxlbSwgZGF0YSwgbGVuKSlcXG4rXFx0aWYgKGNmZzgwMjExX3ZhbGlkYXRlX2llcyhkYXRhLCBsZW4pKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4tXFxuIGVycjpcXG4gXFx0TkxfU0VUX0VSUl9NU0dfQVRUUihleHRhY2ssIGF0dHIsIFxcXCJtYWxmb3JtZWQgYmVhY29uIGhlYWRcXFwiKTtcXG4gXFx0cmV0dXJuIC1FSU5WQUw7XFxuQEAgLTI3NiwxMyArMjcwLDggQEAgc3RhdGljIGludCB2YWxpZGF0ZV9pZV9hdHRyKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXFxuIHtcXG4gXFx0Y29uc3QgdTggKmRhdGEgPSBubGFfZGF0YShhdHRyKTtcXG4gXFx0dW5zaWduZWQgaW50IGxlbiA9IG5sYV9sZW4oYXR0cik7XFxuLVxcdGNvbnN0IHN0cnVjdCBlbGVtZW50ICplbGVtO1xcbi1cXG4tXFx0Zm9yX2VhY2hfZWxlbWVudChlbGVtLCBkYXRhLCBsZW4pIHtcXG4tXFx0XFx0Lyogbm90aGluZyAqL1xcbi1cXHR9XFxuIFxcbi1cXHRpZiAoZm9yX2VhY2hfZWxlbWVudF9jb21wbGV0ZWQoZWxlbSwgZGF0YSwgbGVuKSlcXG4rXFx0aWYgKGNmZzgwMjExX3ZhbGlkYXRlX2llcyhkYXRhLCBsZW4pKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuIFxcdE5MX1NFVF9FUlJfTVNHX0FUVFIoZXh0YWNrLCBhdHRyLCBcXFwibWFsZm9ybWVkIGluZm9ybWF0aW9uIGVsZW1lbnRzXFxcIik7XFxuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9ubDgwMjExLmggYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5oXFxuaW5kZXggYmRiMDY1ZDE0MDU0OS4uODMyMmNlZDZiNTUxZCAxMDA2NDRcXG4tLS0gYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5oXFxuKysrIGIvbmV0L3dpcmVsZXNzL25sODAyMTEuaFxcbkBAIC0xMjksNCArMTI5LDYgQEAgaW50IG5sODAyMTFfcG1zcl9zdGFydChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKTtcXG4gdm9pZCBubDgwMjExX21sb19yZWNvbmZfYWRkX2RvbmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0XFx0IHN0cnVjdCBjZmc4MDIxMV9tbG9fcmVjb25mX2RvbmVfZGF0YSAqZGF0YSk7XFxuIFxcbitib29sIGNmZzgwMjExX3ZhbGlkYXRlX2llcyhjb25zdCB1OCAqZGF0YSwgaW50IGxlbik7XFxuK1xcbiAjZW5kaWYgLyogX19ORVRfV0lSRUxFU1NfTkw4MDIxMV9IICovXFxuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy91dGlsLmMgYi9uZXQvd2lyZWxlc3MvdXRpbC5jXFxuaW5kZXggMjQ1MjdiZjMyMWIyYS4uZGNhYTU5MDNiY2QyYyAxMDA2NDRcXG4tLS0gYS9uZXQvd2lyZWxlc3MvdXRpbC5jXFxuKysrIGIvbmV0L3dpcmVsZXNzL3V0aWwuY1xcbkBAIC0zMDgzLDMgKzMwODMsMTQgQEAgYm9vbCBjZmc4MDIxMV93ZGV2X2NoYW5uZWxfYWxsb3dlZChzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRyZXR1cm4gZmFsc2U7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTChjZmc4MDIxMV93ZGV2X2NoYW5uZWxfYWxsb3dlZCk7XFxuK1xcbitib29sIGNmZzgwMjExX3ZhbGlkYXRlX2llcyhjb25zdCB1OCAqZGF0YSwgaW50IGxlbilcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3QgZWxlbWVudCAqZWxlbTtcXG4rXFxuK1xcdGZvcl9lYWNoX2VsZW1lbnQoZWxlbSwgZGF0YSwgbGVuKSB7XFxuK1xcdFxcdC8qIG5vdGhpbmcgKi9cXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIGZvcl9lYWNoX2VsZW1lbnRfY29tcGxldGVkKGVsZW0sIGRhdGEsIGxlbik7XFxuK31cXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL3dleHQtc21lLmMgYi9uZXQvd2lyZWxlc3Mvd2V4dC1zbWUuY1xcbmluZGV4IDU3M2I2YjE1YTQ0NmUuLjE0NzZkOTMzYzdlNzIgMTAwNjQ0XFxuLS0tIGEvbmV0L3dpcmVsZXNzL3dleHQtc21lLmNcXG4rKysgYi9uZXQvd2lyZWxlc3Mvd2V4dC1zbWUuY1xcbkBAIC0zMTksNiArMzE5LDkgQEAgaW50IGNmZzgwMjExX3dleHRfc2l3Z2VuaWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbiBcXHRpZiAoaWVfbGVuKSB7XFxuK1xcdFxcdGlmICghY2ZnODAyMTFfdmFsaWRhdGVfaWVzKGV4dHJhLCBpZV9sZW4pKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuIFxcdFxcdGllID0ga21lbWR1cChleHRyYSwgaWVfbGVuLCBHRlBfS0VSTkVMKTtcXG4gXFx0XFx0aWYgKCFpZSlcXG4gXFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE1OjQwLjkyNzk3MDU3MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjExNjcwNzQ5NTg3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiQ0ZHODAyMTFfV0VYVFwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2ZnODAyMTFfdmFsaWRhdGVfaWVzXCIsXG4gICAgXCJ2YWxpZGF0ZV9iZWFjb25faGVhZFwiLFxuICAgIFwidmFsaWRhdGVfaWVfYXR0clwiLFxuICAgIFwiY2ZnODAyMTFfd2V4dF9zaXdnZW5pZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyBJbmZvcm1hdGlvbiBFbGVtZW50IChJRSkgdmFsaWRhdGlvbiBpbnRvIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYCBhbmQgYWRkcyB0aGlzIHZhbGlkYXRpb24gdG8gdGhlIFdFWFQgYFNJT0NTSVdHRU5JRWAgaW9jdGwgaGFuZGxlciAoYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgKSB0byBwcmV2ZW50IG1hbGZvcm1lZCBJRXMgZnJvbSBiZWluZyBwcm9jZXNzZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSSB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAobmw4MDIxMSkgYW5kIGlvY3RsICh3ZXh0KS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG5ldyB2YWxpZGF0aW9uIGhlbHBlciBhbmQgdGhlIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGFiNmUwNTc4MGY3MjYwYmU1YTJmMzc5MDFmMzc1ZWM1MjRhNDYxOGFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAzMCAwNzoxNTozOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG5pbmRleCA1YWRjYjZiZDBmYzU2Li4yN2JiYWY5MTY1NzQyIDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xuKysrIGIvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xuQEAgLTIyOCw3ICsyMjgsNiBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2JlYWNvbl9oZWFkKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXG4ge1xuIFx0Y29uc3QgdTggKmRhdGEgPSBubGFfZGF0YShhdHRyKTtcbiBcdHVuc2lnbmVkIGludCBsZW4gPSBubGFfbGVuKGF0dHIpO1xuLVx0Y29uc3Qgc3RydWN0IGVsZW1lbnQgKmVsZW07XG4gXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKWRhdGE7XG4gXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2V4dCAqZXh0O1xuIFx0dW5zaWduZWQgaW50IGZpeGVkbGVuLCBoZHJsZW47XG5AQCAtMjU5LDEzICsyNTgsOCBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2JlYWNvbl9oZWFkKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXG4gXHRkYXRhICs9IGZpeGVkbGVuO1xuIFx0bGVuIC09IGZpeGVkbGVuO1xuIFxuLVx0Zm9yX2VhY2hfZWxlbWVudChlbGVtLCBkYXRhLCBsZW4pIHtcbi1cdFx0Lyogbm90aGluZyAqL1xuLVx0fVxuLVxuLVx0aWYgKGZvcl9lYWNoX2VsZW1lbnRfY29tcGxldGVkKGVsZW0sIGRhdGEsIGxlbikpXG4rXHRpZiAoY2ZnODAyMTFfdmFsaWRhdGVfaWVzKGRhdGEsIGxlbikpXG4gXHRcdHJldHVybiAwO1xuLVxuIGVycjpcbiBcdE5MX1NFVF9FUlJfTVNHX0FUVFIoZXh0YWNrLCBhdHRyLCBcIm1hbGZvcm1lZCBiZWFjb24gaGVhZFwiKTtcbiBcdHJldHVybiAtRUlOVkFMO1xuQEAgLTI3NiwxMyArMjcwLDggQEAgc3RhdGljIGludCB2YWxpZGF0ZV9pZV9hdHRyKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXG4ge1xuIFx0Y29uc3QgdTggKmRhdGEgPSBubGFfZGF0YShhdHRyKTtcbiBcdHVuc2lnbmVkIGludCBsZW4gPSBubGFfbGVuKGF0dHIpO1xuLVx0Y29uc3Qgc3RydWN0IGVsZW1lbnQgKmVsZW07XG4tXG4tXHRmb3JfZWFjaF9lbGVtZW50KGVsZW0sIGRhdGEsIGxlbikge1xuLVx0XHQvKiBub3RoaW5nICovXG4tXHR9XG4gXG4tXHRpZiAoZm9yX2VhY2hfZWxlbWVudF9jb21wbGV0ZWQoZWxlbSwgZGF0YSwgbGVuKSlcbitcdGlmIChjZmc4MDIxMV92YWxpZGF0ZV9pZXMoZGF0YSwgbGVuKSlcbiBcdFx0cmV0dXJuIDA7XG4gXG4gXHROTF9TRVRfRVJSX01TR19BVFRSKGV4dGFjaywgYXR0ciwgXCJtYWxmb3JtZWQgaW5mb3JtYXRpb24gZWxlbWVudHNcIik7XG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL25sODAyMTEuaCBiL25ldC93aXJlbGVzcy9ubDgwMjExLmhcbmluZGV4IGJkYjA2NWQxNDA1NDkuLjgzMjJjZWQ2YjU1MWQgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5oXG4rKysgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5oXG5AQCAtMTI5LDQgKzEyOSw2IEBAIGludCBubDgwMjExX3Btc3Jfc3RhcnQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XG4gdm9pZCBubDgwMjExX21sb19yZWNvbmZfYWRkX2RvbmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCBzdHJ1Y3QgY2ZnODAyMTFfbWxvX3JlY29uZl9kb25lX2RhdGEgKmRhdGEpO1xuIFxuK2Jvb2wgY2ZnODAyMTFfdmFsaWRhdGVfaWVzKGNvbnN0IHU4ICpkYXRhLCBpbnQgbGVuKTtcbitcbiAjZW5kaWYgLyogX19ORVRfV0lSRUxFU1NfTkw4MDIxMV9IICovXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL3V0aWwuYyBiL25ldC93aXJlbGVzcy91dGlsLmNcbmluZGV4IDI0NTI3YmYzMjFiMmEuLmRjYWE1OTAzYmNkMmMgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3MvdXRpbC5jXG4rKysgYi9uZXQvd2lyZWxlc3MvdXRpbC5jXG5AQCAtMzA4MywzICszMDgzLDE0IEBAIGJvb2wgY2ZnODAyMTFfd2Rldl9jaGFubmVsX2FsbG93ZWQoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdHJldHVybiBmYWxzZTtcbiB9XG4gRVhQT1JUX1NZTUJPTChjZmc4MDIxMV93ZGV2X2NoYW5uZWxfYWxsb3dlZCk7XG4rXG4rYm9vbCBjZmc4MDIxMV92YWxpZGF0ZV9pZXMoY29uc3QgdTggKmRhdGEsIGludCBsZW4pXG4re1xuK1x0Y29uc3Qgc3RydWN0IGVsZW1lbnQgKmVsZW07XG4rXG4rXHRmb3JfZWFjaF9lbGVtZW50KGVsZW0sIGRhdGEsIGxlbikge1xuK1x0XHQvKiBub3RoaW5nICovXG4rXHR9XG4rXG4rXHRyZXR1cm4gZm9yX2VhY2hfZWxlbWVudF9jb21wbGV0ZWQoZWxlbSwgZGF0YSwgbGVuKTtcbit9XG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL3dleHQtc21lLmMgYi9uZXQvd2lyZWxlc3Mvd2V4dC1zbWUuY1xuaW5kZXggNTczYjZiMTVhNDQ2ZS4uMTQ3NmQ5MzNjN2U3MiAxMDA2NDRcbi0tLSBhL25ldC93aXJlbGVzcy93ZXh0LXNtZS5jXG4rKysgYi9uZXQvd2lyZWxlc3Mvd2V4dC1zbWUuY1xuQEAgLTMxOSw2ICszMTksOSBAQCBpbnQgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRyZXR1cm4gMDtcbiBcbiBcdGlmIChpZV9sZW4pIHtcbitcdFx0aWYgKCFjZmc4MDIxMV92YWxpZGF0ZV9pZXMoZXh0cmEsIGllX2xlbikpXG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4gXHRcdGllID0ga21lbWR1cChleHRyYSwgaWVfbGVuLCBHRlBfS0VSTkVMKTtcbiBcdFx0aWYgKCFpZSlcbiBcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE1OjQwLjkyNzk3MTcxMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MDA1MDg2MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgV2lGaSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBzZWVtcyBsaWtlIGl0J3MgdG91Y2hpbmcgc2V2ZXJhbCBjb3JlIGZpbGVzIHdpdGhpbiB0aGUgYG5ldC93aXJlbGVzc2Agc3Vic3lzdGVtLiBTcGVjaWZpY2FsbHksIGl0J3MgbW9kaWZ5aW5nIGBubDgwMjExLmNgLCBgbmw4MDIxMS5oYCwgYHV0aWwuY2AsIGFuZCBgd2V4dC1zbWUuY2AuIFRoYXQncyBhIGRlY2VudCBzcHJlYWQsIGluZGljYXRpbmcgYSBwb3RlbnRpYWxseSBzaWduaWZpY2FudCBjaGFuZ2UgaW4gaG93IHdlIGhhbmRsZSB3aXJlbGVzcyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gb3IgY2FwYWJpbGl0aWVzLlxuXG5UaGUga2V5IHRoaW5nIEknbSBzZWVpbmcgaXMgdGhpcyBuZXcgYGNmZzgwMjExX3ZhbGlkYXRlX2llc2AgZnVuY3Rpb24uIEl0cyBwcmVzZW5jZSBpbiBgdXRpbC5jYCBzdWdnZXN0cyBpdCdzIGEgdXRpbGl0eSBmdW5jdGlvbiBkZXNpZ25lZCB0byBoYW5kbGUgSW5mb3JtYXRpb24gRWxlbWVudCAoSUUpIHZhbGlkYXRpb24sIHdoaWNoIGlzIGNvbW1vbiBpbiA4MDIuMTEgbWFuYWdlbWVudCBmcmFtZXMuIFRoZSBmYWN0IHRoYXQgaXQncyBiZWluZyAqdXNlZCogd2l0aGluIGB2YWxpZGF0ZV9iZWFjb25faGVhZGAgYW5kIGB2YWxpZGF0ZV9pZV9hdHRyYCBpbiBgbmw4MDIxMS5jYCwgYW5kIGFsc28gaW4gYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgIHdpdGhpbiBgd2V4dC1zbWUuY2AgaXMgaW1wb3J0YW50IHRvby4gVGhhdCB0ZWxscyBtZSB0aGlzIHZhbGlkYXRpb24gaXMgZ29pbmcgdG8gdG91Y2ggYm90aCB0aGUgbmw4MDIxMSBuZXRsaW5rIGludGVyZmFjZSBhbmQgdGhlIHdleHQtYmFzZWQgaW50ZXJmYWNlcy4gVmFsaWRhdGlvbiBvZiBJRXMgc3VnZ2VzdHMgY2hhbmdlcyB0byB3aGF0IHdlIHZhbGlkYXRlIGluIElFcywgd2hpY2ggY2FuIGFmZmVjdCB0aGluZ3MgbGlrZSBiZWFjb24gcGFyc2luZywgYW5kIHZhcmlvdXMgY29uZmlndXJhdGlvbiBvcGVyYXRpb25zLlxuXG5UbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUsIEkgbmVlZCB0byBjb25maXJtIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGVuYWJsZWQgZm9yIGBuZXQvd2lyZWxlc3MvYC4gSSdtIGd1ZXNzaW5nIGBDRkc4MDIxMWAgYW5kIGBDRkc4MDIxMV9XRVhUYCBhcmUgdGhlIGtleSBjb250ZW5kZXJzIGhlcmUsIHNvIEknbGwgbmVlZCB0byBjaGVjayB0aGUgYG5ldC93aXJlbGVzcy9LY29uZmlnYCBmaWxlIHRvIGNvbmZpcm0gaG93IHRoaXMgbmV3IGZ1bmN0aW9uYWxpdHkgaXMgY29udHJvbGxlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hldGhlciB0aGlzIGlzIGEgY29yZSBmZWF0dXJlIG9yIHNvbWV0aGluZyB0aGF0IGNhbiBiZSBkaXNhYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA3OSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE1OjQ2LjMyODQ4MjExNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzAyODg0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQ0ZHODAyMTFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3dpcmVsZXNzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL0tjb25maWc9MTQ9Y29uZmlnIFdFWFRfUFJJVlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc6Y29uZmlnIENGRzgwMjExXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcImNmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0zOD1jb25maWcgTkw4MDIxMV9URVNUTU9ERVxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctNTEtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6NTI6Y29uZmlnIENGRzgwMjExX0RFVkVMT1BFUl9XQVJOSU5HU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTUzLVxcdGJvb2wgXFxcImVuYWJsZSBkZXZlbG9wZXIgd2FybmluZ3NcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02Ny1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo2ODpjb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxubmV0L3dpcmVsZXNzL0tjb25maWctNjktXFx0Ym9vbCBcXFwiY2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctODgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6ODk6Y29uZmlnIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXFxubmV0L3dpcmVsZXNzL0tjb25maWctOTAtXFx0Ym9vbCBcXFwicmVxdWlyZSByZWdkYiBzaWduYXR1cmVcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctOTgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6OTk6Y29uZmlnIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMC1cXHRib29sIFxcXCJhbGxvdyByZWdkYiBrZXlzIHNoaXBwZWQgd2l0aCB0aGUga2VybmVsXFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTE6Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMi1cXHRzdHJpbmcgXFxcImFkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjEtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTIyOmNvbmZpZyBDRkc4MDIxMV9SRUdfQ0VMTFVMQVJfSElOVFNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjMtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgcmVndWxhdG9yeSBzdXBwb3J0IGZvciBjZWxsdWxhciBiYXNlIHN0YXRpb24gaGludHNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzQtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTM1OmNvbmZpZyBDRkc4MDIxMV9SRUdfUkVMQVhfTk9fSVJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzYtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgc3VwcG9ydCBmb3IgTk9fSVIgcmVsYXhhdGlvblxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE1OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNTk6Y29uZmlnIENGRzgwMjExX0RFRkFVTFRfUFNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjAtXFx0Ym9vbCBcXFwiZW5hYmxlIHBvd2Vyc2F2ZSBieSBkZWZhdWx0XFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTY4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE2OTpjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cXHRib29sIFxcXCJjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc3OmNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzgtXFx0Ym9vbCBcXFwic3VwcG9ydCBDUkRBXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4Ni1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxODc6Y29uZmlnIENGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODgtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBjb21wYXRpYmlsaXR5XFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTkzLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5NDpjb25maWcgQ0ZHODAyMTFfS1VOSVRfVEVTVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5NS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIGNmZzgwMjExXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE1OjQ2LjM3NTUxMzQ5NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNjM3OTUxNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYSBgY2ZnODAyMTFgIFdFWFQgTW9kaWZpY2F0aW9uKipcblxuQWxyaWdodCwgc28gdGhlIHBhdGNoIGlzIHR3ZWFraW5nIGBjZmc4MDIxMV93ZXh0X3Npd2dlbmllYCwgYW5kIGl0IGxvb2tzIGxpa2UgdGhhdCBmdW5jdGlvbiBsaXZlcyBpbiBgd2V4dC1zbWUuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIGxldCdzIHNlZSBpZiB0aGlzIGNvZGUgZXZlbiBnZXRzIGNvbXBpbGVkIGluIG15IGN1cnJlbnQgY29uZmlndXJhdGlvbi5cIiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBDRkc4MDIxMV9XRVhUYCBpcyBhY3R1YWxseSBkZWZpbmVkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2VzcywgcmlnaHQ/IElmIHRoYXQncyBub3Qgc2V0LCB0aGVuIHRoZSBjaGFuZ2VzIHRvIGB3ZXh0LXNtZS5jYCBhcmUgZWZmZWN0aXZlbHkgZGVhZCBjb2RlLCBhbmQgdGhpcyBwYXRjaCBpc24ndCByZWxldmFudCB0byBteSBzcGVjaWZpYyBzZXR1cC4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBidWlsZCBzeXN0ZW0gdG8gY29uZmlybSB3aGV0aGVyIGBDRkc4MDIxMV9XRVhUYCBpcyBlbmFibGVkLiBJZiBpdCBpc24ndCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IGFuZCB3aGV0aGVyIHRoaXMgcGF0Y2ggcmVxdWlyZXMgc29tZSByZS1ldmFsdWF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjE3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6MTU6NTEuNjM5MzEwMjI5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNTA0MTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndleHQtc21lXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3MvTWFrZWZpbGU9MTM9Y2ZnODAyMTEtJChDT05GSUdfQ0ZHODAyMTFfREVCVUdGUykgKz0gZGVidWdmcy5vXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlOjE0OmNmZzgwMjExLSQoQ09ORklHX0NGRzgwMjExX1dFWFQpICs9IHdleHQtY29tcGF0Lm8gd2V4dC1zbWUub1xcbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0xNS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6MTU6NTEuNjgxODE3NjhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDg5NTc3NjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIHRoZXkgd2VyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgYnVpbGQgc3lzdGVtIGFuZCBob3cgdGhlc2UgbW9kdWxlcyByZWxhdGUgdG8gZWFjaCBvdGhlci4gVGhlIGluY2x1c2lvbiBvZiBgQ0ZHODAyMTFfV0VYVGAgaW4gdGhpcyBjb250ZXh0IG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IGl0J3MgZGVmaW5pdGVseSByZXF1aXJlZCBieSBgd2V4dC1zbWUuY2AuIEkndmUgZ290IHRvIG1ha2UgYSBtZW50YWwgbm90ZSBvZiB0aGF0IHJlbGF0aW9uc2hpcC5cblxuVGhlbiBJIG1vdmUgb24gdG8gdGhpbmtpbmcgYWJvdXQgYG5sODAyMTEuY2AgYW5kIGB1dGlsLmNgLiBJdCdzIHByZXR0eSBjbGVhciB0aGV5J3JlIGJvdGggZ2V0dGluZyBjb21waWxlZCB1bmRlciB0aGUgYENGRzgwMjExYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiBgQ0ZHODAyMTFgIGl0c2VsZiB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIHN1cnByaXNlcyBvciBoaWRkZW4gaW1wbGljYXRpb25zIGRvd24gdGhlIGxpbmUuIEkgYWx3YXlzIG5lZWQgdG8gYmUgYXdhcmUgb2YgdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHRoZSBjb25maWcgb3B0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAyMywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE1OjU1LjE3MTM5Nzk5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMTQ5MjkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3dpcmVsZXNzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL0tjb25maWc9NT1jb25maWcgV0VYVF9DT1JFXFxubmV0L3dpcmVsZXNzL0tjb25maWctNi1cXHRkZWZfYm9vbCB5XFxubmV0L3dpcmVsZXNzL0tjb25maWc6NzpcXHRkZXBlbmRzIG9uIENGRzgwMjExX1dFWFQgfHwgV0lSRUxFU1NfRVhUXFxubmV0L3dpcmVsZXNzL0tjb25maWctOC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz05PWNvbmZpZyBXRVhUX1BST0NcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMC1cXHRkZWZfYm9vbCB5XFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTE6XFx0ZGVwZW5kcyBvbiBQUk9DX0ZTXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTI6XFx0ZGVwZW5kcyBvbiBXRVhUX0NPUkVcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMy1cXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnPTE3PWNvbmZpZyBDRkc4MDIxMVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXFxcIlxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5OlxcdGRlcGVuZHMgb24gUkZLSUxMIHx8ICFSRktJTExcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0yMC1cXHRzZWxlY3QgRldfTE9BREVSXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz02OD1jb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxubmV0L3dpcmVsZXNzL0tjb25maWctNjktXFx0Ym9vbCBcXFwiY2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXFxcIlxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjcwOlxcdGRlcGVuZHMgb24gRVhQRVJUXFxubmV0L3dpcmVsZXNzL0tjb25maWctNzEtXFx0ZGVmYXVsdCBuXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz05OT1jb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDEtXFx0ZGVmYXVsdCB5XFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTAyOlxcdGRlcGVuZHMgb24gQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDMtXFx0aGVscFxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWc9MTExPWNvbmZpZyBDRkc4MDIxMV9FWFRSQV9SRUdEQl9LRVlESVJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTItXFx0c3RyaW5nIFxcXCJhZGRpdGlvbmFsIHJlZ2RiIGtleSBkaXJlY3RvcnlcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnOjExMzpcXHRkZXBlbmRzIG9uIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTE0LVxcdGhlbHBcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnPTEyMj1jb25maWcgQ0ZHODAyMTFfUkVHX0NFTExVTEFSX0hJTlRTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTIzLVxcdGJvb2wgXFxcImNmZzgwMjExIHJlZ3VsYXRvcnkgc3VwcG9ydCBmb3IgY2VsbHVsYXIgYmFzZSBzdGF0aW9uIGhpbnRzXFxcIlxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEyNDpcXHRkZXBlbmRzIG9uIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyNS1cXHRoZWxwXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0xMzU9Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNi1cXHRib29sIFxcXCJjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXFxcIlxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEzNzpcXHRkZXBlbmRzIG9uIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzOC1cXHRoZWxwXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0xNjk9Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzAtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgRGVidWdGUyBlbnRyaWVzXFxcIlxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3MTpcXHRkZXBlbmRzIG9uIERFQlVHX0ZTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTcyLVxcdGhlbHBcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnPTE5ND1jb25maWcgQ0ZHODAyMTFfS1VOSVRfVEVTVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5NS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIGNmZzgwMjExXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk2OlxcdGRlcGVuZHMgb24gS1VOSVRcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTc6XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5OC1cXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzoxNTo1NS4yMTI1NDk4NDFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDE0NjM1ODM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIENGRzgwMjExJ3MgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSdtIHNlZWluZywgYENGRzgwMjExYCBpcyBwcmV0dHkgY2xldmVyIGluIGhvdyBpdCBoYW5kbGVzIGl0cyBkZXBlbmRlbmNpZXMsIGVzcGVjaWFsbHkgd2hlbiB0aGlua2luZyBhYm91dCBmdXp6aW5nLiBUaGUga2V5IHRha2Vhd2F5IGlzIHRoZSBjb25kaXRpb25hbCBkZXBlbmRlbmN5IG9uIGBSRktJTExgLiBJdCdzIGVpdGhlciBkZXBlbmRlbnQgb24gYFJGS0lMTGAgYmVpbmcgZW5hYmxlZCAqb3IqIGlmIGBSRktJTExgIGlzIGRpc2FibGVkIC0gdGhlIGltcGxpY2F0aW9uIGJlaW5nIHRoYXQgaXQgY2FuIGZ1bmN0aW9uIGluIGVpdGhlciBzY2VuYXJpbywgbWFraW5nIGl0IHZlcnNhdGlsZS5cblxuTm93LCBmb3IgYW55IHJlYWwgdXNlIGluIGZ1enppbmcsIGFuZCBJIG1lYW4gKnJlYWwqIGZ1enppbmcgdGhhdCBjYW4gYWN0dWFsbHkgZ2VuZXJhdGUgc29tZSBtZWFuaW5nZnVsIGlucHV0LCBgQ0ZHODAyMTFgIGhpbmdlcyBvbiBlaXRoZXIgYE1BQzgwMjExYCBvciBgTUFDODAyMTFfSFdTSU1gLiBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IGBDRkc4MDIxMWAgaXMgYSBjb25maWd1cmF0aW9uIGxheWVyLCBhbmQgaXQgbmVlZHMgYSBNQUMgbGF5ZXIgdW5kZXJuZWF0aCB0byBkbyBhbnl0aGluZyBpbnRlcmVzdGluZy4gU2luY2UgbXkgZ29hbCBpcyBmdXp6aW5nLCBJJ20gZ29pbmcgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGBNQUM4MDIxMWAgYW5kIGNvbnNpZGVyIGl0cyBhcmNoaXRlY3R1cmUgaW4gcmVsYXRpb24gdG8gaG93IGl0IGFmZmVjdHMgYENGRzgwMjExYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjI1NiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE1OjU5LjIyNzE4ODYzN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE1MTcwNTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXFxubmV0L21hYzgwMjExL0tjb25maWctMjItXFx0Ym9vbFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNDAtXFxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXFx0c3RyaW5nXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFxcXCJTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNzgtXFxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cXHRib29sIFxcXCJFbmFibGUgTEVEIHRyaWdnZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctODctXFxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cXHRib29sIFxcXCJFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXFxubmV0L21hYzgwMjExL0tjb25maWctOTgtXFx0Ym9vbCBcXFwiVHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXFx0Ym9vbCBcXFwiU2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXFxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVxcdGJvb2wgXFxcIkRvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTMzLVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTU1LVxcdGJvb2wgXFxcIlZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cXHRib29sIFxcXCJWZXJib3NlIEhUIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cXHRib29sIFxcXCJWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTg3LVxcdGJvb2wgXFxcIlZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cXHRib29sIFxcXCJWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjIzLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjM2LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjgyLVxcdGJvb2wgXFxcIlZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXFxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cXHRib29sIFxcXCJFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cXHRpbnQgXFxcIlN0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcXFwiIGlmIE1BQzgwMjExX0RFQlVHX01FTlVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6MTU6NTkuMjY4NzA3OTI4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MzcxOTY0MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGl2aW5nIGludG8gdGhlIE1BQzgwMjExIEVjb3N5c3RlbSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gdGhlIG5ldHdvcmtpbmcgc3RhY2sgaGVyZSwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBJRUVFIDgwMi4xMSBpbXBsZW1lbnRhdGlvbi4gSSdtIHJlY2FsbGluZyB0aGF0IGBNQUM4MDIxMWAgaXMgdGhlIGNvcmUsIGdlbmVyaWMgZnJhbWV3b3JrIGZvciA4MDIuMTEgZnVuY3Rpb25hbGl0eS4gTm93LCBJIG5lZWQgdG8gY2hlY2sgb3V0IGEgc3BlY2lmaWMgY29tcG9uZW50LCBhbmQgdGhhdCB3b3VsZCBiZSBgTUFDODAyMTFfSFdTSU1gLiBJIGJlbGlldmUgdGhpcyBpcyB0aGF0IHNvZnR3YXJlIHNpbXVsYXRvciBmb3IgZW11bGF0aW5nIHRoZSBiZWhhdmlvciBvZiA4MDIuMTEgcmFkaW9zLCBzbyBJJ2xsIHNlZSB3aGF0IGl0J3MgYWxsIGFib3V0LiBMZXQncyBkZWx2ZSBpbiBhbmQgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzgyLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6MTY6MDIuOTA1OTA2MjI2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjkwMDQ1MSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExX0hXU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hYzgwMjExX2h3c2ltL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE2OjAyLjk0ODgxMTA3NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDg4NjU2NjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgV2lyZWxlc3MgRHJpdmVyIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaW5kIHRoZSByZWxldmFudCBjb2RlLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBgTUFDODAyMTFfSFdTSU1gLiBJIGtub3cgaXQncyBhIHdpcmVsZXNzIGRyaXZlciBzaW11bGF0aW9uLCB3aGljaCBtZWFucyBpdCBsaWtlbHkgcmVzaWRlcyB3aXRoaW4gdGhlIGJyb2FkZXIgd2lyZWxlc3MgZHJpdmVyIGZyYW1ld29yay4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgdHlwaWNhbCBsb2NhdGlvbnMgZm9yIHdpcmVsZXNzIGRyaXZlcnMuIEknZCBzdGFydCBieSBsb29raW5nIGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFjODAyMTFfaHdzaW0vYCBkaXJlY3RvcnkuIFRoaXMgc2VlbXMgbGlrZSBhIGxpa2VseSBjYW5kaWRhdGUgZ2l2ZW4gdGhlIHNwZWNpZmljIG5hbWluZyBjb252ZW50aW9uIHRoYXQgaW5jbHVkZXMgYGh3c2ltYC4gSG93ZXZlciwgSSdtIGFsc28gZ29pbmcgdG8gY2FzdCBhIHdpZGVyIG5ldCBhbmQgY29uc2lkZXIgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2AgbW9yZSBnZW5lcmFsbHkuIEl0J3MgcG9zc2libGUgdGhlIHNpbXVsYXRpb24gY29kZSBpcyBvcmdhbml6ZWQgZGlmZmVyZW50bHkgb3IgcGVyaGFwcyBhIG1vcmUgZ2VuZXJhbCBkcml2ZXIgY29udGFpbnMgdGhlIHNpbXVsYXRpb24gZnVuY3Rpb25hbGl0eS4gVGhlIGJyb2FkZXIgcGF0aCB3aWxsIGhlbHAgZW5zdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYSBwb3RlbnRpYWxseSBtb3JlIGVuY29tcGFzc2luZyBpbXBsZW1lbnRhdGlvbi4gRXNzZW50aWFsbHksIEkgd2FudCB0byBiZSB0aG9yb3VnaCBpbiBteSBpbml0aWFsIHNlYXJjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTA1NSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE2OjA4LjAzNzQ2OTY1OFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njk3OTM3NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExX0hXU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE2OjA4LjEwNzI2NzU0M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDM3ODI2MDg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgcHJvdmlkZWQgdGV4dDpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBLY29uZmlnIEZpbGUgZm9yIFZpcnR1YWwgV2lyZWxlc3MgRHJpdmVycyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGUga2VybmVsJ3Mgd2lyZWxlc3MgbmV0d29ya2luZyBzZXR1cC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB2aXJ0dWFsIGRyaXZlcnMuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkga25vdyB0aGF0IGBLY29uZmlnYCBmaWxlcyBhcmUgdGhlIGJhY2tib25lIG9mIHRoZSBrZXJuZWwncyBidWlsZCBzeXN0ZW0sIGRlZmluaW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhlcmVmb3JlLCB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBpcyB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZ2AgZmlsZS4gVGhpcyBpcyB3aGVyZSBJJ2QgZXhwZWN0IHRvIGZpbmQgdGhlIHNldHRpbmdzIHRoYXQgZ292ZXJuIHRoZSBjb21waWxhdGlvbiBhbmQgaW5jbHVzaW9uIG9mIHRoZXNlIHZpcnR1YWwgd2lyZWxlc3MgY29tcG9uZW50cy4gSXQgc2hvdWxkIGNvbnRhaW4gdGhpbmdzIGxpa2U6XG5cbiogICBUaGUgbWFpbiBcIlZpcnR1YWwgV2lyZWxlc3NcIiBvcHRpb24gaXRzZWxmLlxuKiAgIFNwZWNpZmljIG9wdGlvbnMgZm9yIHZhcmlvdXMgdmlydHVhbCBkcml2ZXIgZmVhdHVyZXMuXG4qICAgRGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zIG9yIGhhcmR3YXJlLlxuKiAgIEhlbHAgdGV4dCB0byBndWlkZSB1c2VycyBpbiBtYWtpbmcgdGhlIHJpZ2h0IGNob2ljZXMuXG5cbkJ5IGV4YW1pbmluZyB0aGlzIEtjb25maWcsIEkgY2FuIHF1aWNrbHkgZ2V0IGEgaGFuZGxlIG9uIHdoYXQncyBhdmFpbGFibGUsIGhvdyBpdCdzIGVuYWJsZWQsIGFuZCBhbnkgcHJlcmVxdWlzaXRlcy4gSXQgc2hvdWxkIGJlIGEgcHJldHR5IGRpcmVjdCByb3V0ZSB0byB1bmRlcnN0YW5kIGhvdyB0byBlbmFibGUgYW5kIGNvbmZpZ3VyZSB0aGVzZSB2aXJ0dWFsIGRyaXZlcnMuIFRpbWUgdG8gdGFrZSBhIGxvb2shXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0MDksIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzoxNjoxMi41NDUwOTU3NzdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNTk5NTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZz0xPWNvbmZpZyBNQUM4MDIxMV9IV1NJTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZy0yLVxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxMVxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MzpcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnPTE0PWNvbmZpZyBWSVJUX1dJRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMTUtXFx0dHJpc3RhdGUgXFxcIldpZmkgd3JhcHBlciBmb3IgZXRoZXJuZXQgZHJpdmVyc1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTY6XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZy0xNy1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE2OjEyLjU4NjY5OTcxOFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjU3MjEwNTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlcGVuZGVuY3kgQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgTUFDODAyMTFfSFdTSU1gIGFuZCBpdCdzIHByZXR0eSBjbGVhciwgYXQgYSBnbGFuY2UsIHRoYXQgaXQncyBidWlsdCBvbiB0b3Agb2YgYE1BQzgwMjExYC4gVGhhdCBtYWtlcyBzZW5zZTsgaGFyZHdhcmUgc2ltdWxhdGlvbiB1c3VhbGx5IGludm9sdmVzIGludGVyYWN0aW5nIHdpdGggYSBNQUMgbGF5ZXIuIE5vdywgYE1BQzgwMjExYCBpdHNlbGYuLi4gYWgsIGl0IGRlcGVuZHMgb24gYENGRzgwMjExYC4gVGhhdCdzIG5vIHN1cnByaXNlIGVpdGhlciwgZ2l2ZW4gdGhhdCBgQ0ZHODAyMTFgIGhhbmRsZXMgdGhlIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlIGZvciB3aXJlbGVzcyBkZXZpY2VzLiBOb3cgdGhhdCBJIGtub3cgdGhlc2UgcmVsYXRpb25zaGlwcywgbGV0IG1lIGp1c3QgZGl2ZSBkZWVwZXIgaW50byB0aGUgYE1BQzgwMjExYCBkZXBlbmRlbmNpZXMgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciBzdXJwcmlzZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgd2hvbGUgc3RhY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4OTgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzoxNjoxNi4yNDM5MTI0NTJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMDE4NjMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL0tjb25maWc9Mj1jb25maWcgTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVxcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0OlxcdGRlcGVuZHMgb24gQ0ZHODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01LVxcdHNlbGVjdCBDUllQVE9cXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE2PWNvbW1lbnQgXFxcIkNGRzgwMjExIG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIE1BQzgwMjExXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3OlxcdGRlcGVuZHMgb24gQ0ZHODAyMTE9blxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4LVxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXFxubmV0L21hYzgwMjExL0tjb25maWctMzItXFx0cHJvbXB0IFxcXCJEZWZhdWx0IHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6MzM6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9IQVNfUkNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zNC1cXHRkZWZhdWx0IE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQxPWNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctNDItXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6NDM6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ0LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXFxcIlNvbWUgd2lyZWxlc3MgZHJpdmVycyByZXF1aXJlIGEgcmF0ZSBjb250cm9sIGFsZ29yaXRobVxcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo1ODpcXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IE1BQzgwMjExX0hBU19SQz1uXFxubmV0L21hYzgwMjExL0tjb25maWctNTktXFxubmV0L21hYzgwMjExL0tjb25maWc9NjA9Y29uZmlnIE1BQzgwMjExX0tVTklUX1RFU1RcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIG1hYzgwMjExXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxubmV0L21hYzgwMjExL0tjb25maWc6NjI6XFx0ZGVwZW5kcyBvbiBLVU5JVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYzOlxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02NC1cXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9NzA9Y29uZmlnIE1BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03MS1cXHRib29sIFxcXCJFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6NzI6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTczLVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTc5PWNvbmZpZyBNQUM4MDIxMV9MRURTXFxubmV0L21hYzgwMjExL0tjb25maWctODAtXFx0Ym9vbCBcXFwiRW5hYmxlIExFRCB0cmlnZ2Vyc1xcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4MTpcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxubmV0L21hYzgwMjExL0tjb25maWc6ODI6XFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgzLVxcdHNlbGVjdCBMRURTX1RSSUdHRVJTXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz04OD1jb25maWcgTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkV4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1xcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5MDpcXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IENGRzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05MS1cXHRoZWxwXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz05Nz1jb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXFxubmV0L21hYzgwMjExL0tjb25maWctOTgtXFx0Ym9vbCBcXFwiVHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk5OlxcdGRlcGVuZHMgb24gTUFDODAyMTEgXFx1MDAyNlxcdTAwMjYgVFJBQ0lOR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwMC1cXHRoZWxwXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xMTA9bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWctMTExLVxcdGJvb2wgXFxcIlNlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6MTEyOlxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTMtXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MTE2PWNvbmZpZyBNQUM4MDIxMV9OT0lOTElORVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cXHRib29sIFxcXCJEbyBub3QgaW5saW5lIFRYL1JYIGhhbmRsZXJzXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExODpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTktXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MTMyPWNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTMzLVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFxcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzQ6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWctMTM1LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE0Mz1jb25maWcgTUFDODAyMTFfTUxNRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cXHRib29sIFxcXCJWZXJib3NlIG1hbmFnZWQgTUxNRSBvdXRwdXRcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6MTQ1OlxcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Ni1cXHRoZWxwXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xNTQ9Y29uZmlnIE1BQzgwMjExX1NUQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cXHRib29sIFxcXCJWZXJib3NlIHN0YXRpb24gZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NjpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTctXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MTYzPWNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cXHRib29sIFxcXCJWZXJib3NlIEhUIGRlYnVnZ2luZ1xcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjU6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWctMTY2LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE3NT1jb25maWcgTUFDODAyMTFfT0NCX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTc2LVxcdGJvb2wgXFxcIlZlcmJvc2UgT0NCIGRlYnVnZ2luZ1xcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzc6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWctMTc4LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE4Nj1jb25maWcgTUFDODAyMTFfSUJTU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cXHRib29sIFxcXCJWZXJib3NlIElCU1MgZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE4ODpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODktXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MTk3PWNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cXHRib29sIFxcXCJWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1xcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTk6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWctMjAwLVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTIwOT1jb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjEwLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwZWVyIGxpbmsgZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxMTpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTI6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctMjEzLVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTIyMj1jb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyNDpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjU6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctMjI2LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTIzNT1jb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6MjM3OlxcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzODpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzktXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MjQ4PWNvbmZpZyBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHN5bmNocm9uaXphdGlvbiBkZWJ1Z2dpbmdcXFwiXFxubmV0L21hYzgwMjExL0tjb25maWc6MjUwOlxcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1MTpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTItXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MjU5PWNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI2MTpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNjI6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctMjYzLVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTI3MD1jb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3MS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1xcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzI6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWc6MjczOlxcdGRlcGVuZHMgb24gTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3NC1cXHRoZWxwXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0yODE9Y29uZmlnIE1BQzgwMjExX1RETFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXFx0Ym9vbCBcXFwiVmVyYm9zZSBURExTIGRlYnVnZ2luZ1xcXCJcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyODM6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWctMjg0LVxcdGhlbHBcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTI5Mz1jb25maWcgTUFDODAyMTFfREVCVUdfQ09VTlRFUlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXFx0Ym9vbCBcXFwiRXh0cmEgc3RhdGlzdGljcyBmb3IgVFgvUlggZGVidWdnaW5nXFxcIlxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5NTpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTY6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL0tjb25maWctMjk3LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6MTY6MTYuMjg1OTM0MzIzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1MjE0NjIyMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCdzIEltcGFjdCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IHNlZSBpdCdzIHRpZWQgdG8gYE1BQzgwMjExX0hXU0lNYCwgd2hpY2gsIG9mIGNvdXJzZSwgcmVsaWVzIG9uIGBNQUM4MDIxMWAsIGFuZCB0aHVzLCBgQ0ZHODAyMTFgLiBUaGF0J3MgdGhlIGNvcmUuIFRoZSBwYXRjaCBmb2N1c2VzIG9uIG1vZGlmeWluZyBgbmw4MDIxMS5jYCBhbmQgYHdleHQtc21lLmNgLCBib3RoIGNydWNpYWwgY29tcG9uZW50cyBvZiBgQ0ZHODAyMTFgLCBlc3BlY2lhbGx5IHNpbmNlIGB3ZXh0LXNtZS5jYCBhbHNvIGhhcyBhIGRlcGVuZGVuY3kgb24gYENGRzgwMjExX1dFWFRgLlxuXG5UaGUgcmVhbCBtZWF0IG9mIHRoZSBjaGFuZ2VzIGludm9sdmVzIGFkZGluZyBhIG5ldyBmdW5jdGlvbiwgYGNmZzgwMjExX3ZhbGlkYXRlX2llc2AuIEl0IGxvb2tzIGxpa2UgdGhpcyBuZXcgdmFsaWRhdGlvbiBmdW5jdGlvbiBpcyBiZWluZyBpbnRlZ3JhdGVkIGludG8gc2V2ZXJhbCBrZXkgYXJlYXM6IGB2YWxpZGF0ZV9iZWFjb25faGVhZGAgYW5kIGB2YWxpZGF0ZV9pZV9hdHRyYCB3aXRoaW4gYG5sODAyMTEuY2AsIGFuZCBgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZWAgd2l0aGluIGB3ZXh0LXNtZS5jYC4gVGhlc2UgYXJlIGltcG9ydGFudCBiZWNhdXNlIHRoZXkgYXJlIHRoZSB1c2VyLXNwYWNlIGludGVyZmFjZXM6IHRoZSBuZXRsaW5rIChubDgwMjExKSBwYXRoIGFuZCB0aGUgaW9jdGwgKHdleHQpIHBhdGgsIHJlc3BlY3RpdmVseS5cblxuUmlnaHQgbm93LCBteSBmb2N1cyBpcyBvbiBgdmFsaWRhdGVfYmVhY29uX2hlYWRgIGFuZCBgdmFsaWRhdGVfaWVfYXR0cmAgd2l0aGluIGBubDgwMjExLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGUgdmFsaWRhdGlvbiBmdW5jdGlvbiBpcyBiZWluZyB1c2VkIGluIHRob3NlIGNvbnRleHRzLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMjI2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE2OjIxLjgwNzM5ODg0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjIxMjI5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2YWxpZGF0ZV9iZWFjb25faGVhZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MjIxPWNmZzgwMjExX2dldF9kZXZfZnJvbV9pbmZvKHN0cnVjdCBuZXQgKm5ldG5zLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMjUtXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyMjY6c3RhdGljIGludCB2YWxpZGF0ZV9iZWFjb25faGVhZChjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjI3LVxcdFxcdFxcdFxcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9NjM0PW5sODAyMTFfczFnX3Nob3J0X2JlYWNvbltOTDgwMjExX1MxR19TSE9SVF9CRUFDT05fQVRUUl9NQVggKyAxXSA9IHtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTYzNS1cXHRbTkw4MDIxMV9TMUdfU0hPUlRfQkVBQ09OX0FUVFJfSEVBRF0gPVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NjM2OlxcdFxcdE5MQV9QT0xJQ1lfVkFMSURBVEVfRk4oTkxBX0JJTkFSWSwgdmFsaWRhdGVfYmVhY29uX2hlYWQsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy02MzctXFx0XFx0XFx0XFx0ICAgICAgIElFRUU4MDIxMV9NQVhfREFUQV9MRU4pLFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz02ODk9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IG5sODAyMTFfcG9saWN5W05VTV9OTDgwMjExX0FUVFJdID0ge1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy03MzYtXFx0W05MODAyMTFfQVRUUl9CRUFDT05fSEVBRF0gPVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NzM3OlxcdFxcdE5MQV9QT0xJQ1lfVkFMSURBVEVfRk4oTkxBX0JJTkFSWSwgdmFsaWRhdGVfYmVhY29uX2hlYWQsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy03MzgtXFx0XFx0XFx0XFx0ICAgICAgIElFRUU4MDIxMV9NQVhfREFUQV9MRU4pLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzoxNjoyMS44NDk2MTM3MDFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI0NjY5NzI2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgTmV0bGluayBBdHRyaWJ1dGUgVmFsaWRhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgbWluZCBpbW1lZGlhdGVseSBmbGFncyBgdmFsaWRhdGVfYmVhY29uX2hlYWRgIGFuZCBgdmFsaWRhdGVfaWVfYXR0cmAgYXMgc3BlY2lmaWMgdmFsaWRhdGlvbiBmdW5jdGlvbnMgd2l0aGluIGEgbmV0bGluayBjb250ZXh0LiBUaGUgdXNlIG9mIFwidmFsaWRhdGVcIiBzY3JlYW1zIHRoYXQgdGhlc2UgYXJlIGRlc2lnbmVkIHRvIGVuZm9yY2Ugc3BlY2lmaWMgcnVsZXMgb3IgY29uc3RyYWludHMgb24gaW5jb21pbmcgbmV0bGluayBhdHRyaWJ1dGVzLiBJ4oCZbSBndWVzc2luZywgZ2l2ZW4gdGhlIG5hbWVzLCB0aGF0IGB2YWxpZGF0ZV9iZWFjb25faGVhZGAgcHJvYmFibHkgZm9jdXNlcyBvbiB2YWxpZGF0aW5nIHRoZSBoZWFkZXIgaW5mb3JtYXRpb24gcmVsYXRlZCB0byBiZWFjb24gZnJhbWVzLCBwZXJoYXBzIGVuc3VyaW5nIGNvcnJlY3QgZmllbGQgbGVuZ3RocywgbWFnaWMgbnVtYmVycywgb3IgZmxhZyBzZXR0aW5ncy4gV2UncmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBjcml0aWNhbCBjb250cm9sIGluZm9ybWF0aW9uIGhlcmUsIGdpdmVuIHRoZSBpbXBvcnRhbmNlIG9mIGEgYmVhY29uJ3Mgc3RydWN0dXJlLlxuXG5gdmFsaWRhdGVfaWVfYXR0cmAuLi4gd2VsbCwgdGhhdOKAmXMgd2hlcmUgdGhpbmdzIGNhbiBnZXQgaW50ZXJlc3RpbmcuIFwiSUVcIiBvZiBjb3Vyc2Ugc3RhbmRzIGZvciBJbmZvcm1hdGlvbiBFbGVtZW50LiBUaGlzIGZ1bmN0aW9uIGlzIHRhc2tlZCB3aXRoIGVuc3VyaW5nIHRoZXNlIGluZm9ybWF0aW9uIGVsZW1lbnRzIGNvbnRhaW5lZCBpbiBhIG5ldGxpbmsgbWVzc2FnZSBhZGhlcmUgdG8gdGhlIGRlZmluZWQgc3RhbmRhcmRzLCBvciBwZXJoYXBzIGFwcGxpY2F0aW9uLXNwZWNpZmljIGNvbnN0cmFpbnRzLiBJJ2xsIG5lZWQgdG8ga25vdyBtb3JlIGFib3V0IHRoZSBuZXRsaW5rIGF0dHJpYnV0ZXMgaW52b2x2ZWQsIG9mIGNvdXJzZSwgYnV0IGJhc2VkIHNvbGVseSBvbiBuYW1pbmcsIHRoaXMgY291bGQgYmUgYW55dGhpbmcgZnJvbSBwYXJzaW5nIGFuZCB2YWxpZGF0aW5nIGEgc3BlY2lmaWMgSUUgdHlwZSBsaWtlIHRoZSBTU0lEIG9yIFN1cHBvcnRlZCBSYXRlcywgb3Igc29tZXRoaW5nIGZhciBtb3JlIGNvbXBsZXgsIHBvdGVudGlhbGx5IGludm9sdmluZyB2ZW5kb3Itc3BlY2lmaWMgSUVzLlxuXG5NeSBhc3N1bXB0aW9uIGlzIHRoYXQgYm90aCBmdW5jdGlvbnMgYXJlIGxpa2VseSBwYXJ0IG9mIGEgbGFyZ2VyIG5ldGxpbmsgbWVzc2FnZSBwcm9jZXNzaW5nIHBpcGVsaW5lLCB3aGVyZSBlYWNoIGF0dHJpYnV0ZSAob3IgZ3JvdXAgb2YgYXR0cmlidXRlcykgdW5kZXJnb2VzIHNwZWNpZmljIHZhbGlkYXRpb24gc3RlcHMgdG8gZW5zdXJlIGRhdGEgaW50ZWdyaXR5IGFuZCBwcmV2ZW50IHBvdGVudGlhbCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMgb3Igc3lzdGVtIGluc3RhYmlsaXR5LiBXaXRob3V0IG1vcmUgY29udGV4dCwgSSdkIGltYWdpbmUgd2UncmUgZGVhbGluZyB3aXRoIGVpdGhlciBkcml2ZXItbGV2ZWwgZnVuY3Rpb25hbGl0eSBvciBtYXliZSBzb21ldGhpbmcgZGVlcGVyIHdpdGhpbiBhIG5ldHdvcmsgbWFuYWdlbWVudCBzdGFjay4gVGhlIGRldmlsLCBhcyBhbHdheXMsIGlzIGluIHRoZSBkZXRhaWxzLCBzbyBJJ2QgbmVlZCB0byBkaXZlIGludG8gdGhlIGNvZGViYXNlIGFuZCBhbmFseXplIGV4YWN0bHkgd2hhdCB0aGV5IGFyZSBjaGVja2luZyBhbmQgaG93IHRoZXkgYXJlIGxldmVyYWdlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQyODcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzoxNjoyNy4wOTYzMTI4OThaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxODk0MzAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZhbGlkYXRlX2llX2F0dHJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3dpcmVsZXNzL25sODAyMTEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTIyNj1zdGF0aWMgaW50IHZhbGlkYXRlX2JlYWNvbl9oZWFkKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2Ny1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjI2ODpzdGF0aWMgaW50IHZhbGlkYXRlX2llX2F0dHIoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0cixcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTI2OS1cXHRcXHRcXHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz02MzQ9bmw4MDIxMV9zMWdfc2hvcnRfYmVhY29uW05MODAyMTFfUzFHX1NIT1JUX0JFQUNPTl9BVFRSX01BWCArIDFdID0ge1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy02MzgtXFx0W05MODAyMTFfUzFHX1NIT1JUX0JFQUNPTl9BVFRSX1RBSUxdID1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjYzOTpcXHRcXHROTEFfUE9MSUNZX1ZBTElEQVRFX0ZOKE5MQV9CSU5BUlksIHZhbGlkYXRlX2llX2F0dHIsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy02NDAtXFx0XFx0XFx0XFx0ICAgICAgIElFRUU4MDIxMV9NQVhfREFUQV9MRU4pLFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz02NjI9bmw4MDIxMV9uYW5fY29uZl9wb2xpY3lbTkw4MDIxMV9OQU5fQ09ORl9BVFRSX01BWCArIDFdID0ge1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy02NjgtXFx0W05MODAyMTFfTkFOX0NPTkZfVkVORE9SX0VMRU1TXSA9XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo2Njk6XFx0XFx0TkxBX1BPTElDWV9WQUxJREFURV9GTihOTEFfQklOQVJZLCB2YWxpZGF0ZV9pZV9hdHRyLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNjcwLVxcdFxcdFxcdFxcdCAgICAgICBJRUVFODAyMTFfTUFYX0RBVEFfTEVOKSxcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9Njg5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBubDgwMjExX3BvbGljeVtOVU1fTkw4MDIxMV9BVFRSXSA9IHtcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNzM5LVxcdFtOTDgwMjExX0FUVFJfQkVBQ09OX1RBSUxdID1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjc0MDpcXHRcXHROTEFfUE9MSUNZX1ZBTElEQVRFX0ZOKE5MQV9CSU5BUlksIHZhbGlkYXRlX2llX2F0dHIsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy03NDEtXFx0XFx0XFx0XFx0ICAgICAgIElFRUU4MDIxMV9NQVhfREFUQV9MRU4pLFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy03NzgtXFx0W05MODAyMTFfQVRUUl9JRV0gPSBOTEFfUE9MSUNZX1ZBTElEQVRFX0ZOKE5MQV9CSU5BUlksXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo3Nzk6XFx0XFx0XFx0XFx0XFx0XFx0ICAgdmFsaWRhdGVfaWVfYXR0cixcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTc4MC1cXHRcXHRcXHRcXHRcXHRcXHQgICBJRUVFODAyMTFfTUFYX0RBVEFfTEVOKSxcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtODQ0LVxcdFtOTDgwMjExX0FUVFJfSUVfUFJPQkVfUkVTUF0gPVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6ODQ1OlxcdFxcdE5MQV9QT0xJQ1lfVkFMSURBVEVfRk4oTkxBX0JJTkFSWSwgdmFsaWRhdGVfaWVfYXR0cixcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTg0Ni1cXHRcXHRcXHRcXHQgICAgICAgSUVFRTgwMjExX01BWF9EQVRBX0xFTiksXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy04NDctXFx0W05MODAyMTFfQVRUUl9JRV9BU1NPQ19SRVNQXSA9XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo4NDg6XFx0XFx0TkxBX1BPTElDWV9WQUxJREFURV9GTihOTEFfQklOQVJZLCB2YWxpZGF0ZV9pZV9hdHRyLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtODQ5LVxcdFxcdFxcdFxcdCAgICAgICBJRUVFODAyMTFfTUFYX0RBVEFfTEVOKSxcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9NjUwND1ubDgwMjExX3BhcnNlX21ic3NpZF9lbGVtcyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmxhdHRyICphdHRycyxcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNjUxNy1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjY1MTg6XFx0XFx0cmV0ID0gdmFsaWRhdGVfaWVfYXR0cihubF9lbGVtcywgZXh0YWNrKTtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTY1MTktXFx0XFx0aWYgKHJldClcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9NjU0MT1ubDgwMjExX3BhcnNlX3Jucl9lbGVtcyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmxhdHRyICphdHRycyxcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNjU1MS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjY1NTI6XFx0XFx0cmV0ID0gdmFsaWRhdGVfaWVfYXR0cihubF9lbGVtcywgZXh0YWNrKTtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTY1NTMtXFx0XFx0aWYgKHJldClcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTAyMTY9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTEwMjI0LVxcdFtOTDgwMjExX01FU0hfU0VUVVBfSUVdID1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjEwMjI1OlxcdFxcdE5MQV9QT0xJQ1lfVkFMSURBVEVfRk4oTkxBX0JJTkFSWSwgdmFsaWRhdGVfaWVfYXR0cixcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTEwMjI2LVxcdFxcdFxcdFxcdCAgICAgICBJRUVFODAyMTFfTUFYX0RBVEFfTEVOKSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6MTY6MjcuMTM4MjEyNjI5WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MDkyNTM0ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb2RlIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBvdmVyIHRoZXNlIGNoYW5nZXMsIGFuZCBteSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGUgZnVuY3Rpb25zIGludm9sdmVkIGFyZSBkZWZpbml0ZWx5IHdvcmtpbmcgYXMgZXhwZWN0ZWQ7IHRoZXkgYXJlIHJlYWNoYWJsZSBhbmQgYXBwZWFyIHRvIGZ1bmN0aW9uIHByb3Blcmx5LiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIHJlZmFjdG9yaW5nIHRoZSBJRSAoSW5mb3JtYXRpb24gRWxlbWVudCkgdmFsaWRhdGlvbiBsb2dpYyBmb3IgdGhlIElFIHZhbGlkYXRpb24gaW50byBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYC4gVGhlbiwgaXQncyBpbnRlZ3JhdGVkIHRoaXMgcmVmYWN0b3JlZCB2YWxpZGF0aW9uIGZ1bmN0aW9uIGludG8gYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgIHdpdGhpbiBgd2V4dC1zbWUuY2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYWltZWQgYXQgYWRkaW5nIHZhbGlkYXRpb24gdG8gYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgLCBzcGVjaWZpY2FsbHkuIEkgc2hvdWxkIHRha2UgYSBsb29rIGF0IHRoZSBgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZWAgZnVuY3Rpb24gZGlyZWN0bHkuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgaW50ZWdyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MDkyLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE2OjMxLjU0NzQ2ODA1OVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIxMzIzNDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2ZnODAyMTFfd2V4dF9zaXdnZW5pZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3Mvd2V4dC1zbWUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3Mvd2V4dC1zbWUuYz0yNzM9aW50IGNmZzgwMjExX21nZF93ZXh0X2dpd2FwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvd2V4dC1zbWUuYy0yOTctXFxubmV0L3dpcmVsZXNzL3dleHQtc21lLmM6Mjk4OmludCBjZmc4MDIxMV93ZXh0X3Npd2dlbmllKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L3dpcmVsZXNzL3dleHQtc21lLmMtMjk5LVxcdFxcdFxcdCAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE2OjMxLjU4OTYwMjQyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3OTIwNjU2MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLi4uIHRoZSBxdWVzdGlvbiBpczogaXMgYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgIGFjdHVhbGx5IGV4cG9ydGVkIGZvciB1c2UgZXh0ZXJuYWxseSwgb3IgaXMgaXQgbWVyZWx5IGx1cmtpbmcgaW5zaWRlIGEgc3RydWN0IHNvbWV3aGVyZT8gVGhhdCdzIHRoZSBjcnV4IG9mIGl0LiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgb2YgaXRzIGFjY2Vzc2liaWxpdHkuIElzIGl0IGEgcHVibGljLWZhY2luZyBBUEkgZnVuY3Rpb24sIG9yIGlzIGl0IG1vcmUgb2YgYSBoZWxwZXIsIGludGVybmFsIHRvIGEgcGFydGljdWxhciBtb2R1bGUgb3Igc3RydWN0dXJlIHdpdGhpbiB0aGUga2VybmVsJ3Mgd2lyZWxlc3Mgc3Vic3lzdGVtPyBLbm93aW5nIHRoaXMgZnVuZGFtZW50YWxseSBpbXBhY3RzIGhvdyBJIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UgYW5kIHBvdGVudGlhbCBpbXBhY3Qgb24gb3RoZXIgY29tcG9uZW50cyBhbmQgZnV0dXJlIGtlcm5lbCBkZXZlbG9wbWVudC4gSSBuZWVkIHRvIGNoZWNrIHRoZSBzeW1ib2wgdGFibGUsIHRoZSByZWxldmFudCBoZWFkZXIgZmlsZXMsIGFuZCBwb3NzaWJseSB0cmFjZSBpdHMgdXNhZ2Ugd2l0aGluIHRoZSBrZXJuZWwgc291cmNlIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUuIFRoZSBpbXBsaWNhdGlvbnMgZm9yIHRoZSBkZXNpZ24gYW5kIG1haW50YWluYWJpbGl0eSBvZiB0aGUgd2lyZWxlc3Mgc3RhY2ssIGFuZCBwYXJ0aWN1bGFybHkgdGhlIHdleHQgY29tcGF0aWJpbGl0eSBsYXllciwgZGVwZW5kIG9uIHRoZSBhbnN3ZXIuIElmIGl0J3MgaW50ZXJuYWwsIHJlZmFjdG9yaW5nIG9yIHJlcGxhY2luZyBpdCBiZWNvbWVzIGEgbGVzcyBzZW5zaXRpdmUgaXNzdWUsIHZlcnN1cyBhbiBleHRlcm5hbGx5LWZhY2luZyBmdW5jdGlvbiB0aGF0IG1pZ2h0IGJyZWFrIHVzZXJzcGFjZSBiaW5hcmllcy4gSSdsbCBuZWVkIHRvIGRpZyBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NTYzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6MTY6MzUuMzgxNjcwOTE0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzA5MDE2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZmc4MDIxMV93ZXh0X3Npd2dlbmllXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL3dleHQtY29tcGF0LmM9MTQ4ND1zdGF0aWMgY29uc3QgaXdfaGFuZGxlciBjZmc4MDIxMV9oYW5kbGVyc1tdID0ge1xcbi0tXFxubmV0L3dpcmVsZXNzL3dleHQtY29tcGF0LmMtMTUxMS1cXHRJV19IQU5ETEVSKFNJT0NHSVdQT1dFUixcXHRjZmc4MDIxMV93ZXh0X2dpd3Bvd2VyKSxcXG5uZXQvd2lyZWxlc3Mvd2V4dC1jb21wYXQuYzoxNTEyOlxcdElXX0hBTkRMRVIoU0lPQ1NJV0dFTklFLFxcdGNmZzgwMjExX3dleHRfc2l3Z2VuaWUpLFxcbm5ldC93aXJlbGVzcy93ZXh0LWNvbXBhdC5jLTE1MTMtXFx0SVdfSEFORExFUihTSU9DU0lXQVVUSCxcXHRcXHRjZmc4MDIxMV93ZXh0X3Npd2F1dGgpLFxcbi0tXFxubmV0L3dpcmVsZXNzL3dleHQtY29tcGF0Lmg9NDY9aW50IGNmZzgwMjExX3dleHRfc2l3bWxtZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL3dleHQtY29tcGF0LmgtNDgtXFx0XFx0XFx0ICB1bmlvbiBpd3JlcV9kYXRhICp3cnF1LCBjaGFyICpleHRyYSk7XFxubmV0L3dpcmVsZXNzL3dleHQtY29tcGF0Lmg6NDk6aW50IGNmZzgwMjExX3dleHRfc2l3Z2VuaWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvd2lyZWxlc3Mvd2V4dC1jb21wYXQuaC01MC1cXHRcXHRcXHQgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLFxcbi0tXFxubmV0L3dpcmVsZXNzL3dleHQtc21lLmM9MjczPWludCBjZmc4MDIxMV9tZ2Rfd2V4dF9naXdhcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL3dleHQtc21lLmMtMjk3LVxcbm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jOjI5ODppbnQgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jLTI5OS1cXHRcXHRcXHQgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzoxNjozNS40MjQ3NjYyMzVaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODcxMjYzMDkxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBTSU9DU0lXR0VOSUUgaW9jdGwgSGFuZGxlcioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IGZpeGluZyBhIHByb2JsZW0gd2l0aCBgU0lPQ1NJV0dFTklFYC4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIHRoZXJlJ3MgYSBidWcgdGhhdCBhbGxvd3MgaXQgdG8gYWNjZXB0IGludmFsaWQgSUVzLCB3aGljaCBpcyBhIGJpZyBkZWFsLiBEZWZpbml0ZWx5IHdvcnRoIGEgZnV6emluZyBjYW1wYWlnbiB0byBpZGVudGlmeSBhbnkgdnVsbmVyYWJpbGl0aWVzLlxuXG5UaGUga2V5IHN5bWJvbHMgSSBuZWVkIHRvIGZvY3VzIG9uIGZvciB0aGlzIGFyZSBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYCwgYHZhbGlkYXRlX2JlYWNvbl9oZWFkYCwgYHZhbGlkYXRlX2llX2F0dHJgLCBhbmQgYWxzbywgb2J2aW91c2x5LCBgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZWAuIFRob3NlIGFyZSB0aGUgZW50cnkgcG9pbnRzIGFuZCB2YWxpZGF0aW9uIGZ1bmN0aW9ucyBJJ2xsIG5lZWQgdG8gaGl0LlxuXG5Gb3IgdGhlIGtlcm5lbCBjb25maWdzLCBJJ2xsIG5lZWQgYENGRzgwMjExYCwgYENGRzgwMjExX1dFWFRgLCBgTUFDODAyMTFgLCBhbmQgYE1BQzgwMjExX0hXU0lNYC4gSSB3YXMgYnJpZWZseSBzZWNvbmQtZ3Vlc3NpbmcgYE1BQzgwMjExX0hXU0lNYCwgdGhpbmtpbmcgbWF5YmUgaXQgd2Fzbid0IHN0cmljdGx5ICpyZXF1aXJlZCogZm9yIG5ldGxpbmsvaW9jdGwgZnV6emluZyBvZiBgQ0ZHODAyMTFgLCBidXQgaXQncyByZWFsbHkgdGhlIGVhc2llc3Qgd2F5IHRvIHNwaW4gdXAgc29tZSB3aXJlbGVzcyBkZXZpY2VzLlxuXG5MZXQncyBxdWlja2x5IGNvbmZpcm0sIHllcywgYE1BQzgwMjExX0hXU0lNYCBpcyBzdGlsbCB0aGUgYmVzdCBhcHByb2FjaC4gSXQgcHJvdmlkZXMgdGhvc2UgY29udmVuaWVudCBmYWtlIHdpcmVsZXNzIGRldmljZXMgdGhhdCBJIGNhbiBpbnRlcmFjdCB3aXRoIHVzaW5nIGJvdGggYG5sODAyMTFgIGFuZCBgd2V4dGAsIHdoaWNoIGlzIHBlcmZlY3QgZm9yIHRoaXMuXG5cbkFuZCwgcmlnaHQsIEknbGwgZGVmaW5pdGVseSBuZWVkIGBDRkc4MDIxMV9XRVhUYCBlbmFibGVkLiBJIGNhbid0IGZvcmdldCB0aGF0IGl0J3MgbmVlZGVkIGZvciB0aGUgYHdleHQtc21lLmNgIGNvbXBvbmVudC4gQW5kIHRoYXQgbWVhbnMgYFdFWFRfQ09SRWAgaXMgYWxzbyBnb2luZyB0byBiZSBwdWxsZWQgaW4gYmVjYXVzZSBpdCdzIHNlbGVjdGVkIGJ5IGBDRkc4MDIxMV9XRVhUYCwgc28gdGhhdCBpcyBhbHNvIGdvb2QgdG8gZ28uIExldCdzIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYENGRzgwMjExX1dFWFRgIGlzIGNvcnJlY3QgaW4gdGhlIGBuZXQvd2lyZWxlc3MvS2NvbmZpZ2AgZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTczMTksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6MTY6NDQuMTM3Mzk5MzE4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTMwNTUxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQ0ZHODAyMTFfV0VYVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZz0xNzc9Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE4Nzpjb25maWcgQ0ZHODAyMTFfV0VYVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJjZmc4MDIxMSB3aXJlbGVzcyBleHRlbnNpb25zIGNvbXBhdGliaWxpdHlcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE2OjQ0LjE3ODcwNjQxOVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTg4MzczODUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvbmZpZ3VyYXRpb24gQ29udW5kcnVtKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byB3cmFwIG15IGhlYWQgYXJvdW5kIHRoZXNlIGNvbmZpZ3VyYXRpb25zLiBGaXJzdCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ3ZlIGdvdCB0aGlzIHN0cmFpZ2h0LiBXYWl0IGEgbWludXRlLCBgQ0ZHODAyMTFfV0VYVGAgaXMgYWN0dWFsbHkgYSBgYm9vbGAsIG5vdCBhIHRyaXN0YXRlLiBHb29kIHRvIGtlZXAgaW4gbWluZCwgSSBuZWVkIHRvIGJlIGV4YWN0IGhlcmUuXG5cbk5vdywgbGV0J3Mgc2VlLCBgTUFDODAyMTFfSFdTSU1gLi4uIHRoYXQgb25lICppcyogYSBgdHJpc3RhdGVgLCByaWdodD8gWWVzLCBjb25maXJtZWQuIE9rYXksIGdyZWF0LiBUaGF0IG1lYW5zIHRvIGVuYWJsZSB0aGlzIHNldHVwLCBJIG5lZWQgdG8gY29uZmlndXJlIHRoZSBmb2xsb3dpbmc6IGBDRkc4MDIxMWAsIGBDRkc4MDIxMV9XRVhUYCwgYE1BQzgwMjExYCwgYW5kIGBNQUM4MDIxMV9IV1NJTWAuIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCB0aGUgZGVwZW5kZW5jaWVzIGZvciBgQ0ZHODAyMTFfV0VYVGAgZG9uJ3QgaW50cm9kdWNlIGFueSBoaWRkZW4gZ290Y2hhcy4gSXQgd291bGQgYmUgYSBuaWdodG1hcmUgdG8gZGVidWcgbGF0ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MjQ2LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE2OjQ4Ljc2NzA4MjM2WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDg4NzgwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnPTU9Y29uZmlnIFdFWFRfQ09SRVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTYtXFx0ZGVmX2Jvb2wgeVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjc6XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMV9XRVhUIHx8IFdJUkVMRVNTX0VYVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc9OT1jb25maWcgV0VYVF9QUk9DXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTAtXFx0ZGVmX2Jvb2wgeVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjExOlxcdGRlcGVuZHMgb24gUFJPQ19GU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEyOlxcdGRlcGVuZHMgb24gV0VYVF9DT1JFXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTMtXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0xNz1jb25maWcgQ0ZHODAyMTFcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiY2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVxcXCJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTpcXHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXFxubmV0L3dpcmVsZXNzL0tjb25maWctMjAtXFx0c2VsZWN0IEZXX0xPQURFUlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWc9Njg9Y29uZmlnIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY5LVxcdGJvb2wgXFxcImNmZzgwMjExIGNlcnRpZmljYXRpb24gb251c1xcXCJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo3MDpcXHRkZXBlbmRzIG9uIEVYUEVSVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTcxLVxcdGRlZmF1bHQgblxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWc9OTk9Y29uZmlnIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTAxLVxcdGRlZmF1bHQgeVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEwMjpcXHRkZXBlbmRzIG9uIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTAzLVxcdGhlbHBcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnPTExMT1jb25maWcgQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVxcdHN0cmluZyBcXFwiYWRkaXRpb25hbCByZWdkYiBrZXkgZGlyZWN0b3J5XFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTM6XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMV9SRVFVSVJFX1NJR05FRF9SRUdEQlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExNC1cXHRoZWxwXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0xMjI9Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cXHRib29sIFxcXCJjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1xcXCJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjQ6XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjUtXFx0aGVscFxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWc9MTM1PWNvbmZpZyBDRkc4MDIxMV9SRUdfUkVMQVhfTk9fSVJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzYtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgc3VwcG9ydCBmb3IgTk9fSVIgcmVsYXhhdGlvblxcXCJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzc6XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzgtXFx0aGVscFxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWc9MTY5PWNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVxcdGJvb2wgXFxcImNmZzgwMjExIERlYnVnRlMgZW50cmllc1xcXCJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzE6XFx0ZGVwZW5kcyBvbiBERUJVR19GU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Mi1cXHRoZWxwXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0xOTQ9Y29uZmlnIENGRzgwMjExX0tVTklUX1RFU1RcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTUtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBjZmc4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5NjpcXHRkZXBlbmRzIG9uIEtVTklUXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk3OlxcdGRlcGVuZHMgb24gQ0ZHODAyMTFcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTgtXFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6MTY6NDguODExOTczODhaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcxODgxMjUwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYENGRzgwMjExX1dFWFRgIG1vZHVsZSBhbmQgaXQncyBpbW1lZGlhdGVseSBhcHBhcmVudCB0aGF0IGl0cyBpbmNsdXNpb24gaXMgY29uZGl0aW9uYWwuIFRoZSBjb2RlIHN0cnVjdHVyZSB0ZWxscyBtZSBpdCdzIG5lc3RsZWQgd2l0aGluIGFuIGBpZiBDRkc4MDIxMWAgYmxvY2suIFRoaXMgbWVhbnMgYENGRzgwMjExX1dFWFRgIGlzIGRlcGVuZGVudCBvbiB0aGUgYENGRzgwMjExYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gTm93LCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgYW5kIHRyYWNlIHRoaXMgZGVwZW5kZW5jeSBwcm9wZXJseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGBpZiBDRkc4MDIxMWAgaW4gdGhlIGtlcm5lbCdzIEtjb25maWcgZmlsZXMuIFNwZWNpZmljYWxseSwgSSdsbCBoZWFkIG92ZXIgdG8gYG5ldC93aXJlbGVzcy9LY29uZmlnYCB0byBjb25maXJtIHRoaXMgZGVwZW5kZW5jeSBhbmQgdW5kZXJzdGFuZCBleGFjdGx5IGhvdyBpdCdzIGNvbmZpZ3VyZWQuIFRoYXQncyB0aGUgbG9naWNhbCBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NTU2LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6MTY6NTIuNTMwNzg5NjRaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NjYzOTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlmIENGRzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnPTE3PWNvbmZpZyBDRkc4MDIxMVxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMjQtXFx0IyAodGhpcyBpcyBoZXJlIHJhdGhlciB0aGFuIGJlbG93IHRvIGFsbG93IGl0IHRvIGJlIGEgbW9kdWxlKVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjI1OlxcdHNlbGVjdCBDUllQVE9fU0hBMjU2IGlmIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTI2LVxcdGhlbHBcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTM1LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjM2OmlmIENGRzgwMjExXFxubmV0L3dpcmVsZXNzL0tjb25maWctMzctXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz04OT1jb25maWcgQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo5MDpcXHRib29sIFxcXCJyZXF1aXJlIHJlZ2RiIHNpZ25hdHVyZVxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxubmV0L3dpcmVsZXNzL0tjb25maWctOTEtXFx0ZGVmYXVsdCB5XFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz05OT1jb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTAwOlxcdGJvb2wgXFxcImFsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMS1cXHRkZWZhdWx0IHlcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnPTExMT1jb25maWcgQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTEyOlxcdHN0cmluZyBcXFwiYWRkaXRpb25hbCByZWdkYiBrZXkgZGlyZWN0b3J5XFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTMtXFx0ZGVwZW5kcyBvbiBDRkc4MDIxMV9SRVFVSVJFX1NJR05FRF9SRUdEQlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzoxNjo1Mi41Nzc0NTgxN1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NDg3NzI3NDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2g6IFdpcmVsZXNzIElFUyBWYWxpZGF0aW9uKipcblxuT2theSwgc28gYENGRzgwMjExX1dFWFRgIGlzIGRlZmluaXRlbHkgZW5hYmxlZCwgc28gdGhhdCdzIG5vdCBhIGNvbmNlcm4uIFRoZSBwYXRjaCBtb2RpZmllcyBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYCB3aXRoaW4gYG5ldC93aXJlbGVzcy91dGlsLmNgLiBSaWdodCwgYW5kIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gc2V2ZXJhbCBwbGFjZXM6IGB2YWxpZGF0ZV9iZWFjb25faGVhZGAgYW5kIGB2YWxpZGF0ZV9pZV9hdHRyYCBpbiBgbmw4MDIxMS5jYCwgYW5kIGFsc28gYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgIGluIGB3ZXh0LXNtZS5jYC4gVGhvc2UgYWxsIGxvb2sgbGlrZSByZWFzb25hYmxlIGVudHJ5IHBvaW50cyBmb3IgdGVzdGluZywgZ2l2ZW4gdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2UuIFNvLCB0aGUga2V5IHN5bWJvbHMgSSBuZWVkIHRvIGZvY3VzIG9uIGFyZSBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYCwgYHZhbGlkYXRlX2JlYWNvbl9oZWFkYCwgYHZhbGlkYXRlX2llX2F0dHJgLCBhbmQgYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgLlxuXG5Ob3csIHRoZSBxdWVzdGlvbiBpcywgaXMgYGNmZzgwMjExX3ZhbGlkYXRlX2llc2AgYWN0dWFsbHkgZXhwb3J0ZWQ/IEluaXRpYWxseSwgSSB0aG91Z2h0IG5vdCwgYmVjYXVzZSB0aGUgcGF0Y2ggZG9lc24ndCBleHBsaWNpdGx5IGBFWFBPUlRfU1lNQk9MYCBpdC4gTGV0IG1lIGxvb2sgYXQgdGhlIGNvZGU6XG5cbmBgYGNcbitib29sIGNmZzgwMjExX3ZhbGlkYXRlX2llcyhjb25zdCB1OCAqZGF0YSwgaW50IGxlbilcbit7XG4rXHRjb25zdCBzdHJ1Y3QgZWxlbWVudCAqZWxlbTtcbitcbitcdGZvcl9lYWNoX2VsZW1lbnQoZWxlbSwgZGF0YSwgbGVuKSB7XG4rXHRcdC8qIG5vdGhpbmcgKi9cbitcdH1cbitcbitcdHJldHVybiBmb3JfZWFjaF9lbGVtZW50X2NvbXBsZXRlZChlbGVtLCBkYXRhLCBsZW4pO1xuK31cbmBgYFxuXG5Pa2F5LCBpdCdzIG5vdCBleHBvcnRlZCBpbiB0aGUgdHJhZGl0aW9uYWwgd2F5LCBidXQgd2FpdCwgbG9va2luZyBjbG9zZXIuLi4gdGhlIGRpZmYgKmRvZXMqIGFkZCBpdCB0byBgbmV0L3dpcmVsZXNzL25sODAyMTEuaGAuIEFoYSFcblxuYGBgY1xuLS0tIGEvbmV0L3dpcmVsZXNzL25sODAyMTEuaFxuKysrIGIvbmV0L3dpcmVsZXNzL25sODAyMTEuaFxuQEAgLTEyOSw0ICsxMjksNiBAQCBpbnQgbmw4MDIxMV9wbXNyX3N0YXJ0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xuIHZvaWQgbmw4MDIxMV9tbG9fcmVjb25mX2FkZF9kb25lKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0XHQgc3RydWN0IGNmZzgwMjExX21sb19yZWNvbmZfZG9uZV9kYXRhICpkYXRhKTtcbiBcbitib29sIGNmZzgwMjExX3ZhbGlkYXRlX2llcyhjb25zdCB1OCAqZGF0YSwgaW50IGxlbik7XG4rXG4gI2VuZGlmIC8qIF9fTkVUX1dJUkVMRVNTX05MODAyMTFfSCAqL1xuYGBgXG5cblNvLCBpdCdzIGRlY2xhcmVkIGluIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5oYCAqYW5kKiBgbmV0L3dpcmVsZXNzL3dleHQtY29tcGF0LmhgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCdzIGJlaW5nIHVzZWQgYnkgYHdleHQtc21lLmNgLCBzbyBpdCBzaG91bGQgYmUgYXZhaWxhYmxlLiBMZXQncyBtYWtlIHN1cmUgYHdleHQtc21lLmNgIGFjdHVhbGx5IGluY2x1ZGVzIGBubDgwMjExLmhgLiBJJ2xsIGhhdmUgdG8gY2hlY2sgdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyMzMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6MTc6MDIuMDY1MTg4NTg0WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDY4NzI3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJubDgwMjExXFxcXC5oXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jLTE1LSNpbmNsdWRlIFxcXCJ3ZXh0LWNvbXBhdC5oXFxcIlxcbm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jOjE2OiNpbmNsdWRlIFxcXCJubDgwMjExLmhcXFwiXFxubmV0L3dpcmVsZXNzL3dleHQtc21lLmMtMTctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE3OjAyLjEwOTg4Mjg1NFoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDE5OTcwNzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBGdW5jdGlvbiBVc2FnZSBmb3IgUG90ZW50aWFsIEZvY3VzIFN5bWJvbHMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIGlkZW50aWZ5IHNvbWUgZ29vZCBjYW5kaWRhdGVzIGZvciBmb2N1cyBzeW1ib2xzLiBMZXQncyBzZWUuLi4gdGhlIGluc3RydWN0aW9ucyBhcmUgY2xlYXI6IHdlIHdhbnQgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIFRoYXQgbWFrZXMgc2Vuc2UsIHRob3NlIGFyZSBlYXNpZXIgdG8gdHJhY2UgYW5kIGFuYWx5emUuXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYC4gVGhhdCdzICpkZWZpbml0ZWx5KiBub24tc3RhdGljLCBzbyB0aGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3csIEkgc2VlIGB2YWxpZGF0ZV9iZWFjb25faGVhZGAgYW5kIGB2YWxpZGF0ZV9pZV9hdHRyYC4gVGhvc2UgYXJlIHN0YXRpYywgaW4gYG5sODAyMTEuY2AuIEJ1dC4uLiBoYW5nIG9uLiBUaG9zZSBhcmUgYmVpbmcgcGFzc2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzIHRvIGBOTEFfUE9MSUNZX1ZBTElEQVRFX0ZOYC4gVGhhdCBtZWFucyB0aGV5J3JlIG5vdCBpbmxpbmVkISBUaGVpciBhZGRyZXNzZXMgYXJlIGRpc3RpbmN0IHN5bWJvbHMhIEJpbmdvISBUaGF0IG1ha2VzIHRoZW0gc3Ryb25nIGNhbmRpZGF0ZXMuIFRoZXkgYXJlICpub3QqIHRoZSB0eXBpY2FsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb24uXG5cbkxldCdzIHNlZSwgd2hhdCBlbHNlIGRvIHdlIGhhdmU/IE9rYXksIEknbSB0aGlua2luZyBhYm91dCBgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZWAuLi4gSSBiZWxpZXZlIHRoYXQgb25lIGlzICphbHNvKiBub24tc3RhdGljLCBhdCBsZWFzdCBpdCdzIHVzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIGluIGB3ZXh0LWNvbXBhdC5jYC4gU28gdGhhdCBpcyBhbm90aGVyIG9uZSB0byBhZGQgdG8gdGhlIGxpc3Qgb2YgZ29vZCBwb3RlbnRpYWwgZm9jdXMgc3ltYm9scywgSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE2NDYsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6MTc6MDcuNTI5ODU2MDQ0WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTQyNDY4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZmc4MDIxMV93ZXh0X3Npd2dlbmllXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jPTI3Mz1pbnQgY2ZnODAyMTFfbWdkX3dleHRfZ2l3YXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC93aXJlbGVzcy93ZXh0LXNtZS5jLTI5Ny1cXG5uZXQvd2lyZWxlc3Mvd2V4dC1zbWUuYzoyOTg6aW50IGNmZzgwMjExX3dleHRfc2l3Z2VuaWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvd2lyZWxlc3Mvd2V4dC1zbWUuYy0yOTktXFx0XFx0XFx0ICAgc3RydWN0IGl3X3JlcXVlc3RfaW5mbyAqaW5mbyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6MTc6MDcuNTcxMjgzODE1WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzMjQyNzUwNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIHRoaXMgaXMgZGVmaW5pdGVseSBub3QgYSBzdGF0aWMgc2l0dWF0aW9uOyBpdOKAmXMgZ29pbmcgdG8gaW52b2x2ZSBzb21lIHJlbGF0aW9uc2hpcHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBkaWZmZXJlbnQgcGFydHMgaW50ZXJhY3QuIE15IGZvY3VzIGlzIG9uIHRoZXNlIHN5bWJvbHM6IGBjZmc4MDIxMV92YWxpZGF0ZV9pZXNgLCBgdmFsaWRhdGVfYmVhY29uX2hlYWRgLCBgdmFsaWRhdGVfaWVfYXR0cmAsIGFuZCBgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZWAuIFRob3NlIGFyZSB0aGUgY29yZSBmdW5jdGlvbnMgSSdtIGludGVyZXN0ZWQgaW4gcmlnaHQgbm93LlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uczogYENGRzgwMjExYCwgYENGRzgwMjExX1dFWFRgLCBgTUFDODAyMTFgLCBhbmQgYE1BQzgwMjExX0hXU0lNYC4gSSdtIHN0YXJ0aW5nIHdpdGggYE1BQzgwMjExX0hXU0lNYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQgaGFzIGFueSBhZGRpdGlvbmFsIGRlcGVuZGVuY2llcyBiZXlvbmQgd2hhdCdzIGltbWVkaWF0ZWx5IG9idmlvdXMuXG5cblJpZ2h0LCBgTUFDODAyMTFfSFdTSU1gIGRlcGVuZHMgb24gYE1BQzgwMjExYC4gQW5kIGBNQUM4MDIxMWAgcmVsaWVzIG9uIGBDRkc4MDIxMWAsIHdoaWNoIGluIHR1cm4gZGVwZW5kcyBvbiBgUkZLSUxMIHx8ICFSRktJTExgLiBUaGF0IG1lYW5zIGBSRktJTExgICptaWdodCogYmUgcmVsZXZhbnQuIEkgY2FuIHVzdWFsbHkgYXNzdW1lIGBSRktJTExgIGlzIGVpdGhlciBlbmFibGVkIG9yIGRvZXNuJ3QgY2F1c2UgYSBwcm9ibGVtLiBVbmxlc3MgaXQncyBhIGhhcmQgZGVwZW5kZW5jeSB0aGF0J3MgZGlzYWJsZWQgYnkgZGVmYXVsdCwgSSBkb24ndCB0aGluayBJIG5lZWQgdG8gZXhwbGljaXRseSBsaXN0IGl0LiBCdXQgbGV0J3MgdmVyaWZ5IHRoYXQgcXVpY2tseSwganVzdCB0byBiZSBzdXJlLiBJdCdzIGdvb2QgdG8gYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMzQ2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE3OjEyLjg5NTU2MTk4NVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg4MzQ0MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJGS0lMTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvcmZraWxsL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3Jma2lsbC9LY29uZmlnLTQtI1xcbm5ldC9yZmtpbGwvS2NvbmZpZzo1Om1lbnVjb25maWcgUkZLSUxMXFxubmV0L3Jma2lsbC9LY29uZmlnLTYtXFx0dHJpc3RhdGUgXFxcIlJGIHN3aXRjaCBzdWJzeXN0ZW0gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9yZmtpbGwvS2NvbmZpZy0xNC0jIExFRCB0cmlnZ2VyIHN1cHBvcnRcXG5uZXQvcmZraWxsL0tjb25maWc6MTU6Y29uZmlnIFJGS0lMTF9MRURTXFxubmV0L3Jma2lsbC9LY29uZmlnLTE2LVxcdGJvb2xcXG4tLVxcbm5ldC9yZmtpbGwvS2NvbmZpZy0yMC1cXG5uZXQvcmZraWxsL0tjb25maWc6MjE6Y29uZmlnIFJGS0lMTF9JTlBVVFxcbm5ldC9yZmtpbGwvS2NvbmZpZy0yMi1cXHRib29sIFxcXCJSRiBzd2l0Y2ggaW5wdXQgc3VwcG9ydFxcXCIgaWYgRVhQRVJUXFxuLS1cXG5uZXQvcmZraWxsL0tjb25maWctMjYtXFxubmV0L3Jma2lsbC9LY29uZmlnOjI3OmNvbmZpZyBSRktJTExfR1BJT1xcbm5ldC9yZmtpbGwvS2NvbmZpZy0yOC1cXHR0cmlzdGF0ZSBcXFwiR1BJTyBSRktJTEwgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzoxNzoxMi45MzQzOTkxMTdaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjQ2MjAyMDE3MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBXaXJlbGVzcyBDb25maWd1cmF0aW9uIGFuZCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIHRoYXQgYFJGS0lMTGAgaXMgYSB0cmlzdGF0ZSwgYW5kIGBDRkc4MDIxMWAncyBjb25maWd1cmF0aW9uIGRlcGVuZHMgb24gaXQuIFNwZWNpZmljYWxseSwgdGhlIGNvbmZpZ3VyYXRpb24gbG9naWMgYWxsb3dzIGBDRkc4MDIxMWAgdG8gYmUgbW9kdWxhciAoYG1gKSByZWdhcmRsZXNzIG9mIGBSRktJTExgJ3Mgc3RhdGUgKGVpdGhlciBgbWAsIGB5YCwgb3IgYG5gKS4gU28sIGVuYWJsaW5nIGBSRktJTExgIGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSBmb3IgYENGRzgwMjExYCdzIGZ1bmN0aW9uYWxpdHksIHdoaWNoIGlzIGludGVyZXN0aW5nLlxuXG5Ob3csIGxldCdzIGNvbnNpZGVyIG90aGVyIGNvbmZpZ3VyYXRpb25zLiBJdCBsb29rcyBsaWtlIGBXRVhUX0NPUkVgIGlzIHNlbGVjdGVkIGJ5IGBDRkc4MDIxMV9XRVhUYCBvciBgV0lSRUxFU1NfRVhUYC4gVGhhdCdzIGdvb2QsIG1lYW5pbmcgd2UgZG9uJ3QgbmVlZCB0byBleHBsaWNpdGx5IGVuYWJsZSBgV0VYVF9DT1JFYC5cblxuTW92aW5nIG9uIHRvIHRoZSBwYXRjaCBpdHNlbGYsIGl0IGxvb2tzIGxpa2UgdGhlcmUgaXMgcmVmYWN0b3JpbmcgaGFwcGVuaW5nIGhlcmUuIFRoZSB2YWxpZGF0aW9uIGxvZ2ljIGZvciBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBpcyBiZWluZyBjZW50cmFsaXplZCBpbnRvIGBjZmc4MDIxMV92YWxpZGF0ZV9pZXNgLiBUaGlzIGZ1bmN0aW9uIGlzIHRoZW4gdXNlZCBpbiBgdmFsaWRhdGVfYmVhY29uX2hlYWRgLCBgdmFsaWRhdGVfaWVfYXR0cmAsIGFuZCBhbHNvIGFkZGVkIGluIGBjZmc4MDIxMV93ZXh0X3Npd2dlbmllYC4gU28sIHdlJ3JlIGNvbnNvbGlkYXRpbmcgdGhlIElFIHZhbGlkYXRpb24gYWNyb3NzIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgd2lyZWxlc3Mgc3RhY2suIFRoZSBrZXkgdGFrZWF3YXkgaXMgdGhpcyBpcyBhIHJlZmFjdG9yaW5nIGVmZm9ydCB3aXRoIGZ1bmN0aW9uYWwgaW1wYWN0LlxuXG5UaGlzIG1ha2VzIHN1cmUgdGhhdCB0aGUgd2lyZWxlc3MgaW50ZXJmYWNlcyB2YWxpZGF0ZSBJRXMgYW5kIGRvIG5vdCBjcmFzaCBvbiBtYWxmb3JtZWQgb25lcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBUaGUgcGF0Y2ggYWxzbyBwcmV2ZW50cyBtYWxmb3JtZWQgSUVzIGZyb20gYmVpbmcgcHJvY2Vzc2VkIGluIGBjZmc4MDIxMV93ZXh0X3Npd2dlbmllYC4gVGhpcyBpcyBnb29kLCBhbmQgaXQncyBkZWZpbml0ZWx5IHNvbWV0aGluZyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gc2VlIGlmIGFueSB2dWxuZXJhYmlsaXRpZXMgYXJlIGV4cG9zZWQuXG5cblNvLCB0aGUga2V5IGZ1bmN0aW9ucyB0aGF0IG5lZWQgZm9jdXMgZHVyaW5nIGZ1enppbmcgYXJlIGBjZmc4MDIxMV92YWxpZGF0ZV9pZXNgLCBgdmFsaWRhdGVfYmVhY29uX2hlYWRgLCBgdmFsaWRhdGVfaWVfYXR0cmAsIGFuZCBgY2ZnODAyMTFfd2V4dF9zaXdnZW5pZWAuXG5cblRoZSBpbXBvcnRhbnQgY29uZmlndXJhdGlvbnMgZm9yIHRoaXMgcGF0Y2ggYXJlIGBDRkc4MDIxMWAsIGBDRkc4MDIxMV9XRVhUYCwgYE1BQzgwMjExYCwgYW5kIGBNQUM4MDIxMV9IV1NJTWAuIFRpbWUgdG8gY2hlY2sgaXQgd2l0aCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzE2MSwiT3V0cHV0VG9rZW5zIjoyNDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjE3OjM3LjU1NDYwMjg4NloiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwODYwNzUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiQ0ZHODAyMTFfV0VYVFwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2ZnODAyMTFfdmFsaWRhdGVfaWVzXCIsXG4gICAgXCJ2YWxpZGF0ZV9iZWFjb25faGVhZFwiLFxuICAgIFwidmFsaWRhdGVfaWVfYXR0clwiLFxuICAgIFwiY2ZnODAyMTFfd2V4dF9zaXdnZW5pZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyBJbmZvcm1hdGlvbiBFbGVtZW50IChJRSkgdmFsaWRhdGlvbiBpbnRvIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBgY2ZnODAyMTFfdmFsaWRhdGVfaWVzYCBhbmQgYWRkcyB0aGlzIHZhbGlkYXRpb24gdG8gdGhlIFdFWFQgYFNJT0NTSVdHRU5JRWAgaW9jdGwgaGFuZGxlciAoYGNmZzgwMjExX3dleHRfc2l3Z2VuaWVgKSB0byBwcmV2ZW50IG1hbGZvcm1lZCBJRXMgZnJvbSBiZWluZyBwcm9jZXNzZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSSB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAobmw4MDIxMSkgYW5kIGlvY3RsICh3ZXh0KS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG5ldyB2YWxpZGF0aW9uIGhlbHBlciBhbmQgdGhlIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIkNGRzgwMjExX1dFWFRcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNmZzgwMjExX3ZhbGlkYXRlX2llc1wiLFxuICAgIFwidmFsaWRhdGVfYmVhY29uX2hlYWRcIixcbiAgICBcInZhbGlkYXRlX2llX2F0dHJcIixcbiAgICBcImNmZzgwMjExX3dleHRfc2l3Z2VuaWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgSW5mb3JtYXRpb24gRWxlbWVudCAoSUUpIHZhbGlkYXRpb24gaW50byBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gYGNmZzgwMjExX3ZhbGlkYXRlX2llc2AgYW5kIGFkZHMgdGhpcyB2YWxpZGF0aW9uIHRvIHRoZSBXRVhUIGBTSU9DU0lXR0VOSUVgIGlvY3RsIGhhbmRsZXIgKGBjZmc4MDIxMV93ZXh0X3Npd2dlbmllYCkgdG8gcHJldmVudCBtYWxmb3JtZWQgSUVzIGZyb20gYmVpbmcgcHJvY2Vzc2VkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUEkgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKG5sODAyMTEpIGFuZCBpb2N0bCAod2V4dCkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBuZXcgdmFsaWRhdGlvbiBoZWxwZXIgYW5kIHRoZSBmdW5jdGlvbnMgdGhhdCBjYWxsIGl0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowffrn2[1] Phase: Succeeded StartedAt: 2026-07-30 07:17:48 +0000 UTC FinishedAt: 2026-07-30 07:17:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowffrn2[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-30 07:17:48 +0000 UTC FinishedAt: 2026-07-30 07:17:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowffrn2[2] Phase: Succeeded StartedAt: 2026-07-30 07:17:48 +0000 UTC FinishedAt: 2026-07-30 11:06:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-30 07:17:48 +0000 UTC FinishedAt: 2026-07-30 11:06:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","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-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","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-07-30 07:17:48 +0000 UTC FinishedAt: 2026-07-30 07:17:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","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-07-30 07:17:48 +0000 UTC FinishedAt: 2026-07-30 07:17:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowffrn2/series-workflowffrn2-convert-artifact-1408753705/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-30 07:17:58 +0000 UTC FinishedAt: 2026-07-30 07:36:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-30 07:17:58 +0000 UTC FinishedAt: 2026-07-30 07:36:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*e3ca3455-740f-4930-829b-67f47cfc3561,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowffrn2/series-workflowffrn2-convert-artifact-1408753705/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "a69c8edf-19f2-49d9-8dd6-7ce9a2273227", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowffrn2/series-workflowffrn2-build-action-1290684551/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-30 07:17:58 +0000 UTC FinishedAt: 2026-07-30 07:36:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*e3ca3455-740f-4930-829b-67f47cfc3561,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowffrn2/series-workflowffrn2-convert-artifact-1408753705/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "a69c8edf-19f2-49d9-8dd6-7ce9a2273227", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowffrn2/series-workflowffrn2-build-action-1290684551/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-30 07:36:49 +0000 UTC FinishedAt: 2026-07-30 07:36:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-30 07:36:49 +0000 UTC FinishedAt: 2026-07-30 07:36:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-30 07:36:49 +0000 UTC FinishedAt: 2026-07-30 07:36:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-30 07:36:49 +0000 UTC FinishedAt: 2026-07-30 07:36:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowffrn2/series-workflowffrn2-convert-artifact-2322735036/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-30 07:36:59 +0000 UTC FinishedAt: 2026-07-30 07:39:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-30 07:36:59 +0000 UTC FinishedAt: 2026-07-30 07:39:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a69c8edf-19f2-49d9-8dd6-7ce9a2273227,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowffrn2/series-workflowffrn2-build-action-1290684551/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-30 07:39:36 +0000 UTC FinishedAt: 2026-07-30 07:39:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-30 07:39:36 +0000 UTC FinishedAt: 2026-07-30 07:39:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-30 07:39:36 +0000 UTC FinishedAt: 2026-07-30 08:02:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-30 07:39:36 +0000 UTC FinishedAt: 2026-07-30 08:02:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*e3ca3455-740f-4930-829b-67f47cfc3561,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowffrn2/series-workflowffrn2-convert-artifact-2322735036/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "f269d32a-1975-4a2b-828b-2db06ccf4973", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowffrn2/series-workflowffrn2-build-action-1516628504/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-30 07:39:36 +0000 UTC FinishedAt: 2026-07-30 08:01:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*e3ca3455-740f-4930-829b-67f47cfc3561,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowffrn2/series-workflowffrn2-convert-artifact-2322735036/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "f269d32a-1975-4a2b-828b-2db06ccf4973", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowffrn2/series-workflowffrn2-build-action-1516628504/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-30 08:02:01 +0000 UTC FinishedAt: 2026-07-30 08:02:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-30 08:02:01 +0000 UTC FinishedAt: 2026-07-30 08:02:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-30 08:02:01 +0000 UTC FinishedAt: 2026-07-30 08:04:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-30 08:02:01 +0000 UTC FinishedAt: 2026-07-30 08:04:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f269d32a-1975-4a2b-828b-2db06ccf4973,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowffrn2/series-workflowffrn2-build-action-1516628504/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-30 08:04:16 +0000 UTC FinishedAt: 2026-07-30 11:06:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-30 08:04:16 +0000 UTC FinishedAt: 2026-07-30 11:06:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*a69c8edf-19f2-49d9-8dd6-7ce9a2273227,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f269d32a-1975-4a2b-828b-2db06ccf4973,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowffrn2/series-workflowffrn2-build-action-1290684551/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowffrn2/series-workflowffrn2-build-action-1516628504/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-30 08:04:16 +0000 UTC FinishedAt: 2026-07-30 08:04:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-30 08:04:16 +0000 UTC FinishedAt: 2026-07-30 08:04:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowffrn2/series-workflowffrn2-convert-artifact-513788037/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-30 08:04:16 +0000 UTC FinishedAt: 2026-07-30 08:04:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-30 08:04:16 +0000 UTC FinishedAt: 2026-07-30 08:04:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-30 08:04:16 +0000 UTC FinishedAt: 2026-07-30 08:04:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-30 08:04:49 +0000 UTC FinishedAt: 2026-07-30 11:06:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowffrn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"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":["cfg80211_validate_ies","validate_beacon_head","validate_ie_attr","cfg80211_wext_siwgenie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","CFG80211_WEXT","MAC80211","MAC80211_HWSIM"],"series_id":"e890ed1e-3b6d-4a84-b859-484bd636179d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-30 08:04:49 +0000 UTC FinishedAt: 2026-07-30 11:06:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a69c8edf-19f2-49d9-8dd6-7ce9a2273227,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f269d32a-1975-4a2b-828b-2db06ccf4973,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowffrn2/series-workflowffrn2-build-action-1290684551/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowffrn2/series-workflowffrn2-build-action-1516628504/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowffrn2/series-workflowffrn2-convert-artifact-513788037/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}